potiuk opened a new issue #12151:
URL: https://github.com/apache/airflow/issues/12151


   Kubernetes tests are failing master build:
   
   Example here:
   
   https://github.com/apache/airflow/actions/runs/350798991
   
   
   The failing test is:
   
   ```
   _______________ TestKubernetesPodOperatorSystem.test_pod_failure 
_______________
   
   self = 
<kubernetes_tests.test_kubernetes_pod_operator.TestKubernetesPodOperatorSystem 
testMethod=test_pod_failure>
   
       def test_pod_failure(self):
           """
           Tests that the task fails when a pod reports a failure
           """
           bad_internal_command = ["foobar 10 "]
           k = KubernetesPodOperator(
               namespace='default',
               image="ubuntu:16.04",
               cmds=["bash", "-cx"],
               arguments=bad_internal_command,
               labels={"foo": "bar"},
               name="test-" + str(random.randint(0, 1000000)),
               task_id="task" + self.get_current_task_name(),
               in_cluster=False,
               do_xcom_push=False,
           )
           with self.assertRaises(AirflowException):
               context = create_context(k)
   >           k.execute(context)
   
   kubernetes_tests/test_kubernetes_pod_operator.py:536: 
   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ 
   airflow/providers/cncf/kubernetes/operators/kubernetes_pod.py:313: in execute
       status = self.client.read_namespaced_pod(self.name, self.namespace)
   
.build/.kubernetes_venv/lib/python3.6/site-packages/kubernetes/client/api/core_v1_api.py:19078:
 in read_namespaced_pod
       (data) = self.read_namespaced_pod_with_http_info(name, namespace, 
**kwargs)  # noqa: E501
   
.build/.kubernetes_venv/lib/python3.6/site-packages/kubernetes/client/api/core_v1_api.py:19169:
 in read_namespaced_pod_with_http_info
       collection_formats=collection_formats)
   
.build/.kubernetes_venv/lib/python3.6/site-packages/kubernetes/client/api_client.py:345:
 in call_api
       _preload_content, _request_timeout)
   
.build/.kubernetes_venv/lib/python3.6/site-packages/kubernetes/client/api_client.py:176:
 in __call_api
       _request_timeout=_request_timeout)
   
.build/.kubernetes_venv/lib/python3.6/site-packages/kubernetes/client/api_client.py:366:
 in request
       headers=headers)
   
.build/.kubernetes_venv/lib/python3.6/site-packages/kubernetes/client/rest.py:241:
 in GET
       query_params=query_params)
   _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
_ _ 
   
       def request(self, method, url, query_params=None, headers=None,
                   body=None, post_params=None, _preload_content=True,
                   _request_timeout=None):
           """Perform requests.
       
           :param method: http request method
           :param url: http request url
           :param query_params: query parameters in the url
           :param headers: http request headers
           :param body: request json body, for `application/json`
           :param post_params: request post parameters,
                               `application/x-www-form-urlencoded`
                               and `multipart/form-data`
           :param _preload_content: if False, the urllib3.HTTPResponse object 
will
                                    be returned without reading/decoding 
response
                                    data. Default is True.
           :param _request_timeout: timeout setting for this request. If one
                                    number provided, it will be total request
                                    timeout. It can also be a pair (tuple) of
                                    (connection, read) timeouts.
           """
           method = method.upper()
           assert method in ['GET', 'HEAD', 'DELETE', 'POST', 'PUT',
                             'PATCH', 'OPTIONS']
       
           if post_params and body:
               raise ValueError(
                   "body parameter cannot be used with post_params parameter."
               )
       
           post_params = post_params or {}
           headers = headers or {}
       
           timeout = None
           if _request_timeout:
               if isinstance(_request_timeout, (int, ) if six.PY3 else (int, 
long)):  # noqa: E501,F821
                   timeout = urllib3.Timeout(total=_request_timeout)
               elif (isinstance(_request_timeout, tuple) and
                     len(_request_timeout) == 2):
                   timeout = urllib3.Timeout(
                       connect=_request_timeout[0], read=_request_timeout[1])
       
           if 'Content-Type' not in headers:
               headers['Content-Type'] = 'application/json'
       
           try:
               # For `POST`, `PUT`, `PATCH`, `OPTIONS`, `DELETE`
               if method in ['POST', 'PUT', 'PATCH', 'OPTIONS', 'DELETE']:
                   if query_params:
                       url += '?' + urlencode(query_params)
                   if re.search('json', headers['Content-Type'], re.IGNORECASE):
                       if headers['Content-Type'] == 
'application/json-patch+json':
                           if not isinstance(body, list):
                               headers['Content-Type'] = \
                                   'application/strategic-merge-patch+json'
                       request_body = None
                       if body is not None:
                           request_body = json.dumps(body)
                       r = self.pool_manager.request(
                           method, url,
                           body=request_body,
                           preload_content=_preload_content,
                           timeout=timeout,
                           headers=headers)
                   elif headers['Content-Type'] == 
'application/x-www-form-urlencoded':  # noqa: E501
                       r = self.pool_manager.request(
                           method, url,
                           fields=post_params,
                           encode_multipart=False,
                           preload_content=_preload_content,
                           timeout=timeout,
                           headers=headers)
                   elif headers['Content-Type'] == 'multipart/form-data':
                       # must del headers['Content-Type'], or the correct
                       # Content-Type which generated by urllib3 will be
                       # overwritten.
                       del headers['Content-Type']
                       r = self.pool_manager.request(
                           method, url,
                           fields=post_params,
                           encode_multipart=True,
                           preload_content=_preload_content,
                           timeout=timeout,
                           headers=headers)
                   # Pass a `string` parameter directly in the body to support
                   # other content types than Json when `body` argument is
                   # provided in serialized form
                   elif isinstance(body, str):
                       request_body = body
                       r = self.pool_manager.request(
                           method, url,
                           body=request_body,
                           preload_content=_preload_content,
                           timeout=timeout,
                           headers=headers)
                   else:
                       # Cannot generate the request from given parameters
                       msg = """Cannot prepare a request message for provided
                                arguments. Please check that your arguments 
match
                                declared content type."""
                       raise ApiException(status=0, reason=msg)
               # For `GET`, `HEAD`
               else:
                   r = self.pool_manager.request(method, url,
                                                 fields=query_params,
                                                 
preload_content=_preload_content,
                                                 timeout=timeout,
                                                 headers=headers)
           except urllib3.exceptions.SSLError as e:
               msg = "{0}\n{1}".format(type(e).__name__, str(e))
               raise ApiException(status=0, reason=msg)
       
           if _preload_content:
               r = RESTResponse(r)
       
               # In the python 3, the response.data is bytes.
               # we need to decode it to string.
               if six.PY3:
                   r.data = r.data.decode('utf8')
       
               # log response body
               logger.debug("response body: %s", r.data)
       
           if not 200 <= r.status <= 299:
   >           raise ApiException(http_resp=r)
   E           kubernetes.client.rest.ApiException: (404)
   E           Reason: Not Found
   E           HTTP response headers: HTTPHeaderDict({'Content-Type': 
'application/json', 'Date': 'Sat, 07 Nov 2020 07:33:13 GMT', 'Content-Length': 
'190'})
   E           HTTP response body: 
{"kind":"Status","apiVersion":"v1","metadata":{},"status":"Failure","message":"pods
 \"test-815505\" not 
found","reason":"NotFound","details":{"name":"test-815505","kind":"pods"},"code":404}
   
   
.build/.kubernetes_venv/lib/python3.6/site-packages/kubernetes/client/rest.py:231:
 ApiException
   
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to