Example #1
0
    def _process_resource(self, resource):
        lock_name = self._get_lock_name(resource)
        lock_notes = self._get_lock_notes(resource)

        if is_resource_group(resource):
            self.client.management_locks.create_or_update_at_resource_group_level(
                resource['name'], lock_name,
                ManagementLockObject(level=self.lock_type, notes=lock_notes))
        else:
            self.client.management_locks.create_or_update_by_scope(
                resource['id'], lock_name,
                ManagementLockObject(level=self.lock_type, notes=lock_notes))
Example #2
0
def create_lock(name, resource_group_name=None, resource_provider_namespace=None,
                parent_resource_path=None, resource_type=None, resource_name=None,
                level=None, notes=None):
    '''
    :param name: The name of the lock.
    :type name: str
    :param resource_provider_namespace: Name of a resource provider.
    :type resource_provider_namespace: str
    :param parent_resource_path: Path to a parent resource
    :type parent_resource_path: str
    :param resource_type: The type for the resource with the lock.
    :type resource_type: str
    :param resource_name: Name of a resource that has a lock.
    :type resource_name: str
    :param notes: Notes about this lock.
    :type notes: str
    '''
    if level != 'ReadOnly' and level != 'CanNotDelete':
        raise CLIError('--level must be one of "ReadOnly" or "CanNotDelete"')
    parameters = ManagementLockObject(level=level, notes=notes, name=name)

    lock_client = _resource_lock_client_factory()
    if resource_group_name is None:
        return lock_client.management_locks.create_or_update_at_subscription_level(name, parameters)
    if resource_name is None:
        return lock_client.management_locks.create_or_update_at_resource_group_level(
            resource_group_name, name, parameters)
    if resource_provider_namespace is None:
        raise CLIError('--resource-provider-namespace is required if --resource-name is present')
    if resource_type is None:
        raise CLIError('--resource-type is required if --resource-name is present')
    return lock_client.management_locks.create_or_update_at_resource_level(
        resource_group_name, resource_provider_namespace, parent_resource_path, resource_type,
        resource_name, name, parameters)
Example #3
0
 def _process_resource(self, resource):
     if resource.get('resourceGroup') is None:
         self.client.management_locks.create_or_update_at_resource_group_level(
             resource['name'],
             'lock_' + resource['name'] + '_' + self.lock_type,
             ManagementLockObject(level=self.lock_type))
     else:
         self.client.management_locks.create_or_update_at_resource_level(
             resource['resourceGroup'],
             ResourceIdParser.get_namespace(resource['id']),
             ResourceIdParser.get_resource_name(
                 resource.get('c7n:parent-id')) or '',
             ResourceIdParser.get_resource_type(resource['id']),
             resource['name'],
             'custodian_lock_' + resource['name'] + '_' + self.lock_type,
             ManagementLockObject(level=self.lock_type))
Example #4
0
def create_lock(name,
                resource_group_name=None,
                resource_provider_namespace=None,
                parent_resource_path=None,
                resource_type=None,
                resource_name=None,
                level=None,
                notes=None,
                lock_id=None,
                lock_type=None):
    parameters = ManagementLockObject(level=level,
                                      notes=notes,
                                      id=lock_id,
                                      type=lock_type,
                                      name=name)
    lock_client = _resource_lock_client_factory()
    if resource_group_name is None:
        return lock_client.management_locks.create_or_update_at_subscription_level(
            name, parameters)
    if resource_name is None:
        return lock_client.management_locks.create_or_update_at_resource_group_level(
            resource_group_name, name, parameters)
    if resource_provider_namespace is None:
        raise CLIError(
            '--resource-provider-namespace is required if --resource-name is present'
        )
    if resource_type is None:
        raise CLIError(
            '--resource-type is required if --resource-name is present')
    return lock_client.management_locks.create_or_update_at_resource_level(
        resource_group_name, resource_provider_namespace, parent_resource_path,
        resource_type, resource_name, name, parameters)
Example #5
0
    def _process_resource(self, resource):
        lock_name = self._get_lock_name(resource)
        lock_notes = self._get_lock_notes(resource)

        if is_resource_group(resource):
            self.client.management_locks.create_or_update_at_resource_group_level(
                resource['name'], lock_name,
                ManagementLockObject(level=self.lock_type, notes=lock_notes))
        else:
            self.client.management_locks.create_or_update_at_resource_level(
                resource['resourceGroup'],
                ResourceIdParser.get_namespace(resource['id']),
                ResourceIdParser.get_resource_name(
                    resource.get('c7n:parent-id')) or '',
                ResourceIdParser.get_resource_type(resource['id']),
                resource['name'], lock_name,
                ManagementLockObject(level=self.lock_type, notes=lock_notes))
def _lock_resource(cmd, lock_scope, lock_level='CanNotDelete'):
    lock_client: azure.mgmt.resource.locks.ManagementLockClient = get_mgmt_service_client(
        cmd.cli_ctx, azure.mgmt.resource.locks.ManagementLockClient)
    # put lock on relay resource
    lock_object = ManagementLockObject(level=lock_level, notes='locked by amlk8s.')
    try:
        lock_client.management_locks.create_or_update_by_scope(
            scope=lock_scope, lock_name='amlk8s-resource-lock', parameters=lock_object)
    except:
        # try to lock the resource if user has the owner privilege
        pass
Example #7
0
def create_lock(
        name,  # pylint: disable=too-many-arguments
        resource_group_name=None,
        resource_provider_namespace=None,
        notes=None,
        parent_resource_path=None,
        resource_type=None,
        resource_name=None,
        level=None):
    """
    :param name: The name of the lock.
    :type name: str
    :param resource_provider_namespace: Name of a resource provider.
    :type resource_provider_namespace: str
    :param parent_resource_path: Path to a parent resource
    :type parent_resource_path: str
    :param resource_type: The type for the resource with the lock.
    :type resource_type: str
    :param resource_name: Name of a resource that has a lock.
    :type resource_name: str
    :param notes: Notes about this lock.
    :type notes: str
    """
    if level != 'ReadOnly' and level != 'CanNotDelete':
        raise CLIError(
            '--lock-type must be one of "ReadOnly" or "CanNotDelete"')
    parameters = ManagementLockObject(level=level, notes=notes, name=name)

    lock_client = _resource_lock_client_factory()
    lock_resource = _validate_lock_params(resource_group_name,
                                          resource_provider_namespace,
                                          parent_resource_path, resource_type,
                                          resource_name)
    resource_group_name = lock_resource[0]
    resource_name = lock_resource[1]
    resource_provider_namespace = lock_resource[2]
    resource_type = lock_resource[3]

    if resource_group_name is None:
        return lock_client.management_locks.create_or_update_at_subscription_level(
            name, parameters)

    if resource_name is None:
        return lock_client.management_locks.create_or_update_at_resource_group_level(
            resource_group_name, name, parameters)

    return lock_client.management_locks.create_or_update_at_resource_level(
        resource_group_name, resource_provider_namespace, parent_resource_path
        or '', resource_type, resource_name, name, parameters)