def update_resource_tags(tag_action, resource, tags): client = tag_action.session.client( 'azure.mgmt.resource.ResourceManagementClient') # resource group type if is_resource_group(resource): params_patch = ResourceGroupPatchable(tags=tags) client.resource_groups.update( resource['name'], params_patch, ) # other Azure resources else: # deserialize the original object az_resource = GenericResource.deserialize(resource) if not tag_action.manager.tag_operation_enabled(az_resource.type): raise NotImplementedError( 'Cannot tag resource with type {0}'.format( az_resource.type)) api_version = tag_action.session.resource_api_version( resource['id']) # create a PATCH object with only updates to tags tags_patch = GenericResource(tags=tags) client.resources.update_by_id(resource['id'], api_version, tags_patch)
def _process_resource_set(self, resources, event=None): client = self.manager.get_client( 'azure.mgmt.resource.locks.ManagementLockClient') result = [] for resource in resources: if is_resource_group(resource): locks = [ r.serialize(True) for r in client.management_locks. list_at_resource_group_level(resource['name']) ] else: locks = [ r.serialize(True) for r in client.management_locks.list_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']) ] if StringUtils.equal('Absent', self.lock_type) and not locks: result.append(resource) else: for lock in locks: if StringUtils.equal('Any', self.lock_type) or \ StringUtils.equal(lock['properties']['level'], self.lock_type): result.append(resource) break return result
def _process_resource(self, resource): if is_resource_group(resource): self.client.resource_groups.delete(resource['name']) else: self.client.resources.delete_by_id( resource['id'], self.session.resource_api_version(resource['id']))
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))
def _process_resource(self, resource): if is_resource_group(resource): 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))
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 test_is_resource_group(self): self.assertTrue(is_resource_group({'type': 'resourceGroups'})) self.assertFalse(is_resource_group({'type': 'virtualMachines'}))