[Python-modules-team] Bug#973079: python-msrestazure: FTBFS: dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.9 3.8" returned exit code 13

Lucas Nussbaum lucas at debian.org
Tue Oct 27 17:11:27 GMT 2020


Source: python-msrestazure
Version: 0.6.2-1
Severity: serious
Justification: FTBFS on amd64
Tags: bullseye sid ftbfs
Usertags: ftbfs-20201027 ftbfs-bullseye

Hi,

During a rebuild of all packages in sid, your package failed to build
on amd64.

Relevant part (hopefully):
> dpkg-buildpackage
> -----------------
> 
> Command: dpkg-buildpackage -us -uc -sa -rfakeroot
> dpkg-buildpackage: info: source package python-msrestazure
> dpkg-buildpackage: info: source version 0.6.2-1
> dpkg-buildpackage: info: source distribution unstable
> dpkg-buildpackage: info: source changed by Nicolas Dandrimont <olasd at debian.org>
>  dpkg-source --before-build .
> dpkg-buildpackage: info: host architecture amd64
>  debian/rules clean
> dh clean --with python3 --buildsystem=pybuild
>    dh_auto_clean -O--buildsystem=pybuild
> I: pybuild base:217: python3.9 setup.py clean 
> running clean
> removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build' (and everything under it)
> 'build/bdist.linux-x86_64' does not exist -- can't clean it
> 'build/scripts-3.9' does not exist -- can't clean it
> I: pybuild base:217: python3.8 setup.py clean 
> running clean
> removing '/<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build' (and everything under it)
> 'build/bdist.linux-x86_64' does not exist -- can't clean it
> 'build/scripts-3.8' does not exist -- can't clean it
>    dh_autoreconf_clean -O--buildsystem=pybuild
>    dh_clean -O--buildsystem=pybuild
>  dpkg-source -b .
> dpkg-source: info: using source format '3.0 (quilt)'
> dpkg-source: info: building python-msrestazure using existing ./python-msrestazure_0.6.2.orig.tar.gz
> dpkg-source: info: building python-msrestazure in python-msrestazure_0.6.2-1.debian.tar.xz
> dpkg-source: info: building python-msrestazure in python-msrestazure_0.6.2-1.dsc
>  debian/rules binary
> dh binary --with python3 --buildsystem=pybuild
>    dh_update_autotools_config -O--buildsystem=pybuild
>    dh_autoreconf -O--buildsystem=pybuild
>    dh_auto_configure -O--buildsystem=pybuild
> I: pybuild base:217: python3.9 setup.py config 
> running config
> I: pybuild base:217: python3.8 setup.py config 
> running config
>    dh_auto_build -O--buildsystem=pybuild
> I: pybuild base:217: /usr/bin/python3.9 setup.py build 
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure
> copying msrestazure/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure
> copying msrestazure/azure_operation.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure
> copying msrestazure/azure_cloud.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure
> copying msrestazure/version.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure
> copying msrestazure/azure_exceptions.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure
> copying msrestazure/azure_active_directory.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure
> copying msrestazure/tools.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure
> copying msrestazure/azure_configuration.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure/polling
> copying msrestazure/polling/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure/polling
> copying msrestazure/polling/async_arm_polling.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure/polling
> copying msrestazure/polling/arm_polling.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure/polling
> I: pybuild base:217: /usr/bin/python3 setup.py build 
> running build
> running build_py
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure
> copying msrestazure/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure
> copying msrestazure/azure_operation.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure
> copying msrestazure/azure_cloud.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure
> copying msrestazure/version.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure
> copying msrestazure/azure_exceptions.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure
> copying msrestazure/azure_active_directory.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure
> copying msrestazure/tools.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure
> copying msrestazure/azure_configuration.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure
> creating /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure/polling
> copying msrestazure/polling/__init__.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure/polling
> copying msrestazure/polling/async_arm_polling.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure/polling
> copying msrestazure/polling/arm_polling.py -> /<<PKGBUILDDIR>>/.pybuild/cpython3_3.8_msrestazure/build/msrestazure/polling
>    dh_auto_test -O--buildsystem=pybuild
> I: pybuild pybuild:284: cp -r /<<PKGBUILDDIR>>/tests /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build
> I: pybuild base:217: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build; python3.9 -m pytest -k 'not slow'
> ============================= test session starts ==============================
> platform linux -- Python 3.9.0+, pytest-4.6.11, py-1.9.0, pluggy-0.13.0
> rootdir: /<<PKGBUILDDIR>>
> plugins: asyncio-0.14.0
> collected 40 items / 5 deselected / 35 selected
> 
> tests/test_arm_polling.py .....                                          [ 14%]
> tests/test_auth.py ..FFFFFsF...                                          [ 48%]
> tests/test_cloud.py F                                                    [ 51%]
> tests/test_configuration.py .                                            [ 54%]
> tests/test_exceptions.py ..                                              [ 60%]
> tests/test_operation.py .....                                            [ 74%]
> tests/test_tools.py .FF.                                                 [ 85%]
> tests/asynctests/test_async_arm_polling.py .....                         [100%]
> 
> =================================== FAILURES ===================================
> _________________ TestServicePrincipalCredentials.test_msi_vm __________________
> 
> self = <tests.test_auth.TestServicePrincipalCredentials testMethod=test_msi_vm>
> 
>     @httpretty.activate
>     def test_msi_vm(self):
>     
>         # Test legacy MSI, with no MSI_ENDPOINT
>     
>         json_payload = {
>             'token_type': "TokenType",
>             "access_token": "AccessToken"
>         }
>         httpretty.register_uri(httpretty.POST,
>                                'http://localhost:666/oauth2/token',
>                                body=json.dumps(json_payload),
>                                content_type="application/json")
>     
> >       token_type, access_token, token_entry = get_msi_token("whatever", port=666)
> 
> tests/test_auth.py:431: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> msrestazure/azure_active_directory.py:484: in get_msi_token
>     result = requests.post(request_uri, data=payload, headers={'Metadata': 'true'})
> /usr/lib/python3/dist-packages/requests/api.py:119: in post
>     return request('post', url, data=data, json=json, **kwargs)
> /usr/lib/python3/dist-packages/requests/api.py:61: in request
>     return session.request(method=method, url=url, **kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:530: in request
>     resp = self.send(prep, **send_kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:643: in send
>     r = adapter.send(request, **kwargs)
> /usr/lib/python3/dist-packages/requests/adapters.py:439: in send
>     resp = conn.urlopen(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:670: in urlopen
>     httplib_response = self._make_request(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:426: in _make_request
>     six.raise_from(e, None)
> <string>:3: in raise_from
>     ???
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:421: in _make_request
>     httplib_response = conn.getresponse()
> /usr/lib/python3.9/http/client.py:1343: in getresponse
>     response = self.response_class(self.sock, method=self._method)
> /usr/lib/python3.9/http/client.py:245: in __init__
>     self.fp = sock.makefile("rb")
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <httpretty.core.fakesock.socket object at 0x7f8dbcb7b550>, mode = 'rb'
> bufsize = -1
> 
>     def makefile(self, mode='r', bufsize=-1):
>         """Returns this fake socket's own tempfile buffer.
>     
>         If there is an entry associated with the socket, the file
>         descriptor gets filled in with the entry data before being
>         returned.
>         """
>         self._mode = mode
>         self._bufsize = bufsize
>     
>         if self._entry:
>             t = threading.Thread(
>                 target=self._entry.fill_filekind, args=(self.fd,)
>             )
>             t.start()
>             if self.timeout == socket._GLOBAL_DEFAULT_TIMEOUT:
>                 timeout = None
>             else:
>                 timeout = self.timeout
>             t.join(timeout)
> >           if t.isAlive():
> E           AttributeError: 'Thread' object has no attribute 'isAlive'
> 
> /usr/lib/python3/dist-packages/httpretty/core.py:438: AttributeError
> ------------------------------ Captured log call -------------------------------
> WARNING  msrestazure.azure_active_directory:azure_active_directory.py:488 MSI: Failed to retrieve a token from 'http://localhost:666/oauth2/token' with an error of ''Thread' object has no attribute 'isAlive''. This could be caused by the MSI extension not yet fully provisioned.
> ____ TestServicePrincipalCredentials.test_msi_vm_imds_no_retry_on_bad_error ____
> 
> self = <tests.test_auth.TestServicePrincipalCredentials testMethod=test_msi_vm_imds_no_retry_on_bad_error>
> 
>     @httpretty.activate
>     def test_msi_vm_imds_no_retry_on_bad_error(self):
>         """Check that 499 throws immediatly."""
>         httpretty.register_uri(httpretty.GET,
>                                'http://169.254.169.254/metadata/identity/oauth2/token',
>                                status=499)
>         with self.assertRaises(HTTPError):
> >           MSIAuthentication()
> 
> tests/test_auth.py:568: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> msrestazure/azure_active_directory.py:592: in __init__
>     self.set_token()
> msrestazure/azure_active_directory.py:600: in set_token
>     token_entry = self._vm_msi.get_token(self.resource)
> msrestazure/azure_active_directory.py:649: in get_token
>     token_entry = self._retrieve_token_from_imds_with_retry(resource)
> msrestazure/azure_active_directory.py:685: in _retrieve_token_from_imds_with_retry
>     result = requests.get(request_uri, params=payload, headers={'Metadata': 'true', 'User-Agent':self._user_agent})
> /usr/lib/python3/dist-packages/requests/api.py:76: in get
>     return request('get', url, params=params, **kwargs)
> /usr/lib/python3/dist-packages/requests/api.py:61: in request
>     return session.request(method=method, url=url, **kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:530: in request
>     resp = self.send(prep, **send_kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:643: in send
>     r = adapter.send(request, **kwargs)
> /usr/lib/python3/dist-packages/requests/adapters.py:439: in send
>     resp = conn.urlopen(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:670: in urlopen
>     httplib_response = self._make_request(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:426: in _make_request
>     six.raise_from(e, None)
> <string>:3: in raise_from
>     ???
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:421: in _make_request
>     httplib_response = conn.getresponse()
> /usr/lib/python3.9/http/client.py:1343: in getresponse
>     response = self.response_class(self.sock, method=self._method)
> /usr/lib/python3.9/http/client.py:245: in __init__
>     self.fp = sock.makefile("rb")
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
>     def makefile(self, mode='r', bufsize=-1):
>         """Returns this fake socket's own tempfile buffer.
>     
>         If there is an entry associated with the socket, the file
>         descriptor gets filled in with the entry data before being
>         returned.
>         """
>         self._mode = mode
>         self._bufsize = bufsize
>     
>         if self._entry:
>             t = threading.Thread(
>                 target=self._entry.fill_filekind, args=(self.fd,)
>             )
>             t.start()
>             if self.timeout == socket._GLOBAL_DEFAULT_TIMEOUT:
>                 timeout = None
>             else:
>                 timeout = self.timeout
>             t.join(timeout)
> >           if t.isAlive():
> E           AttributeError: 'Thread' object has no attribute 'isAlive'
> 
> /usr/lib/python3/dist-packages/httpretty/core.py:438: AttributeError
> ____________ TestServicePrincipalCredentials.test_msi_vm_imds_retry ____________
> 
> self = <tests.test_auth.TestServicePrincipalCredentials testMethod=test_msi_vm_imds_retry>
> 
>     @httpretty.activate
>     def test_msi_vm_imds_retry(self):
>         json_payload = {
>             'token_type': "TokenTypeIMDS",
>             "access_token": "AccessToken"
>         }
>         httpretty.register_uri(httpretty.GET,
>                                'http://169.254.169.254/metadata/identity/oauth2/token',
>                                responses=[
>                                    httpretty.Response('', status=404),
>                                    httpretty.Response('', status=429),
>                                    httpretty.Response('', status=599),
>                                    httpretty.Response(body=json.dumps(json_payload)),
>                                ],
>                                content_type="application/json")
>     
> >       credentials = MSIAuthentication()
> 
> tests/test_auth.py:553: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> msrestazure/azure_active_directory.py:592: in __init__
>     self.set_token()
> msrestazure/azure_active_directory.py:600: in set_token
>     token_entry = self._vm_msi.get_token(self.resource)
> msrestazure/azure_active_directory.py:649: in get_token
>     token_entry = self._retrieve_token_from_imds_with_retry(resource)
> msrestazure/azure_active_directory.py:685: in _retrieve_token_from_imds_with_retry
>     result = requests.get(request_uri, params=payload, headers={'Metadata': 'true', 'User-Agent':self._user_agent})
> /usr/lib/python3/dist-packages/requests/api.py:76: in get
>     return request('get', url, params=params, **kwargs)
> /usr/lib/python3/dist-packages/requests/api.py:61: in request
>     return session.request(method=method, url=url, **kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:530: in request
>     resp = self.send(prep, **send_kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:643: in send
>     r = adapter.send(request, **kwargs)
> /usr/lib/python3/dist-packages/requests/adapters.py:439: in send
>     resp = conn.urlopen(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:670: in urlopen
>     httplib_response = self._make_request(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:426: in _make_request
>     six.raise_from(e, None)
> <string>:3: in raise_from
>     ???
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:421: in _make_request
>     httplib_response = conn.getresponse()
> /usr/lib/python3.9/http/client.py:1343: in getresponse
>     response = self.response_class(self.sock, method=self._method)
> /usr/lib/python3.9/http/client.py:245: in __init__
>     self.fp = sock.makefile("rb")
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <httpretty.core.fakesock.socket object at 0x7f8dbd51ddc0>, mode = 'rb'
> bufsize = -1
> 
>     def makefile(self, mode='r', bufsize=-1):
>         """Returns this fake socket's own tempfile buffer.
>     
>         If there is an entry associated with the socket, the file
>         descriptor gets filled in with the entry data before being
>         returned.
>         """
>         self._mode = mode
>         self._bufsize = bufsize
>     
>         if self._entry:
>             t = threading.Thread(
>                 target=self._entry.fill_filekind, args=(self.fd,)
>             )
>             t.start()
>             if self.timeout == socket._GLOBAL_DEFAULT_TIMEOUT:
>                 timeout = None
>             else:
>                 timeout = self.timeout
>             t.join(timeout)
> >           if t.isAlive():
> E           AttributeError: 'Thread' object has no attribute 'isAlive'
> 
> /usr/lib/python3/dist-packages/httpretty/core.py:438: AttributeError
> ______ TestServicePrincipalCredentials.test_msi_vm_imds_timeout_not_used _______
> 
> self = <tests.test_auth.TestServicePrincipalCredentials testMethod=test_msi_vm_imds_timeout_not_used>
> 
>     @httpretty.activate
>     def test_msi_vm_imds_timeout_not_used(self):
>         """Check that using timeout still allows a successfull scenario to pass."""
>         json_payload = {
>             'token_type': "TokenTypeIMDS",
>             "access_token": "AccessToken"
>         }
>         httpretty.register_uri(httpretty.GET,
>                                'http://169.254.169.254/metadata/identity/oauth2/token',
>                                body=json.dumps(json_payload),
>                                content_type="application/json")
>     
> >       credentials = MSIAuthentication(timeout=15)
> 
> tests/test_auth.py:585: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> msrestazure/azure_active_directory.py:592: in __init__
>     self.set_token()
> msrestazure/azure_active_directory.py:600: in set_token
>     token_entry = self._vm_msi.get_token(self.resource)
> msrestazure/azure_active_directory.py:649: in get_token
>     token_entry = self._retrieve_token_from_imds_with_retry(resource)
> msrestazure/azure_active_directory.py:685: in _retrieve_token_from_imds_with_retry
>     result = requests.get(request_uri, params=payload, headers={'Metadata': 'true', 'User-Agent':self._user_agent})
> /usr/lib/python3/dist-packages/requests/api.py:76: in get
>     return request('get', url, params=params, **kwargs)
> /usr/lib/python3/dist-packages/requests/api.py:61: in request
>     return session.request(method=method, url=url, **kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:530: in request
>     resp = self.send(prep, **send_kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:643: in send
>     r = adapter.send(request, **kwargs)
> /usr/lib/python3/dist-packages/requests/adapters.py:439: in send
>     resp = conn.urlopen(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:670: in urlopen
>     httplib_response = self._make_request(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:426: in _make_request
>     six.raise_from(e, None)
> <string>:3: in raise_from
>     ???
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:421: in _make_request
>     httplib_response = conn.getresponse()
> /usr/lib/python3.9/http/client.py:1343: in getresponse
>     response = self.response_class(self.sock, method=self._method)
> /usr/lib/python3.9/http/client.py:245: in __init__
>     self.fp = sock.makefile("rb")
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <httpretty.core.fakesock.socket object at 0x7f8dbca95b20>, mode = 'rb'
> bufsize = -1
> 
>     def makefile(self, mode='r', bufsize=-1):
>         """Returns this fake socket's own tempfile buffer.
>     
>         If there is an entry associated with the socket, the file
>         descriptor gets filled in with the entry data before being
>         returned.
>         """
>         self._mode = mode
>         self._bufsize = bufsize
>     
>         if self._entry:
>             t = threading.Thread(
>                 target=self._entry.fill_filekind, args=(self.fd,)
>             )
>             t.start()
>             if self.timeout == socket._GLOBAL_DEFAULT_TIMEOUT:
>                 timeout = None
>             else:
>                 timeout = self.timeout
>             t.join(timeout)
> >           if t.isAlive():
> E           AttributeError: 'Thread' object has no attribute 'isAlive'
> 
> /usr/lib/python3/dist-packages/httpretty/core.py:438: AttributeError
> ________ TestServicePrincipalCredentials.test_msi_vm_imds_timeout_used _________
> 
> self = <tests.test_auth.TestServicePrincipalCredentials testMethod=test_msi_vm_imds_timeout_used>
> 
>     @httpretty.activate
>     def test_msi_vm_imds_timeout_used(self):
>         """Will loop on 410 until timeout is reached."""
>         httpretty.register_uri(httpretty.GET,
>                                'http://169.254.169.254/metadata/identity/oauth2/token',
>                                status=410)
>     
>         start_time = time.time()
>         with self.assertRaises(MSIAuthenticationTimeoutError):
> >           MSIAuthentication(timeout=1)
> 
> tests/test_auth.py:598: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> msrestazure/azure_active_directory.py:592: in __init__
>     self.set_token()
> msrestazure/azure_active_directory.py:600: in set_token
>     token_entry = self._vm_msi.get_token(self.resource)
> msrestazure/azure_active_directory.py:649: in get_token
>     token_entry = self._retrieve_token_from_imds_with_retry(resource)
> msrestazure/azure_active_directory.py:685: in _retrieve_token_from_imds_with_retry
>     result = requests.get(request_uri, params=payload, headers={'Metadata': 'true', 'User-Agent':self._user_agent})
> /usr/lib/python3/dist-packages/requests/api.py:76: in get
>     return request('get', url, params=params, **kwargs)
> /usr/lib/python3/dist-packages/requests/api.py:61: in request
>     return session.request(method=method, url=url, **kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:530: in request
>     resp = self.send(prep, **send_kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:643: in send
>     r = adapter.send(request, **kwargs)
> /usr/lib/python3/dist-packages/requests/adapters.py:439: in send
>     resp = conn.urlopen(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:670: in urlopen
>     httplib_response = self._make_request(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:426: in _make_request
>     six.raise_from(e, None)
> <string>:3: in raise_from
>     ???
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:421: in _make_request
>     httplib_response = conn.getresponse()
> /usr/lib/python3.9/http/client.py:1343: in getresponse
>     response = self.response_class(self.sock, method=self._method)
> /usr/lib/python3.9/http/client.py:245: in __init__
>     self.fp = sock.makefile("rb")
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
>     def makefile(self, mode='r', bufsize=-1):
>         """Returns this fake socket's own tempfile buffer.
>     
>         If there is an entry associated with the socket, the file
>         descriptor gets filled in with the entry data before being
>         returned.
>         """
>         self._mode = mode
>         self._bufsize = bufsize
>     
>         if self._entry:
>             t = threading.Thread(
>                 target=self._entry.fill_filekind, args=(self.fd,)
>             )
>             t.start()
>             if self.timeout == socket._GLOBAL_DEFAULT_TIMEOUT:
>                 timeout = None
>             else:
>                 timeout = self.timeout
>             t.join(timeout)
> >           if t.isAlive():
> E           AttributeError: 'Thread' object has no attribute 'isAlive'
> 
> /usr/lib/python3/dist-packages/httpretty/core.py:438: AttributeError
> ______ TestServicePrincipalCredentials.test_msi_vm_imds_timeout_zero_used ______
> 
> self = <tests.test_auth.TestServicePrincipalCredentials testMethod=test_msi_vm_imds_timeout_zero_used>
> 
>     @httpretty.activate
>     def test_msi_vm_imds_timeout_zero_used(self):
>         """If zero timeout, should do a try and fail immediatly."""
>         httpretty.register_uri(httpretty.GET,
>                                'http://169.254.169.254/metadata/identity/oauth2/token',
>                                status=410)
>     
>         with self.assertRaises(MSIAuthenticationTimeoutError):
> >           MSIAuthentication(timeout=0)
> 
> tests/test_auth.py:612: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> msrestazure/azure_active_directory.py:592: in __init__
>     self.set_token()
> msrestazure/azure_active_directory.py:600: in set_token
>     token_entry = self._vm_msi.get_token(self.resource)
> msrestazure/azure_active_directory.py:649: in get_token
>     token_entry = self._retrieve_token_from_imds_with_retry(resource)
> msrestazure/azure_active_directory.py:685: in _retrieve_token_from_imds_with_retry
>     result = requests.get(request_uri, params=payload, headers={'Metadata': 'true', 'User-Agent':self._user_agent})
> /usr/lib/python3/dist-packages/requests/api.py:76: in get
>     return request('get', url, params=params, **kwargs)
> /usr/lib/python3/dist-packages/requests/api.py:61: in request
>     return session.request(method=method, url=url, **kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:530: in request
>     resp = self.send(prep, **send_kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:643: in send
>     r = adapter.send(request, **kwargs)
> /usr/lib/python3/dist-packages/requests/adapters.py:439: in send
>     resp = conn.urlopen(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:670: in urlopen
>     httplib_response = self._make_request(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:426: in _make_request
>     six.raise_from(e, None)
> <string>:3: in raise_from
>     ???
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:421: in _make_request
>     httplib_response = conn.getresponse()
> /usr/lib/python3.9/http/client.py:1343: in getresponse
>     response = self.response_class(self.sock, method=self._method)
> /usr/lib/python3.9/http/client.py:245: in __init__
>     self.fp = sock.makefile("rb")
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
>     def makefile(self, mode='r', bufsize=-1):
>         """Returns this fake socket's own tempfile buffer.
>     
>         If there is an entry associated with the socket, the file
>         descriptor gets filled in with the entry data before being
>         returned.
>         """
>         self._mode = mode
>         self._bufsize = bufsize
>     
>         if self._entry:
>             t = threading.Thread(
>                 target=self._entry.fill_filekind, args=(self.fd,)
>             )
>             t.start()
>             if self.timeout == socket._GLOBAL_DEFAULT_TIMEOUT:
>                 timeout = None
>             else:
>                 timeout = self.timeout
>             t.join(timeout)
> >           if t.isAlive():
> E           AttributeError: 'Thread' object has no attribute 'isAlive'
> 
> /usr/lib/python3/dist-packages/httpretty/core.py:438: AttributeError
> ____________________ TestCloud.test_get_cloud_from_endpoint ____________________
> 
> self = <tests.test_cloud.TestCloud testMethod=test_get_cloud_from_endpoint>
> 
>         @httpretty.activate
>         def test_get_cloud_from_endpoint(self):
>     
>             public_azure_dict = {
>             	"galleryEndpoint": "https://gallery.azure.com",
>     	        "graphEndpoint": "https://graph.windows.net/",
>     	        "portalEndpoint": "https://portal.azure.com",
>     	        "authentication": {
>     		        "loginEndpoint": "https://login.windows.net",
>     		        "audiences": ["https://management.core.windows.net/", "https://management.azure.com/"]
>     	        }
>             }
>     
>             httpretty.register_uri(httpretty.GET,
>                                    "https://management.azure.com/metadata/endpoints?api-version=1.0",
>                                    body=json.dumps(public_azure_dict),
>                                    content_type="application/json")
>     
> >           cloud = azure_cloud.get_cloud_from_metadata_endpoint("https://management.azure.com")
> 
> tests/test_cloud.py:54: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> msrestazure/azure_cloud.py:250: in get_cloud_from_metadata_endpoint
>     _populate_from_metadata_endpoint(cloud, arm_endpoint, session)
> msrestazure/azure_cloud.py:208: in _populate_from_metadata_endpoint
>     response = session.get(metadata_endpoint)
> /usr/lib/python3/dist-packages/requests/sessions.py:543: in get
>     return self.request('GET', url, **kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:530: in request
>     resp = self.send(prep, **send_kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:643: in send
>     r = adapter.send(request, **kwargs)
> /usr/lib/python3/dist-packages/requests/adapters.py:439: in send
>     resp = conn.urlopen(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:670: in urlopen
>     httplib_response = self._make_request(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:426: in _make_request
>     six.raise_from(e, None)
> <string>:3: in raise_from
>     ???
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:421: in _make_request
>     httplib_response = conn.getresponse()
> /usr/lib/python3.9/http/client.py:1343: in getresponse
>     response = self.response_class(self.sock, method=self._method)
> /usr/lib/python3.9/http/client.py:245: in __init__
>     self.fp = sock.makefile("rb")
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <httpretty.core.fakesock.socket object at 0x7f8dbc959550>, mode = 'rb'
> bufsize = -1
> 
>     def makefile(self, mode='r', bufsize=-1):
>         """Returns this fake socket's own tempfile buffer.
>     
>         If there is an entry associated with the socket, the file
>         descriptor gets filled in with the entry data before being
>         returned.
>         """
>         self._mode = mode
>         self._bufsize = bufsize
>     
>         if self._entry:
>             t = threading.Thread(
>                 target=self._entry.fill_filekind, args=(self.fd,)
>             )
>             t.start()
>             if self.timeout == socket._GLOBAL_DEFAULT_TIMEOUT:
>                 timeout = None
>             else:
>                 timeout = self.timeout
>             t.join(timeout)
> >           if t.isAlive():
> E           AttributeError: 'Thread' object has no attribute 'isAlive'
> 
> /usr/lib/python3/dist-packages/httpretty/core.py:438: AttributeError
> ________________________ TestTools.test_register_failed ________________________
> 
> self = <tests.test_tools.TestTools testMethod=test_register_failed>
> time_sleep = <MagicMock name='sleep' id='140246733055696'>
> 
>     @httpretty.activate
>     @mock.patch('time.sleep', return_value=None)
>     def test_register_failed(self, time_sleep):
>         """Protocol:
>         - We call the provider and get a 409 provider error
>         - Now we POST register provider and get "Registering"
>         - This POST failed
>         """
>     
>         provider_url = ("https://management.azure.com/"
>                         "subscriptions/12345678-9abc-def0-0000-000000000000/"
>                         "resourceGroups/clitest.rg000001/"
>                         "providers/Microsoft.Sql/servers/ygserver123?api-version=2014-04-01")
>     
>         provider_error = ('{"error":{"code":"MissingSubscriptionRegistration", '
>                           '"message":"The subscription registration is in \'Unregistered\' state. '
>                           'The subscription must be registered to use namespace \'Microsoft.Sql\'. '
>                           'See https://aka.ms/rps-not-found for how to register subscriptions."}}')
>     
>         provider_success = '{"success": true}'
>     
>         httpretty.register_uri(httpretty.PUT,
>                                provider_url,
>                                responses=[
>                                    httpretty.Response(body=provider_error, status=409),
>                                    httpretty.Response(body=provider_success),
>                                ],
>                                content_type="application/json")
>     
>         register_post_url = ("https://management.azure.com/"
>                              "subscriptions/12345678-9abc-def0-0000-000000000000/"
>                              "providers/Microsoft.Sql/register?api-version=2016-02-01")
>     
>         httpretty.register_uri(httpretty.POST,
>                                register_post_url,
>                                status=409,
>                                content_type="application/json")
>     
>         configuration = AzureConfiguration(None)
>         register_rp_hook = configuration.hooks[0]
>     
>         session = requests.Session()
>         def rp_cb(r, *args, **kwargs):
>             kwargs.setdefault("msrest", {})["session"] = session
>             return register_rp_hook(r, *args, **kwargs)
>         session.hooks['response'].append(rp_cb)
>     
> >       response = session.put(provider_url)
> 
> tests/test_tools.py:156: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /usr/lib/python3/dist-packages/requests/sessions.py:590: in put
>     return self.request('PUT', url, data=data, **kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:530: in request
>     resp = self.send(prep, **send_kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:643: in send
>     r = adapter.send(request, **kwargs)
> /usr/lib/python3/dist-packages/requests/adapters.py:439: in send
>     resp = conn.urlopen(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:670: in urlopen
>     httplib_response = self._make_request(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:426: in _make_request
>     six.raise_from(e, None)
> <string>:3: in raise_from
>     ???
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:421: in _make_request
>     httplib_response = conn.getresponse()
> /usr/lib/python3.9/http/client.py:1343: in getresponse
>     response = self.response_class(self.sock, method=self._method)
> /usr/lib/python3.9/http/client.py:245: in __init__
>     self.fp = sock.makefile("rb")
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <httpretty.core.fakesock.socket object at 0x7f8dbcb33250>, mode = 'rb'
> bufsize = -1
> 
>     def makefile(self, mode='r', bufsize=-1):
>         """Returns this fake socket's own tempfile buffer.
>     
>         If there is an entry associated with the socket, the file
>         descriptor gets filled in with the entry data before being
>         returned.
>         """
>         self._mode = mode
>         self._bufsize = bufsize
>     
>         if self._entry:
>             t = threading.Thread(
>                 target=self._entry.fill_filekind, args=(self.fd,)
>             )
>             t.start()
>             if self.timeout == socket._GLOBAL_DEFAULT_TIMEOUT:
>                 timeout = None
>             else:
>                 timeout = self.timeout
>             t.join(timeout)
> >           if t.isAlive():
> E           AttributeError: 'Thread' object has no attribute 'isAlive'
> 
> /usr/lib/python3/dist-packages/httpretty/core.py:438: AttributeError
> _______________________ TestTools.test_register_rp_hook ________________________
> 
> self = <tests.test_tools.TestTools testMethod=test_register_rp_hook>
> time_sleep = <MagicMock name='sleep' id='140246731038432'>
> 
>     @httpretty.activate
>     @mock.patch('time.sleep', return_value=None)
>     def test_register_rp_hook(self, time_sleep):
>         """Protocol:
>         - We call the provider and get a 409 provider error
>         - Now we POST register provider and get "Registering"
>         - Now we GET register provider and get "Registered"
>         - We call again the first endpoint and this time this succeed
>         """
>     
>         provider_url = ("https://management.azure.com/"
>                         "subscriptions/12345678-9abc-def0-0000-000000000000/"
>                         "resourceGroups/clitest.rg000001/"
>                         "providers/Microsoft.Sql/servers/ygserver123?api-version=2014-04-01")
>     
>         provider_error = ('{"error":{"code":"MissingSubscriptionRegistration", '
>                           '"message":"The subscription registration is in \'Unregistered\' state. '
>                           'The subscription must be registered to use namespace \'Microsoft.Sql\'. '
>                           'See https://aka.ms/rps-not-found for how to register subscriptions."}}')
>     
>         provider_success = '{"success": true}'
>     
>         httpretty.register_uri(httpretty.PUT,
>                                provider_url,
>                                responses=[
>                                    httpretty.Response(body=provider_error, status=409),
>                                    httpretty.Response(body=provider_success),
>                                ],
>                                content_type="application/json")
>     
>         register_post_url = ("https://management.azure.com/"
>                              "subscriptions/12345678-9abc-def0-0000-000000000000/"
>                              "providers/Microsoft.Sql/register?api-version=2016-02-01")
>     
>         register_post_result = {
>             "registrationState":"Registering"
>         }
>     
>         register_get_url = ("https://management.azure.com/"
>                             "subscriptions/12345678-9abc-def0-0000-000000000000/"
>                             "providers/Microsoft.Sql?api-version=2016-02-01")
>     
>         register_get_result = {
>             "registrationState":"Registered"
>         }
>     
>         httpretty.register_uri(httpretty.POST,
>                                register_post_url,
>                                body=json.dumps(register_post_result),
>                                content_type="application/json")
>     
>         httpretty.register_uri(httpretty.GET,
>                                register_get_url,
>                                body=json.dumps(register_get_result),
>                                content_type="application/json")
>     
>         configuration = AzureConfiguration(None)
>         register_rp_hook = configuration.hooks[0]
>     
>         session = requests.Session()
>         def rp_cb(r, *args, **kwargs):
>             kwargs.setdefault("msrest", {})["session"] = session
>             return register_rp_hook(r, *args, **kwargs)
>         session.hooks['response'].append(rp_cb)
>     
> >       response = session.put(provider_url)
> 
> tests/test_tools.py:106: 
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> /usr/lib/python3/dist-packages/requests/sessions.py:590: in put
>     return self.request('PUT', url, data=data, **kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:530: in request
>     resp = self.send(prep, **send_kwargs)
> /usr/lib/python3/dist-packages/requests/sessions.py:643: in send
>     r = adapter.send(request, **kwargs)
> /usr/lib/python3/dist-packages/requests/adapters.py:439: in send
>     resp = conn.urlopen(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:670: in urlopen
>     httplib_response = self._make_request(
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:426: in _make_request
>     six.raise_from(e, None)
> <string>:3: in raise_from
>     ???
> /usr/lib/python3/dist-packages/urllib3/connectionpool.py:421: in _make_request
>     httplib_response = conn.getresponse()
> /usr/lib/python3.9/http/client.py:1343: in getresponse
>     response = self.response_class(self.sock, method=self._method)
> /usr/lib/python3.9/http/client.py:245: in __init__
>     self.fp = sock.makefile("rb")
> _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
> 
> self = <httpretty.core.fakesock.socket object at 0x7f8dbd48ea00>, mode = 'rb'
> bufsize = -1
> 
>     def makefile(self, mode='r', bufsize=-1):
>         """Returns this fake socket's own tempfile buffer.
>     
>         If there is an entry associated with the socket, the file
>         descriptor gets filled in with the entry data before being
>         returned.
>         """
>         self._mode = mode
>         self._bufsize = bufsize
>     
>         if self._entry:
>             t = threading.Thread(
>                 target=self._entry.fill_filekind, args=(self.fd,)
>             )
>             t.start()
>             if self.timeout == socket._GLOBAL_DEFAULT_TIMEOUT:
>                 timeout = None
>             else:
>                 timeout = self.timeout
>             t.join(timeout)
> >           if t.isAlive():
> E           AttributeError: 'Thread' object has no attribute 'isAlive'
> 
> /usr/lib/python3/dist-packages/httpretty/core.py:438: AttributeError
> =============================== warnings summary ===============================
> /usr/lib/python3/dist-packages/_pytest/mark/structures.py:331
>   /usr/lib/python3/dist-packages/_pytest/mark/structures.py:331: PytestUnknownMarkWarning: Unknown pytest.mark.slow - is this a typo?  You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/latest/mark.html
>     warnings.warn(
> 
> .pybuild/cpython3_3.9_msrestazure/build/tests/test_auth.py::TestServicePrincipalCredentials::test_service_principal
> .pybuild/cpython3_3.9_msrestazure/build/tests/test_auth.py::TestServicePrincipalCredentials::test_user_pass_credentials
>   /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build/msrestazure/azure_active_directory.py:83: DeprecationWarning: china parameter is deprecated, please use cloud_environment=msrestazure.azure_cloud.AZURE_CHINA_CLOUD
>     warnings.warn(err_msg, DeprecationWarning)
> 
> -- Docs: https://docs.pytest.org/en/latest/warnings.html
> === 9 failed, 25 passed, 1 skipped, 5 deselected, 3 warnings in 2.42 seconds ===
> E: pybuild pybuild:352: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.9_msrestazure/build; python3.9 -m pytest -k 'not slow'
> dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.9 3.8" returned exit code 13

The full build log is available from:
   http://qa-logs.debian.net/2020/10/27/python-msrestazure_0.6.2-1_unstable.log

A list of current common problems and possible solutions is available at
http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute!

About the archive rebuild: The rebuild was done on EC2 VM instances from
Amazon Web Services, using a clean, minimal and up-to-date chroot. Every
failed build was retried once to eliminate random failures.



More information about the Python-modules-team mailing list