示例#1
0
    def test_on_get_with_name_filter(self):
        client, env = get_client_env(query_string='name=imageA')
        vgbdtg = client['Virtual_Guest_Block_Device_Template_Group']
        vgbdtg.getPublicImages.return_value = [{
            'globalIdentifier': 'uuid',
            'blockDevicesDiskSpaceTotal': 1000,
            'name': 'imageA',
            'status': {
                'keyName': 'ACTIVE',
                'name': 'Active'
            },
        }]
        client['Account'].getPrivateBlockDeviceTemplateGroups.return_value = [{
            'globalIdentifier':
            'uuid2',
            'blockDevicesDiskSpaceTotal':
            2000,
            'name':
            'imageB',
            'status': {
                'keyName': 'ACTIVE',
                'name': 'Active'
            },
        }]

        # 1. There is one image pass the filter and returned in result.
        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        images.ImagesV2(self.app, detail=True).on_get(req, resp)

        self.assertEqual(resp.status, 200)
        self.assertEqual(len(resp.body['images']), 1)
        image1 = resp.body['images'][0]
        self.assertEqual(image1['id'], 'uuid')
        self.assertEqual(image1['name'], 'imageA')
        self.assertEqual(image1['size'], 1000)
        self.assertEqual('active', image1['status'])

        # 2. There is no any image could pass the filter and been returned.
        __client, env = get_client_env(query_string='name=imageX')
        req = api.Request(env, sl_client=__client)
        resp = falcon.Response()

        images.ImagesV2(self.app).on_get(req, resp)

        self.assertEqual(resp.status, 200)
        self.assertEqual(len(resp.body['images']), 0)
示例#2
0
 def perform_flavor_detail(self, tenant_id, flavor_list, flavor_id):
     env = get_client_env()
     self.req = api.Request(env)
     self.resp = falcon.Response()
     self.app = mock.MagicMock()
     instance = flavors.FlavorV2(app=self.app, flavors=flavor_list)
     instance.on_get(self.req, self.resp, flavor_id, tenant_id)
示例#3
0
 def test_list_servers_basic(self, vs_list_instances):
     """Basic test for listing servers without details."""
     client, env = get_client_env()
     req = api.Request(env, sl_client=client)
     resp = falcon.Response()
     link_url = 'http://localhost:5000/compute/v2/servers/14331143'
     with mock.patch.object(self.app,
                            'get_endpoint_url',
                            return_value=link_url) as get_url_mock:
         self.instance.on_get(req, resp, tenant_id=None)
     get_url_mock.assert_called_once_with('compute',
                                          req,
                                          'v2_server',
                                          server_id='14331143')
     vs_list_instances.assert_called_once_with(
         **servers.get_list_params(req))
     self.assertEqual(200, resp.status)
     self.assertEqual(['servers'], resp.body.keys())
     instances = resp.body['servers']
     self.assertEqual(1, len(instances))
     server = instances[0]
     self.assertItemsEqual(['id', 'links', 'name'], server.keys())
     self.assertEqual('14331143', server['id'])
     self.assertEqual('fake-server', server['name'])
     self.assertEqual(1, len(server['links']))
     self.assertDictEqual({
         'href': link_url,
         'rel': 'self'
     }, server['links'][0])
示例#4
0
    def test_list_images_no_details(self):
        client, env = get_client_env()
        vgbdtg = client['Virtual_Guest_Block_Device_Template_Group']
        vgbdtg.getPublicImages.return_value = [{
            'globalIdentifier': 'uuid',
            'name': 'some image',
        }]
        client['Account'].getPrivateBlockDeviceTemplateGroups.return_value = [{
            'globalIdentifier':
            'uuid2',
            'name':
            'some other image',
        }]

        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        images.ImagesV2(self.app).on_get(req, resp)

        self.assertEqual(resp.status, 200)
        self.assertEqual(len(resp.body['images']), 2)
        image1 = resp.body['images'][0]
        expected_keys = ['id', 'links', 'name']
        self.assertEqual(expected_keys, sorted(image1.keys()))
        self.assertEqual(image1['id'], 'uuid')
        self.assertEqual(image1['name'], 'some image')
        self._assert_image_links(image1)

        image2 = resp.body['images'][1]
        self.assertEqual(expected_keys, sorted(image2.keys()))
        self.assertEqual(image2['id'], 'uuid2')
        self.assertEqual(image2['name'], 'some other image')
        self._assert_image_links(image2)
示例#5
0
 def test_sl_client(self):
     # Jumpgate request has an sl_client property.
     env = helpers.create_environ()
     r = api.Request(env)
     self.assertIsNone(r.sl_client)
     r.sl_client = 'fake_client'
     self.assertEqual('fake_client', r.sl_client)
示例#6
0
 def test_on_post_invalid_create(self, create_instance_mock):
     create_instance_mock.side_effect = Exception('badrequest')
     client, env = get_client_env(body=self.body_string)
     req = api.Request(env, sl_client=client)
     resp = falcon.Response()
     self.instance.on_post(req, resp, 'tenant_id')
     self.assertEqual(resp.status, 400)
 def perform_extra_detail_key(self, tenant_id, flavor_id, key_id):
     env = get_client_env()
     self.req = api.Request(env)
     self.resp = falcon.Response()
     flavors = flavor_list_loader.Flavors.get_flavors(app=mock.MagicMock())
     instance = extra_specs.ExtraSpecsFlavorKeyV2(app=mock.MagicMock(),
                                                  flavors=flavors)
     instance.on_get(self.req, self.resp, tenant_id, flavor_id, key_id)
示例#8
0
    def test_on_get_response_subnetv2_invalid_id(self):
        """Test invalid id"""
        client, env = get_client_env()
        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        subnets.SubnetV2().on_get(req, resp, 'BAD_ID')
        self.assertEqual(resp.status, 400)
示例#9
0
 def perform_server_action(self, body_str, tenant_id, instance_id, flavors):
     self.client, self.env = get_client_env(body=body_str)
     self.vg_clientMock = self.client['Virtual_Guest']
     self.req = api.Request(self.env, sl_client=self.client)
     self.resp = falcon.Response()
     instance = servers.ServerActionV2(app=mock.MagicMock(),
                                       flavors=flavors)
     instance.on_post(self.req, self.resp, tenant_id, instance_id)
示例#10
0
 def perform_get_vol_details(self, tenant_id, instance_id, volume_id):
     self.client, self.env = get_client_env()
     self.vg_clientMock = self.client['Virtual_Guest']
     self.vdi_clientMock = self.client['Virtual_Disk_Image']
     self.req = api.Request(self.env, sl_client=self.client)
     self.resp = falcon.Response()
     instance = volumes.OSVolumeAttachmentV2()
     instance.on_get(self.req, self.resp, tenant_id, instance_id, volume_id)
示例#11
0
 def test_on_post_invalid(self):
     self.body['server']['networks'][0]['uuid'] = 'invalid'
     client, env = get_client_env(
         body='{"server": {"name": "testserver", '
         '"imageRef": "a1783280-6b1f", "flavorRef": "invalid"}}')
     req = api.Request(env, sl_client=client)
     resp = falcon.Response()
     self.instance.on_post(req, resp, 'tenant_id')
     self.assertEqual(resp.status, 400)
示例#12
0
    def test_on_get_subnetsv2_response_list(self):
        """Test list function"""
        client, env = get_client_env(query_string='name=10')
        SUBNET_DICT['id'] = 10
        client['Account'].getSubnets.return_value = [SUBNET_DICT]
        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        subnets.SubnetsV2().on_get(req, resp)
        self.check_body_response(resp.body['subnets'][0])
示例#13
0
    def test_on_get_response_subnetsv2_show_no_match(self):
        """Test show function in SubnetsV2 with no matching ID"""
        client, env = get_client_env(query_string='name=10')
        SUBNET_DICT['id'] = 9
        client['Account'].getSubnets.return_value = []
        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        subnets.SubnetsV2().on_get(req, resp)
        self.assertEqual(resp.status, 200)
        self.assertEqual(resp.body['subnets'], [])
示例#14
0
    def test_on_get_response_subnetv2(self):
        """Test working path of SubnetV2()"""
        client, env = get_client_env(query_string='name=10')

        SUBNET_DICT['id'] = 10
        client['Network_Subnet'].getObject.return_value = SUBNET_DICT
        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        subnets.SubnetV2().on_get(req, resp, 10)
        self.assertEqual(resp.status, 200)
        self.check_body_response(resp.body['subnet'])
示例#15
0
    def test_on_get_response_subnetsv2_show(self):
        """Test show function in SubnetsV2"""
        client, env = get_client_env()

        SUBNET_DICT['id'] = 10
        client['Account'].getSubnets.return_value = [SUBNET_DICT]
        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        subnets.SubnetsV2().on_get(req, resp)
        self.assertEqual(resp.status, 200)
        self.check_body_response(resp.body['subnets'][0])
示例#16
0
    def test_on_get_response_networksv2_show_no_match(self):
        """Test show function in NetworksV2 with no matching ID"""

        client, env = get_client_env(query_string='name=123321')
        client['Account'].getNetworkVlans.return_value = []

        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        networks.NetworksV2().on_get(req, resp)
        self.assertEqual(resp.status, 200)
        self.assertEqual(resp.body['networks'], [])
示例#17
0
    def test_on_get_response_networksv2_list_filter_private(self):
        client, env = get_client_env(query_string='name=private')
        client['Account'].getNetworkVlans.return_value = []

        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        networks.NetworksV2().on_get(req, resp)
        self.assertEqual(resp.status, 200)
        self.assertEqual(len(resp.body['networks']), 1)
        self.assertEqual(
            resp.body['networks'][0],
            networks.format_network(networks.VLANS['private'], TENANT_ID))
示例#18
0
    def test_on_get_fail(self):
        client, env = get_client_env()
        vgbdtg = client['Virtual_Guest_Block_Device_Template_Group']
        error = SoftLayer.SoftLayerAPIError(
            "SoftLayer_Exception_ObjectNotFound",
            "Unable to find object with id of '1'")
        vgbdtg.getObject.side_effect = error

        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        self.assertRaises(SoftLayer.SoftLayerAPIError,
                          images.ImageV1(self.app).on_get, req, resp, '1')
示例#19
0
 def test_on_post_create_fail(self, vsMock):
     client, env = get_client_env(body='{"createImage": \
     {"name": "foobar"}}')
     vg_clientMock = client['Virtual_Guest']
     e = SoftLayer.SoftLayerAPIError(123, 'abc')
     vg_clientMock.createArchiveTransaction.side_effect = e
     req = api.Request(env, sl_client=client)
     resp = falcon.Response()
     instance = servers.ServerActionV2(app=mock.MagicMock(),
                                       flavors=FLAVOR_LIST)
     instance.on_post(req, resp, TENANT_ID, INSTANCE_ID)
     self.assertRaises(SoftLayer.SoftLayerAPIError,
                       vg_clientMock.createArchiveTransaction)
     self.assertEqual(resp.status, 500)
示例#20
0
    def test_on_get_response_networksv2_show(self):
        """Test show function in NetworksV2"""

        client, env = get_client_env(query_string='name=123321')
        account = client['Account']
        fake_net = get_fake_net(network='PRIVATE')
        account.getNetworkVlans.return_value = [fake_net]

        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        networks.NetworksV2().on_get(req, resp)
        self.assertEqual(resp.status, 200)
        self.assertEqual(resp.body['networks'][0],
                         networks.format_network(fake_net, TENANT_ID))
示例#21
0
    def test_on_get_response_networkv2_public(self):
        """Test working path of NetworkV2()"""
        client, env = get_client_env(query_string='name=123321')

        net_vlan = client['Network_Vlan']
        fake_net = get_fake_net()
        net_vlan.getObject.return_value = fake_net
        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        networks.NetworkV2().on_get(req, resp, fake_net['id'])
        self.assertEqual(resp.body['network'],
                         networks.format_network(fake_net, TENANT_ID))
        self.assertEqual(resp.status, 200)
        self.assertEqual(resp.body['network']['provider:physical_network'],
                         False)
示例#22
0
 def test_on_get_no_block_devices(self):
     client, env = get_client_env()
     vg_clientMock = client['Virtual_Guest']
     gbdMock = vg_clientMock.getBlockDevices
     gbdMock.side_effect = SoftLayer.SoftLayerAPIError(
         404, 'No Block Devices', None)
     req = api.Request(env, sl_client=client)
     resp = falcon.Response()
     instance = volumes.OSVolumeAttachmentV2()
     instance.on_get(req, resp, TENANT_ID, INSTANCE_ID, VOLUME_ID)
     self.assertEqual(
         resp.body,
         {'volumeFault': {
             'message': 'No Block Devices',
             'code': '500'
         }})
示例#23
0
 def test_on_delete(self):
     client, env = get_client_env()
     vg_clientMock = client['Virtual_Guest']
     vdi_clientMock = client['Virtual_Disk_Image']
     vdi_clientMock.getObject.return_value = {
         'blockDevices': [{
             'guestId': INSTANCE_ID
         }]
     }
     req = api.Request(env, sl_client=client)
     resp = falcon.Response()
     instance = volumes.OSVolumeAttachmentV2()
     instance.on_delete(req, resp, TENANT_ID, INSTANCE_ID, VOLUME_ID)
     vg_clientMock.detachDiskImage.assert_called_with(VOLUME_ID,
                                                      id=INSTANCE_ID)
     self.assertEqual(resp.status, 202)
示例#24
0
 def test_on_delete_fail_detach_getObject_exception(self):
     client, env = get_client_env()
     vdi_clientMock = client['Virtual_Disk_Image']
     vdi_clientMock.getObject.side_effect = (SoftLayer.SoftLayerAPIError(
         404, 'No Object', None))
     req = api.Request(env, sl_client=client)
     resp = falcon.Response()
     instance = volumes.OSVolumeAttachmentV2()
     instance.on_delete(req, resp, TENANT_ID, INSTANCE_ID, VOLUME_ID)
     vdi_clientMock.getObject.assert_called_with(id=VOLUME_ID,
                                                 mask='blockDevices')
     self.assertEqual(
         resp.body,
         {'volumeFault': {
             'message': 'No Object',
             'code': '500'
         }})
示例#25
0
    def test_on_get(self):
        client, env = get_client_env()
        vgbdtg = client['Virtual_Guest_Block_Device_Template_Group']
        vgbdtg.getPublicImages.return_value = [{
            'globalIdentifier': 'uuid',
            'blockDevicesDiskSpaceTotal': 1000,
            'name': 'some image',
            'status': {
                'keyName': 'ACTIVE',
                'name': 'Active'
            },
        }]
        client['Account'].getPrivateBlockDeviceTemplateGroups.return_value = [{
            'globalIdentifier':
            'uuid2',
            'blockDevicesDiskSpaceTotal':
            2000,
            'name':
            'some other image',
            'status': {
                'keyName': 'DEPRECATED',
                'name': 'Deprecated'
            },
        }]

        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        images.ImagesV2(self.app, detail=True).on_get(req, resp)

        self.assertEqual(resp.status, 200)
        self.assertEqual(len(resp.body['images']), 2)
        image1 = resp.body['images'][0]
        self.assertEqual(image1['id'], 'uuid')
        self.assertEqual(image1['name'], 'some image')
        self.assertEqual(image1['size'], 1000)
        self.assertEqual('active', image1['status'])
        self._assert_image_links(image1)

        image2 = resp.body['images'][1]
        self.assertEqual(image2['id'], 'uuid2')
        self.assertEqual(image2['name'], 'some other image')
        self.assertEqual(image2['size'], 2000)
        self.assertEqual('deactivated', image2['status'])
        self._assert_image_links(image2)
示例#26
0
    def perform_server_detail(self,
                              tenant_id,
                              server_id,
                              get_instance_mock,
                              updates=None):
        self.client, self.env = get_client_env()
        instanceSV = servers.ServerV2(app=mock.MagicMock())
        instance = {
            'status': {
                'keyName': 'ACTIVE',
                'name': 'Active'
            },
            'modifyDate': '',
            'maxCpu': 2,
            'createDate': '2014-06-03T15:12:37-06:00',
            'hostname': 'csh-test',
            'sshKeys': [],
            'id': 4953216,
            'powerState': {
                'keyName': 'HALTED',
                'name': 'Halted'
            },
            'blockDeviceTemplateGroup': {
                'publicFlag': 0,
                'name': 'ajiang-jumpgate-sandbox-v1',
                'userRecordId': 201260,
                'createDate': '2014-05-10T20:36:51-06:00',
                'statusId': 1,
                'globalIdentifier': '9b013d4e-27ce-4673-9607-ef863a88e3a8',
                'parentId': '',
                'transactionId': '',
                'id': 141214,
                'accountId': 333582
            },
            'maxMemory': 2048,
            'accountId': 333582
        }
        if updates is not None:
            instance.update(updates)

        get_instance_mock.return_value = instance
        self.req = api.Request(self.env, sl_client=self.client)
        self.resp = falcon.Response()
        instanceSV.on_get(self.req, self.resp, tenant_id, server_id)
示例#27
0
    def test_on_get_response(self):
        """Test working path of ComputeV2()"""
        env = get_client_env()

        req = api.Request(env)
        resp = falcon.Response()
        # Test with a tenant passed in;  tenant id is an optional parameter;
        # this would happen when the nova client is used

        self.app = mock.MagicMock()
        self.app.get_endpoint_url.return_value = base_compute_url
        version2_object = versionv2.VersionV2(app=self.app)
        version2_object.on_get(req, resp, "99999")

        self.check_response_body(resp.body['version'])
        # Now test with NO tenant passed in
        version2_object.on_get(req, resp)

        self.check_response_body(resp.body['version'])
        self.assertEqual(resp.status, '200 OK')
示例#28
0
 def test_on_get(self):
     client, env = get_client_env()
     vg_clientMock = client['Virtual_Guest']
     vg_clientMock.getBlockDevices.return_value = [{
         'diskImage': {
             'type': {
                 'keyName': 'not SWAP'
             },
             'id': VOLUME_ID
         }
     }]
     req = api.Request(env, sl_client=client)
     resp = falcon.Response()
     instance = volumes.OSVolumeAttachmentV2()
     instance.on_get(req, resp, TENANT_ID, INSTANCE_ID, VOLUME_ID)
     self.assertEqual(list(resp.body.keys()), ['volumeAttachment'])
     self.assertIn('device', resp.body['volumeAttachment'])
     self.assertIn('id', resp.body['volumeAttachment'])
     self.assertIn('serverId', resp.body['volumeAttachment'])
     self.assertIn('volumeId', resp.body['volumeAttachment'])
示例#29
0
 def test_on_get_fail_invalid_volume_id(self):
     client, env = get_client_env()
     vg_clientMock = client['Virtual_Guest']
     vg_clientMock.getBlockDevices.return_value = [{
         'diskImage': {
             'type': {
                 'keyName': 'not SWAP'
             },
             'id': '0123456'
         }
     }]
     req = api.Request(env, sl_client=client)
     resp = falcon.Response()
     instance = volumes.OSVolumeAttachmentV2()
     instance.on_get(req, resp, TENANT_ID, INSTANCE_ID, VOLUME_ID)
     self.assertEqual(
         resp.body,
         {'volumeFault': {
             'message': 'Invalid volume id.',
             'code': '400'
         }})
示例#30
0
    def test_on_get_response_networksv2_list_no_filter(self):
        # Verify that a list with no filter will return all of the
        # networks from getNetworkVlans along with the placeholder
        # public and private networks
        client, env = get_client_env()
        fake_net = get_fake_net(network='PRIVATE')
        client['Account'].getNetworkVlans.return_value = [fake_net]

        req = api.Request(env, sl_client=client)
        resp = falcon.Response()

        networks.NetworksV2().on_get(req, resp)

        nets = [fake_net] + networks.VLANS.values()
        expected = [networks.format_network(net, TENANT_ID) for net in nets]

        self.assertEqual(resp.status, 200)
        self.assertEqual(len(resp.body['networks']), 3)
        # Assert that we have 3 networks: the fake network,
        # public placeholder network, and the private placeholder network
        self.assertItemsEqual(resp.body['networks'], expected)