Beispiel #1
0
 def setUp(self):
     super(_BaseTestCase, self).setUp()
     self.remote_object_calls = list()
     self.context = context.RequestContext('fake-user', 'fake-project')
     fake_notifier.stub_notifier(self.stubs)
     self.addCleanup(fake_notifier.reset)
 def setUp(self):
     super(CertificatesTestV21, self).setUp()
     self.context = context.RequestContext('fake', 'fake')
     self.controller = self.certificates.CertificatesController()
Beispiel #3
0
 def test_request_context_sets_is_admin_by_role(self):
     ctxt = context.RequestContext('111', '222', roles=['administrator'])
     self.assertEqual(ctxt.is_admin, True)
Beispiel #4
0
 def setUp(self):
     super(RPCAllocateTestCase, self).setUp()
     self.rpc_fixed = TestRPCFixedManager()
     self.context = context.RequestContext('fake', 'fake')
Beispiel #5
0
 def setUp(self):
     super(DbApiTestCase, self).setUp()
     self.user_id = 'fake'
     self.project_id = 'fake'
     self.context = context.RequestContext(self.user_id, self.project_id)
Beispiel #6
0
    def setUp(self):
        super(VMwareVMOpsTestCase, self).setUp()
        vmwareapi_fake.reset()
        stubs.set_stubs(self.stubs)
        self.flags(image_cache_subdirectory_name='vmware_base',
                   my_ip='',
                   flat_injected=True,
                   vnc_enabled=True)
        self._context = context.RequestContext('fake_user', 'fake_project')
        self._session = driver.VMwareAPISession()

        self._virtapi = mock.Mock()
        self._vmops = vmops.VMwareVCVMOps(self._session, self._virtapi, None)

        self._image_id = nova.tests.image.fake.get_valid_image_id()
        self._instance_values = {
            'name': 'fake_name',
            'uuid': 'fake_uuid',
            'vcpus': 1,
            'memory_mb': 512,
            'image_ref': self._image_id,
            'root_gb': 10,
            'node': 'respool-1001(MyResPoolName)'
        }
        self._instance = fake_instance.fake_instance_obj(
            self._context, **self._instance_values)

        fake_ds_ref = vmwareapi_fake.ManagedObjectReference('fake-ds')
        self._ds = ds_util.Datastore(ref=fake_ds_ref,
                                     name='fake_ds',
                                     capacity=10 * units.Gi,
                                     freespace=10 * units.Gi)
        self._dc_info = vmops.DcInfo(ref='fake_dc_ref',
                                     name='fake_dc',
                                     vmFolder='fake_vm_folder')

        subnet_4 = network_model.Subnet(
            cidr='192.168.0.1/24',
            dns=[network_model.IP('192.168.0.1')],
            gateway=network_model.IP('192.168.0.1'),
            ips=[network_model.IP('192.168.0.100')],
            routes=None)
        subnet_6 = network_model.Subnet(
            cidr='dead:beef::1/64',
            dns=None,
            gateway=network_model.IP('dead:beef::1'),
            ips=[network_model.IP('dead:beef::dcad:beff:feef:0')],
            routes=None)
        network = network_model.Network(id=0,
                                        bridge='fa0',
                                        label='fake',
                                        subnets=[subnet_4, subnet_6],
                                        vlan=None,
                                        bridge_interface=None,
                                        injected=True)
        self._network_values = {
            'id': None,
            'address': 'DE:AD:BE:EF:00:00',
            'network': network,
            'type': None,
            'devname': None,
            'ovs_interfaceid': None,
            'rxtx_cap': 3
        }
        self.network_info = network_model.NetworkInfo(
            [network_model.VIF(**self._network_values)])
        pure_IPv6_network = network_model.Network(id=0,
                                                  bridge='fa0',
                                                  label='fake',
                                                  subnets=[subnet_6],
                                                  vlan=None,
                                                  bridge_interface=None,
                                                  injected=True)
        self.pure_IPv6_network_info = network_model.NetworkInfo([
            network_model.VIF(id=None,
                              address='DE:AD:BE:EF:00:00',
                              network=pure_IPv6_network,
                              type=None,
                              devname=None,
                              ovs_interfaceid=None,
                              rxtx_cap=3)
        ])
    def setUp(self):
        super(RealRolePolicyTestCase, self).setUp()
        self.policy = self.useFixture(policy_fixture.RealPolicyFixture())
        self.non_admin_context = context.RequestContext('fake',
                                                        'fake',
                                                        roles=['member'])
        self.admin_context = context.RequestContext('fake',
                                                    'fake',
                                                    True,
                                                    roles=['member'])
        self.target = {}
        self.fake_policy = jsonutils.loads(fake_policy.policy_data)

        self.admin_only_rules = (
            "network:attach_external_network",
            "os_compute_api:servers:create:forced_host",
            "compute:servers:create:requested_destination",
            "os_compute_api:servers:detail:get_all_tenants",
            "os_compute_api:servers:index:get_all_tenants",
            "os_compute_api:servers:allow_all_filters",
            "os_compute_api:servers:show:host_status",
            "os_compute_api:servers:migrations:force_complete",
            "os_compute_api:servers:migrations:delete",
            "os_compute_api:os-admin-actions:reset_network",
            "os_compute_api:os-admin-actions:inject_network_info",
            "os_compute_api:os-admin-actions:reset_state",
            "os_compute_api:os-aggregates:index",
            "os_compute_api:os-aggregates:create",
            "os_compute_api:os-aggregates:show",
            "os_compute_api:os-aggregates:update",
            "os_compute_api:os-aggregates:delete",
            "os_compute_api:os-aggregates:add_host",
            "os_compute_api:os-aggregates:remove_host",
            "os_compute_api:os-aggregates:set_metadata",
            "os_compute_api:os-agents",
            "os_compute_api:os-baremetal-nodes",
            "os_compute_api:os-evacuate",
            "os_compute_api:os-extended-server-attributes",
            "os_compute_api:os-flavor-access:remove_tenant_access",
            "os_compute_api:os-flavor-access:add_tenant_access",
            "os_compute_api:os-flavor-extra-specs:create",
            "os_compute_api:os-flavor-extra-specs:update",
            "os_compute_api:os-flavor-extra-specs:delete",
            "os_compute_api:os-flavor-manage:create",
            "os_compute_api:os-flavor-manage:update",
            "os_compute_api:os-flavor-manage:delete",
            "os_compute_api:os-hosts",
            "os_compute_api:os-hypervisors",
            "os_compute_api:os-instance-actions:events",
            "os_compute_api:os-instance-usage-audit-log",
            "os_compute_api:os-lock-server:unlock:unlock_override",
            "os_compute_api:os-migrate-server:migrate",
            "os_compute_api:os-migrate-server:migrate_live",
            "os_compute_api:os-networks",
            "os_compute_api:os-networks-associate",
            "os_compute_api:os-quota-sets:update",
            "os_compute_api:os-quota-sets:delete",
            "os_compute_api:os-security-group-default-rules",
            "os_compute_api:os-server-diagnostics",
            "os_compute_api:os-services",
            "os_compute_api:os-shelve:shelve_offload",
            "os_compute_api:os-simple-tenant-usage:list",
            "os_compute_api:os-availability-zone:detail",
            "os_compute_api:os-used-limits",
            "os_compute_api:os-migrations:index",
            "os_compute_api:os-assisted-volume-snapshots:create",
            "os_compute_api:os-assisted-volume-snapshots:delete",
            "os_compute_api:os-console-auth-tokens",
            "os_compute_api:os-quota-class-sets:update",
            "os_compute_api:os-server-external-events:create",
            "os_compute_api:os-volumes-attachments:update",
            "os_compute_api:servers:create:zero_disk_flavor",
            "os_compute_api:servers:migrations:index",
            "os_compute_api:servers:migrations:show",
        )

        self.admin_or_owner_rules = (
            "os_compute_api:servers:start",
            "os_compute_api:servers:stop",
            "os_compute_api:servers:trigger_crash_dump",
            "os_compute_api:os-create-backup",
            "os_compute_api:ips:index",
            "os_compute_api:ips:show",
            "os_compute_api:os-keypairs:create",
            "os_compute_api:os-keypairs:delete",
            "os_compute_api:os-keypairs:index",
            "os_compute_api:os-keypairs:show",
            "os_compute_api:os-lock-server:lock",
            "os_compute_api:os-lock-server:unlock",
            "os_compute_api:os-pause-server:pause",
            "os_compute_api:os-pause-server:unpause",
            "os_compute_api:os-quota-sets:show",
            "os_compute_api:os-quota-sets:detail",
            "os_compute_api:server-metadata:index",
            "os_compute_api:server-metadata:show",
            "os_compute_api:server-metadata:delete",
            "os_compute_api:server-metadata:create",
            "os_compute_api:server-metadata:update",
            "os_compute_api:server-metadata:update_all",
            "os_compute_api:os-simple-tenant-usage:show",
            "os_compute_api:os-suspend-server:suspend",
            "os_compute_api:os-suspend-server:resume",
            "os_compute_api:os-tenant-networks",
            "os_compute_api:extensions",
            "os_compute_api:servers:confirm_resize",
            "os_compute_api:servers:create",
            "os_compute_api:servers:create:attach_network",
            "os_compute_api:servers:create:attach_volume",
            "os_compute_api:servers:create:trusted_certs",
            "os_compute_api:servers:create_image",
            "os_compute_api:servers:delete",
            "os_compute_api:servers:detail",
            "os_compute_api:servers:index",
            "os_compute_api:servers:reboot",
            "os_compute_api:servers:rebuild",
            "os_compute_api:servers:rebuild:trusted_certs",
            "os_compute_api:servers:resize",
            "os_compute_api:servers:revert_resize",
            "os_compute_api:servers:show",
            "os_compute_api:servers:update",
            "os_compute_api:servers:create_image:allow_volume_backed",
            "os_compute_api:os-admin-password",
            "os_compute_api:os-attach-interfaces",
            "os_compute_api:os-attach-interfaces:create",
            "os_compute_api:os-attach-interfaces:delete",
            "os_compute_api:os-consoles:create",
            "os_compute_api:os-consoles:delete",
            "os_compute_api:os-consoles:index",
            "os_compute_api:os-consoles:show",
            "os_compute_api:os-console-output",
            "os_compute_api:os-remote-consoles",
            "os_compute_api:os-deferred-delete",
            "os_compute_api:os-flavor-access",
            "os_compute_api:os-flavor-extra-specs:index",
            "os_compute_api:os-flavor-extra-specs:show",
            "os_compute_api:os-floating-ip-pools",
            "os_compute_api:os-floating-ips",
            "os_compute_api:os-instance-actions",
            "os_compute_api:limits",
            "os_compute_api:os-multinic",
            "os_compute_api:os-networks:view",
            "os_compute_api:os-rescue",
            "os_compute_api:os-security-groups",
            "os_compute_api:os-server-password",
            "os_compute_api:os-server-tags:delete",
            "os_compute_api:os-server-tags:delete_all",
            "os_compute_api:os-server-tags:index",
            "os_compute_api:os-server-tags:show",
            "os_compute_api:os-server-tags:update",
            "os_compute_api:os-server-tags:update_all",
            "os_compute_api:os-server-groups:index",
            "os_compute_api:os-server-groups:show",
            "os_compute_api:os-server-groups:create",
            "os_compute_api:os-server-groups:delete",
            "os_compute_api:os-shelve:shelve",
            "os_compute_api:os-shelve:unshelve",
            "os_compute_api:os-volumes",
            "os_compute_api:os-volumes-attachments:index",
            "os_compute_api:os-volumes-attachments:show",
            "os_compute_api:os-volumes-attachments:create",
            "os_compute_api:os-volumes-attachments:delete",
            "os_compute_api:os-availability-zone:list",
        )

        self.allow_all_rules = ("os_compute_api:os-quota-sets:defaults", )
Beispiel #8
0
    def __call__(self, req):
        # NOTE(alevine) We need to calculate the hash here because
        # subsequent access to request modifies the req.body so the hash
        # calculation will yield invalid results.
        body_hash = hashlib.sha256(req.body).hexdigest()

        request_id = common_context.generate_request_id()
        signature = self._get_signature(req)
        if not signature:
            msg = _("Signature not provided")
            return faults.ec2_error_response(request_id,
                                             "AuthFailure",
                                             msg,
                                             status=400)
        access = self._get_access(req)
        if not access:
            msg = _("Access key not provided")
            return faults.ec2_error_response(request_id,
                                             "AuthFailure",
                                             msg,
                                             status=400)

        if 'X-Amz-Signature' in req.params or 'Authorization' in req.headers:
            auth_params = {}
        else:
            # Make a copy of args for authentication and signature verification
            auth_params = dict(req.params)
            # Not part of authentication args
            auth_params.pop('Signature', None)

        cred_dict = {
            'access': access,
            'signature': signature,
            'host': req.host,
            'verb': req.method,
            'path': req.path,
            'params': auth_params,
            'headers': req.headers,
            'body_hash': body_hash
        }
        if "ec2" in CONF.keystone_ec2_url:
            creds = {'ec2Credentials': cred_dict}
        else:
            creds = {'auth': {'OS-KSEC2:ec2Credentials': cred_dict}}
        creds_json = jsonutils.dumps(creds)
        headers = {'Content-Type': 'application/json'}

        verify = not CONF.keystone_ec2_insecure
        if verify and CONF.ssl.ca_file:
            verify = CONF.ssl.ca_file

        cert = None
        if CONF.ssl.cert_file and CONF.ssl.key_file:
            cert = (CONF.ssl.cert_file, CONF.ssl.key_file)
        elif CONF.ssl.cert_file:
            cert = CONF.ssl.cert_file

        response = requests.request('POST',
                                    CONF.keystone_ec2_url,
                                    data=creds_json,
                                    headers=headers,
                                    verify=verify,
                                    cert=cert)
        status_code = response.status_code
        if status_code != 200:
            msg = response.reason
            return faults.ec2_error_response(request_id,
                                             "AuthFailure",
                                             msg,
                                             status=status_code)
        result = response.json()

        try:
            token_id = result['access']['token']['id']
            user_id = result['access']['user']['id']
            project_id = result['access']['token']['tenant']['id']
            user_name = result['access']['user'].get('name')
            project_name = result['access']['token']['tenant'].get('name')
            roles = [
                role['name'] for role in result['access']['user']['roles']
            ]
        except (AttributeError, KeyError) as e:
            LOG.error(_LE("Keystone failure: %s"), e)
            msg = _("Failure parsing response from keystone: %s") % e
            return faults.ec2_error_response(request_id,
                                             "AuthFailure",
                                             msg,
                                             status=400)

        remote_address = req.remote_addr
        if CONF.use_forwarded_for:
            remote_address = req.headers.get('X-Forwarded-For', remote_address)

        catalog = result['access']['serviceCatalog']
        ctxt = context.RequestContext(user_id,
                                      project_id,
                                      user_name=user_name,
                                      project_name=project_name,
                                      roles=roles,
                                      auth_token=token_id,
                                      remote_address=remote_address,
                                      service_catalog=catalog)

        req.environ['nova.context'] = ctxt

        return self.application
Beispiel #9
0
 def setUp(self):
     super(PciRequestTestCase, self).setUp()
     self.context = context.RequestContext(fakes.FAKE_USER_ID,
                                           fakes.FAKE_PROJECT_ID)
Beispiel #10
0
 def setUp(self, mock_init_agg, mock_init_inst):
     super(SchedulerTestCase, self).setUp()
     self.driver = self.driver_cls()
     self.context = context.RequestContext('fake_user', 'fake_project')
     self.topic = 'fake_topic'
     self.servicegroup_api = servicegroup.API()
Beispiel #11
0
class FakeRequest(object):
    environ = {"nova.context": context.RequestContext('fake_user', 'fake',
                                                      is_admin=True)}
    GET = {}
 def setUp(self):
     super(SecurityGroupObjectTestCase, self).setUp()
     self.context = context.RequestContext('fake-user', 'fake-project')
Beispiel #13
0
class EC2KeystoneAuth(wsgi.Middleware):
    """Authenticate an EC2 request with keystone and convert to context."""
    @webob.dec.wsgify(RequestClass=wsgi.Request)
    def __call__(self, req):
        request_id = context.generate_request_id()
        signature = req.params.get('Signature')
        if not signature:
            msg = _("Signature not provided")
            return ec2_error(req, request_id, "Unauthorized", msg)
        access = req.params.get('AWSAccessKeyId')
        if not access:
            msg = _("Access key not provided")
            return ec2_error(req, request_id, "Unauthorized", msg)

        # Make a copy of args for authentication and signature verification.
        auth_params = dict(req.params)
        # Not part of authentication args
        auth_params.pop('Signature')

        cred_dict = {
            'access': access,
            'signature': signature,
            'host': req.host,
            'verb': req.method,
            'path': req.path,
            'params': auth_params,
        }
        if "ec2" in FLAGS.keystone_ec2_url:
            creds = {'ec2Credentials': cred_dict}
        else:
            creds = {'auth': {'OS-KSEC2:ec2Credentials': cred_dict}}
        creds_json = jsonutils.dumps(creds)
        headers = {'Content-Type': 'application/json'}

        o = urlparse.urlparse(FLAGS.keystone_ec2_url)
        if o.scheme == "http":
            conn = httplib.HTTPConnection(o.netloc)
        else:
            conn = httplib.HTTPSConnection(o.netloc)
        conn.request('POST', o.path, body=creds_json, headers=headers)
        response = conn.getresponse()
        data = response.read()
        if response.status != 200:
            if response.status == 401:
                msg = response.reason
            else:
                msg = _("Failure communicating with keystone")
            return ec2_error(req, request_id, "Unauthorized", msg)
        result = jsonutils.loads(data)
        conn.close()

        try:
            token_id = result['access']['token']['id']
            user_id = result['access']['user']['id']
            project_id = result['access']['token']['tenant']['id']
            user_name = result['access']['user'].get('name')
            project_name = result['access']['token']['tenant'].get('name')
            roles = [
                role['name'] for role in result['access']['user']['roles']
            ]
        except (AttributeError, KeyError), e:
            LOG.exception("Keystone failure: %s" % e)
            msg = _("Failure communicating with keystone")
            return ec2_error(req, request_id, "Unauthorized", msg)

        remote_address = req.remote_addr
        if FLAGS.use_forwarded_for:
            remote_address = req.headers.get('X-Forwarded-For', remote_address)
        ctxt = context.RequestContext(user_id,
                                      project_id,
                                      user_name=user_name,
                                      project_name=project_name,
                                      roles=roles,
                                      auth_token=token_id,
                                      remote_address=remote_address)

        req.environ['nova.context'] = ctxt

        return self.application
Beispiel #14
0
 def setUp(self):
     super(SchedulerDriverModuleTestCase, self).setUp()
     self.context = context.RequestContext('fake_user', 'fake_project')
Beispiel #15
0
 def setUp(self):
     super(ComputeUtilsQuotaDeltaTestCase, self).setUp()
     self.context = context.RequestContext('fake', 'fake')
 def _get_default_networks(self):
     project_id = CONF.api.neutron_default_tenant_id
     ctx = nova_context.RequestContext(user_id=None,
                                       project_id=project_id)
     return self.network_api.get_all(ctx)
Beispiel #17
0
 def setUp(self):
     super(IsVolumeBackedInstanceTestCase, self).setUp()
     self.user_id = 'fake'
     self.project_id = 'fake'
     self.context = context.RequestContext(self.user_id, self.project_id)
Beispiel #18
0
 def setUp(self):
     super(TestDriverBlockDevice, self).setUp()
     self.volume_api = self.mox.CreateMock(cinder.API)
     self.virt_driver = self.mox.CreateMock(driver.ComputeDriver)
     self.context = context.RequestContext('fake_user', 'fake_project')
 def setUp(self):
     super(AdminRolePolicyTestCase, self).setUp()
     self.policy = self.useFixture(policy_fixture.RoleBasedPolicyFixture())
     self.context = context.RequestContext('fake', 'fake', roles=['member'])
     self.actions = policy.get_rules().keys()
     self.target = {}
Beispiel #20
0
 def setUp(self):
     super(ResourceProviderTestCase, self).setUp()
     self.useFixture(fixtures.Database())
     self.useFixture(fixtures.Database(database='api'))
     self.context = context.RequestContext('fake-user', 'fake-project')
 def setUp(self):
     super(PolicyFileTestCase, self).setUp()
     self.context = context.RequestContext('fake', 'fake')
     self.target = {}
 def setUp(self):
     super(RequestSpecTestCase, self).setUp()
     self.useFixture(fixtures.Database(database='api'))
     self.context = context.RequestContext('fake-user', 'fake-project')
     self.spec_obj = request_spec.RequestSpec()
     self.instance_uuid = None
Beispiel #23
0
    def test_disassociate_floating_ip(self):
        ctxt = context.RequestContext('testuser',
                                      'testproject',
                                      is_admin=False)

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

        # floating ip that isn't associated
        def fake2(*args, **kwargs):
            return {'address': '10.0.0.1', 'fixed_ip_id': None}

        # floating ip that is associated
        def fake3(*args, **kwargs):
            return {'address': '10.0.0.1', 'fixed_ip_id': 1}

        # fixed ip with remote host
        def fake4(*args, **kwargs):
            return {
                'address': '10.0.0.1',
                'network': {
                    'multi_host': False,
                    'host': 'jibberjabber'
                }
            }

        # fixed ip with local host
        def fake5(*args, **kwargs):
            return {
                'address': '10.0.0.1',
                'network': {
                    'multi_host': False,
                    'host': 'testhost'
                }
            }

        def fake6(*args, **kwargs):
            self.local = False

        def fake7(*args, **kwargs):
            self.local = True

        self.stubs.Set(self.network, '_floating_ip_owned_by_project', fake1)

        # raises because floating_ip is not associated to a fixed_ip
        self.stubs.Set(self.network.db, 'floating_ip_get_by_address', fake2)
        self.assertRaises(exception.FloatingIpNotAssociated,
                          self.network.disassociate_floating_ip, ctxt,
                          mox.IgnoreArg())

        self.stubs.Set(self.network.db, 'floating_ip_get_by_address', fake3)

        # does not raise and makes call remotely
        self.local = True
        self.stubs.Set(self.network.db, 'fixed_ip_get', fake4)
        self.stubs.Set(rpc, 'cast', fake6)
        self.network.disassociate_floating_ip(ctxt, mox.IgnoreArg())
        self.assertFalse(self.local)

        # does not raise and makes call locally
        self.local = False
        self.stubs.Set(self.network.db, 'fixed_ip_get', fake5)
        self.stubs.Set(self.network, '_disassociate_floating_ip', fake7)
        self.network.disassociate_floating_ip(ctxt, mox.IgnoreArg())
        self.assertTrue(self.local)
Beispiel #24
0
    def setUp(self):
        super(DefaultDeviceNamesForInstanceTestCase, self).setUp()
        self.context = context.RequestContext('fake', 'fake')
        self.ephemerals = block_device_obj.block_device_make_list(
            self.context, [
                fake_block_device.FakeDbBlockDeviceDict(
                    {
                        'id': 1,
                        'instance_uuid': uuids.block_device_instance,
                        'device_name': '/dev/vdb',
                        'source_type': 'blank',
                        'destination_type': 'local',
                        'delete_on_termination': True,
                        'guest_format': None,
                        'boot_index': -1
                    })
            ])

        self.swap = block_device_obj.block_device_make_list(
            self.context, [
                fake_block_device.FakeDbBlockDeviceDict(
                    {
                        'id': 2,
                        'instance_uuid': uuids.block_device_instance,
                        'device_name': '/dev/vdc',
                        'source_type': 'blank',
                        'destination_type': 'local',
                        'delete_on_termination': True,
                        'guest_format': 'swap',
                        'boot_index': -1
                    })
            ])

        self.block_device_mapping = block_device_obj.block_device_make_list(
            self.context, [
                fake_block_device.FakeDbBlockDeviceDict(
                    {
                        'id': 3,
                        'instance_uuid': uuids.block_device_instance,
                        'device_name': '/dev/vda',
                        'source_type': 'volume',
                        'destination_type': 'volume',
                        'volume_id': 'fake-volume-id-1',
                        'boot_index': 0
                    }),
                fake_block_device.FakeDbBlockDeviceDict(
                    {
                        'id': 4,
                        'instance_uuid': uuids.block_device_instance,
                        'device_name': '/dev/vdd',
                        'source_type': 'snapshot',
                        'destination_type': 'volume',
                        'snapshot_id': 'fake-snapshot-id-1',
                        'boot_index': -1
                    }),
                fake_block_device.FakeDbBlockDeviceDict(
                    {
                        'id': 5,
                        'instance_uuid': uuids.block_device_instance,
                        'device_name': '/dev/vde',
                        'source_type': 'blank',
                        'destination_type': 'volume',
                        'boot_index': -1
                    })
            ])
        self.instance = {'uuid': uuids.instance, 'ephemeral_gb': 2}
        self.is_libvirt = False
        self.root_device_name = '/dev/vda'
        self.update_called = False

        self.patchers = []
        self.patchers.append(
            mock.patch.object(objects.BlockDeviceMapping, 'save'))
        for patcher in self.patchers:
            patcher.start()
Beispiel #25
0
    def setUp(self):
        super(EC2ValidateTestCase, self).setUp()
        self.flags(compute_driver='nova.virt.fake.FakeDriver')

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

        self.stubs.Set(compute_utils, 'notify_about_instance_usage', dumb)
        fake_network.set_stub_network_methods(self.stubs)

        # set up our cloud
        self.cloud = cloud.CloudController()

        # set up services
        self.compute = self.start_service('compute')
        self.scheduter = self.start_service('scheduler')
        self.network = self.start_service('network')
        self.image_service = fake.FakeImageService()

        self.user_id = 'fake'
        self.project_id = 'fake'
        self.context = context.RequestContext(self.user_id,
                                              self.project_id,
                                              is_admin=True)

        self.EC2_MALFORMED_IDS = ['foobar', '', 123]
        self.EC2_VALID__IDS = ['i-284f3a41', 'i-001', 'i-deadbeef']

        self.ec2_id_exception_map = [(x, exception.InvalidInstanceIDMalformed)
                for x in self.EC2_MALFORMED_IDS]
        self.ec2_id_exception_map.extend([(x, exception.InstanceNotFound)
                for x in self.EC2_VALID__IDS])
        self.volume_id_exception_map = [(x,
                exception.InvalidInstanceIDMalformed)
                for x in self.EC2_MALFORMED_IDS]
        self.volume_id_exception_map.extend([(x, exception.VolumeNotFound)
                for x in self.EC2_VALID__IDS])

        def fake_show(meh, context, id):
            return {'id': id,
                    'container_format': 'ami',
                    'properties': {
                        'kernel_id': 'cedef40a-ed67-4d10-800e-17455edce175',
                        'ramdisk_id': 'cedef40a-ed67-4d10-800e-17455edce175',
                        'type': 'machine',
                        'image_state': 'available'}}

        def fake_detail(self, context, **kwargs):
            image = fake_show(self, context, None)
            image['name'] = kwargs.get('name')
            return [image]

        fake.stub_out_image_service(self.stubs)
        self.stubs.Set(fake._FakeImageService, 'show', fake_show)
        self.stubs.Set(fake._FakeImageService, 'detail', fake_detail)

        # NOTE(comstud): Make 'cast' behave like a 'call' which will
        # ensure that operations complete
        self.stubs.Set(rpc, 'cast', rpc.call)

        # make sure we can map ami-00000001/2 to a uuid in FakeImageService
        db.api.s3_image_create(self.context,
                               'cedef40a-ed67-4d10-800e-17455edce175')
        db.api.s3_image_create(self.context,
                               '76fa36fc-c930-4bf3-8c8a-ea2a2420deb6')
Beispiel #26
0
 def setUp(self):
     super(ComputeUtilsGetRebootTypes, self).setUp()
     self.context = context.RequestContext('fake', 'fake')
def _sync_networks(context, project_id, session):
    ctx = nova_context.RequestContext(user_id=None, project_id=project_id)
    ctx = ctx.elevated()
    networks = nova.network.api.API().get_all(ctx)
    return dict(networks=len(networks))
Beispiel #28
0
 def setUp(self):
     super(ComputeUtilsTestCase, self).setUp()
     self.compute = 'compute'
     self.user_id = 'fake'
     self.project_id = 'fake'
     self.context = context.RequestContext(self.user_id, self.project_id)
Beispiel #29
0
 def test_request_context_sets_is_admin_upcase(self):
     ctxt = context.RequestContext('111', '222', roles=['Admin', 'weasel'])
     self.assertEqual(ctxt.is_admin, True)
Beispiel #30
0
 def setUp(self):
     super(ClaimTestCase, self).setUp()
     self.context = context.RequestContext('fake-user', 'fake-project')
     self.resources = self._fake_resources()
     self.tracker = DummyTracker()
     self.empty_requests = objects.InstancePCIRequests(requests=[])