use of io.fabric8.kubernetes.client.utils.Serialization.unmarshal in project kubernetes-client by fabric8io.
the class BackwardsCompatibilityInterceptor method afterFailure.
@Override
public boolean afterFailure(Builder builder, HttpResponse<?> response) {
ResourceKey target = findNewTarget(builder, response);
if (target == null) {
return false;
}
HttpRequest request = response.request();
if (request.bodyString() != null && !request.method().equalsIgnoreCase(PATCH)) {
Object object = Serialization.unmarshal(request.bodyString());
if (object instanceof HasMetadata) {
HasMetadata h = (HasMetadata) object;
h.setApiVersion(target.group + "/" + target.version);
switch(request.method()) {
case "POST":
builder.post(JSON, Serialization.asJson(h));
break;
case "PUT":
builder.put(JSON, Serialization.asJson(h));
break;
case "DELETE":
builder.delete(JSON, Serialization.asJson(h));
break;
default:
return false;
}
}
}
return true;
}
use of io.fabric8.kubernetes.client.utils.Serialization.unmarshal in project kubernetes-client by fabric8io.
the class CustomResourceTest method testCreateOrReplace.
@Test
void testCreateOrReplace() throws IOException {
String jsonObject = "{\"apiVersion\": \"test.fabric8.io/v1alpha1\",\"kind\": \"Hello\"," + "\"metadata\": {\"resourceVersion\":\"1\", \"name\": \"example-hello\"},\"spec\": {\"size\": 3}}";
server.expect().post().withPath("/apis/test.fabric8.io/v1alpha1/namespaces/ns1/hellos").andReturn(HttpURLConnection.HTTP_INTERNAL_ERROR, new StatusBuilder().build()).once();
server.expect().post().withPath("/apis/test.fabric8.io/v1alpha1/namespaces/ns1/hellos").andReturn(HttpURLConnection.HTTP_CREATED, jsonObject).once();
server.expect().post().withPath("/apis/test.fabric8.io/v1alpha1/namespaces/ns1/hellos").andReturn(HttpURLConnection.HTTP_CONFLICT, jsonObject).once();
server.expect().put().withPath("/apis/test.fabric8.io/v1alpha1/namespaces/ns1/hellos/example-hello").andReturn(HttpURLConnection.HTTP_OK, jsonObject).once();
server.expect().get().withPath("/apis/test.fabric8.io/v1alpha1/namespaces/ns1/hellos/example-hello").andReturn(HttpURLConnection.HTTP_OK, jsonObject).once();
GenericKubernetesResource resource = client.genericKubernetesResources(customResourceDefinitionContext).inNamespace("ns1").createOrReplace(Serialization.unmarshal(jsonObject, GenericKubernetesResource.class));
assertEquals("example-hello", resource.getMetadata().getName());
resource = client.genericKubernetesResources(customResourceDefinitionContext).inNamespace("ns1").createOrReplace(Serialization.unmarshal(jsonObject, GenericKubernetesResource.class));
assertEquals("example-hello", resource.getMetadata().getName());
}
use of io.fabric8.kubernetes.client.utils.Serialization.unmarshal in project kubernetes-client by fabric8io.
the class AdmissionReviewTest method testJacksonParsingWithUpdateOptions.
@Test
@DisplayName("Should be able to deserialize from AdmissionRequest option set to UpdateOption")
void testJacksonParsingWithUpdateOptions() {
InputStream jsonStream = getClass().getResourceAsStream("/admissionreview-withupdateoptions.json");
AdmissionReview admissionReview = Serialization.unmarshal(jsonStream, AdmissionReview.class);
assertEquals("UPDATE", admissionReview.getRequest().getOperation());
assertRequest(admissionReview);
}
use of io.fabric8.kubernetes.client.utils.Serialization.unmarshal in project kubernetes-client by fabric8io.
the class AdmissionReviewTest method testJacksonParsingWithPathOptions.
@Test
@DisplayName("Should be able to deserialize from AdmissionRequest option set to PatchOption")
void testJacksonParsingWithPathOptions() {
InputStream jsonStream = getClass().getResourceAsStream("/admissionreview-withpatchoptions.json");
AdmissionReview admissionReview = Serialization.unmarshal(jsonStream, AdmissionReview.class);
assertEquals("PATCH", admissionReview.getRequest().getOperation());
assertRequest(admissionReview);
}
use of io.fabric8.kubernetes.client.utils.Serialization.unmarshal in project kubernetes-client by fabric8io.
the class V1SubjectAccessReviewAuthTest method testCreateSelfSubjectRulesReview.
@Test
@DisplayName("Create SelfSubjectRulesReview")
void testCreateSelfSubjectRulesReview() {
// Given
SelfSubjectRulesReview selfSubjectRulesReview = new SelfSubjectRulesReviewBuilder().withNewMetadata().withName("foo").endMetadata().withNewSpec().withNamespace("test").endSpec().build();
server.expect().post().withPath("/apis/authorization.k8s.io/v1/selfsubjectrulesreviews").andReply(HttpURLConnection.HTTP_OK, recordedRequest -> {
SelfSubjectRulesReview reviewResponse = Serialization.unmarshal(recordedRequest.getBody().readString(Charset.defaultCharset()), SelfSubjectRulesReview.class);
List<NonResourceRule> nonResourceRuleList = new ArrayList<>();
nonResourceRuleList.add(new NonResourceRuleBuilder().withNonResourceURLs("*").withVerbs("*").build());
nonResourceRuleList.add(new NonResourceRuleBuilder().withNonResourceURLs("/healthz", "/livez", "/readyz", "/version", "/version/").withVerbs("get").build());
nonResourceRuleList.add(new NonResourceRuleBuilder().withNonResourceURLs("/api", "/api/*", "/apis", "/apis/*", "/healthz", "/livez", "/openapi", "/openapi/*", "/readyz", "/version", "/version/").withVerbs("get").build());
List<ResourceRule> resourceRuleList = new ArrayList<>();
resourceRuleList.add(new ResourceRuleBuilder().withApiGroups("*").withResources("*").withVerbs("*").build());
resourceRuleList.add(new ResourceRuleBuilder().withApiGroups("authorization.k8s.io").withResources("selfsubjectaccessreviews", "selfsubjectrulesreviews").withVerbs("create").build());
reviewResponse.setStatus(new SubjectRulesReviewStatusBuilder().withIncomplete(false).withNonResourceRules(nonResourceRuleList).withResourceRules(resourceRuleList).build());
return reviewResponse;
}).once();
// When
SelfSubjectRulesReview reviewResponse = client.authorization().v1().selfSubjectRulesReview().create(selfSubjectRulesReview);
// Then
assertNotNull(reviewResponse);
assertEquals("test", reviewResponse.getSpec().getNamespace());
assertNotNull(reviewResponse.getStatus());
assertFalse(reviewResponse.getStatus().getIncomplete());
assertEquals(3, reviewResponse.getStatus().getNonResourceRules().size());
assertEquals(2, reviewResponse.getStatus().getResourceRules().size());
}
Aggregations