Merge "Configure Openstack public endpoint FQDN"
This commit is contained in:
commit
6b898c16e8
|
@ -907,6 +907,7 @@ SERVICE_TYPE_GLANCE = 'glance'
|
||||||
SERVICE_TYPE_BARBICAN = 'barbican'
|
SERVICE_TYPE_BARBICAN = 'barbican'
|
||||||
SERVICE_TYPE_DOCKER = 'docker'
|
SERVICE_TYPE_DOCKER = 'docker'
|
||||||
SERVICE_TYPE_HTTP = 'http'
|
SERVICE_TYPE_HTTP = 'http'
|
||||||
|
SERVICE_TYPE_OPENSTACK = 'openstack'
|
||||||
|
|
||||||
SERVICE_PARAM_SECTION_MURANO_RABBITMQ = 'rabbitmq'
|
SERVICE_PARAM_SECTION_MURANO_RABBITMQ = 'rabbitmq'
|
||||||
SERVICE_PARAM_SECTION_MURANO_ENGINE = 'engine'
|
SERVICE_PARAM_SECTION_MURANO_ENGINE = 'engine'
|
||||||
|
@ -1124,6 +1125,10 @@ SERVICE_PARAM_HTTP_PORT_HTTPS = 'https_port'
|
||||||
SERVICE_PARAM_HTTP_PORT_HTTP_DEFAULT = 8080
|
SERVICE_PARAM_HTTP_PORT_HTTP_DEFAULT = 8080
|
||||||
SERVICE_PARAM_HTTP_PORT_HTTPS_DEFAULT = 8443
|
SERVICE_PARAM_HTTP_PORT_HTTPS_DEFAULT = 8443
|
||||||
|
|
||||||
|
# Openstack Service Parameters
|
||||||
|
SERVICE_PARAM_SECTION_OPENSTACK_HELM = 'helm'
|
||||||
|
SERVICE_PARAM_NAME_ENDPOINT_DOMAIN = "endpoint_domain"
|
||||||
|
|
||||||
# TIS part number, CPE = combined load, STD = standard load
|
# TIS part number, CPE = combined load, STD = standard load
|
||||||
TIS_STD_BUILD = 'Standard'
|
TIS_STD_BUILD = 'Standard'
|
||||||
TIS_AIO_BUILD = 'All-in-one'
|
TIS_AIO_BUILD = 'All-in-one'
|
||||||
|
|
|
@ -687,6 +687,14 @@ def _validate_docker_insecure_registry_bool(name, value):
|
||||||
"Parameter '%s' must be a valid bool string." % name))
|
"Parameter '%s' must be a valid bool string." % name))
|
||||||
|
|
||||||
|
|
||||||
|
def _validate_domain(name, value):
|
||||||
|
"""Check if domain name is valid"""
|
||||||
|
if not cutils.is_valid_domain_name(value):
|
||||||
|
raise wsme.exc.ClientSideError(_(
|
||||||
|
"Parameter '%s' includes an invalid domain name '%s'." %
|
||||||
|
(name, value)))
|
||||||
|
|
||||||
|
|
||||||
# LDAP Identity Service Parameters (mandatory)
|
# LDAP Identity Service Parameters (mandatory)
|
||||||
SERVICE_PARAM_IDENTITY_LDAP_URL = 'url'
|
SERVICE_PARAM_IDENTITY_LDAP_URL = 'url'
|
||||||
|
|
||||||
|
@ -1582,6 +1590,17 @@ HTTPD_PORT_PARAMETER_RESOURCE = {
|
||||||
'openstack::horizon::params::https_port',
|
'openstack::horizon::params::https_port',
|
||||||
}
|
}
|
||||||
|
|
||||||
|
OPENSTACK_HELM_PARAMETER_OPTIONAL = [
|
||||||
|
constants.SERVICE_PARAM_NAME_ENDPOINT_DOMAIN,
|
||||||
|
]
|
||||||
|
OPENSTACK_HELM_PARAMETER_VALIDATOR = {
|
||||||
|
constants.SERVICE_PARAM_NAME_ENDPOINT_DOMAIN: _validate_domain,
|
||||||
|
}
|
||||||
|
OPENSTACK_HELM_PARAMETER_RESOURCE = {
|
||||||
|
constants.SERVICE_PARAM_NAME_ENDPOINT_DOMAIN:
|
||||||
|
'openstack::helm::params::endpoint_domain',
|
||||||
|
}
|
||||||
|
|
||||||
# Service Parameter Schema
|
# Service Parameter Schema
|
||||||
SERVICE_PARAM_MANDATORY = 'mandatory'
|
SERVICE_PARAM_MANDATORY = 'mandatory'
|
||||||
SERVICE_PARAM_OPTIONAL = 'optional'
|
SERVICE_PARAM_OPTIONAL = 'optional'
|
||||||
|
@ -1777,6 +1796,13 @@ SERVICE_PARAMETER_SCHEMA = {
|
||||||
SERVICE_PARAM_RESOURCE: HTTPD_PORT_PARAMETER_RESOURCE,
|
SERVICE_PARAM_RESOURCE: HTTPD_PORT_PARAMETER_RESOURCE,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
constants.SERVICE_TYPE_OPENSTACK: {
|
||||||
|
constants.SERVICE_PARAM_SECTION_OPENSTACK_HELM: {
|
||||||
|
SERVICE_PARAM_OPTIONAL: OPENSTACK_HELM_PARAMETER_OPTIONAL,
|
||||||
|
SERVICE_PARAM_VALIDATOR: OPENSTACK_HELM_PARAMETER_VALIDATOR,
|
||||||
|
SERVICE_PARAM_RESOURCE: OPENSTACK_HELM_PARAMETER_RESOURCE,
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
SERVICE_PARAMETER_MAX_LENGTH = 255
|
SERVICE_PARAMETER_MAX_LENGTH = 255
|
||||||
|
|
|
@ -1855,6 +1855,19 @@ def is_valid_domain_or_ip(url_str):
|
||||||
else:
|
else:
|
||||||
# check ipv6 without port
|
# check ipv6 without port
|
||||||
return is_valid_ipv6(url_str)
|
return is_valid_ipv6(url_str)
|
||||||
|
|
||||||
|
|
||||||
|
def is_valid_domain_name(value):
|
||||||
|
""" Validate domain name based on RFC specs including IDN """
|
||||||
|
p = re.compile(
|
||||||
|
r'^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|'
|
||||||
|
r'([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|'
|
||||||
|
r'([a-zA-Z0-9][-_.a-zA-Z0-9]{0,61}[a-zA-Z0-9]))\.'
|
||||||
|
r'([a-zA-Z]{2,13}|[a-zA-Z0-9-]{2,30}.[a-zA-Z]{2,3})$'
|
||||||
|
)
|
||||||
|
m = p.match(value)
|
||||||
|
if m:
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
@ -7102,7 +7102,9 @@ class ConductorManager(service.PeriodicService):
|
||||||
[constants.CONTROLLER,
|
[constants.CONTROLLER,
|
||||||
constants.WORKER,
|
constants.WORKER,
|
||||||
constants.STORAGE])
|
constants.STORAGE])
|
||||||
|
elif service == constants.SERVICE_TYPE_OPENSTACK:
|
||||||
|
# Do nothing. Does not need to update target config of any hosts
|
||||||
|
pass
|
||||||
else:
|
else:
|
||||||
# All other services
|
# All other services
|
||||||
personalities = [constants.CONTROLLER]
|
personalities = [constants.CONTROLLER]
|
||||||
|
|
|
@ -86,6 +86,11 @@ class GlanceHelm(openstack.OpenstackBaseHelm):
|
||||||
|
|
||||||
def _get_endpoints_overrides(self):
|
def _get_endpoints_overrides(self):
|
||||||
return {
|
return {
|
||||||
|
'image': {
|
||||||
|
'host_fqdn_override':
|
||||||
|
self._get_endpoints_host_fqdn_overrides(
|
||||||
|
constants.HELM_CHART_GLANCE),
|
||||||
|
},
|
||||||
'identity': {
|
'identity': {
|
||||||
'auth': self._get_endpoints_identity_overrides(
|
'auth': self._get_endpoints_identity_overrides(
|
||||||
self.SERVICE_NAME, self.AUTH_USERS),
|
self.SERVICE_NAME, self.AUTH_USERS),
|
||||||
|
|
|
@ -45,6 +45,11 @@ class HorizonHelm(openstack.OpenstackBaseHelm):
|
||||||
|
|
||||||
def _get_endpoints_overrides(self):
|
def _get_endpoints_overrides(self):
|
||||||
return {
|
return {
|
||||||
|
'dashboard': {
|
||||||
|
'host_fqdn_override':
|
||||||
|
self._get_endpoints_host_fqdn_overrides(
|
||||||
|
constants.HELM_CHART_HORIZON),
|
||||||
|
},
|
||||||
'oslo_db': {
|
'oslo_db': {
|
||||||
'auth': self._get_endpoints_oslo_db_overrides(
|
'auth': self._get_endpoints_oslo_db_overrides(
|
||||||
self.SERVICE_NAME, [self.SERVICE_NAME])
|
self.SERVICE_NAME, [self.SERVICE_NAME])
|
||||||
|
|
|
@ -244,6 +244,9 @@ class KeystoneHelm(openstack.OpenstackBaseHelm):
|
||||||
'identity': {
|
'identity': {
|
||||||
'auth': self._get_endpoints_identity_overrides(
|
'auth': self._get_endpoints_identity_overrides(
|
||||||
self.SERVICE_NAME, []),
|
self.SERVICE_NAME, []),
|
||||||
|
'host_fqdn_override':
|
||||||
|
self._get_endpoints_host_fqdn_overrides(
|
||||||
|
self.SERVICE_NAME),
|
||||||
},
|
},
|
||||||
'oslo_cache': {
|
'oslo_cache': {
|
||||||
'auth': {
|
'auth': {
|
||||||
|
|
|
@ -384,6 +384,11 @@ class NeutronHelm(openstack.OpenstackBaseHelm):
|
||||||
'auth': self._get_endpoints_identity_overrides(
|
'auth': self._get_endpoints_identity_overrides(
|
||||||
self.SERVICE_NAME, self.AUTH_USERS),
|
self.SERVICE_NAME, self.AUTH_USERS),
|
||||||
},
|
},
|
||||||
|
'network': {
|
||||||
|
'host_fqdn_override':
|
||||||
|
self._get_endpoints_host_fqdn_overrides(
|
||||||
|
self.SERVICE_NAME),
|
||||||
|
},
|
||||||
'oslo_cache': {
|
'oslo_cache': {
|
||||||
'auth': {
|
'auth': {
|
||||||
'memcached_secret_key':
|
'memcached_secret_key':
|
||||||
|
|
|
@ -191,8 +191,17 @@ class NovaHelm(openstack.OpenstackBaseHelm):
|
||||||
return overrides
|
return overrides
|
||||||
|
|
||||||
def _get_novncproxy_base_url(self):
|
def _get_novncproxy_base_url(self):
|
||||||
oam_addr = self._get_oam_address(),
|
# Get the openstack endpoint public domain name
|
||||||
url = "http://%s:6080/vnc_auto.html" % oam_addr
|
endpoint_domain = self._get_service_parameter(
|
||||||
|
constants.SERVICE_TYPE_OPENSTACK,
|
||||||
|
constants.SERVICE_PARAM_SECTION_OPENSTACK_HELM,
|
||||||
|
constants.SERVICE_PARAM_NAME_ENDPOINT_DOMAIN)
|
||||||
|
if endpoint_domain is not None:
|
||||||
|
location = "%s.%s" % (constants.HELM_CHART_HORIZON,
|
||||||
|
str(endpoint_domain.value).lower())
|
||||||
|
else:
|
||||||
|
location = self._get_oam_address()
|
||||||
|
url = "http://%s:6080/vnc_auto.html" % location
|
||||||
return url
|
return url
|
||||||
|
|
||||||
def _get_virt_type(self):
|
def _get_virt_type(self):
|
||||||
|
|
|
@ -71,5 +71,10 @@ class NovaApiProxyHelm(openstack.OpenstackBaseHelm):
|
||||||
'identity': {
|
'identity': {
|
||||||
'auth': self._get_endpoints_identity_overrides(
|
'auth': self._get_endpoints_identity_overrides(
|
||||||
nova_service_name, self.AUTH_USERS),
|
nova_service_name, self.AUTH_USERS),
|
||||||
}
|
},
|
||||||
|
'compute': {
|
||||||
|
'host_fqdn_override':
|
||||||
|
self._get_endpoints_host_fqdn_overrides(
|
||||||
|
constants.HELM_CHART_NOVA),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -191,6 +191,18 @@ class OpenstackBaseHelm(base.BaseHelm):
|
||||||
})
|
})
|
||||||
return overrides
|
return overrides
|
||||||
|
|
||||||
|
def _get_endpoints_host_fqdn_overrides(self, service_name):
|
||||||
|
overrides = {'public': {}}
|
||||||
|
endpoint_domain = self._get_service_parameter(
|
||||||
|
constants.SERVICE_TYPE_OPENSTACK,
|
||||||
|
constants.SERVICE_PARAM_SECTION_OPENSTACK_HELM,
|
||||||
|
constants.SERVICE_PARAM_NAME_ENDPOINT_DOMAIN)
|
||||||
|
if endpoint_domain is not None:
|
||||||
|
overrides['public'].update({
|
||||||
|
'host': service_name + '.' + str(endpoint_domain.value).lower()
|
||||||
|
})
|
||||||
|
return overrides
|
||||||
|
|
||||||
def _get_endpoints_oslo_db_overrides(self, service_name, users):
|
def _get_endpoints_oslo_db_overrides(self, service_name, users):
|
||||||
overrides = {
|
overrides = {
|
||||||
'admin': {
|
'admin': {
|
||||||
|
|
Loading…
Reference in New Issue