def _create_node(self, node_info=None, nic_info=None, ephemeral=True): result = {} if node_info is None: node_info = bm_db_utils.new_bm_node( id=123, service_host='test_host', cpus=2, memory_mb=2048, ) if nic_info is None: nic_info = [ { 'address': '01:23:45:67:89:01', 'datapath_id': '0x1', 'port_no': 1 }, { 'address': '01:23:45:67:89:02', 'datapath_id': '0x2', 'port_no': 2 }, ] result['node_info'] = node_info result['nic_info'] = nic_info result['node'] = db.bm_node_create(self.context, node_info) for nic in nic_info: db.bm_interface_create( self.context, result['node']['id'], nic['address'], nic['datapath_id'], nic['port_no'], ) if ephemeral: result['instance'] = utils.get_test_instance() else: flavor = utils.get_test_flavor(options={'ephemeral_gb': 0}) result['instance'] = utils.get_test_instance(flavor=flavor) result['instance']['node'] = result['node']['uuid'] result['spawn_params'] = dict( admin_password='******', block_device_info=None, context=self.context, image_meta=utils.get_test_image_info(None, result['instance']), injected_files=[('/fake/path', 'hello world')], instance=result['instance'], network_info=utils.get_test_network_info(), ) result['destroy_params'] = dict( context=self.context, instance=result['instance'], network_info=result['spawn_params']['network_info'], block_device_info=result['spawn_params']['block_device_info'], ) return result
def test_swap_not_zero(self): # override swap to 0 flavor = utils.get_test_flavor(self.context) flavor['swap'] = 0 self.instance = utils.get_test_instance(self.context, flavor) sizes = tilera.get_partition_sizes(self.instance) self.assertEqual(sizes[0], 40960) self.assertEqual(sizes[1], 1)
def test_create_container_vcpus_2(self, image_info=None): flavor = utils.get_test_flavor(options={"name": "vcpu_2", "flavorid": "vcpu_2", "vcpus": 2}) instance_href = utils.get_test_instance(flavor=flavor) if image_info is None: image_info = utils.get_test_image_info(None, instance_href) image_info["disk_format"] = "raw" image_info["container_format"] = "docker" self.connection.spawn(self.context, instance_href, image_info, "fake_files", "fake_password") self._assert_cpu_shares(instance_href, vcpus=2)
def test_swap_not_zero(self): # override swap to 0 flavor = utils.get_test_flavor(self.context) flavor['swap'] = 0 self.instance = utils.get_test_instance(self.context, flavor) sizes = pxe.get_partition_sizes(self.instance) self.assertEqual(sizes[0], 40960) self.assertEqual(sizes[1], 1)
def _create_node(self, node_info=None, nic_info=None, ephemeral=True): result = {} if node_info is None: node_info = bm_db_utils.new_bm_node( id=123, service_host='test_host', cpus=2, memory_mb=2048, ) if nic_info is None: nic_info = [ {'address': '01:23:45:67:89:01', 'datapath_id': '0x1', 'port_no': 1}, {'address': '01:23:45:67:89:02', 'datapath_id': '0x2', 'port_no': 2}, ] result['node_info'] = node_info result['nic_info'] = nic_info result['node'] = db.bm_node_create(self.context, node_info) for nic in nic_info: db.bm_interface_create( self.context, result['node']['id'], nic['address'], nic['datapath_id'], nic['port_no'], ) if ephemeral: result['instance'] = utils.get_test_instance() else: flavor = utils.get_test_flavor(options={'ephemeral_gb': 0}) result['instance'] = utils.get_test_instance(flavor=flavor) result['instance']['node'] = result['node']['uuid'] result['spawn_params'] = dict( admin_password='******', block_device_info=None, context=self.context, image_meta=utils.get_test_image_info( None, result['instance']), injected_files=[('/fake/path', 'hello world')], instance=result['instance'], network_info=utils.get_test_network_info(), ) result['destroy_params'] = dict( context=self.context, instance=result['instance'], network_info=result['spawn_params']['network_info'], block_device_info=result['spawn_params']['block_device_info'], ) return result
def test_create_container_vcpus_2(self, image_info=None): flavor = utils.get_test_flavor(options={ 'name': 'vcpu_2', 'flavorid': 'vcpu_2', 'vcpus': 2 }) instance_href = utils.get_test_instance(flavor=flavor) if image_info is None: image_info = utils.get_test_image_info(None, instance_href) image_info['disk_format'] = 'raw' image_info['container_format'] = 'docker' self.connection.spawn(self.context, instance_href, image_info, 'fake_files', 'fake_password') self._assert_cpu_shares(instance_href, vcpus=2)
def test_get_tftp_image_info(self): flavor = utils.get_test_flavor() # Raises an exception when options are neither specified # on the instance nor in configuration file self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # Test that other non-true values also raise an exception self.flags(deploy_kernel="", deploy_ramdisk="", group="baremetal") self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # Even if the instance includes kernel_id and ramdisk_id, # we still need deploy_kernel_id and deploy_ramdisk_id. # If those aren't present in instance[], and not specified in # config file, then we raise an exception. self.instance["kernel_id"] = "aaaa" self.instance["ramdisk_id"] = "bbbb" self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # If an instance doesn't specify deploy_kernel_id or deploy_ramdisk_id, # but defaults are set in the config file, we should use those. # Here, we confirm both that all four values were set # and that the proper paths are getting set for all of them self.flags(deploy_kernel="cccc", deploy_ramdisk="dddd", group="baremetal") base = os.path.join(CONF.baremetal.tftp_root, self.instance["uuid"]) res = pxe.get_tftp_image_info(self.instance, flavor) expected = { "kernel": ["aaaa", os.path.join(base, "kernel")], "ramdisk": ["bbbb", os.path.join(base, "ramdisk")], "deploy_kernel": ["cccc", os.path.join(base, "deploy_kernel")], "deploy_ramdisk": ["dddd", os.path.join(base, "deploy_ramdisk")], } self.assertEqual(expected, res) # If deploy_kernel_id and deploy_ramdisk_id are specified on # image extra_specs, this should override any default configuration. # Note that it is passed on the 'instance' object, despite being # inherited from the flavor_extra_specs table. extra_specs = {"baremetal:deploy_kernel_id": "eeee", "baremetal:deploy_ramdisk_id": "ffff"} flavor["extra_specs"] = extra_specs res = pxe.get_tftp_image_info(self.instance, flavor) self.assertEqual("eeee", res["deploy_kernel"][0]) self.assertEqual("ffff", res["deploy_ramdisk"][0]) # However, if invalid values are passed on the image extra_specs, # this should still raise an exception. extra_specs = {"baremetal:deploy_kernel_id": "", "baremetal:deploy_ramdisk_id": ""} flavor["extra_specs"] = extra_specs self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor)
def test_cache_tftp_images(self): self.instance["kernel_id"] = "aaaa" self.instance["ramdisk_id"] = "bbbb" flavor = utils.get_test_flavor() extra_specs = {"baremetal:deploy_kernel_id": "cccc", "baremetal:deploy_ramdisk_id": "dddd"} flavor["extra_specs"] = extra_specs image_info = pxe.get_tftp_image_info(self.instance, flavor) self.mox.StubOutWithMock(os, "makedirs") self.mox.StubOutWithMock(os.path, "exists") os.makedirs(os.path.join(CONF.baremetal.tftp_root, self.instance["uuid"])).AndReturn(True) for uuid, path in [image_info[label] for label in image_info]: os.path.exists(path).AndReturn(True) self.mox.ReplayAll() self.driver._cache_tftp_images(self.context, self.instance, image_info) self.mox.VerifyAll()
def test_cache_tftp_images(self): self.instance['kernel_id'] = 'aaaa' self.instance['ramdisk_id'] = 'bbbb' flavor = utils.get_test_flavor() extra_specs = { 'baremetal:deploy_kernel_id': 'cccc', 'baremetal:deploy_ramdisk_id': 'dddd', } flavor['extra_specs'] = extra_specs image_info = pxe.get_tftp_image_info(self.instance, flavor) self.mox.StubOutWithMock(os, 'makedirs') self.mox.StubOutWithMock(os.path, 'exists') os.makedirs(os.path.join(CONF.baremetal.tftp_root, self.instance['uuid'])).AndReturn(True) for uuid, path in [image_info[label] for label in image_info]: os.path.exists(path).AndReturn(True) self.mox.ReplayAll() self.driver._cache_tftp_images( self.context, self.instance, image_info) self.mox.VerifyAll()
def test_cache_tftp_images(self): self.instance['kernel_id'] = 'aaaa' self.instance['ramdisk_id'] = 'bbbb' flavor = utils.get_test_flavor() extra_specs = { 'baremetal:deploy_kernel_id': 'cccc', 'baremetal:deploy_ramdisk_id': 'dddd', } flavor['extra_specs'] = extra_specs image_info = pxe.get_tftp_image_info(self.instance, flavor) self.mox.StubOutWithMock(os, 'makedirs') self.mox.StubOutWithMock(os.path, 'exists') os.makedirs( os.path.join(CONF.baremetal.tftp_root, self.instance['uuid'])).AndReturn(True) for uuid, path in [image_info[label] for label in image_info]: os.path.exists(path).AndReturn(True) self.mox.ReplayAll() self.driver._cache_tftp_images(self.context, self.instance, image_info) self.mox.VerifyAll()
def test_migrate_disk_and_power_off(self): instance_ref, network_info = self._get_running_instance() flavor_ref = test_utils.get_test_flavor() self.connection.migrate_disk_and_power_off( self.ctxt, instance_ref, 'dest_host', flavor_ref, network_info)
def test_migrate_disk_and_power_off(self): instance_ref, network_info = self._get_running_instance() flavor_ref = test_utils.get_test_flavor() self.connection.migrate_disk_and_power_off(self.ctxt, instance_ref, 'dest_host', flavor_ref, network_info)
def test_get_tftp_image_info(self): flavor = utils.get_test_flavor() # Raises an exception when options are neither specified # on the instance nor in configuration file CONF.baremetal.deploy_kernel = None CONF.baremetal.deploy_ramdisk = None self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # Test that other non-true values also raise an exception CONF.baremetal.deploy_kernel = "" CONF.baremetal.deploy_ramdisk = "" self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # Even if the instance includes kernel_id and ramdisk_id, # we still need deploy_kernel_id and deploy_ramdisk_id. # If those aren't present in instance[], and not specified in # config file, then we raise an exception. self.instance['kernel_id'] = 'aaaa' self.instance['ramdisk_id'] = 'bbbb' self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # If an instance doesn't specify deploy_kernel_id or deploy_ramdisk_id, # but defaults are set in the config file, we should use those. # Here, we confirm both that all four values were set # and that the proper paths are getting set for all of them CONF.baremetal.deploy_kernel = 'cccc' CONF.baremetal.deploy_ramdisk = 'dddd' base = os.path.join(CONF.baremetal.tftp_root, self.instance['uuid']) res = pxe.get_tftp_image_info(self.instance, flavor) expected = { 'kernel': ['aaaa', os.path.join(base, 'kernel')], 'ramdisk': ['bbbb', os.path.join(base, 'ramdisk')], 'deploy_kernel': ['cccc', os.path.join(base, 'deploy_kernel')], 'deploy_ramdisk': ['dddd', os.path.join(base, 'deploy_ramdisk')], } self.assertEqual(res, expected) # If deploy_kernel_id and deploy_ramdisk_id are specified on # image extra_specs, this should override any default configuration. # Note that it is passed on the 'instance' object, despite being # inherited from the flavor_extra_specs table. extra_specs = { 'baremetal:deploy_kernel_id': 'eeee', 'baremetal:deploy_ramdisk_id': 'ffff', } flavor['extra_specs'] = extra_specs res = pxe.get_tftp_image_info(self.instance, flavor) self.assertEqual(res['deploy_kernel'][0], 'eeee') self.assertEqual(res['deploy_ramdisk'][0], 'ffff') # However, if invalid values are passed on the image extra_specs, # this should still raise an exception. extra_specs = { 'baremetal:deploy_kernel_id': '', 'baremetal:deploy_ramdisk_id': '', } flavor['extra_specs'] = extra_specs self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor)
def test_get_tftp_image_info(self): flavor = utils.get_test_flavor() # Raises an exception when options are neither specified # on the instance nor in configuration file CONF.baremetal.deploy_kernel = None CONF.baremetal.deploy_ramdisk = None self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # Test that other non-true values also raise an exception CONF.baremetal.deploy_kernel = "" CONF.baremetal.deploy_ramdisk = "" self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # Even if the instance includes kernel_id and ramdisk_id, # we still need deploy_kernel_id and deploy_ramdisk_id. # If those aren't present in instance[], and not specified in # config file, then we raise an exception. self.instance['kernel_id'] = 'aaaa' self.instance['ramdisk_id'] = 'bbbb' self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor) # If an instance doesn't specify deploy_kernel_id or deploy_ramdisk_id, # but defaults are set in the config file, we should use those. # Here, we confirm both that all four values were set # and that the proper paths are getting set for all of them CONF.baremetal.deploy_kernel = 'cccc' CONF.baremetal.deploy_ramdisk = 'dddd' base = os.path.join(CONF.baremetal.tftp_root, self.instance['uuid']) res = pxe.get_tftp_image_info(self.instance, flavor) expected = { 'kernel': ['aaaa', os.path.join(base, 'kernel')], 'ramdisk': ['bbbb', os.path.join(base, 'ramdisk')], 'deploy_kernel': ['cccc', os.path.join(base, 'deploy_kernel')], 'deploy_ramdisk': ['dddd', os.path.join(base, 'deploy_ramdisk')], } self.assertEqual(expected, res) # If deploy_kernel_id and deploy_ramdisk_id are specified on # image extra_specs, this should override any default configuration. # Note that it is passed on the 'instance' object, despite being # inherited from the flavor_extra_specs table. extra_specs = { 'baremetal:deploy_kernel_id': 'eeee', 'baremetal:deploy_ramdisk_id': 'ffff', } flavor['extra_specs'] = extra_specs res = pxe.get_tftp_image_info(self.instance, flavor) self.assertEqual('eeee', res['deploy_kernel'][0]) self.assertEqual('ffff', res['deploy_ramdisk'][0]) # However, if invalid values are passed on the image extra_specs, # this should still raise an exception. extra_specs = { 'baremetal:deploy_kernel_id': '', 'baremetal:deploy_ramdisk_id': '', } flavor['extra_specs'] = extra_specs self.assertRaises(exception.NovaException, pxe.get_tftp_image_info, self.instance, flavor)