Beispiel #1
0
        public void ShouldCreateAPIVersionSetTemplateFromCreatorConfig()
        {
            // arrange
            APIVersionSetTemplateCreator apiVersionSetTemplateCreator = APIVersionSetTemplateCreatorFactory.GenerateAPIVersionSetTemplateCreator();
            CreatorConfig creatorConfig = new CreatorConfig()
            {
                apiVersionSet = new APIVersionSetConfig()
                {
                    id                = "id",
                    description       = "description",
                    displayName       = "displayName",
                    versionHeaderName = "versionHeaderName",
                    versioningScheme  = "versioningScheme",
                    versionQueryName  = "versionQueryName"
                }
            };

            // act
            Template versionSetTemplate = apiVersionSetTemplateCreator.CreateAPIVersionSetTemplate(creatorConfig);
            APIVersionSetTemplateResource apiVersionSetTemplateResource = (APIVersionSetTemplateResource)versionSetTemplate.resources[0];

            // assert
            Assert.Equal(creatorConfig.apiVersionSet.description, apiVersionSetTemplateResource.properties.description);
            Assert.Equal(creatorConfig.apiVersionSet.displayName, apiVersionSetTemplateResource.properties.displayName);
            Assert.Equal(creatorConfig.apiVersionSet.versionHeaderName, apiVersionSetTemplateResource.properties.versionHeaderName);
            Assert.Equal(creatorConfig.apiVersionSet.versioningScheme, apiVersionSetTemplateResource.properties.versioningScheme);
            Assert.Equal(creatorConfig.apiVersionSet.versionQueryName, apiVersionSetTemplateResource.properties.versionQueryName);
        }
Beispiel #2
0
        public async Task <Template> Create(DeploymentDefinition creatorConfig)
        {
            var template = EmptyTemplate;

            template.Parameters.Add(ApiServiceNameParameter.Key, ApiServiceNameParameter.Value);

            var resources = new List <TemplateResource>();

            foreach (var apiVersionSet in creatorConfig.ApiVersionSets)
            {
                var apiVersionSetTemplateResource = new APIVersionSetTemplateResource()
                {
                    Name       = $"[concat(parameters('ApimServiceName'), '/{apiVersionSet.Name}')]",
                    Properties = new ApiVersionSetProperties()
                    {
                        DisplayName       = apiVersionSet.DisplayName,
                        Description       = apiVersionSet.Description,
                        VersionHeaderName = apiVersionSet.VersionHeaderName,
                        VersionQueryName  = apiVersionSet.VersionQueryName,
                        VersioningScheme  = apiVersionSet.VersioningScheme,
                    },
                    DependsOn = new string[] { }
                };

                resources.Add(apiVersionSetTemplateResource);
            }

            template.Resources = resources.ToArray();
            return(await Task.FromResult(template));
        }
Beispiel #3
0
        public void ShouldUseDefaultResourceNameWithoutProvidedId()
        {
            // arrange
            APIVersionSetTemplateCreator apiVersionSetTemplateCreator = APIVersionSetTemplateCreatorFactory.GenerateAPIVersionSetTemplateCreator();
            CreatorConfig creatorConfig = new CreatorConfig()
            {
                apiVersionSet = new APIVersionSetConfig()
            };

            // act
            Template versionSetTemplate = apiVersionSetTemplateCreator.CreateAPIVersionSetTemplate(creatorConfig);
            APIVersionSetTemplateResource apiVersionSetTemplateResource = (APIVersionSetTemplateResource)versionSetTemplate.resources[0];

            // assert
            Assert.Equal("[concat(parameters('ApimServiceName'), '/versionset')]", apiVersionSetTemplateResource.name);
        }
Beispiel #4
0
        public void ShouldUseProvidedIdInResourceName()
        {
            // arrange
            APIVersionSetTemplateCreator apiVersionSetTemplateCreator = APIVersionSetTemplateCreatorFactory.GenerateAPIVersionSetTemplateCreator();
            CreatorConfig creatorConfig = new CreatorConfig()
            {
                apiVersionSet = new APIVersionSetConfig()
                {
                    id = "id"
                }
            };

            // act
            Template versionSetTemplate = apiVersionSetTemplateCreator.CreateAPIVersionSetTemplate(creatorConfig);
            APIVersionSetTemplateResource apiVersionSetTemplateResource = (APIVersionSetTemplateResource)versionSetTemplate.resources[0];

            // assert
            Assert.Equal($"[concat(parameters('ApimServiceName'), '/{creatorConfig.apiVersionSet.id}')]", apiVersionSetTemplateResource.name);
        }
Beispiel #5
0
        public Template CreateAPIVersionSetTemplate(CreatorConfig creatorConfig)
        {
            // create empty template
            Template apiVersionSetTemplate = CreateEmptyTemplate();

            // add parameters
            apiVersionSetTemplate.parameters = new Dictionary <string, TemplateParameterProperties>
            {
                { ParameterNames.ApimServiceName, new TemplateParameterProperties()
                  {
                      type = "string"
                  } }
            };

            List <TemplateResource> resources = new List <TemplateResource>();

            foreach (APIVersionSetConfig apiVersionSet in creatorConfig.apiVersionSets)
            {
                // create apiVersionSet resource with properties
                // default version set id to version set if id is not provided
                string versionSetId = (apiVersionSet != null && apiVersionSet.id != null) ? apiVersionSet.id : "versionset";
                APIVersionSetTemplateResource apiVersionSetTemplateResource = new APIVersionSetTemplateResource()
                {
                    name       = $"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{versionSetId}')]",
                    type       = ResourceTypeConstants.APIVersionSet,
                    apiVersion = GlobalConstants.APIVersion,
                    properties = new APIVersionSetProperties()
                    {
                        displayName       = apiVersionSet.displayName,
                        description       = apiVersionSet.description,
                        versionHeaderName = apiVersionSet.versionHeaderName,
                        versionQueryName  = apiVersionSet.versionQueryName,
                        versioningScheme  = apiVersionSet.versioningScheme,
                    },
                    dependsOn = new string[] { }
                };
                resources.Add(apiVersionSetTemplateResource);
            }

            apiVersionSetTemplate.resources = resources.ToArray();
            return(apiVersionSetTemplate);
        }
Beispiel #6
0
        private void GenerateVersionSetARMTemplate(string apimname, string resourceGroup, string versionSetName, string fileFolder)
        {
            APIExtractor apiExtractor = new APIExtractor();
            Template     armTemplate  = GenerateEmptyTemplateWithParameters();

            List <TemplateResource> templateResources = new List <TemplateResource>();

            string versionSet = apiExtractor.GetAPIVersionSet(apimname, resourceGroup, versionSetName).Result;
            APIVersionSetTemplateResource versionSetResource = JsonConvert.DeserializeObject <APIVersionSetTemplateResource>(versionSet);

            string filePath = fileFolder + Path.DirectorySeparatorChar + string.Format(versionSetResource.name, "/", "-") + ".json";

            versionSetResource.name       = $"[concat(parameters('ApimServiceName'), '/{versionSetResource.name}')]";
            versionSetResource.apiVersion = "2018-06-01-preview";

            templateResources.Add(versionSetResource);
            armTemplate.resources = templateResources.ToArray();

            FileWriter fileWriter = new FileWriter();

            fileWriter.WriteJSONToFile(armTemplate, filePath);
        }
        public Template CreateAPIVersionSetTemplate(CreatorConfig creatorConfig)
        {
            // create empty template
            Template apiVersionSetTemplate = this.templateCreator.CreateEmptyTemplate();

            // add parameters
            apiVersionSetTemplate.parameters = new Dictionary <string, TemplateParameterProperties>
            {
                { "ApimServiceName", new TemplateParameterProperties()
                  {
                      type = "string"
                  } }
            };

            List <TemplateResource> resources = new List <TemplateResource>();
            // create apiVersionSet resource with properties
            string versionSetId = (creatorConfig.apiVersionSet != null && creatorConfig.apiVersionSet.id != null) ? creatorConfig.apiVersionSet.id : "versionset";
            APIVersionSetTemplateResource apiVersionSetTemplateResource = new APIVersionSetTemplateResource()
            {
                name       = $"[concat(parameters('ApimServiceName'), '/{versionSetId}')]",
                type       = "Microsoft.ApiManagement/service/api-version-sets",
                apiVersion = "2018-01-01",
                properties = new APIVersionSetProperties()
                {
                    displayName       = creatorConfig.apiVersionSet.displayName,
                    description       = creatorConfig.apiVersionSet.description,
                    versionHeaderName = creatorConfig.apiVersionSet.versionHeaderName,
                    versionQueryName  = creatorConfig.apiVersionSet.versionQueryName,
                    versioningScheme  = creatorConfig.apiVersionSet.versioningScheme,
                },
                dependsOn = new string[] { }
            };

            resources.Add(apiVersionSetTemplateResource);

            apiVersionSetTemplate.resources = resources.ToArray();
            return(apiVersionSetTemplate);
        }
        public async Task <Template> GenerateAPIVersionSetsARMTemplateAsync(string apimname, string resourceGroup, string singleApiName, List <TemplateResource> apiTemplateResources, string policyXMLBaseUrl, string policyXMLSasToken)
        {
            Console.WriteLine("------------------------------------------");
            Console.WriteLine("Extracting API version sets from service");
            Template armTemplate = GenerateEmptyTemplateWithParameters(policyXMLBaseUrl, policyXMLSasToken);

            // isolate apis in the case of a single api extraction
            var apiResources = apiTemplateResources.Where(resource => resource.type == ResourceTypeConstants.API);

            List <TemplateResource> templateResources = new List <TemplateResource>();

            // pull all version sets for service
            string versionSets = await GetAPIVersionSetsAsync(apimname, resourceGroup);

            JObject oVersionSets = JObject.Parse(versionSets);

            foreach (var item in oVersionSets["value"])
            {
                string versionSetName    = ((JValue)item["name"]).Value.ToString();
                string versionSetDetails = await GetAPIVersionSetDetailsAsync(apimname, resourceGroup, versionSetName);

                // convert returned product to template resource class
                APIVersionSetTemplateResource versionSetTemplateResource = JsonConvert.DeserializeObject <APIVersionSetTemplateResource>(versionSetDetails);
                versionSetTemplateResource.name       = $"[concat(parameters('{ParameterNames.ApimServiceName}'), '/{versionSetName}')]";
                versionSetTemplateResource.apiVersion = GlobalConstants.APIVersion;

                // only extract the product if this is a full extraction, or in the case of a single api, if it is found in products associated with the api
                if (singleApiName == null || apiResources.SingleOrDefault(api => (api as APITemplateResource).properties.apiVersionSetId != null && (api as APITemplateResource).properties.apiVersionSetId.Contains(versionSetName)) != null)
                {
                    Console.WriteLine("'{0}' API version set found", versionSetName);
                    templateResources.Add(versionSetTemplateResource);
                }
            }

            armTemplate.resources = templateResources.ToArray();
            return(armTemplate);
        }
        private void GenerateVersionSetARMTemplate(string apimname, string resourceGroup, string versionSetName, string fileFolder)
        {
            APIExtractor apiExtractor = new APIExtractor();
            Template     armTemplate  = new Template()
            {
                schema         = "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                contentVersion = "1.0.0.0",
                parameters     = new Dictionary <string, TemplateParameterProperties>
                {
                    { "ApimServiceName", new TemplateParameterProperties()
                      {
                          type = "string"
                      } }
                },
                variables = { },
                resources = { },
                outputs   = { }
            };

            List <TemplateResource> templateResources = new List <TemplateResource>();

            string versionSet = apiExtractor.GetAPIVersionSet(apimname, resourceGroup, versionSetName).Result;
            APIVersionSetTemplateResource versionSetResource = JsonConvert.DeserializeObject <APIVersionSetTemplateResource>(versionSet);

            string filePath = fileFolder + Path.DirectorySeparatorChar + string.Format(versionSetResource.name, "/", "-") + ".json";

            versionSetResource.name       = $"[concat(parameters('ApimServiceName'), '/{versionSetResource.name}')]";
            versionSetResource.apiVersion = "2018-06-01-preview";

            templateResources.Add(versionSetResource);
            armTemplate.resources = templateResources.ToArray();

            FileWriter fileWriter = new FileWriter();

            fileWriter.WriteJSONToFile(armTemplate, filePath);
        }