
Extend the helm_charts API to support an enable attribute. This attribute is set on application upload and stored in the existing system_overrides element of the helm_overrides table. Changes include - Add application metadata support for disabling charts on application upload. - Add the system helm-chart-attribute-modify command to allow enabling and disabling charts from the command-line. This removes the current implementation of adding a faux label via the system host-label-assign command to enable and disable charts. - Add a --long option to helm-override-list to enable easy viewing of what charts are enabled for a given application - Enhance the ArmadaManifestOperator to make this a base class for application specific operator classes. Introduce classes for the stx-openstack and platform-integ-apps manifests with specific knowledge of the charts and chart groups within each class. - Use stevedore to load the application specific manifest operators. This will allow future packaging of manifest operators with new application tarballs. - Move the helm chart definition from the common/constants.py to helm/common.py. This limits helm/armada specific data leakage outside of the helm directory, which we may carve out of sysinv in the future. - Clean up the code related to the faux labels: LABEL_IRONIC, LABEL_BARBICAN, and LABEL_TELEMETRY - Rework the manifest update code in the plugins to include checks for if the chart for a given application has been disabled. Change-Id: If284f622ceac48c4ffd74e7022fdd390971d0fd8 Closes-Bug: #1833746 Depends-On: I418f0fe4978946a44e512c3025817fb27216c078 Signed-off-by: Robert Church <robert.church@windriver.com>
The expected layout for this subdirectory is as follows: kubernetes |-- applications | `-- <application> | `-- <application>-helm RPM | `-- centos | `-- build_srpm.data | `-- <application>-helm.spec | `-- <application>-helm | `-- manifests | `-- main-manifest.yaml | `-- alt-manifest-1.yaml | `-- ... | `-- alt-manifest-N.yaml | `-- custom chart 1 | `-- Chart.yaml | `-- ... | `-- ... | `-- custom chart N | `-- Chart.yaml | `-- ... |-- helm-charts | `-- chart | `-- chart `-- README The idea is that all our custom helm charts that are common across applications would go under "helm-charts". Each chart would get a subdirectory. Custom applications would generally consist of one or more armada manifest referencing multiple helm charts (both ours and upstream ones). The application is packaged as an RPM. These application RPM are used to produce the build artifacts (helm tarballs + armada manifests) but are not installed on the system. These artifacts are extracted later for proper application packaging with additional required metadata (TBD). These applications would each get their own subdirectory under "applications".