Merge "Include storage location in backup status"
This commit is contained in:
@@ -196,7 +196,8 @@ BACKUP_STATE_PREP_FAILED = 'backup-prep-failed'
|
||||
BACKUP_STATE_IN_PROGRESS = 'backing-up'
|
||||
BACKUP_STATE_FAILED = 'failed'
|
||||
BACKUP_STATE_UNKNOWN = 'unknown'
|
||||
BACKUP_STATE_COMPLETE = 'complete'
|
||||
BACKUP_STATE_COMPLETE_LOCAL = 'complete-local'
|
||||
BACKUP_STATE_COMPLETE_CENTRAL = 'complete-central'
|
||||
|
||||
# Upgrades States
|
||||
UPGRADE_STATE_DATA_MIGRATION = 'data-migration'
|
||||
|
@@ -849,8 +849,9 @@ class SubcloudManager(manager.Manager):
|
||||
self._fail_subcloud_backup_prep(context, subcloud)
|
||||
return subcloud, False
|
||||
|
||||
success = self._run_subcloud_backup_create_playbook(subcloud, backup_command,
|
||||
context)
|
||||
local_only = payload.get('local_only') or False
|
||||
success = self._run_subcloud_backup_create_playbook(
|
||||
subcloud, backup_command, context, local_only)
|
||||
|
||||
if success:
|
||||
utils.delete_subcloud_inventory(overrides_file)
|
||||
@@ -1058,7 +1059,8 @@ class SubcloudManager(manager.Manager):
|
||||
|
||||
return backup_overrides_file
|
||||
|
||||
def _run_subcloud_backup_create_playbook(self, subcloud, backup_command, context):
|
||||
def _run_subcloud_backup_create_playbook(self, subcloud, backup_command,
|
||||
context, local_only):
|
||||
log_file = os.path.join(consts.DC_ANSIBLE_LOG_DIR, subcloud.name) + \
|
||||
'_playbook_output.log'
|
||||
|
||||
@@ -1070,9 +1072,16 @@ class SubcloudManager(manager.Manager):
|
||||
# Run the subcloud backup playbook
|
||||
try:
|
||||
run_playbook(log_file, backup_command)
|
||||
|
||||
# Decide between complete-local or complete-central
|
||||
if local_only:
|
||||
backup_status = consts.BACKUP_STATE_COMPLETE_LOCAL
|
||||
else:
|
||||
backup_status = consts.BACKUP_STATE_COMPLETE_CENTRAL
|
||||
|
||||
db_api.subcloud_update(
|
||||
context, subcloud.id,
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE,
|
||||
backup_status=backup_status,
|
||||
backup_datetime=datetime.datetime.utcnow())
|
||||
|
||||
LOG.info("Successfully backed up subcloud %s" % subcloud.name)
|
||||
|
@@ -618,7 +618,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -643,7 +643,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_OFFLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -665,7 +665,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_UNMANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -688,7 +688,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -713,7 +713,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
HEADER = copy.copy(FAKE_HEADERS)
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -737,7 +737,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -762,7 +762,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
|
||||
invalid_url = '/v1.0/subcloud-backup/fake/'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -785,7 +785,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
data = {'sysadmin_password': fake_password,
|
||||
@@ -807,7 +807,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -832,7 +832,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -855,7 +855,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_LOCAL)
|
||||
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -872,7 +872,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
self.assertEqual(response.status_int, 207)
|
||||
|
||||
@mock.patch.object(rpc_client, 'ManagerClient')
|
||||
def test_backup_delete_no_local_only(self, mock_rpc_client):
|
||||
def test_backup_delete_central(self, mock_rpc_client):
|
||||
|
||||
subcloud = fake_subcloud.create_fake_subcloud(self.ctx)
|
||||
|
||||
@@ -881,7 +881,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -898,7 +898,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
self.assertEqual(response.status_int, 207)
|
||||
|
||||
@mock.patch.object(rpc_client, 'ManagerClient')
|
||||
def test_backup_delete_unknown_local_only(self, mock_rpc_client):
|
||||
def test_backup_delete_invalid_local_only(self, mock_rpc_client):
|
||||
|
||||
subcloud = fake_subcloud.create_fake_subcloud(self.ctx)
|
||||
|
||||
@@ -907,7 +907,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_LOCAL)
|
||||
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
@@ -931,7 +931,7 @@ class TestSubcloudDelete(testroot.DCManagerApiTest):
|
||||
availability_status=dccommon_consts.AVAILABILITY_ONLINE,
|
||||
management_state=dccommon_consts.MANAGEMENT_MANAGED,
|
||||
backup_datetime=timeutils.utcnow(),
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE)
|
||||
backup_status=consts.BACKUP_STATE_COMPLETE_LOCAL)
|
||||
|
||||
release_version = '22.12'
|
||||
fake_password = (base64.b64encode('testpass'.encode("utf-8"))).decode('ascii')
|
||||
|
@@ -1836,7 +1836,7 @@ class TestSubcloudManager(base.DCManagerTestCase):
|
||||
mock_delete_subcloud_inventory.assert_called_once_with(override_file)
|
||||
|
||||
updated_subcloud = db_api.subcloud_get_by_name(self.ctx, subcloud.name)
|
||||
self.assertEqual(consts.BACKUP_STATE_COMPLETE,
|
||||
self.assertEqual(consts.BACKUP_STATE_COMPLETE_CENTRAL,
|
||||
updated_subcloud.backup_status)
|
||||
|
||||
@mock.patch.object(subcloud_manager.SubcloudManager,
|
||||
@@ -1879,7 +1879,7 @@ class TestSubcloudManager(base.DCManagerTestCase):
|
||||
subcloud = self.create_subcloud_static(
|
||||
self.ctx,
|
||||
name='subcloud1',
|
||||
deploy_status=consts.BACKUP_STATE_COMPLETE)
|
||||
deploy_status=consts.BACKUP_STATE_COMPLETE_CENTRAL)
|
||||
|
||||
values = copy.copy(FAKE_BACKUP_DELETE_LOAD_1)
|
||||
RELEASE_VERSION = '22.12'
|
||||
|
Reference in New Issue
Block a user