Exemplo n.º 1
0
        internal PSObject[] ProcessTemplate(string templateFile, string parametersFile)
        {
            var templateObject = ReadFile <JObject>(PSRuleOption.GetRootedPath(templateFile));

            if (templateObject == null)
            {
                throw new FileNotFoundException();
            }

            var parametersObject = parametersFile != null?ReadFile <JObject>(PSRuleOption.GetRootedPath(parametersFile)) : null;

            var visitor = new RuleDataExportVisitor();

            // Load context
            var context = new TemplateVisitor.TemplateContext(_Subscription, _ResourceGroup);

            context.Load(parametersObject);
            visitor.Visit(context, _DeploymentName, templateObject);

            // Return results
            var results    = new List <PSObject>();
            var serializer = new JsonSerializer();

            serializer.Converters.Add(new PSObjectJsonConverter());
            foreach (var resource in context.Resources)
            {
                results.Add(resource.ToObject <PSObject>(serializer));
            }
            return(results.ToArray());
        }
        internal PSObject[] ProcessTemplate(string templateFile, string parameterFile)
        {
            var rootedTemplateFile = PSRuleOption.GetRootedPath(templateFile);

            if (!File.Exists(rootedTemplateFile))
            {
                throw new FileNotFoundException(string.Format(Thread.CurrentThread.CurrentCulture, PSRuleResources.TemplateFileNotFound, rootedTemplateFile), rootedTemplateFile);
            }

            var templateObject = ReadFile(rootedTemplateFile);
            var visitor        = new RuleDataExportVisitor();

            // Load context
            var context = new TemplateVisitor.TemplateContext(Context, _Subscription, _ResourceGroup);

            if (!string.IsNullOrEmpty(parameterFile))
            {
                var rootedParameterFile = PSRuleOption.GetRootedPath(parameterFile);
                if (!File.Exists(rootedParameterFile))
                {
                    throw new FileNotFoundException(string.Format(Thread.CurrentThread.CurrentCulture, PSRuleResources.ParameterFileNotFound, rootedParameterFile), rootedParameterFile);
                }

                try
                {
                    var parametersObject = ReadFile(rootedParameterFile);
                    context.Load(parametersObject);
                }
                catch (Exception inner)
                {
                    throw new TemplateReadException(string.Format(Thread.CurrentThread.CurrentCulture, PSRuleResources.TemplateExpandInvalid, templateFile, parameterFile, inner.Message), inner, templateFile, parameterFile);
                }
            }

            // Process
            try
            {
                visitor.Visit(context, _DeploymentName, templateObject);
            }
            catch (Exception inner)
            {
                throw new TemplateReadException(string.Format(Thread.CurrentThread.CurrentCulture, PSRuleResources.TemplateExpandInvalid, templateFile, parameterFile, inner.Message), inner, templateFile, parameterFile);
            }

            // Return results
            var results    = new List <PSObject>();
            var serializer = new JsonSerializer();

            serializer.Converters.Add(new PSObjectJsonConverter());
            foreach (var resource in context.Resources)
            {
                results.Add(resource.ToObject <PSObject>(serializer));
            }

            return(results.ToArray());
        }