/// <summary>
        /// Constructs the resource
        /// </summary>
        private JToken GetResource(string resourceId, string apiVersion)
        {
            var resource = this.GetExistingResource(resourceId, apiVersion).Result.ToResource();

            var policySetDefinitionObject = new PolicySetDefinition
            {
                Name       = this.Name ?? ResourceIdUtility.GetResourceName(this.Id),
                Properties = new PolicySetDefinitionProperties
                {
                    Description = this.Description ?? (resource.Properties["description"] != null
                        ? resource.Properties["description"].ToString()
                        : null),
                    DisplayName = this.DisplayName ?? (resource.Properties["displayName"] != null
                        ? resource.Properties["displayName"].ToString()
                        : null)
                }
            };

            if (!string.IsNullOrEmpty(this.PolicyDefinition))
            {
                policySetDefinitionObject.Properties.PolicyDefinitions = GetPolicyDefinitionsObject();
            }
            else
            {
                policySetDefinitionObject.Properties.PolicyDefinitions = JArray.Parse(resource.Properties["policyDefinitions"].ToString());
            }

            return(policySetDefinitionObject.ToJToken());
        }
        /// <summary>
        /// Constructs the resource
        /// </summary>
        private JToken GetResource(string resourceId, string apiVersion)
        {
            var resource = this.GetExistingResource(resourceId, apiVersion).Result.ToResource();

            // apply incoming object properties if present
            if (this.InputObject != null)
            {
                resource.Properties = this.InputObject.Properties.ToJToken();
            }

            var metaDataJson  = string.IsNullOrEmpty(this.Metadata) ? resource.Properties["metadata"]?.ToString() : this.GetObjectFromParameter(this.Metadata, nameof(this.Metadata)).ToString();
            var parameterJson = string.IsNullOrEmpty(this.Parameter) ? resource.Properties["parameters"]?.ToString() : this.GetObjectFromParameter(this.Parameter, nameof(this.Parameter)).ToString();
            var groupsJson    = string.IsNullOrEmpty(this.GroupDefinition) ? resource.Properties["policyDefinitionGroups"]?.ToString() : this.GetArrayFromParameter(this.GroupDefinition, nameof(this.GroupDefinition)).ToString();

            var policySetDefinitionObject = new PolicySetDefinition
            {
                Name       = this.Name ?? resource.Name,
                Properties = new PolicySetDefinitionProperties
                {
                    Description            = this.Description ?? resource.Properties["description"]?.ToString(),
                    DisplayName            = this.DisplayName ?? resource.Properties["displayName"]?.ToString(),
                    PolicyDefinitions      = string.IsNullOrEmpty(this.PolicyDefinition) ? resource.Properties["policyDefinitions"] as JArray : this.GetArrayFromParameter(this.PolicyDefinition, nameof(this.PolicyDefinition)),
                    Metadata               = string.IsNullOrEmpty(metaDataJson) ?  null : JObject.Parse(metaDataJson),
                    Parameters             = string.IsNullOrEmpty(parameterJson) ? null : JObject.Parse(parameterJson),
                    PolicyDefinitionGroups = string.IsNullOrEmpty(groupsJson) ? null : JArray.Parse(groupsJson)
                }
            };

            return(policySetDefinitionObject.ToJToken());
        }
        private string GetPolicySetCategory(PolicySetDefinition initiativeDefinition)
        {
            var categoryMetadata           = JObject.Parse(initiativeDefinition.Metadata.ToString());
            var categoryMetadataDictionary = categoryMetadata.ToObject <Dictionary <string, object> >();
            var category = categoryMetadataDictionary["category"].ToString();

            return(category);
        }
示例#4
0
        /// <summary>
        /// CreateOrUpdateInitiative
        /// </summary>
        /// <param name="initiativeName"></param>
        /// <returns></returns>
        public async Task CreateOrUpdateInitiative(string initiativeName, PolicySetDefinition policySetDefinition)
        {
            var serviceCredentials = await _authenticationHelper.GetServiceClientCredentials(ApplicationConstants.RESOURCE_URI.MANAGEMENT);

            PolicyClient client = new PolicyClient(serviceCredentials);

            string subscriptionid = _appSettings.Subscriptionid;

            client.SubscriptionId = subscriptionid;

            await client.PolicySetDefinitions.CreateOrUpdateAsync(initiativeName, policySetDefinition);
        }
示例#5
0
        private string GetPolicySetCategory(PolicySetDefinition initiativeDefinition)
        {
            var categoryMetadata           = JObject.Parse(initiativeDefinition.Metadata.ToString());
            var categoryMetadataDictionary = categoryMetadata.ToObject <Dictionary <string, object> >();

            if (categoryMetadataDictionary.ContainsKey("category"))
            {
                return(categoryMetadataDictionary["category"].ToString());
            }

            return(string.Empty);
        }
        // Get guest configuration policy assignments by initiative definition name
        protected IEnumerable <PolicyData> GetPolicyStatuses(string resourceGroupName,
                                                             string vmName,
                                                             IEnumerable <GuestConfigurationAssignment> gcrpAssignments,
                                                             string initiativeName = null)
        {
            PolicySetDefinition[] policySetDefinitionsArray;

            if (!string.IsNullOrEmpty(initiativeName))
            {
                // Get policy set definition (initiative)
                try
                {
                    policySetDefinitionsArray = new PolicySetDefinition[] { PolicyClient.PolicySetDefinitions.GetBuiltIn(initiativeName) };
                }
                catch (ResourceManagerErrorResponseException exception) when(HttpStatusCode.NotFound.Equals(exception.Response.StatusCode))
                {
                    try
                    {
                        policySetDefinitionsArray = new PolicySetDefinition[] { PolicyClient.PolicySetDefinitions.Get(initiativeName) };
                    }
                    catch (ResourceManagerErrorResponseException exception_custom) when(HttpStatusCode.NotFound.Equals(exception_custom.Response.StatusCode))
                    {
                        var message = string.IsNullOrEmpty(this._initiativeId) ?
                                      string.Format(StringResources.InitiativeWithThisNameNotFound, initiativeName) :
                                      string.Format(StringResources.InitiativeWithThisIdNotFound, this._initiativeId);

                        throw new GuestConfigurationErrorResponseException(message);
                    }
                }

                if (policySetDefinitionsArray != null && policySetDefinitionsArray.Length == 1)
                {
                    var category = GetPolicySetCategory(policySetDefinitionsArray[0]);
                    if (Constants.GuestConfigurationCategory.ToLower() != category.ToLower())
                    {
                        var message = string.IsNullOrEmpty(this._initiativeId) ?
                                      string.Format(StringResources.InitiativeWithThisNameNotOfCategoryGuestConfiguration, initiativeName) :
                                      string.Format(StringResources.InitiativeWithThisIdNotOfCategoryGuestConfiguration, this._initiativeId);
                        throw new GuestConfigurationErrorResponseException(message);
                    }
                }
            }
            else
            {
                var policySetDefinitions = GetAllGuestConfigPolicySetDefinitions();
                policySetDefinitionsArray = policySetDefinitions != null?policySetDefinitions.ToArray() : null;
            }
            var policyStatuses = GetPolicyStatusesHelper(policySetDefinitionsArray, gcrpAssignments, resourceGroupName);

            return(policyStatuses);
        }
示例#7
0
        /// <summary>
        /// Returns the initiative Details
        /// </summary>
        /// <param name="initiativeName"></param>
        /// <returns></returns>
        public async Task <PolicySetDefinition> GetInitiative(string initiativeName)
        {
            var serviceCredentials = await _authenticationHelper.GetServiceClientCredentials(ApplicationConstants.RESOURCE_URI.MANAGEMENT);

            PolicyClient client = new PolicyClient(serviceCredentials);

            string subscriptionid = _appSettings.Subscriptionid;

            client.SubscriptionId = subscriptionid;

            PolicySetDefinition initiative = await client.PolicySetDefinitions.GetAsync(initiativeName);

            return(initiative);
        }
示例#8
0
        /// <summary>
        /// Constructs the resource
        /// </summary>
        private JToken GetResource()
        {
            var policySetDefinitionObject = new PolicySetDefinition
            {
                Name       = this.Name,
                Properties = new PolicySetDefinitionProperties
                {
                    Description       = this.Description ?? null,
                    DisplayName       = this.DisplayName ?? null,
                    PolicyDefinitions = JArray.Parse(this.GetObjectFromParameter(this.PolicyDefinition).ToString()),
                    Metadata          = this.Metadata == null ? null : JObject.Parse(this.GetObjectFromParameter(this.Metadata).ToString()),
                    Parameters        = this.Parameter == null ? null : JObject.Parse(this.GetObjectFromParameter(this.Parameter).ToString())
                }
            };

            return(policySetDefinitionObject.ToJToken());
        }
        /// <summary>
        /// Constructs the resource
        /// </summary>
        private JToken GetResource()
        {
            var policySetDefinitionObject = new PolicySetDefinition
            {
                Name       = this.Name,
                Properties = new PolicySetDefinitionProperties
                {
                    Description            = this.Description ?? null,
                    DisplayName            = this.DisplayName ?? null,
                    PolicyDefinitions      = this.GetArrayFromParameter(this.PolicyDefinition, nameof(this.PolicyDefinition)),
                    Metadata               = this.Metadata == null ? null : this.GetObjectFromParameter(this.Metadata, nameof(this.Metadata)),
                    Parameters             = this.Parameter == null ? null : this.GetObjectFromParameter(this.Parameter, nameof(this.Parameter)),
                    PolicyDefinitionGroups = this.GroupDefinition == null ? null : this.GetArrayFromParameter(this.GroupDefinition, nameof(this.GroupDefinition))
                }
            };

            return(policySetDefinitionObject.ToJToken());
        }
        /// <summary>
        /// Constructs the resource
        /// </summary>
        private JToken GetResource(string resourceId, string apiVersion)
        {
            var resource = this.GetExistingResource(resourceId, apiVersion).Result.ToResource();

            var metaDataJson  = string.IsNullOrEmpty(this.Metadata) ? resource.Properties["metadata"]?.ToString() : GetObjectFromParameter(this.Metadata).ToString();
            var parameterJson = string.IsNullOrEmpty(this.Parameter) ? resource.Properties["parameters"]?.ToString() : GetObjectFromParameter(this.Parameter).ToString();

            var policySetDefinitionObject = new PolicySetDefinition
            {
                Name       = this.Name ?? resource.Name,
                Properties = new PolicySetDefinitionProperties
                {
                    Description       = this.Description ?? resource.Properties["description"]?.ToString(),
                    DisplayName       = this.DisplayName ?? resource.Properties["displayName"]?.ToString(),
                    PolicyDefinitions = string.IsNullOrEmpty(this.PolicyDefinition) ? JArray.Parse(resource.Properties["policyDefinitions"].ToString()) : GetPolicyDefinitionsObject(),
                    Metadata          = string.IsNullOrEmpty(metaDataJson) ?  null : JObject.Parse(metaDataJson),
                    Parameters        = string.IsNullOrEmpty(parameterJson) ? null : JObject.Parse(parameterJson)
                }
            };

            return(policySetDefinitionObject.ToJToken());
        }
示例#11
0
        /// <summary>
        /// Assigns the initiative
        /// </summary>
        /// <param name="initiativeName"></param>
        /// <param name="scope"></param>
        /// <param name="assignmentName"></param>
        /// <returns></returns>
        public async Task <PolicyAssignment> AssignInitiative(string initiativeName, string projectCode, string scope, string assignmentName, Tags tags)
        {
            var serviceCredentials = await _authenticationHelper.GetServiceClientCredentials(ApplicationConstants.RESOURCE_URI.MANAGEMENT);

            PolicyClient client = new PolicyClient(serviceCredentials);

            string subscriptionid = _appSettings.Subscriptionid;

            client.SubscriptionId = subscriptionid;

            PolicyAssignment existingAssignment = null;

            try
            {
                existingAssignment = await client.PolicyAssignments.GetAsync(scope, assignmentName);
            }
            catch (ErrorResponseException) { }

            if (existingAssignment != null)
            {
                await client.PolicyAssignments.DeleteAsync(scope, assignmentName);
            }

            var initiativeParameters = GetInitiativeParameters(tags, projectCode);

            var json = JsonConvert.SerializeObject(initiativeParameters);

            var parameters = JObject.Parse(json);

            PolicySetDefinition initiative = await client.PolicySetDefinitions.GetAsync(initiativeName);

            PolicyAssignment assignment = new PolicyAssignment();

            assignment.PolicyDefinitionId = initiative.Id;

            assignment.Parameters = parameters;

            return(await client.PolicyAssignments.CreateAsync(scope, assignmentName, assignment));
        }
 /// <summary>
 /// Creates or updates a policy set definition.
 /// </summary>
 /// <remarks>
 /// This operation creates or updates a policy set definition in the given
 /// subscription with the given name.
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='policySetDefinitionName'>
 /// The name of the policy set definition to create.
 /// </param>
 /// <param name='parameters'>
 /// The policy set definition properties.
 /// </param>
 /// <param name='cancellationToken'>
 /// The cancellation token.
 /// </param>
 public static async Task <PolicySetDefinition> CreateOrUpdateAsync(this IPolicySetDefinitionsOperations operations, string policySetDefinitionName, PolicySetDefinition parameters, CancellationToken cancellationToken = default(CancellationToken))
 {
     using (var _result = await operations.CreateOrUpdateWithHttpMessagesAsync(policySetDefinitionName, parameters, null, cancellationToken).ConfigureAwait(false))
     {
         return(_result.Body);
     }
 }
 /// <summary>
 /// Creates or updates a policy set definition.
 /// </summary>
 /// <remarks>
 /// This operation creates or updates a policy set definition in the given
 /// subscription with the given name.
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='policySetDefinitionName'>
 /// The name of the policy set definition to create.
 /// </param>
 /// <param name='parameters'>
 /// The policy set definition properties.
 /// </param>
 public static PolicySetDefinition CreateOrUpdate(this IPolicySetDefinitionsOperations operations, string policySetDefinitionName, PolicySetDefinition parameters)
 {
     return(operations.CreateOrUpdateAsync(policySetDefinitionName, parameters).GetAwaiter().GetResult());
 }
 /// <summary>
 /// Creates or updates a policy set definition.
 /// </summary>
 /// <remarks>
 /// This operation creates or updates a policy set definition in the given
 /// management group with the given name.
 /// </remarks>
 /// <param name='operations'>
 /// The operations group for this extension method.
 /// </param>
 /// <param name='policySetDefinitionName'>
 /// The name of the policy set definition to create.
 /// </param>
 /// <param name='parameters'>
 /// The policy set definition properties.
 /// </param>
 /// <param name='managementGroupId'>
 /// The ID of the management group.
 /// </param>
 public static PolicySetDefinition CreateOrUpdateAtManagementGroup(this IPolicySetDefinitionsOperations operations, string policySetDefinitionName, PolicySetDefinition parameters, string managementGroupId)
 {
     return(operations.CreateOrUpdateAtManagementGroupAsync(policySetDefinitionName, parameters, managementGroupId).GetAwaiter().GetResult());
 }
示例#15
0
 public virtual Response <PolicySetDefinition> CreateOrUpdate(string policySetDefinitionName, PolicySetDefinition parameters, CancellationToken cancellationToken = default)
 {
     using var scope = _clientDiagnostics.CreateScope("PolicySetDefinitionsOperations.CreateOrUpdate");
     scope.Start();
     try
     {
         return(RestClient.CreateOrUpdate(policySetDefinitionName, parameters, cancellationToken));
     }
     catch (Exception e)
     {
         scope.Failed(e);
         throw;
     }
 }
示例#16
0
 public virtual async Task <Response <PolicySetDefinition> > CreateOrUpdateAsync(string policySetDefinitionName, PolicySetDefinition parameters, CancellationToken cancellationToken = default)
 {
     using var scope = _clientDiagnostics.CreateScope("PolicySetDefinitionsOperations.CreateOrUpdate");
     scope.Start();
     try
     {
         return(await RestClient.CreateOrUpdateAsync(policySetDefinitionName, parameters, cancellationToken).ConfigureAwait(false));
     }
     catch (Exception e)
     {
         scope.Failed(e);
         throw;
     }
 }