def Args(cls, parser): api_version = util.GetApiFromTrack(cls.ReleaseTrack()) resource_args.AddResponsePolicyRuleArg( parser, verb='to describe', api_version=api_version) if cls._BetaOrAlpha(): flags.GetLocationArg().AddToParser(parser) parser.display_info.AddFormat('json')
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) client = util.GetApiClient(api_version) messages = apis.GetMessagesModule('dns', api_version) # Get Response Policy response_policy_ref = args.CONCEPTS.response_policies.Parse() to_update = self._FetchResponsePolicy(response_policy_ref, api_version) if not (args.IsSpecified('networks') or args.IsSpecified('description')): log.status.Print('Nothing to update.') return to_update if args.IsSpecified('networks'): if args.networks == ['']: args.networks = [] to_update.networks = command_util.ParseResponsePolicyNetworks( args.networks, response_policy_ref.project, api_version) if args.IsSpecified('description'): to_update.description = args.description update_req = messages.DnsResponsePoliciesUpdateRequest( responsePolicy=args.response_policies, responsePolicyResource=to_update, project=response_policy_ref.project) updated_response_policy = client.responsePolicies.Update(update_req) log.UpdatedResource(updated_response_policy.responsePolicy, kind='ResponsePolicy') return updated_response_policy
def _FetchPolicy(self, policy_ref): """Get policy to be Updated.""" api_version = util.GetApiFromTrack(self.ReleaseTrack()) client = apis.GetClientInstance('dns', api_version) m = apis.GetMessagesModule('dns', api_version) get_request = m.DnsPoliciesGetRequest(policy=policy_ref.Name(), project=policy_ref.project) return client.policies.Get(get_request)
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) dns = util.GetApiClient(api_version) project_ref = util.GetRegistry(api_version).Parse( args.dns_project, collection='dns.projects') return dns.projects.Get( dns.MESSAGES_MODULE.DnsProjectsGetRequest( project=project_ref.project))
def Args(cls, parser): resource_args.AddResponsePolicyResourceArg( parser, verb='to create', api_version=util.GetApiFromTrack(cls.ReleaseTrack())) _AddArgsCommon(parser) if cls._BetaOrAlpha(): flags.GetLocationArg().AddToParser(parser) flags.GetResponsePolicyGkeClustersArg().AddToParser(parser) parser.display_info.AddFormat('json')
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) client = util.GetApiClient(api_version) messages = apis.GetMessagesModule('dns', api_version) # Get Response Policy Rule response_policy_rule_ref = args.CONCEPTS.response_policy_rule.Parse() response_policy_rule_name = response_policy_rule_ref.Name() response_policy_rule = messages.ResponsePolicyRule( ruleName=response_policy_rule_name) response_policy = messages.ResponsePolicy( responsePolicyName=args.response_policy) to_update = _FetchResponsePolicyRule(response_policy.responsePolicyName, \ response_policy_rule.ruleName,\ api_version) if not args.IsSpecified('local_data') and not args.IsSpecified( 'behavior'): log.status.Print('Nothing to update.') return to_update if args.IsSpecified('local_data'): to_update.behavior = None rrsets = [] for rrset in args.local_data: resource_record_set = messages.ResourceRecordSet( name=rrset.get('name'), type=rrset.get('type'), ttl=rrset.get('ttl'), rrdatas=rrset.get('rrdatas').split('|')) rrsets.append(resource_record_set) to_update.localData = messages.ResponsePolicyRuleLocalData( localDatas=rrsets) if args.IsSpecified('behavior'): to_update.localData = None to_update.behavior = command_util\ .ParseResponsePolicyRulesBehavior(args, api_version) update_req = messages.DnsResponsePolicyRulesUpdateRequest( responsePolicy=response_policy.responsePolicyName, responsePolicyRule=response_policy_rule.ruleName, responsePolicyRuleResource=to_update, project=properties.VALUES.core.project.Get()) updated_response_policy_rule = client.responsePolicyRules.Update( update_req) log.UpdatedResource(updated_response_policy_rule.responsePolicyRule, kind='ResponsePolicyRule') return updated_response_policy_rule
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.ParsePolicyNetworks( 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()) dns_client = util.GetApiClient(api_version) project_id = properties.VALUES.core.project.GetOrFail() return list_pager.YieldFromList( dns_client.managedZones, dns_client.MESSAGES_MODULE.DnsManagedZonesListRequest( project=project_id), field='managedZones')
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) zones_client = managed_zones.Client.FromApiVersion(api_version) messages = zones_client.messages forwarding_config = None if args.forwarding_targets or args.private_forwarding_targets: forwarding_config = command_util.ParseManagedZoneForwardingConfigWithForwardingPath( messages=messages, server_list=args.forwarding_targets, private_server_list=args.private_forwarding_targets) else: forwarding_config = None peering_config = None if args.target_project and args.target_network: peering_network = 'https://www.googleapis.com/compute/v1/projects/{}/global/networks/{}'.format( args.target_project, args.target_network) peering_config = messages.ManagedZonePeeringConfig() peering_config.targetNetwork = messages.ManagedZonePeeringConfigTargetNetwork( networkUrl=peering_network) visibility_config = None if args.networks: networks = args.networks if args.networks != [''] else [] def GetNetworkSelfLink(network): return util.GetRegistry(api_version).Parse( network, collection='compute.networks', params={ 'project': properties.VALUES.core.project.GetOrFail }).SelfLink() network_urls = [GetNetworkSelfLink(n) for n in networks] network_configs = [ messages.ManagedZonePrivateVisibilityConfigNetwork(networkUrl=nurl) for nurl in network_urls ] visibility_config = messages.ManagedZonePrivateVisibilityConfig( networks=network_configs) reverse_lookup_config = None if args.IsSpecified( 'managed_reverse_lookup') and args.managed_reverse_lookup: reverse_lookup_config = messages.ManagedZoneReverseLookupConfig() return _Update( zones_client, args, private_visibility_config=visibility_config, forwarding_config=forwarding_config, peering_config=peering_config, reverse_lookup_config=reverse_lookup_config)
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
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) dns_client = util.GetApiClient(api_version) messages = apis.GetMessagesModule('dns', api_version) zone_ref = args.CONCEPTS.zone.Parse() resource_name = 'projects/{0}/managedZones/{1}'.format( zone_ref.project, zone_ref.managedZone) req = messages.DnsProjectsManagedZonesGetIamPolicyRequest( resource=resource_name, googleIamV1GetIamPolicyRequest=messages.GoogleIamV1GetIamPolicyRequest( options=messages.GoogleIamV1GetPolicyOptions( requestedPolicyVersion=iam_util .MAX_LIBRARY_IAM_SUPPORTED_VERSION))) return dns_client.projects_managedZones.GetIamPolicy(req)
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) dns = util.GetApiClient(api_version) zone_ref = util.GetRegistry(api_version).Parse( args.dns_zone, params={ 'project': properties.VALUES.core.project.GetOrFail, }, collection='dns.managedZones') result = dns.managedZones.Delete( dns.MESSAGES_MODULE.DnsManagedZonesDeleteRequest( managedZone=zone_ref.managedZone, project=zone_ref.project)) log.DeletedResource(zone_ref) return result
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) client = util.GetApiClient(api_version) messages = apis.GetMessagesModule('dns', api_version) # Get Response Policy Rule response_policy_rule_ref = args.CONCEPTS.response_policy_rule.Parse() response_policy_rule_name = response_policy_rule_ref.Name() response_policy_rule = messages.ResponsePolicyRule( ruleName=response_policy_rule_name) response_policy_rule.dnsName = args.dns_name response_policy = messages.ResponsePolicy( responsePolicyName=args.response_policy) if args.IsSpecified('behavior') and args.IsSpecified('local_data'): raise exceptions.ConflictingArgumentsException( 'Only one of arguments [--behavior, --local-data] is allowed.') if args.IsSpecified('behavior'): response_policy_rule.behavior = command_util\ .ParseResponsePolicyRulesBehavior(args, api_version) elif args.IsSpecified('local_data'): rrsets = [] for rrset in args.local_data: resource_record_set = messages.ResourceRecordSet( name=rrset.get('name'), type=rrset.get('type'), ttl=rrset.get('ttl'), rrdatas=rrset.get('rrdatas').split('|')) rrsets.append(resource_record_set) local_data = messages.ResponsePolicyRuleLocalData( localDatas=rrsets) response_policy_rule.localData = local_data create_request = messages.DnsResponsePolicyRulesCreateRequest( responsePolicy=response_policy.responsePolicyName, project=response_policy_rule_ref.project, responsePolicyRule=response_policy_rule) result = client.responsePolicyRules.Create(create_request) log.CreatedResource(response_policy_rule, kind='ResponsePolicyRule') return result
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) dns_client = util.GetApiClient(api_version) messages = apis.GetMessagesModule('dns', api_version) zone_ref = args.CONCEPTS.zone.Parse() resource_name = 'projects/{0}/managedZones/{1}'.format( zone_ref.project, zone_ref.managedZone) policy, update_mask = iam_util.ParsePolicyFileWithUpdateMask( args.policy_file, messages.GoogleIamV1Policy) req = messages.DnsProjectsManagedZonesSetIamPolicyRequest( resource=resource_name, googleIamV1SetIamPolicyRequest=messages. GoogleIamV1SetIamPolicyRequest(policy=policy, updateMask=update_mask)) return dns_client.projects_managedZones.SetIamPolicy(req)
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) client = util.GetApiClient(api_version) messages = apis.GetMessagesModule('dns', api_version) # Get Response Policy response_policy_ref = args.CONCEPTS.response_policies.Parse() response_policy_name = response_policy_ref.Name() response_policy = messages.ResponsePolicy( responsePolicyName=response_policy_name) if args.IsSpecified('networks'): if args.networks == ['']: args.networks = [] response_policy.networks = command_util.ParseResponsePolicyNetworks( args.networks, response_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 response policies that have NO network binding. """)) if args.IsSpecified('description'): response_policy.description = args.description create_request = messages.DnsResponsePoliciesCreateRequest( responsePolicy=response_policy, project=response_policy_ref.project) result = client.responsePolicies.Create(create_request) log.CreatedResource(response_policy_ref, kind='ResponsePolicy') return result
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) operations_client = operations.Client.FromApiVersion(api_version) return _Describe(operations_client, args)
def Run(self, args): api_version = util.GetApiFromTrack(self.ReleaseTrack()) zones_client = managed_zones.Client.FromApiVersion(api_version) zone_ref = args.CONCEPTS.zone.Parse() return zones_client.Get(zone_ref)
def Run(self, args): # We explicitly want to allow --networks='' as a valid option and we need # to differentiate between that option and not passing --networks at all. if args.visibility == 'public': if args.IsSpecified('networks'): raise exceptions.InvalidArgumentException( '--networks', 'If --visibility is set to public (default), setting networks is ' 'not allowed.') if args.visibility == 'private' and args.networks is None: raise exceptions.RequiredArgumentException('--networks', (""" If --visibility is set to private, a list of networks must be provided.' NOTE: You can provide an empty value ("") for private zones that have NO network binding. """)) api_version = util.GetApiFromTrack(self.ReleaseTrack()) dns = util.GetApiClient(api_version) messages = apis.GetMessagesModule('dns', api_version) registry = util.GetRegistry(api_version) zone_ref = registry.Parse( args.dns_zone, params={'project': properties.VALUES.core.project.GetOrFail}, collection='dns.managedZones') visibility = messages.ManagedZone.VisibilityValueValuesEnum( args.visibility) visibility_config = None if visibility == messages.ManagedZone.VisibilityValueValuesEnum.private: # Handle explicitly empty networks case (--networks='') networks = args.networks if args.networks != [''] else [] def GetNetworkSelfLink(network): return registry.Parse(network, collection='compute.networks', params={ 'project': zone_ref.project }).SelfLink() network_urls = [GetNetworkSelfLink(n) for n in networks] network_configs = [ messages.ManagedZonePrivateVisibilityConfigNetwork( networkUrl=nurl) for nurl in network_urls ] visibility_config = messages.ManagedZonePrivateVisibilityConfig( networks=network_configs) if args.forwarding_targets or args.private_forwarding_targets: forwarding_config = command_util.ParseManagedZoneForwardingConfigWithForwardingPath( messages=messages, server_list=args.forwarding_targets, private_server_list=args.private_forwarding_targets) else: forwarding_config = None dnssec_config = _MakeDnssecConfig(args, messages) labels = labels_util.ParseCreateArgs(args, messages.ManagedZone.LabelsValue) peering_config = None if args.target_project and args.target_network: peering_network = 'https://www.googleapis.com/compute/v1/projects/{}/global/networks/{}'.format( args.target_project, args.target_network) peering_config = messages.ManagedZonePeeringConfig() peering_config.targetNetwork = messages.ManagedZonePeeringConfigTargetNetwork( networkUrl=peering_network) reverse_lookup_config = None if args.IsSpecified( 'managed_reverse_lookup') and args.managed_reverse_lookup: reverse_lookup_config = messages.ManagedZoneReverseLookupConfig() service_directory_config = None if args.IsSpecified('service_directory_namespace' ) and args.service_directory_namespace: service_directory_config = messages.ManagedZoneServiceDirectoryConfig( namespace=messages.ManagedZoneServiceDirectoryConfigNamespace( namespaceUrl=args.service_directory_namespace)) zone = messages.ManagedZone( name=zone_ref.managedZone, dnsName=util.AppendTrailingDot(args.dns_name), description=args.description, dnssecConfig=dnssec_config, labels=labels, visibility=visibility, forwardingConfig=forwarding_config, privateVisibilityConfig=visibility_config, peeringConfig=peering_config, reverseLookupConfig=reverse_lookup_config, serviceDirectoryConfig=service_directory_config) result = dns.managedZones.Create( messages.DnsManagedZonesCreateRequest(managedZone=zone, project=zone_ref.project)) log.CreatedResource(zone_ref) return [result]