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

Commit 9fd9797

Browse files
committed
fix extraction bugs, update console write lines
1 parent 5f04b7f commit 9fd9797

File tree

10 files changed

+31
-43
lines changed

10 files changed

+31
-43
lines changed

src/APIM_ARMTemplate/apimtemplate/Commands/Extract.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@ public ExtractCommand()
4141
Console.WriteLine("API Management Template");
4242
Console.WriteLine();
4343
Console.WriteLine("Connecting to {0} API Management Service on {1} Resource Group ...", apimname, resourceGroup);
44+
if (singleApiName != null)
45+
{
46+
Console.WriteLine("Executing extraction for {0} API ...", singleApiName);
47+
}
48+
else
49+
{
50+
Console.WriteLine("Executing full extraction ...", singleApiName);
51+
}
4452

4553
// initialize entity extractor classes
4654
FileWriter fileWriter = new FileWriter();
@@ -66,8 +74,8 @@ public ExtractCommand()
6674
// write templates to output file location
6775
string apiFileName = singleApiName == null ? @fileFolder + Path.DirectorySeparatorChar + apimname + "-apis-template.json" : @fileFolder + Path.DirectorySeparatorChar + apimname + "-" + singleApiName + "-api-template.json";
6876
fileWriter.WriteJSONToFile(apiTemplate, apiFileName);
69-
fileWriter.WriteJSONToFile(apiVersionSetTemplate, @fileFolder + Path.DirectorySeparatorChar + apimname + "-authorizationServers.json");
70-
fileWriter.WriteJSONToFile(authorizationTemplate, @fileFolder + Path.DirectorySeparatorChar + apimname + "-apiVersionSets.json");
77+
fileWriter.WriteJSONToFile(apiVersionSetTemplate, @fileFolder + Path.DirectorySeparatorChar + apimname + "-apiVersionSets.json");
78+
fileWriter.WriteJSONToFile(authorizationTemplate, @fileFolder + Path.DirectorySeparatorChar + apimname + "-authorizationServers.json");
7179
fileWriter.WriteJSONToFile(backendTemplate, @fileFolder + Path.DirectorySeparatorChar + apimname + "-backends.json");
7280
fileWriter.WriteJSONToFile(loggerTemplate, @fileFolder + Path.DirectorySeparatorChar + apimname + "-loggers.json");
7381
fileWriter.WriteJSONToFile(namedValueTemplate, @fileFolder + Path.DirectorySeparatorChar + apimname + "-namedValues.json");

src/APIM_ARMTemplate/apimtemplate/Creator/ExampleFiles/YAMLConfigs/valid.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ apis:
1919
policy: C:\Users\myUsername\Projects\azure-api-management-devops-example\src\APIM_ARMTemplate\apimtemplate\Creator\ExampleFiles\XMLPolicies\apiPolicyHeaders.xml
2020
suffix: conf
2121
subscriptionRequired: true
22+
isCurrent: true
2223
apiVersion: v1
2324
apiVersionDescription: My first version
2425
apiVersionSetId: myAPIVersionSetID

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/APIExtractor.cs

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ public async Task<Template> GenerateAPIsARMTemplate(string apimname, string reso
130130
string apiDetails = await GetAPIDetails(apimname, resourceGroup, apiName);
131131

132132
Console.WriteLine("------------------------------------------");
133-
Console.WriteLine("Getting operations from {0} API:", apiName);
133+
Console.WriteLine("Extracting resources from {0} API:", apiName);
134134

135135
// convert returned api to template resource class
136136
JObject oApiDetails = JObject.Parse(apiDetails);
@@ -147,7 +147,7 @@ public async Task<Template> GenerateAPIsARMTemplate(string apimname, string reso
147147
apiResource.dependsOn = new string[] { };
148148

149149
string versionSetName = apiResource.properties.apiVersionSetId;
150-
int versionSetPosition = versionSetName.IndexOf("api-version-sets/");
150+
int versionSetPosition = versionSetName.IndexOf("apiVersionSets/");
151151

152152
versionSetName = versionSetName.Substring(versionSetPosition, (versionSetName.Length - versionSetPosition));
153153
apiResource.properties.apiVersionSetId = $"[concat(resourceId('Microsoft.ApiManagement/service', parameters('ApimServiceName')), '/{versionSetName}')]";
@@ -221,7 +221,7 @@ public async Task<Template> GenerateAPIsARMTemplate(string apimname, string reso
221221
try
222222
{
223223
string operationPolicy = await GetOperationPolicy(apimname, resourceGroup, oApiName, operationName);
224-
Console.WriteLine($" - Policy found to {operationName} operation");
224+
Console.WriteLine($" - Operation policy found for {operationName} operation");
225225
PolicyTemplateResource operationPolicyResource = JsonConvert.DeserializeObject<PolicyTemplateResource>(operationPolicy);
226226
operationPolicyResource.name = $"[concat(parameters('ApimServiceName'), '/{oApiName}/{operationResourceName}/policy')]";
227227
operationPolicyResource.apiVersion = GlobalConstants.APIVersion;
@@ -230,20 +230,16 @@ public async Task<Template> GenerateAPIsARMTemplate(string apimname, string reso
230230

231231
templateResources.Add(operationPolicyResource);
232232
}
233-
catch (Exception)
234-
{
235-
Console.WriteLine($" - No policy found for {operationName} operation");
236-
}
233+
catch (Exception) { }
237234
}
238235
#endregion
239236

240237
#region API Policies
241238
// add api policy resource to api template
242239
try
243240
{
244-
Console.WriteLine("Getting API Policy from {0} API: ", apiName);
245241
string apiPolicies = await GetAPIPolicies(apimname, resourceGroup, apiName);
246-
Console.WriteLine("API Policy found!");
242+
Console.WriteLine("API policy found");
247243
PolicyTemplateResource apiPoliciesResource = JsonConvert.DeserializeObject<PolicyTemplateResource>(apiPolicies);
248244

249245
apiPoliciesResource.apiVersion = GlobalConstants.APIVersion;
@@ -252,26 +248,21 @@ public async Task<Template> GenerateAPIsARMTemplate(string apimname, string reso
252248

253249
templateResources.Add(apiPoliciesResource);
254250
}
255-
catch (Exception)
256-
{
257-
Console.WriteLine("No API policy!");
258-
}
251+
catch (Exception) { }
259252
#endregion
260253

261254
// add product api associations to template
262255
#region API Products
263256
try
264257
{
265-
Console.WriteLine("Getting API Products from {0} API: ", apiName);
266-
267258
// pull product api associations
268259
string apiProducts = await GetAPIProducts(apimname, resourceGroup, apiName);
269260
JObject oApiProducts = JObject.Parse(apiProducts);
270261

271262
foreach (var item in oApiProducts["value"])
272263
{
273264
string apiProductName = ((JValue)item["name"]).Value.ToString();
274-
Console.WriteLine($" -- {apiProductName} Product found to {oApiName} API");
265+
Console.WriteLine("'{0}' Product association found", apiProductName);
275266

276267
// convert returned api product associations to template resource class
277268
ProductAPITemplateResource productAPIResource = JsonConvert.DeserializeObject<ProductAPITemplateResource>(apiProducts);
@@ -284,16 +275,11 @@ public async Task<Template> GenerateAPIsARMTemplate(string apimname, string reso
284275
templateResources.Add(productAPIResource);
285276
}
286277
}
287-
catch (Exception)
288-
{
289-
Console.WriteLine("No API products!");
290-
}
278+
catch (Exception) { }
291279
#endregion
292280

293281
#region Diagnostics
294282
// add diagnostics to template
295-
Console.WriteLine("------------------------------------------");
296-
Console.WriteLine("Getting diagnostics from {0} API:", apiName);
297283
// pull diagnostics for api
298284
string diagnostics = await GetAPIDiagnostics(apimname, resourceGroup, apiName);
299285
JObject oDiagnostics = JObject.Parse(diagnostics);
@@ -350,8 +336,6 @@ public static JObject FormatoApi(string singleApiName, JObject oApi)
350336

351337
public async Task<List<TemplateResource>> GenerateSchemasARMTemplate(string apimServiceName, string apiName, string resourceGroup, string fileFolder)
352338
{
353-
Console.WriteLine("------------------------------------------");
354-
Console.WriteLine("Getting operation schemas from service");
355339
List<TemplateResource> templateResources = new List<TemplateResource>();
356340

357341
// pull all schemas from service
@@ -361,7 +345,7 @@ public async Task<List<TemplateResource>> GenerateSchemasARMTemplate(string apim
361345
foreach (var item in oSchemas["value"])
362346
{
363347
string schemaName = ((JValue)item["name"]).Value.ToString();
364-
Console.WriteLine("'{0}' Schema found", schemaName);
348+
Console.WriteLine("'{0}' Operation schema found", schemaName);
365349

366350
string schemaDetails = await GetAPISchemaDetails(apimServiceName, resourceGroup, apiName, schemaName);
367351

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/APIVersionSetExtractor.cs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public async Task<string> GetAPIVersionSetDetails(string ApiManagementName, stri
3333
public async Task<Template> GenerateAPIVersionSetsARMTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources)
3434
{
3535
Console.WriteLine("------------------------------------------");
36-
Console.WriteLine("Getting API Version Sets from service");
36+
Console.WriteLine("Extracting API version sets from service");
3737
Template armTemplate = GenerateEmptyTemplateWithParameters();
3838

3939
// isolate apis in the case of a single api extraction
@@ -51,19 +51,14 @@ public async Task<Template> GenerateAPIVersionSetsARMTemplate(string apimname, s
5151
string versionSetDetails = await GetAPIVersionSetDetails(apimname, resourceGroup, versionSetName);
5252

5353
// convert returned product to template resource class
54-
JsonSerializerSettings settings = new JsonSerializerSettings
55-
{
56-
NullValueHandling = NullValueHandling.Ignore,
57-
MissingMemberHandling = MissingMemberHandling.Ignore
58-
};
59-
APIVersionSetTemplateResource versionSetTemplateResource = JsonConvert.DeserializeObject<APIVersionSetTemplateResource>(versionSetDetails, settings);
54+
APIVersionSetTemplateResource versionSetTemplateResource = JsonConvert.DeserializeObject<APIVersionSetTemplateResource>(versionSetDetails);
6055
versionSetTemplateResource.name = $"[concat(parameters('ApimServiceName'), '/{versionSetName}')]";
6156
versionSetTemplateResource.apiVersion = GlobalConstants.APIVersion;
6257

6358
// 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
64-
if (singleApiName == null || apiResources.SingleOrDefault(api => (api as APITemplateResource).properties.apiVersionSetId.Contains(versionSetName)) != null)
59+
if (singleApiName == null || apiResources.SingleOrDefault(api => (api as APITemplateResource).properties.apiVersionSetId != null && (api as APITemplateResource).properties.apiVersionSetId.Contains(versionSetName)) != null)
6560
{
66-
Console.WriteLine("'{0}' API Version Set found", versionSetName);
61+
Console.WriteLine("'{0}' API version set found", versionSetName);
6762
templateResources.Add(versionSetTemplateResource);
6863
}
6964
}

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/AuthorizationServerExtractor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public async Task<string> GetAuthorizationServer(string ApiManagementName, strin
3333
public async Task<Template> GenerateAuthorizationServersARMTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources)
3434
{
3535
Console.WriteLine("------------------------------------------");
36-
Console.WriteLine("Getting authorization servers from service");
36+
Console.WriteLine("Extracting authorization servers from service");
3737
Template armTemplate = GenerateEmptyTemplateWithParameters();
3838

3939
List<TemplateResource> templateResources = new List<TemplateResource>();
@@ -69,7 +69,7 @@ public async Task<Template> GenerateAuthorizationServersARMTemplate(string apimn
6969
}
7070
if (singleApiName == null || isReferencedByAPI)
7171
{
72-
Console.WriteLine("'{0}' Authorization Server found", authorizationServerName);
72+
Console.WriteLine("'{0}' Authorization server found", authorizationServerName);
7373
templateResources.Add(authorizationServerTemplateResource);
7474
}
7575
}

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/BackendExtractor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public async Task<string> GetBackend(string ApiManagementName, string ResourceGr
3333
public async Task<Template> GenerateBackendsARMTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources, List<TemplateResource> propertyResources)
3434
{
3535
Console.WriteLine("------------------------------------------");
36-
Console.WriteLine("Getting backends from service");
36+
Console.WriteLine("Extracting backends from service");
3737
Template armTemplate = GenerateEmptyTemplateWithParameters();
3838

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

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/LoggerExtractor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public async Task<string> GetLogger(string ApiManagementName, string ResourceGro
3333
public async Task<Template> GenerateLoggerTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources)
3434
{
3535
Console.WriteLine("------------------------------------------");
36-
Console.WriteLine("Getting loggers from service");
36+
Console.WriteLine("Extracting loggers from service");
3737
Template armTemplate = GenerateEmptyTemplateWithParameters();
3838

3939
// isolate product api associations in the case of a single api extraction

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/ProductExtractor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public async Task<string> GetProductDetails(string ApiManagementName, string Res
3333
public async Task<Template> GenerateProductsARMTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources)
3434
{
3535
Console.WriteLine("------------------------------------------");
36-
Console.WriteLine("Getting products from service");
36+
Console.WriteLine("Extracting products from service");
3737
Template armTemplate = GenerateEmptyTemplateWithParameters();
3838

3939
// isolate product api associations in the case of a single api extraction

src/APIM_ARMTemplate/apimtemplate/Extractor/EntityExtractors/PropertyExtractor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public async Task<string> GetProperty(string ApiManagementName, string ResourceG
3232
public async Task<Template> GenerateNamedValuesTemplate(string apimname, string resourceGroup, string singleApiName, List<TemplateResource> apiTemplateResources)
3333
{
3434
Console.WriteLine("------------------------------------------");
35-
Console.WriteLine("Getting named values from service");
35+
Console.WriteLine("Extracting named values from service");
3636
Template armTemplate = GenerateEmptyTemplateWithParameters();
3737

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

src/APIM_ARMTemplate/apimtemplate/Properties/launchSettings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"profiles": {
33
"apimtemplate": {
44
"commandName": "Project",
5-
"commandLineArgs": "extract --name LucasBlankUnlinked --resourceGroup LucasHuetHudsonInternal --fileFolder C:\\\\\\\\\\\\\\\\Users\\\\\\\\\\\\\\\\lucashh\\\\\\\\\\\\\\\\Desktop\\\\\\\\\\\\\\\\Projects\\\\\\\\\\\\\\\\APIM-ARM\\\\\\\\\\\\\\\\ExtractedTemplates\\\\\\\\Full"
5+
"commandLineArgs": "extract --name LucasBlankUnlinked --resourceGroup LucasHuetHudsonInternal --fileFolder C:\\\\\\\\\\\\\\\\Users\\\\\\\\\\\\\\\\lucashh\\\\\\\\\\\\\\\\Desktop\\\\\\\\\\\\\\\\Projects\\\\\\\\\\\\\\\\APIM-ARM\\\\\\\\\\\\\\\\ExtractedTemplates\\\\\\SingleAPI --apiName firstAPI"
66
}
77
}
88
}

0 commit comments

Comments
 (0)