Fix opennebula test stub (#40436)
* Requesting fixture services from PYONE via environment varaibles * moved all test functionality out of opennebula module utils
This commit is contained in:
parent
c464419286
commit
c49b7d2a5d
2 changed files with 42 additions and 88 deletions
|
@ -13,9 +13,8 @@ from ansible.module_utils.basic import AnsibleModule
|
|||
HAS_PYONE = True
|
||||
|
||||
try:
|
||||
import pyone
|
||||
from pyone import OneException
|
||||
from pyone.tester import OneServerTester
|
||||
from pyone.server import OneServer
|
||||
except ImportError:
|
||||
OneException = Exception
|
||||
HAS_PYONE = False
|
||||
|
@ -25,9 +24,7 @@ class OpenNebulaModule:
|
|||
"""
|
||||
Base class for all OpenNebula Ansible Modules.
|
||||
This is basically a wrapper of the common arguments, the pyone client and
|
||||
Some utility methods. It will also create a Test client if fixtures are
|
||||
to be replayed or recorded and manage that they are flush to disk when
|
||||
required.
|
||||
some utility methods.
|
||||
"""
|
||||
|
||||
common_args = dict(
|
||||
|
@ -56,17 +53,11 @@ class OpenNebulaModule:
|
|||
def create_one_client(self):
|
||||
"""
|
||||
Creates an XMLPRC client to OpenNebula.
|
||||
Dependign on environment variables it will implement a test client.
|
||||
|
||||
Returns: the new xmlrpc client.
|
||||
|
||||
"""
|
||||
|
||||
test_fixture = (environ.get("ONE_TEST_FIXTURE", "False").lower() in ["1", "yes", "true"])
|
||||
test_fixture_file = environ.get("ONE_TEST_FIXTURE_FILE", "undefined")
|
||||
test_fixture_replay = (environ.get("ONE_TEST_FIXTURE_REPLAY", "True").lower() in ["1", "yes", "true"])
|
||||
test_fixture_unit = environ.get("ONE_TEST_FIXTURE_UNIT", "init")
|
||||
|
||||
# context required for not validating SSL, old python versions won't validate anyway.
|
||||
if hasattr(ssl, '_create_unverified_context'):
|
||||
no_ssl_validation_context = ssl._create_unverified_context()
|
||||
|
@ -94,36 +85,20 @@ class OpenNebulaModule:
|
|||
|
||||
session = "%s:%s" % (username, password)
|
||||
|
||||
if not test_fixture:
|
||||
if not self.module.params.get("validate_certs") and "PYTHONHTTPSVERIFY" not in environ:
|
||||
return pyone.OneServer(url, session=session, context=no_ssl_validation_context)
|
||||
else:
|
||||
return pyone.OneServer(url, session)
|
||||
if not self.module.params.get("validate_certs") and "PYTHONHTTPSVERIFY" not in environ:
|
||||
return OneServer(url, session=session, context=no_ssl_validation_context)
|
||||
else:
|
||||
if not self.module.params.get("validate_certs") and "PYTHONHTTPSVERIFY" not in environ:
|
||||
one = OneServerTester(url,
|
||||
fixture_file=test_fixture_file,
|
||||
fixture_replay=test_fixture_replay,
|
||||
session=session,
|
||||
context=no_ssl_validation_context)
|
||||
else:
|
||||
one = OneServerTester(url,
|
||||
fixture_file=test_fixture_file,
|
||||
fixture_replay=test_fixture_replay,
|
||||
session=session)
|
||||
one.set_fixture_unit_test(test_fixture_unit)
|
||||
return one
|
||||
return OneServer(url, session)
|
||||
|
||||
def close_one_client(self):
|
||||
"""
|
||||
Closing is only require in the event of fixture recording, as fixtures will be dumped to file
|
||||
Close the pyone session.
|
||||
"""
|
||||
if self.is_fixture_writing():
|
||||
self.one._close_fixtures()
|
||||
self.one.server_close()
|
||||
|
||||
def fail(self, msg):
|
||||
"""
|
||||
Utility failure method, will ensure fixtures are flushed before failing.
|
||||
Utility failure method, will ensure pyone is properly closed before failing.
|
||||
Args:
|
||||
msg: human readable failure reason.
|
||||
"""
|
||||
|
@ -133,7 +108,7 @@ class OpenNebulaModule:
|
|||
|
||||
def exit(self):
|
||||
"""
|
||||
Utility exit method, will ensure fixtures are flushed before exiting.
|
||||
Utility exit method, will ensure pyone is properly closed before exiting.
|
||||
|
||||
"""
|
||||
if hasattr(self, 'one'):
|
||||
|
@ -178,22 +153,6 @@ class OpenNebulaModule:
|
|||
"""
|
||||
return self.resolved_parameters.get(name)
|
||||
|
||||
def is_fixture_replay(self):
|
||||
"""
|
||||
Returns: true if we are currently running fixtures in replay mode.
|
||||
|
||||
"""
|
||||
return (environ.get("ONE_TEST_FIXTURE", "False").lower() in ["1", "yes", "true"]) and \
|
||||
(environ.get("ONE_TEST_FIXTURE_REPLAY", "True").lower() in ["1", "yes", "true"])
|
||||
|
||||
def is_fixture_writing(self):
|
||||
"""
|
||||
Returns: true if we are currently running fixtures in write mode.
|
||||
|
||||
"""
|
||||
return (environ.get("ONE_TEST_FIXTURE", "False").lower() in ["1", "yes", "true"]) and \
|
||||
(environ.get("ONE_TEST_FIXTURE_REPLAY", "True").lower() in ["0", "no", "false"])
|
||||
|
||||
def get_host_by_name(self, name):
|
||||
'''
|
||||
Returns a host given its name.
|
||||
|
@ -306,11 +265,6 @@ class OpenNebulaModule:
|
|||
if not wait_timeout:
|
||||
wait_timeout = self.module.params.get("wait_timeout")
|
||||
|
||||
if self.is_fixture_replay():
|
||||
sleep_time_ms = 0.01
|
||||
else:
|
||||
sleep_time_ms = 1
|
||||
|
||||
start_time = time.time()
|
||||
|
||||
while (time.time() - start_time) < wait_timeout:
|
||||
|
@ -326,7 +280,7 @@ class OpenNebulaModule:
|
|||
if current_state in target_states:
|
||||
return True
|
||||
|
||||
time.sleep(sleep_time_ms)
|
||||
time.sleep(self.one.server_retry_interval())
|
||||
|
||||
self.fail(msg="Wait timeout has expired!")
|
||||
|
||||
|
|
|
@ -27,10 +27,10 @@
|
|||
api_token: "{{ opennebula_password }}"
|
||||
validate_certs: false
|
||||
environment:
|
||||
ONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
ONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
ONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
ONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
with_items: "{{opennebula_test.hosts}}"
|
||||
register: result
|
||||
|
||||
|
@ -47,10 +47,10 @@
|
|||
api_password: "{{ opennebula_password }}"
|
||||
validate_certs: false
|
||||
environment:
|
||||
ONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
ONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
ONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
ONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{item}}"
|
||||
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{item}}"
|
||||
ignore_errors: true
|
||||
register: result
|
||||
with_items:
|
||||
|
@ -77,10 +77,10 @@
|
|||
api_password: "{{ opennebula_password }}"
|
||||
validate_certs: false
|
||||
environment:
|
||||
ONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
ONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
ONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
ONE_TEST_FIXTURE_UNIT: "test_{{test_number}}"
|
||||
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}"
|
||||
register: result
|
||||
|
||||
- name: "assert test_{{test_number}} worked"
|
||||
|
@ -102,10 +102,10 @@
|
|||
api_password: "{{ opennebula_password }}"
|
||||
validate_certs: false
|
||||
environment:
|
||||
ONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
ONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
ONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
ONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
with_items: "{{opennebula_test.hosts}}"
|
||||
register: result
|
||||
|
||||
|
@ -132,10 +132,10 @@
|
|||
- custom
|
||||
TEST_VALUE: 2
|
||||
environment:
|
||||
ONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
ONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
ONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
ONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
with_items: "{{opennebula_test.hosts}}"
|
||||
register: result
|
||||
|
||||
|
@ -162,10 +162,10 @@
|
|||
attributes:
|
||||
TEST_VALUE: "2"
|
||||
environment:
|
||||
ONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
ONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
ONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
ONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
with_items: "{{opennebula_test.hosts}}"
|
||||
register: result
|
||||
|
||||
|
@ -187,10 +187,10 @@
|
|||
api_password: "{{ opennebula_password }}"
|
||||
validate_certs: false
|
||||
environment:
|
||||
ONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
ONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
ONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
ONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
with_items: "{{opennebula_test.hosts}}"
|
||||
register: result
|
||||
|
||||
|
@ -212,10 +212,10 @@
|
|||
api_password: "{{ opennebula_password }}"
|
||||
validate_certs: false
|
||||
environment:
|
||||
ONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
ONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
ONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
ONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
PYONE_TEST_FIXTURE: "{{ opennebula_test_fixture }}"
|
||||
PYONE_TEST_FIXTURE_FILE: /tmp/opennebula-fixtures.json.gz
|
||||
PYONE_TEST_FIXTURE_REPLAY: "{{ opennebula_test_fixture_replay }}"
|
||||
PYONE_TEST_FIXTURE_UNIT: "test_{{test_number}}_{{ item }}"
|
||||
with_items: "{{opennebula_test.hosts}}"
|
||||
register: result
|
||||
|
||||
|
|
Loading…
Reference in a new issue