public void Created(ProductInfoEntity entity) { _logger.LogDebug(nameof(Created)); try { var existingProductAvailability = _kubernetesClient.ApiClient.GetNamespacedCustomObject( ProductAvailabilityEntity.CrdGroup , ProductAvailabilityEntity.CrdApiVersion , Namespace, ProductAvailabilityEntity.CrdPluralName, entity.Metadata.Name); } catch (HttpOperationException ex) { if (ex.Response.StatusCode == HttpStatusCode.NotFound) { var x = new ProductAvailabilityEntity { ApiVersion = ProductAvailabilityEntity.CrdGroup + "/" + ProductAvailabilityEntity.CrdApiVersion, Kind = ProductAvailabilityEntity.CrdKind, Metadata = { Name = entity.Metadata.Name }, Spec = { LastUpdateTimeStamp = DateTime.UtcNow, AvailableQuantity = entity.Spec.MaximumQuantity } }; var body = JObject.FromObject(x, _camelCaseSerializer); _kubernetesClient.ApiClient.CreateNamespacedCustomObject(body, ProductAvailabilityEntity.CrdGroup , ProductAvailabilityEntity.CrdApiVersion , Namespace, ProductAvailabilityEntity.CrdPluralName); } } }
public ActionResult <ProductAvailabilityReadDto> GetProductFromWareHouse(GetProductCommand getProductCommand) { var productAvailabilityJson = _kubernetesClient.GetNamespacedCustomObject( ProductAvailabilityEntity.CrdGroup, ProductAvailabilityEntity.CrdApiVersion, Namespace, ProductAvailabilityEntity.CrdPluralName, getProductCommand.ProductId) as JObject; var productAvailability = productAvailabilityJson.ToObject <ProductAvailabilityEntity>(); if (productAvailability.Spec.AvailableQuantity >= getProductCommand.Quantity) { var x = new ProductAvailabilityEntity { ApiVersion = ProductAvailabilityEntity.CrdGroup + "/" + ProductAvailabilityEntity.CrdApiVersion, Kind = ProductAvailabilityEntity.CrdKind, Metadata = { Name = getProductCommand.ProductId, ResourceVersion = productAvailability.Metadata.ResourceVersion }, Spec = { LastUpdateTimeStamp = DateTime.UtcNow, AvailableQuantity = productAvailability.Spec.AvailableQuantity - getProductCommand.Quantity } }; var body = JObject.FromObject(x, _camelCaseSerializer); productAvailabilityJson = _kubernetesClient.ReplaceNamespacedCustomObject(body, ProductAvailabilityEntity.CrdGroup, ProductAvailabilityEntity.CrdApiVersion , Namespace, ProductAvailabilityEntity.CrdPluralName, getProductCommand.ProductId) as JObject; productAvailability = productAvailabilityJson.ToObject <ProductAvailabilityEntity>(); return(new ProductAvailabilityReadDto { AvailableQuantity = productAvailability.Spec.AvailableQuantity, Id = productAvailability.Metadata.Name }); } return(BadRequest(new { Error = $"There are only {productAvailability.Spec.AvailableQuantity} items for product {getProductCommand.ProductId}, {getProductCommand.Quantity} items cannot be requested" })); }
public ActionResult <ProductAvailabilityReadDto> AddProductAvailability(ProductAvailabilityDto productAvailabilityDto) { var x = new ProductAvailabilityEntity { ApiVersion = ProductAvailabilityEntity.CrdGroup + "/" + ProductAvailabilityEntity.CrdApiVersion, Kind = ProductAvailabilityEntity.CrdKind, Metadata = { Name = productAvailabilityDto.Id }, Spec = { AvailableQuantity = productAvailabilityDto.AvailableQuantity } }; var body = JObject.FromObject(x, _camelCaseSerializer); var retJson = _kubernetesClient.CreateNamespacedCustomObject(body, ProductAvailabilityEntity.CrdGroup , ProductAvailabilityEntity.CrdApiVersion , Namespace, ProductAvailabilityEntity.CrdPluralName) as JObject; var ret = retJson.ToObject <ProductAvailabilityEntity>(); return(new ProductAvailabilityReadDto { AvailableQuantity = ret.Spec.AvailableQuantity, Id = ret.Metadata.Name, CreationTimeStamp = ret.Metadata.CreationTimestamp }); }