import os
import sys
+from urllib.parse import urlparse
from o2common.helper import o2logging
logger = o2logging.get_logger(__name__)
+_DEFAULT_DCMANAGER_URL = "http://192.168.204.1:8119/v1.0"
+_DEFAULT_STX_URL = "http://192.168.204.1:5000/v3"
+
+
def get_postgres_uri():
host = os.environ.get("DB_HOST", "localhost")
port = 54321 if host == "localhost" else 5432
def get_api_url():
- host = os.environ.get("API_HOST", "localhost")
- port = 5005 if host == "localhost" else 80
+ host_interal = os.environ.get("API_HOST", "localhost")
+ host_external = os.environ.get("API_HOST_EXTERNAL_FLOATING")
+ host = host_interal if host_external is None or host_external == '' \
+ else host_external
+
+ port_internal = 5005 if host == "localhost" else 80
+ port_external = 30205
+ port = port_internal if host_external is None or host_external == '' \
+ else port_external
return f"http://{host}:{port}"
def get_o2dms_api_base():
- return get_root_api_base() + "o2dms"
+ return get_root_api_base() + "o2dms/v1"
def get_redis_host_and_port():
return smo_o2endpoint
-def get_stx_access_info():
+def get_stx_access_info(region_name="RegionOne", subcloud_hostname: str = "",
+ sub_is_https: bool = False):
# authurl = os.environ.get("STX_AUTH_URL", "http://192.168.204.1:5000/v3")
# username = os.environ.get("STX_USERNAME", "admin")
# pswd = os.environ.get("STX_PASSWORD", "passwd1")
# stx_access_info = (authurl, username, pswd)
try:
client_args = dict(
- auth_url=os.environ.get('OS_AUTH_URL',
- "http://192.168.204.1:5000/v3"),
+ auth_url=os.environ.get('OS_AUTH_URL', _DEFAULT_STX_URL),
username=os.environ.get('OS_USERNAME', "admin"),
api_key=os.environ.get('OS_PASSWORD', "fakepasswd1"),
project_name=os.environ.get('OS_PROJECT_NAME', "admin"),
)
- # dc_client_args = dict(
- # auth_url=os.environ['OS_AUTH_URL'],
- # username=os.environ['OS_USERNAME'],
- # api_key=os.environ['OS_PASSWORD'],
- # project_name=os.environ['OS_PROJECT_NAME'],
- # user_domain_name=os.environ['OS_USER_DOMAIN_NAME'],
- # project_domain_name=os.environ['OS_PROJECT_NAME'],
- # project_domain_id=os.environ['OS_PROJECT_DOMAIN_ID']
- # )
except KeyError:
logger.error('Please source your RC file before execution, '
'e.g.: `source ~/downloads/admin-rc.sh`')
os_client_args = {}
for key, val in client_args.items():
os_client_args['os_{key}'.format(key=key)] = val
+ if "" != subcloud_hostname:
+ orig_auth_url = urlparse(_DEFAULT_STX_URL)
+ new_auth_url = orig_auth_url._replace(
+ netloc=orig_auth_url.netloc.replace(
+ orig_auth_url.hostname, subcloud_hostname))
+ # new_auth_url = new_auth_url._replace(
+ # netloc=new_auth_url.netloc.replace(str(new_auth_url.port),
+ # "18002"))
+ if sub_is_https:
+ new_auth_url = new_auth_url._replace(
+ scheme=new_auth_url.scheme.
+ replace(new_auth_url.scheme, 'https'))
+ os_client_args['insecure'] = True
+ os_client_args['os_auth_url'] = new_auth_url.geturl()
+ os_client_args['os_endpoint_type'] = 'public'
+ # os_client_args['system_url'] = os_client_args['os_auth_url']
os_client_args['os_password'] = os_client_args.pop('os_api_key')
- os_client_args['os_region_name'] = 'RegionOne'
+ os_client_args['os_region_name'] = region_name
os_client_args['api_version'] = 1
+ # os_client_args['user_domain_name'] = 'Default'
+ # os_client_args['project_domain_name'] = 'Default'
+ return os_client_args
+
+
+def get_dc_access_info():
+ try:
+ client_args = dict(
+ auth_url=os.environ.get('OS_AUTH_URL', _DEFAULT_STX_URL),
+ username=os.environ.get('OS_USERNAME', "admin"),
+ api_key=os.environ.get('OS_PASSWORD', "fakepasswd1"),
+ project_name=os.environ.get('OS_PROJECT_NAME', "admin"),
+ )
+ except KeyError:
+ logger.error('Please source your RC file before execution, '
+ 'e.g.: `source ~/downloads/admin-rc.sh`')
+ sys.exit(1)
+
+ os_client_args = {}
+ for key, val in client_args.items():
+ os_client_args['os_{key}'.format(key=key)] = val
+ auth_url = urlparse(os_client_args.pop('os_auth_url'))
+ dcmanager_url = urlparse(_DEFAULT_DCMANAGER_URL)
+ dcmanager_url = dcmanager_url._replace(netloc=dcmanager_url.netloc.replace(
+ dcmanager_url.hostname, auth_url.hostname))
+
+ os_client_args['dcmanager_url'] = dcmanager_url.geturl()
+ os_client_args['auth_url'] = auth_url.geturl()
+ os_client_args['username'] = os_client_args.pop('os_username')
+ os_client_args['api_key'] = os_client_args.pop('os_api_key')
+ os_client_args['project_name'] = os_client_args.pop('os_project_name')
+ os_client_args['user_domain_name'] = 'Default'
+ os_client_args['project_domain_name'] = 'Default'
+
return os_client_args
def get_helm_cli():
return '/usr/local/bin/helm'
+
+
+def get_system_controller_as_respool():
+ return True
+
+
+def gen_k8s_config_dict(cluster_api_endpoint, cluster_ca_cert, admin_user,
+ admin_client_cert, admin_client_key):
+ # KUBECONFIG environment variable
+ # reference:
+ # https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
+ data = {
+ 'apiVersion': 'v1',
+ 'clusters': [
+ {
+ 'cluster': {
+ 'server':
+ cluster_api_endpoint,
+ 'certificate-authority-data':
+ cluster_ca_cert,
+ },
+ 'name': 'inf-cluster'
+ }],
+ 'contexts': [
+ {
+ 'context': {
+ 'cluster': 'inf-cluster',
+ 'user': 'kubernetes-admin'
+ },
+ 'name': 'kubernetes-admin@inf-cluster'
+ }
+ ],
+ 'current-context': 'kubernetes-admin@inf-cluster',
+ 'kind': 'Config',
+ 'preferences': {},
+ 'users': [
+ {
+ 'name': admin_user,
+ 'user': {
+ 'client-certificate-data':
+ admin_client_cert,
+ 'client-key-data':
+ admin_client_key,
+ }
+ }]
+ }
+
+ return data