mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 17:09:03 +00:00
Remaining template_* unit tests for OpenNebula
This commit is contained in:
parent
fa58787227
commit
8ae98b2bf4
@ -2366,6 +2366,118 @@ def template_instantiate(call=None, kwargs=None):
|
||||
return data
|
||||
|
||||
|
||||
def template_update(call=None, kwargs=None):
|
||||
'''
|
||||
Replaces the template contents.
|
||||
|
||||
.. versionadded:: Boron
|
||||
|
||||
template_id
|
||||
The ID of the template to update. Can be used instead of ``template_name``.
|
||||
|
||||
template_name
|
||||
The name of the template to update. Can be used instead of ``template_id``.
|
||||
|
||||
path
|
||||
The path to a file containing the elements of the template to be updated.
|
||||
Syntax within the file can be the usual attribute=value or XML. Can be
|
||||
used instead of ``data``.
|
||||
|
||||
data
|
||||
Contains the elements of the template to be updated. Syntax can be the
|
||||
usual attribute=value or XML. Data provided my be wrapped in double
|
||||
quotes. Can be used instead of ``path``.
|
||||
|
||||
update_type
|
||||
There are two ways to update a template: ``replace`` the whole template
|
||||
or ``merge`` the new template with the existing one.
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt-cloud --function template_update opennebula template_id=1 update_type=replace \
|
||||
path=/path/to/template_update_file.txt
|
||||
salt-cloud -f template_update opennebula template_name=my-template update_type=merge \
|
||||
data="CPU='1.0' DISK=[IMAGE='Ubuntu-14.04'] GRAPHICS=[LISTEN='0.0.0.0',TYPE='vnc'] \
|
||||
MEMORY='1024' NETWORK='yes' NIC=[NETWORK='192net',NETWORK_UNAME='oneadmin'] \
|
||||
OS=[ARCH='x86_64'] SUNSTONE_CAPACITY_SELECT='YES' SUNSTONE_NETWORK_SELECT='YES' \
|
||||
VCPU='1'"
|
||||
'''
|
||||
if call != 'function':
|
||||
raise SaltCloudSystemExit(
|
||||
'The template_update function must be called with -f or --function.'
|
||||
)
|
||||
|
||||
if kwargs is None:
|
||||
kwargs = {}
|
||||
|
||||
template_id = kwargs.get('template_id', None)
|
||||
template_name = kwargs.get('template_name', None)
|
||||
path = kwargs.get('path', None)
|
||||
data = kwargs.get('data', None)
|
||||
update_type = kwargs.get('update_type', None)
|
||||
update_args = ['replace', 'merge']
|
||||
|
||||
if update_type is None:
|
||||
raise SaltCloudSystemExit(
|
||||
'The template_update function requires an \'update_type\' to be provided.'
|
||||
)
|
||||
|
||||
if update_type == update_args[0]:
|
||||
update_number = 0
|
||||
elif update_type == update_args[1]:
|
||||
update_number = 1
|
||||
else:
|
||||
raise SaltCloudSystemExit(
|
||||
'The update_type argument must be either {0} or {1}.'.format(
|
||||
update_args[0],
|
||||
update_args[1]
|
||||
)
|
||||
)
|
||||
|
||||
if template_id:
|
||||
if template_name:
|
||||
log.warning(
|
||||
'Both the \'template_id\' and \'template_name\' arguments were provided. '
|
||||
'\'template_id\' will take precedence.'
|
||||
)
|
||||
elif template_name:
|
||||
template_id = get_template_id(kwargs={'name': template_name})
|
||||
else:
|
||||
raise SaltCloudSystemExit(
|
||||
'The template_update function requires either a \'template_id\' '
|
||||
'or a \'template_name\' to be provided.'
|
||||
)
|
||||
|
||||
if data:
|
||||
if path:
|
||||
log.warning(
|
||||
'Both the \'data\' and \'path\' arguments were provided. '
|
||||
'\'data\' will take precedence.'
|
||||
)
|
||||
elif path:
|
||||
data = salt.utils.fopen(path, mode='r').read()
|
||||
else:
|
||||
raise SaltCloudSystemExit(
|
||||
'The template_update function requires either \'data\' or a file '
|
||||
'\'path\' to be provided.'
|
||||
)
|
||||
|
||||
server, user, password = _get_xml_rpc()
|
||||
auth = ':'.join([user, password])
|
||||
response = server.one.template.update(auth, int(template_id), data, int(update_number))
|
||||
|
||||
ret = {
|
||||
'action': 'template.update',
|
||||
'updated': response[0],
|
||||
'template_id': response[1],
|
||||
'error_code': response[2],
|
||||
}
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def vm_action(name, kwargs=None, call=None):
|
||||
'''
|
||||
Submits an action to be performed on a given virtual machine.
|
||||
@ -4159,118 +4271,6 @@ def vn_reserve(call=None, kwargs=None):
|
||||
return ret
|
||||
|
||||
|
||||
def template_update(call=None, kwargs=None):
|
||||
'''
|
||||
Replaces the template contents.
|
||||
|
||||
.. versionadded:: Boron
|
||||
|
||||
template_id
|
||||
The ID of the template to update. Can be used instead of ``template_name``.
|
||||
|
||||
template_name
|
||||
The name of the template to update. Can be used instead of ``template_id``.
|
||||
|
||||
path
|
||||
The path to a file containing the elements of the template to be updated.
|
||||
Syntax within the file can be the usual attribute=value or XML. Can be
|
||||
used instead of ``data``.
|
||||
|
||||
data
|
||||
Contains the elements of the template to be updated. Syntax can be the
|
||||
usual attribute=value or XML. Data provided my be wrapped in double
|
||||
quotes. Can be used instead of ``path``.
|
||||
|
||||
update_type
|
||||
There are two ways to update a template: ``replace`` the whole template
|
||||
or ``merge`` the new template with the existing one.
|
||||
|
||||
CLI Example:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
salt-cloud --function template_update opennebula template_id=1 update_type=replace \
|
||||
path=/path/to/template_update_file.txt
|
||||
salt-cloud -f template_update opennebula template_name=my-template update_type=merge \
|
||||
data="CPU='1.0' DISK=[IMAGE='Ubuntu-14.04'] GRAPHICS=[LISTEN='0.0.0.0',TYPE='vnc'] \
|
||||
MEMORY='1024' NETWORK='yes' NIC=[NETWORK='192net',NETWORK_UNAME='oneadmin'] \
|
||||
OS=[ARCH='x86_64'] SUNSTONE_CAPACITY_SELECT='YES' SUNSTONE_NETWORK_SELECT='YES' \
|
||||
VCPU='1'"
|
||||
'''
|
||||
if call != 'function':
|
||||
raise SaltCloudSystemExit(
|
||||
'The template_update function must be called with -f or --function.'
|
||||
)
|
||||
|
||||
if kwargs is None:
|
||||
kwargs = {}
|
||||
|
||||
template_id = kwargs.get('template_id', None)
|
||||
template_name = kwargs.get('template_name', None)
|
||||
path = kwargs.get('path', None)
|
||||
data = kwargs.get('data', None)
|
||||
update_type = kwargs.get('update_type', None)
|
||||
update_args = ['replace', 'merge']
|
||||
|
||||
if update_type is None:
|
||||
raise SaltCloudSystemExit(
|
||||
'The template_update function requires an \'update_type\' to be provided.'
|
||||
)
|
||||
|
||||
if template_id:
|
||||
if template_name:
|
||||
log.warning(
|
||||
'Both the \'template_id\' and \'template_name\' arguments were provided. '
|
||||
'\'template_id\' will take precedence.'
|
||||
)
|
||||
elif template_name:
|
||||
template_id = get_template_id(kwargs={'name': template_name})
|
||||
else:
|
||||
raise SaltCloudSystemExit(
|
||||
'The template_update function requires either a \'template_id\' '
|
||||
'or a \'template_name\' to be provided.'
|
||||
)
|
||||
|
||||
if data:
|
||||
if path:
|
||||
log.warning(
|
||||
'Both the \'data\' and \'path\' arguments were provided. '
|
||||
'\'data\' will take precedence.'
|
||||
)
|
||||
elif path:
|
||||
data = salt.utils.fopen(path, mode='r').read()
|
||||
else:
|
||||
raise SaltCloudSystemExit(
|
||||
'The template_update function requires either \'data\' or a file '
|
||||
'\'path\' to be provided.'
|
||||
)
|
||||
|
||||
if update_type == update_args[0]:
|
||||
update_number = 0
|
||||
elif update_type == update_args[1]:
|
||||
update_number = 1
|
||||
else:
|
||||
raise SaltCloudSystemExit(
|
||||
'The update_type argument must be either {0} or {1}.'.format(
|
||||
update_args[0],
|
||||
update_args[1]
|
||||
)
|
||||
)
|
||||
|
||||
server, user, password = _get_xml_rpc()
|
||||
auth = ':'.join([user, password])
|
||||
response = server.one.template.update(auth, int(template_id), data, int(update_number))
|
||||
|
||||
ret = {
|
||||
'action': 'template.update',
|
||||
'updated': response[0],
|
||||
'template_id': response[1],
|
||||
'error_code': response[2],
|
||||
}
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
# Helper Functions
|
||||
|
||||
def _get_node(name):
|
||||
|
@ -718,8 +718,8 @@ class OpenNebulaTestCase(TestCase):
|
||||
|
||||
def test_secgroup_update_bad_update_type_value(self):
|
||||
'''
|
||||
Tests that a SaltCloudSystemExit is raised when the secgroup_id and
|
||||
secgroup_name kwargs are missing.
|
||||
Tests that a SaltCloudSystemExit is raised when the update_type contains
|
||||
an invalid value.
|
||||
'''
|
||||
self.assertRaises(SaltCloudSystemExit,
|
||||
opennebula.secgroup_update,
|
||||
@ -823,6 +823,46 @@ class OpenNebulaTestCase(TestCase):
|
||||
'function',
|
||||
kwargs={'vm_name': 'test'})
|
||||
|
||||
def test_template_update_function_error(self):
|
||||
'''
|
||||
Tests that a SaltCloudSystemExit is raised when something other than
|
||||
--function or -f is provided.
|
||||
'''
|
||||
self.assertRaises(SaltCloudSystemExit,
|
||||
opennebula.template_update,
|
||||
call='foo')
|
||||
|
||||
def test_template_update_bad_update_type_value(self):
|
||||
'''
|
||||
Tests that a SaltCloudSystemExit is raised when the update_type contains
|
||||
and invalid value.
|
||||
'''
|
||||
self.assertRaises(SaltCloudSystemExit,
|
||||
opennebula.template_update,
|
||||
call='function',
|
||||
kwargs={'update_type': 'foo'})
|
||||
|
||||
def test_template_update_no_template_id_or_template_name(self):
|
||||
'''
|
||||
Tests that a SaltCloudSystemExit is raised when the template_id and the
|
||||
template_name args are missing.
|
||||
'''
|
||||
self.assertRaises(SaltCloudSystemExit,
|
||||
opennebula.template_update,
|
||||
call='function',
|
||||
kwargs={'update_type': 'merge'})
|
||||
|
||||
def test_template_update_no_data_or_path(self):
|
||||
'''
|
||||
Tests that a SaltCloudSystemExit is raised when the data and the
|
||||
path args are missing.
|
||||
'''
|
||||
self.assertRaises(SaltCloudSystemExit,
|
||||
opennebula.template_update,
|
||||
call='function',
|
||||
kwargs={'update_type': 'merge',
|
||||
'template_id': '0'})
|
||||
|
||||
def test_vm_action_error(self):
|
||||
'''
|
||||
Tests that a SaltCloudSystemExit is raised when something other than
|
||||
|
Loading…
Reference in New Issue
Block a user