func calculateUpdateMask()

in pkg/controller/direct/iap/iapsettings_controller.go [216:291]


func calculateUpdateMask(desired, actual *pb.IapSettings) []string {
	var paths []string

	// Skip checking for "name" field. The actual.name is always in the format of UUID, but desired.name can use identifiers.

	// Check AccessSettings subfields individually
	if desired.AccessSettings != nil {
		if desired.AccessSettings.GcipSettings != nil {
			if actual.AccessSettings == nil || actual.AccessSettings.GcipSettings == nil ||
				!reflect.DeepEqual(desired.AccessSettings.GcipSettings.TenantIds, actual.AccessSettings.GcipSettings.TenantIds) ||
				!reflect.DeepEqual(desired.AccessSettings.GcipSettings.LoginPageUri, actual.AccessSettings.GcipSettings.LoginPageUri) {
				paths = append(paths, "iap_settings.access_settings.gcip_settings")
			}
		}
		if desired.AccessSettings.CorsSettings != nil {
			if actual.AccessSettings == nil || actual.AccessSettings.CorsSettings == nil ||
				!reflect.DeepEqual(desired.AccessSettings.CorsSettings.AllowHttpOptions, actual.AccessSettings.CorsSettings.AllowHttpOptions) {
				paths = append(paths, "iap_settings.access_settings.cors_settings.allow_http_options")
			}
		}
		if desired.AccessSettings.OauthSettings != nil {
			if actual.AccessSettings == nil || actual.AccessSettings.OauthSettings == nil ||
				!reflect.DeepEqual(desired.AccessSettings.OauthSettings.LoginHint, actual.AccessSettings.OauthSettings.LoginHint) ||
				!reflect.DeepEqual(desired.AccessSettings.OauthSettings.ProgrammaticClients, actual.AccessSettings.OauthSettings.ProgrammaticClients) {
				paths = append(paths, "iap_settings.access_settings.oauth_settings")
			}
		}
		if desired.AccessSettings.ReauthSettings != nil {
			if actual.AccessSettings == nil || actual.AccessSettings.ReauthSettings == nil ||
				!reflect.DeepEqual(desired.AccessSettings.ReauthSettings.Method, actual.AccessSettings.ReauthSettings.Method) ||
				!reflect.DeepEqual(desired.AccessSettings.ReauthSettings.MaxAge, actual.AccessSettings.ReauthSettings.MaxAge) ||
				!reflect.DeepEqual(desired.AccessSettings.ReauthSettings.PolicyType, actual.AccessSettings.ReauthSettings.PolicyType) {
				paths = append(paths, "iap_settings.access_settings.reauth_settings")
			}
		}
		if desired.AccessSettings.AllowedDomainsSettings != nil {
			if actual.AccessSettings == nil || actual.AccessSettings.AllowedDomainsSettings == nil ||
				!reflect.DeepEqual(desired.AccessSettings.AllowedDomainsSettings.Enable, actual.AccessSettings.AllowedDomainsSettings.Enable) ||
				!reflect.DeepEqual(desired.AccessSettings.AllowedDomainsSettings.Domains, actual.AccessSettings.AllowedDomainsSettings.Domains) {
				paths = append(paths, "iap_settings.access_settings.allowed_domains_settings")
			}
		}
	}

	if desired.ApplicationSettings != nil {
		if desired.ApplicationSettings.CsmSettings != nil {
			if actual.ApplicationSettings == nil || actual.ApplicationSettings.CsmSettings == nil ||
				!reflect.DeepEqual(desired.ApplicationSettings.CsmSettings.RctokenAud, actual.ApplicationSettings.CsmSettings.RctokenAud) {
				paths = append(paths, "iap_settings.application_settings.csm_settings")
			}
		}
		if desired.ApplicationSettings.AccessDeniedPageSettings != nil {
			if actual.ApplicationSettings == nil || actual.ApplicationSettings.AccessDeniedPageSettings == nil ||
				!reflect.DeepEqual(desired.ApplicationSettings.AccessDeniedPageSettings.AccessDeniedPageUri, actual.ApplicationSettings.AccessDeniedPageSettings.AccessDeniedPageUri) ||
				!reflect.DeepEqual(desired.ApplicationSettings.AccessDeniedPageSettings.GenerateTroubleshootingUri, actual.ApplicationSettings.AccessDeniedPageSettings.GenerateTroubleshootingUri) ||
				!reflect.DeepEqual(desired.ApplicationSettings.AccessDeniedPageSettings.RemediationTokenGenerationEnabled, actual.ApplicationSettings.AccessDeniedPageSettings.RemediationTokenGenerationEnabled) {
				paths = append(paths, "iap_settings.application_settings.access_denied_page_settings")
			}
		}
		if desired.ApplicationSettings.CookieDomain != nil {
			if actual.ApplicationSettings == nil || !reflect.DeepEqual(desired.ApplicationSettings.CookieDomain, actual.ApplicationSettings.CookieDomain) {
				paths = append(paths, "iap_settings.application_settings.cookie_domain")
			}
		}
		if desired.ApplicationSettings.AttributePropagationSettings != nil {
			if actual.ApplicationSettings == nil || actual.ApplicationSettings.AttributePropagationSettings == nil ||
				!reflect.DeepEqual(desired.ApplicationSettings.AttributePropagationSettings.Expression, actual.ApplicationSettings.AttributePropagationSettings.Expression) ||
				!reflect.DeepEqual(desired.ApplicationSettings.AttributePropagationSettings.OutputCredentials, actual.ApplicationSettings.AttributePropagationSettings.OutputCredentials) ||
				!reflect.DeepEqual(desired.ApplicationSettings.AttributePropagationSettings.Enable, actual.ApplicationSettings.AttributePropagationSettings.Enable) {
				paths = append(paths, "iap_settings.application_settings.attribute_propagation_settings")
			}
		}
	}

	return paths
}