示例#1
0
def test_raises_api_error_despite_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', default=object())
    assert e.value.status == status
示例#2
0
def test_when_absent_with_no_default(client_mock, resource, namespace):
    error = kubernetes.client.rest.ApiException(status=404)
    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 == 404
示例#3
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
示例#4
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
示例#5
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',
    )]
示例#6
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.spec.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