Integrate openstack clients helm chart in armada

Add sysinv override support for openstack clients helm chart.

Change-Id: I58a5d511cf54dacc018bfb88848899b92a774087
Signed-off-by: Stefan Dinescu <stefan.dinescu@windriver.com>
Depends-on: I4dea49301fd778db9a9ddf900a752831bd455fda
Story: 2005312
Task: 30558
This commit is contained in:
Stefan Dinescu 2019-04-19 16:44:32 +03:00
parent 9dd64e3b90
commit 248d3b3921
5 changed files with 123 additions and 0 deletions

View File

@ -3011,6 +3011,52 @@ data:
dependencies:
- helm-toolkit
---
schema: armada/Chart/v1
metadata:
schema: metadata/Document/v1
name: openstack-clients
data:
chart_name: clients
release: openstack-clients
namespace: openstack
wait:
timeout: 600
labels:
app: openstack-clients
install:
no_hooks: false
upgrade:
no_hooks: false
pre:
delete:
- type: job
labels:
app: openstack-clients
values:
endpoints:
identity:
name: keystone
namespace: openstack
labels:
node_selector_key: openstack-control-plane
node_selector_value: enabled
global:
cloud_name: openstack_helm
replicas: 1
keep_running: true
volume:
size: 20Gi
images:
tags:
openstackclients: docker.io/starlingx/stx-openstackclients:master-centos-stable-latest
source:
type: tar
location: http://172.17.0.1/helm_charts/starlingx/clients-0.1.0.tgz
subpath: clients
reference: master
dependencies:
- helm-toolkit
---
schema: armada/ChartGroup/v1
metadata:
schema: metadata/Document/v1
@ -3169,6 +3215,16 @@ data:
- openstack-panko
- openstack-ceilometer
---
schema: armada/ChartGroup/v1
metadata:
schema: metadata/Document/v1
name: openstack-clients
data:
description: "Deploy clients"
sequenced: false
chart_group:
- openstack-clients
---
schema: armada/Manifest/v1
metadata:
schema: metadata/Document/v1
@ -3182,6 +3238,7 @@ data:
- openstack-memcached
- openstack-rabbitmq
- openstack-keystone
- openstack-clients
- openstack-barbican
- openstack-glance
- openstack-ceph-rgw

View File

@ -106,6 +106,7 @@ systemconfig.helm_plugins.stx_openstack =
022_keystone-api-proxy = sysinv.helm.keystone_api_proxy:KeystoneApiProxyHelm
023_ceph-rgw = sysinv.helm.swift:SwiftHelm
024_ironic = sysinv.helm.ironic:IronicHelm
025_clients = sysinv.helm.openstackclients:OpenstackClientsHelm
sysinv.agent.lldp.drivers =
lldpd = sysinv.agent.lldp.drivers.lldpd.driver:SysinvLldpdAgentDriver

View File

@ -1428,6 +1428,7 @@ HELM_CHART_AODH = 'aodh'
HELM_CHART_BARBICAN = 'barbican'
HELM_CHART_CEILOMETER = 'ceilometer'
HELM_CHART_CINDER = 'cinder'
HELM_CHART_CLIENTS = 'clients'
HELM_CHART_GARBD = 'garbd'
HELM_CHART_GLANCE = 'glance'
HELM_CHART_GNOCCHI = 'gnocchi'

View File

@ -73,6 +73,21 @@ class OpenstackBaseHelm(base.BaseHelm):
constants.HELM_CHART_KEYSTONE]
return keystone_operator.get_admin_user_name()
def _get_admin_project_name(self):
keystone_operator = self._operator.chart_operators[
constants.HELM_CHART_KEYSTONE]
return keystone_operator.get_admin_project_name()
def _get_admin_project_domain(self):
keystone_operator = self._operator.chart_operators[
constants.HELM_CHART_KEYSTONE]
return keystone_operator.get_admin_project_domain()
def _get_admin_user_domain(self):
keystone_operator = self._operator.chart_operators[
constants.HELM_CHART_KEYSTONE]
return keystone_operator.get_admin_user_domain()
def _get_identity_password(self, service, user):
passwords = self.context.setdefault('_service_passwords', {})
if service not in passwords:

View File

@ -0,0 +1,49 @@
#
# Copyright (c) 2019 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
from sysinv.common import constants
from sysinv.common import exception
from sysinv.helm import common
from sysinv.openstack.common import log as logging
from sysinv.helm import openstack
LOG = logging.getLogger(__name__)
class OpenstackClientsHelm(openstack.OpenstackBaseHelm):
CHART = constants.HELM_CHART_CLIENTS
SERVICE_NAME = constants.HELM_CHART_CLIENTS
def get_overrides(self, namespace=None):
overrides = {
common.HELM_NS_OPENSTACK: {
"endpoints": self._get_endpoints_overrides()
}
}
if namespace in self.SUPPORTED_NAMESPACES:
return overrides[namespace]
elif namespace:
raise exception.InvalidHelmNamespace(chart=self.CHART,
namespace=namespace)
else:
return overrides
def _get_endpoints_overrides(self):
overrides = self._get_common_users_overrides(
common.SERVICE_ADMIN)
overrides['admin'].update({
'project_name': self._get_admin_project_name(),
'project_domain_name': self._get_admin_project_domain(),
'user_domain_name': self._get_admin_user_domain(),
})
return {
'identity': {
'auth': overrides
},
}