On Tue, Feb 9, 2021 at 7:24 AM <[email protected]> wrote:
>
> 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/857/
> 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.:

https://jenkins.ovirt.org/job/ovirt-system-tests_standard-check-patch/15458/

Thanks and best regards,

>
> /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 -- [email protected]
> To unsubscribe send an email to [email protected]
> 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/[email protected]/message/ND5KFKIA7BNG7AQPXBXQ2GROEZNRA5SO/



-- 
Didi
_______________________________________________
Devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]
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/[email protected]/message/K3I6RQRUFZHLR3KUGFD2QLXAFLUPVQ2J/

Reply via email to