Project:
https://jenkins.ovirt.org/job/ovirt-system-tests_basic-suite-master_nightly/
Build:
https://jenkins.ovirt.org/job/ovirt-system-tests_basic-suite-master_night...
Build Number: 857
Build Status: Still Failing
Triggered By: Started by timer
-------------------------------------
Changes Since Last Success:
-------------------------------------
Changes for Build #855
[Eitan Raviv] network: remove fqdn from /etc/hosts
Changes for Build #856
[Eitan Raviv] network: remove fqdn from /etc/hosts
Changes for Build #857
[Eitan Raviv] network: remove fqdn from /etc/hosts
-----------------
Failed Tests:
-----------------
1 tests failed.
FAILED:
basic-suite-master.test-scenarios.test_002_bootstrap.test_add_nfs_master_storage_domain
Error Message:
AssertionError: False != True after 600 seconds
Stack Trace:
engine = <ovirtsdk4.services.SystemService object at 0x7fda58b32828>
event_id = [956]
@contextlib.contextmanager
def wait_for_event(engine, event_id):
'''
event_id could either be an int - a single
event ID or a list - multiple event IDs
that all will be checked
'''
events = engine.events_service()
last_event = int(events.list(max=2)[0].id)
try:
> yield
../ost_utils/ost_utils/engine_utils.py:38:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
api = <ovirtsdk4.Connection object at 0x7fda58b32748>
domain = <ovirtsdk4.types.StorageDomain object at 0x7fda58d1fac8>
dc_name = 'test-dc'
def add(api, domain, dc_name):
system_service = api.system_service()
sds_service = system_service.storage_domains_service()
with engine_utils.wait_for_event(system_service, 956): #
USER_ADD_STORAGE_DOMAIN(956)
> sd = sds_service.add(domain)
../ost_utils/ost_utils/storage_utils/domain.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <ovirtsdk4.services.StorageDomainsService object at 0x7fda57ca4f60>
storage_domain = <ovirtsdk4.types.StorageDomain object at 0x7fda58d1fac8>
headers = None, query = {}, wait = True, kwargs = {}
def add(
self,
storage_domain,
headers=None,
query=None,
wait=True,
**kwargs
):
"""
Adds a new storage domain.
Creation of a new <<types/storage_domain,StorageDomain>> requires the
`name`, `type`, `host`, and `storage`
attributes. Identify the `host` attribute with the `id` or `name` attributes. In
{product-name} 3.6 and
later you can enable the wipe after delete option by default on the storage
domain. To configure this, specify
`wipe_after_delete` in the POST request. This option can be edited after the
domain is created, but doing so will
not change the wipe after delete property of disks that already exist.
To add a new storage domain with specified `name`, `type`, `storage.type`,
`storage.address`, and `storage.path`,
and using a host with an id `123`, send a request like this:
[source]
----
POST /ovirt-engine/api/storageDomains
----
With a request body like this:
[source,xml]
----
<storage_domain>
<name>mydata</name>
<type>data</type>
<storage>
<type>nfs</type>
<address>mynfs.example.com</address>
<path>/exports/mydata</path>
</storage>
<host>
<name>myhost</name>
</host>
</storage_domain>
----
To create a new NFS ISO storage domain send a request like this:
[source,xml]
----
<storage_domain>
<name>myisos</name>
<type>iso</type>
<storage>
<type>nfs</type>
<address>mynfs.example.com</address>
<path>/export/myisos</path>
</storage>
<host>
<name>myhost</name>
</host>
</storage_domain>
----
To create a new iSCSI storage domain send a request like this:
[source,xml]
----
<storage_domain>
<name>myiscsi</name>
<type>data</type>
<storage>
<type>iscsi</type>
<logical_units>
<logical_unit id="3600144f09dbd050000004eedbd340001"/>
<logical_unit id="3600144f09dbd050000004eedbd340002"/>
</logical_units>
</storage>
<host>
<name>myhost</name>
</host>
</storage_domain>
----
This method supports the following parameters:
`storage_domain`:: The storage domain to add.
`headers`:: Additional HTTP headers.
`query`:: Additional URL query parameters.
`wait`:: If `True` wait for the response.
"""
# Check the types of the parameters:
Service._check_types([
('storage_domain', storage_domain, types.StorageDomain),
])
# Build the URL:
query = query or {}
# Send the request and wait for the response:
> return self._internal_add(storage_domain, headers, query, wait)
/usr/lib64/python3.6/site-packages/ovirtsdk4/services.py:26182:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <ovirtsdk4.services.StorageDomainsService object at 0x7fda57ca4f60>
object = <ovirtsdk4.types.StorageDomain object at 0x7fda58d1fac8>, headers = {}
query = {}, wait = True
def _internal_add(self, object, headers=None, query=None, wait=None):
"""
Executes an `add` method.
"""
# Populate the headers:
headers = headers or {}
# Send the request and wait for the response:
request = http.Request(method='POST', path=self._path, query=query,
headers=headers)
request.body = writer.Writer.write(object, indent=True)
context = self._connection.send(request)
def callback(response):
if response.code in [200, 201, 202]:
return self._internal_read_body(response)
else:
self._check_fault(response)
future = Future(self._connection, context, callback)
> return future.wait() if wait else future
/usr/lib64/python3.6/site-packages/ovirtsdk4/service.py:232:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <ovirtsdk4.service.Future object at 0x7fda57ca49b0>
def wait(self):
"""
Waits till the result of the operation that created this future is
available.
"""
response = self._connection.wait(self._context)
> return self._code(response)
/usr/lib64/python3.6/site-packages/ovirtsdk4/service.py:55:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
response = <ovirtsdk4.http.Response object at 0x7fda57ca4f98>
def callback(response):
if response.code in [200, 201, 202]:
return self._internal_read_body(response)
else:
> self._check_fault(response)
/usr/lib64/python3.6/site-packages/ovirtsdk4/service.py:229:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <ovirtsdk4.services.StorageDomainsService object at 0x7fda57ca4f60>
response = <ovirtsdk4.http.Response object at 0x7fda57ca4f98>
def _check_fault(self, response):
"""
Reads the response body assuming that it contains a fault message,
converts it to an exception and raises it.
This method is intended for internal use by other
components of the SDK. Refrain from using it directly,
as backwards compatibility isn't guaranteed.
"""
body = self._internal_read_body(response)
if isinstance(body, types.Fault):
> self._raise_error(response, body)
/usr/lib64/python3.6/site-packages/ovirtsdk4/service.py:132:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
response = <ovirtsdk4.http.Response object at 0x7fda57ca4f98>
detail = <ovirtsdk4.types.Fault object at 0x7fda57ca44e0>
@staticmethod
def _raise_error(response, detail=None):
"""
Creates and raises an error containing the details of the given HTTP
response and fault.
This method is intended for internal use by other components of the
SDK. Refrain from using it directly, as backwards compatibility isn't
guaranteed.
"""
fault = detail if isinstance(detail, types.Fault) else None
msg = ''
if fault:
if fault.reason:
if msg:
msg += ' '
msg = msg + 'Fault reason is "%s".' % fault.reason
if fault.detail:
if msg:
msg += ' '
msg = msg + 'Fault detail is "%s".' % fault.detail
if response:
if response.code:
if msg:
msg += ' '
msg = msg + 'HTTP response code is %s.' % response.code
if response.message:
if msg:
msg += ' '
msg = msg + 'HTTP response message is "%s".' %
response.message
if isinstance(detail, six.string_types):
if msg:
msg += ' '
msg = msg + detail + '.'
class_ = Error
if response is not None:
if response.code in [401, 403]:
class_ = AuthError
elif response.code == 404:
class_ = NotFoundError
error = class_(msg)
error.code = response.code if response else None
error.fault = fault
> raise error
E ovirtsdk4.Error: Fault reason is "Operation Failed". Fault detail is
"[Network error during communication with the Host.]". HTTP response code is
400.
Did anyone check this?
It started failing yesterday. Also for me, e.g.:
/usr/lib64/python3.6/site-packages/ovirtsdk4/service.py:118: Error
During handling of the above exception, another exception occurred:
engine_api = <ovirtsdk4.Connection object at 0x7fda58b32748>
sd_nfs_host_storage_ip = '192.168.202.2'
@order_by(_TEST_LIST)
@pytest.mark.skipif(MASTER_SD_TYPE != 'nfs', reason='not using nfs')
def test_add_nfs_master_storage_domain(engine_api, sd_nfs_host_storage_ip):
> add_nfs_storage_domain(engine_api, sd_nfs_host_storage_ip)
../basic-suite-master/test-scenarios/test_002_bootstrap.py:545:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
../basic-suite-master/test-scenarios/test_002_bootstrap.py:554: in
add_nfs_storage_domain
nfs_version='v4_2')
../ost_utils/ost_utils/storage_utils/nfs.py:62: in add_domain
domain.add(engine_api, p, dc_name)
../ost_utils/ost_utils/storage_utils/domain.py:37: in add
lambda: sd_service.get().status == sdk4.types.StorageDomainStatus.UNATTACHED
/usr/lib64/python3.6/contextlib.py:99: in __exit__
self.gen.throw(type, value, traceback)
../ost_utils/ost_utils/engine_utils.py:44: in wait_for_event
lambda:
../ost_utils/ost_utils/assertions.py:98: in assert_true_within_long
assert_equals_within_long(func, True, allowed_exceptions)
../ost_utils/ost_utils/assertions.py:83: in assert_equals_within_long
func, value, LONG_TIMEOUT, allowed_exceptions=allowed_exceptions
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
func = <function wait_for_event.<locals>.<lambda> at 0x7fda57c9c2f0>
value = True, timeout = 600, allowed_exceptions = [], initial_wait = 0
error_message = 'False != True after 600 seconds'
def assert_equals_within(
func, value, timeout, allowed_exceptions=None, initial_wait=10,
error_message=None
):
allowed_exceptions = allowed_exceptions or []
res = '<no-result-obtained>'
with _EggTimer(timeout) as timer:
while not timer.elapsed():
try:
res = func()
if res == value:
return
except Exception as exc:
if _instance_of_any(exc, allowed_exceptions):
time.sleep(3)
continue
LOGGER.exception("Unhandled exception in %s", func)
raise
if initial_wait == 0:
time.sleep(3)
else:
time.sleep(initial_wait)
initial_wait = 0
try:
if error_message is None:
error_message = '%s != %s after %s seconds' % (res, value,
timeout)
> raise AssertionError(error_message)
E AssertionError: False != True after 600 seconds
../ost_utils/ost_utils/assertions.py:61:
AssertionError_______________________________________________
Infra mailing list -- infra(a)ovirt.org
To unsubscribe send an email to infra-leave(a)ovirt.org
Privacy Statement:
https://www.ovirt.org/privacy-policy.html
oVirt Code of Conduct:
https://www.ovirt.org/community/about/community-guidelines/
List Archives:
https://lists.ovirt.org/archives/list/infra@ovirt.org/message/ND5KFKIA7BN...