//need to return an object with property list and so on public JObject CreatePolicy(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); string servicename = ""; string apiname = ""; string operationname = ""; name = parametrizePropertiesOnly ? $"'{name}'" : $"parameters('{AddParameter($"operations_{name}_name", "string", name)}')"; var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); if (type == "Microsoft.ApiManagement/service/apis/policies") { var matches = Regex.Match(restObject.Value <string>("id"), "/service/(?<servicename>[a-zA-Z0-9_-]*)/apis/(?<apiname>[a-zA-Z0-9_-]*)"); servicename = matches.Groups["servicename"].Value; apiname = matches.Groups["apiname"].Value; apiname = parametrizePropertiesOnly ? $"'{apiname}'" : $"parameters('{AddParameter($"api_{apiname}_name", "string", apiname)}')"; obj.name = $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/', {apiname}, '/', {name})]"; } else if (type == "Microsoft.ApiManagement/service/apis/operations/policies") { var matches = Regex.Match(restObject.Value <string>("id"), "/service/(?<servicename>[a-zA-Z0-9_-]*)/apis/(?<apiname>[a-zA-Z0-9_-]*)/operations/(?<operationname>[a-zA-Z0-9_-]*)"); servicename = matches.Groups["servicename"].Value; apiname = matches.Groups["apiname"].Value; operationname = matches.Groups["operationname"].Value; apiname = parametrizePropertiesOnly ? $"'{apiname}'" : $"parameters('{AddParameter($"api_{apiname}_name", "string", apiname)}')"; operationname = parametrizePropertiesOnly ? $"'{operationname}'" : $"parameters('{AddParameter($"operations_{operationname}_name", "string", operationname)}')"; obj.name = $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/', {apiname}, '/', {operationname}, '/', {name})]"; } obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; var dependsOn = new JArray(); if (APIMInstanceAdded) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]"); } dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service/apis', parameters('service_{servicename}_name') , {apiname})]"); if (type == "Microsoft.ApiManagement/service/apis/operations/policies") { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service/apis/operations', parameters('service_{servicename}_name'), {apiname}, {operationname})]"); } resource["dependsOn"] = dependsOn; return(resource); //this.resources.Add(resource); }
public JObject AddApplicationInsightsInstance(JObject restObject) { var obj = new ResourceTemplate { comments = "Generated for resource " + restObject.Value <string>("id"), type = "Microsoft.Insights/components", }; var rid = new AzureResourceId(restObject.Value <string>("id")); var servicename = rid.ValueAfter("service"); string name = restObject.Value <string>("name"); obj.name = WrapParameterName(AddParameter($"{GetServiceName(servicename, false)}_applicationInsights", "string", name)); var resource = JObject.FromObject(obj); resource["location"] = WrapParameterName($"{GetServiceName(servicename, false)}_location"); resource["apiVersion"] = "2015-05-01"; resource["kind"] = "other"; resource["properties"] = JObject.FromObject(new { Application_Type = "other" }); if (APIMInstanceAdded) { resource["dependsOn"] = new JArray { $"[resourceId('Microsoft.ApiManagement/service', parameters('{GetServiceName(servicename)}'))]" }; } return(resource); }
public ResourceTemplate AddLogger(string servicename, string loggerNameParam) { string serviceNameParam = WrapParameterNameWithoutBrackets(GetServiceName(servicename)); string appInsightsRgNameParam = WrapParameterNameWithoutBrackets(AddParameter("app-insights-resourceGroup", "string", "")); string appInsightsNameParam = WrapParameterNameWithoutBrackets(AddParameter("app-insights-name", "string", "")); var loggerTemplate = new ResourceTemplate { type = "Microsoft.ApiManagement/service/loggers", properties = JObject.FromObject(new { loggerType = "applicationInsights", credentials = new { instrumentationKey = $"[reference(resourceId({appInsightsRgNameParam}, 'Microsoft.Insights/components', {appInsightsNameParam}), '2014-04-01').InstrumentationKey]" }, isBuffered = true }) }; loggerTemplate.AddName(serviceNameParam); loggerTemplate.AddName(loggerNameParam); if (resources.Any(r => r.Value <string>("name") == loggerTemplate.name)) { return(null); } resources.Add(JObject.FromObject(loggerTemplate)); return(loggerTemplate); }
public JObject AddProduct(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); AzureResourceId apiid = new AzureResourceId(restObject.Value <string>("id")); string servicename = apiid.ValueAfter("service"); var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = parametrizePropertiesOnly ? $"[concat(parameters('{AddParameter($"{GetServiceName(servicename)}", "string", servicename)}'), '/{name}')]" : $"[concat(parameters('{AddParameter($"{GetServiceName(servicename)}", "string", servicename)}'), '/' ,parameters('{AddParameter($"product_{name}_name", "string", name)}'))]"; obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; var dependsOn = new JArray(); if (APIMInstanceAdded) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('{GetServiceName(servicename)}'))]"); } resource["dependsOn"] = dependsOn; this.resources.Add(resource); return(resource); }
public JObject AddProductSubObject(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); var matches = Regex.Match(restObject.Value <string>("id"), "/service/(?<servicename>[a-zA-Z0-9_-]*)/products/(?<productname>[a-zA-Z0-9_-]*)"); string servicename = matches.Groups["servicename"].Value; string productname = matches.Groups["productname"].Value; productname = parametrizePropertiesOnly ? $"'{productname}'" : $"parameters('{AddParameter($"api_{productname}_name", "string", productname)}')"; var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/', {productname}, '/{name}')]"; obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; var dependsOn = new JArray(); dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service/products', parameters('service_{servicename}_name'), {productname})]"); resource["dependsOn"] = dependsOn; return(resource); }
public ResourceTemplate CreateAPISchema(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); AzureResourceId apiid = new AzureResourceId(restObject.Value <string>("id")); string servicename = apiid.ValueAfter("service"); string apiname = apiid.ValueAfter("apis"); var obj = new ResourceTemplate(); obj.AddName($"parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}')"); obj.AddName($"parameters('{AddParameter($"api_{apiname}_name", "string", apiname)}')"); obj.AddName($"'{name}'"); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'),'/',parameters('{AddParameter($"api_{apiname}_name", "string", apiname)}'), '/{name}')]"; obj.type = type; obj.properties = restObject.Value <JObject>("properties"); if (APIMInstanceAdded) { obj.dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]"); //resource["dependsOn"] = new JArray(new string[] { $"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]" }); } obj.dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service/apis', parameters('service_{servicename}_name'),parameters('{AddParameter($"api_{apiname}_name", "string", apiname)}'))]"); return(obj); }
public JObject AddProductSubObject(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); AzureResourceId apiid = new AzureResourceId(restObject.Value <string>("id")); string servicename = apiid.ValueAfter("service"); string productname = apiid.ValueAfter("products"); productname = parametrizePropertiesOnly ? $"'{productname}'" : $"parameters('{AddParameter($"product_{productname}_name", "string", productname)}')"; var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/', {productname}, '/', parameters('{AddParameter($"api_{name}_name", "string", name)}'))]"; obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; var dependsOn = new JArray(); dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service/products', parameters('service_{servicename}_name'), {productname})]"); resource["dependsOn"] = dependsOn; return(resource); }
public void AddProperty(JObject restObject) { if (restObject == null) { return; } string name = restObject["properties"].Value <string>("displayName"); string type = restObject.Value <string>("type"); bool secret = restObject["properties"].Value <bool>("secret"); AzureResourceId apiid = new AzureResourceId(restObject.Value <string>("id")); string servicename = apiid.ValueAfter("service"); var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = parametrizePropertiesOnly ? $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/{name}')]" : $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/' ,parameters('{AddParameter($"property_{name}_name", "string", name)}'))]"; obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; AddParameterFromObject((JObject)resource["properties"], "value", secret ? "securestring" : "string", name); var dependsOn = new JArray(); if (APIMInstanceAdded) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]"); } resource["dependsOn"] = dependsOn; this.resources.Add(resource); }
public void AddBackend(JObject restObject) { if (restObject == null) { return; } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); var matches = Regex.Match(restObject.Value <string>("id"), "/service/(?<servicename>[a-zA-Z0-9_-]*)/"); string servicename = matches.Groups["servicename"].Value; var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/' ,parameters('{AddParameter($"backend_{name}_name", "string", name)}'))]"; obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; AddParameterFromObject((JObject)resource["properties"], "url", "string", name); if (APIMInstanceAdded) { resource["dependsOn"] = new JArray(new string[] { $"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]" }); } this.resources.Add(resource); }
public ResourceTemplate AddVersionSet(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); Func <JObject, bool> findVersionSet = vs => vs.Value <string>("type") == "Microsoft.ApiManagement/service/api-version-sets" && vs.Value <string>("name").Contains(name); bool versionSetExists = this.resources.Any(findVersionSet); if (versionSetExists) { return(null); } AzureResourceId apiid = new AzureResourceId(restObject.Value <string>("id")); string servicename = apiid.ValueAfter("service"); var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.AddName($"parameters('{AddParameter($"{GetServiceName(servicename)}", "string", servicename)}')"); obj.AddName($"'{name}'"); obj.type = type; obj.properties = restObject.Value <JObject>("properties"); var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; var dependsOn = new JArray(); if (APIMInstanceAdded) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('{GetServiceName(servicename)}'))]"); } resource["dependsOn"] = dependsOn; this.resources.Add(resource); return(obj); }
public ResourceTemplate AddProperty(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); bool secret = restObject["properties"].Value <bool>("secret"); AzureResourceId apiid = new AzureResourceId(restObject.Value <string>("id")); string servicename = apiid.ValueAfter("service"); var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.AddName($"parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}')"); obj.AddName($"'{name}'"); obj.type = type; obj.properties = restObject.Value <JObject>("properties"); var resource = JObject.FromObject(obj); var propValue = resource["properties"].Value <string>("value"); if (!(propValue == null || (propValue.StartsWith("[") && propValue.EndsWith("]")))) { resource["properties"]["value"] = WrapParameterName(this.AddParameter(restObject["properties"].Value <string>("displayName") + "_" + "value", secret ? "securestring" : "string", secret ? "secretvalue" : resource["properties"]["value"])); } //AddParameterFromObject((JObject)resource["properties"], "value", secret ? "securestring" : "string", restObject["properties"].Value<string>("displayName")); var dependsOn = new JArray(); if (APIMInstanceAdded) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]"); } resource["dependsOn"] = dependsOn; this.resources.Add(resource); return(obj); }
public JObject CreateServiceResource(JObject restObject, string resourceType, bool addResource) { var obj = new ResourceTemplate { comments = "Generated for resource " + restObject.Value <string>("id"), type = resourceType }; var rid = new AzureResourceId(restObject.Value <string>("id")); var servicename = rid.ValueAfter("service"); obj.AddName($"parameters('{AddParameter($"{GetServiceName(servicename)}", "string", servicename)}')"); var name = restObject.Value <string>("name"); var resourceTypeShort = GetResourceTypeShort(resourceType); bool applicationInsightsLogger = IsApplicationInsightsLogger(restObject); if (applicationInsightsLogger && referenceApplicationInsightsInstrumentationKey) { name = $"parameters('{AddParameter($"{GetServiceName(servicename, false)}_applicationInsights", "string", name)}')"; } else { name = parametrizePropertiesOnly ? $"'{name}'" : $"parameters('{AddParameter($"{resourceTypeShort}_{name}_name", "string", name)}')"; } obj.AddName(name); var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; var dependsOn = new JArray(); if (APIMInstanceAdded) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('{GetServiceName(servicename)}'))]"); } resource["dependsOn"] = dependsOn; if (addResource) { if (resources.All(x => x.Value <string>("name") != resource.Value <string>("name"))) { resources.Add(resource); } } return(resource); }
public JObject CreateDiagnostics(string servicename, string apiNameParam) { string serviceNameParam = WrapParameterNameWithoutBrackets(GetServiceName(servicename)); string loggerNameParam = WrapParameterNameWithoutBrackets(AddParameter("api-logger-name", "string", "")); var diagnosticsTemplate = new ResourceTemplate { type = "diagnostics", name = "applicationinsights", properties = JObject.FromObject(new { enabled = true, enableHttpCorrelationHeaders = true, loggerId = $"[resourceId('Microsoft.ApiManagement/service/loggers', {serviceNameParam}, {loggerNameParam})]" }), dependsOn = new JArray($"[resourceId('Microsoft.ApiManagement/service/apis', {serviceNameParam}, {WrapParameterNameWithoutBrackets(apiNameParam)})]") }; return(JObject.FromObject(diagnosticsTemplate)); }
public JObject AddApi(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); var matches = Regex.Match(restObject.Value <string>("id"), "/service/(?<servicename>[a-zA-Z0-9_-]*)/"); string servicename = matches.Groups["servicename"].Value; var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = parametrizePropertiesOnly ? $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/{name}')]" : $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/' ,parameters('{AddParameter($"api_{name}_name", "string", name)}'))]"; obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; AddParameterFromObject((JObject)resource["properties"], "apiRevision", "string", name); AddParameterFromObject((JObject)resource["properties"], "serviceUrl", "string", name); AddParameterFromObject((JObject)resource["properties"], "apiVersion", "string", name); AddParameterFromObject((JObject)resource["properties"], "apiVersionSetId", "string", name); AddParameterFromObject((JObject)resource["properties"], "isCurrent", "bool", name); if (APIMInstanceAdded) { resource["dependsOn"] = new JArray(new string[] { $"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]" }); } else { resource["dependsOn"] = new JArray();; } this.resources.Add(resource); return(resource); }
public void AddGroup(JObject restObject) { if (restObject == null) { return; } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); var matches = Regex.Match(restObject.Value <string>("id"), "/service/(?<servicename>[a-zA-Z0-9_-]*)/"); string servicename = matches.Groups["servicename"].Value; var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = parametrizePropertiesOnly ? $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/{name}')]" : $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/' ,parameters('{AddParameter($"group_{name}_name", "string", name)}'))]"; obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; var dependsOn = new JArray(); if (APIMInstanceAdded) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]"); } resource["dependsOn"] = dependsOn; // Avoid duplicates. if (this.resources.Count(rr => rr.Value <string>("name") == obj.name) == 0) { this.resources.Add(resource); } }
public JObject AddAPIManagementInstance(JObject restObject) { if (restObject == null) { return(null); } string servicename = restObject.Value <string>("name").ToLowerInvariant(); string type = restObject.Value <string>("type"); apimservicename = servicename; var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = WrapParameterName(AddParameter($"{GetServiceName(servicename)}", "string", servicename)); obj.type = type; var resource = JObject.FromObject(obj); resource["sku"] = restObject["sku"]; resource["sku"]["name"] = WrapParameterName(AddParameter($"{GetServiceName(servicename, false)}_sku_name", "string", restObject["sku"].Value <string>("name"))); resource["sku"]["capacity"] = WrapParameterName(AddParameter($"{GetServiceName(servicename, false)}_sku_capacity", "string", restObject["sku"].Value <string>("capacity"))); resource["location"] = WrapParameterName(AddParameter($"{GetServiceName(servicename, false)}_location", "string", restObject.Value <string>("location"))); resource["tags"] = restObject["tags"]; resource["scale"] = null; resource["properties"] = new JObject(); resource["properties"]["publisherEmail"] = WrapParameterName(AddParameter($"{GetServiceName(servicename, false)}_publisherEmail", "string", restObject["properties"].Value <string>("publisherEmail"))); resource["properties"]["publisherName"] = WrapParameterName(AddParameter($"{GetServiceName(servicename, false)}_publisherName", "string", restObject["properties"].Value <string>("publisherName"))); resource["properties"]["notificationSenderEmail"] = WrapParameterName(AddParameter($"{GetServiceName(servicename, false)}_notificationSenderEmail", "string", restObject["properties"].Value <string>("notificationSenderEmail"))); resource["properties"]["hostnameConfigurations"] = restObject["properties"]["hostnameConfigurations"]; resource["properties"]["additionalLocations"] = restObject["properties"]["additionalLocations"]; resource["properties"]["virtualNetworkConfiguration"] = restObject["properties"]["virtualNetworkConfiguration"]; resource["properties"]["customProperties"] = restObject["properties"]["customProperties"]; resource["properties"]["virtualNetworkType"] = restObject["properties"]["virtualNetworkType"]; this.resources.Add(resource); APIMInstanceAdded = true; return(resource); }
public ResourceTemplate AddVersionSet(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); AzureResourceId apiid = new AzureResourceId(restObject.Value <string>("id")); string servicename = apiid.ValueAfter("service"); var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.AddName($"parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}')"); obj.AddName($"'{name}'"); obj.type = type; obj.properties = restObject.Value <JObject>("properties"); var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; var dependsOn = new JArray(); if (APIMInstanceAdded) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]"); } resource["dependsOn"] = dependsOn; this.resources.Add(resource); return(obj); }
public Property AddBackend(JObject restObject, JObject azureResource) { Property retval = null; if (restObject == null) { return(retval); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); AzureResourceId apiid = new AzureResourceId(restObject.Value <string>("id")); string servicename = apiid.ValueAfter("service"); var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/' ,'{name}')]"; obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; if (restObject["properties"]["resourceId"] != null) { string resourceid = restObject["properties"].Value <string>("resourceId"); var aid = new AzureResourceId(resourceid.Replace("https://management.azure.com/", "")); aid.SubscriptionId = "',subscription().subscriptionId,'"; var rgparamname = AddParameter(name + "_resourceGroup", "string", aid.ResourceGroupName); aid.ResourceGroupName = "',parameters('" + rgparamname + "'),'"; if (resourceid.Contains("providers/Microsoft.Logic/workflows")) //Logic App { var laname = aid.ValueAfter("workflows"); var logicappname = AddParameter(name + "_logicAppName", "string", laname); aid.ReplaceValueAfter("workflows", "',parameters('" + logicappname + "')"); var triggerObject = azureResource["properties"]["definition"].Value <JObject>("triggers"); string triggername = "manual"; foreach (var trigger in triggerObject) { if (trigger.Value.Value <string>("type") == "Request" && trigger.Value.Value <string>("kind") == "Http") { triggername = trigger.Key; } } //need to get the Logic App triggers and find the HTTP one.... string listcallbackref = $"listCallbackUrl(resourceId(parameters('{rgparamname}'), 'Microsoft.Logic/workflows/triggers', parameters('{logicappname}'), '{triggername}'), '2017-07-01')"; resource["properties"]["url"] = $"[substring({listcallbackref}.basePath,0,add(10,indexOf({listcallbackref}.basePath,'/triggers/')))]"; retval = new Property() { type = Property.PropertyType.LogicApp, name = laname.ToLower(), extraInfo = listcallbackref }; } else if (resourceid.Contains("providers/Microsoft.Web/sites")) //Web App/Function { var sitename = aid.ValueAfter("sites"); var paramsitename = AddParameter(name + "_siteName", "string", sitename); aid.ReplaceValueAfter("sites", "',parameters('" + paramsitename + "')"); resource["properties"]["description"] = $"[parameters('{paramsitename}')]"; resource["properties"]["url"] = $"[concat('https://',toLower(parameters('{paramsitename}')),'.azurewebsites.net/')]"; retval = new Property() { type = Property.PropertyType.Function, name = sitename.ToLower(), extraInfo = $"listsecrets(resourceId(parameters('{rgparamname}'),'Microsoft.Web/sites/functions', parameters('{paramsitename}'), 'replacewithfunctionoperationname'),'2015-08-01').key" }; } resource["properties"]["resourceId"] = "[concat('https://management.azure.com/','" + aid.ToString().Substring(1) + ")]"; } else { AddParameterFromObject((JObject)resource["properties"], "url", "string", name); } if (APIMInstanceAdded) { resource["dependsOn"] = new JArray(new string[] { $"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]" }); } if (this.resources.Where(rr => rr.Value <string>("name") == obj.name).Count() == 0) { this.resources.Add(resource); } return(retval); }
public JObject CreateOperation(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); AzureResourceId apiid = new AzureResourceId(restObject.Value <string>("id")); string servicename = apiid.ValueAfter("service"); string apiname = apiid.ValueAfter("apis"); name = $"'{name}'"; apiname = parametrizePropertiesOnly ? $"'{apiname}'" : $"parameters('{AddParameter($"api_{apiname}_name", "string", apiname)}')"; var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/', {apiname}, '/', {name})]"; obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; //Schema list var schemalist = new List <string>(); var request = resource["properties"].Value <JObject>("request"); if (request != null) { schemalist = schemalist.Union(FixRepresentations(request.Value <JArray>("representations"))).ToList(); } var responses = resource["properties"].Value <JArray>("responses"); if (responses != null) { foreach (var resp in responses) { schemalist = schemalist.Union(FixRepresentations(resp.Value <JArray>("representations"))).ToList(); } } var dependsOn = new JArray(); if (APIMInstanceAdded) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]"); } foreach (var schema in schemalist) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service/apis/schemas', parameters('service_{servicename}_name'),{apiname},'{schema}')]"); } dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service/apis', parameters('service_{servicename}_name'),{apiname})]"); resource["dependsOn"] = dependsOn; return(resource); //this.resources.Add(resource); }
//need to return an object with property list and so on public JObject CreatePolicy(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); string servicename = ""; string apiname = ""; string operationname = ""; bool servicePolicy = false; var dependsOn = new JArray(); name = $"'{name}'"; var rid = new AzureResourceId(restObject.Value <string>("id")); var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); switch (type) { case "Microsoft.ApiManagement/service/apis/policies": servicename = rid.ValueAfter("service"); apiname = rid.ValueAfter("apis"); apiname = parametrizePropertiesOnly ? $"'{apiname}'" : $"parameters('{AddParameter($"api_{apiname}_name", "string", apiname)}')"; obj.name = $"[concat(parameters('{AddParameter($"{GetServiceName(servicename)}", "string", servicename)}'), '/', {apiname}, '/', {name})]"; break; case "Microsoft.ApiManagement/service/apis/operations/policies": servicename = rid.ValueAfter("service"); apiname = rid.ValueAfter("apis"); operationname = rid.ValueAfter("operations"); apiname = parametrizePropertiesOnly ? $"'{apiname}'" : $"parameters('{AddParameter($"api_{apiname}_name", "string", apiname)}')"; operationname = $"'{operationname}'"; obj.name = $"[concat(parameters('{AddParameter($"{GetServiceName(servicename)}", "string", servicename)}'), '/', {apiname}, '/', {operationname}, '/', {name})]"; dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service/apis/operations', parameters('{GetServiceName(servicename)}'), {apiname}, {operationname})]"); break; case "Microsoft.ApiManagement/service/policies": servicename = rid.ValueAfter("service"); obj.name = $"[concat(parameters('{AddParameter($"{GetServiceName(servicename)}", "string", servicename)}'), '/', 'policy')]"; servicePolicy = true; break; } obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; if (APIMInstanceAdded) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('{GetServiceName(servicename)}'))]"); } if (!servicePolicy) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service/apis', parameters('{GetServiceName(servicename)}') , {apiname})]"); } resource["dependsOn"] = dependsOn; return(resource); //this.resources.Add(resource); }
public Property AddBackend(JObject restObject) { Property retval = null; if (restObject == null) { return(retval); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); var matches = Regex.Match(restObject.Value <string>("id"), "/service/(?<servicename>[a-zA-Z0-9_-]*)/"); string servicename = matches.Groups["servicename"].Value; var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/' ,parameters('{AddParameter($"backend_{name}_name", "string", name)}'))]"; obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; if (restObject["properties"]["resourceId"] != null) { string resourceid = restObject["properties"].Value <string>("resourceId"); if (resourceid.Contains("providers/Microsoft.Logic/workflows")) //Logic App { var aid = new AzureResourceId(resourceid.Replace("https://management.azure.com/", "")); aid.SubscriptionId = "',subscription().subscriptionId,'"; var rgparamname = AddParameter(name + "_resourceGroup", "string", aid.ResourceGroupName); var laname = aid.ValueAfter("workflows"); var logicappname = AddParameter(name + "_logicAppName", "string", laname); aid.ResourceGroupName = "',parameters('" + rgparamname + "'),'"; aid.ReplaceValueAfter("workflows", "',parameters('" + logicappname + "')"); resource["properties"]["resourceId"] = "[concat('https://management.azure.com/','" + aid.ToString() + ")]"; string listcallbackref = $"listCallbackUrl(resourceId(parameters('{rgparamname}'), 'Microsoft.Logic/workflows/triggers', parameters('{logicappname}'), 'manual'), providers('Microsoft.Logic', 'workflows').apiVersions[0])"; resource["properties"]["url"] = $"[substring({listcallbackref}.basePath,0,add(10,indexOf({listcallbackref}.basePath,'/triggers/')))]"; retval = new Property() { type = Property.PropertyType.LogicApp, name = laname.ToLower(), extraInfo = listcallbackref }; } } else { AddParameterFromObject((JObject)resource["properties"], "url", "string", name); } if (APIMInstanceAdded) { resource["dependsOn"] = new JArray(new string[] { $"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]" }); } this.resources.Add(resource); return(retval); }
public JObject CreateOperation(JObject restObject) { if (restObject == null) { return(null); } string name = restObject.Value <string>("name"); string type = restObject.Value <string>("type"); var matches = Regex.Match(restObject.Value <string>("id"), "/service/(?<servicename>[a-zA-Z0-9_-]*)/apis/(?<apiname>[a-zA-Z0-9_-]*)"); string servicename = matches.Groups["servicename"].Value; string apiname = matches.Groups["apiname"].Value; name = parametrizePropertiesOnly ? $"'{name}'" : $"parameters('{AddParameter($"operations_{name}_name", "string", name)}')"; apiname = parametrizePropertiesOnly ? $"'{apiname}'" : $"parameters('{AddParameter($"api_{apiname}_name", "string", apiname)}')"; var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); obj.name = $"[concat(parameters('{AddParameter($"service_{servicename}_name", "string", servicename)}'), '/', {apiname}, '/', {name})]"; obj.type = type; var resource = JObject.FromObject(obj); resource["properties"] = restObject["properties"]; //schemaId is not handled well yet.. so Reseting it for now var request = resource["properties"].Value <JObject>("request"); if (request != null) { FixRepresentations(request.Value <JArray>("representations")); } var responses = resource["properties"].Value <JArray>("responses"); if (responses != null) { foreach (var resp in responses) { FixRepresentations(resp.Value <JArray>("representations")); } } var dependsOn = new JArray(); if (APIMInstanceAdded) { dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service', parameters('service_{servicename}_name'))]"); } dependsOn.Add($"[resourceId('Microsoft.ApiManagement/service/apis', parameters('service_{servicename}_name'), {apiname})]"); resource["dependsOn"] = dependsOn; return(resource); //this.resources.Add(resource); }