Exemplo n.º 1
0
        private IEnumerable <ArmTemplateResource <ProductApiProperties> > CreateProductApis(DeploymentDefinition deploymentDefinition)
        {
            return(new ArmTemplateResourceCreator <ApiDeploymentDefinition, ProductApiProperties>(_mapper)
                   .ForDeploymentDefinitions(deploymentDefinition.Apis)
                   .UseResourceCreator(apiDeploymentDefinition =>
            {
                var templateResources = new List <ArmTemplateResource <ProductApiProperties> >();
                foreach (string productDisplayName in apiDeploymentDefinition.ProductList)
                {
                    var productName = apiDeploymentDefinition.GetProductName(productDisplayName);
                    var dependencies = new List <string>()
                    {
                        $"[resourceId('{ResourceType.Api}', parameters('ApimServiceName'), '{apiDeploymentDefinition.Name}')]",
                        $"[resourceId('{ResourceType.Product}', parameters('ApimServiceName'), '{productName}')]"
                    };

                    var templateResource = new ArmTemplateResource <ProductApiProperties>(
                        $"{productName}/{apiDeploymentDefinition.Name}",
                        $"[concat(parameters('ApimServiceName'), '/{productName}/{apiDeploymentDefinition.Name}')]",
                        ResourceType.ProductApi,
                        new ProductApiProperties(),
                        dependencies);

                    templateResources.Add(templateResource);
                }

                return templateResources;
            })
                   .CreateResourcesIf(d => d.IsDependentOnProducts(), true));
        }
Exemplo n.º 2
0
        private IEnumerable <ArmTemplateResource <TagProductProperties> > CreateProductTags(DeploymentDefinition deploymentDefinition)
        {
            return(new ArmTemplateResourceCreator <ProductDeploymentDefinition, TagProductProperties>(_mapper)
                   .ForDeploymentDefinitions(deploymentDefinition.Products)
                   .UseResourceCreator(ProductDeploymentDefinition =>
            {
                var templateResources = new List <ArmTemplateResource <TagProductProperties> >();

                foreach (string tagDisplayName in ProductDeploymentDefinition.TagList)
                {
                    var tagName = ProductDeploymentDefinition.GetTagName(tagDisplayName);
                    var templateRsource = new ArmTemplateResource <TagProductProperties>(
                        $"{ProductDeploymentDefinition.Name}/{tagName}",
                        $"[concat(parameters('ApimServiceName'), '/{ProductDeploymentDefinition.Name}/{tagName}')]",
                        ResourceType.TagProduct,
                        new TagProductProperties(),
                        new string[]
                    {
                        $"[resourceId('{ResourceType.Product}', parameters('ApimServiceName'), '{ProductDeploymentDefinition.Name}')]",
                        $"[resourceId('{ResourceType.Tag}', parameters('ApimServiceName'), '{tagName}')]"
                    });

                    templateResources.Add(templateRsource);
                }

                return templateResources;
            })
                   .CreateResourcesIf(d => d.Tags != null, true));
        }
Exemplo n.º 3
0
        private IEnumerable <ArmTemplateResource <ApiOperationPolicyProperties> > CreateOperationPolicies(DeploymentDefinition deploymentDefinition)
        {
            return(new ArmTemplateResourceCreator <ApiDeploymentDefinition, ApiOperationPolicyProperties>(_mapper)
                   .ForDeploymentDefinitions(deploymentDefinition.Apis)
                   .UseResourceCreator(apiDeploymentDefinition =>
            {
                var templateResources = new List <ArmTemplateResource <ApiOperationPolicyProperties> >();
                var fileReader = new FileReader();

                foreach (var pair in apiDeploymentDefinition.Operations)
                {
                    var operationPolicy = pair.Value.Policy;
                    var operationName = pair.Key;

                    var isUrl = operationPolicy.IsUri(out _);

                    var templateResource = new ArmTemplateResource <ApiOperationPolicyProperties>(
                        $"{apiDeploymentDefinition.Name}/{operationName}/policy",
                        $"[concat(parameters('ApimServiceName'), '/{apiDeploymentDefinition.Name}/{operationName}/policy')]",
                        ResourceType.ApiOperationPolicy,
                        new ApiOperationPolicyProperties()
                    {
                        Format = isUrl ? "rawxml-link" : "rawxml",
                        Value = isUrl ? operationPolicy : fileReader.RetrieveFileContentsAsync(operationPolicy).Result
                    },
                        new string[] { $"[resourceId('{ResourceType.Api}', parameters('ApimServiceName'), '{apiDeploymentDefinition.Name}')]" });

                    templateResources.Add(templateResource);
                }

                return templateResources;
            })
                   .CreateResourcesIf(d => d.Operations != null, true));
        }
Exemplo n.º 4
0
        VisitAction IArmVisitor <VisitAction> .VisitTemplateResource(ArmTemplateResource templateResource)
        {
            if (ShouldStop(VisitTemplateResource(templateResource), out VisitAction parentAction))
            {
                return(parentAction);
            }

            if (VisitDictionaryAndCheckStop(templateResource, out parentAction))
            {
                return(parentAction);
            }

            return(VisitAction.Continue);
        }
Exemplo n.º 5
0
 public virtual VisitAction VisitTemplateResource(ArmTemplateResource templateResource) => DefaultVisit(templateResource);
Exemplo n.º 6
0
 public object VisitTemplateResource(ArmTemplateResource templateResource) => VisitResource(templateResource);
Exemplo n.º 7
0
 public JToken VisitTemplateResource(ArmTemplateResource templateResource) => VisitResource(templateResource);