Beispiel #1
0
    def Run(self, args):
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        helper = vpn_tunnels_utils.VpnTunnelHelper(holder)

        project = properties.VALUES.core.project.GetOrFail()
        args.filter, filter_expr = filter_rewrite.Rewriter().Rewrite(
            args.filter)
        return helper.List(project=project, filter_expr=filter_expr)
Beispiel #2
0
    def Run(self, args):
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client
        helper = vpn_tunnels_utils.VpnTunnelHelper(holder)

        vpn_tunnel_ref = _VPN_TUNNEL_ARG.ResolveAsResource(
            args,
            holder.resources,
            scope_lister=compute_flags.GetDefaultScopeLister(client))
        return helper.Describe(vpn_tunnel_ref)
    def Run(self, args):
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        helper = vpn_tunnels_utils.VpnTunnelHelper(holder)

        project = properties.VALUES.core.project.GetOrFail()
        display_info = args.GetDisplayInfo()
        defaults = resource_projection_spec.ProjectionSpec(
            symbols=display_info.transforms, aliases=display_info.aliases)
        args.filter, filter_expr = filter_rewrite.Rewriter().Rewrite(
            args.filter, defaults=defaults)
        return helper.List(project=project, filter_expr=filter_expr)
Beispiel #4
0
    def Run(self, args):
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client
        helper = vpn_tunnels_utils.VpnTunnelHelper(holder)

        vpn_tunnel_refs = _VPN_TUNNEL_ARG.ResolveAsResource(
            args,
            holder.resources,
            scope_lister=compute_flags.GetDefaultScopeLister(client))
        utils.PromptForDeletion(vpn_tunnel_refs, 'region')

        operation_refs = [helper.Delete(ref) for ref in vpn_tunnel_refs]
        wait_message = 'Deleting VPN {}'.format(
            ('tunnels' if (len(operation_refs) > 1) else 'tunnel'))
        operation_poller = DeleteBatchPoller(client,
                                             client.apitools_client.vpnTunnels)
        return waiter.WaitFor(operation_poller,
                              poller.OperationBatch(operation_refs),
                              wait_message)
Beispiel #5
0
    def Run(self, args):
        """Issues API requests to construct VPN Tunnels."""
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client
        helper = vpn_tunnels_utils.VpnTunnelHelper(holder)

        # TODO(b/38253176) Add test coverage
        if args.ike_networks is not None:
            raise DeprecatedArgumentException(
                '--ike-networks',
                'It has been renamed to --local-traffic-selector.')

        vpn_tunnel_ref = _VPN_TUNNEL_ARG.ResolveAsResource(
            args,
            holder.resources,
            scope_lister=compute_flags.GetDefaultScopeLister(client))

        args.target_vpn_gateway_region = vpn_tunnel_ref.region
        target_vpn_gateway_ref = _TARGET_VPN_GATEWAY_ARG.ResolveAsResource(
            args, holder.resources)

        # TODO(b/38253800) Add test coverage
        router_link = None
        if args.router is not None:
            args.router_region = vpn_tunnel_ref.region
            router_ref = _ROUTER_ARG.ResolveAsResource(args, holder.resources)
            router_link = router_ref.SelfLink()

        vpn_tunnel_to_insert = helper.GetVpnTunnelForInsert(
            name=vpn_tunnel_ref.Name(),
            description=args.description,
            ike_version=args.ike_version,
            peer_ip=args.peer_address,
            shared_secret=args.shared_secret,
            target_vpn_gateway=target_vpn_gateway_ref.SelfLink(),
            router=router_link,
            local_traffic_selector=args.local_traffic_selector,
            remote_traffic_selector=args.remote_traffic_selector)
        operation_ref = helper.Create(vpn_tunnel_ref, vpn_tunnel_to_insert)
        return helper.WaitForOperation(vpn_tunnel_ref, operation_ref,
                                       'Creating VPN tunnel')
Beispiel #6
0
    def Run(self, args):
        """Issues API requests to update a VPN Tunnel.

    Args:
      args: argparse.Namespace, The arguments received by this command.
    Returns:
      [protorpc.messages.Message], A list of responses returned
      by the compute API.
    """
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        messages = holder.client.messages
        helper = vpn_tunnels_utils.VpnTunnelHelper(holder)
        vpn_tunnel_ref = _VPN_TUNNEL_ARG.ResolveAsResource(
            args,
            holder.resources,
            scope_lister=compute_flags.GetDefaultScopeLister(holder.client))

        labels_diff = labels_util.Diff.FromUpdateArgs(args)
        if not labels_diff.MayHaveUpdates():
            raise calliope_exceptions.RequiredArgumentException(
                'LABELS', 'At least one of --update-labels or '
                '--remove-labels must be specified.')

        vpn_tunnel = helper.Describe(vpn_tunnel_ref)
        labels_update = labels_diff.Apply(
            messages.RegionSetLabelsRequest.LabelsValue, vpn_tunnel.labels)

        if not labels_update.needs_update:
            return vpn_tunnel

        operation_ref = helper.SetLabels(vpn_tunnel_ref,
                                         vpn_tunnel.labelFingerprint,
                                         labels_update.labels)
        return helper.WaitForOperation(
            vpn_tunnel_ref, operation_ref,
            'Updating labels of VPN tunnel [{0}]'.format(
                vpn_tunnel_ref.Name()))
Beispiel #7
0
    def _Run(self, args, is_vpn_gateway_supported):
        holder = base_classes.ComputeApiHolder(self.ReleaseTrack())
        client = holder.client
        helper = vpn_tunnels_utils.VpnTunnelHelper(holder)

        # TODO(b/38253176) Add test coverage
        if args.ike_networks is not None:
            raise DeprecatedArgumentException(
                '--ike-networks',
                'It has been renamed to --local-traffic-selector.')

        vpn_tunnel_ref = _VPN_TUNNEL_ARG.ResolveAsResource(
            args,
            holder.resources,
            scope_lister=compute_flags.GetDefaultScopeLister(client))

        router_link = None
        if args.IsSpecified('router'):
            args.router_region = vpn_tunnel_ref.region
            router_ref = _ROUTER_ARG.ResolveAsResource(args, holder.resources)
            router_link = router_ref.SelfLink()

        target_vpn_gateway = None
        vpn_gateway = None
        vpn_gateway_interface = None
        peer_external_gateway = None
        peer_external_gateway_interface = None
        peer_gcp_gateway = None

        if is_vpn_gateway_supported and args.IsSpecified('vpn_gateway'):
            self._ValidateHighAvailabilityVpnArgs(args)
            args.vpn_gateway_region = vpn_tunnel_ref.region
            vpn_gateway = self._VPN_GATEWAY_ARG.ResolveAsResource(
                args, holder.resources).SelfLink()
            vpn_gateway_interface = args.interface
            peer_external_gateway = self._GetPeerExternalGateway(
                holder.resources, args)
            peer_external_gateway_interface = args.peer_external_gateway_interface
            peer_gcp_gateway = self._GetPeerGcpGateway(holder.resources, args)
        else:
            self._ValidateClassicVpnArgs(args)
            args.target_vpn_gateway_region = vpn_tunnel_ref.region
            target_vpn_gateway = self._TARGET_VPN_GATEWAY_ARG.ResolveAsResource(
                args, holder.resources).SelfLink()

        if target_vpn_gateway:
            vpn_tunnel_to_insert = helper.GetClassicVpnTunnelForInsert(
                name=vpn_tunnel_ref.Name(),
                description=args.description,
                ike_version=args.ike_version,
                peer_ip=args.peer_address,
                shared_secret=args.shared_secret,
                target_vpn_gateway=target_vpn_gateway,
                router=router_link,
                local_traffic_selector=args.local_traffic_selector,
                remote_traffic_selector=args.remote_traffic_selector)
        else:
            vpn_tunnel_to_insert = helper.GetHighAvailabilityVpnTunnelForInsert(
                name=vpn_tunnel_ref.Name(),
                description=args.description,
                ike_version=args.ike_version,
                # TODO(b/127839209): remove peer_ip for HA tunnels once peer gateway
                # feature is enabled in Arcus.
                peer_ip=args.peer_address,
                shared_secret=args.shared_secret,
                vpn_gateway=vpn_gateway,
                vpn_gateway_interface=vpn_gateway_interface,
                router=router_link,
                peer_external_gateway=peer_external_gateway,
                peer_external_gateway_interface=peer_external_gateway_interface,
                peer_gcp_gateway=peer_gcp_gateway)

        operation_ref = helper.Create(vpn_tunnel_ref, vpn_tunnel_to_insert)
        return helper.WaitForOperation(vpn_tunnel_ref, operation_ref,
                                       'Creating VPN tunnel')