def _clone_and_replace_action_group(source_monitor_client, target_monitor_client, cmd, alert_rule, action_group_mapping, target_resource): for index, action in enumerate(alert_rule.actions): if action.action_group_id in action_group_mapping: alert_rule.actions[index] = action_group_mapping[ action.action_group_id][1] else: resource_group_name, name = _parse_id( action.action_group_id).values() action_group = source_monitor_client.action_groups.get( resource_group_name, name) name = CLONED_NAME.format(name, gen_guid()) resource_group_name, _ = _parse_id(target_resource).values() new_action_group = target_monitor_client.action_groups.create_or_update( resource_group_name, name, action_group) MetricAlertAction = cmd.get_models('MetricAlertAction', operation_group='metric_alerts') new_action = MetricAlertAction( action_group_id=new_action_group.id, webhook_properties=action.webhook_properties) alert_rule.actions[index] = new_action action_group_mapping[action.action_group_id] = [ new_action_group.id, new_action ] return alert_rule
def _add_into_existing_scopes(monitor_client, alert_rule, target_resource): alert_rule.scopes.append(target_resource) resource_group_name, name = _parse_id(alert_rule.id).values() return monitor_client.metric_alerts.create_or_update( resource_group_name=resource_group_name, rule_name=name, parameters=alert_rule)
def _clone_alert_rule(monitor_client, alert_rule, target_resource): alert_rule.scopes = [target_resource] resource_group_name, name = _parse_id(target_resource).values() name = CLONED_NAME.format(name, gen_guid()) return monitor_client.metric_alerts.create_or_update( resource_group_name=resource_group_name, rule_name=name, parameters=alert_rule)
def recover_log_analytics_workspace(cmd, workspace_name, resource_group_name=None, no_wait=False): deleted_workspaces_client = _log_analytics_client_factory(cmd.cli_ctx).deleted_workspaces workspace_client = _log_analytics_client_factory(cmd.cli_ctx).workspaces deleted_workspaces = list(list_deleted_log_analytics_workspaces(deleted_workspaces_client, resource_group_name)) for deleted_workspace in deleted_workspaces: if deleted_workspace.name.lower() == workspace_name.lower(): workspace_instance = Workspace(location=deleted_workspace.location) return sdk_no_wait(no_wait, workspace_client.begin_create_or_update, _parse_id(deleted_workspace.id)['resource-group'], workspace_name, workspace_instance) raise CLIError('{} is not a deleted workspace and you can only recover a deleted workspace within 14 days.' .format(workspace_name))
def test_split_dict_id(self): with self.assertRaises(TypeError): _parse_id(TestResourceGroupTransform.DICT_ID)
def test_split_non_resourcegroup_id(self): with self.assertRaises(KeyError): _parse_id(TestResourceGroupTransform.NON_RG_ID)
def test_split_bogus_resourcegroup_id(self): with self.assertRaises(IndexError): _parse_id(TestResourceGroupTransform.BOGUS_ID)
def test_split_correct_id(self): result = _parse_id(TestResourceGroupTransform.CORRECT_ID) self.assertDictEqual(result, { 'resource-group': 'REsourceGROUPname', 'name': 'vMName' })
def test_split_dict_id(self): with self.assertRaises(TypeError): _parse_id(TestResourceGroupTransform.DICT_ID)
def test_split_bogus_resourcegroup_id(self): with self.assertRaises(IndexError): _parse_id(TestResourceGroupTransform.BOGUS_ID)
def test_split_non_resourcegroup_id(self): with self.assertRaises(KeyError): _parse_id(TestResourceGroupTransform.NON_RG_ID)
def test_split_correct_id(self): result = _parse_id(TestResourceGroupTransform.CORRECT_ID) self.assertDictEqual(result, { 'resource-group': 'REsourceGROUPname', 'name': 'vMName' })