Integrate dcmanager orchestrator with optimized OpenStackDriver
This commit modifies the dcmanager orchestrator service to use the new OptimizedOpenStackDriver [1]. Test Plan: 1. PASS - Run patch orchestrator and verify that the operation completes successfully; 2. PASS - Run kube upgrade orchestrator and verify that the operation completes successfully. [1]: https://review.opendev.org/c/starlingx/distcloud/+/918311 Story: 2011106 Task: 50263 Change-Id: I7649c271e10641bb7840e35b510f916ee75d78c6 Signed-off-by: Gustavo Herzmann <gustavo.herzmann@windriver.com>
This commit is contained in:
@@ -452,7 +452,7 @@ class OptimizedOpenStackDriver(object):
|
||||
)
|
||||
if client_obj is not None:
|
||||
LOG.debug(
|
||||
"Using cached OS {client} client objects "
|
||||
f"Using cached OS {client} client objects "
|
||||
f"{region_name} {thread_name}"
|
||||
)
|
||||
setattr(self, f"{client}_client", client_obj)
|
||||
|
@@ -42,7 +42,10 @@ import tsconfig.tsconfig as tsc
|
||||
import yaml
|
||||
|
||||
from dccommon import consts as dccommon_consts
|
||||
# TODO(gherzman): Replace OpenStackDriver with OptimizedOpenStackDriver
|
||||
# during dcmanager OptimizedOpenStackDriver integration
|
||||
from dccommon.drivers.openstack.sdk_platform import OpenStackDriver
|
||||
from dccommon.drivers.openstack.sdk_platform import OptimizedOpenStackDriver
|
||||
from dccommon.drivers.openstack.sysinv_v1 import SysinvClient
|
||||
from dccommon.drivers.openstack import vim
|
||||
from dccommon import exceptions as dccommon_exceptions
|
||||
@@ -1074,11 +1077,12 @@ def is_subcloud_healthy(subcloud_region):
|
||||
|
||||
|
||||
def get_systemcontroller_installed_loads():
|
||||
|
||||
try:
|
||||
os_client = OpenStackDriver(
|
||||
os_client = OptimizedOpenStackDriver(
|
||||
region_name=dccommon_consts.SYSTEM_CONTROLLER_NAME,
|
||||
region_clients=None)
|
||||
region_clients=None,
|
||||
fetch_subcloud_ips=fetch_subcloud_mgmt_ips,
|
||||
)
|
||||
except Exception:
|
||||
LOG.exception("Failed to get keystone client for %s",
|
||||
dccommon_consts.SYSTEM_CONTROLLER_NAME)
|
||||
@@ -1355,8 +1359,11 @@ def decode_and_normalize_passwd(input_passwd):
|
||||
|
||||
def get_failure_msg(subcloud_region):
|
||||
try:
|
||||
os_client = OpenStackDriver(region_name=subcloud_region,
|
||||
region_clients=None)
|
||||
os_client = OptimizedOpenStackDriver(
|
||||
region_name=subcloud_region,
|
||||
region_clients=None,
|
||||
fetch_subcloud_ips=fetch_subcloud_mgmt_ips,
|
||||
)
|
||||
keystone_client = os_client.keystone_client
|
||||
endpoint = keystone_client.endpoint_cache.get_endpoint('sysinv')
|
||||
sysinv_client = SysinvClient(subcloud_region,
|
||||
|
@@ -25,7 +25,9 @@ from oslo_log import log as logging
|
||||
|
||||
from dccommon import consts as dccommon_consts
|
||||
from dccommon.drivers.openstack.patching_v1 import PatchingClient
|
||||
from dccommon.drivers.openstack.sdk_platform import OpenStackDriver
|
||||
from dccommon.drivers.openstack.sdk_platform import (
|
||||
OptimizedOpenStackDriver as OpenStackDriver
|
||||
)
|
||||
from dccommon.drivers.openstack.software_v1 import SoftwareClient
|
||||
from dccommon.drivers.openstack.sysinv_v1 import SysinvClient
|
||||
from dccommon.drivers.openstack import vim
|
||||
@@ -33,6 +35,7 @@ from dcmanager.common import consts
|
||||
from dcmanager.common import context
|
||||
from dcmanager.common import exceptions
|
||||
from dcmanager.common import scheduler
|
||||
from dcmanager.common import utils
|
||||
from dcmanager.db import api as db_api
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
@@ -133,8 +136,11 @@ class OrchThread(threading.Thread):
|
||||
|
||||
throws an exception if keystone client cannot be initialized
|
||||
"""
|
||||
os_client = OpenStackDriver(region_name=region_name,
|
||||
region_clients=None)
|
||||
os_client = OpenStackDriver(
|
||||
region_name=region_name,
|
||||
region_clients=None,
|
||||
fetch_subcloud_ips=utils.fetch_subcloud_mgmt_ips,
|
||||
)
|
||||
return os_client.keystone_client
|
||||
|
||||
@staticmethod
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2020-2023 Wind River Systems, Inc.
|
||||
# Copyright (c) 2020-2024 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
@@ -12,12 +12,15 @@ from dccommon import consts as dccommon_consts
|
||||
from dccommon.drivers.openstack.barbican import BarbicanClient
|
||||
from dccommon.drivers.openstack.fm import FmClient
|
||||
from dccommon.drivers.openstack.patching_v1 import PatchingClient
|
||||
from dccommon.drivers.openstack.sdk_platform import OpenStackDriver
|
||||
from dccommon.drivers.openstack.sdk_platform import (
|
||||
OptimizedOpenStackDriver as OpenStackDriver
|
||||
)
|
||||
from dccommon.drivers.openstack.software_v1 import SoftwareClient
|
||||
from dccommon.drivers.openstack.sysinv_v1 import SysinvClient
|
||||
from dccommon.drivers.openstack.vim import VimClient
|
||||
from dcmanager.common import context
|
||||
from dcmanager.common.exceptions import InvalidParameterValue
|
||||
from dcmanager.common import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
@@ -108,8 +111,11 @@ class BaseState(object):
|
||||
"""Construct a (cached) keystone client (and token)"""
|
||||
|
||||
try:
|
||||
os_client = OpenStackDriver(region_name=region_name,
|
||||
region_clients=['sysinv'])
|
||||
os_client = OpenStackDriver(
|
||||
region_name=region_name,
|
||||
region_clients=["sysinv"],
|
||||
fetch_subcloud_ips=utils.fetch_subcloud_mgmt_ips,
|
||||
)
|
||||
return os_client.keystone_client
|
||||
except Exception:
|
||||
LOG.warning('Failure initializing KeystoneClient for region: %s'
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2023 Wind River Systems, Inc.
|
||||
# Copyright (c) 2023-2024 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
@@ -9,9 +9,12 @@ from keystoneauth1 import exceptions as keystone_exceptions
|
||||
from oslo_log import log as logging
|
||||
|
||||
from dccommon import consts as dccommon_consts
|
||||
from dccommon.drivers.openstack.sdk_platform import OpenStackDriver
|
||||
from dccommon.drivers.openstack.sdk_platform import (
|
||||
OptimizedOpenStackDriver as OpenStackDriver
|
||||
)
|
||||
from dccommon.drivers.openstack.software_v1 import SoftwareClient
|
||||
from dccommon.drivers.openstack.sysinv_v1 import SysinvClient
|
||||
from dcmanager.common import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
@@ -41,8 +44,11 @@ def get_keystone_client(region_name=dccommon_consts.DEFAULT_REGION_NAME):
|
||||
"""Construct a (cached) keystone client (and token)"""
|
||||
|
||||
try:
|
||||
os_client = OpenStackDriver(region_name=region_name,
|
||||
region_clients=['sysinv'])
|
||||
os_client = OpenStackDriver(
|
||||
region_name=region_name,
|
||||
region_clients=["sysinv"],
|
||||
fetch_subcloud_ips=utils.fetch_subcloud_mgmt_ips,
|
||||
)
|
||||
return os_client.keystone_client
|
||||
except Exception:
|
||||
LOG.warning('Failure initializing KeystoneClient for region: %s'
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# Copyright (c) 2022 Wind River Systems, Inc.
|
||||
# Copyright (c) 2022, 2024 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
@@ -10,8 +10,11 @@ from oslo_log import log as logging
|
||||
|
||||
from dccommon import consts as dccommon_consts
|
||||
from dccommon.drivers.openstack.patching_v1 import PatchingClient
|
||||
from dccommon.drivers.openstack.sdk_platform import OpenStackDriver
|
||||
from dccommon.drivers.openstack.sdk_platform import (
|
||||
OptimizedOpenStackDriver as OpenStackDriver
|
||||
)
|
||||
from dccommon.drivers.openstack.sysinv_v1 import SysinvClient
|
||||
from dcmanager.common import utils
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
|
||||
@@ -41,8 +44,11 @@ def get_keystone_client(region_name=dccommon_consts.DEFAULT_REGION_NAME):
|
||||
"""Construct a (cached) keystone client (and token)"""
|
||||
|
||||
try:
|
||||
os_client = OpenStackDriver(region_name=region_name,
|
||||
region_clients=['sysinv'])
|
||||
os_client = OpenStackDriver(
|
||||
region_name=region_name,
|
||||
region_clients=["sysinv"],
|
||||
fetch_subcloud_ips=utils.fetch_subcloud_mgmt_ips,
|
||||
)
|
||||
return os_client.keystone_client
|
||||
except Exception:
|
||||
LOG.warning('Failure initializing KeystoneClient for region: %s'
|
||||
|
@@ -2353,6 +2353,12 @@ class TestSubcloudsPatchPrestage(BaseTestSubcloudsPatch):
|
||||
def test_patch_prestage_fails_with_invalid_release(self):
|
||||
"""Test patch prestage fails with invalid release"""
|
||||
|
||||
# TODO(gherzmann): Remove the following mock when the OpenStackDriver
|
||||
# is fully replaced by OptimizedOpenStackDriver
|
||||
mock_patch_object = mock.patch.object(cutils, 'OptimizedOpenStackDriver')
|
||||
self.mock_openstack_driver = mock_patch_object.start()
|
||||
self.addCleanup(mock_patch_object.stop)
|
||||
|
||||
self.params["release"] = "21.12"
|
||||
|
||||
self.mock_sysinv_client().get_loads.return_values = FakeLoad(
|
||||
|
Reference in New Issue
Block a user