CreateServiceAsync(Kubernetes k8sClient, V1Service yamlModel, MTAServiceModel serviceModel)
        {
            try
            {
                var namespaceParams = PrepareNamespaceParams(_groupName);
                var serviceParams   = PrepareServiceParams(_serviceName);

                yamlModel.Metadata.Name = serviceParams;
                yamlModel.Spec.Selector = serviceModel.Selectors;

                var v1ServicePorts = new List <V1ServicePort>();
                foreach (var port in serviceModel.Ports)
                {
                    var v1ServicePort = new V1ServicePort(port);
                    v1ServicePorts.Add(v1ServicePort);
                }
                yamlModel.Spec.Ports = v1ServicePorts;

                var v1Service = await k8sClient.CreateNamespacedServiceAsync
                                    (yamlModel, namespaceParams);

                serviceModel = new MTAServiceModel(v1Service);
                return(new Tuple <MTAServiceModel, MTAErrorModel>(serviceModel, null));
            }
            catch (HttpOperationException ex)
            {
                var errorModel = new MTAErrorModel(ex);
                return(new Tuple <MTAServiceModel, MTAErrorModel>(null, errorModel));
            }
            catch (Exception)
            {
                throw;
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> CreateServiceAsync
            ([FromBody] MTAServiceModel serviceBody,
            [FromRoute] string serviceName,
            [FromRoute] string tenantName,
            [FromRoute] string groupName)
        {
            var path         = string.Concat(GetTemplatesPath(), "/template-svc.yaml");
            var servicesList = await Yaml.LoadAllFromFileAsync(path);

            var yamlBody          = servicesList[0] as V1Service;
            var serviceController = new MTAServiceController(serviceName, tenantName, groupName);
            var respondeModel     = await serviceController.CreateServiceAsync
                                        (_k8sClient, yamlBody, serviceBody);

            if (respondeModel.Item2 != null)
            {
                return(BadRequest(respondeModel.Item2));
            }

            return(Created(Url.RouteUrl("CreateService", new { serviceName, groupName }),
                           respondeModel.Item1));
        }
Exemplo n.º 3
0
        ReadServiceAsync(Kubernetes k8sClient)
        {
            try
            {
                var namespaceParams = PrepareNamespaceParams(_groupName);
                var serviceParams   = PrepareServiceParams(_serviceName);

                var v1Service = await k8sClient.ReadNamespacedServiceAsync
                                    (serviceParams.Item1, namespaceParams);

                var serviceModel = new MTAServiceModel(v1Service);
                return(new Tuple <MTAServiceModel, MTAErrorModel>(serviceModel, null));
            }
            catch (HttpOperationException ex)
            {
                var errorModel = new MTAErrorModel(ex);
                return(new Tuple <MTAServiceModel, MTAErrorModel>(null, errorModel));
            }
            catch (Exception)
            {
                throw;
            }
        }