Add FluxCD version of the ptp-notification app

Add new manifest files to the ptp-notification app to enable FluxCD support.

The new spec will now generate 2 rpms:
- the original one that contains the armada
  version of the ptp-notification app

- a new one that contains the new FluxCD
  version of ptp-notification app

Test Cases:

PASS: Verify that there are no changes to the armada rpm generated
PASS: Run the rpm build and verify that two packages are generated:
      stx-ptp-notification-helm-<version>.tis.noarch.rpm and
      stx-ptp-notification-helm-fluxcd-<version>.tis.noarch.rpm
PASS: Install the new package with kustomize and verify that ptp-notification
      pod is deployed and running with success
PASS: Verify that both armada and fluxcd generated the same ptp-notification
      application version
PASS: Deleting app.

Task: 44662
Story: 2009138
Change-Id: I20e6dcffb82ba8ed10b222459ac5fe37070d7493
This commit is contained in:
Karla Felix 2022-03-21 14:03:36 -03:00
parent f9023204a2
commit bd67460482
14 changed files with 203 additions and 7 deletions

View File

@ -1 +1,2 @@
stx-ptp-notification-helm
stx-ptp-notification-helm
stx-ptp-notification-helm-fluxcd

View File

@ -1,3 +1,8 @@
#
# Copyright (c) 2021-2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# Application tunables (maps to metadata)
%global app_name ptp-notification
%global helm_repo stx-platform
@ -31,6 +36,14 @@ BuildRequires: python-k8sapp-ptp-notification-wheels
%description
StarlingX PTP Notification Helm Charts
%package fluxcd
Summary: StarlingX PTP Notification Application FluxCD Helm Charts
Group: base
License: Apache-2.0
%description fluxcd
StarlingX PTP Notification Application FluxCD Helm Charts
%prep
%setup -n %{name}-%{version}
@ -50,12 +63,15 @@ kill %1
# Create a chart tarball compliant with sysinv kube-app.py
%define app_staging %{_builddir}/staging
%define app_tarball %{app_name}-%{version}-%{tis_patch_ver}.tgz
%define app_tarball_armada %{app_name}-%{version}-%{tis_patch_ver}.tgz
%define app_tarball_fluxcd %{app_name}-fluxcd-%{version}-%{tis_patch_ver}.tgz
%define armada_app_path %{_builddir}/%{app_tarball_armada}
%define fluxcd_app_path %{_builddir}/%{app_tarball_fluxcd}
# Setup staging
mkdir -p %{app_staging}
cp files/metadata.yaml %{app_staging}
cp manifests/*.yaml %{app_staging}
cp manifests/ptp_notification_manifest.yaml %{app_staging}
mkdir -p %{app_staging}/charts
cp helm-charts/*.tgz %{app_staging}/charts
#cp %{helm_folder}/*.tgz %{app_staging}/charts
@ -66,22 +82,39 @@ sed -i 's/@APP_NAME@/%{app_name}/g' %{app_staging}/metadata.yaml
sed -i 's/@APP_VERSION@/%{version}-%{tis_patch_ver}/g' %{app_staging}/metadata.yaml
sed -i 's/@HELM_REPO@/%{helm_repo}/g' %{app_staging}/metadata.yaml
# Copy the plugins: installed in the buildroot
mkdir -p %{app_staging}/plugins
cp /plugins/%{app_name}/*.whl %{app_staging}/plugins
# package it up
find . -type f ! -name '*.md5' -print0 | xargs -0 md5sum > checksum.md5
tar -zcf %{_builddir}/%{app_tarball} -C %{app_staging}/ .
tar -zcf %armada_app_path -C %{app_staging}/ .
# package fluxcd
rm -f %{app_staging}/ptp_notification_manifest.yaml
cd -
cp -R fluxcd-manifests %{app_staging}/
# calculate checksum of all files in app_staging
cd %{app_staging}
find . -type f ! -name '*.md5' -print0 | xargs -0 md5sum > checksum.md5
tar -zcf %fluxcd_app_path -C %{app_staging}/ .
cd -
# Cleanup staging
rm -fr %{app_staging}
%install
install -d -m 755 %{buildroot}/%{app_folder}
install -p -D -m 755 %{_builddir}/%{app_tarball} %{buildroot}/%{app_folder}
install -p -D -m 755 %armada_app_path %{buildroot}/%{app_folder}
install -p -D -m 755 %fluxcd_app_path %{buildroot}/%{app_folder}
%files
%defattr(-,root,root,-)
%{app_folder}/*
%{app_folder}/%{app_tarball_armada}
%files fluxcd
%defattr(-,root,root,-)
%{app_folder}/%{app_tarball_fluxcd}

View File

@ -0,0 +1,13 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
# HelmRepository YAML for Starlingx helm repository.
apiVersion: source.toolkit.fluxcd.io/v1beta1
kind: HelmRepository
metadata:
name: stx-platform
spec:
url: http://192.168.206.1:8080/helm_charts/stx-platform
interval: 60m # interval to check the repository for updates

View File

@ -0,0 +1,2 @@
resources:
- helmrepository.yaml

View File

@ -0,0 +1,8 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
apiVersion: v1
kind: Namespace
metadata:
name: notification

View File

@ -0,0 +1,12 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: notification
resources:
- base
- ptp-notification
- ptp-notification-psp-rolebinding

View File

@ -0,0 +1,35 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
apiVersion: "helm.toolkit.fluxcd.io/v2beta1"
kind: HelmRelease
metadata:
name: ptp-notification-psp-rolebinding
labels:
chart_group: ptp-notification
spec:
releaseName: ptp-ptp-notification-psp-rolebinding
chart:
spec:
chart: psp-rolebinding
version: 0.1.0
sourceRef:
kind: HelmRepository
name: stx-platform
interval: 5m
timeout: 30m
test:
enable: false
install:
disableHooks: false
upgrade:
disableHooks: false
valuesFrom:
- kind: Secret
name: ptp-notification-psp-rolebinding-static-overrides
valuesKey: ptp-notification-psp-rolebinding-static-overrides.yaml
- kind: Secret
name: ptp-notification-psp-rolebinding-system-overrides
valuesKey: ptp-notification-psp-rolebinding-system-overrides.yaml

View File

@ -0,0 +1,17 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
namespace: notification
resources:
- helmrelease.yaml
secretGenerator:
- name: ptp-notification-psp-rolebinding-static-overrides
files:
- ptp-notification-psp-rolebinding-static-overrides.yaml
- name: ptp-notification-psp-rolebinding-system-overrides
files:
- ptp-notification-psp-rolebinding-system-overrides.yaml
generatorOptions:
disableNameSuffixHash: true

View File

@ -0,0 +1,7 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
rolebindingNamespace: notification
serviceAccount: notification

View File

@ -0,0 +1,5 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#

View File

@ -0,0 +1,35 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
apiVersion: "helm.toolkit.fluxcd.io/v2beta1"
kind: HelmRelease
metadata:
name: ptp-notification
labels:
chart_group: ptp-notification
spec:
releaseName: ptp-ptp-notification
chart:
spec:
chart: ptp-notification
version: 0.1.0
sourceRef:
kind: HelmRepository
name: stx-platform
interval: 5m
timeout: 30m
test:
enable: false
install:
disableHooks: false
upgrade:
disableHooks: false
valuesFrom:
- kind: Secret
name: ptp-notification-static-overrides
valuesKey: ptp-notification-static-overrides.yaml
- kind: Secret
name: ptp-notification-system-overrides
valuesKey: ptp-notification-system-overrides.yaml

View File

@ -0,0 +1,17 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
namespace: notification
resources:
- helmrelease.yaml
secretGenerator:
- name: ptp-notification-static-overrides
files:
- ptp-notification-static-overrides.yaml
- name: ptp-notification-system-overrides
files:
- ptp-notification-system-overrides.yaml
generatorOptions:
disableNameSuffixHash: true

View File

@ -0,0 +1,6 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
replicaCount: 1

View File

@ -0,0 +1,5 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#