Skip to content
Closed
6 changes: 6 additions & 0 deletions azure-cli2017.pyproj
Original file line number Diff line number Diff line change
Expand Up @@ -293,6 +293,8 @@
<Compile Include="azure-cli\azure\cli\command_modules\backup\custom.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\tests\latest\preparers.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\tests\latest\test_backup_commands.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\tests\latest\test_backup_commands_wl.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\tests\latest\test_backup_commands_wl_help.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\tests\latest\__init__.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\tests\__init__.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\_client_factory.py" />
Expand All @@ -301,6 +303,10 @@
<Compile Include="azure-cli\azure\cli\command_modules\backup\_params.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\_validators.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\__init__.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\custom_base.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\custom_help.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\custom_wl.py" />
<Compile Include="azure-cli\azure\cli\command_modules\backup\custom_common.py" />
<Compile Include="azure-cli\azure\cli\command_modules\batchai\commands.py" />
<Compile Include="azure-cli\azure\cli\command_modules\batchai\custom.py" />
<Compile Include="azure-cli\azure\cli\command_modules\batchai\tests\latest\test_batchai_custom.py" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ def backup_storage_configs_cf(cli_ctx, *_):


# Protection Client Factories
def protection_intent_cf(cli_ctx, *_):
return _backup_client_factory(cli_ctx).protection_intent


def protection_policies_cf(cli_ctx, *_):
return _backup_client_factory(cli_ctx).protection_policies

Expand All @@ -63,6 +67,14 @@ def protection_containers_cf(cli_ctx, *_):
return _backup_client_factory(cli_ctx).protection_containers


def protectable_containers_cf(cli_ctx, *_):
return _backup_client_factory(cli_ctx).protectable_containers


def protection_container_operation_results_cf(cli_ctx, *_):
return _backup_client_factory(cli_ctx).protection_container_operation_results


def protection_container_refresh_operation_results_cf(cli_ctx, *_):
return _backup_client_factory(cli_ctx).protection_container_refresh_operation_results

Expand Down Expand Up @@ -100,6 +112,10 @@ def backup_jobs_cf(cli_ctx, *_):
return _backup_client_factory(cli_ctx).backup_jobs


def backup_workload_items_cf(cli_ctx, *_):
return _backup_client_factory(cli_ctx).backup_workload_items


# Job Client Factories
def job_details_cf(cli_ctx, *_):
return _backup_client_factory(cli_ctx).job_details
Expand Down
148 changes: 146 additions & 2 deletions src/azure-cli/azure/cli/command_modules/backup/_format.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,29 @@


def transform_container(result):
return OrderedDict([('Name', result['properties']['friendlyName']),
return OrderedDict([('Name', result['name']),
('Resource Group', result['resourceGroup']),
('Type', result['properties']['backupManagementType']),
('Registration Status', result['properties']['registrationStatus'])])


def transform_wl_container(result):
columns = []
columns.append(('Name', result['name']))
columns.append(('Status', result['properties']['registrationStatus']))
columns.append(('Container Type', result['properties']['containerType']))

workloads = [workload['type'] for workload in result['properties']['extendedInfo']['inquiryInfo']['inquiryDetails']]

columns.append(('Workloads Present', ', '.join(workloads)))
columns.append(('Health Status', result['properties']['healthStatus']))

return OrderedDict(columns)


def transform_item(result):
columns = []
columns.append(('Name', result['properties']['friendlyName']))
columns.append(('Name', result['name']))
columns.append(('Resource Group', result['resourceGroup']))
columns.append(('Type', result['properties']['workloadType']))
columns.append(('Last Backup Status', result['properties']['lastBackupStatus']))
Expand All @@ -32,6 +46,28 @@ def transform_item(result):
return OrderedDict(columns)


def transform_wl_item(result):
columns = []
columns.append(('Name', result['name']))
columns.append(('WorkloadType', result['properties']['workloadType']))
columns.append(('ContainerUniqueName', result['properties']['containerName']))
columns.append(('Protection Status', result['properties']['protectionStatus']))
columns.append(('Latest Recovery Point', result['properties']['lastRecoveryPoint']))

return OrderedDict(columns)


def transform_protectable_item(result):
columns = []
columns.append(('Name', result['name']))
columns.append(('Protectable Item Type', result['properties']['protectableItemType']))
columns.append(('ParentName', result['properties']['parentName']))
columns.append(('ServerName', result['properties']['serverName']))
columns.append(('isProtected', result['properties']['protectionState']))

return OrderedDict(columns)


def transform_job(result):
columns = []
columns.append(('Name', result['name']))
Expand All @@ -48,6 +84,39 @@ def transform_job(result):
return OrderedDict(columns)


def transform_wl_policy(result):
return OrderedDict([('Name', result['name']),
('Resource Group', result['resourceGroup']),
('BackupManagementType', result['properties']['backupManagementType']),
('WorkloadType', result['properties']['workLoadType'])])


def transform_workload_policy_show(result):
columns = []
columns.append(('Name', result['name']))
columns.append(('WorkloadType', result['properties']['workLoadType']))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

columns = [
    ('Name', result['name']),
    ('WorkloadType', result['properties']['workLoadType'])
]

Maybe more readable


sub_protection_policy = result['properties']['subProtectionPolicy']
differential, log = [False] * 2

for policy in sub_protection_policy:
if policy['policyType'] == 'Full':
backup_time = policy['schedulePolicy']['scheduleRunTimes'][0]
frequency = policy['schedulePolicy']['scheduleRunFrequency']
if policy['policyType'] == 'Log':
log = True
if policy['policyType'] == 'Differential':
differential = True

columns.append(('BackupTime', backup_time))
columns.append(('Frequency', frequency))
columns.append(('IsDifferentialBackupEnabled', 'Yes' if differential else 'No'))
if result['properties']['workLoadType'] == 'SQLDataBase':
columns.append(('IsLogBackupEnabled', 'Yes' if log else 'No'))

return OrderedDict(columns)


def transform_policy(result):
return OrderedDict([('Name', result['name']),
('Resource Group', result['resourceGroup']),
Expand All @@ -60,6 +129,48 @@ def transform_recovery_point(result):
('Consistency', result['properties']['recoveryPointType'])])


def transform_wl_recovery_point(result):
return OrderedDict([('Name', result['name']),
('Time', result['properties']['recoveryPointTimeInUtc']),
('Consistency', result['properties']['type']),
('BackupManagementType', "AzureWorkload"),
('Item Name', result['id'].split('/')[14]),
('RecoveryPointType', result['properties']['objectType'])])


def transform_enable_protection_for_azure_wl(result):
return OrderedDict([('Workload Name', result['properties']['entityFriendlyName']),
('Operation', result['properties']['operation']),
('Status', result['properties']['status']),
('Start Time', result['properties']['startTime']),
('End Time', result['properties']['endTime']),
('Job Id', result['properties']['activityId'])])


def transform_containers_list(container_list):
if container_list != [] and container_list[0]['properties']['backupManagementType'] == 'AzureWorkload':
return transform_wl_container_list(container_list)
return transform_container_list(container_list)


def transform_policies_list(policy_list):
if policy_list != [] and policy_list[0]['properties']['backupManagementType'] == 'AzureWorkload':
return transform_wl_policy_list(policy_list)
return transform_policy_list(policy_list)


def transform_items_list(item_list):
if item_list != [] and item_list[0]['properties']['backupManagementType'] == 'AzureWorkload':
return transform_wl_item_list(item_list)
return transform_item_list(item_list)


def transform_recovery_points_list(recovery_point_list):
if recovery_point_list != [] and recovery_point_list[0]['id'].split('/')[12].split(';')[0] == 'VMAppContainer':
return transform_wl_recovery_point_list(recovery_point_list)
return transform_recovery_point_list(recovery_point_list)


def transform_container_list(container_list):
return [transform_container(c) for c in container_list]

Expand All @@ -68,6 +179,10 @@ def transform_item_list(item_list):
return [transform_item(i) for i in item_list]


def transform_protectable_item_list(protectable_item_list):
return [transform_protectable_item(i) for i in protectable_item_list]


def transform_job_list(job_list):
return [transform_job(j) for j in job_list]

Expand All @@ -78,3 +193,32 @@ def transform_policy_list(policy_list):

def transform_recovery_point_list(recovery_point_list):
return [transform_recovery_point(rp) for rp in recovery_point_list]


def transform_wl_recovery_point_list(recovery_point_list):
return [transform_wl_recovery_point(rp) for rp in recovery_point_list]


def transform_wl_container_list(container_list):
return [transform_wl_container(c) for c in container_list]


def transform_wl_item_list(item_list):
return [transform_wl_item(i) for i in item_list]


def transform_wl_policy_list(policy_list):
return [transform_wl_policy(p) for p in policy_list]


def transform_wl_policy_set(policy):
if policy['properties']['backupManagementType'] == 'AzureWorkload':
return [transform_workload_policy_show(p) for p in [policy]]
return []


def transform_wl_policy_show(policy_list):
if isinstance(policy_list, list) and policy_list != []:
if policy_list[0]['properties']['backupManagementType'] == 'AzureWorkload':
return [transform_workload_policy_show(p) for p in policy_list]
return []
Loading