Output an informative message After running out-of-sync operations
Add a minor enhancement to GEO-redundancy. Output an informative message after running below out-of-sync operations, informing the operator that a sync command should be executed. Adding subcloud(s) to the SPG. Removing subcloud(s) from the SPG. Updating subcloud(s) in the SPG. Updating SPG Test plan: Pre-Steps: 1. Create the system peer group from Site A to Site B 2. Create System peer from Site B to Site A 3. Create the subcloud peer group in the Site A 4. Add subcloud(s) to the peer group 5. Create peer group association to associate system peer and subcloud peer group - Site A 6. Check current sync status on Sites A and B. Verify they are 'in-sync'. PASS: Verify that the corresponding informative message is printed out after running below out-of-sync operations: 1. Adding subcloud to the SPG. 2. Removing subcloud from the SPG. 3. Updating subcloud in the SPG, for example, renaming, updating network reconfiguration parameters or install values. 4. Updating SPG fields: max_subcloud_rehoming, group_state Closes-Bug: 2054124 Change-Id: I1614a719190b2645eb8139b158b0bab257d0f91d Signed-off-by: lzhu1 <li.zhu@windriver.com>
This commit is contained in:
parent
83f76109a7
commit
88cc16386e
|
@ -55,7 +55,8 @@ class Subcloud(Resource):
|
|||
'prestage-software-version': 'prestage_software_version',
|
||||
'prestage-status': 'prestage_status',
|
||||
'prestage-versions': 'prestage_versions',
|
||||
'region-name': 'region_name'
|
||||
'region-name': 'region_name',
|
||||
'info_message': 'info_message'
|
||||
}
|
||||
|
||||
def __init__(self, manager, subcloud_id, name, description, location,
|
||||
|
@ -67,7 +68,8 @@ class Subcloud(Resource):
|
|||
backup_status=None, backup_datetime=None,
|
||||
error_description=None, prestage_software_version=None,
|
||||
peer_group_id=None, rehome_data=None, region_name=None,
|
||||
prestage_status=None, prestage_versions=None):
|
||||
prestage_status=None, prestage_versions=None,
|
||||
info_message=None):
|
||||
if endpoint_sync_status is None:
|
||||
endpoint_sync_status = {}
|
||||
self.manager = manager
|
||||
|
@ -100,6 +102,7 @@ class Subcloud(Resource):
|
|||
self.region_name = region_name
|
||||
self.prestage_status = prestage_status
|
||||
self.prestage_versions = prestage_versions
|
||||
self.info_message = info_message
|
||||
|
||||
@classmethod
|
||||
def from_payload(cls, manager, payload):
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (c) 2023 Wind River Systems, Inc.
|
||||
# Copyright (c) 2023, 2024 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
@ -24,7 +24,8 @@ class SubcloudPeerGroup(base.Resource):
|
|||
system_leader_name,
|
||||
max_subcloud_rehoming,
|
||||
created_at,
|
||||
updated_at):
|
||||
updated_at,
|
||||
info_message):
|
||||
self.manager = manager
|
||||
self.id = peer_group_id
|
||||
self.peer_group_name = peer_group_name
|
||||
|
@ -36,6 +37,7 @@ class SubcloudPeerGroup(base.Resource):
|
|||
self.max_subcloud_rehoming = max_subcloud_rehoming
|
||||
self.created_at = created_at
|
||||
self.updated_at = updated_at
|
||||
self.info_message = info_message
|
||||
|
||||
|
||||
class subcloud_peer_group_manager(base.ResourceManager):
|
||||
|
@ -56,7 +58,8 @@ class subcloud_peer_group_manager(base.ResourceManager):
|
|||
system_leader_name=json_object['system_leader_name'],
|
||||
max_subcloud_rehoming=json_object['max_subcloud_rehoming'],
|
||||
created_at=json_object['created-at'],
|
||||
updated_at=json_object['updated-at'])
|
||||
updated_at=json_object['updated-at'],
|
||||
info_message=json_object.get('info_message'))
|
||||
|
||||
def _subcloud_peer_group_detail(self, url):
|
||||
resp = self.http_client.get(url)
|
||||
|
|
|
@ -26,7 +26,8 @@ from dcmanagerclient import utils
|
|||
|
||||
|
||||
SET_FIELD_VALUE_DICT = {
|
||||
"region_name": None
|
||||
"region_name": None,
|
||||
"info_message": None
|
||||
}
|
||||
|
||||
|
||||
|
@ -549,6 +550,27 @@ class ManageSubcloud(base.DCManagerShowOne):
|
|||
|
||||
class UpdateSubcloud(base.DCManagerShowOne):
|
||||
"""Update attributes of a subcloud."""
|
||||
_info_message = None
|
||||
|
||||
@property
|
||||
def info_message(self):
|
||||
return self._info_message
|
||||
|
||||
@info_message.setter
|
||||
def info_message(self, value):
|
||||
self._info_message = value
|
||||
|
||||
def produce_output(self, parsed_args, column_names, data):
|
||||
"""Overrides method from cliff.Lister/cliff.ShowOne."""
|
||||
|
||||
# Print out a note or informational message above the formatted
|
||||
# response.
|
||||
if self._info_message:
|
||||
self.app.stdout.write(
|
||||
(self._info_message + '') if self._info_message.endswith('\n')
|
||||
else '\n')
|
||||
|
||||
return super().produce_output(parsed_args, column_names, data)
|
||||
|
||||
def _get_format_function(self):
|
||||
return detail_format
|
||||
|
@ -739,6 +761,7 @@ class UpdateSubcloud(base.DCManagerShowOne):
|
|||
try:
|
||||
result = dcmanager_client.subcloud_manager.update_subcloud(
|
||||
subcloud_ref, files=files, data=data)
|
||||
self._info_message = getattr(result[0], 'info_message')
|
||||
update_fields_values(result)
|
||||
return result
|
||||
except Exception as e:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# Copyright (c) 2023 Wind River Systems, Inc.
|
||||
# Copyright (c) 2023, 2024 Wind River Systems, Inc.
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
#
|
||||
|
@ -227,6 +227,27 @@ class ListSubcloudPeerGroupSubclouds(base.DCManagerLister):
|
|||
|
||||
class UpdateSubcloudPeerGroup(base.DCManagerShowOne):
|
||||
"""Update attributes of a subcloud peer group."""
|
||||
_info_message = None
|
||||
|
||||
@property
|
||||
def info_message(self):
|
||||
return self._info_message
|
||||
|
||||
@info_message.setter
|
||||
def info_message(self, value):
|
||||
self._info_message = value
|
||||
|
||||
def produce_output(self, parsed_args, column_names, data):
|
||||
"""Overrides method from cliff.Lister/cliff.ShowOne."""
|
||||
|
||||
# Print out a note or informational message above the formatted
|
||||
# response.
|
||||
if self._info_message:
|
||||
self.app.stdout.write(
|
||||
(self._info_message + '') if self._info_message.endswith('\n')
|
||||
else '\n')
|
||||
|
||||
return super().produce_output(parsed_args, column_names, data)
|
||||
|
||||
def _get_format_function(self):
|
||||
return group_format
|
||||
|
@ -280,9 +301,11 @@ class UpdateSubcloudPeerGroup(base.DCManagerShowOne):
|
|||
raise exceptions.DCManagerClientException(error_msg)
|
||||
|
||||
try:
|
||||
return dcmanager_client. \
|
||||
result = dcmanager_client. \
|
||||
subcloud_peer_group_manager.update_subcloud_peer_group(
|
||||
subcloud_peer_group_ref, **kwargs)
|
||||
self._info_message = getattr(result[0], 'info_message')
|
||||
return result
|
||||
except Exception as e:
|
||||
print(e)
|
||||
msg = "Unable to update subcloud peer group %s" % (
|
||||
|
|
|
@ -34,7 +34,8 @@ SubcloudPeerGroup = Peergroup(
|
|||
PG_SYSTEM_LEADER_NAME,
|
||||
PG_MAX_SUBCLOUD_REHOMING,
|
||||
PG_CREATED_AT,
|
||||
PG_UPDATED_AT
|
||||
PG_UPDATED_AT,
|
||||
None
|
||||
)
|
||||
|
||||
PG_TUPLE = (PG_ID,
|
||||
|
|
|
@ -94,7 +94,8 @@ PEER_GROUP = Peergroup(
|
|||
PG_SYSTEM_LEADER_NAME,
|
||||
PG_MAX_SUBCLOUD_REHOMING,
|
||||
PG_CREATED_AT,
|
||||
PG_UPDATED_AT
|
||||
PG_UPDATED_AT,
|
||||
None
|
||||
)
|
||||
PG_TUPLE = (PG_ID,
|
||||
PG_NAME,
|
||||
|
|
Loading…
Reference in New Issue