Skip to content
This repository was archived by the owner on Feb 23, 2024. It is now read-only.

Commit 1956a08

Browse files
committed
2 parents 5503402 + da523b9 commit 1956a08

File tree

2 files changed

+81
-73
lines changed

2 files changed

+81
-73
lines changed

src/APIM_ARMTemplate/apimtemplate/Commands/Create.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public CreateCommand()
102102
foreach (Template apiTemplate in apiTemplates)
103103
{
104104
APITemplateResource apiResource = apiTemplate.resources.FirstOrDefault(resource => resource.type == ResourceTypeConstants.API) as APITemplateResource;
105-
APIConfig providedAPIConfiguration = creatorConfig.apis.FirstOrDefault(api => apiResource.name.Contains(api.name));
105+
APIConfig providedAPIConfiguration = creatorConfig.apis.FirstOrDefault(api => apiResource.properties.displayName.Equals(api.name, StringComparison.Ordinal));
106106
// if the api version is not null the api is split into multiple templates. If the template is split and the content value has been set, then the template is for a subsequent api
107107
string apiFileName = fileNameGenerator.GenerateCreatorAPIFileName(providedAPIConfiguration.name, apiTemplateCreator.isSplitAPI(providedAPIConfiguration), apiResource.properties.value == null, creatorConfig.apimServiceName);
108108
fileWriter.WriteJSONToFile(apiTemplate, String.Concat(creatorConfig.outputLocation, apiFileName));

src/APIM_ARMTemplate/apimtemplate/Commands/Extract.cs

Lines changed: 80 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -25,90 +25,98 @@ public ExtractCommand()
2525

2626
this.OnExecute(async () =>
2727
{
28-
if (!sourceApimName.HasValue()) throw new Exception("Missing parameter <sourceApimName>.");
29-
if (!destinationAPIManagementName.HasValue()) throw new Exception("Missing parameter <destinationApimName>.");
30-
if (!resourceGroupName.HasValue()) throw new Exception("Missing parameter <resourceGroup>.");
31-
if (!fileFolderName.HasValue()) throw new Exception("Missing parameter <filefolder>.");
28+
try
29+
{
30+
if (!sourceApimName.HasValue()) throw new Exception("Missing parameter <sourceApimName>.");
31+
if (!destinationAPIManagementName.HasValue()) throw new Exception("Missing parameter <destinationApimName>.");
32+
if (!resourceGroupName.HasValue()) throw new Exception("Missing parameter <resourceGroup>.");
33+
if (!fileFolderName.HasValue()) throw new Exception("Missing parameter <filefolder>.");
3234

33-
// isolate cli parameters
34-
string resourceGroup = resourceGroupName.Values[0].ToString();
35-
string sourceApim = sourceApimName.Values[0].ToString();
36-
string destinationApim = destinationAPIManagementName.Values[0].ToString();
37-
string fileFolder = fileFolderName.Values[0].ToString();
38-
string linkedBaseUrl = linkedTemplatesBaseUrlName.HasValue() ? linkedTemplatesBaseUrlName.Value().ToString() : null;
39-
string policyXMLBaseUrl = policyXMLBaseUrlName.HasValue() ? policyXMLBaseUrlName.Value().ToString() : null;
40-
string singleApiName = null;
35+
// isolate cli parameters
36+
string resourceGroup = resourceGroupName.Values[0].ToString();
37+
string sourceApim = sourceApimName.Values[0].ToString();
38+
string destinationApim = destinationAPIManagementName.Values[0].ToString();
39+
string fileFolder = fileFolderName.Values[0].ToString();
40+
string linkedBaseUrl = linkedTemplatesBaseUrlName.HasValue() ? linkedTemplatesBaseUrlName.Value().ToString() : null;
41+
string policyXMLBaseUrl = policyXMLBaseUrlName.HasValue() ? policyXMLBaseUrlName.Value().ToString() : null;
42+
string singleApiName = null;
4143

42-
if (apiName.Values.Count > 0)
43-
{
44-
singleApiName = apiName.Values[0].ToString();
45-
}
44+
if (apiName.Values.Count > 0)
45+
{
46+
singleApiName = apiName.Values[0].ToString();
47+
}
4648

47-
Console.WriteLine("API Management Template");
48-
Console.WriteLine();
49-
Console.WriteLine("Connecting to {0} API Management Service on {1} Resource Group ...", sourceApim, resourceGroup);
50-
if (singleApiName != null)
51-
{
52-
Console.WriteLine("Executing extraction for {0} API ...", singleApiName);
53-
}
54-
else
55-
{
56-
Console.WriteLine("Executing full extraction ...", singleApiName);
57-
}
49+
Console.WriteLine("API Management Template");
50+
Console.WriteLine();
51+
Console.WriteLine("Connecting to {0} API Management Service on {1} Resource Group ...", sourceApim, resourceGroup);
52+
if (singleApiName != null)
53+
{
54+
Console.WriteLine("Executing extraction for {0} API ...", singleApiName);
55+
}
56+
else
57+
{
58+
Console.WriteLine("Executing full extraction ...", singleApiName);
59+
}
5860

59-
// initialize file helper classes
60-
FileWriter fileWriter = new FileWriter();
61-
FileNameGenerator fileNameGenerator = new FileNameGenerator();
62-
FileNames fileNames = fileNameGenerator.GenerateFileNames(sourceApim);
61+
// initialize file helper classes
62+
FileWriter fileWriter = new FileWriter();
63+
FileNameGenerator fileNameGenerator = new FileNameGenerator();
64+
FileNames fileNames = fileNameGenerator.GenerateFileNames(sourceApim);
6365

64-
// initialize entity extractor classes
65-
APIExtractor apiExtractor = new APIExtractor(fileWriter);
66-
APIVersionSetExtractor apiVersionSetExtractor = new APIVersionSetExtractor();
67-
AuthorizationServerExtractor authorizationServerExtractor = new AuthorizationServerExtractor();
68-
BackendExtractor backendExtractor = new BackendExtractor();
69-
LoggerExtractor loggerExtractor = new LoggerExtractor();
70-
PropertyExtractor propertyExtractor = new PropertyExtractor();
71-
ProductExtractor productExtractor = new ProductExtractor(fileWriter);
72-
MasterTemplateExtractor masterTemplateExtractor = new MasterTemplateExtractor();
66+
// initialize entity extractor classes
67+
APIExtractor apiExtractor = new APIExtractor(fileWriter);
68+
APIVersionSetExtractor apiVersionSetExtractor = new APIVersionSetExtractor();
69+
AuthorizationServerExtractor authorizationServerExtractor = new AuthorizationServerExtractor();
70+
BackendExtractor backendExtractor = new BackendExtractor();
71+
LoggerExtractor loggerExtractor = new LoggerExtractor();
72+
PropertyExtractor propertyExtractor = new PropertyExtractor();
73+
ProductExtractor productExtractor = new ProductExtractor(fileWriter);
74+
MasterTemplateExtractor masterTemplateExtractor = new MasterTemplateExtractor();
7375

74-
// extract templates from apim service
75-
Template apiTemplate = await apiExtractor.GenerateAPIsARMTemplateAsync(sourceApim, resourceGroup, singleApiName, policyXMLBaseUrl, fileFolder);
76-
List<TemplateResource> apiTemplateResources = apiTemplate.resources.ToList();
77-
Template apiVersionSetTemplate = await apiVersionSetExtractor.GenerateAPIVersionSetsARMTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
78-
Template authorizationServerTemplate = await authorizationServerExtractor.GenerateAuthorizationServersARMTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
79-
Template loggerTemplate = await loggerExtractor.GenerateLoggerTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
80-
Template productTemplate = await productExtractor.GenerateProductsARMTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl, fileFolder);
81-
Template namedValueTemplate = await propertyExtractor.GenerateNamedValuesTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
82-
List<TemplateResource> namedValueResources = namedValueTemplate.resources.ToList();
83-
Template backendTemplate = await backendExtractor.GenerateBackendsARMTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, namedValueResources, policyXMLBaseUrl);
76+
// extract templates from apim service
77+
Template apiTemplate = await apiExtractor.GenerateAPIsARMTemplateAsync(sourceApim, resourceGroup, singleApiName, policyXMLBaseUrl, fileFolder);
78+
List<TemplateResource> apiTemplateResources = apiTemplate.resources.ToList();
79+
Template apiVersionSetTemplate = await apiVersionSetExtractor.GenerateAPIVersionSetsARMTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
80+
Template authorizationServerTemplate = await authorizationServerExtractor.GenerateAuthorizationServersARMTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
81+
Template loggerTemplate = await loggerExtractor.GenerateLoggerTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
82+
Template productTemplate = await productExtractor.GenerateProductsARMTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl, fileFolder);
83+
Template namedValueTemplate = await propertyExtractor.GenerateNamedValuesTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, policyXMLBaseUrl);
84+
List<TemplateResource> namedValueResources = namedValueTemplate.resources.ToList();
85+
Template backendTemplate = await backendExtractor.GenerateBackendsARMTemplateAsync(sourceApim, resourceGroup, singleApiName, apiTemplateResources, namedValueResources, policyXMLBaseUrl);
8486

85-
// create parameters file
86-
Template templateParameters = masterTemplateExtractor.CreateMasterTemplateParameterValues(destinationApim, linkedBaseUrl, policyXMLBaseUrl);
87+
// create parameters file
88+
Template templateParameters = masterTemplateExtractor.CreateMasterTemplateParameterValues(destinationApim, linkedBaseUrl, policyXMLBaseUrl);
8789

88-
// write templates to output file location
89-
string apiFileName = fileNameGenerator.GenerateExtractorAPIFileName(singleApiName, sourceApim);
90-
fileWriter.WriteJSONToFile(apiTemplate, String.Concat(@fileFolder, apiFileName));
91-
fileWriter.WriteJSONToFile(apiVersionSetTemplate, String.Concat(@fileFolder, fileNames.apiVersionSets));
92-
fileWriter.WriteJSONToFile(authorizationServerTemplate, String.Concat(@fileFolder, fileNames.authorizationServers));
93-
fileWriter.WriteJSONToFile(backendTemplate, String.Concat(@fileFolder, fileNames.backends));
94-
fileWriter.WriteJSONToFile(loggerTemplate, String.Concat(@fileFolder, fileNames.loggers));
95-
fileWriter.WriteJSONToFile(namedValueTemplate, String.Concat(@fileFolder, fileNames.namedValues));
96-
fileWriter.WriteJSONToFile(productTemplate, String.Concat(@fileFolder, fileNames.products));
90+
// write templates to output file location
91+
string apiFileName = fileNameGenerator.GenerateExtractorAPIFileName(singleApiName, sourceApim);
92+
fileWriter.WriteJSONToFile(apiTemplate, String.Concat(@fileFolder, apiFileName));
93+
fileWriter.WriteJSONToFile(apiVersionSetTemplate, String.Concat(@fileFolder, fileNames.apiVersionSets));
94+
fileWriter.WriteJSONToFile(authorizationServerTemplate, String.Concat(@fileFolder, fileNames.authorizationServers));
95+
fileWriter.WriteJSONToFile(backendTemplate, String.Concat(@fileFolder, fileNames.backends));
96+
fileWriter.WriteJSONToFile(loggerTemplate, String.Concat(@fileFolder, fileNames.loggers));
97+
fileWriter.WriteJSONToFile(namedValueTemplate, String.Concat(@fileFolder, fileNames.namedValues));
98+
fileWriter.WriteJSONToFile(productTemplate, String.Concat(@fileFolder, fileNames.products));
9799

98-
if (linkedBaseUrl != null)
99-
{
100-
// create a master template that links to all other templates
101-
Template masterTemplate = masterTemplateExtractor.GenerateLinkedMasterTemplate(apiTemplate, apiVersionSetTemplate, productTemplate, loggerTemplate, backendTemplate, authorizationServerTemplate, namedValueTemplate, fileNames, apiFileName, policyXMLBaseUrl);
102-
fileWriter.WriteJSONToFile(masterTemplate, String.Concat(@fileFolder, fileNames.linkedMaster));
103-
}
100+
if (linkedBaseUrl != null)
101+
{
102+
// create a master template that links to all other templates
103+
Template masterTemplate = masterTemplateExtractor.GenerateLinkedMasterTemplate(apiTemplate, apiVersionSetTemplate, productTemplate, loggerTemplate, backendTemplate, authorizationServerTemplate, namedValueTemplate, fileNames, apiFileName, policyXMLBaseUrl);
104+
fileWriter.WriteJSONToFile(masterTemplate, String.Concat(@fileFolder, fileNames.linkedMaster));
105+
}
104106

105-
// write parameters to outputLocation
106-
fileWriter.WriteJSONToFile(templateParameters, String.Concat(fileFolder, fileNames.parameters));
107-
Console.WriteLine("Templates written to output location");
108-
Console.WriteLine("Press any key to exit process:");
107+
// write parameters to outputLocation
108+
fileWriter.WriteJSONToFile(templateParameters, String.Concat(fileFolder, fileNames.parameters));
109+
Console.WriteLine("Templates written to output location");
110+
Console.WriteLine("Press any key to exit process:");
109111
#if DEBUG
110-
Console.ReadKey();
112+
Console.ReadKey();
111113
#endif
114+
}
115+
catch (Exception ex)
116+
{
117+
Console.WriteLine("Error occured: " + ex.Message);
118+
throw;
119+
}
112120
});
113121
}
114122
}

0 commit comments

Comments
 (0)