
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_nightly/... Build Number: 662 Build Status: Still Failing Triggered By: Started by timer ------------------------------------- Changes Since Last Success: ------------------------------------- Changes for Build #650 [Eitan Raviv] network: host de/activate - add retry Changes for Build #651 [Eitan Raviv] network: host de/activate - add retry Changes for Build #652 [Eitan Raviv] network: host de/activate - add retry Changes for Build #653 [Andrej Cernek] he: Port '012_local_maintenance_sdk' to pytest and ansible Changes for Build #654 [Andrej Cernek] he: Port '012_local_maintenance_sdk' to pytest and ansible Changes for Build #655 [Andrej Cernek] he: Port '012_local_maintenance_sdk' to pytest and ansible Changes for Build #656 [Andrej Cernek] he: Port '012_local_maintenance_sdk' to pytest and ansible Changes for Build #657 [Andrej Cernek] he: Port '012_local_maintenance_sdk' to pytest and ansible Changes for Build #658 [Andrej Cernek] he: Port '012_local_maintenance_sdk' to pytest and ansible Changes for Build #659 [Steven Rosenberg] basic: export/import OVA Template Changes for Build #660 [Steven Rosenberg] basic: export/import OVA Template [Romain Arnaud] Add get_repo_root() to stdci_libs/git_utils [Evgheni Dereveanchin] Remove FC29 and FC30 Changes for Build #661 [Steven Rosenberg] basic: export/import OVA Template Changes for Build #662 [Steven Rosenberg] basic: export/import OVA Template ----------------- Failed Tests: ----------------- 1 tests failed. FAILED: basic-suite-master.test-scenarios.test_004_basic_sanity.test_sparsify_disk1 Error Message: AssertionError: False != True after 600 seconds Stack Trace: engine = <ovirtsdk4.services.SystemService object at 0x7f5048720dd8> event_id = [1325] @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: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ engine_api = <ovirtsdk4.Connection object at 0x7f5048720ba8> @order_by(_TEST_LIST) def test_sparsify_disk1(engine_api): engine = engine_api.system_service() disk_service = test_utils.get_disk_service(engine, DISK1_NAME) with engine_utils.wait_for_event(engine, 1325): # USER_SPARSIFY_IMAGE_START event
disk_service.sparsify()
../basic-suite-master/test-scenarios/test_004_basic_sanity.py:385: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <ovirtsdk4.services.DiskService object at 0x7f5048720320>, headers = None query = None, wait = True, kwargs = {} action = <ovirtsdk4.types.Action object at 0x7f50486cc320> def sparsify( self, headers=None, query=None, wait=True, **kwargs ): """ Sparsify the disk. Sparsification frees space in the disk image that is not used by its filesystem. As a result, the image will occupy less space on the storage. Currently sparsification works only on disks without snapshots. Disks having derived disks are also not allowed. """ # Check the types of the parameters: Service._check_types([ ]) # Populate the action: action = types.Action( ) # Send the request and wait for the response:
return self._internal_action(action, 'sparsify', None, headers, query, wait)
/usr/lib64/python3.6/site-packages/ovirtsdk4/services.py:38823: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <ovirtsdk4.services.DiskService object at 0x7f5048720320> action = <ovirtsdk4.types.Action object at 0x7f50486cc320>, path = 'sparsify' member = None, headers = {}, query = None, wait = True def _internal_action(self, action, path, member=None, headers=None, query=None, wait=None): """ Executes an action method. """ # Populate the headers: headers = headers or {} # Send the request and wait for the response: request = http.Request( method='POST', path='%s/%s' % (self._path, path), query=query, headers=headers, ) request.body = writer.Writer.write(action, indent=True) context = self._connection.send(request) def callback(response): if response.code in [200, 201, 202]: result = self._check_action(response) if member: return getattr(result, member) 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:299: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <ovirtsdk4.service.Future object at 0x7f50486cc7b8> 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 0x7f50486cc3c8> def callback(response): if response.code in [200, 201, 202]: result = self._check_action(response) if member: return getattr(result, member) else:
self._check_fault(response)
/usr/lib64/python3.6/site-packages/ovirtsdk4/service.py:296: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <ovirtsdk4.services.DiskService object at 0x7f5048720320> response = <ovirtsdk4.http.Response object at 0x7f50486cc3c8> 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) elif isinstance(body, types.Action) and body.fault:
self._raise_error(response, body.fault)
/usr/lib64/python3.6/site-packages/ovirtsdk4/service.py:134: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ response = <ovirtsdk4.http.Response object at 0x7f50486cc3c8> detail = <ovirtsdk4.types.Fault object at 0x7f50486cc748> @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 "[Cannot sparsify Virtual Disk. Sparsifying is not supported for QCOW2 disk vm1_disk1.]". HTTP response code is 400. /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 0x7f5048720ba8> @order_by(_TEST_LIST) def test_sparsify_disk1(engine_api): engine = engine_api.system_service() disk_service = test_utils.get_disk_service(engine, DISK1_NAME) with engine_utils.wait_for_event(engine, 1325): # USER_SPARSIFY_IMAGE_START event
disk_service.sparsify()
../basic-suite-master/test-scenarios/test_004_basic_sanity.py:385: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /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 0x7f5048ff1158> 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