Merge "Adds new configurations for injected file owner"
This commit is contained in:
commit
fd9a789949
|
@ -428,6 +428,12 @@ common_opts = [
|
|||
cfg.StrOpt('injected_config_location', default='/etc/trove/conf.d',
|
||||
help='Path to folder on the Guest where config files will be '
|
||||
'injected during instance creation.'),
|
||||
cfg.StrOpt('injected_config_owner', default='trove',
|
||||
help='Owner of the Guest Agent directory and files to be '
|
||||
'injected during instance creation.'),
|
||||
cfg.StrOpt('injected_config_group', default='trove',
|
||||
help='Group of the Guest Agent directory and files to be '
|
||||
'injected during instance creation.'),
|
||||
cfg.StrOpt('guest_config',
|
||||
default='/etc/trove/trove-guestagent.conf',
|
||||
help='Path to the Guest Agent config file to be injected '
|
||||
|
|
|
@ -968,23 +968,30 @@ class BaseInstance(SimpleInstance):
|
|||
return self._server_group
|
||||
|
||||
def prepare_cloud_config(self, files):
|
||||
userdata = (
|
||||
"#cloud-config\n"
|
||||
"write_files:\n"
|
||||
)
|
||||
# This method returns None if the files argument is None
|
||||
userdata = None
|
||||
|
||||
for filename, content in files.items():
|
||||
ud = encodeutils.safe_encode(content)
|
||||
body_userdata = (
|
||||
"- encoding: b64\n"
|
||||
" owner: trove:trove\n"
|
||||
" path: %s\n"
|
||||
" content: %s\n" % (
|
||||
filename, encodeutils.safe_decode(base64.b64encode(ud)))
|
||||
if files:
|
||||
userdata = (
|
||||
"#cloud-config\n"
|
||||
"write_files:\n"
|
||||
)
|
||||
userdata = userdata + body_userdata
|
||||
|
||||
return userdata
|
||||
injected_config_owner = CONF.get('injected_config_owner')
|
||||
injected_config_group = CONF.get('injected_config_group')
|
||||
for filename, content in files.items():
|
||||
ud = encodeutils.safe_encode(content)
|
||||
body_userdata = (
|
||||
"- encoding: b64\n"
|
||||
" owner: %s:%s\n"
|
||||
" path: %s\n"
|
||||
" content: %s\n" % (
|
||||
injected_config_owner, injected_config_group, filename,
|
||||
encodeutils.safe_decode(base64.b64encode(ud)))
|
||||
)
|
||||
userdata = userdata + body_userdata
|
||||
|
||||
return userdata if userdata else ""
|
||||
|
||||
def get_injected_files(self, datastore_manager, datastore_version):
|
||||
injected_config_location = CONF.get('injected_config_location')
|
||||
|
|
|
@ -242,8 +242,7 @@ class FreshInstanceTasksTest(BaseFreshInstanceTasksTest):
|
|||
server = self.freshinstancetasks._create_server(
|
||||
None, None, datastore_manager, None, None, None)
|
||||
|
||||
userdata = self.userdata + "#cloud-config\nwrite_files:\n"
|
||||
self.assertEqual(server.userdata, userdata)
|
||||
self.assertEqual(server.userdata, self.userdata)
|
||||
|
||||
def test_create_instance_with_keypair(self):
|
||||
cfg.CONF.set_override('nova_keypair', 'fake_keypair')
|
||||
|
@ -317,6 +316,41 @@ class FreshInstanceTasksTest(BaseFreshInstanceTasksTest):
|
|||
def test_servers_create_block_device_mapping_v2(self,
|
||||
mock_hostname,
|
||||
mock_name):
|
||||
# This testcase is to test create_server with config_drive=True.
|
||||
# We need set use_nova_server_config_drive True explicitly
|
||||
# because use_nova_server_config_drive becomes False since Yoga
|
||||
cfg.CONF.set_override('use_nova_server_config_drive', True)
|
||||
self.freshinstancetasks.prepare_userdata = Mock(return_value=None)
|
||||
mock_nova_client = self.freshinstancetasks.nova_client = Mock()
|
||||
mock_servers_create = mock_nova_client.servers.create
|
||||
self.freshinstancetasks._create_server('fake-flavor', 'fake-image',
|
||||
'mysql', None, None, None)
|
||||
meta = {'trove_project_id': self.freshinstancetasks.tenant_id,
|
||||
'trove_user_id': 'test_user',
|
||||
'trove_instance_id': self.freshinstancetasks.id}
|
||||
mock_servers_create.assert_called_with(
|
||||
'fake-name', 'fake-image',
|
||||
'fake-flavor', files={},
|
||||
userdata=None,
|
||||
block_device_mapping_v2=None,
|
||||
availability_zone=None,
|
||||
nics=None,
|
||||
config_drive=True,
|
||||
scheduler_hints=None,
|
||||
key_name=None,
|
||||
meta=meta,
|
||||
)
|
||||
|
||||
@patch.object(taskmanager_models.FreshInstanceTasks, 'hostname',
|
||||
new_callable=PropertyMock,
|
||||
return_value='fake-hostname')
|
||||
@patch.object(taskmanager_models.FreshInstanceTasks, 'name',
|
||||
new_callable=PropertyMock,
|
||||
return_value='fake-name')
|
||||
def test_servers_create_block_device_mapping_v2_since_yoga(
|
||||
self, mock_hostname, mock_name):
|
||||
|
||||
# This testcase is for testing with config_drive=False.
|
||||
self.freshinstancetasks.prepare_userdata = Mock(
|
||||
return_value="#cloud-config\nwrite_files:\n")
|
||||
mock_nova_client = self.freshinstancetasks.nova_client = Mock()
|
||||
|
|
Loading…
Reference in New Issue