Exemplo n.º 1
0
  def _DoTestDeleteDiskGeneratesCorrectRequest(self, service_version):
    flag_values = copy.deepcopy(FLAGS)

    command = disk_cmds.DeleteDisk('deletedisk', flag_values)

    expected_project = 'test_project'
    expected_disk = 'test_disk'
    flag_values.project = expected_project
    flag_values.zone = 'zone-a'

    command.SetFlags(flag_values)
    command.SetApi(mock_api.MockApi())
    flag_values.service_version = service_version
    submitted_zone = 'copernicus-moon-base'
    if command._IsUsingAtLeastApiVersion('v1beta14'):
      flag_values.zone = submitted_zone

    command._credential = mock_api.MockCredential()

    results, exceptions = command.Handle(expected_disk)
    self.assertEqual(len(results['items']), 1)
    self.assertEqual(exceptions, [])
    result = results['items'][0]

    self.assertEqual(result['project'], expected_project)
    self.assertEqual(result['disk'], expected_disk)
    if command._IsUsingAtLeastApiVersion('v1beta14'):
      self.assertEqual(submitted_zone, result['zone'])
    else:
      self.assertFalse('zone' in result)
Exemplo n.º 2
0
    def _doTestAddDiskGeneratesCorrectRequest(self, service_version):
        flag_values = copy.deepcopy(FLAGS)

        command = disk_cmds.AddDisk('adddisk', flag_values)

        expected_project = 'test_project'
        expected_disk = 'test_disk'
        expected_description = 'test disk'
        submitted_zone = 'copernicus-moon-base'
        expected_size = 20
        flag_values.service_version = service_version
        flag_values.zone = submitted_zone
        flag_values.project = expected_project
        flag_values.size_gb = expected_size
        flag_values.description = expected_description

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())
        command._credential = mock_api.MockCredential()

        results, exceptions = command.Handle(expected_disk)
        self.assertEqual(len(results['items']), 1)
        self.assertEqual(exceptions, [])
        result = results['items'][0]

        expected_zone = command.NormalizeResourceName(expected_project,
                                                      'zones', submitted_zone)

        self.assertEqual(result['project'], expected_project)
        self.assertEqual(result['body']['name'], expected_disk)
        self.assertEqual(result['body']['description'], expected_description)
        self.assertEqual(result['body']['sizeGb'], expected_size)
        self.assertEqual(result['body']['zone'], expected_zone)
Exemplo n.º 3
0
    def _DoTestDeleteGlobalOperationGeneratesCorrectRequest(
            self, service_version):
        flag_values = copy.deepcopy(FLAGS)

        command = operation_cmds.DeleteOperation('deleteoperation',
                                                 flag_values)

        expected_project = 'test_project'
        expected_operation = 'test_operation'
        flag_values.project = expected_project
        flag_values.service_version = service_version
        flag_values.zone = command_base.GLOBAL_ZONE_NAME

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())
        command._credential = mock_api.MockCredential()
        if not command._IsUsingAtLeastApiVersion('v1beta14'):
            return

        results, exceptions = command.Handle(expected_operation)
        self.assertEqual(exceptions, [])
        self.assertEqual(results, '')

        # Verify the request
        self.assertEquals(1, len(command._global_operations_api.requests))
        request = command._global_operations_api.requests[0]
        self.assertEqual('delete', request.method_name)
        self.assertEqual(expected_project, request.request_payload['project'])
        self.assertEqual(expected_operation,
                         request.request_payload['operation'])
Exemplo n.º 4
0
  def testAddDiskRequiresZone(self):
    flag_values = copy.deepcopy(FLAGS)

    command = disk_cmds.AddDisk('adddisk', flag_values)

    expected_project = 'test_project'
    expected_disk = 'test_disk'
    expected_description = 'test disk'
    expected_size = 20
    submitted_version = command_base.CURRENT_VERSION
    submitted_zone = 'us-east-a'

    flag_values.service_version = submitted_version
    flag_values.project = expected_project
    flag_values.size_gb = expected_size
    flag_values.description = expected_description

    command.SetFlags(flag_values)

    zones = {'items': [{'name': 'us-east-a'},
                       {'name': 'us-east-b'},
                       {'name': 'us-east-c'},
                       {'name': 'us-west-a'}]}

    class MockZonesApi(object):
      def list(self, **unused_kwargs):
        return mock_api.MockRequest(zones)

    api = mock_api.MockApi()
    api.zones = MockZonesApi
    command.SetApi(api)
    command._credential = mock_api.MockCredential()

    expected_zone = command.NormalizeTopLevelResourceName(
        expected_project,
        'zones',
        submitted_zone)

    mock_output = mock_api.MockOutput()
    mock_input = mock_api.MockInput('1\n\r')
    oldin = sys.stdin
    sys.stdin = mock_input
    oldout = sys.stdout
    sys.stdout = mock_output

    results, exceptions = command.Handle(expected_disk)
    self.assertEqual(len(results['items']), 1)
    self.assertEqual(exceptions, [])
    result = results['items'][0]

    if command._IsUsingAtLeastApiVersion('v1beta14'):
      self.assertEqual(submitted_zone, result['zone'])
      self.assertFalse('zone' in result['body'])
    else:
      self.assertFalse('zone' in result)
      self.assertEqual(result['body']['zone'], expected_zone)

    sys.stdin = oldin
    sys.stdout = oldout
Exemplo n.º 5
0
  def _DoTestAddDiskFromImageGeneratesCorrectRequest(self, service_version):
    flag_values = copy.deepcopy(FLAGS)

    command = disk_cmds.AddDisk('adddisk', flag_values)

    expected_project = 'test_project'
    expected_disk = 'test_disk'
    expected_description = 'test disk'
    expected_size_gb = 123
    submitted_zone = 'copernicus-moon-base'
    submitted_source_image = 'image1'
    submitted_size_gb = 123
    flag_values.zone = submitted_zone
    flag_values.project = expected_project
    flag_values.description = expected_description
    flag_values.source_image = submitted_source_image
    flag_values.size_gb = submitted_size_gb
    flag_values.service_version = service_version

    command.SetFlags(flag_values)
    command.SetApi(mock_api.MockApi())
    command._credential = mock_api.MockCredential()

    results, exceptions = command.Handle(expected_disk)
    self.assertEqual(len(results['items']), 1)
    self.assertEqual(exceptions, [])
    result = results['items'][0]

    expected_zone = command.NormalizeTopLevelResourceName(
        expected_project,
        'zones',
        submitted_zone)

    expected_source_image = command.NormalizeGlobalResourceName(
        expected_project,
        'images',
        submitted_source_image)

    self.assertEqual(result['project'], expected_project)
    self.assertEqual(result['body']['name'], expected_disk)
    self.assertEqual(result['body']['description'], expected_description)
    self.assertEqual(result['body']['sizeGb'], expected_size_gb)
    self.assertEqual(result['sourceImage'], expected_source_image)
    if command._IsUsingAtLeastApiVersion('v1beta14'):
      self.assertEqual(submitted_zone, result['zone'])
      self.assertFalse('zone' in result['body'])
    else:
      self.assertEqual(result['body']['zone'], expected_zone)
      self.assertFalse('zone' in result)
Exemplo n.º 6
0
    def testListDisksGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = disk_cmds.ListDisks('listdisks', flag_values)

        expected_project = 'test_project'
        flag_values.project = expected_project

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())
        command._credential = mock_api.MockCredential()

        result = command.Handle()

        self.assertEqual(result['project'], expected_project)
Exemplo n.º 7
0
    def testDeleteMultipleOperations(self):
        flag_values = copy.deepcopy(FLAGS)
        command = operation_cmds.DeleteOperation('deleteoperation',
                                                 flag_values)

        expected_project = 'test_project'
        expected_operations = ['test-operation-%02d' % x for x in xrange(100)]
        flag_values.project = expected_project

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())
        command._credential = mock_api.MockCredential()

        results, exceptions = command.Handle(*expected_operations)
        self.assertEqual(exceptions, [])
        self.assertEqual(results, '')
Exemplo n.º 8
0
    def testGetDiskGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = disk_cmds.GetDisk('getdisk', flag_values)

        expected_project = 'test_project'
        expected_disk = 'test_disk'
        flag_values.project = expected_project

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())
        command._credential = mock_api.MockCredential()

        result = command.Handle(expected_disk)

        self.assertEqual(result['project'], expected_project)
        self.assertEqual(result['disk'], expected_disk)
Exemplo n.º 9
0
    def testDeleteOperationGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = operation_cmds.DeleteOperation('deleteoperation',
                                                 flag_values)

        expected_project = 'test_project'
        expected_operation = 'test_operation'
        service_version = 'v1beta12'
        flag_values.project = expected_project
        flag_values.service_version = service_version

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())
        command._credential = mock_api.MockCredential()

        results, exceptions = command.Handle(expected_operation)
        self.assertEqual(exceptions, [])
        self.assertEqual(results, '')
Exemplo n.º 10
0
  def testAddDiskDefaultSizeGb(self):
    flag_values = copy.deepcopy(FLAGS)

    command = disk_cmds.AddDisk('adddisk', flag_values)

    flag_values.zone = 'copernicus-moon-base'
    flag_values.project = 'test_project'

    command.SetFlags(flag_values)
    command.SetApi(mock_api.MockApi())
    command._credential = mock_api.MockCredential()

    results, exceptions = command.Handle('disk1')
    self.assertEqual(len(results['items']), 1)
    self.assertEqual(exceptions, [])
    result = results['items'][0]

    # We did not set the size, make sure it defaults to 10GB.
    self.assertEqual(10, result['body']['sizeGb'])
Exemplo n.º 11
0
    def testDeleteImageGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = image_cmds.DeleteImage('deleteimage', flag_values)

        expected_project = 'test_project'
        expected_image = 'test_image'
        flag_values.project = expected_project

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())
        command._credential = mock_api.MockCredential()

        results, exceptions = command.Handle(expected_image)
        self.assertEqual(exceptions, [])
        self.assertEqual(len(results['items']), 1)
        result = results['items'][0]

        self.assertEqual(result['project'], expected_project)
        self.assertEqual(result['image'], expected_image)
Exemplo n.º 12
0
    def testDeleteMultipleImages(self):
        flag_values = copy.deepcopy(FLAGS)
        command = image_cmds.DeleteImage('deleteimage', flag_values)

        expected_project = 'test_project'
        expected_images = ['test-image-%02d' % x for x in xrange(100)]
        flag_values.project = expected_project

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())
        command._credential = mock_api.MockCredential()

        results, exceptions = command.Handle(*expected_images)
        self.assertEqual(exceptions, [])
        results = results['items']
        self.assertEqual(len(results), len(expected_images))

        for expected_image, result in zip(expected_images, results):
            self.assertEqual(result['project'], expected_project)
            self.assertEqual(result['image'], expected_image)
Exemplo n.º 13
0
  def _DoTestAddMultipleDisks(self, service_version):
    flag_values = copy.deepcopy(FLAGS)
    command = disk_cmds.AddDisk('adddisk', flag_values)

    expected_kind = command._GetResourceApiKind('disk')
    expected_project = 'test_project'
    expected_disks = ['test-disk-%02d' % i for i in xrange(100)]
    expected_description = 'test disk'
    submitted_zone = 'copernicus-moon-base'
    expected_size = 12

    flag_values.service_version = service_version
    flag_values.zone = submitted_zone
    flag_values.project = expected_project
    flag_values.size_gb = expected_size
    flag_values.description = expected_description

    command.SetFlags(flag_values)
    command.SetApi(mock_api.MockApi())
    command._credential = mock_api.MockCredential()

    expected_zone = command.NormalizeTopLevelResourceName(
        expected_project, 'zones', submitted_zone)

    results, exceptions = command.Handle(*expected_disks)
    self.assertEqual(exceptions, [])
    results = results['items']
    self.assertEqual(len(results), len(expected_disks))

    for expected_disk, result in zip(expected_disks, results):
      self.assertEqual(result['project'], expected_project)
      self.assertEqual(result['body']['kind'], expected_kind)
      self.assertEqual(result['body']['sizeGb'], expected_size)
      self.assertEqual(result['body']['name'], expected_disk)
      self.assertEqual(result['body']['description'], expected_description)
      if command._IsUsingAtLeastApiVersion('v1beta14'):
        self.assertEqual(submitted_zone, result['zone'])
        self.assertFalse('zone' in result['body'])
      else:
        self.assertFalse('zone' in result)
        self.assertEqual(result['body']['zone'], expected_zone)
Exemplo n.º 14
0
  def testDeleteMultipleDisks(self):
    flag_values = copy.deepcopy(FLAGS)
    command = disk_cmds.DeleteDisk('deletedisk', flag_values)

    expected_project = 'test_project'
    expected_disks = ['test-disk-%02d' % x for x in xrange(100)]
    flag_values.project = expected_project
    flag_values.zone = 'zone-a'

    command.SetFlags(flag_values)
    command.SetApi(mock_api.MockApi())
    command._credential = mock_api.MockCredential()

    results, exceptions = command.Handle(*expected_disks)
    self.assertEqual(exceptions, [])
    results = results['items']
    self.assertEqual(len(results), len(expected_disks))

    for expected_disk, result in zip(expected_disks, results):
      self.assertEqual(result['project'], expected_project)
      self.assertEqual(result['disk'], expected_disk)
Exemplo n.º 15
0
  def _DoTestDeleteSnapshotGeneratesCorrectRequest(self, service_version):
    flag_values = copy.deepcopy(FLAGS)

    command = snapshot_cmds.DeleteSnapshot('deletesnapshot', flag_values)

    expected_project = 'test_project'
    expected_snapshot = 'test_snapshot'
    flag_values.project = expected_project

    command.SetFlags(flag_values)
    command.SetApi(mock_api.MockApi())
    command._credential = mock_api.MockCredential()
    flag_values.service_version = service_version

    results, exceptions = command.Handle(expected_snapshot)
    self.assertEquals(exceptions, [])
    self.assertEquals(len(results['items']), 1)
    result = results['items'][0]

    self.assertEqual(result['project'], expected_project)
    self.assertEqual(result['snapshot'], expected_snapshot)
Exemplo n.º 16
0
  def testAddDiskFromImageDoesNotPassSizeGbUnlessExplicitlySet(self):
    flag_values = copy.deepcopy(FLAGS)

    command = disk_cmds.AddDisk('adddisk', flag_values)

    flag_values.zone = 'copernicus-moon-base'
    flag_values.project = 'test_project'
    flag_values.source_image = 'image1'
    flag_values.service_version = 'v1beta14'

    command.SetFlags(flag_values)
    command.SetApi(mock_api.MockApi())
    command._credential = mock_api.MockCredential()

    results, exceptions = command.Handle('disk1')
    self.assertEqual(len(results['items']), 1)
    self.assertEqual(exceptions, [])
    result = results['items'][0]

    # Make sure we did not pass 'sizeGb' in the body.
    self.assertFalse('sizeGb' in result['body'])
Exemplo n.º 17
0
    def _DoTestDeleteOperationGeneratesCorrectRequest(self, service_version):
        flag_values = copy.deepcopy(FLAGS)

        command = operation_cmds.DeleteOperation('deleteoperation',
                                                 flag_values)

        expected_project = 'test_project'
        expected_operation = 'test_operation'
        flag_values.project = expected_project
        flag_values.service_version = service_version

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())
        command._credential = mock_api.MockCredential()
        if command._IsUsingAtLeastApiVersion('v1beta14'):
            submitted_zone = 'myzone'
            flag_values.zone = submitted_zone

        results, exceptions = command.Handle(expected_operation)
        self.assertEqual(exceptions, [])
        self.assertEqual(results, '')

        # Verify the request
        api = command._global_operations_api
        if command._IsUsingAtLeastApiVersion('v1beta14'):
            api = command._zone_operations_api

        self.assertEquals(1, len(api.requests))
        request = api.requests[0]
        if command._IsUsingAtLeastApiVersion('v1beta14'):
            self.assertEqual(submitted_zone, request.request_payload['zone'])
        else:
            self.assertFalse('zone' in request.request_payload)
        self.assertEqual(expected_project, request.request_payload['project'])
        self.assertEqual(expected_operation,
                         request.request_payload['operation'])
Exemplo n.º 18
0
    def testAddDiskRequiresSharedFateZone(self):
        flag_values = copy.deepcopy(FLAGS)

        command = disk_cmds.AddDisk('adddisk', flag_values)

        expected_project = 'test_project'
        expected_disk = 'test_disk'
        expected_description = 'test disk'
        expected_size = 20
        submitted_version = command_base.CURRENT_VERSION
        submitted_zone = 'us-east-a'

        flag_values.service_version = submitted_version
        flag_values.project = expected_project
        flag_values.size_gb = expected_size
        flag_values.description = expected_description

        command.SetFlags(flag_values)

        def GetZonePath(part_one, part_two, part_three):
            zone_path = 'projects/test_project/zones/%s-%s-%s' % (
                part_one, part_two, part_three)

            return zone_path

        zones = {
            'items': [{
                'name': GetZonePath('us', 'east', 'a')
            }, {
                'name': GetZonePath('us', 'east', 'b')
            }, {
                'name': GetZonePath('us', 'east', 'c')
            }, {
                'name': GetZonePath('us', 'west', 'a')
            }]
        }

        class MockSharedFateZonesApi(object):
            def list(self, **unused_kwargs):
                return mock_api.MockRequest(zones)

        class MockZonesApi(object):
            def list(self, **unused_kwargs):
                return mock_api.MockRequest(zones)

        api = mock_api.MockApi()
        api.sharedFateZones = MockSharedFateZonesApi
        api.zones = MockZonesApi
        command.SetApi(api)
        command._credential = mock_api.MockCredential()

        expected_zone = command.NormalizeResourceName(expected_project,
                                                      'zones', submitted_zone)

        mock_output = mock_api.MockOutput()
        mock_input = mock_api.MockInput('1\n\r')
        oldin = sys.stdin
        sys.stdin = mock_input
        oldout = sys.stdout
        sys.stdout = mock_output

        results, exceptions = command.Handle(expected_disk)
        self.assertEqual(len(results['items']), 1)
        self.assertEqual(exceptions, [])
        result = results['items'][0]
        self.assertEqual(result['body']['zone'], expected_zone)
        sys.stdin = oldin
        sys.stdout = oldout