Exemple #1
0
def show_protectable_instance(items, server_name, protectable_item_type):
    if server_name is None:
        raise RequiredArgumentMissingError("""
        Server name missing. Please provide a valid server name using --target-server-name.
        """)

    if protectable_item_type is None:
        az_error = RequiredArgumentMissingError("""
        Protectable item type missing. Please provide a valid protectable item type name using --target-server-type.
        """)
        recommendation_text = "{} are the allowed values.".format(
            str(list(protectable_item_type_map.keys())))
        az_error.set_recommendation(recommendation_text)
        raise az_error

    protectable_item_type = _check_map(protectable_item_type,
                                       protectable_item_type_map)
    # Protectable Item Type filter
    filtered_items = [
        item for item in items
        if item.properties.protectable_item_type is not None
        and item.properties.protectable_item_type.lower() ==
        protectable_item_type.lower()
    ]
    # Server Name filter
    filtered_items = [
        item for item in filtered_items
        if item.properties.server_name.lower() == server_name.lower()
    ]

    return cust_help.get_none_one_or_many(filtered_items)
def show_item(cmd,
              client,
              resource_group_name,
              vault_name,
              container_name,
              name,
              backup_management_type=None,
              workload_type=None):
    if custom_help.is_native_name(name) and custom_help.is_native_name(
            container_name):
        client = protected_items_cf(cmd.cli_ctx)
        return client.get(vault_name, resource_group_name, fabric_name,
                          container_name, name)
    container_type = custom_help.validate_and_extract_container_type(
        container_name, backup_management_type)

    items = list_items(cmd, client, resource_group_name, vault_name,
                       workload_type, container_name, container_type)

    if custom_help.is_native_name(name):
        filtered_items = [
            item for item in items if item.name.lower() == name.lower()
        ]
    else:
        filtered_items = [
            item for item in items
            if item.properties.friendly_name.lower() == name.lower()
        ]

    return custom_help.get_none_one_or_many(filtered_items)
Exemple #3
0
def show_protectable_item(items, name, server_name, protectable_item_type):
    protectable_item_type = _check_map(protectable_item_type,
                                       protectable_item_type_map)
    # Name filter
    if cust_help.is_native_name(name):
        filtered_items = [
            item for item in items if item.name.lower() == name.lower()
        ]
    else:
        filtered_items = [
            item for item in items
            if item.properties.friendly_name.lower() == name.lower()
        ]

    # Server Name filter
    filtered_items = [
        item for item in filtered_items
        if item.properties.server_name.lower() == server_name.lower()
    ]

    # Protectable Item Type filter
    filtered_items = [
        item for item in filtered_items
        if item.properties.protectable_item_type.lower() ==
        protectable_item_type.lower()
    ]

    return cust_help.get_none_one_or_many(filtered_items)
Exemple #4
0
def show_recovery_point(cmd,
                        client,
                        resource_group_name,
                        vault_name,
                        container_name,
                        item_name,
                        name,
                        workload_type=None,
                        backup_management_type=None,
                        use_secondary_region=None):

    items_client = backup_protected_items_cf(cmd.cli_ctx)
    item = show_item(cmd, items_client, resource_group_name, vault_name,
                     container_name, item_name, backup_management_type,
                     workload_type, use_secondary_region)
    custom_help.validate_item(item)

    if isinstance(item, list):
        raise CLIError(
            "Multiple items found. Please give native names instead.")

    # Get container and item URIs
    container_uri = custom_help.get_protection_container_uri_from_id(item.id)
    item_uri = custom_help.get_protected_item_uri_from_id(item.id)

    container_type = custom_help.validate_and_extract_container_type(
        container_name, backup_management_type)
    if use_secondary_region:
        if container_type and container_type.lower() == "azurestorage":
            raise InvalidArgumentValueError("""
                --use-secondary-region flag is not supported for --backup-management-type AzureStorage.
                Please either remove the flag or query for any other backup-management-type.
                """)
        client = recovery_points_crr_cf(cmd.cli_ctx)
        recovery_points = client.list(vault_name, resource_group_name,
                                      fabric_name, container_uri, item_uri,
                                      None)
        paged_rps = custom_help.get_list_from_paged_response(recovery_points)
        filtered_rps = [
            rp for rp in paged_rps if rp.name.lower() == name.lower()
        ]
        recovery_point = custom_help.get_none_one_or_many(filtered_rps)
        if recovery_point is None:
            raise InvalidArgumentValueError(
                "The recovery point provided does not exist. Please provide valid RP."
            )
        return recovery_point

    try:
        response = client.get(vault_name, resource_group_name, fabric_name,
                              container_uri, item_uri, name)
    except Exception as ex:
        errorMessage = str(ex)
        raise InvalidArgumentValueError(
            "Specified recovery point can not be fetched - \n" + errorMessage)
    return response
Exemple #5
0
def show_protectable_instance(items, server_name, protectable_item_type):
    if protectable_item_type_map.get(protectable_item_type) is not None:
        protectable_item_type = protectable_item_type_map[protectable_item_type]
    # Server Name filter
    filtered_items = [item for item in items if item.properties.server_name.lower() == server_name.lower()]

    # Protectable Item Type filter
    filtered_items = [item for item in filtered_items if
                      item.properties.protectable_item_type.lower() == protectable_item_type.lower()]

    return cust_help.get_none_one_or_many(filtered_items)
def show_container(cmd,
                   client,
                   name,
                   resource_group_name,
                   vault_name,
                   backup_management_type=None,
                   status="Registered"):
    if custom_help.is_native_name(name):
        return protection_containers_cf(cmd.cli_ctx).get(
            vault_name, resource_group_name, fabric_name, name)
    container_type = custom_help.validate_and_extract_container_type(
        name, backup_management_type)
    containers = _get_containers(client, container_type, status,
                                 resource_group_name, vault_name, name)
    return custom_help.get_none_one_or_many(containers)
Exemple #7
0
def _get_log_time_range(cmd, resource_group_name, vault_name, item, use_secondary_region):
    container_uri = cust_help.get_protection_container_uri_from_id(item.id)
    item_uri = cust_help.get_protected_item_uri_from_id(item.id)

    filter_string = cust_help.get_filter_string({
        'restorePointQueryType': 'Log'})

    client = recovery_points_cf(cmd.cli_ctx)
    if use_secondary_region:
        client = recovery_points_crr_cf(cmd.cli_ctx)

    # Get recovery points
    recovery_points = client.list(vault_name, resource_group_name, fabric_name, container_uri, item_uri, filter_string)
    paged_recovery_points = cust_help.get_none_one_or_many(cust_help.get_list_from_paged_response(recovery_points))
    _check_none_and_many(paged_recovery_points, "Log time range")
    return paged_recovery_points.properties.time_ranges
Exemple #8
0
def show_container(cmd,
                   client,
                   name,
                   resource_group_name,
                   vault_name,
                   backup_management_type=None,
                   status="Registered",
                   use_secondary_region=None):
    container_type = custom_help.validate_and_extract_container_type(
        name, backup_management_type)
    if use_secondary_region:
        if container_type and container_type.lower() in crr_not_supported_bmt:
            raise InvalidArgumentValueError("""
                --use-secondary-region flag is not supported for this backup management type.
                Please either remove the flag or query for any other container type.
                """)

    containers = _get_containers(client, container_type, status,
                                 resource_group_name, vault_name, name,
                                 use_secondary_region)
    return custom_help.get_none_one_or_many(containers)
Exemple #9
0
def show_item(cmd,
              client,
              resource_group_name,
              vault_name,
              container_name,
              name,
              backup_management_type=None,
              workload_type=None,
              use_secondary_region=None):
    container_type = custom_help.validate_and_extract_container_type(
        container_name, backup_management_type)
    if use_secondary_region:
        if container_type and container_type.lower() in crr_not_supported_bmt:
            raise InvalidArgumentValueError("""
                --use-secondary-region flag is not supported for this backup management type.
                Please either remove the flag or query for any other container type.
                """)
    else:
        if custom_help.is_native_name(name) and custom_help.is_native_name(
                container_name):
            client = protected_items_cf(cmd.cli_ctx)
            return client.get(vault_name, resource_group_name, fabric_name,
                              container_name, name)

    items = list_items(cmd, client, resource_group_name, vault_name,
                       workload_type, container_name, container_type,
                       use_secondary_region)

    if custom_help.is_native_name(name):
        filtered_items = [
            item for item in items if item.name.lower() == name.lower()
        ]
    else:
        filtered_items = [
            item for item in items
            if item.properties.friendly_name.lower() == name.lower()
        ]

    return custom_help.get_none_one_or_many(filtered_items)
Exemple #10
0
def show_container(cmd,
                   client,
                   name,
                   resource_group_name,
                   vault_name,
                   backup_management_type=None,
                   status="Registered",
                   use_secondary_region=None):
    container_type = custom_help.validate_and_extract_container_type(
        name, backup_management_type)
    if use_secondary_region:
        if container_type and container_type.lower() == "azurestorage":
            raise InvalidArgumentValueError("""
                --use-secondary-region flag is not supported for container of type AzureStorage.
                Please either remove the flag or query for any other container type.
                """)

    if custom_help.is_native_name(name):
        return protection_containers_cf(cmd.cli_ctx).get(
            vault_name, resource_group_name, fabric_name, name)
    containers = _get_containers(client, container_type, status,
                                 resource_group_name, vault_name, name,
                                 use_secondary_region)
    return custom_help.get_none_one_or_many(containers)