예제 #1
0
        public async Task ApplyModel()
        {
            MockMessageHandler handler = new MockMessageHandler(async(HttpRequestMessage request) =>
            {
                Assert.Equal("PATCH", request.Method.Method);

                Assert.NotNull(request.Content);

                string requestBody = await request.Content.ReadAsStringAsync();
                Log.LogInformation("Request body:\n{RequestBody:l}", requestBody);

                Assert.NotNull(request.Content.Headers.ContentType);
                Assert.Equal("application/apply-patch+yaml", request.Content.Headers.ContentType.MediaType);

                Assert.Contains("fieldManager=my-field-manager", request.RequestUri.Query);

                return(request.CreateResponse(HttpStatusCode.OK,
                                              responseBody: JsonConvert.SerializeObject(new PodV1
                {
                    Metadata = new ObjectMetaV1
                    {
                        Name = "my-pod",
                        Namespace = "my-namespace",
                        Finalizers =     // Array test
                        {
                            "foo",
                            "bar"
                        }
                    }
                }),
                                              mediaType: "application/json"
                                              ));
            });

            using (KubeApiClient client = handler.CreateClient(loggerFactory: LoggerFactory))
            {
                PodV1 resource = new PodV1
                {
                    Metadata = new ObjectMetaV1
                    {
                        Name       = "my-pod",
                        Namespace  = "my-namespace",
                        Finalizers = // Array test
                        {
                            "foo",
                            "bar"
                        }
                    }
                };

                await client.Dynamic().Apply(resource,
                                             fieldManager: "my-field-manager"
                                             );
            }
        }
예제 #2
0
        public async Task ApplyYaml()
        {
            MockMessageHandler handler = new MockMessageHandler(request =>
            {
                Assert.Equal("PATCH", request.Method.Method);

                Assert.NotNull(request.Content);
                Assert.NotNull(request.Content.Headers.ContentType);
                Assert.Equal("application/apply-patch+yaml", request.Content.Headers.ContentType.MediaType);

                Assert.Contains("fieldManager=my-field-manager", request.RequestUri.Query);

                return(request.CreateResponse(HttpStatusCode.OK,
                                              responseBody: JsonConvert.SerializeObject(new PodV1
                {
                    Metadata = new ObjectMetaV1
                    {
                        Name = "my-pod",
                        Namespace = "my-namespace"
                    }
                }),
                                              mediaType: "application/json"
                                              ));
            });

            const string podYaml = @"
kind: Pod
apiVersion: v1
metadata:
    name: my-pod
            ";

            using (KubeApiClient client = handler.CreateClient(loggerFactory: LoggerFactory))
            {
                await client.Dynamic().ApplyYaml(
                    name: "my-pod",
                    kind: "Pod",
                    apiVersion: "v1",
                    yaml: podYaml,
                    fieldManager: "my-field-manager",
                    kubeNamespace: "my-namespace"
                    );
            }
        }