예제 #1
0
def cli_documentdb_update(
        client,  # pylint: disable=too-many-arguments
        resource_group_name,
        account_name,
        locations=None,
        default_consistency_level=None,
        max_staleness_prefix=None,
        max_interval=None,
        ip_range_filter=None,
        enable_automatic_failover=None):
    """Update an existing Azure DocumentDB database account. """
    existing = client.get(resource_group_name, account_name)

    update_consistency_policy = False
    if max_interval is not None or \
       max_staleness_prefix is not None or \
       default_consistency_level is not None:
        update_consistency_policy = True

    if max_staleness_prefix is None:
        max_staleness_prefix = existing.consistency_policy.max_staleness_prefix

    if max_interval is None:
        max_interval = existing.consistency_policy.max_interval_in_seconds

    if default_consistency_level is None:
        default_consistency_level = existing.consistency_policy.default_consistency_level

    consistency_policy = None
    if update_consistency_policy:
        consistency_policy = ConsistencyPolicy(default_consistency_level,
                                               max_staleness_prefix,
                                               max_interval)
    else:
        consistency_policy = existing.consistency_policy

    if not locations:
        for loc in existing.read_locations:
            locations.append(
                Location(location_name=loc.location_name,
                         failover_priority=loc.failover_priority))

    if ip_range_filter is None:
        ip_range_filter = existing.ip_range_filter

    if enable_automatic_failover is None:
        enable_automatic_failover = existing.enable_automatic_failover

    params = DatabaseAccountCreateUpdateParameters(
        existing.location,
        locations,
        kind=existing.kind,
        consistency_policy=consistency_policy,
        ip_range_filter=ip_range_filter)

    async_docdb_create = client.create_or_update(resource_group_name,
                                                 account_name, params)
    docdb_account = async_docdb_create.result()
    docdb_account = client.get(resource_group_name, account_name)  # Workaround
    return docdb_account
예제 #2
0
파일: custom.py 프로젝트: xingwu1/azure-cli
def cli_documentdb_create(client,
                          resource_group_name,
                          account_name,
                          locations=None,
                          kind=DatabaseAccountKind.global_document_db.value,
                          default_consistency_level=None,
                          max_staleness_prefix=100,
                          max_interval=5,
                          ip_range_filter=None):
    # pylint:disable=line-too-long
    """Create a new Azure DocumentDB database account.
    """

    consistency_policy = None
    if default_consistency_level is not None:
        consistency_policy = ConsistencyPolicy(default_consistency_level,
                                               max_staleness_prefix,
                                               max_interval)

    from azure.mgmt.resource.resources import ResourceManagementClient
    from azure.cli.core.commands.client_factory import get_mgmt_service_client
    resource_client = get_mgmt_service_client(ResourceManagementClient)
    rg = resource_client.resource_groups.get(resource_group_name)
    resource_group_location = rg.location  # pylint: disable=no-member

    if not locations:
        locations.append(
            Location(location_name=resource_group_location,
                     failover_priority=0))

    params = DatabaseAccountCreateUpdateParameters(
        resource_group_location,
        locations,
        kind=kind,
        consistency_policy=consistency_policy,
        ip_range_filter=ip_range_filter)

    async_docdb_create = client.database_accounts.create_or_update(
        resource_group_name, account_name, params)
    docdb_account = async_docdb_create.result()
    docdb_account = client.database_accounts.get(resource_group_name,
                                                 account_name)  # Workaround
    return docdb_account