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 JObject CreateLogger(JObject restObject, bool addResource) { var resource = CreateServiceResource(restObject, "Microsoft.ApiManagement/service/loggers", addResource); var azureResourceId = new AzureResourceId(restObject.Value <string>("id")); var loggerName = azureResourceId.ValueAfter("loggers"); var serviceName = azureResourceId.ValueAfter("service"); var credentials = resource["properties"]?["credentials"]; if (credentials != null) { if (credentials.Value <string>("connectionString") != null) { credentials["connectionString"] = WrapParameterName(AddParameter($"logger_{loggerName}_connectionString", "securestring", String.Empty)); } var loggerType = resource["properties"]?["loggerType"]?.Value <string>() ?? string.Empty; if (referenceApplicationInsightsInstrumentationKey && loggerType == "applicationInsights" && credentials.Value <string>("instrumentationKey") != null) { string parameter = AddParameter($"{GetServiceName(serviceName, false)}_applicationInsights", "string", loggerName); credentials["instrumentationKey"] = $"[reference(resourceId('Microsoft.Insights/components', parameters('{parameter}')), '2014-04-01').InstrumentationKey]"; var dependsOn = resource.Value <JArray>("dependsOn") ?? new JArray(); dependsOn.Add($"[resourceId('Microsoft.Insights/components',parameters('{GetServiceName(serviceName, false)}_applicationInsights'))]"); resource["dependsOn"] = dependsOn; if (resource["properties"] is JObject properties) { properties.Remove("resourceId"); } } if (credentials.Value <string>("name") != null) { credentials["name"] = WrapParameterName(AddParameter($"logger_{loggerName}_credentialName", "string", GetDefaultValue(resource, "credentials", "name"))); } } return(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 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 void AzureResourceIdToString() { string reourceid = "/subscriptions/89d02439-770d-43f3-9e4a-8b910457a10c/resourceGroups/INT001.Invoice/providers/Microsoft.Web/connections/Billogram"; var ari = new AzureResourceId(reourceid); Assert.AreEqual(reourceid, ari.ToString()); }
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 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 void AzureResourceIdReplaceValueAfterAndToString() { string reourceid = "subscriptions/fakeecb73-d0ff-455d-a2bf-eae0b300696d/providers/Microsoft.Web/locations/westeurope/managedApis/filesystem"; var ari = new AzureResourceId(reourceid); ari.ReplaceValueAfter("locations", "',parameters('logicapplocation'),'"); Assert.AreEqual("subscriptions/fakeecb73-d0ff-455d-a2bf-eae0b300696d/providers/Microsoft.Web/locations/',parameters('logicapplocation'),'/managedApis/filesystem", ari.ToString()); }
public void AzureResourceIdReplaceAndToString() { string reourceid = "/subscriptions/89d02439-770d-43f3-9e4a-8b910457a10c/resourceGroups/INT001.Invoice/providers/Microsoft.Web/connections/Billogram"; var ari = new AzureResourceId(reourceid); ari.SubscriptionId = "',subscription().subscriptionId,'"; ari.ResourceGroupName = "',parameters('rgname-something'),'"; Assert.AreEqual("/subscriptions/',subscription().subscriptionId,'/resourceGroups/',parameters('rgname-something'),'/providers/Microsoft.Web/connections/Billogram", ari.ToString()); }
public void AzureResourceIdGetNameBasedOnTypeName() { //subscriptions/fakeecb73-d0ff-455d-a2bf-eae0b300696d/providers/Microsoft.Web/locations/westeurope/managedApis/filesystem string reourceid = "subscriptions/fakeecb73-d0ff-455d-a2bf-eae0b300696d/providers/Microsoft.Web/locations/westeurope/managedApis/filesystem"; var ari = new AzureResourceId(reourceid); Assert.AreEqual("westeurope", ari.ValueAfter("locations")); Assert.AreEqual(null, ari.ValueAfter("a")); }
public JObject CreateOpenIDConnectProvider(JObject restObject, bool addResource) { var resource = CreateServiceResource(restObject, "Microsoft.ApiManagement/service/openidConnectProviders", addResource); var providerName = new AzureResourceId(restObject.Value <string>("id")).ValueAfter("openidConnectProviders"); resource["properties"]["displayName"] = WrapParameterName(AddParameter($"openidConnectProvider_{providerName}_displayname", "string", GetDefaultValue(resource, "displayName"))); resource["properties"]["metadataEndpoint"] = WrapParameterName(AddParameter($"openidConnectProvider_{providerName}_metadataEndpoint", "string", GetDefaultValue(resource, "metadataEndpoint"))); resource["properties"]["clientId"] = WrapParameterName(AddParameter($"openidConnectProvider_{providerName}_clientId", "string", GetDefaultValue(resource, "clientId"))); resource["properties"]["clientSecret"] = WrapParameterName(AddParameter($"openidConnectProvider_{providerName}_clientSecret", "securestring", String.Empty)); return(resource); }
public void AzureResourceIdComplex() { string reourceid = "https://management.azure.com/subscriptions/c107df29-a4af-4bc9-a733-f88f0eaa4296/resourceGroups/maloapimtest/providers/Microsoft.Logic/workflows/malologicapptestManual"; var ari = new AzureResourceId(reourceid); Assert.AreEqual("c107df29-a4af-4bc9-a733-f88f0eaa4296", ari.SubscriptionId); Assert.AreEqual("maloapimtest", ari.ResourceGroupName); Assert.AreEqual("malologicapptestManual", ari.ResourceName); Assert.AreEqual("/subscriptions/c107df29-a4af-4bc9-a733-f88f0eaa4296/resourceGroups/maloapimtest/providers/Microsoft.Logic/workflows/malologicapptestManual", ari.ToString()); }
public JObject CreateCertificate(JObject restObject, bool addResource) { var resource = CreateServiceResource(restObject, "Microsoft.ApiManagement/service/certificates", addResource); var certificatename = new AzureResourceId(restObject.Value <string>("id")).ValueAfter("certificates"); var properties = new { data = WrapParameterName(AddParameter($"certificate_{certificatename}_data", "securestring", String.Empty)), password = WrapParameterName(AddParameter($"certificate_{certificatename}_password", "securestring", String.Empty)) }; resource["properties"] = JObject.FromObject(properties); return(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 AddApi(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($"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"], "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"); 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($"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 && rr.Value <string>("type") == obj.type) == 0) { 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"); 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); }
//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 = $"'{name}'"; var rid = new AzureResourceId(restObject.Value <string>("id")); var obj = new ResourceTemplate(); obj.comments = "Generated for resource " + restObject.Value <string>("id"); if (type == "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($"service_{servicename}_name", "string", servicename)}'), '/', {apiname}, '/', {name})]"; } else if (type == "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($"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 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); }
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); }