config/sysinv/sysinv/sysinv/sysinv/puppet/pci_irq_affinity.py
Bin Qian bd1f36cbac Provision/deprovision dbmon dynamically
This change is to provision and deprovision dbmon service on an
AIO/DX or distributed cloud systemcontroller after stx-openstack
application is active.

1. Add active state to kube-app.
A kube-app is active after the first time it is applied successfully,
and deactive when it is being removed.
An util function is provided to access the active state of a given
kube-app.

2. apply stx_openstack runtime manifest to provision/deprovision
based on the active state of stx-openstack application

Story: 2005486
Task: 30922

Change-Id: Icbe63de21f27d7a804715ec72a04d1aba3910b09
Signed-off-by: Bin Qian <bin.qian@windriver.com>
2019-05-21 11:58:40 -04:00

108 lines
4.2 KiB
Python

#
# Copyright (c) 2017-2018 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
from sysinv.common import utils
from sysinv.helm import helm
from sysinv.puppet import openstack
class PciIrqAffinityPuppet(openstack.OpenstackBasePuppet):
"""Class to encapsulate puppet operations for PciIrqAffinity configuration"""
PLATFORM_KEYRING_SERVICE = 'CGCS'
def get_secure_static_config(self):
return {}
def get_system_config(self):
config = {}
if utils.is_openstack_applied(self.dbapi):
helm_data = helm.HelmOperatorData(self.dbapi)
# The openstack services are authenticated with pod based
# keystone.
keystone_auth_data = helm_data.get_keystone_auth_data()
openstack_auth_config = {
'platform::pciirqaffinity::params::openstack_enabled':
True,
'platform::pciirqaffinity::params::openstack_username':
keystone_auth_data['admin_user_name'],
'platform::pciirqaffinity::params::openstack_tenant':
keystone_auth_data['admin_project_name'],
'platform::pciirqaffinity::params::openstack_auth_host':
keystone_auth_data['auth_host'],
'platform::pciirqaffinity::params::openstack_user_domain':
keystone_auth_data['admin_user_domain'],
'platform::pciirqaffinity::params::openstack_project_domain':
keystone_auth_data['admin_project_domain'],
'platform::pciirqaffinity::params::openstack_keyring_service':
self.PLATFORM_KEYRING_SERVICE,
}
config.update(openstack_auth_config)
# The openstack rabbitmq is running in a pod
nova_oslo_messaging_data = \
helm_data.get_nova_oslo_messaging_data()
rabbit_config = {
'platform::pciirqaffinity::params::rabbit_host':
nova_oslo_messaging_data['host'],
'platform::pciirqaffinity::params::rabbit_port':
nova_oslo_messaging_data['port'],
'platform::pciirqaffinity::params::rabbit_virtual_host':
nova_oslo_messaging_data['virt_host'],
'platform::pciirqaffinity::params::rabbit_userid':
nova_oslo_messaging_data['username'],
'platform::pciirqaffinity::params::rabbit_password':
nova_oslo_messaging_data['password'],
}
config.update(rabbit_config)
else:
configs = {
'platform::pciirqaffinity::params::openstack_enabled':
False,
'platform::pciirqaffinity::params::openstack_username':
'undef',
'platform::pciirqaffinity::params::openstack_tenant':
'undef',
'platform::pciirqaffinity::params::openstack_auth_host':
'undef',
'platform::pciirqaffinity::params::openstack_user_domain':
'undef',
'platform::pciirqaffinity::params::openstack_project_domain':
'undef',
'platform::pciirqaffinity::params::openstack_keyring_service':
'undef',
'platform::pciirqaffinity::params::rabbit_host':
'undef',
'platform::pciirqaffinity::params::rabbit_port':
'undef',
'platform::pciirqaffinity::params::rabbit_virtual_host':
'undef',
'platform::pciirqaffinity::params::rabbit_userid':
'undef',
'platform::pciirqaffinity::params::rabbit_password':
'undef',
}
config.update(configs)
return config
def get_host_config(self, host):
return {}
def get_public_url(self):
# not an openstack service
raise NotImplementedError()
def get_internal_url(self):
# not an openstack service
raise NotImplementedError()
def get_admin_url(self):
# not an openstack service
raise NotImplementedError()