示例#1
0
        public async Task <IEnumerable <Todo> > GetList()
        {
            var ns      = this._config["NAMESPACE"];
            var request = new HttpRequestMessage(
                HttpMethod.Get,
                string.Format("http://localhost:8080/apis/k8sasbackend.com/v1/namespaces/{0}/todos", ns));

            request.Headers.Add("Accept", "application/json");
            request.Headers.Add("User-Agent", "TodoApp");
            //AddBearerToken(request);

            var client = _clientFactory.CreateClient();

            var response = await client.SendAsync(request);

            Todo[] todos;
            if (response.IsSuccessStatusCode)
            {
                var responseContent = await response.Content.ReadAsStringAsync();

                _logger.LogDebug(responseContent);
                var svc      = new k8s.TodoService(client);
                var todoList = svc.Convert <TodoList>(responseContent);
                var list     = new List <Todo>();
                foreach (var item in todoList.Items)
                {
                    list.Add(new Todo {
                        Id      = new Guid(item.Metadata.Uid),
                        Code    = item.Metadata.Name,
                        When    = item.Spec.When.Value,
                        Message = item.Spec.Message
                    });
                }
                todos = list.ToArray();
            }
            else
            {
                todos = Array.Empty <Todo>();
            }

            return(todos);
        }
示例#2
0
        public async Task <ActionResult <Todo> > CreateTodo(Todo dto)
        {
            var ns = this._config["NAMESPACE"];

            var crd = new k8s.Models.Todo {
                ApiVersion = "k8sasbackend.com/v1",
                Kind       = "Todo",
                Metadata   = new V1ObjectMeta {
                    Name = dto.Code,
                    NamespaceProperty = ns,
                },
                Spec = new TodoSpec {
                    Message = dto.Message,
                    When    = dto.When.ToUniversalTime()
                }
            };


            var client = _clientFactory.CreateClient();

            var svc = new k8s.TodoService(client);

            var json = svc.Serialize(crd);

            using var stringContent = new StringContent(json, Encoding.UTF8, "application/json");


            //TODO: make namespace as env variable
            var url = string.Format("http://localhost:8080/apis/k8sasbackend.com/v1/namespaces/{0}/todos", ns);

            _logger.LogDebug("posting todo resource to {0}", url);
            var request = new HttpRequestMessage(
                HttpMethod.Post,
                url);

            request.Headers.Add("Accept", "application/json");
            request.Headers.Add("User-Agent", "TodoApp");
            //AddBearerToken(request);
            request.Content = stringContent;

            var response = await client.SendAsync(request);

            var responseContent = await response.Content.ReadAsStringAsync();

            _logger.LogDebug(responseContent);
            if (response.IsSuccessStatusCode)
            {
                var todoCrd = svc.Convert <k8s.Models.Todo>(responseContent);

                return(new Todo {
                    Id = new Guid(todoCrd.Metadata.Uid),
                    Message = todoCrd.Spec.Message,
                    When = todoCrd.Spec.When.Value,
                    Code = todoCrd.Metadata.Name
                });
            }
            else
            {
                var status = svc.Convert <k8s.Models.V1Status>(responseContent);
                return(BadRequest(new{
                    message = status.Message,
                    code = status.Code,
                    status = status.Status,
                }));
            }
        }