/// <summary>
        /// Constructs the resource
        /// </summary>
        private JToken GetResource()
        {
            var policyExemption = new PolicyExemption
            {
                Name       = this.Name,
                Properties = new PolicyExemptionProperties
                {
                    DisplayName                  = this.DisplayName ?? null,
                    Description                  = this.Description ?? null,
                    ExemptionCategory            = this.ExemptionCategory,
                    PolicyAssignmentId           = this.PolicyAssignment.PolicyAssignmentId,
                    PolicyDefinitionReferenceIds = this.PolicyDefinitionReferenceId,
                    ExpiresOn = this.ExpiresOn?.ToUniversalTime(),
                    Metadata  = this.Metadata == null ? null : this.GetObjectFromParameter(this.Metadata, nameof(this.Metadata)),
                }
            };

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

            // get incoming object properties if present
            JObject inputMetadata = null;

            if (this.InputObject != null)
            {
                var newProperties = this.InputObject.Properties?.ToJToken();
                inputMetadata = newProperties["metadata"] as JObject;
            }

            DateTime?existingExpiration = null;

            if (DateTime.TryParse(resource.Properties["expiresOn"]?.ToString(), out var expiresOn))
            {
                existingExpiration = expiresOn;
            }

            var parameterMetadata = this.Metadata == null ? null : this.GetObjectFromParameter(this.Metadata, nameof(this.Metadata));
            var policyExemption   = new PolicyExemption
            {
                Name       = this.Name ?? this.InputObject?.Name ?? resource.Name,
                Properties = new PolicyExemptionProperties
                {
                    DisplayName                  = this.DisplayName ?? this.InputObject?.Properties?.DisplayName ?? resource.Properties["displayName"]?.ToString(),
                    Description                  = this.Description ?? this.InputObject?.Properties?.Description ?? resource.Properties["description"]?.ToString(),
                    ExemptionCategory            = this.ExemptionCategory ?? this.InputObject?.Properties?.ExemptionCategory ?? resource.Properties["exemptionCategory"]?.ToString(),
                    PolicyAssignmentId           = resource.Properties["policyAssignmentId"]?.ToString(),
                    PolicyDefinitionReferenceIds = this.PolicyDefinitionReferenceId ?? this.InputObject?.Properties?.PolicyDefinitionReferenceIds ?? resource.Properties["policyDefinitionReferenceIds"]?.ToString()?.Split(','),
                    ExpiresOn = this.ClearExpiration.IsPresent ? null : this.ExpiresOn?.ToUniversalTime() ?? this.InputObject?.Properties?.ExpiresOn ?? existingExpiration,
                    Metadata  = parameterMetadata ?? inputMetadata ?? resource.Properties["metadata"] as JObject,
                }
            };

            return(policyExemption.ToJToken());
        }