summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGhe Rivero <ghe.rivero@hp.com>2014-01-10 16:32:36 +0000
committerChris Krelle <nobodycam@gmail.com>2014-01-10 10:24:53 -0800
commit79b12ab21c1f2eca2dde5b60a87dc4f0dc1f4d9e (patch)
treea50133af09500dea735490e2d715c278b90eb5ed
parentfd8e4539bd9c26a7ae089f61a33bd120b899daf3 (diff)
downloadironic-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.py20
-rw-r--r--ironic/tests/drivers/test_pxe.py13
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: