Пример #1
0
        private async Task <V1CustomResourceDefinition> CreateOrReplaceCustomResourceDefinitionAsync(
            V1CustomResourceDefinition customResourceDefinition,
            CancellationToken cancellationToken)
        {
            // TODO: log messages from here

            if (customResourceDefinition is null)
            {
                throw new ArgumentNullException(nameof(customResourceDefinition));
            }

            var existingList = await _client.ListCustomResourceDefinitionAsync(
                fieldSelector : $"metadata.name={customResourceDefinition.Name()}",
                cancellationToken : cancellationToken);

            var existingCustomResourceDefinition = existingList?.Items?.SingleOrDefault();

            if (existingCustomResourceDefinition != null)
            {
                customResourceDefinition.Metadata.ResourceVersion = existingCustomResourceDefinition.ResourceVersion();

                return(await _client.ReplaceCustomResourceDefinitionAsync(
                           customResourceDefinition,
                           customResourceDefinition.Name(),
                           cancellationToken : cancellationToken));
            }
            else
            {
                return(await _client.CreateCustomResourceDefinitionAsync(
                           customResourceDefinition,
                           cancellationToken : cancellationToken));
            }
        }
Пример #2
0
        public static async Task <V1CustomResourceDefinition> CreateOrReplaceCustomResourceDefinitionAsync(
            this IKubernetes client,
            V1CustomResourceDefinition customResourceDefinition,
            CancellationToken cancellationToken)
        {
            if (client is null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            if (customResourceDefinition is null)
            {
                throw new ArgumentNullException(nameof(customResourceDefinition));
            }

            var existingList = await client.ListCustomResourceDefinitionAsync(
                fieldSelector : $"metadata.name={customResourceDefinition.Name()}",
                cancellationToken : cancellationToken);

            var existingCustomResourceDefinition = existingList?.Items?.SingleOrDefault();

            if (existingCustomResourceDefinition != null)
            {
                customResourceDefinition.Metadata.ResourceVersion = existingCustomResourceDefinition.ResourceVersion();

                return(await client.ReplaceCustomResourceDefinitionAsync(
                           customResourceDefinition,
                           customResourceDefinition.Name(),
                           cancellationToken : cancellationToken));
            }
            else
            {
                return(await client.CreateCustomResourceDefinitionAsync(
                           customResourceDefinition,
                           cancellationToken : cancellationToken));
            }
        }