def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) client = util.GetApiClient(api_version) messages = apis.GetMessagesModule('dns', api_version) # Get Policy policy_ref = args.CONCEPTS.policy.Parse() policy_name = policy_ref.Name() policy = messages.Policy(name=policy_name, enableLogging=False, enableInboundForwarding=False) if args.IsSpecified('networks'): if args.networks == ['']: args.networks = [] policy.networks = command_util.ParseNetworks( args.networks, policy_ref.project, api_version) else: raise exceptions.RequiredArgumentException('--networks', (""" A list of networks must be provided.' NOTE: You can provide an empty value ("") for policies that have NO network binding. """)) if args.IsSpecified('alternative_name_servers') or args.IsSpecified( 'private_alternative_name_servers'): if args.alternative_name_servers == ['']: args.alternative_name_servers = [] if args.private_alternative_name_servers == ['']: args.private_alternative_name_servers = [] policy.alternativeNameServerConfig = command_util.ParseAltNameServers( version=api_version, server_list=args.alternative_name_servers, private_server_list=args.private_alternative_name_servers) if args.IsSpecified('enable_inbound_forwarding'): policy.enableInboundForwarding = args.enable_inbound_forwarding if args.IsSpecified('enable_logging'): policy.enableLogging = args.enable_logging if args.IsSpecified('description'): policy.description = args.description create_request = messages.DnsPoliciesCreateRequest( policy=policy, project=policy_ref.project) result = client.policies.Create(create_request) log.CreatedResource(policy_ref, kind='Policy') return result
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) client = util.GetApiClient(api_version) messages = apis.GetMessagesModule('dns', api_version) # Get Policy policy_ref = args.CONCEPTS.policy.Parse() to_update = self._FetchPolicy(policy_ref, api_version) if not (args.IsSpecified('networks') or args.IsSpecified('description') or args.IsSpecified('enable_inbound_forwarding') or args.IsSpecified('enable_logging') or args.IsSpecified('alternative_name_servers')): log.status.Print('Nothing to update.') return to_update if args.IsSpecified('networks'): if args.networks == ['']: args.networks = [] to_update.networks = command_util.ParseNetworks( args.networks, policy_ref.project, api_version) if args.IsSpecified('alternative_name_servers') or args.IsSpecified( 'private_alternative_name_servers'): if args.alternative_name_servers == ['']: args.alternative_name_servers = [] if args.private_alternative_name_servers == ['']: args.private_alternative_name_servers = [] to_update.alternativeNameServerConfig = command_util.ParseAltNameServers( version=api_version, server_list=args.alternative_name_servers, private_server_list=args.private_alternative_name_servers) if args.IsSpecified('enable_inbound_forwarding'): to_update.enableInboundForwarding = args.enable_inbound_forwarding if args.IsSpecified('enable_logging'): to_update.enableLogging = args.enable_logging if args.IsSpecified('description'): to_update.description = args.description update_req = messages.DnsPoliciesUpdateRequest( policy=to_update.name, policyResource=to_update, project=policy_ref.project) updated_policy = client.policies.Update(update_req).policy log.UpdatedResource(updated_policy.name, kind='Policy') return updated_policy