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); }
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); } }