Example #1
0
        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);
            }));
        }
Example #2
0
        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);
        }