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