def Args(parser):
     parser.display_info.AddFormat(
         'table(instance.basename():label=NAME, status)')
     parser.display_info.AddUriFunc(
         instance_groups_utils.UriFuncForListInstanceRelatedObjects)
     ListInstances.ZonalInstanceGroupArg = (
         instance_groups_flags.MakeZonalInstanceGroupArg())
     ListInstances.ZonalInstanceGroupArg.AddArgument(parser)
     flags.AddRegexArg(parser)
예제 #2
0
 def Args(parser):
   parser.display_info.AddFormat(instance_groups_unmanaged_flags.LIST_FORMAT)
   Create.ZONAL_INSTANCE_GROUP_ARG = (
       instance_groups_flags.MakeZonalInstanceGroupArg())
   Create.ZONAL_INSTANCE_GROUP_ARG.AddArgument(parser, operation_type='create')
   parser.add_argument(
       '--description',
       help=('Specifies a textual description for the '
             'unmanaged instance group.'))
  def Args(parser):
    RemoveInstances.ZONAL_INSTANCE_GROUP_ARG = (
        instance_groups_flags.MakeZonalInstanceGroupArg())
    RemoveInstances.ZONAL_INSTANCE_GROUP_ARG.AddArgument(parser)

    parser.add_argument(
        '--instances',
        required=True,
        type=arg_parsers.ArgList(min_length=1),
        metavar='INSTANCE',
        help='The names of the instances to remove from the instance group.')
예제 #4
0
 def Args(parser):
     AddInstances.ZonalInstanceGroupArg = (
         instance_groups_flags.MakeZonalInstanceGroupArg())
     AddInstances.ZonalInstanceGroupArg.AddArgument(parser)
     parser.add_argument(
         '--instances',
         required=True,
         type=arg_parsers.ArgList(min_length=1),
         metavar='INSTANCE',
         help='A list of names of instances to add to the instance group. '
         'These must exist beforehand and must live in the same zone as '
         'the instance group.')
예제 #5
0
class InstanceGroupManagersDeleteZonalTest(test_base.BaseTest):
    def SetUp(self):
        self.SelectApi(API_VERSION)
        self.make_requests.side_effect = iter([
            [],  # Listed 0 Autoscalers.
            test_resources.MakeInstanceGroupManagers(API_VERSION),
            [],
        ])
        self.autoscalers_list_request_zone_1 = [(
            self.compute.autoscalers,
            'List',
            self.messages.ComputeAutoscalersListRequest(
                maxResults=500,
                project='my-project',
                zone='zone-1',
            ),
        )]
        self.autoscalers_list_request_zone_2 = [(
            self.compute.autoscalers,
            'List',
            self.messages.ComputeAutoscalersListRequest(
                maxResults=500,
                project='my-project',
                zone='zone-2',
            ),
        )]

    def testBasicDelete(self):
        properties.VALUES.core.disable_prompts.Set(True)
        self.Run(
            'compute instance-groups managed delete group-1 --zone zone-1')

        self.CheckRequests(
            self.autoscalers_list_request_zone_1,
            [(self.compute.instanceGroupManagers, 'Delete',
              self.messages.ComputeInstanceGroupManagersDeleteRequest(
                  instanceGroupManager='group-1',
                  project='my-project',
                  zone='zone-1'))],
        )

    def testPromptingWithYes(self):
        self.make_requests.side_effect = iter([
            test_resources.MakeAutoscalers(API_VERSION),
            test_resources.MakeInstanceGroupManagers(API_VERSION),
            [],
        ])
        self.WriteInput('y')
        self.Run("""
        compute instance-groups managed delete group-1 group-2 group-3
          --zone zone-1
        """)
        self.CheckRequests(
            self.autoscalers_list_request_zone_1,
            [(self.compute.autoscalers, 'Delete',
              self.messages.ComputeAutoscalersDeleteRequest(
                  autoscaler='autoscaler-1',
                  project='my-project',
                  zone='zone-1')),
             (self.compute.autoscalers, 'Delete',
              self.messages.ComputeAutoscalersDeleteRequest(
                  autoscaler='autoscaler-2',
                  project='my-project',
                  zone='zone-1')),
             (self.compute.autoscalers, 'Delete',
              self.messages.ComputeAutoscalersDeleteRequest(
                  autoscaler='autoscaler-3',
                  project='my-project',
                  zone='zone-1'))],
            [(self.compute.instanceGroupManagers, 'Delete',
              self.messages.ComputeInstanceGroupManagersDeleteRequest(
                  instanceGroupManager='group-1',
                  project='my-project',
                  zone='zone-1')),
             (self.compute.instanceGroupManagers, 'Delete',
              self.messages.ComputeInstanceGroupManagersDeleteRequest(
                  instanceGroupManager='group-2',
                  project='my-project',
                  zone='zone-1')),
             (self.compute.instanceGroupManagers, 'Delete',
              self.messages.ComputeInstanceGroupManagersDeleteRequest(
                  instanceGroupManager='group-3',
                  project='my-project',
                  zone='zone-1'))],
        )
        self.AssertErrContains(
            r'The following instance group managers will be deleted:\n'
            r' - [group-1] in [zone-1]\n'
            r' - [group-2] in [zone-1]\n'
            r' - [group-3] in [zone-1]')
        self.AssertErrContains('PROMPT_CONTINUE')

    def testPromptingWithNo(self):
        self.WriteInput('n')
        with self.AssertRaisesToolExceptionRegexp('Deletion aborted by user.'):
            self.Run("""
          compute instance-groups managed delete group-1
            --zone zone-1
          """)

        self.CheckRequests()

    def testScopePrompting(self):
        self.StartPatch('googlecloudsdk.core.console.console_io.CanPrompt',
                        return_value=True)
        self.make_requests.side_effect = iter([
            [self.messages.Region(name='region-1')],
            [
                self.messages.Zone(name='zone-2'),
                self.messages.Zone(name='zone-1')
            ],
            test_resources.MakeAutoscalers(API_VERSION),
            test_resources.MakeInstanceGroupManagers(API_VERSION),
            [],  # Deleting 0 Autoscalers.
        ])
        self.WriteInput('2\ny')
        self.Run("""
        compute instance-groups managed delete group-1 group-2
        """)

        self.CheckRequests(
            self.regions_list_request,
            self.zones_list_request,
            self.autoscalers_list_request_zone_1,
            [(self.compute.autoscalers, 'Delete',
              self.messages.ComputeAutoscalersDeleteRequest(
                  autoscaler='autoscaler-1',
                  project='my-project',
                  zone='zone-1')),
             (self.compute.autoscalers, 'Delete',
              self.messages.ComputeAutoscalersDeleteRequest(
                  autoscaler='autoscaler-2',
                  project='my-project',
                  zone='zone-1'))],
            [(self.compute.instanceGroupManagers, 'Delete',
              self.messages.ComputeInstanceGroupManagersDeleteRequest(
                  instanceGroupManager='group-1',
                  project='my-project',
                  zone='zone-1')),
             (self.compute.instanceGroupManagers, 'Delete',
              self.messages.ComputeInstanceGroupManagersDeleteRequest(
                  instanceGroupManager='group-2',
                  project='my-project',
                  zone='zone-1'))],
        )

    def testMultipleZonesUri(self):
        self.make_requests.side_effect = iter([
            [],  # No Autoscalers in zone-1 and zone-2
            test_resources.MakeInstanceGroupManagers(API_VERSION),
        ])
        self.WriteInput('y')
        self.Run("""
        compute instance-groups managed delete
          https://compute.googleapis.com/compute/{0}/projects/my-project/zones/zone-2/instanceGroupManagers/group-1
          https://compute.googleapis.com/compute/{0}/projects/my-project/zones/zone-1/instanceGroupManagers/group-2
        """.format(API_VERSION))

        self.CheckRequests(
            self.autoscalers_list_request_zone_1 +
            self.autoscalers_list_request_zone_2,
            [(self.compute.instanceGroupManagers, 'Delete',
              self.messages.ComputeInstanceGroupManagersDeleteRequest(
                  instanceGroupManager='group-1',
                  project='my-project',
                  zone='zone-2')),
             (self.compute.instanceGroupManagers, 'Delete',
              self.messages.ComputeInstanceGroupManagersDeleteRequest(
                  instanceGroupManager='group-2',
                  project='my-project',
                  zone='zone-1'))],
        )
        self.AssertErrContains(
            r'The following instance group managers will be deleted:\n'
            r' - [group-1] in [zone-2]\n'
            r' - [group-2] in [zone-1]')
        self.AssertErrContains('PROMPT_CONTINUE')

    def testMultipleZonesUriAndFlag(self):
        self.make_requests.side_effect = iter([
            [],  # No Autoscalers in zone-1 and zone-2
            test_resources.MakeInstanceGroupManagers(API_VERSION),
        ])
        self.WriteInput('y')
        self.Run("""
        compute instance-groups managed delete
          https://compute.googleapis.com/compute/{0}/projects/my-project/zones/zone-2/instanceGroupManagers/group-1
          group-2
          --zone zone-1
        """.format(API_VERSION))

        self.CheckRequests(
            self.autoscalers_list_request_zone_1 +
            self.autoscalers_list_request_zone_2,
            [(self.compute.instanceGroupManagers, 'Delete',
              self.messages.ComputeInstanceGroupManagersDeleteRequest(
                  instanceGroupManager='group-1',
                  project='my-project',
                  zone='zone-2')),
             (self.compute.instanceGroupManagers, 'Delete',
              self.messages.ComputeInstanceGroupManagersDeleteRequest(
                  instanceGroupManager='group-2',
                  project='my-project',
                  zone='zone-1'))],
        )
        self.AssertErrContains(
            r'The following instance group managers will be deleted:\n'
            r' - [group-1] in [zone-2]\n'
            r' - [group-2] in [zone-1]')
        self.AssertErrContains('PROMPT_CONTINUE')

    @patch('googlecloudsdk.command_lib.compute.instance_groups.flags.'
           'MULTISCOPE_INSTANCE_GROUP_MANAGERS_ARG',
           instance_groups_flags.MakeZonalInstanceGroupArg(plural=True))
    def testInvalidCollectionPath(self):
        properties.VALUES.core.disable_prompts.Set(True)
        with self.assertRaisesRegex(ValueError, 'Unknown reference type.*'):
            self.Run(
                'compute instance-groups managed delete group-1 --zone zone-1')
예제 #6
0
 def Args(parser):
     Describe.ZonalInstanceGroupArg = flags.MakeZonalInstanceGroupArg()
     Describe.ZonalInstanceGroupArg.AddArgument(parser,
                                                operation_type='describe')
예제 #7
0
 def Args(parser):
     GetNamedPorts.ZonalInstanceGroupArg = (
         instance_groups_flags.MakeZonalInstanceGroupArg())
     GetNamedPorts.ZonalInstanceGroupArg.AddArgument(parser)
예제 #8
0
 def Args(parser):
     Delete.ZonalInstanceGroupArg = flags.MakeZonalInstanceGroupArg(
         plural=True)
     Delete.ZonalInstanceGroupArg.AddArgument(parser,
                                              operation_type='delete')
 def Args(parser):
     flags.AddNamedPortsArgs(parser)
     SetNamedPorts.ZONAL_INSTANCE_GROUP_ARG = flags.MakeZonalInstanceGroupArg(
     )
     SetNamedPorts.ZONAL_INSTANCE_GROUP_ARG.AddArgument(parser)
예제 #10
0
 def Args(parser):
   GetNamedPorts.ZonalInstanceGroupArg = (
       instance_groups_flags.MakeZonalInstanceGroupArg())
   GetNamedPorts.ZonalInstanceGroupArg.AddArgument(parser)
   parser.display_info.AddFormat('table(name, port)')
예제 #11
0
 def Args(parser):
     ListInstances.ZonalInstanceGroupArg = (
         instance_groups_flags.MakeZonalInstanceGroupArg())
     ListInstances.ZonalInstanceGroupArg.AddArgument(parser)
     flags.AddRegexArg(parser)
예제 #12
0
 def Args(parser):
   flags.AddNamedPortsArgs(parser)
   SetNamedPorts.ZonalInstanceGroupArg = flags.MakeZonalInstanceGroupArg()
   SetNamedPorts.ZonalInstanceGroupArg.AddArgument(parser)