コード例 #1
0
        internal static PSRoleAssignmentArtifact FromArtifactModel(RoleAssignmentArtifact artifact, string scope)
        {
            var psArtifact = new PSRoleAssignmentArtifact
            {
                Id               = artifact.Id,
                Type             = artifact.Type,
                Name             = artifact.Name,
                DisplayName      = artifact.DisplayName,
                Description      = artifact.Description,
                RoleDefinitionId = artifact.RoleDefinitionId,
                DependsOn        = new List <string>(),
                PrincipleIds     = artifact.PrincipalIds,
                ResourceGroup    = artifact.ResourceGroup
            };

            psArtifact.DependsOn = artifact.DependsOn?.ToList();

            return(psArtifact);
        }
コード例 #2
0
        public override void ExecuteCmdlet()
        {
            try
            {
                var scope = Blueprint.Scope;

                ThrowIfArtifactExits(scope, Blueprint.Name, Name);

                switch (ParameterSetName)
                {
                case ParameterSetNames.CreateArtifactByInputFile:

                    if (ShouldProcess(Utils.GetDefinitionLocationId(scope), string.Format(Resources.CreateArtifactShouldProcessString, Name)))
                    {
                        var artifact = JsonConvert.DeserializeObject <Artifact>(
                            AzureSession.Instance.DataStore.ReadFileAsText(ResolveUserPath(ArtifactFile)),
                            DefaultJsonSettings.DeserializerSettings);

                        WriteObject(BlueprintClient.CreateArtifact(scope, Blueprint.Name, Name, artifact));
                    }

                    break;

                case ParameterSetNames.CreateRoleAssignmentArtifact:
                    if (ShouldProcess(Utils.GetDefinitionLocationId(scope), string.Format(Resources.CreateArtifactShouldProcessString, Name)))
                    {
                        // Check if chosen -Type parameter matches with parameters set
                        if (!Type.Equals(PSArtifactKind.RoleAssignmentArtifact))
                        {
                            throw new PSInvalidOperationException("Artifact type mismatch.");
                        }

                        var roleAssignmentArtifact = new RoleAssignmentArtifact
                        {
                            DisplayName      = Name,
                            Description      = Description,
                            RoleDefinitionId = RoleDefinitionId,
                            PrincipalIds     = RoleDefinitionPrincipalId,
                            ResourceGroup    = ResourceGroupName,
                            DependsOn        = DependsOn
                        };

                        WriteObject(BlueprintClient.CreateArtifact(scope, Blueprint.Name, Name,
                                                                   roleAssignmentArtifact));
                    }

                    break;

                case ParameterSetNames.CreatePolicyAssignmentArtifact:
                    if (ShouldProcess(Utils.GetDefinitionLocationId(scope), string.Format(Resources.CreateArtifactShouldProcessString, Name)))
                    {
                        if (!Type.Equals(PSArtifactKind.PolicyAssignmentArtifact))
                        {
                            throw new PSInvalidOperationException("Artifact type mismatch.");
                        }

                        var policyAssignmentParameters = GetPolicyAssignmentParameters(PolicyDefinitionParameter);

                        var policyArtifact = new PolicyAssignmentArtifact
                        {
                            DisplayName        = Name,
                            Description        = Description,
                            PolicyDefinitionId = PolicyDefinitionId,
                            Parameters         = policyAssignmentParameters,
                            DependsOn          = DependsOn,
                            ResourceGroup      = ResourceGroupName
                        };

                        WriteObject(BlueprintClient.CreateArtifact(scope, Blueprint.Name, Name, policyArtifact));
                    }

                    break;

                case ParameterSetNames.CreateTemplateArtifact:
                    if (ShouldProcess(Utils.GetDefinitionLocationId(scope), string.Format(Resources.CreateArtifactShouldProcessString, Name)))
                    {
                        if (!Type.Equals(PSArtifactKind.TemplateArtifact))
                        {
                            throw new PSInvalidOperationException("Artifact type mismatch.");
                        }

                        var parameters =
                            GetTemplateParametersFromFile(ValidateAndReturnFilePath(TemplateParameterFile));

                        var templateArtifact = new TemplateArtifact
                        {
                            DisplayName   = Name,
                            Description   = Description,
                            ResourceGroup = ResourceGroupName,
                            Parameters    = parameters,
                            Template      = JObject.Parse(AzureSession.Instance.DataStore.ReadFileAsText(ValidateAndReturnFilePath(TemplateFile))),
                            DependsOn     = DependsOn
                        };

                        WriteObject(BlueprintClient.CreateArtifact(scope, Blueprint.Name, Name,
                                                                   templateArtifact));
                    }

                    break;

                default:
                    throw new PSInvalidOperationException();
                }
            }
            catch (Exception ex)
            {
                WriteExceptionError(ex);
            }
        }