def Run(self, args): client = policies.AlertPolicyClient() condition_ref = args.CONCEPTS.condition.Parse() policy_ref = condition_ref.Parent() policy = client.Get(policy_ref) condition = util.GetConditionFromPolicy(condition_ref.RelativeName(), policy) return condition
def Run(self, args): util.ValidateUpdateArgsSpecified( args, ['display_name', 'trigger_count', 'trigger_percent', 'if_value'], 'condition') client = policies.AlertPolicyClient() messages = client.messages condition_ref = args.CONCEPTS.condition.Parse() policy_ref = condition_ref.Parent() policy = client.Get(policy_ref) condition = util.GetConditionFromPolicy(condition_ref.RelativeName(), policy) nested_condition = condition.conditionAbsent or condition.conditionThreshold if args.display_name: condition.displayName = args.display_name if args.trigger_count or args.trigger_percent: nested_condition.trigger = messages.Trigger( count=args.trigger_count, percent=args.trigger_percent) if args.if_value is not None: # Copy existing condition properties into kwargs. kwargs = { 'trigger_count': nested_condition.trigger.count, 'trigger_percent': nested_condition.trigger.percent, 'aggregations': nested_condition.aggregations, 'duration': nested_condition.duration, 'condition_filter': nested_condition.filter, 'if_value': args.if_value } # If any trigger values are specified, overwrite whats in args. if args.trigger_count or args.trigger_percent: kwargs['trigger_count'] = args.trigger_count kwargs['trigger_percent'] = args.trigger_percent # Clear nested condition messages as this can potentially change. condition.conditionAbsent = None condition.conditionThreshold = None # This will change condition in place. util.BuildCondition(messages, condition=condition, **kwargs) return client.Update(policy_ref, policy, fields='conditions')