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

Commit 4a9bd53

Browse files
authored
Merge pull request #205 from Leon-Africa/master
Try Catch for more descriptive error during extract
2 parents ce476f8 + edee226 commit 4a9bd53

File tree

1 file changed

+80
-72
lines changed
  • src/APIM_ARMTemplate/apimtemplate/Commands

1 file changed

+80
-72
lines changed

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)