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
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
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
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
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', )]
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