コード例 #1
0
 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')
コード例 #2
0
ファイル: update.py プロジェクト: PrateekKhatri/gcloud_cli
  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
コード例 #3
0
 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)
コード例 #4
0
    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))
コード例 #5
0
 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')
コード例 #6
0
ファイル: update.py プロジェクト: PrateekKhatri/gcloud_cli
    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
コード例 #7
0
    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
コード例 #8
0
    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')
コード例 #9
0
  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)
コード例 #10
0
    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
コード例 #11
0
  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)
コード例 #12
0
    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
コード例 #13
0
ファイル: create.py プロジェクト: PrateekKhatri/gcloud_cli
    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
コード例 #14
0
    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)
コード例 #15
0
ファイル: create.py プロジェクト: PrateekKhatri/gcloud_cli
  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
コード例 #16
0
 def Run(self, args):
   api_version = util.GetApiFromTrack(self.ReleaseTrack())
   operations_client = operations.Client.FromApiVersion(api_version)
   return _Describe(operations_client, args)
コード例 #17
0
 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)
コード例 #18
0
ファイル: create.py プロジェクト: piotradamczyk5/gcloud_cli
    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]