コード例 #1
0
  def GetAddress(self, messages, args, address, address_ref, resource_parser):
    network_tier = self.ConstructNetworkTier(messages, args)

    if args.ip_version or (
        address is None and
        address_ref.Collection() == 'compute.globalAddresses'):
      ip_version = messages.Address.IpVersionValueValuesEnum(
          args.ip_version or 'IPV4')
    else:
      # IP version is only specified in global requests if an address is not
      # specified to determine whether an ipv4 or ipv6 address should be
      # allocated.
      ip_version = None

    # TODO(b/36862747): get rid of args.subnet check
    if args.subnet:
      if address_ref.Collection() == 'compute.globalAddresses':
        raise exceptions.ToolException(
            '[--subnet] may not be specified for global addresses.')
      if not args.subnet_region:
        args.subnet_region = address_ref.region
      subnetwork_url = flags.SubnetworkArgument().ResolveAsResource(
          args, resource_parser).SelfLink()
    else:
      subnetwork_url = None

    return messages.Address(
        address=address,
        description=args.description,
        networkTier=network_tier,
        ipVersion=ip_version,
        name=address_ref.Name(),
        addressType=(messages.Address.AddressTypeValueValuesEnum.INTERNAL
                     if subnetwork_url else None),
        subnetwork=subnetwork_url)
コード例 #2
0
  def Args(cls, parser):
    _Args(cls, parser)
    flags.AddAddressesAndIPVersions(parser, required=False)
    flags.AddNetworkTier(parser)

    cls.SUBNETWORK_ARG = flags.SubnetworkArgument()
    cls.SUBNETWORK_ARG.AddArgument(parser)
コード例 #3
0
ファイル: create.py プロジェクト: zzeulki/autoMindMap_android
  def Args(cls, parser):
    _Args(cls, parser)
    flags.AddAddressesAndIPVersions(parser, required=False)

    parser.add_argument(
        '--network-tier',
        choices=['PREMIUM', 'SELECT'],
        type=lambda x: x.upper(),
        help='The network tier to assign to the reserved IP addresses. If left '
        'empty, `PREMIUM` is used. Supported network tiers are: `PREMIUM`, '
        '`SELECT`.')

    cls.SUBNETWORK_ARG = flags.SubnetworkArgument()
    cls.SUBNETWORK_ARG.AddArgument(parser)
コード例 #4
0
ファイル: create.py プロジェクト: Guliux10/bchacks_deepbreath
def _Args(cls, parser, support_shared_loadbalancer_vip):
    """Argument parsing."""

    cls.ADDRESSES_ARG = flags.AddressArgument(required=False)
    cls.ADDRESSES_ARG.AddArgument(parser, operation_type='create')
    flags.AddDescription(parser)
    parser.display_info.AddCacheUpdater(flags.AddressesCompleter)

    flags.AddAddressesAndIPVersions(parser, required=False)
    flags.AddNetworkTier(parser)
    flags.AddPrefixLength(parser)
    flags.AddPurpose(parser, support_shared_loadbalancer_vip)

    cls.SUBNETWORK_ARG = flags.SubnetworkArgument()
    cls.SUBNETWORK_ARG.AddArgument(parser)

    cls.NETWORK_ARG = flags.NetworkArgument()
    cls.NETWORK_ARG.AddArgument(parser)
コード例 #5
0
def _Args(cls, parser, support_psc_google_apis, support_ipv6_reservation):
    """Argument parsing."""

    cls.ADDRESSES_ARG = flags.AddressArgument(required=False)
    cls.ADDRESSES_ARG.AddArgument(parser, operation_type='create')
    flags.AddDescription(parser)
    parser.display_info.AddCacheUpdater(flags.AddressesCompleter)

    flags.AddAddressesAndIPVersions(parser, required=False)
    flags.AddNetworkTier(parser)
    flags.AddPrefixLength(parser)
    flags.AddPurpose(parser, support_psc_google_apis)
    flags.AddIPv6EndPointType(parser, support_ipv6_reservation)

    cls.SUBNETWORK_ARG = flags.SubnetworkArgument()
    cls.SUBNETWORK_ARG.AddArgument(parser)

    cls.NETWORK_ARG = flags.NetworkArgument()
    cls.NETWORK_ARG.AddArgument(parser)
コード例 #6
0
ファイル: create.py プロジェクト: Guliux10/bchacks_deepbreath
    def GetAddress(self, messages, args, address, address_ref,
                   resource_parser):
        network_tier = self.ConstructNetworkTier(messages, args)

        if args.ip_version or (address is None and address_ref.Collection()
                               == 'compute.globalAddresses'):
            ip_version = messages.Address.IpVersionValueValuesEnum(
                args.ip_version or 'IPV4')
        else:
            # IP version is only specified in global requests if an address is not
            # specified to determine whether an ipv4 or ipv6 address should be
            # allocated.
            ip_version = None

        if args.subnet and args.network:
            raise exceptions.ConflictingArgumentsException(
                '--network', '--subnet')

        purpose = None
        if args.purpose and not args.network and not args.subnet:
            raise exceptions.MinimumArgumentException(
                ['--network', '--subnet'], ' if --purpose is specified')

        # TODO(b/36862747): get rid of args.subnet check
        if args.subnet:
            if address_ref.Collection() == 'compute.globalAddresses':
                raise exceptions.ToolException(
                    '[--subnet] may not be specified for global addresses.')
            if not args.subnet_region:
                args.subnet_region = address_ref.region
            subnetwork_url = flags.SubnetworkArgument().ResolveAsResource(
                args, resource_parser).SelfLink()
            purpose = messages.Address.PurposeValueValuesEnum(
                args.purpose or 'GCE_ENDPOINT')
            self.CheckPurposeInSubnetwork(
                messages, purpose, self._support_shared_loadbalancer_vip)
        else:
            subnetwork_url = None

        network_url = None
        if args.network:
            if address_ref.Collection() == 'compute.addresses':
                raise exceptions.InvalidArgumentException(
                    '--network',
                    'network may not be specified for regional addresses.')
            network_url = flags.NetworkArgument().ResolveAsResource(
                args, resource_parser).SelfLink()
            purpose = messages.Address.PurposeValueValuesEnum(args.purpose
                                                              or 'VPC_PEERING')
            if purpose != messages.Address.PurposeValueValuesEnum.VPC_PEERING:
                raise exceptions.InvalidArgumentException(
                    '--purpose',
                    'must be VPC_PEERING for global internal addresses.')
            if not args.prefix_length:
                raise exceptions.RequiredArgumentException(
                    '--prefix-length',
                    'prefix length is needed for reserving IP ranges.')

        if args.prefix_length:
            if purpose != messages.Address.PurposeValueValuesEnum.VPC_PEERING:
                raise exceptions.InvalidArgumentException(
                    '--prefix-length',
                    'can only be used with [--purpose VPC_PEERING].')

        return messages.Address(
            address=address,
            prefixLength=args.prefix_length,
            description=args.description,
            networkTier=network_tier,
            ipVersion=ip_version,
            name=address_ref.Name(),
            addressType=(messages.Address.AddressTypeValueValuesEnum.INTERNAL
                         if subnetwork_url or network_url else None),
            purpose=purpose,
            subnetwork=subnetwork_url,
            network=network_url)
コード例 #7
0
    def GetAddress(self, messages, args, address, address_ref,
                   resource_parser):
        network_tier = self.ConstructNetworkTier(messages, args)

        if args.ip_version or (address is None and address_ref.Collection()
                               == 'compute.globalAddresses'):
            ip_version = messages.Address.IpVersionValueValuesEnum(
                args.ip_version or 'IPV4')
        else:
            # IP version is only specified in global and regional external Ipv6
            # requests if an address is not specified to determine whether an ipv4 or
            # ipv6 address should be allocated.
            ip_version = None

        if args.subnet and args.network:
            raise exceptions.ConflictingArgumentsException(
                '--network', '--subnet')

        purpose = None
        if args.purpose and not args.network and not args.subnet:
            raise exceptions.MinimumArgumentException(
                ['--network', '--subnet'], ' if --purpose is specified')

        # TODO(b/36862747): get rid of args.subnet check
        if args.subnet:
            if address_ref.Collection() == 'compute.globalAddresses':
                raise exceptions.BadArgumentException(
                    '--subnet',
                    '[--subnet] may not be specified for global addresses.')
            if not args.subnet_region:
                args.subnet_region = address_ref.region
            subnetwork_url = flags.SubnetworkArgument().ResolveAsResource(
                args, resource_parser).SelfLink()
            if not (self._support_ipv6_reservation and args.endpoint_type):
                # External IPv6 reservation does not need purpose field.
                purpose = messages.Address.PurposeValueValuesEnum(
                    args.purpose or 'GCE_ENDPOINT')
                self.CheckPurposeInSubnetwork(messages, purpose)
        else:
            subnetwork_url = None

        network_url = None
        if args.network:
            purpose = messages.Address.PurposeValueValuesEnum(args.purpose
                                                              or 'VPC_PEERING')
            network_url = flags.NetworkArgument().ResolveAsResource(
                args, resource_parser).SelfLink()
            if purpose != messages.Address.PurposeValueValuesEnum.IPSEC_INTERCONNECT:
                if address_ref.Collection() == 'compute.addresses':
                    raise exceptions.InvalidArgumentException(
                        '--network',
                        'network may not be specified for regional addresses.')
                supported_purposes = {
                    'VPC_PEERING':
                    messages.Address.PurposeValueValuesEnum.VPC_PEERING
                }
                if self._support_psc_google_apis:
                    supported_purposes[
                        'PRIVATE_SERVICE_CONNECT'] = messages.Address.PurposeValueValuesEnum.PRIVATE_SERVICE_CONNECT

                if purpose not in supported_purposes.values():
                    raise exceptions.InvalidArgumentException(
                        '--purpose', 'must be {} for '
                        'global internal addresses.'.format(' or '.join(
                            supported_purposes.keys())))

        ipv6_endpoint_type = None
        if self._support_ipv6_reservation and args.endpoint_type:
            ipv6_endpoint_type = messages.Address.Ipv6EndpointTypeValueValuesEnum(
                args.endpoint_type)

        address_type = None
        if self._support_ipv6_reservation and args.endpoint_type:
            address_type = messages.Address.AddressTypeValueValuesEnum.EXTERNAL
        elif subnetwork_url or network_url:
            address_type = messages.Address.AddressTypeValueValuesEnum.INTERNAL

        if args.prefix_length:
            if self._support_ipv6_reservation and address and not address_type:
                # This is address promotion.
                address_type = messages.Address.AddressTypeValueValuesEnum.EXTERNAL
            elif (purpose !=
                  messages.Address.PurposeValueValuesEnum.VPC_PEERING
                  and purpose !=
                  messages.Address.PurposeValueValuesEnum.IPSEC_INTERCONNECT):
                raise exceptions.InvalidArgumentException(
                    '--prefix-length', 'can only be used with '
                    '[--purpose VPC_PEERING/IPSEC_INTERCONNECT] or External IPv6 reservation. Found {e}'
                    .format(e=purpose))

        if not args.prefix_length:
            if purpose == messages.Address.PurposeValueValuesEnum.VPC_PEERING:
                raise exceptions.RequiredArgumentException(
                    '--prefix-length',
                    'prefix length is needed for reserving VPC peering IP ranges.'
                )
            if purpose == messages.Address.PurposeValueValuesEnum.IPSEC_INTERCONNECT:
                raise exceptions.RequiredArgumentException(
                    '--prefix-length',
                    'prefix length is needed for reserving IP ranges'
                    ' for IPsec-encrypted Cloud Interconnect.')

        if self._support_ipv6_reservation:
            return messages.Address(address=address,
                                    prefixLength=args.prefix_length,
                                    description=args.description,
                                    networkTier=network_tier,
                                    ipVersion=ip_version,
                                    name=address_ref.Name(),
                                    addressType=address_type,
                                    purpose=purpose,
                                    subnetwork=subnetwork_url,
                                    network=network_url,
                                    ipv6EndpointType=ipv6_endpoint_type)
        else:
            return messages.Address(
                address=address,
                prefixLength=args.prefix_length,
                description=args.description,
                networkTier=network_tier,
                ipVersion=ip_version,
                name=address_ref.Name(),
                addressType=(
                    messages.Address.AddressTypeValueValuesEnum.INTERNAL
                    if subnetwork_url or network_url else None),
                purpose=purpose,
                subnetwork=subnetwork_url,
                network=network_url)