Merge "Improve to obtain db url for fm"
This commit is contained in:
commit
c6c16c0682
@ -4,7 +4,7 @@
|
|||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
|
|
||||||
|
import keyring
|
||||||
from k8sapp_snmp.common import constants as app_constants
|
from k8sapp_snmp.common import constants as app_constants
|
||||||
from os import uname
|
from os import uname
|
||||||
|
|
||||||
@ -12,15 +12,14 @@ from six import ensure_str
|
|||||||
from six import ensure_text
|
from six import ensure_text
|
||||||
from six import string_types
|
from six import string_types
|
||||||
from sysinv.common import constants
|
from sysinv.common import constants
|
||||||
from sysinv.common import exception
|
from sysinv.common import exception
|
||||||
from sysinv.db import api
|
from sysinv.db import api
|
||||||
from sysinv.helm import base
|
from sysinv.helm import base
|
||||||
from sysinv.helm import common
|
from sysinv.helm import common
|
||||||
from sysinv.puppet import openstack
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class SnmpHelm(base.BaseHelm, openstack.OpenstackBasePuppet):
|
class SnmpHelm(base.BaseHelm):
|
||||||
"""Class to encapsulate helm operations for the SNMP chart"""
|
"""Class to encapsulate helm operations for the SNMP chart"""
|
||||||
|
|
||||||
SUPPORTED_NAMESPACES = base.BaseHelm.SUPPORTED_NAMESPACES + \
|
SUPPORTED_NAMESPACES = base.BaseHelm.SUPPORTED_NAMESPACES + \
|
||||||
@ -35,6 +34,7 @@ class SnmpHelm(base.BaseHelm, openstack.OpenstackBasePuppet):
|
|||||||
SERVICE_NAME = 'snmp'
|
SERVICE_NAME = 'snmp'
|
||||||
SERVICE_FM_NAME = 'fm'
|
SERVICE_FM_NAME = 'fm'
|
||||||
SERVICE_FM_PORT = 18002
|
SERVICE_FM_PORT = 18002
|
||||||
|
DB_FM_ADMIN = 'admin-fm'
|
||||||
UNDEFINED_CONF_VALUE = '?'
|
UNDEFINED_CONF_VALUE = '?'
|
||||||
KERNEL_RELEASE_IDX = 2
|
KERNEL_RELEASE_IDX = 2
|
||||||
|
|
||||||
@ -52,6 +52,24 @@ class SnmpHelm(base.BaseHelm, openstack.OpenstackBasePuppet):
|
|||||||
#If data is NoneType
|
#If data is NoneType
|
||||||
return ensure_str(self.UNDEFINED_CONF_VALUE)
|
return ensure_str(self.UNDEFINED_CONF_VALUE)
|
||||||
|
|
||||||
|
def _get_keyring_password(self, service, user):
|
||||||
|
password = keyring.get_password(service, user)
|
||||||
|
if not password:
|
||||||
|
raise Exception('Failed to obtain password for fm database')
|
||||||
|
# get_password() returns in unicode format, which leads to YAML
|
||||||
|
# that Armada doesn't like. Converting to UTF-8 is safe because
|
||||||
|
# we generated the password originally.
|
||||||
|
return password.encode('utf8', 'strict')
|
||||||
|
|
||||||
|
def _get_database_connection(self):
|
||||||
|
host_url = self._format_url_address(self._get_management_address())
|
||||||
|
auth_password = self._get_keyring_password(
|
||||||
|
self.SERVICE_FM_NAME, 'database')
|
||||||
|
connection = "postgresql://%s:%s@%s/%s" %\
|
||||||
|
(self.DB_FM_ADMIN, auth_password,
|
||||||
|
host_url, self.SERVICE_FM_NAME)
|
||||||
|
return connection
|
||||||
|
|
||||||
def get_namespaces(self):
|
def get_namespaces(self):
|
||||||
return self.SUPPORTED_NAMESPACES
|
return self.SUPPORTED_NAMESPACES
|
||||||
|
|
||||||
@ -64,19 +82,12 @@ class SnmpHelm(base.BaseHelm, openstack.OpenstackBasePuppet):
|
|||||||
def get_admin_url(self):
|
def get_admin_url(self):
|
||||||
return self._format_admin_endpoint(self.SERVICE_FM_PORT)
|
return self._format_admin_endpoint(self.SERVICE_FM_PORT)
|
||||||
|
|
||||||
def get_secure_system_config(self):
|
|
||||||
config = {
|
|
||||||
'fm::database_connection':
|
|
||||||
self._format_database_connection(self.SERVICE_FM_NAME),
|
|
||||||
}
|
|
||||||
return config
|
|
||||||
|
|
||||||
def get_system_info(self):
|
def get_system_info(self):
|
||||||
return uname()[self.KERNEL_RELEASE_IDX]
|
return uname()[self.KERNEL_RELEASE_IDX]
|
||||||
|
|
||||||
def get_overrides(self, namespace=None):
|
def get_overrides(self, namespace=None):
|
||||||
|
|
||||||
db_url = self.get_secure_system_config()['fm::database_connection']
|
db_url = self._get_database_connection()
|
||||||
dbapi = api.get_instance()
|
dbapi = api.get_instance()
|
||||||
|
|
||||||
# Get the contact, location, name and desciption info
|
# Get the contact, location, name and desciption info
|
||||||
|
Loading…
x
Reference in New Issue
Block a user