diff options
author | Ghe Rivero <ghe.rivero@hp.com> | 2014-01-10 16:32:36 +0000 |
---|---|---|
committer | Chris Krelle <nobodycam@gmail.com> | 2014-01-10 10:24:53 -0800 |
commit | 79b12ab21c1f2eca2dde5b60a87dc4f0dc1f4d9e (patch) | |
tree | a50133af09500dea735490e2d715c278b90eb5ed | |
parent | fd8e4539bd9c26a7ae089f61a33bd120b899daf3 (diff) | |
download | ironic-79b12ab21c1f2eca2dde5b60a87dc4f0dc1f4d9e.tar.gz |
Use correct auth context inside pxe driver
Until now, general auth context was used inside the pxe driver
making it fail when authenticating against glance. We should be using
instead task.context
Change-Id: I173b912c67ab77dda433d2f1f93e674852b7d054
Closes-Bug: #1266201
-rw-r--r-- | ironic/drivers/modules/pxe.py | 20 | ||||
-rw-r--r-- | ironic/tests/drivers/test_pxe.py | 13 |
2 files changed, 17 insertions, 16 deletions
diff --git a/ironic/drivers/modules/pxe.py b/ironic/drivers/modules/pxe.py index f88b0feba..4d69a7682 100644 --- a/ironic/drivers/modules/pxe.py +++ b/ironic/drivers/modules/pxe.py @@ -35,7 +35,6 @@ from ironic.conductor import task_manager from ironic.conductor import utils as manager_utils from ironic.drivers import base from ironic.drivers.modules import deploy_utils -from ironic.openstack.common import context from ironic.openstack.common import fileutils from ironic.openstack.common import lockutils from ironic.openstack.common import log as logging @@ -136,7 +135,7 @@ def _parse_driver_info(node): return d_info -def _build_pxe_config(node, pxe_info): +def _build_pxe_config(node, pxe_info, ctx): """Build the PXE config file for a node This method builds the PXE boot configuration file for a node, @@ -156,7 +155,6 @@ def _build_pxe_config(node, pxe_info): keystone.get_service_url()).rstrip('/') deploy_key = utils.random_alnum(32) - ctx = context.get_admin_context() driver_info = node['driver_info'] driver_info['pxe_deploy_key'] = deploy_key node['driver_info'] = driver_info @@ -374,7 +372,7 @@ def _cache_instance_image(ctx, node): return (uuid, image_path) -def _get_tftp_image_info(node): +def _get_tftp_image_info(node, ctx): """Generate the paths for tftp files for this instance Raises IronicException if @@ -395,7 +393,6 @@ def _get_tftp_image_info(node): image_info[label][1] = os.path.join(CONF.pxe.tftp_root, node['instance_uuid'], label) - ctx = context.get_admin_context() glance_service = service.Service(version=1, context=ctx) iproperties = glance_service.show(d_info['image_source'])['properties'] for label in ('kernel', 'ramdisk'): @@ -407,9 +404,8 @@ def _get_tftp_image_info(node): return image_info -def _cache_images(node, pxe_info): +def _cache_images(node, pxe_info, ctx): """Prepare all the images for this instance.""" - ctx = context.get_admin_context() #TODO(ghe):parallized downloads #TODO(ghe): Embedded image client in ramdisk @@ -470,7 +466,7 @@ def _create_pxe_config(task, node, pxe_info): 'pxelinux.cfg')) pxe_config_file_path = _get_pxe_config_file_path(node['instance_uuid']) - pxe_config = _build_pxe_config(node, pxe_info) + pxe_config = _build_pxe_config(node, pxe_info, task.context) utils.write_to_file(pxe_config_file_path, pxe_config) for port in _get_node_mac_addresses(task, node): mac_path = _get_pxe_mac_path(port) @@ -535,16 +531,16 @@ class PXEDeploy(base.DeployInterface): def prepare(self, task, node): # TODO(deva): optimize this if rerun on existing files - pxe_info = _get_tftp_image_info(node) + pxe_info = _get_tftp_image_info(node, task.context) _create_pxe_config(task, node, pxe_info) - _cache_images(node, pxe_info) + _cache_images(node, pxe_info, task.context) def clean_up(self, task, node): # FIXME(ghe): Possible error to get image info if eliminated from # glance. Retrieve image info and store in db. # If we keep master images, no need to get the info, # and we may ignore this. - pxe_info = _get_tftp_image_info(node) + pxe_info = _get_tftp_image_info(node, task.context) d_info = _parse_driver_info(node) for label in pxe_info: (uuid, path) = pxe_info[label] @@ -685,6 +681,6 @@ class VendorPassthru(base.VendorInterface): kwargs.get('persistent')) elif method == 'pass_deploy_info': - ctx = context.get_admin_context() + ctx = task.context with task_manager.acquire(ctx, node['uuid']) as inner_task: self._continue_deploy(inner_task, node, **kwargs) diff --git a/ironic/tests/drivers/test_pxe.py b/ironic/tests/drivers/test_pxe.py index cf1eff5f0..c314b13c3 100644 --- a/ironic/tests/drivers/test_pxe.py +++ b/ironic/tests/drivers/test_pxe.py @@ -220,6 +220,7 @@ class PXEPrivateMethodsTestCase(base.TestCase): 'instance_uuid': 'instance_uuid_123'} self.dbapi = dbapi.get_instance() self.node = self._create_test_node(**n) + self.context = context.get_admin_context() def _create_test_node(self, **kwargs): n = db_utils.get_test_node(**kwargs) @@ -244,7 +245,7 @@ class PXEPrivateMethodsTestCase(base.TestCase): with mock.patch.object(base_image_service.BaseImageService, '_show') \ as show_mock: show_mock.return_value = properties - image_info = pxe._get_tftp_image_info(self.node) + image_info = pxe._get_tftp_image_info(self.node, self.context) show_mock.assert_called_once_with('glance://image_uuid', method='get') self.assertEqual(image_info, expected_info) @@ -276,7 +277,9 @@ class PXEPrivateMethodsTestCase(base.TestCase): CONF.pxe.tftp_root + '/' + instance_uuid + '/ramdisk'] } - pxe_config = pxe._build_pxe_config(self.node, image_info) + pxe_config = pxe._build_pxe_config(self.node, + image_info, + self.context) random_alnum_mock.assert_called_once_with(32) self.assertEqual(pxe_config, pxe_config_template) @@ -542,12 +545,14 @@ class PXEDriverTestCase(db_base.DbTestCase): self.node['uuid'], shared=True) as task: task.driver.deploy.prepare(task, self.node) get_tftp_image_info_mock.assert_called_once_with( - self.node) + self.node, + self.context) create_pxe_config_mock.assert_called_once_with(task, self.node, None) cache_images_mock.assert_called_once_with(self.node, - None) + None, + self.context) def test_deploy(self): with mock.patch.object(pxe, '_update_neutron') as update_neutron_mock: |