Change class name to use camelCase
Fixed some class names that were in snake_case because it's not right according to PEP8/PyLint. Now they're all camelCase. Also, did a direct assignment to client_manager attributes. Test Plan: PASS: Run tox command. - pylint success - pep8 success - py39 success PASS: Check if all commands are working properly. Closes-bug: 2053023 Change-Id: Iba489e23eb27015f27c6b8d5231f5d6002fa6876 Signed-off-by: Hugo Brito <hugo.brito@windriver.com>
This commit is contained in:
parent
a507c6449d
commit
1614a6ae75
|
@ -30,6 +30,7 @@ load-plugins=
|
||||||
# R detect Refactor for a "good practice" metric violation
|
# R detect Refactor for a "good practice" metric violation
|
||||||
# W detect Warning for stylistic problems, or minor programming issues
|
# W detect Warning for stylistic problems, or minor programming issues
|
||||||
disable=broad-except,
|
disable=broad-except,
|
||||||
|
duplicate-code,
|
||||||
invalid-name,
|
invalid-name,
|
||||||
missing-class-docstring,
|
missing-class-docstring,
|
||||||
missing-function-docstring,
|
missing-function-docstring,
|
||||||
|
@ -44,7 +45,6 @@ disable=broad-except,
|
||||||
too-many-locals,
|
too-many-locals,
|
||||||
too-many-public-methods,
|
too-many-public-methods,
|
||||||
too-many-statements,
|
too-many-statements,
|
||||||
duplicate-code,
|
|
||||||
|
|
||||||
[REPORTS]
|
[REPORTS]
|
||||||
# Set the output format. Available formats are text, parseable, colorized, msvs
|
# Set the output format. Available formats are text, parseable, colorized, msvs
|
||||||
|
|
|
@ -43,6 +43,7 @@ def log_request(func):
|
||||||
|
|
||||||
|
|
||||||
class HTTPClient:
|
class HTTPClient:
|
||||||
|
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
base_url,
|
base_url,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
# Copyright (c) 2017 Ericsson AB.
|
# Copyright (c) 2017 Ericsson AB.
|
||||||
# Copyright (c) 2017-2021 Wind River Systems, Inc.
|
# Copyright (c) 2017-2021, 2024 Wind River Systems, Inc.
|
||||||
# All Rights Reserved.
|
# All Rights Reserved.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
@ -20,10 +20,9 @@ from dcmanagerclient.api.base import get_json
|
||||||
|
|
||||||
|
|
||||||
class AlarmSummary(base.Resource):
|
class AlarmSummary(base.Resource):
|
||||||
resource_name = 'alarms'
|
resource_name = "alarms"
|
||||||
|
|
||||||
def __init__(self, manager, name, critical, major,
|
def __init__(self, manager, name, critical, major, minor, warnings, status):
|
||||||
minor, warnings, status):
|
|
||||||
self.manger = manager
|
self.manger = manager
|
||||||
self.name = name
|
self.name = name
|
||||||
self.critical = critical
|
self.critical = critical
|
||||||
|
@ -33,7 +32,7 @@ class AlarmSummary(base.Resource):
|
||||||
self.status = status
|
self.status = status
|
||||||
|
|
||||||
|
|
||||||
class alarm_manager(base.ResourceManager):
|
class AlarmManager(base.ResourceManager):
|
||||||
resource_class = AlarmSummary
|
resource_class = AlarmSummary
|
||||||
|
|
||||||
def alarm_summary_list(self, url):
|
def alarm_summary_list(self, url):
|
||||||
|
@ -41,20 +40,22 @@ class alarm_manager(base.ResourceManager):
|
||||||
if resp.status_code != 200:
|
if resp.status_code != 200:
|
||||||
self._raise_api_exception(resp)
|
self._raise_api_exception(resp)
|
||||||
json_response_key = get_json(resp)
|
json_response_key = get_json(resp)
|
||||||
json_objects = json_response_key['alarm_summary']
|
json_objects = json_response_key["alarm_summary"]
|
||||||
resource = []
|
resource = []
|
||||||
for json_object in json_objects:
|
for json_object in json_objects:
|
||||||
resource.append(
|
resource.append(
|
||||||
self.resource_class(
|
self.resource_class(
|
||||||
self,
|
self,
|
||||||
name=json_object['region_name'],
|
name=json_object["region_name"],
|
||||||
critical=json_object['critical_alarms'],
|
critical=json_object["critical_alarms"],
|
||||||
major=json_object['major_alarms'],
|
major=json_object["major_alarms"],
|
||||||
minor=json_object['minor_alarms'],
|
minor=json_object["minor_alarms"],
|
||||||
warnings=json_object['warnings'],
|
warnings=json_object["warnings"],
|
||||||
status=json_object['cloud_status']))
|
status=json_object["cloud_status"],
|
||||||
|
)
|
||||||
|
)
|
||||||
return resource
|
return resource
|
||||||
|
|
||||||
def list_alarms(self):
|
def list_alarms(self):
|
||||||
url = '/alarms/'
|
url = "/alarms/"
|
||||||
return self.alarm_summary_list(url)
|
return self.alarm_summary_list(url)
|
||||||
|
|
|
@ -22,25 +22,28 @@ import six
|
||||||
from keystoneauth1 import session as ks_session
|
from keystoneauth1 import session as ks_session
|
||||||
|
|
||||||
from dcmanagerclient.api import httpclient
|
from dcmanagerclient.api import httpclient
|
||||||
from dcmanagerclient.api.v1 import alarm_manager as am
|
from dcmanagerclient.api.v1.alarm_manager import AlarmManager
|
||||||
from dcmanagerclient.api.v1 import fw_update_manager as fum
|
from dcmanagerclient.api.v1.fw_update_manager import FwUpdateManager
|
||||||
from dcmanagerclient.api.v1 import kube_rootca_update_manager as krum
|
from dcmanagerclient.api.v1.kube_rootca_update_manager import KubeRootcaUpdateManager
|
||||||
from dcmanagerclient.api.v1 import kube_upgrade_manager as kupm
|
from dcmanagerclient.api.v1.kube_upgrade_manager import KubeUpgradeManager
|
||||||
from dcmanagerclient.api.v1 import peer_group_association_manager as pgam
|
from dcmanagerclient.api.v1.peer_group_association_manager import \
|
||||||
from dcmanagerclient.api.v1 import phased_subcloud_deploy_manager as psdm
|
PeerGroupAssociationManager
|
||||||
from dcmanagerclient.api.v1 import strategy_step_manager as ssm
|
from dcmanagerclient.api.v1.phased_subcloud_deploy_manager import \
|
||||||
from dcmanagerclient.api.v1 import subcloud_backup_manager as sbm
|
PhasedSubcloudDeployManager
|
||||||
from dcmanagerclient.api.v1 import subcloud_deploy_manager as sdm
|
from dcmanagerclient.api.v1.strategy_step_manager import StrategyStepManager
|
||||||
from dcmanagerclient.api.v1 import subcloud_group_manager as gm
|
from dcmanagerclient.api.v1.subcloud_backup_manager import SubcloudBackupManager
|
||||||
from dcmanagerclient.api.v1 import subcloud_manager as sm
|
from dcmanagerclient.api.v1.subcloud_deploy_manager import SubcloudDeployManager
|
||||||
from dcmanagerclient.api.v1 import subcloud_peer_group_manager as pm
|
from dcmanagerclient.api.v1.subcloud_group_manager import SubcloudGroupManager
|
||||||
from dcmanagerclient.api.v1 import sw_deploy_manager as swdm
|
from dcmanagerclient.api.v1.subcloud_manager import SubcloudManager
|
||||||
from dcmanagerclient.api.v1 import sw_patch_manager as spm
|
from dcmanagerclient.api.v1.subcloud_peer_group_manager import \
|
||||||
from dcmanagerclient.api.v1 import sw_prestage_manager as spr
|
SubcloudPeerGroupManager
|
||||||
from dcmanagerclient.api.v1 import sw_strategy_manager as sstm
|
from dcmanagerclient.api.v1.sw_deploy_manager import SwDeployManager
|
||||||
from dcmanagerclient.api.v1 import sw_update_options_manager as suom
|
from dcmanagerclient.api.v1.sw_patch_manager import SwPatchManager
|
||||||
from dcmanagerclient.api.v1 import sw_upgrade_manager as supm
|
from dcmanagerclient.api.v1.sw_prestage_manager import SwPrestageManager
|
||||||
from dcmanagerclient.api.v1 import system_peer_manager as sp
|
from dcmanagerclient.api.v1.sw_strategy_manager import SwStrategyManager
|
||||||
|
from dcmanagerclient.api.v1.sw_update_options_manager import SwUpdateOptionsManager
|
||||||
|
from dcmanagerclient.api.v1.sw_upgrade_manager import SwUpgradeManager
|
||||||
|
from dcmanagerclient.api.v1.system_peer_manager import SystemPeerManager
|
||||||
|
|
||||||
_DEFAULT_DCMANAGER_URL = "http://localhost:8119/v1.0"
|
_DEFAULT_DCMANAGER_URL = "http://localhost:8119/v1.0"
|
||||||
|
|
||||||
|
@ -113,37 +116,33 @@ class Client:
|
||||||
)
|
)
|
||||||
|
|
||||||
# Create all managers
|
# Create all managers
|
||||||
self.subcloud_manager = sm.subcloud_manager(self.http_client)
|
self.subcloud_manager = SubcloudManager(self.http_client)
|
||||||
self.subcloud_group_manager = gm.subcloud_group_manager(
|
self.subcloud_group_manager = SubcloudGroupManager(
|
||||||
self.http_client, self.subcloud_manager
|
self.http_client, self.subcloud_manager
|
||||||
)
|
)
|
||||||
self.subcloud_peer_group_manager = pm.subcloud_peer_group_manager(
|
self.subcloud_peer_group_manager = SubcloudPeerGroupManager(
|
||||||
self.http_client, self.subcloud_manager
|
self.http_client, self.subcloud_manager
|
||||||
)
|
)
|
||||||
self.peer_group_association_manager = pgam.peer_group_association_manager(
|
self.peer_group_association_manager = PeerGroupAssociationManager(
|
||||||
self.http_client
|
self.http_client
|
||||||
)
|
)
|
||||||
self.subcloud_backup_manager = sbm.subcloud_backup_manager(self.http_client)
|
self.subcloud_backup_manager = SubcloudBackupManager(self.http_client)
|
||||||
self.subcloud_deploy_manager = sdm.subcloud_deploy_manager(self.http_client)
|
self.subcloud_deploy_manager = SubcloudDeployManager(self.http_client)
|
||||||
self.system_peer_manager = sp.system_peer_manager(
|
self.system_peer_manager = SystemPeerManager(
|
||||||
self.http_client, self.subcloud_peer_group_manager
|
self.http_client, self.subcloud_peer_group_manager
|
||||||
)
|
)
|
||||||
self.alarm_manager = am.alarm_manager(self.http_client)
|
self.alarm_manager = AlarmManager(self.http_client)
|
||||||
self.fw_update_manager = fum.fw_update_manager(self.http_client)
|
self.fw_update_manager = FwUpdateManager(self.http_client)
|
||||||
self.kube_rootca_update_manager = krum.kube_rootca_update_manager(
|
self.kube_rootca_update_manager = KubeRootcaUpdateManager(self.http_client)
|
||||||
self.http_client
|
self.kube_upgrade_manager = KubeUpgradeManager(self.http_client)
|
||||||
)
|
self.sw_deploy_manager = SwDeployManager(self.http_client)
|
||||||
self.kube_upgrade_manager = kupm.kube_upgrade_manager(self.http_client)
|
self.sw_patch_manager = SwPatchManager(self.http_client)
|
||||||
self.sw_deploy_manager = swdm.SwDeployManager(self.http_client)
|
self.sw_prestage_manager = SwPrestageManager(self.http_client)
|
||||||
self.sw_patch_manager = spm.sw_patch_manager(self.http_client)
|
self.sw_update_options_manager = SwUpdateOptionsManager(self.http_client)
|
||||||
self.sw_prestage_manager = spr.sw_prestage_manager(self.http_client)
|
self.sw_upgrade_manager = SwUpgradeManager(self.http_client)
|
||||||
self.sw_update_options_manager = suom.sw_update_options_manager(
|
self.strategy_step_manager = StrategyStepManager(self.http_client)
|
||||||
self.http_client
|
self.sw_strategy_manager = SwStrategyManager(self.http_client)
|
||||||
)
|
self.phased_subcloud_deploy_manager = PhasedSubcloudDeployManager(
|
||||||
self.sw_upgrade_manager = supm.sw_upgrade_manager(self.http_client)
|
|
||||||
self.strategy_step_manager = ssm.strategy_step_manager(self.http_client)
|
|
||||||
self.sw_strategy_manager = sstm.sw_strategy_manager(self.http_client)
|
|
||||||
self.phased_subcloud_deploy_manager = psdm.phased_subcloud_deploy_manager(
|
|
||||||
self.http_client
|
self.http_client
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -14,12 +14,12 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
from dcmanagerclient.api.v1.sw_update_manager import sw_update_manager
|
from dcmanagerclient.api.v1.sw_update_manager import SwUpdateManager
|
||||||
|
|
||||||
SW_UPDATE_TYPE_FIRMWARE = "firmware"
|
SW_UPDATE_TYPE_FIRMWARE = "firmware"
|
||||||
|
|
||||||
|
|
||||||
class fw_update_manager(sw_update_manager):
|
class FwUpdateManager(SwUpdateManager):
|
||||||
|
|
||||||
def __init__(self, http_client):
|
def __init__(self, http_client):
|
||||||
super().__init__(http_client, update_type=SW_UPDATE_TYPE_FIRMWARE)
|
super().__init__(http_client, update_type=SW_UPDATE_TYPE_FIRMWARE)
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
from dcmanagerclient.api.v1.sw_update_manager import sw_update_manager
|
from dcmanagerclient.api.v1.sw_update_manager import SwUpdateManager
|
||||||
|
|
||||||
SW_UPDATE_TYPE_KUBE_ROOTCA_UPDATE = "kube-rootca-update"
|
SW_UPDATE_TYPE_KUBE_ROOTCA_UPDATE = "kube-rootca-update"
|
||||||
|
|
||||||
|
|
||||||
class kube_rootca_update_manager(sw_update_manager):
|
class KubeRootcaUpdateManager(SwUpdateManager):
|
||||||
|
|
||||||
def __init__(self, http_client):
|
def __init__(self, http_client):
|
||||||
super().__init__(http_client, update_type=SW_UPDATE_TYPE_KUBE_ROOTCA_UPDATE)
|
super().__init__(http_client, update_type=SW_UPDATE_TYPE_KUBE_ROOTCA_UPDATE)
|
||||||
|
|
|
@ -14,12 +14,12 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
from dcmanagerclient.api.v1.sw_update_manager import sw_update_manager
|
from dcmanagerclient.api.v1.sw_update_manager import SwUpdateManager
|
||||||
|
|
||||||
SW_UPDATE_TYPE_KUBERNETES = "kubernetes"
|
SW_UPDATE_TYPE_KUBERNETES = "kubernetes"
|
||||||
|
|
||||||
|
|
||||||
class kube_upgrade_manager(sw_update_manager):
|
class KubeUpgradeManager(SwUpdateManager):
|
||||||
|
|
||||||
def __init__(self, http_client):
|
def __init__(self, http_client):
|
||||||
super().__init__(http_client, update_type=SW_UPDATE_TYPE_KUBERNETES)
|
super().__init__(http_client, update_type=SW_UPDATE_TYPE_KUBERNETES)
|
||||||
|
|
|
@ -42,7 +42,7 @@ class PeerGroupAssociation(base.Resource):
|
||||||
self.updated_at = updated_at
|
self.updated_at = updated_at
|
||||||
|
|
||||||
|
|
||||||
class peer_group_association_manager(base.ResourceManager):
|
class PeerGroupAssociationManager(base.ResourceManager):
|
||||||
resource_class = PeerGroupAssociation
|
resource_class = PeerGroupAssociation
|
||||||
|
|
||||||
def _json_to_resource(self, json_object):
|
def _json_to_resource(self, json_object):
|
||||||
|
|
|
@ -12,7 +12,7 @@ from dcmanagerclient.api.base import get_json
|
||||||
BASE_URL = "/phased-subcloud-deploy/"
|
BASE_URL = "/phased-subcloud-deploy/"
|
||||||
|
|
||||||
|
|
||||||
class phased_subcloud_deploy_manager(base.ResourceManager):
|
class PhasedSubcloudDeployManager(base.ResourceManager):
|
||||||
resource_class = base.Subcloud
|
resource_class = base.Subcloud
|
||||||
|
|
||||||
def json_to_resource(self, json_object):
|
def json_to_resource(self, json_object):
|
||||||
|
|
|
@ -44,7 +44,7 @@ class StrategyStep(base.Resource):
|
||||||
self.updated_at = updated_at
|
self.updated_at = updated_at
|
||||||
|
|
||||||
|
|
||||||
class strategy_step_manager(base.ResourceManager):
|
class StrategyStepManager(base.ResourceManager):
|
||||||
|
|
||||||
def __init__(self, http_client):
|
def __init__(self, http_client):
|
||||||
super().__init__(http_client)
|
super().__init__(http_client)
|
||||||
|
|
|
@ -12,7 +12,7 @@ from dcmanagerclient.api import base
|
||||||
from dcmanagerclient.api.base import get_json
|
from dcmanagerclient.api.base import get_json
|
||||||
|
|
||||||
|
|
||||||
class subcloud_backup_manager(base.ResourceManager):
|
class SubcloudBackupManager(base.ResourceManager):
|
||||||
|
|
||||||
resource_class = base.Subcloud
|
resource_class = base.Subcloud
|
||||||
|
|
||||||
|
|
|
@ -38,7 +38,7 @@ class SubcloudDeploy(base.Resource):
|
||||||
self.software_version = software_version
|
self.software_version = software_version
|
||||||
|
|
||||||
|
|
||||||
class subcloud_deploy_manager(base.ResourceManager):
|
class SubcloudDeployManager(base.ResourceManager):
|
||||||
resource_class = SubcloudDeploy
|
resource_class = SubcloudDeploy
|
||||||
|
|
||||||
def _process_json_response(self, json_object):
|
def _process_json_response(self, json_object):
|
||||||
|
|
|
@ -45,7 +45,7 @@ class SubcloudGroup(base.Resource):
|
||||||
self.updated_at = updated_at
|
self.updated_at = updated_at
|
||||||
|
|
||||||
|
|
||||||
class subcloud_group_manager(base.ResourceManager):
|
class SubcloudGroupManager(base.ResourceManager):
|
||||||
resource_class = SubcloudGroup
|
resource_class = SubcloudGroup
|
||||||
|
|
||||||
def __init__(self, http_client, subcloud_manager):
|
def __init__(self, http_client, subcloud_manager):
|
||||||
|
|
|
@ -23,7 +23,7 @@ from dcmanagerclient.api import base
|
||||||
from dcmanagerclient.api.base import get_json
|
from dcmanagerclient.api.base import get_json
|
||||||
|
|
||||||
|
|
||||||
class subcloud_manager(base.ResourceManager):
|
class SubcloudManager(base.ResourceManager):
|
||||||
resource_class = base.Subcloud
|
resource_class = base.Subcloud
|
||||||
|
|
||||||
def json_to_resource(self, json_object):
|
def json_to_resource(self, json_object):
|
||||||
|
|
|
@ -40,7 +40,7 @@ class SubcloudPeerGroup(base.Resource):
|
||||||
self.updated_at = updated_at
|
self.updated_at = updated_at
|
||||||
|
|
||||||
|
|
||||||
class subcloud_peer_group_manager(base.ResourceManager):
|
class SubcloudPeerGroupManager(base.ResourceManager):
|
||||||
resource_class = SubcloudPeerGroup
|
resource_class = SubcloudPeerGroup
|
||||||
|
|
||||||
def __init__(self, http_client, subcloud_manager):
|
def __init__(self, http_client, subcloud_manager):
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
# SPDX-License-Identifier: Apache-2.0
|
# SPDX-License-Identifier: Apache-2.0
|
||||||
#
|
#
|
||||||
|
|
||||||
from dcmanagerclient.api.v1.sw_update_manager import sw_update_manager
|
from dcmanagerclient.api.v1.sw_update_manager import SwUpdateManager
|
||||||
|
|
||||||
SW_UPDATE_TYPE_USM = "software"
|
SW_UPDATE_TYPE_USM = "software"
|
||||||
|
|
||||||
|
|
||||||
class SwDeployManager(sw_update_manager):
|
class SwDeployManager(SwUpdateManager):
|
||||||
def __init__(self, http_client):
|
def __init__(self, http_client):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
http_client, update_type=SW_UPDATE_TYPE_USM, extra_args=["release"]
|
http_client, update_type=SW_UPDATE_TYPE_USM, extra_args=["release"]
|
||||||
|
|
|
@ -14,12 +14,12 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
from dcmanagerclient.api.v1.sw_update_manager import sw_update_manager
|
from dcmanagerclient.api.v1.sw_update_manager import SwUpdateManager
|
||||||
|
|
||||||
SW_UPDATE_TYPE_PATCH = "patch"
|
SW_UPDATE_TYPE_PATCH = "patch"
|
||||||
|
|
||||||
|
|
||||||
class sw_patch_manager(sw_update_manager):
|
class SwPatchManager(SwUpdateManager):
|
||||||
def __init__(self, http_client):
|
def __init__(self, http_client):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
http_client, update_type=SW_UPDATE_TYPE_PATCH, extra_args=["upload-only"]
|
http_client, update_type=SW_UPDATE_TYPE_PATCH, extra_args=["upload-only"]
|
||||||
|
|
|
@ -13,12 +13,12 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
from dcmanagerclient.api.v1.sw_update_manager import sw_update_manager
|
from dcmanagerclient.api.v1.sw_update_manager import SwUpdateManager
|
||||||
|
|
||||||
SW_UPDATE_TYPE_PRESTAGE = "prestage"
|
SW_UPDATE_TYPE_PRESTAGE = "prestage"
|
||||||
|
|
||||||
|
|
||||||
class sw_prestage_manager(sw_update_manager):
|
class SwPrestageManager(SwUpdateManager):
|
||||||
|
|
||||||
def __init__(self, http_client):
|
def __init__(self, http_client):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
|
|
|
@ -14,10 +14,10 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
from dcmanagerclient.api.v1.sw_update_manager import sw_update_manager
|
from dcmanagerclient.api.v1.sw_update_manager import SwUpdateManager
|
||||||
|
|
||||||
|
|
||||||
class sw_strategy_manager(sw_update_manager):
|
class SwStrategyManager(SwUpdateManager):
|
||||||
def __init__(self, http_client, url="sw-update-strategy"):
|
def __init__(self, http_client, url="sw-update-strategy"):
|
||||||
super().__init__(http_client, update_type=None)
|
super().__init__(http_client, update_type=None)
|
||||||
|
|
||||||
|
|
|
@ -47,8 +47,8 @@ class SwUpdateStrategy(base.Resource):
|
||||||
self.extra_args = extra_args
|
self.extra_args = extra_args
|
||||||
|
|
||||||
|
|
||||||
class sw_update_manager(base.ResourceManager):
|
class SwUpdateManager(base.ResourceManager):
|
||||||
"""sw_update_manager
|
"""SwUpdateManager
|
||||||
|
|
||||||
sw_update_manager is an abstract class that is used by subclasses to
|
sw_update_manager is an abstract class that is used by subclasses to
|
||||||
manage API actions for specific update strategy types such as software
|
manage API actions for specific update strategy types such as software
|
||||||
|
|
|
@ -49,7 +49,7 @@ class SwUpdateOptions(base.Resource):
|
||||||
self.updated_at = updated_at
|
self.updated_at = updated_at
|
||||||
|
|
||||||
|
|
||||||
class sw_update_options_manager(base.ResourceManager):
|
class SwUpdateOptionsManager(base.ResourceManager):
|
||||||
resource_class = SwUpdateOptions
|
resource_class = SwUpdateOptions
|
||||||
|
|
||||||
def sw_update_options_update(self, subcloud_ref, **kwargs):
|
def sw_update_options_update(self, subcloud_ref, **kwargs):
|
||||||
|
|
|
@ -14,12 +14,12 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
#
|
#
|
||||||
from dcmanagerclient.api.v1.sw_update_manager import sw_update_manager
|
from dcmanagerclient.api.v1.sw_update_manager import SwUpdateManager
|
||||||
|
|
||||||
SW_UPDATE_TYPE_UPGRADE = "upgrade"
|
SW_UPDATE_TYPE_UPGRADE = "upgrade"
|
||||||
|
|
||||||
|
|
||||||
class sw_upgrade_manager(sw_update_manager):
|
class SwUpgradeManager(SwUpdateManager):
|
||||||
|
|
||||||
def __init__(self, http_client):
|
def __init__(self, http_client):
|
||||||
super().__init__(http_client, update_type=SW_UPDATE_TYPE_UPGRADE)
|
super().__init__(http_client, update_type=SW_UPDATE_TYPE_UPGRADE)
|
||||||
|
|
|
@ -50,7 +50,7 @@ class SystemPeer(base.Resource):
|
||||||
self.updated_at = updated_at
|
self.updated_at = updated_at
|
||||||
|
|
||||||
|
|
||||||
class system_peer_manager(base.ResourceManager):
|
class SystemPeerManager(base.ResourceManager):
|
||||||
resource_class = SystemPeer
|
resource_class = SystemPeer
|
||||||
|
|
||||||
def __init__(self, http_client, subcloud_peer_group_manager):
|
def __init__(self, http_client, subcloud_peer_group_manager):
|
||||||
|
|
|
@ -54,5 +54,5 @@ class ListAlarmSummary(base.DCManagerLister):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.alarm_manager
|
alarm_manager = self.app.client_manager.alarm_manager
|
||||||
return dcmanager_client.alarm_manager.list_alarms()
|
return alarm_manager.list_alarms()
|
||||||
|
|
|
@ -20,8 +20,8 @@ class FwUpdateManagerMixin:
|
||||||
"""This Mixin provides the update manager used for firmware updates."""
|
"""This Mixin provides the update manager used for firmware updates."""
|
||||||
|
|
||||||
def get_sw_update_manager(self):
|
def get_sw_update_manager(self):
|
||||||
dcmanager_client = self.app.client_manager.fw_update_manager
|
fw_update_manager = self.app.client_manager.fw_update_manager
|
||||||
return dcmanager_client.fw_update_manager
|
return fw_update_manager
|
||||||
|
|
||||||
|
|
||||||
class CreateFwUpdateStrategy(
|
class CreateFwUpdateStrategy(
|
||||||
|
|
|
@ -12,8 +12,7 @@ class KubeRootcaUpdateManagerMixin:
|
||||||
"""This Mixin provides the update manager used for kube rootca updates."""
|
"""This Mixin provides the update manager used for kube rootca updates."""
|
||||||
|
|
||||||
def get_sw_update_manager(self):
|
def get_sw_update_manager(self):
|
||||||
dcmanager_client = self.app.client_manager.kube_rootca_update_manager
|
return self.app.client_manager.kube_rootca_update_manager
|
||||||
return dcmanager_client.kube_rootca_update_manager
|
|
||||||
|
|
||||||
|
|
||||||
class CreateKubeRootcaUpdateStrategy(
|
class CreateKubeRootcaUpdateStrategy(
|
||||||
|
|
|
@ -20,8 +20,8 @@ class KubeUpgradeManagerMixin:
|
||||||
"""This Mixin provides the update manager used for kubernetes upgrades."""
|
"""This Mixin provides the update manager used for kubernetes upgrades."""
|
||||||
|
|
||||||
def get_sw_update_manager(self):
|
def get_sw_update_manager(self):
|
||||||
dcmanager_client = self.app.client_manager.kube_upgrade_manager
|
kube_upgrade_manager = self.app.client_manager.kube_upgrade_manager
|
||||||
return dcmanager_client.kube_upgrade_manager
|
return kube_upgrade_manager
|
||||||
|
|
||||||
|
|
||||||
class CreateKubeUpgradeStrategy(
|
class CreateKubeUpgradeStrategy(
|
||||||
|
|
|
@ -95,14 +95,16 @@ class AddPeerGroupAssociation(base.DCManagerShowOne):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.peer_group_association_manager
|
peer_group_association_manager = (
|
||||||
|
self.app.client_manager.peer_group_association_manager
|
||||||
|
)
|
||||||
|
|
||||||
kwargs = {
|
kwargs = {
|
||||||
"peer_group_id": parsed_args.peer_group_id,
|
"peer_group_id": parsed_args.peer_group_id,
|
||||||
"system_peer_id": parsed_args.system_peer_id,
|
"system_peer_id": parsed_args.system_peer_id,
|
||||||
"peer_group_priority": parsed_args.peer_group_priority,
|
"peer_group_priority": parsed_args.peer_group_priority,
|
||||||
}
|
}
|
||||||
return dcmanager_client.peer_group_association_manager.\
|
return peer_group_association_manager.add_peer_group_association(**kwargs)
|
||||||
add_peer_group_association(**kwargs)
|
|
||||||
|
|
||||||
|
|
||||||
class ListPeerGroupAssociation(base.DCManagerLister):
|
class ListPeerGroupAssociation(base.DCManagerLister):
|
||||||
|
@ -116,9 +118,10 @@ class ListPeerGroupAssociation(base.DCManagerLister):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.peer_group_association_manager
|
peer_group_association_manager = (
|
||||||
return dcmanager_client.peer_group_association_manager.\
|
self.app.client_manager.peer_group_association_manager
|
||||||
list_peer_group_associations()
|
)
|
||||||
|
return peer_group_association_manager.list_peer_group_associations()
|
||||||
|
|
||||||
|
|
||||||
class ShowPeerGroupAssociation(base.DCManagerShowOne):
|
class ShowPeerGroupAssociation(base.DCManagerShowOne):
|
||||||
|
@ -138,9 +141,12 @@ class ShowPeerGroupAssociation(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
association_ref = parsed_args.id
|
association_ref = parsed_args.id
|
||||||
dcmanager_client = self.app.client_manager.peer_group_association_manager
|
peer_group_association_manager = (
|
||||||
return dcmanager_client.peer_group_association_manager.\
|
self.app.client_manager.peer_group_association_manager
|
||||||
peer_group_association_detail(association_ref)
|
)
|
||||||
|
return peer_group_association_manager.peer_group_association_detail(
|
||||||
|
association_ref
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class SyncPeerGroupAssociation(base.DCManagerShowOne):
|
class SyncPeerGroupAssociation(base.DCManagerShowOne):
|
||||||
|
@ -158,9 +164,12 @@ class SyncPeerGroupAssociation(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
association_ref = parsed_args.id
|
association_ref = parsed_args.id
|
||||||
dcmanager_client = self.app.client_manager.peer_group_association_manager
|
peer_group_association_manager = (
|
||||||
return dcmanager_client.peer_group_association_manager.\
|
self.app.client_manager.peer_group_association_manager
|
||||||
sync_peer_group_association(association_ref)
|
)
|
||||||
|
return peer_group_association_manager.sync_peer_group_association(
|
||||||
|
association_ref
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class DeletePeerGroupAssociation(command.Command):
|
class DeletePeerGroupAssociation(command.Command):
|
||||||
|
@ -173,12 +182,15 @@ class DeletePeerGroupAssociation(command.Command):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.peer_group_association_manager
|
peer_group_association_manager = (
|
||||||
|
self.app.client_manager.peer_group_association_manager
|
||||||
|
)
|
||||||
try:
|
try:
|
||||||
dcmanager_client.peer_group_association_manager.\
|
peer_group_association_manager.delete_peer_group_association(
|
||||||
delete_peer_group_association(parsed_args.id)
|
parsed_args.id
|
||||||
except Exception as e:
|
)
|
||||||
print(e)
|
except Exception as exc:
|
||||||
|
print(exc)
|
||||||
msg = f"Unable to delete peer group association {parsed_args.id}"
|
msg = f"Unable to delete peer group association {parsed_args.id}"
|
||||||
raise exceptions.DCManagerClientException(msg)
|
raise exceptions.DCManagerClientException(msg)
|
||||||
|
|
||||||
|
@ -203,13 +215,16 @@ class UpdatePeerGroupAssociation(base.DCManagerShowOne):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.peer_group_association_manager
|
peer_group_association_manager = (
|
||||||
|
self.app.client_manager.peer_group_association_manager
|
||||||
|
)
|
||||||
|
|
||||||
kwargs = {"peer_group_priority": parsed_args.peer_group_priority}
|
kwargs = {"peer_group_priority": parsed_args.peer_group_priority}
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.peer_group_association_manager.\
|
return peer_group_association_manager.update_peer_group_association(
|
||||||
update_peer_group_association(parsed_args.id, **kwargs)
|
parsed_args.id, **kwargs
|
||||||
except Exception as e:
|
)
|
||||||
print(e)
|
except Exception as exc:
|
||||||
|
print(exc)
|
||||||
msg = f"Unable to update peer group association {parsed_args.id}"
|
msg = f"Unable to update peer group association {parsed_args.id}"
|
||||||
raise exceptions.DCManagerClientException(msg)
|
raise exceptions.DCManagerClientException(msg)
|
||||||
|
|
|
@ -29,13 +29,16 @@ class AbortPhasedSubcloudDeploy(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.\
|
phased_subcloud_deploy_manager = (
|
||||||
phased_subcloud_deploy_manager.phased_subcloud_deploy_manager
|
self.app.client_manager.phased_subcloud_deploy_manager
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_deploy_abort(subcloud_ref=subcloud_ref)
|
return phased_subcloud_deploy_manager.subcloud_deploy_abort(
|
||||||
except Exception as e:
|
subcloud_ref=subcloud_ref
|
||||||
print(e)
|
)
|
||||||
|
except Exception as exc:
|
||||||
|
print(exc)
|
||||||
error_msg = f"Unable to abort subcloud deploy {subcloud_ref}"
|
error_msg = f"Unable to abort subcloud deploy {subcloud_ref}"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
@ -106,8 +109,9 @@ class PhasedSubcloudDeployResume(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.phased_subcloud_deploy_manager.\
|
phased_subcloud_deploy_manager = (
|
||||||
phased_subcloud_deploy_manager
|
self.app.client_manager.phased_subcloud_deploy_manager
|
||||||
|
)
|
||||||
files = {}
|
files = {}
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
|
@ -163,7 +167,7 @@ class PhasedSubcloudDeployResume(base.DCManagerShowOne):
|
||||||
if parsed_args.release:
|
if parsed_args.release:
|
||||||
data["release"] = parsed_args.release
|
data["release"] = parsed_args.release
|
||||||
|
|
||||||
return dcmanager_client.subcloud_deploy_resume(
|
return phased_subcloud_deploy_manager.subcloud_deploy_resume(
|
||||||
subcloud_ref=subcloud_ref, files=files, data=data
|
subcloud_ref=subcloud_ref, files=files, data=data
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -226,8 +230,9 @@ class CreatePhasedSubcloudDeploy(base.DCManagerShowOne):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.phased_subcloud_deploy_manager.\
|
phased_subcloud_deploy_manager = (
|
||||||
phased_subcloud_deploy_manager
|
self.app.client_manager.phased_subcloud_deploy_manager
|
||||||
|
)
|
||||||
files = {}
|
files = {}
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
|
@ -273,7 +278,9 @@ class CreatePhasedSubcloudDeploy(base.DCManagerShowOne):
|
||||||
if parsed_args.release:
|
if parsed_args.release:
|
||||||
data["release"] = parsed_args.release
|
data["release"] = parsed_args.release
|
||||||
|
|
||||||
return dcmanager_client.subcloud_deploy_create(files=files, data=data)
|
return phased_subcloud_deploy_manager.subcloud_deploy_create(
|
||||||
|
files=files, data=data
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class InstallPhasedSubcloudDeploy(base.DCManagerShowOne):
|
class InstallPhasedSubcloudDeploy(base.DCManagerShowOne):
|
||||||
|
@ -322,8 +329,9 @@ class InstallPhasedSubcloudDeploy(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.phased_subcloud_deploy_manager.\
|
phased_subcloud_deploy_manager = (
|
||||||
phased_subcloud_deploy_manager
|
self.app.client_manager.phased_subcloud_deploy_manager
|
||||||
|
)
|
||||||
files = {}
|
files = {}
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
|
@ -355,11 +363,11 @@ class InstallPhasedSubcloudDeploy(base.DCManagerShowOne):
|
||||||
data["release"] = parsed_args.release
|
data["release"] = parsed_args.release
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_deploy_install(
|
return phased_subcloud_deploy_manager.subcloud_deploy_install(
|
||||||
subcloud_ref=subcloud_ref, files=files, data=data
|
subcloud_ref=subcloud_ref, files=files, data=data
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = f"Unable to install subcloud {subcloud_ref}"
|
error_msg = f"Unable to install subcloud {subcloud_ref}"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
@ -400,8 +408,9 @@ class BootstrapPhasedSubcloudDeploy(base.DCManagerShowOne):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.phased_subcloud_deploy_manager.\
|
phased_subcloud_deploy_manager = (
|
||||||
phased_subcloud_deploy_manager
|
self.app.client_manager.phased_subcloud_deploy_manager
|
||||||
|
)
|
||||||
files = {}
|
files = {}
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
|
@ -429,7 +438,7 @@ class BootstrapPhasedSubcloudDeploy(base.DCManagerShowOne):
|
||||||
|
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
|
|
||||||
return dcmanager_client.subcloud_deploy_bootstrap(
|
return phased_subcloud_deploy_manager.subcloud_deploy_bootstrap(
|
||||||
subcloud_ref, files=files, data=data
|
subcloud_ref, files=files, data=data
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -463,8 +472,9 @@ class ConfigPhasedSubcloudDeploy(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.phased_subcloud_deploy_manager.\
|
phased_subcloud_deploy_manager = (
|
||||||
phased_subcloud_deploy_manager
|
self.app.client_manager.phased_subcloud_deploy_manager
|
||||||
|
)
|
||||||
files = {}
|
files = {}
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
|
@ -487,11 +497,11 @@ class ConfigPhasedSubcloudDeploy(base.DCManagerShowOne):
|
||||||
data["sysadmin_password"] = base64.b64encode(password.encode("utf-8"))
|
data["sysadmin_password"] = base64.b64encode(password.encode("utf-8"))
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_deploy_config(
|
return phased_subcloud_deploy_manager.subcloud_deploy_config(
|
||||||
subcloud_ref=subcloud_ref, files=files, data=data
|
subcloud_ref=subcloud_ref, files=files, data=data
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = f"Unable to configure subcloud {subcloud_ref}"
|
error_msg = f"Unable to configure subcloud {subcloud_ref}"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
@ -513,13 +523,16 @@ class CompletePhasedSubcloudDeploy(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.phased_subcloud_deploy_manager.\
|
phased_subcloud_deploy_manager = (
|
||||||
phased_subcloud_deploy_manager
|
self.app.client_manager.phased_subcloud_deploy_manager
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_deploy_complete(subcloud_ref)
|
return phased_subcloud_deploy_manager.subcloud_deploy_complete(
|
||||||
except Exception as e:
|
subcloud_ref
|
||||||
print(e)
|
)
|
||||||
|
except Exception as exc:
|
||||||
|
print(exc)
|
||||||
error_msg = (
|
error_msg = (
|
||||||
f"Unable to complete the deployment of subcloud {subcloud_ref}"
|
f"Unable to complete the deployment of subcloud {subcloud_ref}"
|
||||||
)
|
)
|
||||||
|
|
|
@ -9,7 +9,8 @@ import os
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
|
||||||
from dcmanagerclient import exceptions, utils
|
from dcmanagerclient import exceptions
|
||||||
|
from dcmanagerclient import utils
|
||||||
from dcmanagerclient.commands.v1 import base
|
from dcmanagerclient.commands.v1 import base
|
||||||
|
|
||||||
|
|
||||||
|
@ -131,7 +132,7 @@ class CreateSubcloudBackup(base.DCManagerShow):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.subcloud_backup_manager
|
subcloud_backup_manager = self.app.client_manager.subcloud_backup_manager
|
||||||
data = {}
|
data = {}
|
||||||
files = {}
|
files = {}
|
||||||
|
|
||||||
|
@ -191,12 +192,12 @@ class CreateSubcloudBackup(base.DCManagerShow):
|
||||||
files["backup_values"] = parsed_args.backup_values
|
files["backup_values"] = parsed_args.backup_values
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_backup_manager.backup_subcloud_create(
|
return subcloud_backup_manager.backup_subcloud_create(
|
||||||
data=data, files=files
|
data=data, files=files
|
||||||
)
|
)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = "Unable to create subcloud backup"
|
error_msg = "Unable to create subcloud backup"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
@ -245,7 +246,7 @@ class DeleteSubcloudBackup(command.Command):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.subcloud_backup_manager
|
subcloud_backup_manager = self.app.client_manager.subcloud_backup_manager
|
||||||
release_version = parsed_args.release
|
release_version = parsed_args.release
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
data = {}
|
data = {}
|
||||||
|
@ -285,12 +286,12 @@ class DeleteSubcloudBackup(command.Command):
|
||||||
).decode("utf-8")
|
).decode("utf-8")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_backup_manager.backup_subcloud_delete(
|
return subcloud_backup_manager.backup_subcloud_delete(
|
||||||
subcloud_ref=subcloud_ref, release_version=release_version, data=data
|
subcloud_ref=subcloud_ref, release_version=release_version, data=data
|
||||||
)
|
)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = "Unable to delete backup"
|
error_msg = "Unable to delete backup"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
@ -372,7 +373,7 @@ class RestoreSubcloudBackup(base.DCManagerShow):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
|
|
||||||
dcmanager_client = self.app.client_manager.subcloud_backup_manager
|
subcloud_backup_manager = self.app.client_manager.subcloud_backup_manager
|
||||||
data = {}
|
data = {}
|
||||||
files = {}
|
files = {}
|
||||||
|
|
||||||
|
@ -444,11 +445,11 @@ class RestoreSubcloudBackup(base.DCManagerShow):
|
||||||
files["restore_values"] = parsed_args.restore_values
|
files["restore_values"] = parsed_args.restore_values
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_backup_manager.backup_subcloud_restore(
|
return subcloud_backup_manager.backup_subcloud_restore(
|
||||||
data=data, files=files
|
data=data, files=files
|
||||||
)
|
)
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = "Unable to restore subcloud backup"
|
error_msg = "Unable to restore subcloud backup"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
|
@ -109,7 +109,7 @@ class SubcloudDeployUpload(base.DCManagerShowOne):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.subcloud_deploy_manager
|
subcloud_deploy_manager = self.app.client_manager.subcloud_deploy_manager
|
||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
files = {}
|
files = {}
|
||||||
|
@ -131,11 +131,11 @@ class SubcloudDeployUpload(base.DCManagerShowOne):
|
||||||
data["release"] = parsed_args.release
|
data["release"] = parsed_args.release
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_deploy_manager.subcloud_deploy_upload(
|
return subcloud_deploy_manager.subcloud_deploy_upload(
|
||||||
files=files, data=data
|
files=files, data=data
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = "Unable to upload subcloud deploy files"
|
error_msg = "Unable to upload subcloud deploy files"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
@ -159,10 +159,8 @@ class SubcloudDeployShow(base.DCManagerShowOne):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.subcloud_deploy_manager
|
subcloud_deploy_manager = self.app.client_manager.subcloud_deploy_manager
|
||||||
return dcmanager_client.subcloud_deploy_manager.subcloud_deploy_show(
|
return subcloud_deploy_manager.subcloud_deploy_show(parsed_args.release)
|
||||||
parsed_args.release
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class DeprecatedSubcloudDeployShow(SubcloudDeployShow):
|
class DeprecatedSubcloudDeployShow(SubcloudDeployShow):
|
||||||
|
@ -214,7 +212,7 @@ class SubcloudDeployDelete(command.Command):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.subcloud_deploy_manager
|
subcloud_deploy_manager = self.app.client_manager.subcloud_deploy_manager
|
||||||
release = parsed_args.release
|
release = parsed_args.release
|
||||||
data = {}
|
data = {}
|
||||||
if parsed_args.prestage_images is not None:
|
if parsed_args.prestage_images is not None:
|
||||||
|
@ -223,10 +221,8 @@ class SubcloudDeployDelete(command.Command):
|
||||||
data["deployment_files"] = str(parsed_args.deployment_files)
|
data["deployment_files"] = str(parsed_args.deployment_files)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
dcmanager_client.subcloud_deploy_manager.subcloud_deploy_delete(
|
subcloud_deploy_manager.subcloud_deploy_delete(release, data=data)
|
||||||
release, data=data
|
except Exception as exc:
|
||||||
)
|
print(exc)
|
||||||
except Exception as e:
|
|
||||||
print(e)
|
|
||||||
error_msg = "Unable to delete subcloud deploy files"
|
error_msg = "Unable to delete subcloud deploy files"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
|
@ -109,7 +109,7 @@ class AddSubcloudGroup(base.DCManagerShowOne):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.subcloud_group_manager
|
subcloud_group_manager = self.app.client_manager.subcloud_group_manager
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
|
|
||||||
if parsed_args.name is not None:
|
if parsed_args.name is not None:
|
||||||
|
@ -123,7 +123,7 @@ class AddSubcloudGroup(base.DCManagerShowOne):
|
||||||
|
|
||||||
if parsed_args.max_parallel_subclouds is not None:
|
if parsed_args.max_parallel_subclouds is not None:
|
||||||
kwargs["max_parallel_subclouds"] = parsed_args.max_parallel_subclouds
|
kwargs["max_parallel_subclouds"] = parsed_args.max_parallel_subclouds
|
||||||
return dcmanager_client.subcloud_group_manager.add_subcloud_group(**kwargs)
|
return subcloud_group_manager.add_subcloud_group(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
class ListSubcloudGroup(base.DCManagerLister):
|
class ListSubcloudGroup(base.DCManagerLister):
|
||||||
|
@ -137,8 +137,8 @@ class ListSubcloudGroup(base.DCManagerLister):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.subcloud_group_manager
|
subcloud_group_manager = self.app.client_manager.subcloud_group_manager
|
||||||
return dcmanager_client.subcloud_group_manager.list_subcloud_groups()
|
return subcloud_group_manager.list_subcloud_groups()
|
||||||
|
|
||||||
|
|
||||||
class ListSubcloudGroupSubclouds(base.DCManagerLister):
|
class ListSubcloudGroupSubclouds(base.DCManagerLister):
|
||||||
|
@ -157,11 +157,9 @@ class ListSubcloudGroupSubclouds(base.DCManagerLister):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_group_ref = parsed_args.group
|
subcloud_group_ref = parsed_args.group
|
||||||
dcmanager_client = self.app.client_manager.subcloud_group_manager
|
subcloud_group_manager = self.app.client_manager.subcloud_group_manager
|
||||||
result = (
|
result = subcloud_group_manager.subcloud_group_list_subclouds(
|
||||||
dcmanager_client.subcloud_group_manager.subcloud_group_list_subclouds(
|
subcloud_group_ref
|
||||||
subcloud_group_ref
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
update_fields_values(result)
|
update_fields_values(result)
|
||||||
return result
|
return result
|
||||||
|
@ -184,10 +182,8 @@ class ShowSubcloudGroup(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_group_ref = parsed_args.group
|
subcloud_group_ref = parsed_args.group
|
||||||
dcmanager_client = self.app.client_manager.subcloud_group_manager
|
subcloud_group_manager = self.app.client_manager.subcloud_group_manager
|
||||||
return dcmanager_client.subcloud_group_manager.subcloud_group_detail(
|
return subcloud_group_manager.subcloud_group_detail(subcloud_group_ref)
|
||||||
subcloud_group_ref
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class DeleteSubcloudGroup(command.Command):
|
class DeleteSubcloudGroup(command.Command):
|
||||||
|
@ -203,13 +199,11 @@ class DeleteSubcloudGroup(command.Command):
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
subcloud_group_ref = parsed_args.group
|
subcloud_group_ref = parsed_args.group
|
||||||
dcmanager_client = self.app.client_manager.subcloud_group_manager
|
subcloud_group_manager = self.app.client_manager.subcloud_group_manager
|
||||||
try:
|
try:
|
||||||
dcmanager_client.subcloud_group_manager.delete_subcloud_group(
|
subcloud_group_manager.delete_subcloud_group(subcloud_group_ref)
|
||||||
subcloud_group_ref
|
except Exception as exc:
|
||||||
)
|
print(exc)
|
||||||
except Exception as e:
|
|
||||||
print(e)
|
|
||||||
msg = f"Unable to delete subcloud group {subcloud_group_ref}"
|
msg = f"Unable to delete subcloud group {subcloud_group_ref}"
|
||||||
raise exceptions.DCManagerClientException(msg)
|
raise exceptions.DCManagerClientException(msg)
|
||||||
|
|
||||||
|
@ -250,7 +244,7 @@ class UpdateSubcloudGroup(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_group_ref = parsed_args.group
|
subcloud_group_ref = parsed_args.group
|
||||||
dcmanager_client = self.app.client_manager.subcloud_group_manager
|
subcloud_group_manager = self.app.client_manager.subcloud_group_manager
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
if parsed_args.name:
|
if parsed_args.name:
|
||||||
kwargs["name"] = parsed_args.name
|
kwargs["name"] = parsed_args.name
|
||||||
|
@ -265,10 +259,10 @@ class UpdateSubcloudGroup(base.DCManagerShowOne):
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_group_manager.update_subcloud_group(
|
return subcloud_group_manager.update_subcloud_group(
|
||||||
subcloud_group_ref, **kwargs
|
subcloud_group_ref, **kwargs
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
msg = f"Unable to update subcloud group {subcloud_group_ref}"
|
msg = f"Unable to update subcloud group {subcloud_group_ref}"
|
||||||
raise exceptions.DCManagerClientException(msg)
|
raise exceptions.DCManagerClientException(msg)
|
||||||
|
|
|
@ -17,10 +17,11 @@
|
||||||
import base64
|
import base64
|
||||||
import os
|
import os
|
||||||
|
|
||||||
import six
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
import six
|
||||||
|
|
||||||
from dcmanagerclient import exceptions, utils
|
from dcmanagerclient import exceptions
|
||||||
|
from dcmanagerclient import utils
|
||||||
from dcmanagerclient.commands.v1 import base
|
from dcmanagerclient.commands.v1 import base
|
||||||
|
|
||||||
SET_FIELD_VALUE_DICT = {"region_name": None}
|
SET_FIELD_VALUE_DICT = {"region_name": None}
|
||||||
|
@ -263,7 +264,7 @@ class AddSubcloud(base.DCManagerShowOne):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.subcloud_manager
|
subcloud_manager = self.app.client_manager.subcloud_manager
|
||||||
files = {}
|
files = {}
|
||||||
data = {}
|
data = {}
|
||||||
data["bootstrap-address"] = parsed_args.bootstrap_address
|
data["bootstrap-address"] = parsed_args.bootstrap_address
|
||||||
|
@ -334,9 +335,7 @@ class AddSubcloud(base.DCManagerShowOne):
|
||||||
--migrate option."
|
--migrate option."
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
result = dcmanager_client.subcloud_manager.add_subcloud(
|
result = subcloud_manager.add_subcloud(files=files, data=data)
|
||||||
files=files, data=data
|
|
||||||
)
|
|
||||||
update_fields_values(result)
|
update_fields_values(result)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@ -374,8 +373,8 @@ class ListSubcloud(base.DCManagerLister):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.subcloud_manager
|
subcloud_manager = self.app.client_manager.subcloud_manager
|
||||||
subclouds = dcmanager_client.subcloud_manager.list_subclouds()
|
subclouds = subcloud_manager.list_subclouds()
|
||||||
|
|
||||||
# for '--all' parameter, show all subclouds.
|
# for '--all' parameter, show all subclouds.
|
||||||
# for no parameter, hidden all 'secondary/secondary-failed'
|
# for no parameter, hidden all 'secondary/secondary-failed'
|
||||||
|
@ -414,12 +413,10 @@ class ShowSubcloud(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.subcloud_manager
|
subcloud_manager = self.app.client_manager.subcloud_manager
|
||||||
if parsed_args.detail:
|
if parsed_args.detail:
|
||||||
return dcmanager_client.subcloud_manager.subcloud_additional_details(
|
return subcloud_manager.subcloud_additional_details(subcloud_ref)
|
||||||
subcloud_ref
|
return subcloud_manager.subcloud_detail(subcloud_ref)
|
||||||
)
|
|
||||||
return dcmanager_client.subcloud_manager.subcloud_detail(subcloud_ref)
|
|
||||||
|
|
||||||
|
|
||||||
class ShowSubcloudError(command.Command):
|
class ShowSubcloudError(command.Command):
|
||||||
|
@ -435,8 +432,8 @@ class ShowSubcloudError(command.Command):
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.subcloud_manager
|
subcloud_manager = self.app.client_manager.subcloud_manager
|
||||||
ret = dcmanager_client.subcloud_manager.subcloud_detail(subcloud_ref)
|
ret = subcloud_manager.subcloud_detail(subcloud_ref)
|
||||||
data = ret[0].error_description
|
data = ret[0].error_description
|
||||||
print("".join(data))
|
print("".join(data))
|
||||||
|
|
||||||
|
@ -452,11 +449,11 @@ class DeleteSubcloud(command.Command):
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.subcloud_manager
|
subcloud_manager = self.app.client_manager.subcloud_manager
|
||||||
try:
|
try:
|
||||||
dcmanager_client.subcloud_manager.delete_subcloud(subcloud_ref)
|
subcloud_manager.delete_subcloud(subcloud_ref)
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = f"Unable to delete subcloud {subcloud_ref}"
|
error_msg = f"Unable to delete subcloud {subcloud_ref}"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
@ -485,7 +482,7 @@ class UnmanageSubcloud(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.subcloud_manager
|
subcloud_manager = self.app.client_manager.subcloud_manager
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
kwargs["management-state"] = "unmanaged"
|
kwargs["management-state"] = "unmanaged"
|
||||||
|
|
||||||
|
@ -493,13 +490,13 @@ class UnmanageSubcloud(base.DCManagerShowOne):
|
||||||
kwargs["migrate"] = "true"
|
kwargs["migrate"] = "true"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result = dcmanager_client.subcloud_manager.update_subcloud(
|
result = subcloud_manager.update_subcloud(
|
||||||
subcloud_ref, files=None, data=kwargs
|
subcloud_ref, files=None, data=kwargs
|
||||||
)
|
)
|
||||||
update_fields_values(result)
|
update_fields_values(result)
|
||||||
return result
|
return result
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = f"Unable to unmanage subcloud {subcloud_ref}"
|
error_msg = f"Unable to unmanage subcloud {subcloud_ref}"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
@ -526,20 +523,20 @@ class ManageSubcloud(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.subcloud_manager
|
subcloud_manager = self.app.client_manager.subcloud_manager
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
kwargs["management-state"] = "managed"
|
kwargs["management-state"] = "managed"
|
||||||
if parsed_args.force:
|
if parsed_args.force:
|
||||||
kwargs["force"] = "true"
|
kwargs["force"] = "true"
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result = dcmanager_client.subcloud_manager.update_subcloud(
|
result = subcloud_manager.update_subcloud(
|
||||||
subcloud_ref, files=None, data=kwargs
|
subcloud_ref, files=None, data=kwargs
|
||||||
)
|
)
|
||||||
update_fields_values(result)
|
update_fields_values(result)
|
||||||
return result
|
return result
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = f"Unable to manage subcloud {subcloud_ref}"
|
error_msg = f"Unable to manage subcloud {subcloud_ref}"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
@ -631,7 +628,7 @@ class UpdateSubcloud(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.subcloud_manager
|
subcloud_manager = self.app.client_manager.subcloud_manager
|
||||||
files = {}
|
files = {}
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
|
@ -724,13 +721,13 @@ class UpdateSubcloud(base.DCManagerShowOne):
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result = dcmanager_client.subcloud_manager.update_subcloud(
|
result = subcloud_manager.update_subcloud(
|
||||||
subcloud_ref, files=files, data=data
|
subcloud_ref, files=files, data=data
|
||||||
)
|
)
|
||||||
update_fields_values(result)
|
update_fields_values(result)
|
||||||
return result
|
return result
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = f"Unable to update subcloud {subcloud_ref}"
|
error_msg = f"Unable to update subcloud {subcloud_ref}"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
@ -823,7 +820,7 @@ class RedeploySubcloud(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.subcloud_manager
|
subcloud_manager = self.app.client_manager.subcloud_manager
|
||||||
files = {}
|
files = {}
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
|
@ -886,11 +883,11 @@ class RedeploySubcloud(base.DCManagerShowOne):
|
||||||
)
|
)
|
||||||
if confirm == "redeploy":
|
if confirm == "redeploy":
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_manager.redeploy_subcloud(
|
return subcloud_manager.redeploy_subcloud(
|
||||||
subcloud_ref=subcloud_ref, files=files, data=data
|
subcloud_ref=subcloud_ref, files=files, data=data
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = f"Unable to redeploy subcloud {subcloud_ref}"
|
error_msg = f"Unable to redeploy subcloud {subcloud_ref}"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
else:
|
else:
|
||||||
|
@ -980,7 +977,7 @@ class PrestageSubcloud(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.subcloud_manager
|
subcloud_manager = self.app.client_manager.subcloud_manager
|
||||||
data = {}
|
data = {}
|
||||||
|
|
||||||
if parsed_args.force:
|
if parsed_args.force:
|
||||||
|
@ -1000,13 +997,13 @@ class PrestageSubcloud(base.DCManagerShowOne):
|
||||||
data["release"] = parsed_args.release
|
data["release"] = parsed_args.release
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result = dcmanager_client.subcloud_manager.prestage_subcloud(
|
result = subcloud_manager.prestage_subcloud(
|
||||||
subcloud_ref=subcloud_ref, data=data
|
subcloud_ref=subcloud_ref, data=data
|
||||||
)
|
)
|
||||||
update_fields_values(result)
|
update_fields_values(result)
|
||||||
return result
|
return result
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = f"Unable to prestage subcloud {subcloud_ref}"
|
error_msg = f"Unable to prestage subcloud {subcloud_ref}"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
|
@ -6,7 +6,8 @@ import base64
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
|
||||||
from dcmanagerclient import exceptions, utils
|
from dcmanagerclient import exceptions
|
||||||
|
from dcmanagerclient import utils
|
||||||
from dcmanagerclient.commands.v1 import base
|
from dcmanagerclient.commands.v1 import base
|
||||||
|
|
||||||
|
|
||||||
|
@ -65,7 +66,9 @@ class MigrateSubcloudPeerGroup(base.DCManagerLister):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_peer_group_ref = parsed_args.group
|
subcloud_peer_group_ref = parsed_args.group
|
||||||
dcmanager_client = self.app.client_manager.subcloud_peer_group_manager
|
subcloud_peer_group_manager = (
|
||||||
|
self.app.client_manager.subcloud_peer_group_manager
|
||||||
|
)
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
|
|
||||||
if parsed_args.sysadmin_password is not None:
|
if parsed_args.sysadmin_password is not None:
|
||||||
|
@ -79,10 +82,11 @@ class MigrateSubcloudPeerGroup(base.DCManagerLister):
|
||||||
).decode("utf-8")
|
).decode("utf-8")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_peer_group_manager.\
|
return subcloud_peer_group_manager.migrate_subcloud_peer_group(
|
||||||
migrate_subcloud_peer_group(subcloud_peer_group_ref, **kwargs)
|
subcloud_peer_group_ref, **kwargs
|
||||||
except Exception as e:
|
)
|
||||||
print(e)
|
except Exception as exc:
|
||||||
|
print(exc)
|
||||||
msg = f"Unable to migrate subcloud peer group {subcloud_peer_group_ref}"
|
msg = f"Unable to migrate subcloud peer group {subcloud_peer_group_ref}"
|
||||||
raise exceptions.DCManagerClientException(msg)
|
raise exceptions.DCManagerClientException(msg)
|
||||||
|
|
||||||
|
@ -120,7 +124,9 @@ class AddSubcloudPeerGroup(base.DCManagerShowOne):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.subcloud_peer_group_manager
|
subcloud_peer_group_manager = (
|
||||||
|
self.app.client_manager.subcloud_peer_group_manager
|
||||||
|
)
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
|
|
||||||
kwargs["peer-group-name"] = parsed_args.peer_group_name
|
kwargs["peer-group-name"] = parsed_args.peer_group_name
|
||||||
|
@ -131,9 +137,7 @@ class AddSubcloudPeerGroup(base.DCManagerShowOne):
|
||||||
if parsed_args.max_subcloud_rehoming is not None:
|
if parsed_args.max_subcloud_rehoming is not None:
|
||||||
kwargs["max-subcloud-rehoming"] = parsed_args.max_subcloud_rehoming
|
kwargs["max-subcloud-rehoming"] = parsed_args.max_subcloud_rehoming
|
||||||
|
|
||||||
return dcmanager_client.subcloud_peer_group_manager.add_subcloud_peer_group(
|
return subcloud_peer_group_manager.add_subcloud_peer_group(**kwargs)
|
||||||
**kwargs
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class DeleteSubcloudPeerGroup(command.Command):
|
class DeleteSubcloudPeerGroup(command.Command):
|
||||||
|
@ -149,13 +153,15 @@ class DeleteSubcloudPeerGroup(command.Command):
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
subcloud_peer_group_ref = parsed_args.group
|
subcloud_peer_group_ref = parsed_args.group
|
||||||
dcmanager_client = self.app.client_manager.subcloud_peer_group_manager
|
subcloud_peer_group_manager = (
|
||||||
|
self.app.client_manager.subcloud_peer_group_manager
|
||||||
|
)
|
||||||
try:
|
try:
|
||||||
dcmanager_client.subcloud_peer_group_manager.delete_subcloud_peer_group(
|
subcloud_peer_group_manager.delete_subcloud_peer_group(
|
||||||
subcloud_peer_group_ref
|
subcloud_peer_group_ref
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
msg = f"Unable to delete subcloud peer group {subcloud_peer_group_ref}"
|
msg = f"Unable to delete subcloud peer group {subcloud_peer_group_ref}"
|
||||||
raise exceptions.DCManagerClientException(msg)
|
raise exceptions.DCManagerClientException(msg)
|
||||||
|
|
||||||
|
@ -177,11 +183,11 @@ class ShowSubcloudPeerGroup(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_peer_group_ref = parsed_args.group
|
subcloud_peer_group_ref = parsed_args.group
|
||||||
dcmanager_client = self.app.client_manager.subcloud_peer_group_manager
|
subcloud_peer_group_manager = (
|
||||||
return (
|
self.app.client_manager.subcloud_peer_group_manager
|
||||||
dcmanager_client.subcloud_peer_group_manager.subcloud_peer_group_detail(
|
)
|
||||||
subcloud_peer_group_ref
|
return subcloud_peer_group_manager.subcloud_peer_group_detail(
|
||||||
)
|
subcloud_peer_group_ref
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -196,10 +202,10 @@ class ListSubcloudPeerGroup(base.DCManagerLister):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.subcloud_peer_group_manager
|
subcloud_peer_group_manager = (
|
||||||
return (
|
self.app.client_manager.subcloud_peer_group_manager
|
||||||
dcmanager_client.subcloud_peer_group_manager.list_subcloud_peer_groups()
|
|
||||||
)
|
)
|
||||||
|
return subcloud_peer_group_manager.list_subcloud_peer_groups()
|
||||||
|
|
||||||
|
|
||||||
class ListSubcloudPeerGroupSubclouds(base.DCManagerLister):
|
class ListSubcloudPeerGroupSubclouds(base.DCManagerLister):
|
||||||
|
@ -219,10 +225,12 @@ class ListSubcloudPeerGroupSubclouds(base.DCManagerLister):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_peer_group_ref = parsed_args.group
|
subcloud_peer_group_ref = parsed_args.group
|
||||||
client_manager = self.app.client_manager
|
subcloud_peer_group_manager = (
|
||||||
dcmanager_client = client_manager.subcloud_peer_group_manager
|
self.app.client_manager.subcloud_peer_group_manager
|
||||||
return dcmanager_client.subcloud_peer_group_manager.\
|
)
|
||||||
subcloud_peer_group_list_subclouds(subcloud_peer_group_ref)
|
return subcloud_peer_group_manager.subcloud_peer_group_list_subclouds(
|
||||||
|
subcloud_peer_group_ref
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class UpdateSubcloudPeerGroup(base.DCManagerShowOne):
|
class UpdateSubcloudPeerGroup(base.DCManagerShowOne):
|
||||||
|
@ -261,7 +269,9 @@ class UpdateSubcloudPeerGroup(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_peer_group_ref = parsed_args.group
|
subcloud_peer_group_ref = parsed_args.group
|
||||||
dcmanager_client = self.app.client_manager.subcloud_peer_group_manager
|
subcloud_peer_group_manager = (
|
||||||
|
self.app.client_manager.subcloud_peer_group_manager
|
||||||
|
)
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
|
|
||||||
if parsed_args.peer_group_name is not None:
|
if parsed_args.peer_group_name is not None:
|
||||||
|
@ -278,10 +288,11 @@ class UpdateSubcloudPeerGroup(base.DCManagerShowOne):
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.subcloud_peer_group_manager.\
|
return subcloud_peer_group_manager.update_subcloud_peer_group(
|
||||||
update_subcloud_peer_group(subcloud_peer_group_ref, **kwargs)
|
subcloud_peer_group_ref, **kwargs
|
||||||
except Exception as e:
|
)
|
||||||
print(e)
|
except Exception as exc:
|
||||||
|
print(exc)
|
||||||
msg = f"Unable to update subcloud peer group {subcloud_peer_group_ref}"
|
msg = f"Unable to update subcloud peer group {subcloud_peer_group_ref}"
|
||||||
raise exceptions.DCManagerClientException(msg)
|
raise exceptions.DCManagerClientException(msg)
|
||||||
|
|
||||||
|
@ -334,9 +345,9 @@ class StatusSubcloudPeerGroup(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_peer_group_ref = parsed_args.group
|
subcloud_peer_group_ref = parsed_args.group
|
||||||
dcmanager_client = self.app.client_manager.subcloud_peer_group_manager
|
subcloud_peer_group_manager = (
|
||||||
return (
|
self.app.client_manager.subcloud_peer_group_manager
|
||||||
dcmanager_client.subcloud_peer_group_manager.subcloud_peer_group_status(
|
)
|
||||||
subcloud_peer_group_ref
|
return subcloud_peer_group_manager.subcloud_peer_group_status(
|
||||||
)
|
subcloud_peer_group_ref
|
||||||
)
|
)
|
||||||
|
|
|
@ -11,8 +11,8 @@ class SwDeployManagerMixin:
|
||||||
"""This Mixin provides the manager used for software deploy releases."""
|
"""This Mixin provides the manager used for software deploy releases."""
|
||||||
|
|
||||||
def get_sw_update_manager(self):
|
def get_sw_update_manager(self):
|
||||||
dcmanager_client = self.app.client_manager.sw_deploy_manager
|
sw_deploy_manager = self.app.client_manager.sw_deploy_manager
|
||||||
return dcmanager_client.sw_deploy_manager
|
return sw_deploy_manager
|
||||||
|
|
||||||
def custom_format_function(self, sw_update_strategy=None):
|
def custom_format_function(self, sw_update_strategy=None):
|
||||||
original_fmt_func = super()._get_format_function()
|
original_fmt_func = super()._get_format_function()
|
||||||
|
@ -26,14 +26,14 @@ class SwDeployManagerMixin:
|
||||||
|
|
||||||
# Insert the 'release_id' field after the 'stop on failure',
|
# Insert the 'release_id' field after the 'stop on failure',
|
||||||
columns = (
|
columns = (
|
||||||
columns[:failure_status_index + 1]
|
columns[: failure_status_index + 1]
|
||||||
+ ("release_id",)
|
+ ("release_id",)
|
||||||
+ columns[failure_status_index + 1:]
|
+ columns[failure_status_index + 1 :]
|
||||||
)
|
)
|
||||||
data = (
|
data = (
|
||||||
data[:failure_status_index + 1]
|
data[: failure_status_index + 1]
|
||||||
+ (release_id,)
|
+ (release_id,)
|
||||||
+ data[failure_status_index + 1:]
|
+ data[failure_status_index + 1 :]
|
||||||
)
|
)
|
||||||
return columns, data
|
return columns, data
|
||||||
|
|
||||||
|
|
|
@ -20,8 +20,8 @@ class SwPatchManagerMixin:
|
||||||
"""This Mixin provides the update manager used for sw patch."""
|
"""This Mixin provides the update manager used for sw patch."""
|
||||||
|
|
||||||
def get_sw_update_manager(self):
|
def get_sw_update_manager(self):
|
||||||
dcmanager_client = self.app.client_manager.sw_patch_manager
|
sw_patch_manager = self.app.client_manager.sw_patch_manager
|
||||||
return dcmanager_client.sw_patch_manager
|
return sw_patch_manager
|
||||||
|
|
||||||
def custom_format_function(self, sw_update_strategy=None):
|
def custom_format_function(self, sw_update_strategy=None):
|
||||||
original_fmt_func = super()._get_format_function()
|
original_fmt_func = super()._get_format_function()
|
||||||
|
|
|
@ -23,8 +23,8 @@ class SwPrestageManagerMixin:
|
||||||
"""This Mixin provides the update manager used for sw prestage."""
|
"""This Mixin provides the update manager used for sw prestage."""
|
||||||
|
|
||||||
def get_sw_update_manager(self):
|
def get_sw_update_manager(self):
|
||||||
dcmanager_client = self.app.client_manager.sw_prestage_manager
|
sw_prestage_manager = self.app.client_manager.sw_prestage_manager
|
||||||
return dcmanager_client.sw_prestage_manager
|
return sw_prestage_manager
|
||||||
|
|
||||||
def custom_format_function(self, sw_update_strategy=None):
|
def custom_format_function(self, sw_update_strategy=None):
|
||||||
original_fmt_func = super()._get_format_function()
|
original_fmt_func = super()._get_format_function()
|
||||||
|
|
|
@ -284,8 +284,8 @@ class ListSwUpdateStrategyStep(base.DCManagerLister):
|
||||||
"""List strategy steps."""
|
"""List strategy steps."""
|
||||||
|
|
||||||
def get_strategy_step_manager(self):
|
def get_strategy_step_manager(self):
|
||||||
dcmanager_client = self.app.client_manager.strategy_step_manager
|
strategy_step_manager = self.app.client_manager.strategy_step_manager
|
||||||
return dcmanager_client.strategy_step_manager
|
return strategy_step_manager
|
||||||
|
|
||||||
def _get_format_function(self):
|
def _get_format_function(self):
|
||||||
return strategy_step_format
|
return strategy_step_format
|
||||||
|
@ -298,8 +298,8 @@ class ShowSwUpdateStrategyStep(base.DCManagerShowOne):
|
||||||
"""Show the details of a strategy step."""
|
"""Show the details of a strategy step."""
|
||||||
|
|
||||||
def get_strategy_step_manager(self):
|
def get_strategy_step_manager(self):
|
||||||
dcmanager_client = self.app.client_manager.strategy_step_manager
|
strategy_step_manager = self.app.client_manager.strategy_step_manager
|
||||||
return dcmanager_client.strategy_step_manager
|
return strategy_step_manager
|
||||||
|
|
||||||
def _get_format_function(self):
|
def _get_format_function(self):
|
||||||
return detail_strategy_step_format
|
return detail_strategy_step_format
|
||||||
|
|
|
@ -134,7 +134,7 @@ class UpdateSwUpdateOptions(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.sw_update_options_manager
|
sw_update_options_manager = self.app.client_manager.sw_update_options_manager
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
kwargs["storage-apply-type"] = parsed_args.storage_apply_type
|
kwargs["storage-apply-type"] = parsed_args.storage_apply_type
|
||||||
kwargs["worker-apply-type"] = parsed_args.worker_apply_type
|
kwargs["worker-apply-type"] = parsed_args.worker_apply_type
|
||||||
|
@ -143,13 +143,11 @@ class UpdateSwUpdateOptions(base.DCManagerShowOne):
|
||||||
kwargs["default-instance-action"] = parsed_args.default_instance_action
|
kwargs["default-instance-action"] = parsed_args.default_instance_action
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return (
|
return sw_update_options_manager.sw_update_options_update(
|
||||||
dcmanager_client.sw_update_options_manager.sw_update_options_update(
|
subcloud_ref, **kwargs
|
||||||
subcloud_ref, **kwargs
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
error_msg = f"Unable to update patch options for subcloud {subcloud_ref}"
|
error_msg = f"Unable to update patch options for subcloud {subcloud_ref}"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
|
@ -165,8 +163,8 @@ class ListSwUpdateOptions(base.DCManagerLister):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.sw_update_options_manager
|
sw_update_options_manager = self.app.client_manager.sw_update_options_manager
|
||||||
return dcmanager_client.sw_update_options_manager.sw_update_options_list()
|
return sw_update_options_manager.sw_update_options_list()
|
||||||
|
|
||||||
|
|
||||||
class ShowSwUpdateOptions(base.DCManagerShowOne):
|
class ShowSwUpdateOptions(base.DCManagerShowOne):
|
||||||
|
@ -189,10 +187,8 @@ class ShowSwUpdateOptions(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.sw_update_options_manager
|
sw_update_options_manager = self.app.client_manager.sw_update_options_manager
|
||||||
return dcmanager_client.sw_update_options_manager.sw_update_options_detail(
|
return sw_update_options_manager.sw_update_options_detail(subcloud_ref)
|
||||||
subcloud_ref
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class DeleteSwUpdateOptions(command.Command):
|
class DeleteSwUpdateOptions(command.Command):
|
||||||
|
@ -207,14 +203,10 @@ class DeleteSwUpdateOptions(command.Command):
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
subcloud_ref = parsed_args.subcloud
|
subcloud_ref = parsed_args.subcloud
|
||||||
dcmanager_client = self.app.client_manager.sw_update_options_manager
|
sw_update_options_manager = self.app.client_manager.sw_update_options_manager
|
||||||
try:
|
try:
|
||||||
return (
|
return sw_update_options_manager.sw_update_options_delete(subcloud_ref)
|
||||||
dcmanager_client.sw_update_options_manager.sw_update_options_delete(
|
except Exception as exc:
|
||||||
subcloud_ref
|
print(exc)
|
||||||
)
|
|
||||||
)
|
|
||||||
except Exception as e:
|
|
||||||
print(e)
|
|
||||||
error_msg = "Unable to delete patch options"
|
error_msg = "Unable to delete patch options"
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
|
@ -20,8 +20,8 @@ class SwUpgradeManagerMixin:
|
||||||
"""This Mixin provides the update manager used for software upgrades."""
|
"""This Mixin provides the update manager used for software upgrades."""
|
||||||
|
|
||||||
def get_sw_update_manager(self):
|
def get_sw_update_manager(self):
|
||||||
dcmanager_client = self.app.client_manager.sw_upgrade_manager
|
sw_upgrade_manager = self.app.client_manager.sw_upgrade_manager
|
||||||
return dcmanager_client.sw_upgrade_manager
|
return sw_upgrade_manager
|
||||||
|
|
||||||
|
|
||||||
class CreateSwUpgradeStrategy(
|
class CreateSwUpgradeStrategy(
|
||||||
|
|
|
@ -8,7 +8,8 @@ import base64
|
||||||
|
|
||||||
from osc_lib.command import command
|
from osc_lib.command import command
|
||||||
|
|
||||||
from dcmanagerclient import exceptions, utils
|
from dcmanagerclient import exceptions
|
||||||
|
from dcmanagerclient import utils
|
||||||
from dcmanagerclient.commands.v1 import base
|
from dcmanagerclient.commands.v1 import base
|
||||||
|
|
||||||
|
|
||||||
|
@ -191,7 +192,7 @@ class AddSystemPeer(base.DCManagerShowOne):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.system_peer_manager
|
system_peer_manager = self.app.client_manager.system_peer_manager
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
|
|
||||||
if parsed_args.peer_uuid is not None:
|
if parsed_args.peer_uuid is not None:
|
||||||
|
@ -242,7 +243,7 @@ class AddSystemPeer(base.DCManagerShowOne):
|
||||||
kwargs["heartbeat_maintenance_timeout"] = (
|
kwargs["heartbeat_maintenance_timeout"] = (
|
||||||
parsed_args.heartbeat_maintenance_timeout
|
parsed_args.heartbeat_maintenance_timeout
|
||||||
)
|
)
|
||||||
return dcmanager_client.system_peer_manager.add_system_peer(**kwargs)
|
return system_peer_manager.add_system_peer(**kwargs)
|
||||||
|
|
||||||
|
|
||||||
class ListSystemPeer(base.DCManagerLister):
|
class ListSystemPeer(base.DCManagerLister):
|
||||||
|
@ -256,8 +257,8 @@ class ListSystemPeer(base.DCManagerLister):
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
dcmanager_client = self.app.client_manager.system_peer_manager
|
system_peer_manager = self.app.client_manager.system_peer_manager
|
||||||
return dcmanager_client.system_peer_manager.list_system_peers()
|
return system_peer_manager.list_system_peers()
|
||||||
|
|
||||||
|
|
||||||
class ListSystemPeerSubcloudPeerGroups(base.DCManagerLister):
|
class ListSystemPeerSubcloudPeerGroups(base.DCManagerLister):
|
||||||
|
@ -279,10 +280,8 @@ class ListSystemPeerSubcloudPeerGroups(base.DCManagerLister):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
system_peer_ref = parsed_args.peer
|
system_peer_ref = parsed_args.peer
|
||||||
dcmanager_client = self.app.client_manager.system_peer_manager
|
system_peer_manager = self.app.client_manager.system_peer_manager
|
||||||
return dcmanager_client.system_peer_manager.system_peer_list_peer_groups(
|
return system_peer_manager.system_peer_list_peer_groups(system_peer_ref)
|
||||||
system_peer_ref
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class ShowSystemPeer(base.DCManagerShowOne):
|
class ShowSystemPeer(base.DCManagerShowOne):
|
||||||
|
@ -302,10 +301,8 @@ class ShowSystemPeer(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
system_peer_ref = parsed_args.peer
|
system_peer_ref = parsed_args.peer
|
||||||
dcmanager_client = self.app.client_manager.system_peer_manager
|
system_peer_manager = self.app.client_manager.system_peer_manager
|
||||||
return dcmanager_client.system_peer_manager.system_peer_detail(
|
return system_peer_manager.system_peer_detail(system_peer_ref)
|
||||||
system_peer_ref
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
class DeleteSystemPeer(command.Command):
|
class DeleteSystemPeer(command.Command):
|
||||||
|
@ -319,11 +316,11 @@ class DeleteSystemPeer(command.Command):
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
system_peer_ref = parsed_args.peer
|
system_peer_ref = parsed_args.peer
|
||||||
dcmanager_client = self.app.client_manager.system_peer_manager
|
system_peer_manager = self.app.client_manager.system_peer_manager
|
||||||
try:
|
try:
|
||||||
dcmanager_client.system_peer_manager.delete_system_peer(system_peer_ref)
|
system_peer_manager.delete_system_peer(system_peer_ref)
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
print(e)
|
print(exc)
|
||||||
msg = f"Unable to delete system peer {system_peer_ref}"
|
msg = f"Unable to delete system peer {system_peer_ref}"
|
||||||
raise exceptions.DCManagerClientException(msg)
|
raise exceptions.DCManagerClientException(msg)
|
||||||
|
|
||||||
|
@ -415,7 +412,7 @@ class UpdateSystemPeer(base.DCManagerShowOne):
|
||||||
|
|
||||||
def _get_resources(self, parsed_args):
|
def _get_resources(self, parsed_args):
|
||||||
system_peer_ref = parsed_args.peer
|
system_peer_ref = parsed_args.peer
|
||||||
dcmanager_client = self.app.client_manager.system_peer_manager
|
system_peer_manager = self.app.client_manager.system_peer_manager
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
if parsed_args.peer_uuid:
|
if parsed_args.peer_uuid:
|
||||||
kwargs["peer_uuid"] = parsed_args.peer_uuid
|
kwargs["peer_uuid"] = parsed_args.peer_uuid
|
||||||
|
@ -460,10 +457,8 @@ class UpdateSystemPeer(base.DCManagerShowOne):
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return dcmanager_client.system_peer_manager.update_system_peer(
|
return system_peer_manager.update_system_peer(system_peer_ref, **kwargs)
|
||||||
system_peer_ref, **kwargs
|
except Exception as exc:
|
||||||
)
|
print(exc)
|
||||||
except Exception as e:
|
|
||||||
print(e)
|
|
||||||
msg = f"Unable to update system peer {system_peer_ref}"
|
msg = f"Unable to update system peer {system_peer_ref}"
|
||||||
raise exceptions.DCManagerClientException(msg)
|
raise exceptions.DCManagerClientException(msg)
|
||||||
|
|
|
@ -113,8 +113,8 @@ class HelpAction(argparse.Action):
|
||||||
parser.print_help(main_app.stdout)
|
parser.print_help(main_app.stdout)
|
||||||
main_app.stdout.write("\nCommands for API v1 :\n")
|
main_app.stdout.write("\nCommands for API v1 :\n")
|
||||||
|
|
||||||
for name, ep in sorted(main_app.command_manager):
|
for name, app_cmd in sorted(main_app.command_manager):
|
||||||
factory = ep.load()
|
factory = app_cmd.load()
|
||||||
cmd = factory(self, None)
|
cmd = factory(self, None)
|
||||||
one_liner = cmd.get_description().split("\n")[0]
|
one_liner = cmd.get_description().split("\n")[0]
|
||||||
outputs.append((name, one_liner))
|
outputs.append((name, one_liner))
|
||||||
|
@ -135,17 +135,18 @@ class BashCompletionCommand(command.Command):
|
||||||
|
|
||||||
for (
|
for (
|
||||||
option,
|
option,
|
||||||
_action,
|
_,
|
||||||
) in self.app.parser._option_string_actions.items():
|
) in self.app.parser._option_string_actions.items():
|
||||||
options.add(option)
|
options.add(option)
|
||||||
|
|
||||||
for command_name, _cmd in self.app.command_manager:
|
for command_name, _ in self.app.command_manager:
|
||||||
commands.add(command_name)
|
commands.add(command_name)
|
||||||
|
|
||||||
print(" ".join(commands | options))
|
print(" ".join(commands | options))
|
||||||
|
|
||||||
|
|
||||||
class DCManagerShell(app.App):
|
class DCManagerShell(app.App):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super().__init__(
|
super().__init__(
|
||||||
description=__doc__.strip(),
|
description=__doc__.strip(),
|
||||||
|
@ -487,53 +488,60 @@ class DCManagerShell(app.App):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
phased_subcloud_deploy_manager = self.client.phased_subcloud_deploy_manager
|
||||||
|
peer_group_association_manager = self.client.peer_group_association_manager
|
||||||
|
client_keys = {
|
||||||
|
"alarm_manager": self.client.alarm_manager,
|
||||||
|
"fw_update_manager": self.client.fw_update_manager,
|
||||||
|
"kube_rootca_update_manager": self.client.kube_rootca_update_manager,
|
||||||
|
"kube_upgrade_manager": self.client.kube_upgrade_manager,
|
||||||
|
"peer_group_association_manager": peer_group_association_manager,
|
||||||
|
"phased_subcloud_deploy_manager": phased_subcloud_deploy_manager,
|
||||||
|
"strategy_step_manager": self.client.strategy_step_manager,
|
||||||
|
"subcloud_backup_manager": self.client.subcloud_backup_manager,
|
||||||
|
"subcloud_deploy_manager": self.client.subcloud_deploy_manager,
|
||||||
|
"subcloud_group_manager": self.client.subcloud_group_manager,
|
||||||
|
"subcloud_peer_group_manager": self.client.subcloud_peer_group_manager,
|
||||||
|
"subcloud_manager": self.client.subcloud_manager,
|
||||||
|
"sw_deploy_manager": self.client.sw_deploy_manager,
|
||||||
|
"sw_patch_manager": self.client.sw_patch_manager,
|
||||||
|
"sw_prestage_manager": self.client.sw_prestage_manager,
|
||||||
|
"sw_update_options_manager": self.client.sw_update_options_manager,
|
||||||
|
"sw_upgrade_manager": self.client.sw_upgrade_manager,
|
||||||
|
"system_peer_manager": self.client.system_peer_manager,
|
||||||
|
}
|
||||||
|
|
||||||
# Adding client_manager variable to make dcmanager client work with
|
# Adding client_manager variable to make dcmanager client work with
|
||||||
# unified OpenStack client.
|
# unified OpenStack client.
|
||||||
ClientManager = type(
|
ClientManager = type(
|
||||||
"ClientManager",
|
"ClientManager",
|
||||||
(object,),
|
(object,),
|
||||||
{
|
client_keys,
|
||||||
"subcloud_manager": self.client,
|
|
||||||
"subcloud_backup_manager": self.client,
|
|
||||||
"subcloud_group_manager": self.client,
|
|
||||||
"subcloud_deploy_manager": self.client,
|
|
||||||
"system_peer_manager": self.client,
|
|
||||||
"alarm_manager": self.client,
|
|
||||||
"fw_update_manager": self.client,
|
|
||||||
"sw_patch_manager": self.client,
|
|
||||||
"strategy_step_manager": self.client,
|
|
||||||
"sw_update_options_manager": self.client,
|
|
||||||
"sw_upgrade_manager": self.client,
|
|
||||||
"kube_upgrade_manager": self.client,
|
|
||||||
"kube_rootca_update_manager": self.client,
|
|
||||||
"sw_prestage_manager": self.client,
|
|
||||||
"phased_subcloud_deploy_manager": self.client,
|
|
||||||
"subcloud_peer_group_manager": self.client,
|
|
||||||
"peer_group_association_manager": self.client,
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
self.client_manager = ClientManager()
|
self.client_manager = ClientManager()
|
||||||
|
|
||||||
def _set_shell_commands(self, cmds_dict):
|
def _set_shell_commands(self, cmds_dict):
|
||||||
for k, v in cmds_dict.items():
|
for cmd, cmd_class in cmds_dict.items():
|
||||||
self.command_manager.add_command(k, v)
|
self.command_manager.add_command(cmd, cmd_class)
|
||||||
|
|
||||||
def _clear_shell_commands(self):
|
def _clear_shell_commands(self):
|
||||||
exclude_cmds = ["help", "complete"]
|
exclude_cmds = ["help", "complete"]
|
||||||
|
|
||||||
cmds = self.command_manager.commands.copy()
|
cmds = self.command_manager.commands.copy()
|
||||||
for k, _v in cmds.items():
|
for k, _ in cmds.items():
|
||||||
if k not in exclude_cmds:
|
if k not in exclude_cmds:
|
||||||
self.command_manager.commands.pop(k)
|
self.command_manager.commands.pop(k)
|
||||||
|
|
||||||
def _get_commands(self, version):
|
def _get_commands(self, version):
|
||||||
if version == 1:
|
if version == 1:
|
||||||
return self._get_commands_v1()
|
return self._get_commands_v1()
|
||||||
|
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _get_commands_v1():
|
def _get_commands_v1():
|
||||||
|
list_system_peer_groups = sp.ListSystemPeerSubcloudPeerGroups
|
||||||
|
create_kube_root_update = krum.CreateKubeRootcaUpdateStrategy
|
||||||
|
delete_kube_root_update = krum.DeleteKubeRootcaUpdateStrategy
|
||||||
return {
|
return {
|
||||||
"alarm summary": am.ListAlarmSummary,
|
"alarm summary": am.ListAlarmSummary,
|
||||||
"bash-completion": BashCompletionCommand,
|
"bash-completion": BashCompletionCommand,
|
||||||
|
@ -544,10 +552,8 @@ class DCManagerShell(app.App):
|
||||||
"fw-update-strategy show": fum.ShowFwUpdateStrategy,
|
"fw-update-strategy show": fum.ShowFwUpdateStrategy,
|
||||||
"kube-rootca-update-strategy abort": krum.AbortKubeRootcaUpdateStrategy,
|
"kube-rootca-update-strategy abort": krum.AbortKubeRootcaUpdateStrategy,
|
||||||
"kube-rootca-update-strategy apply": krum.ApplyKubeRootcaUpdateStrategy,
|
"kube-rootca-update-strategy apply": krum.ApplyKubeRootcaUpdateStrategy,
|
||||||
"kube-rootca-update-strategy create":
|
"kube-rootca-update-strategy create": create_kube_root_update,
|
||||||
krum.CreateKubeRootcaUpdateStrategy,
|
"kube-rootca-update-strategy delete": delete_kube_root_update,
|
||||||
"kube-rootca-update-strategy delete":
|
|
||||||
krum.DeleteKubeRootcaUpdateStrategy,
|
|
||||||
"kube-rootca-update-strategy show": krum.ShowKubeRootcaUpdateStrategy,
|
"kube-rootca-update-strategy show": krum.ShowKubeRootcaUpdateStrategy,
|
||||||
"kube-upgrade-strategy abort": kupm.AbortKubeUpgradeStrategy,
|
"kube-upgrade-strategy abort": kupm.AbortKubeUpgradeStrategy,
|
||||||
"kube-upgrade-strategy apply": kupm.ApplyKubeUpgradeStrategy,
|
"kube-upgrade-strategy apply": kupm.ApplyKubeUpgradeStrategy,
|
||||||
|
@ -630,8 +636,7 @@ class DCManagerShell(app.App):
|
||||||
"system-peer add": sp.AddSystemPeer,
|
"system-peer add": sp.AddSystemPeer,
|
||||||
"system-peer delete": sp.DeleteSystemPeer,
|
"system-peer delete": sp.DeleteSystemPeer,
|
||||||
"system-peer list": sp.ListSystemPeer,
|
"system-peer list": sp.ListSystemPeer,
|
||||||
"system-peer list-subcloud-peer-groups":
|
"system-peer list-subcloud-peer-groups": list_system_peer_groups,
|
||||||
sp.ListSystemPeerSubcloudPeerGroups,
|
|
||||||
"system-peer show": sp.ShowSystemPeer,
|
"system-peer show": sp.ShowSystemPeer,
|
||||||
"system-peer update": sp.UpdateSystemPeer,
|
"system-peer update": sp.UpdateSystemPeer,
|
||||||
"upgrade-strategy abort": supm.AbortSwUpgradeStrategy,
|
"upgrade-strategy abort": supm.AbortSwUpgradeStrategy,
|
||||||
|
|
|
@ -318,7 +318,7 @@ class BaseCommandTest(testtools.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
self.app = mock.Mock()
|
self.app = mock.Mock()
|
||||||
self.client = self.app.client_manager.subcloud_manager
|
self.client = self.app.client_manager
|
||||||
self.parsed_args = None
|
self.parsed_args = None
|
||||||
|
|
||||||
def call(self, command, app_args=None, prog_name=""):
|
def call(self, command, app_args=None, prog_name=""):
|
||||||
|
|
|
@ -35,7 +35,7 @@ class TestCLIAlarmSummaryV1(base.BaseCommandTest):
|
||||||
self.client = self.app.client_manager.alarm_manager
|
self.client = self.app.client_manager.alarm_manager
|
||||||
|
|
||||||
def test_list_alarm_summary(self):
|
def test_list_alarm_summary(self):
|
||||||
self.client.alarm_manager.list_alarms.return_value = [ALARM_SUMMARY]
|
self.client.list_alarms.return_value = [ALARM_SUMMARY]
|
||||||
actual_call = self.call(alarm_cmd.ListAlarmSummary)
|
actual_call = self.call(alarm_cmd.ListAlarmSummary)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
[
|
[
|
||||||
|
|
|
@ -13,9 +13,7 @@ class TestFwUpdateStrategy(UpdateStrategyMixin, base.BaseCommandTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
self.sw_update_manager = (
|
self.sw_update_manager = self.app.client_manager.fw_update_manager
|
||||||
self.app.client_manager.fw_update_manager.fw_update_manager
|
|
||||||
)
|
|
||||||
self.create_command = cli_cmd.CreateFwUpdateStrategy
|
self.create_command = cli_cmd.CreateFwUpdateStrategy
|
||||||
self.show_command = cli_cmd.ShowFwUpdateStrategy
|
self.show_command = cli_cmd.ShowFwUpdateStrategy
|
||||||
self.delete_command = cli_cmd.DeleteFwUpdateStrategy
|
self.delete_command = cli_cmd.DeleteFwUpdateStrategy
|
||||||
|
|
|
@ -13,8 +13,7 @@ class TestKubeRootcaUpdateStrategy(UpdateStrategyMixin, base.BaseCommandTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
self.sw_update_manager = self.app.client_manager.kube_rootca_update_manager.\
|
self.sw_update_manager = self.app.client_manager.kube_rootca_update_manager
|
||||||
kube_rootca_update_manager
|
|
||||||
self.create_command = cli_cmd.CreateKubeRootcaUpdateStrategy
|
self.create_command = cli_cmd.CreateKubeRootcaUpdateStrategy
|
||||||
self.show_command = cli_cmd.ShowKubeRootcaUpdateStrategy
|
self.show_command = cli_cmd.ShowKubeRootcaUpdateStrategy
|
||||||
self.delete_command = cli_cmd.DeleteKubeRootcaUpdateStrategy
|
self.delete_command = cli_cmd.DeleteKubeRootcaUpdateStrategy
|
||||||
|
|
|
@ -13,9 +13,7 @@ class TestKubeUpgradeStrategy(UpdateStrategyMixin, base.BaseCommandTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
self.sw_update_manager = (
|
self.sw_update_manager = self.app.client_manager.kube_upgrade_manager
|
||||||
self.app.client_manager.kube_upgrade_manager.kube_upgrade_manager
|
|
||||||
)
|
|
||||||
self.create_command = cli_cmd.CreateKubeUpgradeStrategy
|
self.create_command = cli_cmd.CreateKubeUpgradeStrategy
|
||||||
self.show_command = cli_cmd.ShowKubeUpgradeStrategy
|
self.show_command = cli_cmd.ShowKubeUpgradeStrategy
|
||||||
self.delete_command = cli_cmd.DeleteKubeUpgradeStrategy
|
self.delete_command = cli_cmd.DeleteKubeUpgradeStrategy
|
||||||
|
|
|
@ -18,9 +18,7 @@ class TestPatchUpdateStrategy(UpdateStrategyMixin, base.BaseCommandTest):
|
||||||
# Increase results_length due to the 'upload only' field
|
# Increase results_length due to the 'upload only' field
|
||||||
self.results_length += 1
|
self.results_length += 1
|
||||||
|
|
||||||
self.sw_update_manager = (
|
self.sw_update_manager = self.app.client_manager.sw_patch_manager
|
||||||
self.app.client_manager.sw_patch_manager.sw_patch_manager
|
|
||||||
)
|
|
||||||
self.create_command = cli_cmd.CreatePatchUpdateStrategy
|
self.create_command = cli_cmd.CreatePatchUpdateStrategy
|
||||||
self.show_command = cli_cmd.ShowPatchUpdateStrategy
|
self.show_command = cli_cmd.ShowPatchUpdateStrategy
|
||||||
self.delete_command = cli_cmd.DeletePatchUpdateStrategy
|
self.delete_command = cli_cmd.DeletePatchUpdateStrategy
|
||||||
|
|
|
@ -77,14 +77,14 @@ class TestCLIPeerGroupAssociationV1(base.BaseCommandTest):
|
||||||
self.client = self.app.client_manager.peer_group_association_manager
|
self.client = self.app.client_manager.peer_group_association_manager
|
||||||
|
|
||||||
def test_list_peer_group_association(self):
|
def test_list_peer_group_association(self):
|
||||||
self.client.peer_group_association_manager.list_peer_group_associations.\
|
self.client.list_peer_group_associations.return_value = [
|
||||||
return_value = [PEER_GROUP_ASSOCIATION]
|
PEER_GROUP_ASSOCIATION
|
||||||
|
]
|
||||||
actual_call = self.call(peer_group_association_cmd.ListPeerGroupAssociation)
|
actual_call = self.call(peer_group_association_cmd.ListPeerGroupAssociation)
|
||||||
self.assertEqual([PEER_GROUP_ASSOCIATION_TUPLE], actual_call[1])
|
self.assertEqual([PEER_GROUP_ASSOCIATION_TUPLE], actual_call[1])
|
||||||
|
|
||||||
def test_list_peer_group_association_empty(self):
|
def test_list_peer_group_association_empty(self):
|
||||||
self.client.peer_group_association_manager.list_peer_group_associations.\
|
self.client.list_peer_group_associations.return_value = []
|
||||||
return_value = ([])
|
|
||||||
actual_call = self.call(peer_group_association_cmd.ListPeerGroupAssociation)
|
actual_call = self.call(peer_group_association_cmd.ListPeerGroupAssociation)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
(tuple("<none>" for _ in range(len(PEER_GROUP_ASSOCIATION_TUPLE))),),
|
(tuple("<none>" for _ in range(len(PEER_GROUP_ASSOCIATION_TUPLE))),),
|
||||||
|
@ -92,8 +92,9 @@ class TestCLIPeerGroupAssociationV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_add_peer_group_association(self):
|
def test_add_peer_group_association(self):
|
||||||
self.client.peer_group_association_manager.add_peer_group_association.\
|
self.client.add_peer_group_association.return_value = [
|
||||||
return_value = [PEER_GROUP_ASSOCIATION]
|
PEER_GROUP_ASSOCIATION
|
||||||
|
]
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
peer_group_association_cmd.AddPeerGroupAssociation,
|
peer_group_association_cmd.AddPeerGroupAssociation,
|
||||||
app_args=[
|
app_args=[
|
||||||
|
@ -108,8 +109,9 @@ class TestCLIPeerGroupAssociationV1(base.BaseCommandTest):
|
||||||
self.assertEqual(PEER_GROUP_ASSOCIATION_DETAIL_TUPLE, actual_call[1])
|
self.assertEqual(PEER_GROUP_ASSOCIATION_DETAIL_TUPLE, actual_call[1])
|
||||||
|
|
||||||
def test_show_peer_group_association(self):
|
def test_show_peer_group_association(self):
|
||||||
self.client.peer_group_association_manager.peer_group_association_detail.\
|
self.client.peer_group_association_detail.return_value = [
|
||||||
return_value = [PEER_GROUP_ASSOCIATION]
|
PEER_GROUP_ASSOCIATION
|
||||||
|
]
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
peer_group_association_cmd.ShowPeerGroupAssociation,
|
peer_group_association_cmd.ShowPeerGroupAssociation,
|
||||||
app_args=[PEER_GROUP_ASSOCIATION_ID],
|
app_args=[PEER_GROUP_ASSOCIATION_ID],
|
||||||
|
@ -130,8 +132,7 @@ class TestCLIPeerGroupAssociationV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_show_peer_group_association_without_id(self):
|
def test_show_peer_group_association_without_id(self):
|
||||||
self.client.peer_group_association_manager.peer_group_association_detail.\
|
self.client.peer_group_association_detail.return_value = []
|
||||||
return_value = ([])
|
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
SystemExit,
|
SystemExit,
|
||||||
self.call,
|
self.call,
|
||||||
|
@ -144,8 +145,9 @@ class TestCLIPeerGroupAssociationV1(base.BaseCommandTest):
|
||||||
peer_group_association_cmd.DeletePeerGroupAssociation,
|
peer_group_association_cmd.DeletePeerGroupAssociation,
|
||||||
app_args=[PEER_GROUP_ASSOCIATION_ID],
|
app_args=[PEER_GROUP_ASSOCIATION_ID],
|
||||||
)
|
)
|
||||||
self.client.peer_group_association_manager.delete_peer_group_association.\
|
self.client.delete_peer_group_association.assert_called_once_with(
|
||||||
assert_called_once_with(PEER_GROUP_ASSOCIATION_ID)
|
PEER_GROUP_ASSOCIATION_ID
|
||||||
|
)
|
||||||
|
|
||||||
def test_delete_peer_group_association_without_id(self):
|
def test_delete_peer_group_association_without_id(self):
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
|
@ -160,8 +162,9 @@ class TestCLIPeerGroupAssociationV1(base.BaseCommandTest):
|
||||||
updated_peed_group_association.peer_group_priority = (
|
updated_peed_group_association.peer_group_priority = (
|
||||||
PG_GROUP_PRIORITY_UPDATED
|
PG_GROUP_PRIORITY_UPDATED
|
||||||
)
|
)
|
||||||
self.client.peer_group_association_manager.update_peer_group_association.\
|
self.client.update_peer_group_association.return_value = [
|
||||||
return_value = [updated_peed_group_association]
|
updated_peed_group_association
|
||||||
|
]
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
peer_group_association_cmd.UpdatePeerGroupAssociation,
|
peer_group_association_cmd.UpdatePeerGroupAssociation,
|
||||||
app_args=[
|
app_args=[
|
||||||
|
@ -173,8 +176,9 @@ class TestCLIPeerGroupAssociationV1(base.BaseCommandTest):
|
||||||
self.assertEqual((PEER_GROUP_ASSOCIATION_TUPLE_UPDATED), actual_call[1])
|
self.assertEqual((PEER_GROUP_ASSOCIATION_TUPLE_UPDATED), actual_call[1])
|
||||||
|
|
||||||
def test_update_peer_group_association_without_priority(self):
|
def test_update_peer_group_association_without_priority(self):
|
||||||
self.client.peer_group_association_manager.update_peer_group_association.\
|
self.client.update_peer_group_association.return_value = [
|
||||||
return_value = [PEER_GROUP_ASSOCIATION]
|
PEER_GROUP_ASSOCIATION
|
||||||
|
]
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
SystemExit,
|
SystemExit,
|
||||||
self.call,
|
self.call,
|
||||||
|
@ -183,8 +187,9 @@ class TestCLIPeerGroupAssociationV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_sync_peer_group_association(self):
|
def test_sync_peer_group_association(self):
|
||||||
self.client.peer_group_association_manager.sync_peer_group_association.\
|
self.client.sync_peer_group_association.return_value = [
|
||||||
return_value = [PEER_GROUP_ASSOCIATION]
|
PEER_GROUP_ASSOCIATION
|
||||||
|
]
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
peer_group_association_cmd.SyncPeerGroupAssociation,
|
peer_group_association_cmd.SyncPeerGroupAssociation,
|
||||||
app_args=[PEER_GROUP_ASSOCIATION_ID],
|
app_args=[PEER_GROUP_ASSOCIATION_ID],
|
||||||
|
|
|
@ -15,247 +15,259 @@ from dcmanagerclient.exceptions import DCManagerClientException
|
||||||
from dcmanagerclient.tests import base
|
from dcmanagerclient.tests import base
|
||||||
|
|
||||||
|
|
||||||
@mock.patch('getpass.getpass', new=mock.Mock(return_value='testpassword'))
|
@mock.patch("getpass.getpass", new=mock.Mock(return_value="testpassword"))
|
||||||
class TestCLIPhasedSubcloudDeployManagerV1(base.BaseCommandTest):
|
class TestCLIPhasedSubcloudDeployManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
# The client is the subcloud_deploy_manager
|
# The client is the subcloud_deploy_manager
|
||||||
self.client = self.app.client_manager.phased_subcloud_deploy_manager.\
|
self.client = self.app.client_manager.phased_subcloud_deploy_manager
|
||||||
phased_subcloud_deploy_manager
|
|
||||||
|
|
||||||
def test_subcloud_deploy_create(self):
|
def test_subcloud_deploy_create(self):
|
||||||
self.client.subcloud_deploy_create.return_value = [
|
self.client.subcloud_deploy_create.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(mode='w') as bootstrap_file, \
|
with tempfile.NamedTemporaryFile(
|
||||||
tempfile.NamedTemporaryFile(mode='w') as config_file, \
|
mode="w"
|
||||||
tempfile.NamedTemporaryFile(mode='w') as install_file:
|
) as bootstrap_file, tempfile.NamedTemporaryFile(
|
||||||
|
mode="w"
|
||||||
|
) as config_file, tempfile.NamedTemporaryFile(
|
||||||
|
mode="w"
|
||||||
|
) as install_file:
|
||||||
|
|
||||||
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
||||||
config_file_path = os.path.abspath(config_file.name)
|
config_file_path = os.path.abspath(config_file.name)
|
||||||
install_file_path = os.path.abspath(install_file.name)
|
install_file_path = os.path.abspath(install_file.name)
|
||||||
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
cmd.CreatePhasedSubcloudDeploy, app_args=[
|
cmd.CreatePhasedSubcloudDeploy,
|
||||||
'--bootstrap-address', base.BOOTSTRAP_ADDRESS,
|
app_args=[
|
||||||
'--install-values', install_file_path,
|
"--bootstrap-address",
|
||||||
'--bootstrap-values', bootstrap_file_path,
|
base.BOOTSTRAP_ADDRESS,
|
||||||
'--deploy-config', config_file_path,
|
"--install-values",
|
||||||
'--release', base.SOFTWARE_VERSION,
|
install_file_path,
|
||||||
])
|
"--bootstrap-values",
|
||||||
self.assertEqual(
|
bootstrap_file_path,
|
||||||
base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID,
|
"--deploy-config",
|
||||||
actual_call[1])
|
config_file_path,
|
||||||
|
"--release",
|
||||||
|
base.SOFTWARE_VERSION,
|
||||||
|
],
|
||||||
|
)
|
||||||
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
|
|
||||||
def test_subcloud_deploy_bootstrap(self):
|
def test_subcloud_deploy_bootstrap(self):
|
||||||
self.client.subcloud_deploy_bootstrap.return_value = [
|
self.client.subcloud_deploy_bootstrap.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(mode='w') as bootstrap_file:
|
with tempfile.NamedTemporaryFile(mode="w") as bootstrap_file:
|
||||||
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
||||||
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
cmd.BootstrapPhasedSubcloudDeploy, app_args=[
|
cmd.BootstrapPhasedSubcloudDeploy,
|
||||||
|
app_args=[
|
||||||
base.ID,
|
base.ID,
|
||||||
'--bootstrap-address', base.BOOTSTRAP_ADDRESS,
|
"--bootstrap-address",
|
||||||
'--bootstrap-values', bootstrap_file_path,
|
base.BOOTSTRAP_ADDRESS,
|
||||||
])
|
"--bootstrap-values",
|
||||||
self.assertEqual(
|
bootstrap_file_path,
|
||||||
base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID,
|
],
|
||||||
actual_call[1])
|
)
|
||||||
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
|
|
||||||
def test_install_subcloud(self):
|
def test_install_subcloud(self):
|
||||||
self.client.subcloud_deploy_install.return_value = [
|
self.client.subcloud_deploy_install.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(mode='w') as f:
|
with tempfile.NamedTemporaryFile(mode="w") as f:
|
||||||
yaml.dump(base.FAKE_INSTALL_VALUES, f)
|
yaml.dump(base.FAKE_INSTALL_VALUES, f)
|
||||||
file_path = os.path.abspath(f.name)
|
file_path = os.path.abspath(f.name)
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
cmd.InstallPhasedSubcloudDeploy, app_args=[
|
cmd.InstallPhasedSubcloudDeploy,
|
||||||
base.NAME, '--install-values', file_path,
|
app_args=[
|
||||||
])
|
base.NAME,
|
||||||
self.assertEqual(
|
"--install-values",
|
||||||
base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID,
|
file_path,
|
||||||
actual_call[1])
|
],
|
||||||
|
)
|
||||||
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
|
|
||||||
def test_install_subcloud_with_release(self):
|
def test_install_subcloud_with_release(self):
|
||||||
self.client.subcloud_deploy_install.return_value = [
|
self.client.subcloud_deploy_install.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(mode='w') as f:
|
with tempfile.NamedTemporaryFile(mode="w") as f:
|
||||||
yaml.dump(base.FAKE_INSTALL_VALUES, f)
|
yaml.dump(base.FAKE_INSTALL_VALUES, f)
|
||||||
file_path = os.path.abspath(f.name)
|
file_path = os.path.abspath(f.name)
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
cmd.InstallPhasedSubcloudDeploy, app_args=[
|
cmd.InstallPhasedSubcloudDeploy,
|
||||||
|
app_args=[
|
||||||
base.NAME,
|
base.NAME,
|
||||||
'--install-values', file_path,
|
"--install-values",
|
||||||
'--release', base.SOFTWARE_VERSION,
|
file_path,
|
||||||
])
|
"--release",
|
||||||
self.assertEqual(
|
base.SOFTWARE_VERSION,
|
||||||
base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID,
|
],
|
||||||
actual_call[1])
|
)
|
||||||
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
|
|
||||||
def test_install_subcloud_without_install_values(self):
|
def test_install_subcloud_without_install_values(self):
|
||||||
self.client.subcloud_deploy_install.return_value = [
|
self.client.subcloud_deploy_install.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
cmd.InstallPhasedSubcloudDeploy, app_args=[base.NAME])
|
cmd.InstallPhasedSubcloudDeploy, app_args=[base.NAME]
|
||||||
|
)
|
||||||
|
|
||||||
self.assertEqual(
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID,
|
|
||||||
actual_call[1])
|
|
||||||
|
|
||||||
def test_install_file_does_not_exist(self):
|
def test_install_file_does_not_exist(self):
|
||||||
self.client.subcloud_deploy_install.return_value = [
|
self.client.subcloud_deploy_install.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
with tempfile.NamedTemporaryFile() as f:
|
with tempfile.NamedTemporaryFile() as f:
|
||||||
file_path = os.path.abspath(f.name)
|
file_path = os.path.abspath(f.name)
|
||||||
|
|
||||||
e = self.assertRaises(DCManagerClientException,
|
e = self.assertRaises(
|
||||||
self.call,
|
DCManagerClientException,
|
||||||
cmd.InstallPhasedSubcloudDeploy,
|
self.call,
|
||||||
app_args=[base.NAME,
|
cmd.InstallPhasedSubcloudDeploy,
|
||||||
'--install-values', file_path]
|
app_args=[base.NAME, "--install-values", file_path],
|
||||||
)
|
)
|
||||||
self.assertTrue('install-values does not exist'
|
self.assertTrue("install-values does not exist" in str(e))
|
||||||
in str(e))
|
|
||||||
|
|
||||||
def test_configure_subcloud(self):
|
def test_configure_subcloud(self):
|
||||||
self.client.subcloud_deploy_config.return_value = [
|
self.client.subcloud_deploy_config.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile() as f:
|
with tempfile.NamedTemporaryFile() as f:
|
||||||
file_path = os.path.abspath(f.name)
|
file_path = os.path.abspath(f.name)
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
cmd.ConfigPhasedSubcloudDeploy,
|
cmd.ConfigPhasedSubcloudDeploy,
|
||||||
app_args=[base.NAME, '--deploy-config', file_path])
|
app_args=[base.NAME, "--deploy-config", file_path],
|
||||||
self.assertEqual(
|
)
|
||||||
base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID,
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
actual_call[1])
|
|
||||||
|
|
||||||
def test_configure_file_does_not_exist(self):
|
def test_configure_file_does_not_exist(self):
|
||||||
self.client.subcloud_deploy_config.return_value = [
|
self.client.subcloud_deploy_config.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile() as f:
|
with tempfile.NamedTemporaryFile() as f:
|
||||||
file_path = os.path.abspath(f.name)
|
file_path = os.path.abspath(f.name)
|
||||||
|
|
||||||
e = self.assertRaises(DCManagerClientException,
|
e = self.assertRaises(
|
||||||
self.call,
|
DCManagerClientException,
|
||||||
cmd.ConfigPhasedSubcloudDeploy,
|
self.call,
|
||||||
app_args=[base.NAME,
|
cmd.ConfigPhasedSubcloudDeploy,
|
||||||
'--deploy-config', file_path])
|
app_args=[base.NAME, "--deploy-config", file_path],
|
||||||
self.assertTrue('deploy-config file does not exist' in str(e))
|
)
|
||||||
|
self.assertTrue("deploy-config file does not exist" in str(e))
|
||||||
|
|
||||||
def test_complete_subcloud_deployment(self):
|
def test_complete_subcloud_deployment(self):
|
||||||
self.client.subcloud_deploy_complete.return_value = [
|
self.client.subcloud_deploy_complete.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
cmd.CompletePhasedSubcloudDeploy,
|
cmd.CompletePhasedSubcloudDeploy, app_args=[base.NAME]
|
||||||
app_args=[base.NAME])
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID,
|
|
||||||
actual_call[1])
|
|
||||||
|
|
||||||
def test_abort_subcloud(self):
|
def test_abort_subcloud(self):
|
||||||
self.client.subcloud_deploy_abort.return_value = [
|
self.client.subcloud_deploy_abort.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
actual_call = self.call(cmd.AbortPhasedSubcloudDeploy, app_args=[base.NAME])
|
||||||
actual_call = self.call(
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
cmd.AbortPhasedSubcloudDeploy,
|
|
||||||
app_args=[base.NAME])
|
|
||||||
self.assertEqual(
|
|
||||||
base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID,
|
|
||||||
actual_call[1])
|
|
||||||
|
|
||||||
def test_subcloud_deploy_resume_all_parameters(self):
|
def test_subcloud_deploy_resume_all_parameters(self):
|
||||||
self.client.subcloud_deploy_resume.return_value = [
|
self.client.subcloud_deploy_resume.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(mode='w') as bootstrap_file, \
|
with tempfile.NamedTemporaryFile(
|
||||||
tempfile.NamedTemporaryFile(mode='w') as config_file, \
|
mode="w"
|
||||||
tempfile.NamedTemporaryFile(mode='w') as install_file:
|
) as bootstrap_file, tempfile.NamedTemporaryFile(
|
||||||
|
mode="w"
|
||||||
|
) as config_file, tempfile.NamedTemporaryFile(
|
||||||
|
mode="w"
|
||||||
|
) as install_file:
|
||||||
|
|
||||||
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
||||||
config_file_path = os.path.abspath(config_file.name)
|
config_file_path = os.path.abspath(config_file.name)
|
||||||
install_file_path = os.path.abspath(install_file.name)
|
install_file_path = os.path.abspath(install_file.name)
|
||||||
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
cmd.PhasedSubcloudDeployResume, app_args=[
|
cmd.PhasedSubcloudDeployResume,
|
||||||
|
app_args=[
|
||||||
base.NAME,
|
base.NAME,
|
||||||
'--bootstrap-address', base.BOOTSTRAP_ADDRESS,
|
"--bootstrap-address",
|
||||||
'--bootstrap-values', bootstrap_file_path,
|
base.BOOTSTRAP_ADDRESS,
|
||||||
'--install-values', install_file_path,
|
"--bootstrap-values",
|
||||||
'--deploy-config', config_file_path,
|
bootstrap_file_path,
|
||||||
'--release', base.SOFTWARE_VERSION,
|
"--install-values",
|
||||||
])
|
install_file_path,
|
||||||
self.assertEqual(
|
"--deploy-config",
|
||||||
base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID,
|
config_file_path,
|
||||||
actual_call[1])
|
"--release",
|
||||||
|
base.SOFTWARE_VERSION,
|
||||||
|
],
|
||||||
|
)
|
||||||
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
|
|
||||||
def test_subcloud_deploy_resume_missing_files(self):
|
def test_subcloud_deploy_resume_missing_files(self):
|
||||||
self.client.subcloud_deploy_resume.return_value = [
|
self.client.subcloud_deploy_resume.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(mode='w') as bootstrap_file, \
|
with tempfile.NamedTemporaryFile(
|
||||||
tempfile.NamedTemporaryFile(mode='w') as config_file, \
|
mode="w"
|
||||||
tempfile.NamedTemporaryFile(mode='w') as install_file:
|
) as bootstrap_file, tempfile.NamedTemporaryFile(
|
||||||
|
mode="w"
|
||||||
|
) as config_file, tempfile.NamedTemporaryFile(
|
||||||
|
mode="w"
|
||||||
|
) as install_file:
|
||||||
|
|
||||||
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
bootstrap_file_path = os.path.abspath(bootstrap_file.name)
|
||||||
config_file_path = os.path.abspath(config_file.name)
|
config_file_path = os.path.abspath(config_file.name)
|
||||||
install_file_path = os.path.abspath(install_file.name)
|
install_file_path = os.path.abspath(install_file.name)
|
||||||
|
|
||||||
# Missing bootstrap values
|
# Missing bootstrap values
|
||||||
app_args_bootstrap = [base.NAME,
|
app_args_bootstrap = [
|
||||||
'--bootstrap-address', base.BOOTSTRAP_ADDRESS,
|
base.NAME,
|
||||||
'--bootstrap-values', bootstrap_file_path]
|
"--bootstrap-address",
|
||||||
error_msg_bootstrap = 'bootstrap-values does not exist'
|
base.BOOTSTRAP_ADDRESS,
|
||||||
call_bootstrap = self.assertRaises(DCManagerClientException,
|
"--bootstrap-values",
|
||||||
self.call,
|
bootstrap_file_path,
|
||||||
cmd.PhasedSubcloudDeployResume,
|
]
|
||||||
app_args=app_args_bootstrap)
|
error_msg_bootstrap = "bootstrap-values does not exist"
|
||||||
|
call_bootstrap = self.assertRaises(
|
||||||
|
DCManagerClientException,
|
||||||
|
self.call,
|
||||||
|
cmd.PhasedSubcloudDeployResume,
|
||||||
|
app_args=app_args_bootstrap,
|
||||||
|
)
|
||||||
self.assertTrue(error_msg_bootstrap in str(call_bootstrap))
|
self.assertTrue(error_msg_bootstrap in str(call_bootstrap))
|
||||||
|
|
||||||
# Missing install values
|
# Missing install values
|
||||||
app_args_install = [base.NAME, '--install-values', install_file_path]
|
app_args_install = [base.NAME, "--install-values", install_file_path]
|
||||||
error_msg_install = 'install-values does not exist'
|
error_msg_install = "install-values does not exist"
|
||||||
call_install = self.assertRaises(DCManagerClientException,
|
call_install = self.assertRaises(
|
||||||
self.call,
|
DCManagerClientException,
|
||||||
cmd.PhasedSubcloudDeployResume,
|
self.call,
|
||||||
app_args=app_args_install)
|
cmd.PhasedSubcloudDeployResume,
|
||||||
|
app_args=app_args_install,
|
||||||
|
)
|
||||||
self.assertTrue(error_msg_install in str(call_install))
|
self.assertTrue(error_msg_install in str(call_install))
|
||||||
|
|
||||||
# Missing deploy config values
|
# Missing deploy config values
|
||||||
app_args_config = [base.NAME, '--deploy-config', config_file_path]
|
app_args_config = [base.NAME, "--deploy-config", config_file_path]
|
||||||
error_msg_config = 'deploy-config does not exist'
|
error_msg_config = "deploy-config does not exist"
|
||||||
call_config = self.assertRaises(DCManagerClientException,
|
call_config = self.assertRaises(
|
||||||
self.call,
|
DCManagerClientException,
|
||||||
cmd.PhasedSubcloudDeployResume,
|
self.call,
|
||||||
app_args=app_args_config)
|
cmd.PhasedSubcloudDeployResume,
|
||||||
|
app_args=app_args_config,
|
||||||
|
)
|
||||||
self.assertTrue(error_msg_config in str(call_config))
|
self.assertTrue(error_msg_config in str(call_config))
|
||||||
|
|
||||||
def test_subcloud_deploy_resume_no_parameters(self):
|
def test_subcloud_deploy_resume_no_parameters(self):
|
||||||
self.client.subcloud_deploy_resume.return_value = [
|
self.client.subcloud_deploy_resume.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
|
actual_call = self.call(cmd.PhasedSubcloudDeployResume, app_args=[base.NAME])
|
||||||
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
|
|
||||||
|
def test_subcloud_deploy_resume_no_files_only_release(self):
|
||||||
|
self.client.subcloud_deploy_resume.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
cmd.PhasedSubcloudDeployResume,
|
cmd.PhasedSubcloudDeployResume,
|
||||||
app_args=[base.NAME])
|
app_args=[
|
||||||
self.assertEqual(
|
|
||||||
base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID,
|
|
||||||
actual_call[1])
|
|
||||||
|
|
||||||
def test_subcloud_deploy_resume_no_files_only_release(self):
|
|
||||||
self.client.subcloud_deploy_resume.return_value = [
|
|
||||||
base.SUBCLOUD_RESOURCE]
|
|
||||||
|
|
||||||
actual_call = self.call(
|
|
||||||
cmd.PhasedSubcloudDeployResume, app_args=[
|
|
||||||
base.NAME,
|
base.NAME,
|
||||||
'--release', base.SOFTWARE_VERSION,
|
"--release",
|
||||||
])
|
base.SOFTWARE_VERSION,
|
||||||
self.assertEqual(
|
],
|
||||||
base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID,
|
)
|
||||||
actual_call[1])
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
|
|
|
@ -48,9 +48,7 @@ class TestCLI(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
results = []
|
results = []
|
||||||
results.append(sample_step)
|
results.append(sample_step)
|
||||||
step_manager = (
|
step_manager = self.app.client_manager.strategy_step_manager
|
||||||
self.app.client_manager.strategy_step_manager.strategy_step_manager
|
|
||||||
)
|
|
||||||
step_manager.list_strategy_steps.return_value = results
|
step_manager.list_strategy_steps.return_value = results
|
||||||
|
|
||||||
actual_call = self.call(cli_cmd.ListSwUpdateStrategyStep)
|
actual_call = self.call(cli_cmd.ListSwUpdateStrategyStep)
|
||||||
|
|
|
@ -30,9 +30,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_backup_create_subcloud(self):
|
def test_backup_create_subcloud(self):
|
||||||
|
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_create.return_value = [
|
self.client.backup_subcloud_create.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE
|
|
||||||
]
|
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
||||||
|
@ -55,9 +53,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_backup_create_group(self):
|
def test_backup_create_group(self):
|
||||||
|
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_create.return_value = [
|
self.client.backup_subcloud_create.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE
|
|
||||||
]
|
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
||||||
|
@ -77,7 +73,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
self.assertEqual([base.SUBCLOUD_FIELD_RESULT_LIST], actual_call[1])
|
self.assertEqual([base.SUBCLOUD_FIELD_RESULT_LIST], actual_call[1])
|
||||||
|
|
||||||
def test_backup_create_group_subcloud(self):
|
def test_backup_create_group_subcloud(self):
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_create.return_value = []
|
self.client.backup_subcloud_create.return_value = []
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
||||||
|
@ -108,7 +104,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_backup_create_no_group_no_subcloud(self):
|
def test_backup_create_no_group_no_subcloud(self):
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_create.return_value = []
|
self.client.backup_subcloud_create.return_value = []
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
||||||
|
@ -133,7 +129,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_backup_create_backup_value_not_a_file(self):
|
def test_backup_create_backup_value_not_a_file(self):
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_create.return_value = []
|
self.client.backup_subcloud_create.return_value = []
|
||||||
|
|
||||||
e = self.assertRaises(
|
e = self.assertRaises(
|
||||||
DCManagerClientException,
|
DCManagerClientException,
|
||||||
|
@ -155,9 +151,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
@mock.patch("getpass.getpass", return_value="testpassword")
|
@mock.patch("getpass.getpass", return_value="testpassword")
|
||||||
def test_backup_create_prompt_ask_for_password(self, _mock_getpass):
|
def test_backup_create_prompt_ask_for_password(self, _mock_getpass):
|
||||||
|
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_create.return_value = [
|
self.client.backup_subcloud_create.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE
|
|
||||||
]
|
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
||||||
|
@ -203,7 +197,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_backup_delete_no_group_no_subcloud(self):
|
def test_backup_delete_no_group_no_subcloud(self):
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_delete.return_value = []
|
self.client.backup_subcloud_delete.return_value = []
|
||||||
|
|
||||||
e = self.assertRaises(
|
e = self.assertRaises(
|
||||||
DCManagerClientException,
|
DCManagerClientException,
|
||||||
|
@ -223,7 +217,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_backup_delete_group_subcloud(self):
|
def test_backup_delete_group_subcloud(self):
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_delete.return_value = []
|
self.client.backup_subcloud_delete.return_value = []
|
||||||
|
|
||||||
e = self.assertRaises(
|
e = self.assertRaises(
|
||||||
DCManagerClientException,
|
DCManagerClientException,
|
||||||
|
@ -274,8 +268,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
self.call(subcloud_backup_cmd.DeleteSubcloudBackup, app_args=app_args)
|
self.call(subcloud_backup_cmd.DeleteSubcloudBackup, app_args=app_args)
|
||||||
|
|
||||||
subcloud_delete = self.client.subcloud_backup_manager.backup_subcloud_delete
|
self.client.backup_subcloud_delete.assert_called_once_with(
|
||||||
subcloud_delete.assert_called_once_with(
|
|
||||||
data=payload, release_version=release_version, subcloud_ref=None
|
data=payload, release_version=release_version, subcloud_ref=None
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -304,8 +297,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
self.call(subcloud_backup_cmd.DeleteSubcloudBackup, app_args=app_args)
|
self.call(subcloud_backup_cmd.DeleteSubcloudBackup, app_args=app_args)
|
||||||
|
|
||||||
subcloud_delete = self.client.subcloud_backup_manager.backup_subcloud_delete
|
self.client.backup_subcloud_delete.assert_called_once_with(
|
||||||
subcloud_delete.assert_called_once_with(
|
|
||||||
data=payload, release_version=release_version, subcloud_ref=subcloud_name
|
data=payload, release_version=release_version, subcloud_ref=subcloud_name
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -333,8 +325,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
self.call(subcloud_backup_cmd.DeleteSubcloudBackup, app_args=app_args)
|
self.call(subcloud_backup_cmd.DeleteSubcloudBackup, app_args=app_args)
|
||||||
|
|
||||||
subcloud_delete = self.client.subcloud_backup_manager.backup_subcloud_delete
|
self.client.backup_subcloud_delete.assert_called_once_with(
|
||||||
subcloud_delete.assert_called_once_with(
|
|
||||||
data=payload, release_version=release_version, subcloud_ref=None
|
data=payload, release_version=release_version, subcloud_ref=None
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -357,8 +348,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
self.call(subcloud_backup_cmd.DeleteSubcloudBackup, app_args=app_args)
|
self.call(subcloud_backup_cmd.DeleteSubcloudBackup, app_args=app_args)
|
||||||
|
|
||||||
subcloud_delete = self.client.subcloud_backup_manager.backup_subcloud_delete
|
self.client.backup_subcloud_delete.assert_called_once_with(
|
||||||
subcloud_delete.assert_called_once_with(
|
|
||||||
data=payload, release_version=release_version, subcloud_ref=None
|
data=payload, release_version=release_version, subcloud_ref=None
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -384,9 +374,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_backup_restore(self):
|
def test_backup_restore(self):
|
||||||
|
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_restore.return_value = [
|
self.client.backup_subcloud_restore.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE
|
|
||||||
]
|
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
||||||
|
@ -410,9 +398,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_backup_restore_no_restore_values(self):
|
def test_backup_restore_no_restore_values(self):
|
||||||
|
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_restore.return_value = [
|
self.client.backup_subcloud_restore.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE
|
|
||||||
]
|
|
||||||
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
subcloud_backup_cmd.RestoreSubcloudBackup,
|
subcloud_backup_cmd.RestoreSubcloudBackup,
|
||||||
|
@ -429,9 +415,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_backup_restore_with_group(self):
|
def test_backup_restore_with_group(self):
|
||||||
|
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_restore.return_value = [
|
self.client.backup_subcloud_restore.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE
|
|
||||||
]
|
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
||||||
|
@ -452,7 +436,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
self.assertEqual([base.SUBCLOUD_FIELD_RESULT_LIST], actual_call[1])
|
self.assertEqual([base.SUBCLOUD_FIELD_RESULT_LIST], actual_call[1])
|
||||||
|
|
||||||
def test_backup_restore_group_and_subcloud(self):
|
def test_backup_restore_group_and_subcloud(self):
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_restore.return_value = []
|
self.client.backup_subcloud_restore.return_value = []
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
|
|
||||||
|
@ -484,7 +468,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_backup_restore_no_group_and_no_subcloud(self):
|
def test_backup_restore_no_group_and_no_subcloud(self):
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_restore.return_value = []
|
self.client.backup_subcloud_restore.return_value = []
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
|
|
||||||
|
@ -510,7 +494,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_backup_restore_backup_value_not_a_file(self):
|
def test_backup_restore_backup_value_not_a_file(self):
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_restore.return_value = []
|
self.client.backup_subcloud_restore.return_value = []
|
||||||
|
|
||||||
e = self.assertRaises(
|
e = self.assertRaises(
|
||||||
DCManagerClientException,
|
DCManagerClientException,
|
||||||
|
@ -532,9 +516,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
@mock.patch("getpass.getpass", return_value="testpassword")
|
@mock.patch("getpass.getpass", return_value="testpassword")
|
||||||
def test_backup_restore_prompt_ask_for_password(self, _mock_getpass):
|
def test_backup_restore_prompt_ask_for_password(self, _mock_getpass):
|
||||||
|
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_restore.return_value = [
|
self.client.backup_subcloud_restore.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE
|
|
||||||
]
|
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
|
|
||||||
|
@ -579,9 +561,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_backup_restore_with_install_no_release(self):
|
def test_backup_restore_with_install_no_release(self):
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_restore.return_value = [
|
self.client.backup_subcloud_restore.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE
|
|
||||||
]
|
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
||||||
|
@ -605,9 +585,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST, actual_call[1])
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST, actual_call[1])
|
||||||
|
|
||||||
def test_backup_restore_with_install_with_release(self):
|
def test_backup_restore_with_install_with_release(self):
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_restore.return_value = [
|
self.client.backup_subcloud_restore.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE
|
|
||||||
]
|
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
||||||
|
@ -633,9 +611,7 @@ class TestCLISubcloudBackUpManagerV1(base.BaseCommandTest):
|
||||||
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST, actual_call[1])
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST, actual_call[1])
|
||||||
|
|
||||||
def test_backup_restore_no_install_with_release(self):
|
def test_backup_restore_no_install_with_release(self):
|
||||||
self.client.subcloud_backup_manager.backup_subcloud_restore.return_value = [
|
self.client.backup_subcloud_restore.return_value = [base.SUBCLOUD_RESOURCE]
|
||||||
base.SUBCLOUD_RESOURCE
|
|
||||||
]
|
|
||||||
|
|
||||||
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
backup_path = os.path.normpath(os.path.join(os.getcwd(), "test.yaml"))
|
||||||
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
with open(backup_path, mode="w", encoding="UTF-8") as f:
|
||||||
|
|
|
@ -83,9 +83,7 @@ class TestCLISubcloudDeployManagerV1(base.BaseCommandTest):
|
||||||
self.client = self.app.client_manager.subcloud_deploy_manager
|
self.client = self.app.client_manager.subcloud_deploy_manager
|
||||||
|
|
||||||
def test_subcloud_deploy_show(self):
|
def test_subcloud_deploy_show(self):
|
||||||
self.client.subcloud_deploy_manager.subcloud_deploy_show.return_value = [
|
self.client.subcloud_deploy_show.return_value = [SUBCLOUD_DEPLOY_ALL]
|
||||||
SUBCLOUD_DEPLOY_ALL
|
|
||||||
]
|
|
||||||
|
|
||||||
# Without "--release" parameter
|
# Without "--release" parameter
|
||||||
actual_call1 = self.call(subcloud_deploy_manager.SubcloudDeployShow)
|
actual_call1 = self.call(subcloud_deploy_manager.SubcloudDeployShow)
|
||||||
|
@ -119,14 +117,14 @@ class TestCLISubcloudDeployManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_subcloud_deploy_upload_all(self):
|
def test_subcloud_deploy_upload_all(self):
|
||||||
self.client.subcloud_deploy_manager.subcloud_deploy_upload.return_value = [
|
self.client.subcloud_deploy_upload.return_value = [SUBCLOUD_DEPLOY_ALL]
|
||||||
SUBCLOUD_DEPLOY_ALL
|
|
||||||
]
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile() as f1, \
|
f1 = tempfile.NamedTemporaryFile()
|
||||||
tempfile.NamedTemporaryFile() as f2, \
|
f2 = tempfile.NamedTemporaryFile()
|
||||||
tempfile.NamedTemporaryFile() as f3, \
|
f3 = tempfile.NamedTemporaryFile()
|
||||||
tempfile.NamedTemporaryFile() as f4:
|
f4 = tempfile.NamedTemporaryFile()
|
||||||
|
|
||||||
|
with f1, f2, f3, f4:
|
||||||
file_path_1 = os.path.abspath(f1.name)
|
file_path_1 = os.path.abspath(f1.name)
|
||||||
file_path_2 = os.path.abspath(f2.name)
|
file_path_2 = os.path.abspath(f2.name)
|
||||||
file_path_3 = os.path.abspath(f3.name)
|
file_path_3 = os.path.abspath(f3.name)
|
||||||
|
@ -157,13 +155,15 @@ class TestCLISubcloudDeployManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_subcloud_deploy_upload_no_prestage(self):
|
def test_subcloud_deploy_upload_no_prestage(self):
|
||||||
self.client.subcloud_deploy_manager.subcloud_deploy_upload.return_value = [
|
self.client.subcloud_deploy_upload.return_value = [
|
||||||
SUBCLOUD_DEPLOY_NO_PRESTAGE
|
SUBCLOUD_DEPLOY_NO_PRESTAGE
|
||||||
]
|
]
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile() as f1, \
|
f1 = tempfile.NamedTemporaryFile()
|
||||||
tempfile.NamedTemporaryFile() as f2, \
|
f2 = tempfile.NamedTemporaryFile()
|
||||||
tempfile.NamedTemporaryFile() as f3:
|
f3 = tempfile.NamedTemporaryFile()
|
||||||
|
|
||||||
|
with f1, f2, f3:
|
||||||
file_path_1 = os.path.abspath(f1.name)
|
file_path_1 = os.path.abspath(f1.name)
|
||||||
file_path_2 = os.path.abspath(f2.name)
|
file_path_2 = os.path.abspath(f2.name)
|
||||||
file_path_3 = os.path.abspath(f3.name)
|
file_path_3 = os.path.abspath(f3.name)
|
||||||
|
@ -191,9 +191,7 @@ class TestCLISubcloudDeployManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_subcloud_deploy_upload_prestage(self):
|
def test_subcloud_deploy_upload_prestage(self):
|
||||||
self.client.subcloud_deploy_manager.subcloud_deploy_upload.return_value = [
|
self.client.subcloud_deploy_upload.return_value = [SUBCLOUD_DEPLOY_PRESTAGE]
|
||||||
SUBCLOUD_DEPLOY_PRESTAGE
|
|
||||||
]
|
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile() as f1:
|
with tempfile.NamedTemporaryFile() as f1:
|
||||||
file_path_1 = os.path.abspath(f1.name)
|
file_path_1 = os.path.abspath(f1.name)
|
||||||
|
@ -207,13 +205,15 @@ class TestCLISubcloudDeployManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_subcloud_deploy_upload_no_playbook(self):
|
def test_subcloud_deploy_upload_no_playbook(self):
|
||||||
self.client.subcloud_deploy_manager.subcloud_deploy_upload.return_value = [
|
self.client.subcloud_deploy_upload.return_value = [
|
||||||
SUBCLOUD_DEPLOY_NO_PLAYBOOK
|
SUBCLOUD_DEPLOY_NO_PLAYBOOK
|
||||||
]
|
]
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile() as f1, \
|
f1 = tempfile.NamedTemporaryFile()
|
||||||
tempfile.NamedTemporaryFile() as f2, \
|
f2 = tempfile.NamedTemporaryFile()
|
||||||
tempfile.NamedTemporaryFile() as f3:
|
f3 = tempfile.NamedTemporaryFile()
|
||||||
|
|
||||||
|
with f1, f2, f3:
|
||||||
file_path_1 = os.path.abspath(f1.name)
|
file_path_1 = os.path.abspath(f1.name)
|
||||||
file_path_2 = os.path.abspath(f2.name)
|
file_path_2 = os.path.abspath(f2.name)
|
||||||
file_path_3 = os.path.abspath(f3.name)
|
file_path_3 = os.path.abspath(f3.name)
|
||||||
|
@ -240,12 +240,14 @@ class TestCLISubcloudDeployManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_subcloud_deploy_upload_no_playbook_overrides(self):
|
def test_subcloud_deploy_upload_no_playbook_overrides(self):
|
||||||
self.client.subcloud_deploy_manager.subcloud_deploy_upload.return_value = [
|
self.client.subcloud_deploy_upload.return_value = [
|
||||||
SUBCLOUD_DEPLOY_NO_PLAYBOOK_OVERRIDES
|
SUBCLOUD_DEPLOY_NO_PLAYBOOK_OVERRIDES
|
||||||
]
|
]
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile() as f1, \
|
f1 = tempfile.NamedTemporaryFile()
|
||||||
tempfile.NamedTemporaryFile() as f2:
|
f2 = tempfile.NamedTemporaryFile()
|
||||||
|
|
||||||
|
with f1, f2:
|
||||||
file_path_1 = os.path.abspath(f1.name)
|
file_path_1 = os.path.abspath(f1.name)
|
||||||
file_path_2 = os.path.abspath(f2.name)
|
file_path_2 = os.path.abspath(f2.name)
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
|
@ -257,20 +259,26 @@ class TestCLISubcloudDeployManagerV1(base.BaseCommandTest):
|
||||||
file_path_2,
|
file_path_2,
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
self.assertEqual((
|
self.assertEqual(
|
||||||
None, None,
|
(
|
||||||
DEPLOY_CHART,
|
None,
|
||||||
DEPLOY_PRESTAGE_IMAGES,
|
None,
|
||||||
base.SOFTWARE_VERSION
|
DEPLOY_CHART,
|
||||||
), actual_call[1],)
|
DEPLOY_PRESTAGE_IMAGES,
|
||||||
|
base.SOFTWARE_VERSION,
|
||||||
|
),
|
||||||
|
actual_call[1],
|
||||||
|
)
|
||||||
|
|
||||||
def test_subcloud_deploy_upload_no_overrides_chart(self):
|
def test_subcloud_deploy_upload_no_overrides_chart(self):
|
||||||
self.client.subcloud_deploy_manager.subcloud_deploy_upload.return_value = [
|
self.client.subcloud_deploy_upload.return_value = [
|
||||||
SUBCLOUD_DEPLOY_NO_OVERRIDES_CHART
|
SUBCLOUD_DEPLOY_NO_OVERRIDES_CHART
|
||||||
]
|
]
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile() as f1, \
|
f1 = tempfile.NamedTemporaryFile()
|
||||||
tempfile.NamedTemporaryFile() as f2:
|
f2 = tempfile.NamedTemporaryFile()
|
||||||
|
|
||||||
|
with f1, f2:
|
||||||
file_path_1 = os.path.abspath(f1.name)
|
file_path_1 = os.path.abspath(f1.name)
|
||||||
file_path_2 = os.path.abspath(f2.name)
|
file_path_2 = os.path.abspath(f2.name)
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
|
@ -297,13 +305,16 @@ class TestCLISubcloudDeployManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
@mock.patch("builtins.print")
|
@mock.patch("builtins.print")
|
||||||
def test_subcloud_deploy_upload_invalid_path(self, mock_print):
|
def test_subcloud_deploy_upload_invalid_path(self, mock_print):
|
||||||
self.client.subcloud_deploy_manager.subcloud_deploy_upload.return_value = [
|
self.client.subcloud_deploy_upload.return_value = [
|
||||||
SUBCLOUD_DEPLOY_NO_PRESTAGE
|
SUBCLOUD_DEPLOY_NO_PRESTAGE
|
||||||
]
|
]
|
||||||
mock_print.return_value = mock.ANY
|
mock_print.return_value = mock.ANY
|
||||||
file_path_1 = "not_a_valid_path"
|
file_path_1 = "not_a_valid_path"
|
||||||
with tempfile.NamedTemporaryFile() as f2, \
|
|
||||||
tempfile.NamedTemporaryFile() as f3:
|
f2 = tempfile.NamedTemporaryFile()
|
||||||
|
f3 = tempfile.NamedTemporaryFile()
|
||||||
|
|
||||||
|
with f2, f3:
|
||||||
file_path_2 = os.path.abspath(f2.name)
|
file_path_2 = os.path.abspath(f2.name)
|
||||||
file_path_3 = os.path.abspath(f3.name)
|
file_path_3 = os.path.abspath(f3.name)
|
||||||
|
|
||||||
|
@ -333,12 +344,12 @@ class TestCLISubcloudDeployManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
self.call(subcloud_deploy_manager.SubcloudDeployDelete, app_args=app_args)
|
self.call(subcloud_deploy_manager.SubcloudDeployDelete, app_args=app_args)
|
||||||
|
|
||||||
self.client.subcloud_deploy_manager.subcloud_deploy_delete.\
|
self.client.subcloud_deploy_delete.assert_called_once_with(
|
||||||
assert_called_once_with(release_version, data=data)
|
release_version, data=data
|
||||||
|
)
|
||||||
|
|
||||||
def test_subcloud_deploy_delete_without_release(self):
|
def test_subcloud_deploy_delete_without_release(self):
|
||||||
|
|
||||||
self.call(subcloud_deploy_manager.SubcloudDeployDelete)
|
self.call(subcloud_deploy_manager.SubcloudDeployDelete)
|
||||||
data = {"prestage_images": "False", "deployment_files": "False"}
|
data = {"prestage_images": "False", "deployment_files": "False"}
|
||||||
self.client.subcloud_deploy_manager.subcloud_deploy_delete.\
|
self.client.subcloud_deploy_delete.assert_called_once_with(None, data=data)
|
||||||
assert_called_once_with(None, data=data)
|
|
||||||
|
|
|
@ -61,33 +61,30 @@ class TestCLISubcloudGroupManagerV1(base.BaseCommandTest):
|
||||||
self.client = self.app.client_manager.subcloud_group_manager
|
self.client = self.app.client_manager.subcloud_group_manager
|
||||||
|
|
||||||
def test_list_subcloud_groups(self):
|
def test_list_subcloud_groups(self):
|
||||||
self.client.subcloud_group_manager.list_subcloud_groups.return_value = [
|
self.client.list_subcloud_groups.return_value = [SUBCLOUD_GROUP]
|
||||||
SUBCLOUD_GROUP
|
|
||||||
]
|
|
||||||
actual_call = self.call(subcloud_group_cmd.ListSubcloudGroup)
|
actual_call = self.call(subcloud_group_cmd.ListSubcloudGroup)
|
||||||
self.assertEqual([(ID, NAME, DESCRIPTION)], actual_call[1])
|
self.assertEqual([(ID, NAME, DESCRIPTION)], actual_call[1])
|
||||||
|
|
||||||
def test_list_subcloud_groups_empty(self):
|
def test_list_subcloud_groups_empty(self):
|
||||||
self.client.subcloud_group_manager.list_subcloud_groups.return_value = []
|
self.client.list_subcloud_groups.return_value = []
|
||||||
actual_call = self.call(subcloud_group_cmd.ListSubcloudGroup)
|
actual_call = self.call(subcloud_group_cmd.ListSubcloudGroup)
|
||||||
self.assertEqual((("<none>", "<none>", "<none>"),), actual_call[1])
|
self.assertEqual((("<none>", "<none>", "<none>"),), actual_call[1])
|
||||||
|
|
||||||
def test_list_subcloud_group_subclouds(self):
|
def test_list_subcloud_group_subclouds(self):
|
||||||
self.client.subcloud_group_manager.\
|
self.client.subcloud_group_list_subclouds.return_value = [
|
||||||
subcloud_group_list_subclouds.return_value = [base.SUBCLOUD_RESOURCE]
|
base.SUBCLOUD_RESOURCE
|
||||||
|
]
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
subcloud_group_cmd.ListSubcloudGroupSubclouds, app_args=[ID]
|
subcloud_group_cmd.ListSubcloudGroupSubclouds, app_args=[ID]
|
||||||
)
|
)
|
||||||
self.client.subcloud_group_manager.subcloud_group_list_subclouds.\
|
self.client.subcloud_group_list_subclouds.assert_called_once_with(ID)
|
||||||
assert_called_once_with(ID)
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
[base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID], actual_call[1]
|
[base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID], actual_call[1]
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_delete_subcloud_group_by_id(self):
|
def test_delete_subcloud_group_by_id(self):
|
||||||
self.call(subcloud_group_cmd.DeleteSubcloudGroup, app_args=[ID])
|
self.call(subcloud_group_cmd.DeleteSubcloudGroup, app_args=[ID])
|
||||||
self.client.subcloud_group_manager.delete_subcloud_group.\
|
self.client.delete_subcloud_group.assert_called_once_with(ID)
|
||||||
assert_called_once_with(ID)
|
|
||||||
|
|
||||||
def test_delete_subcloud_group_without_id(self):
|
def test_delete_subcloud_group_without_id(self):
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
|
@ -98,9 +95,7 @@ class TestCLISubcloudGroupManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_show_subcloud_group_with_id(self):
|
def test_show_subcloud_group_with_id(self):
|
||||||
self.client.subcloud_group_manager.subcloud_group_detail.return_value = [
|
self.client.subcloud_group_detail.return_value = [SUBCLOUD_GROUP]
|
||||||
SUBCLOUD_GROUP
|
|
||||||
]
|
|
||||||
actual_call = self.call(subcloud_group_cmd.ShowSubcloudGroup, app_args=[ID])
|
actual_call = self.call(subcloud_group_cmd.ShowSubcloudGroup, app_args=[ID])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
(
|
(
|
||||||
|
@ -116,7 +111,7 @@ class TestCLISubcloudGroupManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_show_subcloud_group_without_id(self):
|
def test_show_subcloud_group_without_id(self):
|
||||||
self.client.subcloud_group_manager.subcloud_group_detail.return_value = []
|
self.client.subcloud_group_detail.return_value = []
|
||||||
actual_call = self.call(subcloud_group_cmd.ShowSubcloudGroup, app_args=[ID])
|
actual_call = self.call(subcloud_group_cmd.ShowSubcloudGroup, app_args=[ID])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
(
|
(
|
||||||
|
@ -134,9 +129,7 @@ class TestCLISubcloudGroupManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_add_subcloud_group(self):
|
def test_add_subcloud_group(self):
|
||||||
self.client.subcloud_group_manager.add_subcloud_group.return_value = [
|
self.client.add_subcloud_group.return_value = [SUBCLOUD_GROUP]
|
||||||
SUBCLOUD_GROUP
|
|
||||||
]
|
|
||||||
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
subcloud_group_cmd.AddSubcloudGroup,
|
subcloud_group_cmd.AddSubcloudGroup,
|
||||||
|
@ -158,9 +151,7 @@ class TestCLISubcloudGroupManagerV1(base.BaseCommandTest):
|
||||||
def test_update_subcloud_group(self):
|
def test_update_subcloud_group(self):
|
||||||
updated_subloud = copy.copy(SUBCLOUD_GROUP)
|
updated_subloud = copy.copy(SUBCLOUD_GROUP)
|
||||||
updated_subloud.description = NEW_DESCRIPTION
|
updated_subloud.description = NEW_DESCRIPTION
|
||||||
self.client.subcloud_group_manager.update_subcloud_group.return_value = [
|
self.client.update_subcloud_group.return_value = [updated_subloud]
|
||||||
updated_subloud
|
|
||||||
]
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
subcloud_group_cmd.UpdateSubcloudGroup,
|
subcloud_group_cmd.UpdateSubcloudGroup,
|
||||||
app_args=[SUBCLOUD_GROUP.group_id, "--description", NEW_DESCRIPTION],
|
app_args=[SUBCLOUD_GROUP.group_id, "--description", NEW_DESCRIPTION],
|
||||||
|
|
|
@ -28,9 +28,13 @@ from dcmanagerclient.tests import base
|
||||||
|
|
||||||
class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
super().setUp()
|
||||||
|
self.subcloud_resource = copy.copy(base.SUBCLOUD_RESOURCE)
|
||||||
|
|
||||||
def test_list_subclouds(self):
|
def test_list_subclouds(self):
|
||||||
self.client.subcloud_manager.list_subclouds.return_value = [
|
self.client.subcloud_manager.list_subclouds.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
actual_call = self.call(subcloud_cmd.ListSubcloud)
|
actual_call = self.call(subcloud_cmd.ListSubcloud)
|
||||||
self.assertEqual([base.SUBCLOUD_LIST_RESULT], actual_call[1])
|
self.assertEqual([base.SUBCLOUD_LIST_RESULT], actual_call[1])
|
||||||
|
@ -83,7 +87,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_show_subcloud_with_subcloud_id(self):
|
def test_show_subcloud_with_subcloud_id(self):
|
||||||
self.client.subcloud_manager.subcloud_detail.return_value = [
|
self.client.subcloud_manager.subcloud_detail.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
actual_call = self.call(subcloud_cmd.ShowSubcloud, app_args=[base.ID])
|
actual_call = self.call(subcloud_cmd.ShowSubcloud, app_args=[base.ID])
|
||||||
|
|
||||||
|
@ -93,7 +97,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_show_subcloud_with_additional_detail(self):
|
def test_show_subcloud_with_additional_detail(self):
|
||||||
subcloud_with_additional_detail = copy.copy(base.SUBCLOUD_RESOURCE)
|
subcloud_with_additional_detail = self.subcloud_resource
|
||||||
subcloud_with_additional_detail.oam_floating_ip = (
|
subcloud_with_additional_detail.oam_floating_ip = (
|
||||||
base.EXTERNAL_OAM_FLOATING_ADDRESS
|
base.EXTERNAL_OAM_FLOATING_ADDRESS
|
||||||
)
|
)
|
||||||
|
@ -127,7 +131,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
@mock.patch("getpass.getpass", return_value="testpassword")
|
@mock.patch("getpass.getpass", return_value="testpassword")
|
||||||
def test_add_subcloud(self, _mock_getpass):
|
def test_add_subcloud(self, _mock_getpass):
|
||||||
self.client.subcloud_manager.add_subcloud.return_value = [
|
self.client.subcloud_manager.add_subcloud.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(mode="w") as f:
|
with tempfile.NamedTemporaryFile(mode="w") as f:
|
||||||
|
@ -165,7 +169,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
@mock.patch("getpass.getpass", return_value="testpassword")
|
@mock.patch("getpass.getpass", return_value="testpassword")
|
||||||
def test_add_migrate_subcloud(self, _mock_getpass):
|
def test_add_migrate_subcloud(self, _mock_getpass):
|
||||||
self.client.subcloud_manager.add_subcloud.return_value = [
|
self.client.subcloud_manager.add_subcloud.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(mode="w") as f:
|
with tempfile.NamedTemporaryFile(mode="w") as f:
|
||||||
|
@ -186,7 +190,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
@mock.patch("getpass.getpass", return_value="testpassword")
|
@mock.patch("getpass.getpass", return_value="testpassword")
|
||||||
def test_add_migrate_subcloud_with_deploy_config(self, _mock_getpass):
|
def test_add_migrate_subcloud_with_deploy_config(self, _mock_getpass):
|
||||||
self.client.subcloud_manager.add_subcloud.return_value = [
|
self.client.subcloud_manager.add_subcloud.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(mode="w") as f_bootstrap:
|
with tempfile.NamedTemporaryFile(mode="w") as f_bootstrap:
|
||||||
|
@ -264,10 +268,10 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
self.assertEqual(tuple(results_by_name), actual_call2[1])
|
self.assertEqual(tuple(results_by_name), actual_call2[1])
|
||||||
|
|
||||||
def test_update_fields_values(self):
|
def test_update_fields_values(self):
|
||||||
subcloud_with_region_detail = copy.copy(base.SUBCLOUD_RESOURCE)
|
subcloud_with_region_detail = copy.copy(self.subcloud_resource)
|
||||||
subcloud_with_region_detail.region_name = base.REGION_NAME
|
subcloud_with_region_detail.region_name = base.REGION_NAME
|
||||||
|
|
||||||
subcloud_with_region_none = copy.copy(base.SUBCLOUD_RESOURCE)
|
subcloud_with_region_none = copy.copy(self.subcloud_resource)
|
||||||
subcloud_with_region_none.region_name = None
|
subcloud_with_region_none.region_name = None
|
||||||
|
|
||||||
subcloud_cmd.update_fields_values([subcloud_with_region_detail])
|
subcloud_cmd.update_fields_values([subcloud_with_region_detail])
|
||||||
|
@ -279,14 +283,14 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_unmanage_subcloud(self):
|
def test_unmanage_subcloud(self):
|
||||||
self.client.subcloud_manager.update_subcloud.return_value = [
|
self.client.subcloud_manager.update_subcloud.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
actual_call = self.call(subcloud_cmd.UnmanageSubcloud, app_args=[base.ID])
|
actual_call = self.call(subcloud_cmd.UnmanageSubcloud, app_args=[base.ID])
|
||||||
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
|
|
||||||
def test_unmanage_subcloud_with_migrate(self):
|
def test_unmanage_subcloud_with_migrate(self):
|
||||||
self.client.subcloud_manager.update_subcloud.return_value = [
|
self.client.subcloud_manager.update_subcloud.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
subcloud_cmd.UnmanageSubcloud, app_args=[base.ID, "--migrate"]
|
subcloud_cmd.UnmanageSubcloud, app_args=[base.ID, "--migrate"]
|
||||||
|
@ -300,7 +304,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_manage_subcloud(self):
|
def test_manage_subcloud(self):
|
||||||
self.client.subcloud_manager.update_subcloud.return_value = [
|
self.client.subcloud_manager.update_subcloud.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
actual_call = self.call(subcloud_cmd.ManageSubcloud, app_args=[base.ID])
|
actual_call = self.call(subcloud_cmd.ManageSubcloud, app_args=[base.ID])
|
||||||
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
|
@ -312,7 +316,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_update_subcloud(self):
|
def test_update_subcloud(self):
|
||||||
self.client.subcloud_manager.update_subcloud.return_value = [
|
self.client.subcloud_manager.update_subcloud.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
with tempfile.NamedTemporaryFile(mode="w") as f_bootstrap:
|
with tempfile.NamedTemporaryFile(mode="w") as f_bootstrap:
|
||||||
bootstrap_file_path = os.path.abspath(f_bootstrap.name)
|
bootstrap_file_path = os.path.abspath(f_bootstrap.name)
|
||||||
|
@ -348,7 +352,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
@mock.patch("six.moves.input", return_value="redeploy")
|
@mock.patch("six.moves.input", return_value="redeploy")
|
||||||
def test_redeploy_subcloud(self, _mock_input, _mock_getpass):
|
def test_redeploy_subcloud(self, _mock_input, _mock_getpass):
|
||||||
self.client.subcloud_manager.redeploy_subcloud.return_value = [
|
self.client.subcloud_manager.redeploy_subcloud.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
|
|
||||||
with tempfile.NamedTemporaryFile(
|
with tempfile.NamedTemporaryFile(
|
||||||
|
@ -383,7 +387,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
@mock.patch("six.moves.input", return_value="redeploy")
|
@mock.patch("six.moves.input", return_value="redeploy")
|
||||||
def test_redeploy_subcloud_no_parameters(self, _mock_input, _mock_getpass):
|
def test_redeploy_subcloud_no_parameters(self, _mock_input, _mock_getpass):
|
||||||
self.client.subcloud_manager.redeploy_subcloud.return_value = [
|
self.client.subcloud_manager.redeploy_subcloud.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
actual_call = self.call(subcloud_cmd.RedeploySubcloud, app_args=[base.ID])
|
actual_call = self.call(subcloud_cmd.RedeploySubcloud, app_args=[base.ID])
|
||||||
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
self.assertEqual(base.SUBCLOUD_FIELD_RESULT_LIST_WITH_PEERID, actual_call[1])
|
||||||
|
@ -394,7 +398,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
self, _mock_input, _mock_getpass
|
self, _mock_input, _mock_getpass
|
||||||
):
|
):
|
||||||
self.client.subcloud_manager.redeploy_subcloud.return_value = [
|
self.client.subcloud_manager.redeploy_subcloud.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
with tempfile.NamedTemporaryFile(
|
with tempfile.NamedTemporaryFile(
|
||||||
mode="w"
|
mode="w"
|
||||||
|
@ -445,7 +449,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_prestage_with_subcloud_id(self):
|
def test_prestage_with_subcloud_id(self):
|
||||||
self.client.subcloud_manager.prestage_subcloud.return_value = [
|
self.client.subcloud_manager.prestage_subcloud.return_value = [
|
||||||
base.SUBCLOUD_RESOURCE
|
self.subcloud_resource
|
||||||
]
|
]
|
||||||
actual_call_without_release = self.call(
|
actual_call_without_release = self.call(
|
||||||
subcloud_cmd.PrestageSubcloud,
|
subcloud_cmd.PrestageSubcloud,
|
||||||
|
@ -462,7 +466,7 @@ class TestCLISubcloudManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_prestage_with_release(self):
|
def test_prestage_with_release(self):
|
||||||
subcloud_with_additional_detail = copy.copy(base.SUBCLOUD_RESOURCE)
|
subcloud_with_additional_detail = self.subcloud_resource
|
||||||
subcloud_with_additional_detail.prestage_software_version = (
|
subcloud_with_additional_detail.prestage_software_version = (
|
||||||
base.SOFTWARE_VERSION
|
base.SOFTWARE_VERSION
|
||||||
)
|
)
|
||||||
|
|
|
@ -58,22 +58,21 @@ class TestCLISubcloudPeerGroupManager(base.BaseCommandTest):
|
||||||
self.client = self.app.client_manager.subcloud_peer_group_manager
|
self.client = self.app.client_manager.subcloud_peer_group_manager
|
||||||
|
|
||||||
def test_list_subcloud_peer_groups(self):
|
def test_list_subcloud_peer_groups(self):
|
||||||
self.client.subcloud_peer_group_manager.\
|
self.client.list_subcloud_peer_groups.return_value = [SubcloudPeerGroup]
|
||||||
list_subcloud_peer_groups.return_value = [SubcloudPeerGroup]
|
|
||||||
actual_call = self.call(subcloud_peer_group_cmd.ListSubcloudPeerGroup)
|
actual_call = self.call(subcloud_peer_group_cmd.ListSubcloudPeerGroup)
|
||||||
self.assertEqual([PG_TUPLE_WITH_DATE], actual_call[1])
|
self.assertEqual([PG_TUPLE_WITH_DATE], actual_call[1])
|
||||||
|
|
||||||
def test_show_subcloud_peer_group(self):
|
def test_show_subcloud_peer_group(self):
|
||||||
self.client.subcloud_peer_group_manager.\
|
self.client.subcloud_peer_group_detail.return_value = [SubcloudPeerGroup]
|
||||||
subcloud_peer_group_detail.return_value = [SubcloudPeerGroup]
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
subcloud_peer_group_cmd.ShowSubcloudPeerGroup, app_args=[PG_ID]
|
subcloud_peer_group_cmd.ShowSubcloudPeerGroup, app_args=[PG_ID]
|
||||||
)
|
)
|
||||||
self.assertEqual(PG_TUPLE_WITH_DATE, actual_call[1])
|
self.assertEqual(PG_TUPLE_WITH_DATE, actual_call[1])
|
||||||
|
|
||||||
def test_list_subcloud_peer_group_subclouds(self):
|
def test_list_subcloud_peer_group_subclouds(self):
|
||||||
self.client.subcloud_peer_group_manager.subcloud_peer_group_list_subclouds.\
|
self.client.subcloud_peer_group_list_subclouds.return_value = [
|
||||||
return_value = [base.SUBCLOUD_RESOURCE_WITH_PEERID]
|
base.SUBCLOUD_RESOURCE_WITH_PEERID
|
||||||
|
]
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
subcloud_peer_group_cmd.ListSubcloudPeerGroupSubclouds,
|
subcloud_peer_group_cmd.ListSubcloudPeerGroupSubclouds,
|
||||||
app_args=[base.ID],
|
app_args=[base.ID],
|
||||||
|
@ -83,8 +82,7 @@ class TestCLISubcloudPeerGroupManager(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_add_subcloud_peer_group(self):
|
def test_add_subcloud_peer_group(self):
|
||||||
self.client.subcloud_peer_group_manager.add_subcloud_peer_group.\
|
self.client.add_subcloud_peer_group.return_value = [SubcloudPeerGroup]
|
||||||
return_value = [SubcloudPeerGroup]
|
|
||||||
actual_call1 = self.call(
|
actual_call1 = self.call(
|
||||||
subcloud_peer_group_cmd.AddSubcloudPeerGroup,
|
subcloud_peer_group_cmd.AddSubcloudPeerGroup,
|
||||||
app_args=["--peer-group-name", PG_NAME],
|
app_args=["--peer-group-name", PG_NAME],
|
||||||
|
@ -106,12 +104,10 @@ class TestCLISubcloudPeerGroupManager(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_delete_subcloud_peer_group(self):
|
def test_delete_subcloud_peer_group(self):
|
||||||
self.call(subcloud_peer_group_cmd.DeleteSubcloudPeerGroup, app_args=[PG_ID])
|
self.call(subcloud_peer_group_cmd.DeleteSubcloudPeerGroup, app_args=[PG_ID])
|
||||||
self.client.subcloud_peer_group_manager.delete_subcloud_peer_group.\
|
self.client.delete_subcloud_peer_group.assert_called_once_with(PG_ID)
|
||||||
assert_called_once_with(PG_ID)
|
|
||||||
|
|
||||||
def test_update_subcloud_peer_group(self):
|
def test_update_subcloud_peer_group(self):
|
||||||
self.client.subcloud_peer_group_manager.update_subcloud_peer_group.\
|
self.client.update_subcloud_peer_group.return_value = [SubcloudPeerGroup]
|
||||||
return_value = [SubcloudPeerGroup]
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
subcloud_peer_group_cmd.UpdateSubcloudPeerGroup,
|
subcloud_peer_group_cmd.UpdateSubcloudPeerGroup,
|
||||||
app_args=[
|
app_args=[
|
||||||
|
|
|
@ -18,9 +18,7 @@ class TestSwDeployStrategy(UpdateStrategyMixin, base.BaseCommandTest):
|
||||||
# Increase results_length due to the 'upload only' field
|
# Increase results_length due to the 'upload only' field
|
||||||
self.results_length += 1
|
self.results_length += 1
|
||||||
|
|
||||||
self.sw_update_manager = (
|
self.sw_update_manager = self.app.client_manager.sw_deploy_manager
|
||||||
self.app.client_manager.sw_deploy_manager.sw_deploy_manager
|
|
||||||
)
|
|
||||||
self.create_command = cli_cmd.CreateSwDeployStrategy
|
self.create_command = cli_cmd.CreateSwDeployStrategy
|
||||||
self.show_command = cli_cmd.ShowSwDeployStrategy
|
self.show_command = cli_cmd.ShowSwDeployStrategy
|
||||||
self.delete_command = cli_cmd.DeleteSwDeployStrategy
|
self.delete_command = cli_cmd.DeleteSwDeployStrategy
|
||||||
|
|
|
@ -20,9 +20,7 @@ class TestSwPrestageStrategy(UpdateStrategyMixin, base.BaseCommandTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
self.sw_update_manager = (
|
self.sw_update_manager = self.app.client_manager.sw_prestage_manager
|
||||||
self.app.client_manager.sw_prestage_manager.sw_prestage_manager
|
|
||||||
)
|
|
||||||
|
|
||||||
p = mock.patch.object(getpass, "getpass")
|
p = mock.patch.object(getpass, "getpass")
|
||||||
self.mock_prompt = p.start()
|
self.mock_prompt = p.start()
|
||||||
|
|
|
@ -39,7 +39,7 @@ class TestCLISWUpdateManagerV1(base.BaseCommandTest):
|
||||||
def test_show_sw_update_strategy_step(self):
|
def test_show_sw_update_strategy_step(self):
|
||||||
results = []
|
results = []
|
||||||
results.append(STRATEGY_STEP)
|
results.append(STRATEGY_STEP)
|
||||||
self.client.strategy_step_manager.strategy_step_detail.return_value = results
|
self.client.strategy_step_detail.return_value = results
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
sw_update_cmd.ShowSwUpdateStrategyStep, app_args=[FAKE_CLOUD]
|
sw_update_cmd.ShowSwUpdateStrategyStep, app_args=[FAKE_CLOUD]
|
||||||
)
|
)
|
||||||
|
|
22
distributedcloud-client/dcmanagerclient/tests/v1/test_sw_update_options_manager.py
Executable file → Normal file
22
distributedcloud-client/dcmanagerclient/tests/v1/test_sw_update_options_manager.py
Executable file → Normal file
|
@ -54,9 +54,7 @@ class TestCLISWUpdateOptionsManagerV1(base.BaseCommandTest):
|
||||||
self.client = self.app.client_manager.sw_update_options_manager
|
self.client = self.app.client_manager.sw_update_options_manager
|
||||||
|
|
||||||
def test_list_sw_update_options(self):
|
def test_list_sw_update_options(self):
|
||||||
self.client.sw_update_options_manager.sw_update_options_list.return_value = [
|
self.client.sw_update_options_list.return_value = [SW_UPDATE_OPTION]
|
||||||
SW_UPDATE_OPTION
|
|
||||||
]
|
|
||||||
actual_call = self.call(sw_update_options_cmd.ListSwUpdateOptions)
|
actual_call = self.call(sw_update_options_cmd.ListSwUpdateOptions)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
[
|
[
|
||||||
|
@ -73,9 +71,7 @@ class TestCLISWUpdateOptionsManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_list_sw_update_options_empty(self):
|
def test_list_sw_update_options_empty(self):
|
||||||
self.client.sw_update_options_manager.sw_update_options_list.return_value = (
|
self.client.sw_update_options_list.return_value = []
|
||||||
[]
|
|
||||||
)
|
|
||||||
actual_call = self.call(sw_update_options_cmd.ListSwUpdateOptions)
|
actual_call = self.call(sw_update_options_cmd.ListSwUpdateOptions)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
(("<none>", "<none>", "<none>", "<none>", "<none>", "<none>"),),
|
(("<none>", "<none>", "<none>", "<none>", "<none>", "<none>"),),
|
||||||
|
@ -83,8 +79,7 @@ class TestCLISWUpdateOptionsManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_show_sw_update_options_default(self):
|
def test_show_sw_update_options_default(self):
|
||||||
self.client.sw_update_options_manager.sw_update_options_detail.\
|
self.client.sw_update_options_detail.return_value = [SW_UPDATE_OPTION]
|
||||||
return_value = [SW_UPDATE_OPTION]
|
|
||||||
actual_call = self.call(sw_update_options_cmd.ShowSwUpdateOptions)
|
actual_call = self.call(sw_update_options_cmd.ShowSwUpdateOptions)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
(
|
(
|
||||||
|
@ -101,8 +96,7 @@ class TestCLISWUpdateOptionsManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_show_sw_update_options_by_ref(self):
|
def test_show_sw_update_options_by_ref(self):
|
||||||
self.client.sw_update_options_manager.sw_update_options_detail.\
|
self.client.sw_update_options_detail.return_value = [SW_UPDATE_OPTION]
|
||||||
return_value = [SW_UPDATE_OPTION]
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
sw_update_options_cmd.ShowSwUpdateOptions, app_args=[FAKE_CLOUD]
|
sw_update_options_cmd.ShowSwUpdateOptions, app_args=[FAKE_CLOUD]
|
||||||
)
|
)
|
||||||
|
@ -121,8 +115,9 @@ class TestCLISWUpdateOptionsManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_update_sw_update_options(self):
|
def test_update_sw_update_options(self):
|
||||||
self.client.sw_update_options_manager.sw_update_options_update.\
|
self.client.sw_update_options_update.return_value = [
|
||||||
return_value = [UPDATED_SW_UPDATE_OPTION]
|
UPDATED_SW_UPDATE_OPTION
|
||||||
|
]
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
sw_update_options_cmd.UpdateSwUpdateOptions,
|
sw_update_options_cmd.UpdateSwUpdateOptions,
|
||||||
app_args=[
|
app_args=[
|
||||||
|
@ -149,8 +144,7 @@ class TestCLISWUpdateOptionsManagerV1(base.BaseCommandTest):
|
||||||
|
|
||||||
def test_delete_sw_update_options_by_ref(self):
|
def test_delete_sw_update_options_by_ref(self):
|
||||||
self.call(sw_update_options_cmd.DeleteSwUpdateOptions, app_args=[FAKE_CLOUD])
|
self.call(sw_update_options_cmd.DeleteSwUpdateOptions, app_args=[FAKE_CLOUD])
|
||||||
self.client.sw_update_options_manager.sw_update_options_delete.\
|
self.client.sw_update_options_delete.assert_called_once_with(FAKE_CLOUD)
|
||||||
assert_called_once_with(FAKE_CLOUD)
|
|
||||||
|
|
||||||
def test_delete_sw_update_options_without_ref(self):
|
def test_delete_sw_update_options_without_ref(self):
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
|
|
|
@ -13,9 +13,7 @@ class TestSwUpgradeStrategy(UpdateStrategyMixin, base.BaseCommandTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
self.sw_update_manager = (
|
self.sw_update_manager = self.app.client_manager.sw_upgrade_manager
|
||||||
self.app.client_manager.sw_upgrade_manager.sw_upgrade_manager
|
|
||||||
)
|
|
||||||
self.create_command = cli_cmd.CreateSwUpgradeStrategy
|
self.create_command = cli_cmd.CreateSwUpgradeStrategy
|
||||||
self.show_command = cli_cmd.ShowSwUpgradeStrategy
|
self.show_command = cli_cmd.ShowSwUpgradeStrategy
|
||||||
self.delete_command = cli_cmd.DeleteSwUpgradeStrategy
|
self.delete_command = cli_cmd.DeleteSwUpgradeStrategy
|
||||||
|
|
|
@ -112,9 +112,7 @@ class TestCLISystemPeerManagerV1(base.BaseCommandTest):
|
||||||
self.client = self.app.client_manager.system_peer_manager
|
self.client = self.app.client_manager.system_peer_manager
|
||||||
|
|
||||||
def test_list_system_peers(self):
|
def test_list_system_peers(self):
|
||||||
self.client.system_peer_manager.list_system_peers.return_value = [
|
self.client.list_system_peers.return_value = [SYSTEM_PEER]
|
||||||
SYSTEM_PEER
|
|
||||||
]
|
|
||||||
actual_call = self.call(system_peer_cmd.ListSystemPeer)
|
actual_call = self.call(system_peer_cmd.ListSystemPeer)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
[
|
[
|
||||||
|
@ -130,15 +128,13 @@ class TestCLISystemPeerManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_list_system_peers_empty(self):
|
def test_list_system_peers_empty(self):
|
||||||
self.client.system_peer_manager.list_system_peers.return_value = []
|
self.client.list_system_peers.return_value = []
|
||||||
actual_call = self.call(system_peer_cmd.ListSystemPeer)
|
actual_call = self.call(system_peer_cmd.ListSystemPeer)
|
||||||
self.assertEqual((tuple("<none>" for _ in range(5)),), actual_call[1])
|
self.assertEqual((tuple("<none>" for _ in range(5)),), actual_call[1])
|
||||||
|
|
||||||
def test_delete_system_peer_by_id(self):
|
def test_delete_system_peer_by_id(self):
|
||||||
self.call(system_peer_cmd.DeleteSystemPeer, app_args=[ID])
|
self.call(system_peer_cmd.DeleteSystemPeer, app_args=[ID])
|
||||||
self.client.system_peer_manager.delete_system_peer.assert_called_once_with(
|
self.client.delete_system_peer.assert_called_once_with(ID)
|
||||||
ID
|
|
||||||
)
|
|
||||||
|
|
||||||
def test_delete_system_peer_without_id(self):
|
def test_delete_system_peer_without_id(self):
|
||||||
self.assertRaises(
|
self.assertRaises(
|
||||||
|
@ -146,9 +142,7 @@ class TestCLISystemPeerManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_show_system_peer_with_id(self):
|
def test_show_system_peer_with_id(self):
|
||||||
self.client.system_peer_manager.system_peer_detail.return_value = [
|
self.client.system_peer_detail.return_value = [SYSTEM_PEER]
|
||||||
SYSTEM_PEER
|
|
||||||
]
|
|
||||||
actual_call = self.call(system_peer_cmd.ShowSystemPeer, app_args=[ID])
|
actual_call = self.call(system_peer_cmd.ShowSystemPeer, app_args=[ID])
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
(
|
(
|
||||||
|
@ -171,21 +165,19 @@ class TestCLISystemPeerManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_show_system_peer_without_id(self):
|
def test_show_system_peer_without_id(self):
|
||||||
self.client.system_peer_manager.system_peer_detail.return_value = []
|
self.client.system_peer_detail.return_value = []
|
||||||
actual_call = self.call(system_peer_cmd.ShowSystemPeer, app_args=[ID])
|
actual_call = self.call(system_peer_cmd.ShowSystemPeer, app_args=[ID])
|
||||||
self.assertEqual((tuple("<none>" for _ in range(14)),), actual_call[1])
|
self.assertEqual((tuple("<none>" for _ in range(14)),), actual_call[1])
|
||||||
|
|
||||||
def test_list_system_peer_subcloud_peer_groups(self):
|
def test_list_system_peer_subcloud_peer_groups(self):
|
||||||
self.client.system_peer_manager.system_peer_list_peer_groups.return_value = [
|
self.client.system_peer_list_peer_groups.return_value = [PEER_GROUP]
|
||||||
PEER_GROUP
|
|
||||||
]
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
system_peer_cmd.ListSystemPeerSubcloudPeerGroups, app_args=[ID]
|
system_peer_cmd.ListSystemPeerSubcloudPeerGroups, app_args=[ID]
|
||||||
)
|
)
|
||||||
self.assertEqual([PG_TUPLE], actual_call[1])
|
self.assertEqual([PG_TUPLE], actual_call[1])
|
||||||
|
|
||||||
def test_add_system_peer(self):
|
def test_add_system_peer(self):
|
||||||
self.client.system_peer_manager.add_system_peer.return_value = [SYSTEM_PEER]
|
self.client.add_system_peer.return_value = [SYSTEM_PEER]
|
||||||
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
system_peer_cmd.AddSystemPeer,
|
system_peer_cmd.AddSystemPeer,
|
||||||
|
@ -235,13 +227,11 @@ class TestCLISystemPeerManagerV1(base.BaseCommandTest):
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_update_system_peer(self):
|
def test_update_system_peer(self):
|
||||||
UPDATED_SYSTEM_PEER = copy.copy(SYSTEM_PEER)
|
updated_system_peer = copy.copy(SYSTEM_PEER)
|
||||||
UPDATED_SYSTEM_PEER.peer_controller_gateway_ip = (
|
updated_system_peer.peer_controller_gateway_ip = (
|
||||||
NEW_PEER_CONTROLLER_GATEWAY_IP
|
NEW_PEER_CONTROLLER_GATEWAY_IP
|
||||||
)
|
)
|
||||||
self.client.system_peer_manager.update_system_peer.return_value = [
|
self.client.update_system_peer.return_value = [updated_system_peer]
|
||||||
UPDATED_SYSTEM_PEER
|
|
||||||
]
|
|
||||||
actual_call = self.call(
|
actual_call = self.call(
|
||||||
system_peer_cmd.UpdateSystemPeer,
|
system_peer_cmd.UpdateSystemPeer,
|
||||||
app_args=[
|
app_args=[
|
||||||
|
|
|
@ -34,9 +34,9 @@ def do_action_on_many(action, resources, success_msg, error_msg):
|
||||||
try:
|
try:
|
||||||
action(resource)
|
action(resource)
|
||||||
print(success_msg % resource)
|
print(success_msg % resource)
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
failure_flag = True
|
failure_flag = True
|
||||||
print(e)
|
print(exc)
|
||||||
|
|
||||||
if failure_flag:
|
if failure_flag:
|
||||||
raise exceptions.DCManagerClientException(error_msg)
|
raise exceptions.DCManagerClientException(error_msg)
|
||||||
|
@ -73,9 +73,9 @@ def get_contents_if_file(contents_or_file_name):
|
||||||
path = os.path.abspath(contents_or_file_name)
|
path = os.path.abspath(contents_or_file_name)
|
||||||
definition_url = parse.urljoin("file:", request.pathname2url(path))
|
definition_url = parse.urljoin("file:", request.pathname2url(path))
|
||||||
return request.urlopen(definition_url).read().decode("utf8")
|
return request.urlopen(definition_url).read().decode("utf8")
|
||||||
except Exception as e:
|
except Exception as exc:
|
||||||
raise exceptions.DCManagerClientException(
|
raise exceptions.DCManagerClientException(
|
||||||
f"Error: Could not open file {contents_or_file_name}: {e}"
|
f"Error: Could not open file {contents_or_file_name}: {exc}"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -96,10 +96,10 @@ def prompt_for_password(password_type="sysadmin", item_type="subcloud"):
|
||||||
print("Passwords did not match")
|
print("Passwords did not match")
|
||||||
continue
|
continue
|
||||||
break
|
break
|
||||||
except KeyboardInterrupt as e:
|
except KeyboardInterrupt as exc:
|
||||||
raise exceptions.DCManagerClientException(
|
raise exceptions.DCManagerClientException(
|
||||||
"\nPassword prompt interrupted."
|
"\nPassword prompt interrupted."
|
||||||
) from e
|
) from exc
|
||||||
return password
|
return password
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue