Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Cloud:OpenStack:Icehouse
openstack-trove
0001-Enable-usage-of-config-drive-for-file-inje...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-Enable-usage-of-config-drive-for-file-injection.patch of Package openstack-trove
From 3ae176624cf2bcacff234acfceefc0b641a2aa9a Mon Sep 17 00:00:00 2001 From: Vipul Sabhaya <vipuls@gmail.com> Date: Thu, 12 Jun 2014 16:22:54 -0700 Subject: [PATCH] Enable usage of config-drive for file injection * Some nova deployments allow the use of config-drive to do file injection. Trove, when booting an instance, needs to send this to Nova when config-drive is to be used. Closes-Bug: #1329535 Change-Id: I950b93a32f6c7224f30cf930e5f95710c07cbc26 --- etc/trove/trove-taskmanager.conf.sample | 5 +++++ trove/common/cfg.py | 3 +++ trove/taskmanager/models.py | 9 ++++++--- trove/tests/fakes/nova.py | 2 +- trove/tests/unittests/taskmanager/test_models.py | 2 +- 5 files changed, 16 insertions(+), 5 deletions(-) diff --git a/etc/trove/trove-taskmanager.conf.sample b/etc/trove/trove-taskmanager.conf.sample index 2bd93f2..d3d4c1e 100644 --- a/etc/trove/trove-taskmanager.conf.sample +++ b/etc/trove/trove-taskmanager.conf.sample @@ -43,6 +43,11 @@ mount_point = /var/lib/mysql volume_time_out=30 server_delete_time_out=480 +# Nova server boot options +# sets the --config-drive argument when doing a nova boot +# (controls how file injection is handled by nova) +use_nova_server_config_drive = False + # Configuration options for talking to nova via the novaclient. # These options are for an admin user in your keystone config. # It proxy's the token received from the user to send to nova via this admin users creds, diff --git a/trove/common/cfg.py b/trove/common/cfg.py index b5fb2f1..428069d 100644 --- a/trove/common/cfg.py +++ b/trove/common/cfg.py @@ -113,6 +113,9 @@ common_opts = [ cfg.StrOpt('taskmanager_queue', default='taskmanager'), cfg.StrOpt('conductor_queue', default='trove-conductor'), cfg.IntOpt('trove_conductor_workers', default=1), + cfg.BoolOpt('use_nova_server_config_drive', default=False, + help="Use config drive for file injection when booting " + "instance."), cfg.BoolOpt('use_nova_server_volume', default=False), cfg.BoolOpt('use_heat', default=False), cfg.StrOpt('device_path', default='/dev/vdb'), diff --git a/trove/taskmanager/models.py b/trove/taskmanager/models.py index e9bf332..44af50c 100644 --- a/trove/taskmanager/models.py +++ b/trove/taskmanager/models.py @@ -568,12 +568,15 @@ class FreshInstanceTasks(FreshInstance, NotifyMixin, ConfigurationMixin): userdata = f.read() name = self.hostname or self.name bdmap = block_device_mapping + config_drive = CONF.use_nova_server_config_drive + server = self.nova_client.servers.create( name, image_id, flavor_id, files=files, userdata=userdata, security_groups=security_groups, block_device_mapping=bdmap, - availability_zone=availability_zone, nics=nics) - LOG.debug(_("Created new compute instance %(server_id)s " - "for id: %(id)s") % + availability_zone=availability_zone, nics=nics, + config_drive=config_drive) + LOG.debug("Created new compute instance %(server_id)s " + "for id: %(id)s" % {'server_id': server.id, 'id': self.id}) return server diff --git a/trove/tests/fakes/nova.py b/trove/tests/fakes/nova.py index 9f41d3c..fc2a5f2 100644 --- a/trove/tests/fakes/nova.py +++ b/trove/tests/fakes/nova.py @@ -259,7 +259,7 @@ class FakeServers(object): def create(self, name, image_id, flavor_ref, files=None, userdata=None, block_device_mapping=None, volume=None, security_groups=None, - availability_zone=None, nics=None): + availability_zone=None, nics=None, config_drive=False): id = "FAKE_%s" % uuid.uuid4() if volume: volume = self.volumes.create(volume['size'], volume['name'], diff --git a/trove/tests/unittests/taskmanager/test_models.py b/trove/tests/unittests/taskmanager/test_models.py index 8a6bbd1..99e604a 100644 --- a/trove/tests/unittests/taskmanager/test_models.py +++ b/trove/tests/unittests/taskmanager/test_models.py @@ -75,7 +75,7 @@ class fake_Server: class fake_ServerManager: def create(self, name, image_id, flavor_id, files, userdata, security_groups, block_device_mapping, availability_zone=None, - nics=None): + nics=None, config_drive=False): server = fake_Server() server.id = "server_id" server.name = name -- 1.8.3.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor