Esempio n. 1
0
def set_policy(cmd,
               client,
               resource_group_name,
               vault_name,
               policy=None,
               name=None,
               fix_for_inconsistent_items=None,
               backup_management_type=None,
               tenant_id=None):
    if backup_management_type is None and policy is not None:
        policy_object = custom_help.get_policy_from_json(client, policy)
        backup_management_type = policy_object.properties.backup_management_type.lower(
        )
    is_critical_operation = custom_help.has_resource_guard_mapping(
        cmd.cli_ctx, resource_group_name, vault_name, "updatePolicy")

    if backup_management_type.lower() == "azureiaasvm":
        return custom.set_policy(cmd, client, resource_group_name, vault_name,
                                 policy, name, tenant_id,
                                 is_critical_operation)
    if backup_management_type.lower() == "azurestorage":
        return custom_afs.set_policy(cmd, client, resource_group_name,
                                     vault_name, policy, name, tenant_id,
                                     is_critical_operation)
    if backup_management_type.lower() == "azureworkload":
        return custom_wl.set_policy(cmd, client, resource_group_name,
                                    vault_name, policy, name,
                                    fix_for_inconsistent_items, tenant_id,
                                    is_critical_operation)
    return None
Esempio n. 2
0
def create_policy(client, resource_group_name, vault_name, name, policy):
    policy_object = helper.get_policy_from_json(client, policy)
    policy_object.name = name
    if backup_management_type is not None:
        policy_object.properties.backup_management_type = backup_management_type
    policy_object.properties.work_load_type = workload_type
    return client.create_or_update(vault_name, resource_group_name, name, policy_object)
Esempio n. 3
0
def set_policy(cmd, client, resource_group_name, vault_name, policy, policy_name, fix_for_inconsistent_items,
               tenant_id=None, is_critical_operation=False):
    if policy_name is None:
        raise CLIError(
            """
            Policy name is required for set policy.
            """)

    if policy is not None:
        policy_object = cust_help.get_policy_from_json(client, policy)
        if is_critical_operation:
            existing_policy = common.show_policy(client, resource_group_name, vault_name, policy_name)
            if cust_help.is_retention_duration_decreased(existing_policy, policy_object, "AzureWorkload"):
                # update the payload with critical operation and add auxiliary header for cross tenant case
                if tenant_id is not None:
                    client = get_mgmt_service_client(cmd.cli_ctx, RecoveryServicesBackupClient,
                                                     aux_tenants=[tenant_id]).protection_policies
                policy_object.properties.resource_guard_operation_requests = [
                    cust_help.get_resource_guard_operation_request(cmd.cli_ctx, resource_group_name, vault_name,
                                                                   "updatePolicy")]
    else:
        if fix_for_inconsistent_items:
            policy_object = common.show_policy(client, resource_group_name, vault_name, policy_name)
            policy_object.properties.make_policy_consistent = True
        else:
            raise CLIError(
                """
                Please provide policy object.
                """)

    return client.create_or_update(vault_name, resource_group_name, policy_name, policy_object)
Esempio n. 4
0
def set_policy(cmd,
               client,
               resource_group_name,
               vault_name,
               policy,
               policy_name,
               tenant_id=None,
               is_critical_operation=False):
    if policy_name is None:
        raise CLIError("""
            Policy name is required for set policy.
            """)

    policy_object = helper.get_policy_from_json(client, policy)
    policy_object.properties.work_load_type = workload_type
    existing_policy = common.show_policy(client, resource_group_name,
                                         vault_name, policy_name)
    helper.validate_update_policy_request(existing_policy, policy_object)
    if is_critical_operation:
        if helper.is_retention_duration_decreased(existing_policy,
                                                  policy_object,
                                                  "AzureStorage"):
            # update the payload with critical operation and add auxiliary header for cross tenant case
            if tenant_id is not None:
                client = get_mgmt_service_client(
                    cmd.cli_ctx,
                    RecoveryServicesBackupClient,
                    aux_tenants=[tenant_id]).protection_policies
            policy_object.properties.resource_guard_operation_requests = [
                helper.get_resource_guard_operation_request(
                    cmd.cli_ctx, resource_group_name, vault_name,
                    "updatePolicy")
            ]
    return client.create_or_update(vault_name, resource_group_name,
                                   policy_name, policy_object)
Esempio n. 5
0
def create_policy(client, resource_group_name, vault_name, policy_name, policy, workload_type):
    workload_type = workload_type_map[workload_type]
    policy_object = cust_help.get_policy_from_json(client, policy)
    policy_object.properties.backup_management_type = "AzureWorkload"
    policy_object.properties.workload_type = workload_type
    policy_object.name = policy_name

    return client.create_or_update(vault_name, resource_group_name, policy_name, policy_object)
Esempio n. 6
0
def new_policy(client, resource_group_name, vault_name, policy, policy_name,
               container_type, workload_type):
    policy_object = custom_help.get_policy_from_json(client, policy)
    policy_object.properties.backup_management_type = container_type
    policy_object.properties.workload_type = workload_type

    return client.create_or_update(vault_name, resource_group_name,
                                   policy_name, policy_object)
Esempio n. 7
0
def set_policy(client, resource_group_name, vault_name, policy, name=None):
    policy_object = custom_help.get_policy_from_json(client, policy)
    if policy_object.properties.backup_management_type.lower() == "azureiaasvm":
        return custom.set_policy(client, resource_group_name, vault_name, policy, name)
    if policy_object.properties.backup_management_type.lower() == "azurestorage":
        return custom_afs.set_policy(client, resource_group_name, vault_name, policy, name)
    if policy_object.properties.backup_management_type == "AzureWorkload":
        return custom_wl.set_policy(client, resource_group_name, vault_name, policy, name)
    return None
Esempio n. 8
0
def set_policy(client, resource_group_name, vault_name, policy, policy_name):
    if policy_name is None:
        raise CLIError("""
            Policy name is required for set policy.
            """)

    policy_object = cust_help.get_policy_from_json(client, policy)

    return client.create_or_update(vault_name, resource_group_name,
                                   policy_name, policy_object)
Esempio n. 9
0
def set_policy(client, resource_group_name, vault_name, policy, policy_name):
    if policy_name is None:
        raise CLIError(
            """
            Policy name is required for set policy.
            """)

    policy_object = helper.get_policy_from_json(client, policy)
    policy_object.properties.work_load_type = workload_type
    existing_policy = common.show_policy(client, resource_group_name, vault_name, policy_name)
    helper.validate_update_policy_request(existing_policy, policy_object)

    return client.create_or_update(vault_name, resource_group_name, policy_name, policy_object)
Esempio n. 10
0
def set_policy(client, resource_group_name, vault_name, policy=None, name=None,
               fix_for_inconsistent_items=None, backup_management_type=None):
    if backup_management_type is None and policy is not None:
        policy_object = custom_help.get_policy_from_json(client, policy)
        backup_management_type = policy_object.properties.backup_management_type.lower()
    if backup_management_type.lower() == "azureiaasvm":
        return custom.set_policy(client, resource_group_name, vault_name, policy, name)
    if backup_management_type.lower() == "azurestorage":
        return custom_afs.set_policy(client, resource_group_name, vault_name, policy, name)
    if backup_management_type.lower() == "azureworkload":
        return custom_wl.set_policy(client, resource_group_name, vault_name, policy, name,
                                    fix_for_inconsistent_items)
    return None
Esempio n. 11
0
def set_policy(client, resource_group_name, vault_name, policy, policy_name, fix_for_inconsistent_items):
    if policy_name is None:
        raise CLIError(
            """
            Policy name is required for set policy.
            """)

    if policy is not None:
        policy_object = cust_help.get_policy_from_json(client, policy)
    else:
        if fix_for_inconsistent_items:
            policy_object = common.show_policy(client, resource_group_name, vault_name, policy_name)
            policy_object.properties.make_policy_consistent = True
        else:
            raise CLIError(
                """
                Please provide policy object.
                """)

    return client.create_or_update(vault_name, resource_group_name, policy_name, policy_object)