示例#1
0
    def _doTestAddImageGeneratesCorrectRequest(self, service_version,
                                               requested_source,
                                               expected_source):
        flag_values = copy.deepcopy(FLAGS)

        command = image_cmds.AddImage('addimage', flag_values)

        expected_project = 'test_project'
        expected_image = 'test_image'
        expected_description = 'test image'
        submitted_kernel = 'projects/test_project/kernels/test_kernel'
        expected_type = 'RAW'
        flag_values.project = expected_project
        flag_values.description = expected_description
        flag_values.preferred_kernel = submitted_kernel
        flag_values.service_version = service_version

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        expected_kernel = command.NormalizeGlobalResourceName(
            expected_project, 'kernels', submitted_kernel)

        result = command.Handle(expected_image, requested_source)

        self.assertEqual(result['project'], expected_project)
        self.assertEqual(result['body']['name'], expected_image)
        self.assertEqual(result['body']['description'], expected_description)

        self.assertEqual(result['body']['preferredKernel'], expected_kernel)
        self.assertEqual(result['body']['sourceType'], expected_type)
        self.assertEqual(result['body']['rawDisk']['source'], expected_source)
示例#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)
示例#3
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)
  def _DoTestAddSnapshotGeneratesCorrectRequest(self, service_version):
    flag_values = copy.deepcopy(FLAGS)

    command = snapshot_cmds.AddSnapshot('addsnapshot', flag_values)

    expected_project = 'test_project'
    expected_snapshot = 'test_snapshot'
    expected_description = 'test snapshot'
    submitted_source_disk = 'disk1'
    submitted_zone = 'myzone'
    flag_values.service_version = service_version
    flag_values.source_disk = submitted_source_disk
    flag_values.project = expected_project
    flag_values.description = expected_description

    command.SetFlags(flag_values)
    command.SetApi(mock_api.MockApi())

    if command._IsUsingAtLeastApiVersion('v1beta14'):
      flag_values.zone = submitted_zone

    expected_source_disk = command.NormalizePerZoneResourceName(
        expected_project,
        submitted_zone,
        'disks',
        submitted_source_disk)

    result = command.Handle(expected_snapshot)

    self.assertEqual(result['project'], expected_project)
    self.assertEqual(result['body']['name'], expected_snapshot)
    self.assertEqual(result['body']['description'], expected_description)
    self.assertEqual(result['body']['sourceDisk'], expected_source_disk)
    def _doTestAddNetworkGeneratesCorrectRequest(self, service_version):
        flag_values = copy.deepcopy(FLAGS)

        command = network_cmds.AddNetwork('addnetwork', flag_values)

        expected_project = 'test_project'
        expected_network = 'test-network'
        expected_range = '192.168.0.0/16'
        expected_gateway = '192.168.0.1'
        expected_description = 'test network'
        flag_values.project = expected_project
        flag_values.description = expected_description
        flag_values.range = expected_range
        flag_values.gateway = expected_gateway
        flag_values.service_version = service_version

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        result = command.Handle(expected_network)

        self.assertEqual(result['project'], expected_project)

        response_body = result['body']
        self.assertEqual(response_body['name'], expected_network)
        self.assertEqual(response_body['description'], expected_description)

        self.assertEqual(response_body['IPv4Range'], expected_range)
        self.assertEqual(response_body['gatewayIPv4'], expected_gateway)
    def _DoTestGetOperationGeneratesCorrectRequest(self, service_version):
        flag_values = copy.deepcopy(FLAGS)

        command = operation_cmds.GetOperation('getoperation', 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())
        if command._IsUsingAtLeastApiVersion('v1beta14'):
            submitted_zone = 'myzone'
            flag_values.zone = submitted_zone

        result = command.Handle(expected_operation)

        self.assertEqual(result['project'], expected_project)
        self.assertEqual(result['operation'], expected_operation)

        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'])
    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'])
示例#8
0
    def testDeprecate(self):
        flag_values = copy.deepcopy(FLAGS)

        command = image_cmds.Deprecate('deprecateimage', flag_values)

        expected_project = 'test_project'
        expected_image = 'test_image'
        expected_state = 'DEPRECATED'
        expected_replacement = 'replacement_image'
        expected_obsolete_timestamp = '1970-01-01T00:00:00Z'
        expected_deleted_timestamp = '1980-01-01T00:00:00.000Z'
        flag_values.project = expected_project
        flag_values.state = expected_state
        flag_values.replacement = expected_replacement
        flag_values.obsolete_on = expected_obsolete_timestamp
        flag_values.deleted_on = expected_deleted_timestamp

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        result = command.Handle(expected_image)

        self.assertEqual(result['project'], expected_project)
        self.assertEqual(result['image'], expected_image)
        self.assertEqual(result['body']['state'], expected_state)
        self.assertEqual(result['body']['replacement'], expected_replacement)
        self.assertEqual(result['body']['obsolete'],
                         expected_obsolete_timestamp)
        self.assertEqual(result['body']['deleted'], expected_deleted_timestamp)
示例#9
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
示例#10
0
  def testAddSnapshotRequiresSourceDisk(self):
    flag_values = copy.deepcopy(FLAGS)

    command = snapshot_cmds.AddSnapshot('addsnapshot', flag_values)

    expected_project = 'test_project'
    expected_snapshot = 'test_snapshot'
    expected_description = 'test snapshot'
    submitted_version = command_base.CURRENT_VERSION
    submitted_source_disk = 'disk1'

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

    command.SetFlags(flag_values)

    def GetDiskPath(disk_name):
      disk_path = 'projects/test_project/disks/%s' % (disk_name)
      if command._IsUsingAtLeastApiVersion('v1beta14'):
        disk_path = 'projects/test_project/zones/zone-a/disks/%s' % (disk_name)
      return disk_path

    disks = {
        'items': [
            {'name': GetDiskPath('disk1')},
            {'name': GetDiskPath('disk2')},
            {'name': GetDiskPath('disk3')}]}

    class MockDisksApi(object):
      def list(self, **unused_kwargs):
        return mock_api.MockRequest(disks)

    api = mock_api.MockApi()
    api.disks = MockDisksApi
    command.SetApi(api)

    expected_disk = command.NormalizePerZoneResourceName(
        expected_project,
        'zone-a',
        'disks',
        submitted_source_disk)

    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

    result = command.Handle(expected_snapshot)
    self.assertEqual(result['body']['sourceDisk'], expected_disk)
    sys.stdin = oldin
    sys.stdout = oldout
示例#11
0
  def _DoTestAddSnapshotWithoutZoneGeneratesCorrectRequest(self,
                                                           service_version):
    flag_values = copy.deepcopy(FLAGS)

    command = snapshot_cmds.AddSnapshot('addsnapshot', flag_values)

    expected_project = 'test_project'
    expected_snapshot = 'test_snapshot'
    expected_description = 'test snapshot'
    submitted_source_disk = 'disk1'
    disk_zone = 'us-east-a'
    api_base = 'https://www.googleapis.com/compute/%s' % service_version
    disk_self_link = '%s/projects/%s/zones/%s/disks/%s' % (
        api_base, expected_project, disk_zone, submitted_source_disk)

    flag_values.service_version = service_version
    flag_values.source_disk = submitted_source_disk
    flag_values.project = expected_project
    flag_values.description = expected_description

    zones = {'items': [{'name': disk_zone}]}
    disks = {'items': [{'name': 'disk1',
                        'selfLink': disk_self_link}]}

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

    class MockDisksApi(object):
      def list(self, **unused_kwargs):
        return mock_api.MockRequest(disks)

    api = mock_api.MockApi()
    api.zones = MockZonesApi
    api.disks = MockDisksApi

    command.SetFlags(flag_values)
    command.SetApi(api)

    expected_source_disk = command.NormalizePerZoneResourceName(
        expected_project,
        disk_zone,
        'disks',
        submitted_source_disk)

    result = command.Handle(expected_snapshot)

    self.assertEqual(result['project'], expected_project)
    self.assertEqual(result['body']['name'], expected_snapshot)
    self.assertEqual(result['body']['description'], expected_description)
    self.assertEqual(result['body']['sourceDisk'], expected_source_disk)
示例#12
0
    def testListNetworksGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = network_cmds.ListNetworks('listnetworks', flag_values)

        expected_project = 'test_project'
        flag_values.project = expected_project

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        result = command.Handle()

        self.assertEqual(result['project'], expected_project)
示例#13
0
    def testGetProjectGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = project_cmds.GetProject('getproject', flag_values)

        expected_project = 'test_project'
        flag_values.project = expected_project

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        result = command.Handle()

        self.assertEqual(result['project'], expected_project)
示例#14
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)
示例#15
0
    def testGetMachineTypeGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = machine_type_cmds.GetMachineType('getmachinetype',
                                                   flag_values)

        expected_machine_type = 'test_machine_type'
        flag_values.service_version = command_base.CURRENT_VERSION

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        result = command.Handle(expected_machine_type)

        self.assertEqual(result['machineType'], expected_machine_type)
    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, '')
示例#17
0
    def testGetImageGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = image_cmds.GetImage('getimage', flag_values)

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

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        result = command.Handle(expected_image)

        self.assertEqual(result['project'], expected_project)
        self.assertEqual(result['image'], expected_image)
示例#18
0
    def testGetNetworkGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = network_cmds.GetNetwork('getnetwork', flag_values)

        expected_project = 'test_project'
        expected_network = 'test_network'
        flag_values.project = expected_project

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        result = command.Handle(expected_network)

        self.assertEqual(result['project'], expected_project)
        self.assertEqual(result['network'], expected_network)
示例#19
0
  def testGetKernelGeneratesCorrectRequest(self):
    flag_values = copy.deepcopy(FLAGS)

    command = kernel_cmds.GetKernel('getkernel', flag_values)

    expected_project = 'test_project'
    expected_kernel = 'test_kernel'
    flag_values.project = expected_project

    command.SetFlags(flag_values)
    command.SetApi(mock_api.MockApi())

    result = command.Handle(expected_kernel)

    self.assertEqual(result['project'], expected_project)
    self.assertEqual(result['kernel'], expected_kernel)
    def testListOperationsGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = operation_cmds.ListOperations('listoperations', flag_values)

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

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        result = command.Handle()

        self.assertEqual(result['project'], expected_project)
示例#21
0
  def _DoTestGetSnapshotGeneratesCorrectRequest(self, service_version):
    flag_values = copy.deepcopy(FLAGS)

    command = snapshot_cmds.GetSnapshot('getsnapshot', flag_values)

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

    command.SetFlags(flag_values)
    command.SetApi(mock_api.MockApi())

    result = command.Handle(expected_snapshot)

    self.assertEqual(result['project'], expected_project)
    self.assertEqual(result['snapshot'], expected_snapshot)
示例#22
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)
示例#23
0
    def testAddtFirewallsWithTagsGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = firewall_cmds.AddFirewall('addfirewall', flag_values)

        expected_project = 'test_project'
        expected_firewall = 'test_firewall'
        submitted_network = 'test_network'
        expected_description = 'test firewall'
        expected_source_tags = ['a', 'b']
        expected_target_tags = ['c', 'd']
        flag_values.service_version = 'v1beta13'
        flag_values.project = expected_project
        flag_values.description = expected_description
        flag_values.network = submitted_network
        flag_values.allowed = [':22']
        flag_values.allowed_tag_sources = expected_source_tags
        flag_values.target_tags = expected_target_tags * 2  # Create duplicates

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        expected_network = command.NormalizeGlobalResourceName(
            expected_project, 'networks', submitted_network)

        result = command.Handle(expected_firewall)

        self.assertEqual(result['project'], expected_project)

        response_body = result['body']
        self.assertEqual(response_body['name'], expected_firewall)
        self.assertEqual(response_body['network'], expected_network)
        self.assertEqual(response_body['description'], expected_description)

        allowed = response_body['allowed']
        self.assertEqual(len(allowed), 2)
        used_protocols = set(
            [allowed[0]['IPProtocol'], allowed[1]['IPProtocol']])
        self.assertEqual(used_protocols, set(['6', '17']))
        self.assertEqual(allowed[0]['ports'], allowed[1]['ports'])
        self.assertEqual(allowed[0]['ports'], ['22'])
        self.assertTrue('sourceTags' in response_body)
        self.assertTrue('targetTags' in response_body)
        self.assertEqual(response_body['sourceTags'], expected_source_tags)
        self.assertEqual(response_body['targetTags'], expected_target_tags)
示例#24
0
    def testGetZoneGeneratesCorrectRequest(self):
        flag_values = copy.deepcopy(FLAGS)

        command = zone_cmds.GetZone('getzone', flag_values)

        expected_jurisdiction = 'test_jurisdiction'
        expected_region = 'test_region'
        expected_zone = 'z'
        submitted_full_zone = '%s-%s-%s' % (expected_jurisdiction,
                                            expected_region, expected_zone)
        flag_values.service_version = command_base.CURRENT_VERSION

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        result = command.Handle(submitted_full_zone)

        self.assertEqual(result['zone'], submitted_full_zone)
示例#25
0
    def testSetCommonInstanceMetadataChecksForOverwrites(self):
        flag_values = copy.deepcopy(FLAGS)
        command = project_cmds.SetCommonInstanceMetadata(
            'setcommoninstancemetadata', flag_values)

        expected_project = 'test_project'
        flag_values.project = expected_project
        flag_values.service_version = 'v1beta12'
        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())
        command._projects_api.get = mock_api.CommandExecutor({
            'commonInstanceMetadata': [{
                'key': 'sshKeys',
                'value': 'foo:bar'
            }]
        })

        self.assertRaises(command_base.CommandError, command.Handle)
示例#26
0
    def testSetCommonInstanceMetadataGeneratesCorrectRequest(self):
        class SetCommonInstanceMetadata(object):
            def __call__(self, project, body):
                self._project = project
                self._body = body
                return self

            def execute(self):
                return {'project': self._project, 'body': self._body}

        flag_values = copy.deepcopy(FLAGS)
        command = project_cmds.SetCommonInstanceMetadata(
            'setcommoninstancemetadata', flag_values)

        expected_project = 'test_project'
        flag_values.project = expected_project
        flag_values.service_version = 'v1beta12'
        with tempfile.NamedTemporaryFile() as metadata_file:
            metadata_file.write('foo:bar')
            metadata_file.flush()
            flag_values.metadata_from_file = [
                'sshKeys:%s' % metadata_file.name
            ]

            command.SetFlags(flag_values)
            command.SetApi(mock_api.MockApi())
            command._projects_api.get = mock_api.CommandExecutor(
                {'commonInstanceMetadata': [{
                    'key': 'sshKeys',
                    'value': ''
                }]})
            command._projects_api.setCommonInstanceMetadata = (
                SetCommonInstanceMetadata())

            result = command.Handle()
            self.assertEquals(expected_project, result['project'])
            self.assertEquals(
                {
                    'kind': 'compute#metadata',
                    'items': [{
                        'key': 'sshKeys',
                        'value': 'foo:bar'
                    }]
                }, result['body'])
    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, '')
示例#28
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'])
示例#29
0
    def _doAddFirewallGeneratesCorrectRequest(self, service_version,
                                              allowed_ip_source):
        flag_values = copy.deepcopy(FLAGS)

        command = firewall_cmds.AddFirewall('addfirewall', flag_values)

        expected_project = 'test_project'
        expected_firewall = 'test_firewall'
        submitted_network = 'test_network'
        expected_description = 'test firewall'
        flag_values.service_version = service_version
        flag_values.project = expected_project
        flag_values.description = expected_description
        flag_values.network = submitted_network
        flag_values.allowed = [':22']
        if allowed_ip_source:
            flag_values.allowed_ip_sources.append(allowed_ip_source)

        command.SetFlags(flag_values)
        command.SetApi(mock_api.MockApi())

        expected_network = command.NormalizeGlobalResourceName(
            expected_project, 'networks', submitted_network)

        result = command.Handle(expected_firewall)

        self.assertEqual(result['project'], expected_project)

        response_body = result['body']
        self.assertEqual(response_body['name'], expected_firewall)
        self.assertEqual(response_body['network'], expected_network)
        self.assertEqual(response_body['description'], expected_description)

        self.assertEqual(response_body['sourceRanges'],
                         [allowed_ip_source or '0.0.0.0/0'])
        allowed = response_body['allowed']
        self.assertEqual(len(allowed), 2)
        used_protocols = set([x['IPProtocol'] for x in allowed])
        self.assertEqual(used_protocols, set(['6', '17']))
        self.assertEqual(allowed[0]['ports'], allowed[1]['ports'])
        self.assertFalse('sourceTags' in response_body, response_body)
        self.assertFalse('targetTags' in response_body, response_body)
示例#30
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)