Ejemplo n.º 1
0
 def test_show_server(self):
     self.stubs.Set(db, 'instance_get', fakes.fake_instance_get())
     self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get())
     req = webob.Request.blank(self.base_url + '/servers/1')
     req.headers['Content-Type'] = 'application/json'
     response = req.get_response(self.app_server)
     self.assertEqual(response.status_int, 200)
     res_dict = jsonutils.loads(response.body)
     self.assertIn('key_name', res_dict['server'])
     self.assertEqual(res_dict['server']['key_name'], '')
Ejemplo n.º 2
0
 def test_get_server_by_id_verify_security_groups_json(self):
     self.stubs.Set(db, "instance_get", fakes.fake_instance_get())
     self.stubs.Set(db, "instance_get_by_uuid", fakes.fake_instance_get())
     req = webob.Request.blank("/v2/fake/os-create-server-ext/1")
     req.headers["Content-Type"] = "application/json"
     response = req.get_response(fakes.wsgi_app(init_only=("os-create-server-ext", "servers")))
     self.assertEqual(response.status_int, 200)
     res_dict = jsonutils.loads(response.body)
     expected_security_group = [{"name": "test"}]
     self.assertEqual(res_dict["server"].get("security_groups"), expected_security_group)
Ejemplo n.º 3
0
 def test_show(self):
     self.stubs.Set(db, 'instance_get',
                     fakes.fake_instance_get())
     self.stubs.Set(db, 'instance_get_by_uuid',
                     fakes.fake_instance_get())
     req = webob.Request.blank(self.base_url + '1')
     req.headers['Content-Type'] = 'application/json'
     response = req.get_response(self.app)
     self.assertEqual(response.status_int, 200)
     res_dict = jsonutils.loads(response.body)
     self.assertIn('config_drive', res_dict['server'])
Ejemplo n.º 4
0
 def test_get_server_by_id_verify_security_groups_json(self):
     self.stubs.Set(db, 'instance_get', fakes.fake_instance_get())
     self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get())
     req = webob.Request.blank('/v2/fake/os-create-server-ext/1')
     req.headers['Content-Type'] = 'application/json'
     response = req.get_response(
         fakes.wsgi_app(init_only=('os-create-server-ext', 'servers')))
     self.assertEqual(response.status_int, 200)
     res_dict = jsonutils.loads(response.body)
     expected_security_group = [{"name": "test"}]
     self.assertEqual(res_dict['server'].get('security_groups'),
                      expected_security_group)
Ejemplo n.º 5
0
 def setUp(self):
     super(ExtendedStatusTestV21, self).setUp()
     fakes.stub_out_nw_api(self.stubs)
     self.stubs.Set(compute.api.API, 'get', fake_compute_get)
     self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all)
     self._set_flags()
     return_server = fakes.fake_instance_get()
     self.stubs.Set(db, 'instance_get_by_uuid', return_server)
Ejemplo n.º 6
0
 def test_reboot_soft_with_soft_in_progress_raises_conflict(self):
     body = dict(reboot=dict(type="SOFT"))
     self.stubs.Set(db, 'instance_get_by_uuid',
                    fakes.fake_instance_get(vm_state=vm_states.ACTIVE,
                                         task_state=task_states.REBOOTING))
     self.assertRaises(webob.exc.HTTPConflict,
                       self.controller._action_reboot,
                       self.req, FAKE_UUID, body=body)
Ejemplo n.º 7
0
 def setUp(self):
     super(ExtendedStatusTestV21, self).setUp()
     fakes.stub_out_nw_api(self.stubs)
     self.stubs.Set(compute.api.API, 'get', fake_compute_get)
     self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all)
     self._set_flags()
     return_server = fakes.fake_instance_get()
     self.stubs.Set(db, 'instance_get_by_uuid', return_server)
Ejemplo n.º 8
0
 def setUp(self):
     super(ExtendedAvailabilityZoneTestV21, self).setUp()
     availability_zones.reset_cache()
     fakes.stub_out_nw_api(self.stubs)
     self.stubs.Set(compute.api.API, 'get', fake_compute_get)
     self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all)
     self.stubs.Set(availability_zones, 'get_host_availability_zone',
                    fake_get_host_availability_zone)
     return_server = fakes.fake_instance_get()
     self.stubs.Set(db, 'instance_get_by_uuid', return_server)
Ejemplo n.º 9
0
 def setUp(self):
     super(ExtendedVolumesTestV21, self).setUp()
     fakes.stub_out_nw_api(self.stubs)
     self.stubs.Set(compute.api.API, 'get', fake_compute_get)
     self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all)
     self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
                    fake_bdms_get_all_by_instance)
     self._setUp()
     self.app = self._setup_app()
     return_server = fakes.fake_instance_get()
     self.stubs.Set(db, 'instance_get_by_uuid', return_server)
Ejemplo n.º 10
0
 def setUp(self):
     super(ExtendedVolumesTestV21, self).setUp()
     fakes.stub_out_nw_api(self.stubs)
     self.stubs.Set(compute.api.API, 'get', fake_compute_get)
     self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all)
     self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
                    fake_bdms_get_all_by_instance)
     self._setUp()
     self.app = self._setup_app()
     return_server = fakes.fake_instance_get()
     self.stubs.Set(db, 'instance_get_by_uuid', return_server)
Ejemplo n.º 11
0
 def setUp(self):
     super(FpingTestV21, self).setUp()
     self.flags(verbose=True, use_ipv6=False)
     return_server = fakes.fake_instance_get()
     return_servers = fakes.fake_instance_get_all_by_filters()
     self.stubs.Set(patron.db, "instance_get_all_by_filters",
                    return_servers)
     self.stubs.Set(patron.db, "instance_get_by_uuid", return_server)
     self.stubs.Set(patron.utils, "execute", execute)
     self.stubs.Set(self.controller_cls, "check_fping", lambda self: None)
     self.controller = self.controller_cls()
Ejemplo n.º 12
0
 def setUp(self):
     super(ServerUsageTestV21, self).setUp()
     fakes.stub_out_nw_api(self.stubs)
     self.stubs.Set(compute.api.API, 'get', fake_compute_get)
     self.stubs.Set(compute.api.API, 'get_all', fake_compute_get_all)
     self.flags(
         osapi_compute_extension=[
             'patron.api.openstack.compute.contrib.select_extensions'],
         osapi_compute_ext_list=['Server_usage'])
     return_server = fakes.fake_instance_get()
     self.stubs.Set(db, 'instance_get_by_uuid', return_server)
Ejemplo n.º 13
0
 def setUp(self):
     super(FpingTestV21, self).setUp()
     self.flags(verbose=True, use_ipv6=False)
     return_server = fakes.fake_instance_get()
     return_servers = fakes.fake_instance_get_all_by_filters()
     self.stubs.Set(patron.db, "instance_get_all_by_filters",
                    return_servers)
     self.stubs.Set(patron.db, "instance_get_by_uuid",
                    return_server)
     self.stubs.Set(patron.utils, "execute",
                    execute)
     self.stubs.Set(self.controller_cls, "check_fping",
                    lambda self: None)
     self.controller = self.controller_cls()
Ejemplo n.º 14
0
    def setUp(self):
        super(AccessIPsExtAPIValidationTestV21, self).setUp()

        def fake_save(context, **kwargs):
            pass

        def fake_rebuild(*args, **kwargs):
            pass

        self._set_up_controller()
        fake.stub_out_image_service(self.stubs)
        self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get())
        self.stubs.Set(instance_obj.Instance, 'save', fake_save)
        self.stubs.Set(compute_api.API, 'rebuild', fake_rebuild)

        self.req = fakes.HTTPRequest.blank('')
Ejemplo n.º 15
0
    def setUp(self):
        super(AccessIPsExtAPIValidationTestV21, self).setUp()

        def fake_save(context, **kwargs):
            pass

        def fake_rebuild(*args, **kwargs):
            pass

        self._set_up_controller()
        fake.stub_out_image_service(self.stubs)
        self.stubs.Set(db, 'instance_get_by_uuid', fakes.fake_instance_get())
        self.stubs.Set(instance_obj.Instance, 'save', fake_save)
        self.stubs.Set(compute_api.API, 'rebuild', fake_rebuild)

        self.req = fakes.HTTPRequest.blank('')
Ejemplo n.º 16
0
    def test_rebuild_admin_pass(self):
        return_server = fakes.fake_instance_get(image_ref='2',
                vm_state=vm_states.ACTIVE, host='fake_host')
        self.stubs.Set(db, 'instance_get_by_uuid', return_server)

        body = {
            "rebuild": {
                "imageRef": self._image_href,
                "adminPass": "******",
            },
        }

        body = self.controller._action_rebuild(self.req, FAKE_UUID,
                                               body=body).obj

        self.assertEqual(body['server']['image']['id'], '2')
        self.assertEqual(body['server']['adminPass'], 'asdf')
Ejemplo n.º 17
0
    def test_rebuild_accepted_with_metadata(self):
        metadata = {'new': 'metadata'}

        return_server = fakes.fake_instance_get(metadata=metadata,
                vm_state=vm_states.ACTIVE, host='fake_host')
        self.stubs.Set(db, 'instance_get_by_uuid', return_server)

        body = {
            "rebuild": {
                "imageRef": self._image_href,
                "metadata": metadata,
            },
        }

        body = self.controller._action_rebuild(self.req, FAKE_UUID,
                                               body=body).obj

        self.assertEqual(body['server']['metadata'], metadata)
Ejemplo n.º 18
0
    def test_rebuild_instance_with_image_href_uses_uuid(self):
        info = dict(image_href_in_call=None)

        def rebuild(self2, context, instance, image_href, *args, **kwargs):
            info['image_href_in_call'] = image_href

        self.stubs.Set(db, 'instance_get',
                fakes.fake_instance_get(vm_state=vm_states.ACTIVE))
        self.stubs.Set(compute_api.API, 'rebuild', rebuild)

        # proper local hrefs must start with 'http://localhost/v2/'
        body = {
            'rebuild': {
                'imageRef': self.image_href,
            },
        }

        self.controller._action_rebuild(self.req, FAKE_UUID, body=body)
        self.assertEqual(info['image_href_in_call'], self.image_uuid)
Ejemplo n.º 19
0
    def test_rebuild_preserve_ephemeral_is_ignored_when_ext_not_loaded(self):
        return_server = fakes.fake_instance_get(image_ref='2',
                                                vm_state=vm_states.ACTIVE,
                                                host='fake_host')
        self.stubs.Set(db, 'instance_get_by_uuid', return_server)

        body = {
            "rebuild": {
                "imageRef": self._image_href,
                "preserve_ephemeral": False,
            },
        }

        self.mox.StubOutWithMock(compute_api.API, 'rebuild')
        compute_api.API.rebuild(self.context, mox.IgnoreArg(),
                                self._image_href,
                                mox.IgnoreArg(), files_to_inject=None)
        self.mox.ReplayAll()

        self.controller._action_rebuild(self.req, FAKE_UUID, body)
Ejemplo n.º 20
0
    def test_rebuild_accepted_minimum(self):
        return_server = fakes.fake_instance_get(image_ref='2',
                vm_state=vm_states.ACTIVE, host='fake_host')
        self.stubs.Set(db, 'instance_get_by_uuid', return_server)
        self_href = 'http://localhost/v2/servers/%s' % FAKE_UUID

        body = {
            "rebuild": {
                "imageRef": self._image_href,
            },
        }

        robj = self.controller._action_rebuild(self.req, FAKE_UUID, body=body)
        body = robj.obj

        self.assertEqual(body['server']['image']['id'], '2')
        self.assertEqual(len(body['server']['adminPass']),
                         CONF.password_length)

        self.assertEqual(robj['location'], self_href)
Ejemplo n.º 21
0
    def test_rebuild_admin_pass_pass_disabled(self):
        # run with enable_instance_password disabled to verify adminPass
        # is missing from response. See lp bug 921814
        self.flags(enable_instance_password=False)

        return_server = fakes.fake_instance_get(image_ref='2',
                vm_state=vm_states.ACTIVE, host='fake_host')
        self.stubs.Set(db, 'instance_get_by_uuid', return_server)

        body = {
            "rebuild": {
                "imageRef": self._image_href,
                "adminPass": "******",
            },
        }

        body = self.controller._action_rebuild(self.req, FAKE_UUID,
                                               body=body).obj

        self.assertEqual(body['server']['image']['id'], '2')
        self.assertNotIn('adminPass', body['server'])
Ejemplo n.º 22
0
    def setUp(self):
        super(ServerActionsControllerTestV21, self).setUp()

        CONF.set_override('host', 'localhost', group='glance')
        self.stubs.Set(db, 'instance_get_by_uuid',
                       fakes.fake_instance_get(vm_state=vm_states.ACTIVE,
                                               host='fake_host'))
        self.stubs.Set(db, 'instance_update_and_get_original',
                       instance_update_and_get_original)

        fakes.stub_out_nw_api(self.stubs)
        fakes.stub_out_compute_api_snapshot(self.stubs)
        fake.stub_out_image_service(self.stubs)
        self.flags(allow_instance_snapshots=True,
                   enable_instance_password=True)
        self._image_href = '155d900f-4e14-4e4c-a73d-069cbf4541e6'

        self.controller = self._get_controller()
        self.compute_api = self.controller.compute_api
        self.req = fakes.HTTPRequest.blank('')
        self.context = self.req.environ['patron.context']
Ejemplo n.º 23
0
    def _test_rebuild_preserve_ephemeral(self, value=None):
        self._set_fake_extension()
        return_server = fakes.fake_instance_get(image_ref='2',
                                                vm_state=vm_states.ACTIVE,
                                                host='fake_host')
        self.stubs.Set(db, 'instance_get_by_uuid', return_server)

        body = {
            "rebuild": {
                "imageRef": self._image_href,
            },
        }
        if value is not None:
            body['rebuild']['preserve_ephemeral'] = value

        self.mox.StubOutWithMock(compute_api.API, 'rebuild')

        self._rebuild(self.context, self._image_href, value)

        self.mox.ReplayAll()

        self.controller._action_rebuild(self.req, FAKE_UUID, body=body)
Ejemplo n.º 24
0
    def test_rebuild_accepted_minimum_pass_disabled(self):
        # run with enable_instance_password disabled to verify adminPass
        # is missing from response. See lp bug 921814
        self.flags(enable_instance_password=False)

        return_server = fakes.fake_instance_get(image_ref='2',
                vm_state=vm_states.ACTIVE, host='fake_host')
        self.stubs.Set(db, 'instance_get_by_uuid', return_server)
        self_href = 'http://localhost/v2/servers/%s' % FAKE_UUID

        body = {
            "rebuild": {
                "imageRef": self._image_href,
            },
        }

        robj = self.controller._action_rebuild(self.req, FAKE_UUID, body=body)
        body = robj.obj

        self.assertEqual(body['server']['image']['id'], '2')
        self.assertNotIn("adminPass", body['server'])

        self.assertEqual(robj['location'], self_href)
Ejemplo n.º 25
0
    def _do_test_create_volume_backed_image(self, extra_properties):

        def _fake_id(x):
            return '%s-%s-%s-%s' % (x * 8, x * 4, x * 4, x * 12)

        body = dict(createImage=dict(name='snapshot_of_volume_backed'))

        if extra_properties:
            body['createImage']['metadata'] = extra_properties

        image_service = glance.get_default_image_service()

        bdm = [dict(volume_id=_fake_id('a'),
                    volume_size=1,
                    device_name='vda',
                    delete_on_termination=False)]
        props = dict(kernel_id=_fake_id('b'),
                     ramdisk_id=_fake_id('c'),
                     root_device_name='/dev/vda',
                     block_device_mapping=bdm)
        original_image = dict(properties=props,
                              container_format='ami',
                              status='active',
                              is_public=True)

        image_service.create(None, original_image)

        def fake_block_device_mapping_get_all_by_instance(context, inst_id,
                                                          use_slave=False):
            return [fake_block_device.FakeDbBlockDeviceDict(
                        {'volume_id': _fake_id('a'),
                         'source_type': 'snapshot',
                         'destination_type': 'volume',
                         'volume_size': 1,
                         'device_name': 'vda',
                         'snapshot_id': 1,
                         'boot_index': 0,
                         'delete_on_termination': False,
                         'no_device': None})]

        self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
                       fake_block_device_mapping_get_all_by_instance)

        instance = fakes.fake_instance_get(image_ref=original_image['id'],
                                           vm_state=vm_states.ACTIVE,
                                           root_device_name='/dev/vda')
        self.stubs.Set(db, 'instance_get_by_uuid', instance)

        self.mox.StubOutWithMock(self.controller.compute_api.compute_rpcapi,
                                 'quiesce_instance')
        self.controller.compute_api.compute_rpcapi.quiesce_instance(
            mox.IgnoreArg(), mox.IgnoreArg()).AndRaise(
                exception.InstanceQuiesceNotSupported(instance_id='fake',
                                                      reason='test'))

        volume = dict(id=_fake_id('a'),
                      size=1,
                      host='fake',
                      display_description='fake')
        snapshot = dict(id=_fake_id('d'))
        self.mox.StubOutWithMock(self.controller.compute_api, 'volume_api')
        volume_api = self.controller.compute_api.volume_api
        volume_api.get(mox.IgnoreArg(), volume['id']).AndReturn(volume)
        volume_api.create_snapshot_force(mox.IgnoreArg(), volume['id'],
                mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(snapshot)

        self.mox.ReplayAll()

        response = self.controller._action_create_image(self.req, FAKE_UUID,
                                                        body=body)

        location = response.headers['Location']
        image_id = location.replace(self.image_url or
                                        glance.generate_image_url(''), '')
        image = image_service.show(None, image_id)

        self.assertEqual(image['name'], 'snapshot_of_volume_backed')
        properties = image['properties']
        self.assertEqual(properties['kernel_id'], _fake_id('b'))
        self.assertEqual(properties['ramdisk_id'], _fake_id('c'))
        self.assertEqual(properties['root_device_name'], '/dev/vda')
        self.assertEqual(properties['bdm_v2'], True)
        bdms = properties['block_device_mapping']
        self.assertEqual(len(bdms), 1)
        self.assertEqual(bdms[0]['boot_index'], 0)
        self.assertEqual(bdms[0]['source_type'], 'snapshot')
        self.assertEqual(bdms[0]['destination_type'], 'volume')
        self.assertEqual(bdms[0]['snapshot_id'], snapshot['id'])
        for fld in ('connection_info', 'id',
                    'instance_uuid', 'device_name'):
            self.assertNotIn(fld, bdms[0])
        for k in extra_properties.keys():
            self.assertEqual(properties[k], extra_properties[k])
Ejemplo n.º 26
0
    def _test_create_volume_backed_image_with_metadata_from_volume(
            self, extra_metadata=None):

        def _fake_id(x):
            return '%s-%s-%s-%s' % (x * 8, x * 4, x * 4, x * 12)

        body = dict(createImage=dict(name='snapshot_of_volume_backed'))
        if extra_metadata:
            body['createImage']['metadata'] = extra_metadata

        image_service = glance.get_default_image_service()

        def fake_block_device_mapping_get_all_by_instance(context, inst_id,
                                                          use_slave=False):
            return [fake_block_device.FakeDbBlockDeviceDict(
                        {'volume_id': _fake_id('a'),
                         'source_type': 'snapshot',
                         'destination_type': 'volume',
                         'volume_size': 1,
                         'device_name': 'vda',
                         'snapshot_id': 1,
                         'boot_index': 0,
                         'delete_on_termination': False,
                         'no_device': None})]

        self.stubs.Set(db, 'block_device_mapping_get_all_by_instance',
                       fake_block_device_mapping_get_all_by_instance)

        instance = fakes.fake_instance_get(image_ref='',
                                           vm_state=vm_states.ACTIVE,
                                           root_device_name='/dev/vda')
        self.stubs.Set(db, 'instance_get_by_uuid', instance)

        self.mox.StubOutWithMock(self.controller.compute_api.compute_rpcapi,
                                 'quiesce_instance')
        self.controller.compute_api.compute_rpcapi.quiesce_instance(
            mox.IgnoreArg(), mox.IgnoreArg()).AndRaise(
                exception.InstanceQuiesceNotSupported(instance_id='fake',
                                                      reason='test'))

        fake_metadata = {'test_key1': 'test_value1',
                         'test_key2': 'test_value2'}
        volume = dict(id=_fake_id('a'),
                      size=1,
                      host='fake',
                      display_description='fake',
                      volume_image_metadata=fake_metadata)
        snapshot = dict(id=_fake_id('d'))
        self.mox.StubOutWithMock(self.controller.compute_api, 'volume_api')
        volume_api = self.controller.compute_api.volume_api
        volume_api.get(mox.IgnoreArg(), volume['id']).AndReturn(volume)
        volume_api.get(mox.IgnoreArg(), volume['id']).AndReturn(volume)
        volume_api.create_snapshot_force(mox.IgnoreArg(), volume['id'],
               mox.IgnoreArg(), mox.IgnoreArg()).AndReturn(snapshot)

        self.mox.ReplayAll()
        response = self.controller._action_create_image(self.req, FAKE_UUID,
                                                        body=body)
        location = response.headers['Location']
        image_id = location.replace(self.image_base_url, '')
        image = image_service.show(None, image_id)

        properties = image['properties']
        self.assertEqual(properties['test_key1'], 'test_value1')
        self.assertEqual(properties['test_key2'], 'test_value2')
        if extra_metadata:
            for key, val in extra_metadata.items():
                self.assertEqual(properties[key], val)
Ejemplo n.º 27
0
 def test_reboot_hard_with_hard_in_progress(self):
     body = dict(reboot=dict(type="HARD"))
     self.stubs.Set(db, 'instance_get_by_uuid',
                    fakes.fake_instance_get(vm_state=vm_states.ACTIVE,
                                     task_state=task_states.REBOOTING_HARD))
     self.controller._action_reboot(self.req, FAKE_UUID, body=body)
Ejemplo n.º 28
0
 def setUp(self):
     super(HideServerAddressesTestV21, self).setUp()
     fakes.stub_out_nw_api(self.stubs)
     return_server = fakes.fake_instance_get()
     self.stubs.Set(db, 'instance_get_by_uuid', return_server)
     self._setup_wsgi()