Beispiel #1
0
def test_when_absent_with_no_default(client_mock, resource, namespace, status):
    error = kubernetes.client.rest.ApiException(status=status)
    apicls_mock = client_mock.CustomObjectsApi
    apicls_mock.return_value.get_cluster_custom_object.side_effect = error
    apicls_mock.return_value.get_namespaced_custom_object.side_effect = error

    with pytest.raises(kubernetes.client.rest.ApiException) as e:
        read_obj(resource=resource, namespace=namespace, name='name1')
    assert e.value.status == status
Beispiel #2
0
def test_raises_api_error_despite_default(req_mock, resource, namespace, status):
    response = requests.Response()
    response.status_code = status
    error = requests.exceptions.HTTPError("boo!", response=response)
    req_mock.get.side_effect = error

    with pytest.raises(requests.exceptions.HTTPError) as e:
        read_obj(resource=resource, namespace=namespace, name='name1', default=object())
    assert e.value.response.status_code == status
Beispiel #3
0
def test_when_absent_with_no_default(req_mock, resource, namespace, status):
    response = requests.Response()
    response.status_code = status
    error = requests.exceptions.HTTPError("boo!", response=response)
    req_mock.get.side_effect = error

    with pytest.raises(requests.exceptions.HTTPError) as e:
        read_obj(resource=resource, namespace=namespace, name='name1')
    assert e.value.response.status_code == status
Beispiel #4
0
 def _is_peering_exist(name: str, namespace: Optional[str]):
     resource = CLUSTER_PEERING_RESOURCE if namespace is None else NAMESPACED_PEERING_RESOURCE
     obj = fetching.read_obj(resource=resource,
                             namespace=namespace,
                             name=name,
                             default=None)
     return obj is not None
Beispiel #5
0
def test_when_absent_with_default(req_mock, resource, namespace, default, status):
    response = requests.Response()
    response.status_code = status
    error = requests.exceptions.HTTPError("boo!", response=response)
    req_mock.get.side_effect = error

    crd = read_obj(resource=resource, namespace=namespace, name='name1', default=default)
    assert crd is default
Beispiel #6
0
def test_when_absent_with_default(client_mock, resource, namespace, default,
                                  status):
    error = kubernetes.client.rest.ApiException(status=status)
    apicls_mock = client_mock.CustomObjectsApi
    apicls_mock.return_value.get_cluster_custom_object.side_effect = error
    apicls_mock.return_value.get_namespaced_custom_object.side_effect = error

    crd = read_obj(resource=resource,
                   namespace=namespace,
                   name='name1',
                   default=default)
    assert crd is default
Beispiel #7
0
def test_when_present_namespaced(req_mock, resource):
    result = {}
    req_mock.get.return_value.json.return_value = result

    crd = read_obj(resource=resource, namespace='ns1', name='name1')
    assert crd is result

    assert req_mock.get.called
    assert req_mock.get.call_count == 1

    url = req_mock.get.call_args_list[0][1]['url']
    assert 'apis/zalando.org/v1/namespaces/ns1/kopfexamples/name1' in url
Beispiel #8
0
    def _is_peering_legacy(name: str, namespace: Optional[str]):
        """
        Legacy mode for the peering: cluster-scoped KopfPeering (new mode: namespaced).

        .. deprecated:: 1.0

            This logic will be removed since 1.0.
            Deploy ``ClusterKopfPeering`` as per documentation, and use it normally.
        """
        crd = fetching.read_crd(resource=LEGACY_PEERING_RESOURCE, default=None)
        if crd is None:
            return False

        if str(crd.get('spec', {}).get('scope', '')).lower() != 'cluster':
            return False  # no legacy mode detected

        obj = fetching.read_obj(resource=LEGACY_PEERING_RESOURCE, name=name, default=None)
        return obj is not None
Beispiel #9
0
def test_when_present_clustered(client_mock, resource):
    result = object()
    apicls_mock = client_mock.CustomObjectsApi
    apicls_mock.return_value.get_cluster_custom_object.return_value = result
    apicls_mock.return_value.get_namespaced_custom_object.return_value = result
    sidefn_mock = apicls_mock.return_value.get_namespaced_custom_object
    mainfn_mock = apicls_mock.return_value.get_cluster_custom_object

    crd = read_obj(resource=resource, namespace=None, name='name1')
    assert crd is result

    assert not sidefn_mock.called
    assert mainfn_mock.call_count == 1
    assert mainfn_mock.call_args_list == [
        call(
            group=resource.group,
            version=resource.version,
            plural=resource.plural,
            name='name1',
        )
    ]