src/Azure.Deployments.Extensibility.Extensions.Kubernetes/KubernetesExtensionDispatcher.cs (39 lines of code) (raw):

// Copyright (c) Microsoft Corporation. // Licensed under the MIT License. using Azure.Deployments.Extensibility.AspNetCore; using Azure.Deployments.Extensibility.AspNetCore.Exceptions; using Azure.Deployments.Extensibility.Core.V2.Models; using Azure.Deployments.Extensibility.Core.V2.Validation; using Azure.Deployments.Extensibility.Extensions.Kubernetes.Client; using Semver; namespace Azure.Deployments.Extensibility.Extensions.Kubernetes { public class KubernetesExtensionDispatcher : IExtensionDispatcher { private readonly IModelValidator<ResourceSpecification> resourceSpecificationValidator; private readonly IModelValidator<ResourceReference> resourceReferenceValidator; private readonly IK8sClientFactory clientFactory; public KubernetesExtensionDispatcher( IModelValidator<ResourceSpecification> resourceSpecificationValidator, IModelValidator<ResourceReference> resourceReferenceValidator, IK8sClientFactory clientFactory) { this.resourceSpecificationValidator = resourceSpecificationValidator; this.resourceReferenceValidator = resourceReferenceValidator; this.clientFactory = clientFactory; } public IExtension DispatchExtension(string extensionVersion) { ValidateExtensionVersion(extensionVersion); return new KubernetesExtension( this.resourceSpecificationValidator, this.resourceReferenceValidator, this.clientFactory); } private static void ValidateExtensionVersion(string extensionVersion) { if (!SemVersion.TryParse(extensionVersion, SemVersionStyles.Strict, out var _)) { throw new ErrorResponseException("InvalidKubernetesExtensionVersion", "The extension version must be in the Semantic Versioning 2.0 format."); } } } }