diff --git a/software-client/software_client/constants.py b/software-client/software_client/constants.py index 782a1aad..2374d09e 100644 --- a/software-client/software_client/constants.py +++ b/software-client/software_client/constants.py @@ -1,47 +1,50 @@ # -# Copyright (c) 2023-2024 Wind River Systems, Inc. +# Copyright (c) 2023-2025 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # +# Network ADDRESS_VERSION_IPV4 = 4 ADDRESS_VERSION_IPV6 = 6 CONTROLLER_FLOATING_HOSTNAME = "controller" +LOOPBACK_INTERFACE_NAME = "lo" SOFTWARE_STORAGE_DIR = "/opt/software" +# USM state and Patch status +DEPLOYED = 'deployed' +DEPLOYING = 'deploying' +FAILED = 'failed' +PENDING = 'pending' PATCH_AGENT_STATE_IDLE = "idle" PATCH_AGENT_STATE_INSTALLING = "installing" PATCH_AGENT_STATE_INSTALL_FAILED = "install-failed" PATCH_AGENT_STATE_INSTALL_REJECTED = "install-rejected" +# Status STATUS_DEVELOPEMENT = 'DEV' STATUS_OBSOLETE = 'OBS' STATUS_RELEASED = 'REL' -LOOPBACK_INTERFACE_NAME = "lo" - +# Semantic SEMANTIC_PREAPPLY = 'pre-apply' SEMANTIC_PREREMOVE = 'pre-remove' SEMANTIC_ACTIONS = [SEMANTIC_PREAPPLY, SEMANTIC_PREREMOVE] +# Deployment status DEPLOYMENT_STATE_ACTIVE = "Active" DEPLOYMENT_STATE_INACTIVE = "Inactive" DEPLOYMENT_STATE_PRESTAGING = "Prestaging" DEPLOYMENT_STATE_PRESTAGED = "Prestaged" +# Upload ISO_EXTENSION = ".iso" SIG_EXTENSION = ".sig" PATCH_EXTENSION = ".patch" SUPPORTED_UPLOAD_FILE_EXT = [ISO_EXTENSION, SIG_EXTENSION, PATCH_EXTENSION] SCRATCH_DIR = "/scratch" -# host deploy state -DEPLOYING = 'deploying' -FAILED = 'failed' -PENDING = 'pending' -DEPLOYED = 'deployed' - # Authorization modes of software cli KEYSTONE = 'keystone' TOKEN = 'token' diff --git a/software/software/constants.py b/software/software/constants.py index bcf055d6..d4648695 100644 --- a/software/software/constants.py +++ b/software/software/constants.py @@ -1,5 +1,5 @@ """ -Copyright (c) 2023-2024 Wind River Systems, Inc. +Copyright (c) 2023-2025 Wind River Systems, Inc. SPDX-License-Identifier: Apache-2.0 @@ -17,64 +17,105 @@ except Exception: from fm_api import constants as fm_constants from tsconfig.tsconfig import SW_VERSION +# Network ADDRESS_VERSION_IPV4 = 4 ADDRESS_VERSION_IPV6 = 6 +LOOPBACK_INTERFACE_NAME = "lo" + +# Availability and administrative +AVAILABILITY_ONLINE = 'online' +AVAILABILITY_AVAILABLE = 'available' +AVAILABILITY_DEGRADED = 'degraded' +ADMIN_LOCKED = 'locked' +ADMIN_UNLOCKED = 'unlocked' + +# Hostnames CONTROLLER_FLOATING_HOSTNAME = "controller" CONTROLLER_0_HOSTNAME = '%s-0' % CONTROLLER_FLOATING_HOSTNAME CONTROLLER_1_HOSTNAME = '%s-1' % CONTROLLER_FLOATING_HOSTNAME PREBOOTSTRAP_HOSTNAME = 'localhost' +# Personalities +CONTROLLER = 'controller' +STORAGE = 'storage' +WORKER = 'worker' + +# Region names DISTRIBUTED_CLOUD_ROLE_SYSTEMCONTROLLER = 'systemcontroller' SYSTEM_CONTROLLER_REGION = 'SystemController' +# DC +DC_VAULT_DIR = "/opt/dc-vault" +DC_VAULT_PLAYBOOK_DIR = "%s/playbooks" % DC_VAULT_DIR +DC_VAULT_LOADS_DIR = "%s/loads" % DC_VAULT_DIR + +# Certificate +ENABLE_DEV_CERTIFICATE_PATCH_IDENTIFIER = 'ENABLE_DEV_CERTIFICATE' + +# Software path's SOFTWARE_STORAGE_DIR = "/opt/software" SOFTWARE_CONFIG_FILE_LOCAL = "/etc/software/software.conf" +SOFTWARE_DEPLOY_FOLDER = "software-deploy" +SOFTWARE_JSON_FILE = "%s/software.json" % SOFTWARE_STORAGE_DIR +SYNCED_SOFTWARE_JSON_FILE = "%s/synced/software.json" % SOFTWARE_STORAGE_DIR # Deploy precheck return codes RC_SUCCESS = 0 RC_UNHEALTHY = 3 -PRECHECK_RESULT_VALID_PERIOD = 300 - +# Script names DEPLOY_PRECHECK_SCRIPT = "deploy-precheck" UPGRADE_UTILS_SCRIPT = "upgrade_utils.py" DEPLOY_START_SCRIPT = "software-deploy-start" DEPLOY_CLEANUP_SCRIPT = "deploy-cleanup" USM_LOAD_IMPORT_SCRIPT = "usm_load_import" +PATCH_SCRIPTS_STAGING_DIR = "/var/www/pages/updates/software-scripts" -SEMANTICS_DIR = "%s/semantics" % SOFTWARE_STORAGE_DIR - +# Status STATUS_DEVELOPEMENT = 'DEV' STATUS_OBSOLETE = 'OBS' STATUS_RELEASED = 'REL' +# Patch status PATCH_AGENT_STATE_IDLE = "idle" PATCH_AGENT_STATE_INSTALLING = "installing" PATCH_AGENT_STATE_INSTALL_FAILED = "install-failed" PATCH_AGENT_STATE_INSTALL_REJECTED = "install-rejected" -REBOOT_REQUIRED = "reboot_required" +# Patch +CHECKOUT_FOLDER = "checked_out_commit" +# Feed +DEBIAN_RELEASE = "bullseye" +FEED_DIR = "/var/www/pages/feed/" FEED_OSTREE_BASE_DIR = "/var/www/pages/feed" FEED_OSTREE_URL = "http://controller:8080/feed" -OSTREE_BASE_DEPLOYMENT_DIR = "/ostree/deploy/debian/deploy/" PACKAGE_FEED_DIR = "/var/www/pages/updates/debian" +UPGRADE_FEED_DIR = FEED_DIR + +# Ostree +OSTREE_BASE_DEPLOYMENT_DIR = "/ostree/deploy/debian/deploy/" OSTREE_REF = "starlingx" -SYSROOT_OSTREE_REF = "debian:starlingx" OSTREE_REMOTE = "debian" OSTREE_AUX_REMOTE = "controller-feed" OSTREE_AUX_REMOTE_PATH = "/ostree/repo" OSTREE_HISTORY_NOT_FETCHED = "<< History beyond this commit not fetched >>" -DEBIAN_RELEASE = "bullseye" -STARLINGX_RELEASE = SW_VERSION -PATCH_SCRIPTS_STAGING_DIR = "/var/www/pages/updates/software-scripts" +OSTREE_REPO = 'ostree_repo' +SYSROOT_OSTREE_REF = "debian:starlingx" + +# Sysroot SYSROOT_OSTREE = "/sysroot/ostree/repo" STAGING_DIR = "/sysroot/upgrade" ROOT_DIR = "%s/sysroot" % STAGING_DIR -POSTGRES_PATH = "/var/lib/postgresql" -PLATFORM_PATH = "/opt/platform" -RABBIT_PATH = '/var/lib/rabbitmq' + ETCD_PATH = "/opt/etcd" +PLATFORM_PATH = "/opt/platform" +PLAYBOOKS_PATH = "/usr/share/ansible/stx-ansible/playbooks" +POSTGRES_PATH = "/var/lib/postgresql" +RABBIT_PATH = '/var/lib/rabbitmq' +TMP_DIR = "/tmp" + +# Upgrade dirs ARMADA = "armada" CONFIG = "config" DEPLOY = "deploy" @@ -85,68 +126,49 @@ PUPPET = "puppet" SYSINV = "sysinv" UPGRADE = "upgrade" VIM = "nfv/vim" -RELEASE_PREFIX = "rel" - DEPLOY_CLEANUP_FOLDERS_NAME = [ARMADA, CONFIG, DEPLOY, FLUXCD, HELM, KEYRING, PUPPET, SYSINV, VIM] -LOOPBACK_INTERFACE_NAME = "lo" - +# Semantic SEMANTIC_PREAPPLY = 'pre-apply' SEMANTIC_PREREMOVE = 'pre-remove' SEMANTIC_ACTIONS = [SEMANTIC_PREAPPLY, SEMANTIC_PREREMOVE] +SEMANTICS_DIR = "%s/semantics" % SOFTWARE_STORAGE_DIR -CHECKOUT_FOLDER = "checked_out_commit" - -COMMIT_DEFAULT_VALUE = "xxxBASECOMMITxxx" - -FEED_DIR = "/var/www/pages/feed/" -UPGRADE_FEED_DIR = FEED_DIR -TMP_DIR = "/tmp" -OSTREE_REPO = 'ostree_repo' - +# Upload ISO_EXTENSION = ".iso" SIG_EXTENSION = ".sig" PATCH_EXTENSION = ".patch" SUPPORTED_UPLOAD_FILE_EXT = [ISO_EXTENSION, SIG_EXTENSION, PATCH_EXTENSION] SCRATCH_DIR = "/scratch" -RELEASE_GA_NAME = "starlingx-%s" -MAJOR_RELEASE = "%s.0" + +# Release LOWEST_MAJOR_RELEASE_FOR_PATCH_SUPPORT = "24.09" +MAJOR_RELEASE = "%s.0" +RELEASE_GA_NAME = "starlingx-%s" +RELEASE_PREFIX = "rel" +STARLINGX_RELEASE = SW_VERSION +UNKNOWN_SOFTWARE_VERSION = "0.0.0" # Precheck constants LICENSE_FILE = "/etc/platform/.license" VERIFY_LICENSE_BINARY = "/usr/bin/verify-license" VERSIONED_SCRIPTS_DIR = "%s/rel-%%s/bin/" % SOFTWARE_STORAGE_DIR -SOFTWARE_JSON_FILE = "%s/software.json" % SOFTWARE_STORAGE_DIR -SYNCED_SOFTWARE_JSON_FILE = "%s/synced/software.json" % SOFTWARE_STORAGE_DIR - -# The value "software-deploy" is also used in rule file -SOFTWARE_DEPLOY_FOLDER = "software-deploy" - WORKER_SUMMARY_DIR = "%s/summary" % SOFTWARE_STORAGE_DIR WORKER_DATETIME_FORMAT = "%Y%m%dT%H%M%S%f" -UNKNOWN_SOFTWARE_VERSION = "0.0.0" -LAST_IN_SYNC = "last_in_sync" +# Sync ALARM_INSTANCE_ID_OUT_OF_SYNC = "%s=%s" % (fm_constants.FM_ENTITY_TYPE_HOST, CONTROLLER_FLOATING_HOSTNAME) +LAST_IN_SYNC = "last_in_sync" +TIMEOUT_SYNC_API_CALL = 120 +# System type/mode SYSTEM_TYPE_ALL_IN_ONE = "All-in-one" SYSTEM_MODE_SIMPLEX = "simplex" SYSTEM_MODE_DUPLEX = "duplex" -# Personalities -CONTROLLER = 'controller' -STORAGE = 'storage' -WORKER = 'worker' - -AVAILABILITY_ONLINE = 'online' -AVAILABILITY_AVAILABLE = 'available' -AVAILABILITY_DEGRADED = 'degraded' -ADMIN_LOCKED = 'locked' -ADMIN_UNLOCKED = 'unlocked' - +# Software alarms SOFTWARE_ALARMS = { fm_constants.FM_ALARM_ID_SW_UPGRADE_DEPLOY_STATE_OUT_OF_SYNC: { "entity_type_id": fm_constants.FM_ENTITY_TYPE_HOST, @@ -188,28 +210,24 @@ SOFTWARE_ALARMS = { } } -# metadata tags -CONTENTS_TAG = "contents" -OSTREE_TAG = "ostree" -NUMBER_OF_COMMITS_TAG = "number_of_commits" +# Metadata BASE_TAG = "base" -COMMIT_TAG = "commit" CHECKSUM_TAG = "checksum" +CONTENTS_TAG = "contents" +COMMIT_DEFAULT_VALUE = "xxxBASECOMMITxxx" +COMMIT_TAG = "commit" COMMIT1_TAG = "commit1" +NUMBER_OF_COMMITS_TAG = "number_of_commits" +OSTREE_TAG = "ostree" -# flags +# Flags INSTALL_LOCAL_FLAG = "/opt/software/.install_local" +REBOOT_REQUIRED = "reboot_required" USM_UPGRADE_IN_PROGRESS_FLAG = os.path.join(tsc.PLATFORM_CONF_PATH, ".usm_upgrade_in_progress") UPGRADE_DO_NOT_USE_FQDN_FLAG = os.path.join(tsc.PLATFORM_CONF_PATH, ".upgrade_do_not_use_fqdn") -DC_VAULT_DIR = "/opt/dc-vault" -DC_VAULT_PLAYBOOK_DIR = "%s/playbooks" % DC_VAULT_DIR -DC_VAULT_LOADS_DIR = "%s/loads" % DC_VAULT_DIR -PLAYBOOKS_PATH = "/usr/share/ansible/stx-ansible/playbooks" - -ENABLE_DEV_CERTIFICATE_PATCH_IDENTIFIER = 'ENABLE_DEV_CERTIFICATE' - -TIMEOUT_SYNC_API_CALL = 120 - # Host software agent MAX_OSTREE_DEPLOY_RETRIES = 5 + +# Precheck timeout +PRECHECK_RESULT_VALID_PERIOD = 300 diff --git a/software/software/utilities/constants.py b/software/software/utilities/constants.py index fe7fc8f6..5b4cb3ba 100644 --- a/software/software/utilities/constants.py +++ b/software/software/utilities/constants.py @@ -1,38 +1,44 @@ # -# Copyright (c) 2023 Wind River Systems, Inc. +# Copyright (c) 2023-2025 Wind River Systems, Inc. # # SPDX-License-Identifier: Apache-2.0 # +# Hostnames +CONTROLLER = 'controller' +CONTROLLER_0_HOSTNAME = 'controller-0' +CONTROLLER_1_HOSTNAME = 'controller-1' + +# System type +DUPLEX = 'duplex' +SIMPLEX = 'simplex' + # SW_VERSION should be built-in from build-tools SW_VERSION = 'xxxPLATFORM_RELEASExxx' DISTRIBUTED_CLOUD_ROLE_SYSTEMCONTROLLER = 'systemcontroller' -WORKER = 'worker' SERVICE_TYPE_IDENTITY = 'identity' +WORKER = 'worker' +# Platform path PLATFORM_PATH = "/opt/platform" PLATFORM_CONFIG_PATH = PLATFORM_PATH + "/config/" + SW_VERSION + "/" PLATFORM_CONF_FILE = PLATFORM_CONFIG_PATH + "/platform.conf" CONFIG_PATH = PLATFORM_PATH + "/config/" + SW_VERSION + "/" PLATFORM_CONFIG_PERMDIR = CONFIG_PATH +# Puppet path PUPPET_PATH = PLATFORM_PATH + "/puppet/" + SW_VERSION + "/" HIERADATA_PERMDIR = PUPPET_PATH + 'hieradata' +# Keyring path KEYRING_WORKDIR = '/tmp/python_keyring' KEYRING_DIR_PATH = PLATFORM_PATH + "/.keyring" KEYRING_PATH = PLATFORM_PATH + "/.keyring/" + SW_VERSION KEYRING_PERMDIR = KEYRING_PATH -VOLATILE_PXEBOOT_PATH = "/var/pxeboot" - +# Kubernetes path KUBERNETES_CONF_PATH = "/etc/kubernetes" KUBERNETES_ADMIN_CONF_FILE = "admin.conf" -CONTROLLER = 'controller' -CONTROLLER_0_HOSTNAME = 'controller-0' -CONTROLLER_1_HOSTNAME = 'controller-1' - -SIMPLEX = 'simplex' -DUPLEX = 'duplex' +VOLATILE_PXEBOOT_PATH = "/var/pxeboot"