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]
