private async Task <V1alpha1Ticket> PatchTicketStatusAsync(V1alpha1Ticket ticket, CancellationToken cancellationToken) { var policy = Policy .Handle <HttpOperationException>(ex => ex.Response.StatusCode == HttpStatusCode.NotFound) .WaitAndRetryAsync(3, attempt => TimeSpan.FromMilliseconds(25 * Math.Pow(2, attempt))); var status = new V1alpha1TicketStatus { UniqueId = Guid.NewGuid().ToString("n", CultureInfo.InvariantCulture), WorkflowState = "Created", ContactInfo = "*****@*****.**", }; return(await policy.ExecuteAsync(async() => { var result = await _client.PatchNamespacedCustomObjectAsync( new V1alpha1Ticket { Status = status }, group: V1alpha1Ticket.KubeGroup, version: V1alpha1Ticket.KubeApiVersion, namespaceParameter: ticket.Namespace(), plural: "tickets", name: ticket.Name(), cancellationToken: cancellationToken); return _serializers.Convert <V1alpha1Ticket>(result); })); }
private async Task <V1alpha1Ticket> CreateTicketAsync(CancellationToken cancellationToken) { // create a new ticket each time the example runs var ticket = new V1alpha1Ticket { ApiVersion = $"{V1alpha1Ticket.KubeGroup}/{V1alpha1Ticket.KubeApiVersion}", Kind = V1alpha1Ticket.KubeKind, Metadata = new V1ObjectMeta( name: $"example-{new Random().Next(1000, 10000)}", namespaceProperty: "default"), Spec = new V1alpha1TicketSpec { ProviderClass = "github-operatorframework-tickets", Severity = "low", Title = $"Example ticket created for process {Process.GetCurrentProcess().Id}" } }; var ticketResult = await _client.CreateOrReplaceNamespacedCustomObjectAsync( V1alpha1Ticket.KubeGroup, V1alpha1Ticket.KubeApiVersion, "tickets", ticket, cancellationToken); Logger.LogInformation("Updated {Kind} {Name}.{Namespace} {ResourceVersion}", ticketResult.Kind, ticketResult.Name(), ticketResult.Namespace(), ticketResult.ResourceVersion()); return(ticketResult); }