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

Commit 8d69848

Browse files
authored
[Extractor]Add extractorConfig file to run extractor (#281)
* [Extractor]Add extractorConfig file * Remove writeline
1 parent beee89f commit 8d69848

File tree

4 files changed

+54
-32
lines changed

4 files changed

+54
-32
lines changed

src/APIM_ARMTemplate/apimtemplate/Commands/Extract.cs

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -15,33 +15,27 @@ public ExtractCommand()
1515
this.Name = GlobalConstants.ExtractName;
1616
this.Description = GlobalConstants.ExtractDescription;
1717

18-
var sourceApimName = this.Option("--sourceApimName <sourceApimName>", "Source API Management name", CommandOptionType.SingleValue);
19-
var destinationAPIManagementName = this.Option("--destinationApimName <destinationApimName>", "Destination API Management name", CommandOptionType.SingleValue);
20-
var resourceGroupName = this.Option("--resourceGroup <resourceGroup>", "Resource Group name", CommandOptionType.SingleValue);
21-
var fileFolderName = this.Option("--fileFolder <filefolder>", "ARM Template files folder", CommandOptionType.SingleValue);
22-
var apiName = this.Option("--apiName <apiName>", "API name", CommandOptionType.SingleValue);
23-
var linkedTemplatesBaseUrlName = this.Option("--linkedTemplatesBaseUrl <linkedTemplatesBaseUrl>", "Creates a master template with links", CommandOptionType.SingleValue);
24-
var linkedTemplatesUrlQueryString = this.Option("--linkedTemplatesUrlQueryString <linkedTemplatesUrlQueryString>", "Query string appended to linked templates uris that enables retrieval from private storage", CommandOptionType.SingleValue);
25-
var policyXMLBaseUrlName = this.Option("--policyXMLBaseUrl <policyXMLBaseUrl>", "Writes policies to local XML files that require deployment to remote folder", CommandOptionType.SingleValue);
26-
var splitAPITemplates = this.Option("--splitAPIs <splitAPIs>", "Split APIs into multiple templates", CommandOptionType.SingleValue);
27-
var apiVersionSetNameId = this.Option("--apiVersionSetName <apiVersionSetName>", "Name of the apiVersionSet you want to extract", CommandOptionType.SingleValue);
28-
2918
this.HelpOption();
3019

3120
this.OnExecute(async () =>
3221
{
22+
// convert config file to extractorConfig class
23+
FileReader fileReader = new FileReader();
24+
ExtractorConfig extractorConfig = fileReader.ConvertConfigJsonToExtractorConfig();
25+
3326
try
3427
{
35-
if (!sourceApimName.HasValue()) throw new Exception("Missing parameter <sourceApimName>.");
36-
if (!destinationAPIManagementName.HasValue()) throw new Exception("Missing parameter <destinationApimName>.");
37-
if (!resourceGroupName.HasValue()) throw new Exception("Missing parameter <resourceGroup>.");
38-
if (!fileFolderName.HasValue()) throw new Exception("Missing parameter <filefolder>.");
28+
if (extractorConfig.sourceApimName == null) throw new Exception("Missing parameter <sourceApimName>.");
29+
if (extractorConfig.destinationApimName == null) throw new Exception("Missing parameter <destinationApimName>.");
30+
if (extractorConfig.resourceGroup == null) throw new Exception("Missing parameter <resourceGroup>.");
31+
if (extractorConfig.fileFolder == null) throw new Exception("Missing parameter <filefolder>.");
3932

40-
string splitAPIs = splitAPITemplates.HasValue() ? splitAPITemplates.Value().ToString() : null;
41-
string apiVersionSetName = apiVersionSetNameId.HasValue() ? apiVersionSetNameId.Value().ToString() : null;
33+
string splitAPIs = extractorConfig.splitAPIs;
34+
string apiVersionSetName = extractorConfig.apiVersionSetName;
35+
string singleApiName = extractorConfig.apiName;
4236

4337
// validaion check
44-
if (splitAPIs != null && splitAPIs.Equals("true") && apiName.Values.Count > 0)
38+
if (splitAPIs != null && splitAPIs.Equals("true") && singleApiName != null)
4539
{
4640
throw new Exception("Can't use --splitAPIs and --apiName at same time");
4741
}
@@ -51,25 +45,19 @@ public ExtractCommand()
5145
throw new Exception("Can't use --splitAPIs and --apiVersionSetName at same time");
5246
}
5347

54-
if (apiName.Values.Count > 0 && apiVersionSetName != null)
48+
if (singleApiName != null && apiVersionSetName != null)
5549
{
5650
throw new Exception("Can't use --apiName and --apiVersionSetName at same time");
5751
}
5852

5953
// isolate cli parameters
60-
string resourceGroup = resourceGroupName.Value().ToString();
61-
string sourceApim = sourceApimName.Value().ToString();
62-
string destinationApim = destinationAPIManagementName.Value().ToString();
63-
string dirName = fileFolderName.Value().ToString();
64-
string linkedBaseUrl = linkedTemplatesBaseUrlName.HasValue() ? linkedTemplatesBaseUrlName.Value().ToString() : null;
65-
string linkedUrlQueryString = linkedTemplatesUrlQueryString.HasValue() ? linkedTemplatesUrlQueryString.Value().ToString() : null;
66-
string policyXMLBaseUrl = policyXMLBaseUrlName.HasValue() ? policyXMLBaseUrlName.Value().ToString() : null;
67-
string singleApiName = null;
68-
69-
if (apiName.Values.Count > 0)
70-
{
71-
singleApiName = apiName.Value().ToString();
72-
}
54+
string resourceGroup = extractorConfig.resourceGroup;
55+
string sourceApim = extractorConfig.sourceApimName;
56+
string destinationApim = extractorConfig.destinationApimName;
57+
string dirName = extractorConfig.fileFolder;
58+
string linkedBaseUrl = extractorConfig.linkedTemplatesBaseUrl;
59+
string linkedUrlQueryString = extractorConfig.linkedTemplatesUrlQueryString;
60+
string policyXMLBaseUrl = extractorConfig.policyXMLBaseUrl;
7361

7462
Console.WriteLine("API Management Template");
7563
Console.WriteLine();

src/APIM_ARMTemplate/apimtemplate/Common/FileHandlers/FileReader.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Threading.Tasks;
66
using YamlDotNet.Serialization;
77
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Create;
8+
using Microsoft.Azure.Management.ApiManagement.ArmTemplates.Extract;
89

910
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Common
1011
{
@@ -59,6 +60,17 @@ public async Task<CreatorConfig> ConvertConfigYAMLToCreatorConfigAsync(string co
5960
}
6061
}
6162

63+
public ExtractorConfig ConvertConfigJsonToExtractorConfig()
64+
{
65+
string extractorJsonPath = "extractorparams.json";
66+
using (StreamReader r = new StreamReader(extractorJsonPath))
67+
{
68+
string extractorJson = r.ReadToEnd();
69+
ExtractorConfig extractorConfig = JsonConvert.DeserializeObject<ExtractorConfig>(extractorJson);
70+
return extractorConfig;
71+
}
72+
}
73+
6274
public string RetrieveLocalFileContents(string fileLocation)
6375
{
6476
return File.ReadAllText(fileLocation);
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
namespace Microsoft.Azure.Management.ApiManagement.ArmTemplates.Extract
2+
{
3+
public class ExtractorConfig
4+
{
5+
public string sourceApimName { get; set; }
6+
public string destinationApimName { get; set; }
7+
public string resourceGroup { get; set; }
8+
public string fileFolder { get; set; }
9+
public string apiName { get; set; }
10+
public string linkedTemplatesBaseUrl { get; set; }
11+
public string linkedTemplatesUrlQueryString { get; set; }
12+
public string policyXMLBaseUrl { get; set; }
13+
public string splitAPIs { get; set; }
14+
public string apiVersionSetName { get; set; }
15+
}
16+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"sourceApimName": "<source-apim-name>",
3+
"destinationApimName": "<destination-apim-name>",
4+
"resourceGroup": "<resource-group>",
5+
"fileFolder": "<destination-file-folder>"
6+
}

0 commit comments

Comments
 (0)