[oVirt Jenkins] ovirt-system-tests_basic-suite-master_nightly - Build # 855 - Failure!

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: 855 Build Status: Failure Triggered By: Started by timer ------------------------------------- Changes Since Last Success: ------------------------------------- Changes for Build #855 [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 0x7f99e79d9240> 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 0x7f99e79d9470> domain = <ovirtsdk4.types.StorageDomain object at 0x7f99e692cda0> 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 0x7f99e692ca20> storage_domain = <ovirtsdk4.types.StorageDomain object at 0x7f99e692cda0> 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 0x7f99e692ca20> object = <ovirtsdk4.types.StorageDomain object at 0x7f99e692cda0>, 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 0x7f99e692ceb8> 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 0x7f99e692c4a8> 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 0x7f99e692ca20> response = <ovirtsdk4.http.Response object at 0x7f99e692c4a8> 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 0x7f99e692c4a8> detail = <ovirtsdk4.types.Fault object at 0x7f99e692c4e0> @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. /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 0x7f99e79d9470> 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 0x7f99e6924d90> 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

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: 856 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 ----------------- 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 0x7f8fe52b6eb8> 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 0x7f8fe52b6748> domain = <ovirtsdk4.types.StorageDomain object at 0x7f8fe4297390> 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 0x7f8fe4297eb8> storage_domain = <ovirtsdk4.types.StorageDomain object at 0x7f8fe4297390> 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:26167: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <ovirtsdk4.services.StorageDomainsService object at 0x7f8fe4297eb8> object = <ovirtsdk4.types.StorageDomain object at 0x7f8fe4297390>, 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 0x7f8fe428dfd0> 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 0x7f8fe428df28> 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 0x7f8fe4297eb8> response = <ovirtsdk4.http.Response object at 0x7f8fe428df28> 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 0x7f8fe428df28> detail = <ovirtsdk4.types.Fault object at 0x7f8fe428d4e0> @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. /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 0x7f8fe52b6748> 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 0x7f8fe430c620> 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

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: 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. /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

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: 858 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 Changes for Build #858 [Yedidyah Bar David] test_utils/host_status_utils: Make dc_name parametric [Galit Rosenthal] Add node upgrade suite [Ehud Yonasi] run_code: add gpg keys only for el8. [Ehud Yonasi] run_code: fixed check for el8. [Galit Rosenthal] Move ansible nightly to run on el8 ----------------- Failed Tests: ----------------- 1 tests failed. FAILED: basic-suite-master.test-scenarios.test_002_bootstrap.test_verify_add_hosts Error Message: RuntimeError: 1 hosts failed installation: lago-basic-suite-master-host-0: reboot Stack Trace: engine_api = <ovirtsdk4.Connection object at 0x7f8ad6be6c18> @order_by(_TEST_LIST) def test_verify_add_hosts(engine_api): hosts_service = engine_api.system_service().hosts_service() hosts_status = hosts_service.list(search='datacenter={}'.format(DC_NAME)) total_hosts = len(hosts_status) dump_hosts = _host_status_to_print(hosts_service, hosts_status) LOGGER.debug('Host status, verify_add_hosts:\n {}'.format(dump_hosts)) assertions.assert_true_within( lambda: _single_host_up(hosts_service, total_hosts),
timeout=constants.ADD_HOST_TIMEOUT
) ../basic-suite-master/test-scenarios/test_002_bootstrap.py:460: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../ost_utils/ost_utils/assertions.py:88: in assert_true_within assert_equals_within(func, True, timeout, allowed_exceptions) ../ost_utils/ost_utils/assertions.py:42: in assert_equals_within res = func() ../basic-suite-master/test-scenarios/test_002_bootstrap.py:459: in <lambda> lambda: _single_host_up(hosts_service, total_hosts), ../basic-suite-master/test-scenarios/test_002_bootstrap.py:231: in _single_host_up _check_problematic_hosts(hosts_service) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hosts_service = <ovirtsdk4.services.HostsService object at 0x7f8ad5caf780> def _check_problematic_hosts(hosts_service): problematic_hosts = hosts_service.list(search='datacenter={} AND status != installing and status != initializing and status != up'.format(DC_NAME)) if len(problematic_hosts): dump_hosts = '%s hosts failed installation:\n' % len(problematic_hosts) for host in problematic_hosts: host_service = hosts_service.host_service(host.id) dump_hosts += '%s: %s\n' % (host.name, host_service.get().status)
raise RuntimeError(dump_hosts)
E RuntimeError: 1 hosts failed installation: E lago-basic-suite-master-host-0: reboot ../basic-suite-master/test-scenarios/test_002_bootstrap.py:240: RuntimeError

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: 859 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 Changes for Build #858 [Yedidyah Bar David] test_utils/host_status_utils: Make dc_name parametric [Galit Rosenthal] Add node upgrade suite [Ehud Yonasi] run_code: add gpg keys only for el8. [Ehud Yonasi] run_code: fixed check for el8. [Galit Rosenthal] Move ansible nightly to run on el8 Changes for Build #859 [Yedidyah Bar David] test_utils/host_status_utils: Make dc_name parametric ----------------- Failed Tests: ----------------- 1 tests failed. FAILED: basic-suite-master.test-scenarios.test_002_bootstrap.test_verify_add_hosts Error Message: RuntimeError: 1 hosts failed installation: lago-basic-suite-master-host-1: reboot Stack Trace: engine_api = <ovirtsdk4.Connection object at 0x7f1de823bd30> @order_by(_TEST_LIST) def test_verify_add_hosts(engine_api): hosts_service = engine_api.system_service().hosts_service() hosts_status = hosts_service.list(search='datacenter={}'.format(DC_NAME)) total_hosts = len(hosts_status) dump_hosts = _host_status_to_print(hosts_service, hosts_status) LOGGER.debug('Host status, verify_add_hosts:\n {}'.format(dump_hosts)) assertions.assert_true_within( lambda: _single_host_up(hosts_service, total_hosts),
timeout=constants.ADD_HOST_TIMEOUT
) ../basic-suite-master/test-scenarios/test_002_bootstrap.py:460: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../ost_utils/ost_utils/assertions.py:88: in assert_true_within assert_equals_within(func, True, timeout, allowed_exceptions) ../ost_utils/ost_utils/assertions.py:42: in assert_equals_within res = func() ../basic-suite-master/test-scenarios/test_002_bootstrap.py:459: in <lambda> lambda: _single_host_up(hosts_service, total_hosts), ../basic-suite-master/test-scenarios/test_002_bootstrap.py:231: in _single_host_up _check_problematic_hosts(hosts_service) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hosts_service = <ovirtsdk4.services.HostsService object at 0x7f1de7189748> def _check_problematic_hosts(hosts_service): problematic_hosts = hosts_service.list(search='datacenter={} AND status != installing and status != initializing and status != up'.format(DC_NAME)) if len(problematic_hosts): dump_hosts = '%s hosts failed installation:\n' % len(problematic_hosts) for host in problematic_hosts: host_service = hosts_service.host_service(host.id) dump_hosts += '%s: %s\n' % (host.name, host_service.get().status)
raise RuntimeError(dump_hosts)
E RuntimeError: 1 hosts failed installation: E lago-basic-suite-master-host-1: reboot ../basic-suite-master/test-scenarios/test_002_bootstrap.py:240: RuntimeError

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: 860 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 Changes for Build #858 [Yedidyah Bar David] test_utils/host_status_utils: Make dc_name parametric [Galit Rosenthal] Add node upgrade suite [Ehud Yonasi] run_code: add gpg keys only for el8. [Ehud Yonasi] run_code: fixed check for el8. [Galit Rosenthal] Move ansible nightly to run on el8 Changes for Build #859 [Yedidyah Bar David] test_utils/host_status_utils: Make dc_name parametric Changes for Build #860 [Yedidyah Bar David] test_utils/host_status_utils: Make dc_name parametric ----------------- Failed Tests: ----------------- 1 tests failed. FAILED: basic-suite-master.test-scenarios.test_002_bootstrap.test_verify_add_hosts Error Message: RuntimeError: 2 hosts failed installation: lago-basic-suite-master-host-0: reboot lago-basic-suite-master-host-1: reboot Stack Trace: engine_api = <ovirtsdk4.Connection object at 0x7f7c7f93bda0> @order_by(_TEST_LIST) def test_verify_add_hosts(engine_api): hosts_service = engine_api.system_service().hosts_service() hosts_status = hosts_service.list(search='datacenter={}'.format(DC_NAME)) total_hosts = len(hosts_status) dump_hosts = _host_status_to_print(hosts_service, hosts_status) LOGGER.debug('Host status, verify_add_hosts:\n {}'.format(dump_hosts)) assertions.assert_true_within( lambda: _single_host_up(hosts_service, total_hosts),
timeout=constants.ADD_HOST_TIMEOUT
) ../basic-suite-master/test-scenarios/test_002_bootstrap.py:460: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../ost_utils/ost_utils/assertions.py:88: in assert_true_within assert_equals_within(func, True, timeout, allowed_exceptions) ../ost_utils/ost_utils/assertions.py:42: in assert_equals_within res = func() ../basic-suite-master/test-scenarios/test_002_bootstrap.py:459: in <lambda> lambda: _single_host_up(hosts_service, total_hosts), ../basic-suite-master/test-scenarios/test_002_bootstrap.py:231: in _single_host_up _check_problematic_hosts(hosts_service) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ hosts_service = <ovirtsdk4.services.HostsService object at 0x7f7c7e8cc5c0> def _check_problematic_hosts(hosts_service): problematic_hosts = hosts_service.list(search='datacenter={} AND status != installing and status != initializing and status != up'.format(DC_NAME)) if len(problematic_hosts): dump_hosts = '%s hosts failed installation:\n' % len(problematic_hosts) for host in problematic_hosts: host_service = hosts_service.host_service(host.id) dump_hosts += '%s: %s\n' % (host.name, host_service.get().status)
raise RuntimeError(dump_hosts)
E RuntimeError: 2 hosts failed installation: E lago-basic-suite-master-host-0: reboot E lago-basic-suite-master-host-1: reboot ../basic-suite-master/test-scenarios/test_002_bootstrap.py:240: RuntimeError

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: 861 Build Status: Fixed 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 Changes for Build #858 [Yedidyah Bar David] test_utils/host_status_utils: Make dc_name parametric [Galit Rosenthal] Add node upgrade suite [Ehud Yonasi] run_code: add gpg keys only for el8. [Ehud Yonasi] run_code: fixed check for el8. [Galit Rosenthal] Move ansible nightly to run on el8 Changes for Build #859 [Yedidyah Bar David] test_utils/host_status_utils: Make dc_name parametric Changes for Build #860 [Yedidyah Bar David] test_utils/host_status_utils: Make dc_name parametric Changes for Build #861 [Marcin Sobczyk] basic: Reboot only one of the hosts [Galit Rosenthal] function inject_repos not all local variables were declared ----------------- Failed Tests: ----------------- All tests passed
participants (1)
-
jenkins@jenkins.phx.ovirt.org