Gustavo Herzmann 6435d6c357 Dynamically retrieve the region one name from configuration
This commit removes the hardcoded "RegionOne" region name and instead
retrieves the region name dynamically from the service configuration.

This change prepares for a future update where DC services will be
deployed on a standalone system that uses a UUID as the default region
name.

Test Plan:
01. PASS - Add a subcloud.
02. PASS - Manage and unmanage a subcloud.
03. PASS - List and show subcloud details using subcloud list and
    subcloud show --detail.
04. PASS - Delete a subcloud.
05. PASS - Run 'dcmanager strategy-config update' using different
    region names: "RegionOne", "SystemController", and without
    specifying a region name. Verify that the default options are
    modified accordingly.
06. PASS - Run the previous test but using 'dcmanager strategy-config
    show' instead.
07. PASS - Upload a patch using the dcorch proxy (--os-region-name
    SystemController).
08. PASS - Run prestage orchestration.
09. PASS - Apply a patch to the system controller and then to the
    subclouds
10. PASS - Review all dcmanager and dcorch logs to ensure no
    exceptions are raised.

Story: 2011312
Task: 51861

Change-Id: I85c93c865c40418a351dab28aac56fc08464af72
Signed-off-by: Gustavo Herzmann <gustavo.herzmann@windriver.com>
2025-03-31 12:53:15 -03:00

315 lines
8.5 KiB
Python

# Copyright (c) 2020-2025 Wind River Systems, Inc.
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
SECONDS_IN_HOUR = 3600
KS_ENDPOINT_ADMIN = "admin"
KS_ENDPOINT_INTERNAL = "internal"
KS_ENDPOINT_PUBLIC = "public"
KS_ENDPOINT_DEFAULT = KS_ENDPOINT_ADMIN
KS_ENDPOINT_USER_DOMAIN_DEFAULT = "Default"
KS_ENDPOINT_PROJECT_DEFAULT = "admin"
KS_ENDPOINT_PROJECT_DOMAIN_DEFAULT = "Default"
ENDPOINT_TYPE_IDENTITY_OS = "identity_openstack"
# openstack endpoint types
ENDPOINT_TYPES_LIST_OS = [ENDPOINT_TYPE_IDENTITY_OS]
SW_UPDATE_DEFAULT_TITLE = "all clouds default"
ANSIBLE_OVERRIDES_PATH = "/opt/dc-vault/ansible"
SOFTWARE_VAULT_DIR = "/opt/dc-vault/software"
SOFTWARE_VAULT_METADATA = ".metadata"
DEPLOY_DIR = "/opt/platform/deploy"
USER_HEADER_VALUE = "distcloud"
USER_HEADER = {"User-Header": USER_HEADER_VALUE}
ADMIN_USER_NAME = "admin"
ADMIN_PROJECT_NAME = "admin"
SYSINV_USER_NAME = "sysinv"
DCMANAGER_USER_NAME = "dcmanager"
SERVICES_USER_NAME = "services"
NOVA_QUOTA_FIELDS = (
"metadata_items",
"cores",
"instances",
"ram",
"key_pairs",
"injected_files",
"injected_file_path_bytes",
"injected_file_content_bytes",
"server_group_members",
"server_groups",
)
CINDER_QUOTA_FIELDS = (
"volumes",
"volumes_iscsi",
"volumes_ceph",
"per_volume_gigabytes",
"groups",
"snapshots",
"snapshots_iscsi",
"snapshots_ceph",
"gigabytes",
"gigabytes_iscsi",
"gigabytes_ceph",
"backups",
"backup_gigabytes",
)
NEUTRON_QUOTA_FIELDS = (
"network",
"subnet",
"subnetpool",
"rbac_policy",
"trunk",
"port",
"router",
"floatingip",
"security_group",
"security_group_rule",
)
# Endpoint services names
ENDPOINT_NAME_DCAGENT = "dcagent"
ENDPOINT_NAME_DCDBSYNC = "dcdbsync"
ENDPOINT_NAME_FM = "fm"
ENDPOINT_NAME_KEYSTONE = "keystone"
ENDPOINT_NAME_SYSINV = "sysinv"
ENDPOINT_NAME_USM = "usm"
ENDPOINT_NAME_VIM = "vim"
# Endpoint services types
ENDPOINT_TYPE_DCAGENT = "dcagent"
ENDPOINT_TYPE_DC_CERT = "dc-cert"
ENDPOINT_TYPE_DCDBSYNC = "dcorch-dbsync"
ENDPOINT_TYPE_FIRMWARE = "firmware"
ENDPOINT_TYPE_IDENTITY = "identity"
ENDPOINT_TYPE_KUBERNETES = "kubernetes"
ENDPOINT_TYPE_KUBE_ROOTCA = "kube-rootca"
ENDPOINT_TYPE_USM = "usm"
ENDPOINT_TYPE_PLATFORM = "platform"
ENDPOINT_TYPE_FM = "faultmanagement"
ENDPOINT_TYPE_NFV = "nfv"
# TODO(nicodemos): Remove patching/load after patching is no longer supported
ENDPOINT_TYPE_LOAD = "load"
ENDPOINT_TYPE_PATCHING = "patching"
# TODO(nicodemos): Rename all other audit to use AUDIT_TYPE_
AUDIT_TYPE_SOFTWARE = "software"
# All endpoint types
# TODO(nicodemos): Remove patching after is no longer supported
ENDPOINT_TYPES_LIST = [
ENDPOINT_TYPE_PLATFORM,
ENDPOINT_TYPE_PATCHING,
ENDPOINT_TYPE_IDENTITY,
ENDPOINT_TYPE_USM,
]
# TODO(nicodemos): Remove patching/load after is no longer supported
AUDIT_TYPES_LIST = [
ENDPOINT_TYPE_PLATFORM,
ENDPOINT_TYPE_PATCHING,
ENDPOINT_TYPE_IDENTITY,
ENDPOINT_TYPE_LOAD,
ENDPOINT_TYPE_DC_CERT,
ENDPOINT_TYPE_FIRMWARE,
ENDPOINT_TYPE_KUBERNETES,
ENDPOINT_TYPE_KUBE_ROOTCA,
AUDIT_TYPE_SOFTWARE,
]
# All endpoint audit requests
# TODO(nicodemos): Remove patching/load after is no longer supported
# TODO(nicodemos): The AUDIT_TYPE_SOFTWARE will use the 'spare_audit_requested'
# temporarily until the USM feature is fully complete. Afterward, the software audit
# will replace the patch audit.
ENDPOINT_AUDIT_REQUESTS = {
ENDPOINT_TYPE_FIRMWARE: "firmware_audit_requested",
ENDPOINT_TYPE_KUBERNETES: "kubernetes_audit_requested",
ENDPOINT_TYPE_KUBE_ROOTCA: "kube_rootca_update_audit_requested",
ENDPOINT_TYPE_LOAD: "load_audit_requested",
ENDPOINT_TYPE_PATCHING: "patch_audit_requested",
AUDIT_TYPE_SOFTWARE: "spare_audit_requested",
}
# TODO(nicodemos): Remove patching/load after is no longer supported
ENDPOINT_URLS = {
ENDPOINT_NAME_DCAGENT: "https://{}:8326",
ENDPOINT_NAME_DCDBSYNC: "https://{}:8220/v1.0",
ENDPOINT_NAME_FM: "https://{}:18003",
ENDPOINT_NAME_KEYSTONE: "https://{}:5001/v3",
ENDPOINT_TYPE_PATCHING: "https://{}:5492",
ENDPOINT_NAME_SYSINV: "https://{}:6386/v1",
ENDPOINT_NAME_USM: "https://{}:5498",
ENDPOINT_NAME_VIM: "https://{}:4546",
}
SERVICE_TYPE_TO_NAME_MAP = {
ENDPOINT_TYPE_DCAGENT: ENDPOINT_NAME_DCAGENT,
ENDPOINT_TYPE_DCDBSYNC: ENDPOINT_NAME_DCDBSYNC,
ENDPOINT_TYPE_FM: ENDPOINT_NAME_FM,
ENDPOINT_TYPE_IDENTITY: ENDPOINT_NAME_KEYSTONE,
ENDPOINT_TYPE_PLATFORM: ENDPOINT_NAME_SYSINV,
ENDPOINT_NAME_USM: ENDPOINT_NAME_USM,
ENDPOINT_TYPE_NFV: ENDPOINT_NAME_VIM,
}
BASE_AUDIT = "base_audit"
FIRMWARE_AUDIT = "firmware_audit"
KUBERNETES_AUDIT = "kubernetes_audit"
KUBE_ROOTCA_AUDIT = "kube_rootca_audit"
SOFTWARE_AUDIT = "software_audit"
SKIP_AUDIT = "skip"
DCAGENT_ENDPOINT_TYPE_MAP = {
FIRMWARE_AUDIT: ENDPOINT_TYPE_FIRMWARE,
KUBERNETES_AUDIT: ENDPOINT_TYPE_KUBERNETES,
KUBE_ROOTCA_AUDIT: ENDPOINT_TYPE_KUBE_ROOTCA,
SOFTWARE_AUDIT: AUDIT_TYPE_SOFTWARE,
}
MIN_VERSION_FOR_DCAGENT = "24.09"
# Well known region names
SYSTEM_CONTROLLER_NAME = "SystemController"
# Subcloud management state
MANAGEMENT_UNMANAGED = "unmanaged"
MANAGEMENT_MANAGED = "managed"
# Subcloud availability status
AVAILABILITY_OFFLINE = "offline"
AVAILABILITY_ONLINE = "online"
# Subcloud sync status
SYNC_STATUS_UNKNOWN = "unknown"
SYNC_STATUS_IN_SYNC = "in-sync"
SYNC_STATUS_OUT_OF_SYNC = "out-of-sync"
SYNC_STATUS_NOT_AVAILABLE = "not-available"
# Subcloud deploy configuration status
DEPLOY_CONFIG_UP_TO_DATE = "Deployment: configurations up-to-date"
DEPLOY_CONFIG_OUT_OF_DATE = "Deployment: configurations out-of-date"
MONITORED_ALARM_ENTITIES = [
"host.starlingx.windriver.com",
]
# OS type
OS_RELEASE_FILE = "/etc/os-release"
OS_CENTOS = "centos"
OS_DEBIAN = "debian"
SUPPORTED_OS_TYPES = [OS_CENTOS, OS_DEBIAN]
# SSL cert
CERT_CA_FILE_CENTOS = "ca-cert.pem"
CERT_CA_FILE_DEBIAN = "ca-cert.crt"
SSL_CERT_CA_DIR = "/etc/pki/ca-trust/source/anchors/"
# RVMC
RVMC_NAME_PREFIX = "rvmc"
RVMC_CONFIG_FILE_NAME = "rvmc-config.yaml"
# Required for GEO-redundancy
# User-Agent check for subcloud by region_name request.
DCMANAGER_V1_HTTP_AGENT = "dcmanager/1.0"
# Subcloud installation values
BMC_INSTALL_VALUES = [
"bmc_username",
"bmc_address",
"bmc_password",
]
OPTIONAL_BMC_INSTALL_VALUES = [
"bmc_ciphersuite",
]
MANDATORY_INSTALL_VALUES = [
"bootstrap_interface",
"bootstrap_address",
"bootstrap_address_prefix",
"install_type",
] + BMC_INSTALL_VALUES
MANDATORY_ENROLL_INIT_VALUES = [
"bootstrap_interface",
"external_oam_subnet",
"external_oam_gateway_address",
"external_oam_floating_address",
"sysadmin_password",
"system_mode",
"software_version",
] + BMC_INSTALL_VALUES
OPTIONAL_INSTALL_VALUES = [
"nexthop_gateway",
"network_address",
"network_mask",
"console_type",
"bootstrap_vlan",
"rootfs_device",
"boot_device",
"rd.net.timeout.ipv6dad",
"no_check_certificate",
"persistent_size",
"hw_settle",
"extra_boot_params",
"wipe_osds",
]
GEN_ISO_OPTIONS = {
"bootstrap_interface": "--boot-interface",
"bootstrap_address": "--boot-ip",
"bootstrap_address_prefix": "--boot-netmask",
"install_type": "--default-boot",
"nexthop_gateway": "--boot-gateway",
"rootfs_device": "--param",
"boot_device": "--param",
"rd.net.timeout.ipv6dad": "--param",
"bootstrap_vlan": "--param",
"no_check_certificate": "--param",
"persistent_size": "--param",
"hw_settle": "--param",
"extra_boot_params": "--param",
"wipe_osds": "--param",
}
SUPPORTED_INSTALL_TYPES = 6
ANSIBLE_SUBCLOUD_INSTALL_PLAYBOOK = (
"/usr/share/ansible/stx-ansible/playbooks/install.yml"
)
ENROLL_INIT_SEED_ISO_NAME = "seed.iso"
ANSIBLE_SUBCLOUD_ENROLL_INIT_PLAYBOOK = (
"/usr/share/ansible/stx-ansible/playbooks/enroll_init.yml"
)
ANSIBLE_SUBCLOUD_ENROLL_PLAYBOOK = (
"/usr/share/ansible/stx-ansible/playbooks/enroll_subcloud.yml"
)
# Sysinv client default timeout
SYSINV_CLIENT_REST_DEFAULT_TIMEOUT = 600
SUBCLOUD_ISO_PATH = "/opt/platform/iso"
SUBCLOUD_FEED_PATH = "/var/www/pages/feed"