From 1734c46000e594f01661b07da9b9b7c64561ed94 Mon Sep 17 00:00:00 2001 From: Miles Yucht Date: Thu, 23 Jan 2025 11:15:22 +0100 Subject: [PATCH 1/2] Do not send query parameters when set to zero value --- service/apps/impl.go | 5 ++++- service/files/impl.go | 5 ++++- service/oauth2/impl.go | 17 +++++++++++++---- service/sharing/impl.go | 9 +++++++-- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/service/apps/impl.go b/service/apps/impl.go index 21121c39d..9fc6a8c05 100755 --- a/service/apps/impl.go +++ b/service/apps/impl.go @@ -6,6 +6,7 @@ import ( "context" "fmt" "net/http" + "slices" "github.com/databricks/databricks-sdk-go/client" ) @@ -19,7 +20,9 @@ func (a *appsImpl) Create(ctx context.Context, request CreateAppRequest) (*App, var app App path := "/api/2.0/apps" queryParams := make(map[string]any) - queryParams["no_compute"] = request.NoCompute + if request.NoCompute != false || slices.Contains(request.ForceSendFields, "NoCompute") { + queryParams["no_compute"] = request.NoCompute + } headers := make(map[string]string) headers["Accept"] = "application/json" headers["Content-Type"] = "application/json" diff --git a/service/files/impl.go b/service/files/impl.go index 6e83c42cd..71444eb95 100755 --- a/service/files/impl.go +++ b/service/files/impl.go @@ -6,6 +6,7 @@ import ( "context" "fmt" "net/http" + "slices" "github.com/databricks/databricks-sdk-go/client" "github.com/databricks/databricks-sdk-go/httpclient" @@ -197,7 +198,9 @@ func (a *filesImpl) Upload(ctx context.Context, request UploadRequest) error { var uploadResponse UploadResponse path := fmt.Sprintf("/api/2.0/fs/files%v", httpclient.EncodeMultiSegmentPathParameter(request.FilePath)) queryParams := make(map[string]any) - queryParams["overwrite"] = request.Overwrite + if request.Overwrite != false || slices.Contains(request.ForceSendFields, "Overwrite") { + queryParams["overwrite"] = request.Overwrite + } headers := make(map[string]string) headers["Content-Type"] = "application/octet-stream" err := a.client.Do(ctx, http.MethodPut, path, headers, queryParams, request.Contents, &uploadResponse) diff --git a/service/oauth2/impl.go b/service/oauth2/impl.go index 484596f10..fe0cde819 100755 --- a/service/oauth2/impl.go +++ b/service/oauth2/impl.go @@ -6,6 +6,7 @@ import ( "context" "fmt" "net/http" + "slices" "github.com/databricks/databricks-sdk-go/client" ) @@ -19,7 +20,9 @@ func (a *accountFederationPolicyImpl) Create(ctx context.Context, request Create var federationPolicy FederationPolicy path := fmt.Sprintf("/api/2.0/accounts/%v/federationPolicies", a.client.ConfiguredAccountID()) queryParams := make(map[string]any) - queryParams["policy_id"] = request.PolicyId + if request.PolicyId != "" || slices.Contains(request.ForceSendFields, "PolicyId") { + queryParams["policy_id"] = request.PolicyId + } headers := make(map[string]string) headers["Accept"] = "application/json" headers["Content-Type"] = "application/json" @@ -61,7 +64,9 @@ func (a *accountFederationPolicyImpl) Update(ctx context.Context, request Update var federationPolicy FederationPolicy path := fmt.Sprintf("/api/2.0/accounts/%v/federationPolicies/%v", a.client.ConfiguredAccountID(), request.PolicyId) queryParams := make(map[string]any) - queryParams["update_mask"] = request.UpdateMask + if request.UpdateMask != "" || slices.Contains(request.ForceSendFields, "UpdateMask") { + queryParams["update_mask"] = request.UpdateMask + } headers := make(map[string]string) headers["Accept"] = "application/json" headers["Content-Type"] = "application/json" @@ -207,7 +212,9 @@ func (a *servicePrincipalFederationPolicyImpl) Create(ctx context.Context, reque var federationPolicy FederationPolicy path := fmt.Sprintf("/api/2.0/accounts/%v/servicePrincipals/%v/federationPolicies", a.client.ConfiguredAccountID(), request.ServicePrincipalId) queryParams := make(map[string]any) - queryParams["policy_id"] = request.PolicyId + if request.PolicyId != "" || slices.Contains(request.ForceSendFields, "PolicyId") { + queryParams["policy_id"] = request.PolicyId + } headers := make(map[string]string) headers["Accept"] = "application/json" headers["Content-Type"] = "application/json" @@ -249,7 +256,9 @@ func (a *servicePrincipalFederationPolicyImpl) Update(ctx context.Context, reque var federationPolicy FederationPolicy path := fmt.Sprintf("/api/2.0/accounts/%v/servicePrincipals/%v/federationPolicies/%v", a.client.ConfiguredAccountID(), request.ServicePrincipalId, request.PolicyId) queryParams := make(map[string]any) - queryParams["update_mask"] = request.UpdateMask + if request.UpdateMask != "" || slices.Contains(request.ForceSendFields, "UpdateMask") { + queryParams["update_mask"] = request.UpdateMask + } headers := make(map[string]string) headers["Accept"] = "application/json" headers["Content-Type"] = "application/json" diff --git a/service/sharing/impl.go b/service/sharing/impl.go index da8223ee2..89cc08904 100755 --- a/service/sharing/impl.go +++ b/service/sharing/impl.go @@ -6,6 +6,7 @@ import ( "context" "fmt" "net/http" + "slices" "github.com/databricks/databricks-sdk-go/client" @@ -253,8 +254,12 @@ func (a *sharesImpl) UpdatePermissions(ctx context.Context, request UpdateShareP var updatePermissionsResponse UpdatePermissionsResponse path := fmt.Sprintf("/api/2.1/unity-catalog/shares/%v/permissions", request.Name) queryParams := make(map[string]any) - queryParams["max_results"] = request.MaxResults - queryParams["page_token"] = request.PageToken + if request.MaxResults != 0 || slices.Contains(request.ForceSendFields, "MaxResults") { + queryParams["max_results"] = request.MaxResults + } + if request.PageToken != "" || slices.Contains(request.ForceSendFields, "PageToken") { + queryParams["page_token"] = request.PageToken + } headers := make(map[string]string) headers["Accept"] = "application/json" headers["Content-Type"] = "application/json" From 59316ff5d113f266874b998e5794f85e81abeeb3 Mon Sep 17 00:00:00 2001 From: Miles Yucht Date: Thu, 23 Jan 2025 11:28:55 +0100 Subject: [PATCH 2/2] use exp/slices for <1.21 compat --- service/apps/impl.go | 2 +- service/files/impl.go | 2 +- service/oauth2/impl.go | 2 +- service/pkg.go | 4 ++-- service/sharing/impl.go | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/service/apps/impl.go b/service/apps/impl.go index 9fc6a8c05..b83aec396 100755 --- a/service/apps/impl.go +++ b/service/apps/impl.go @@ -6,9 +6,9 @@ import ( "context" "fmt" "net/http" - "slices" "github.com/databricks/databricks-sdk-go/client" + "golang.org/x/exp/slices" ) // unexported type that holds implementations of just Apps API methods diff --git a/service/files/impl.go b/service/files/impl.go index 71444eb95..e3f6930bc 100755 --- a/service/files/impl.go +++ b/service/files/impl.go @@ -6,10 +6,10 @@ import ( "context" "fmt" "net/http" - "slices" "github.com/databricks/databricks-sdk-go/client" "github.com/databricks/databricks-sdk-go/httpclient" + "golang.org/x/exp/slices" ) // unexported type that holds implementations of just Dbfs API methods diff --git a/service/oauth2/impl.go b/service/oauth2/impl.go index fe0cde819..d8db890dc 100755 --- a/service/oauth2/impl.go +++ b/service/oauth2/impl.go @@ -6,9 +6,9 @@ import ( "context" "fmt" "net/http" - "slices" "github.com/databricks/databricks-sdk-go/client" + "golang.org/x/exp/slices" ) // unexported type that holds implementations of just AccountFederationPolicy API methods diff --git a/service/pkg.go b/service/pkg.go index a1e015563..f26f56eda 100644 --- a/service/pkg.go +++ b/service/pkg.go @@ -50,10 +50,10 @@ // // - [marketplace.ConsumerProvidersAPI]: Providers are the entities that publish listings to the Marketplace. // -// - [catalog.CredentialsAPI]: A credential represents an authentication and authorization mechanism for accessing services on your cloud tenant. -// // - [provisioning.CredentialsAPI]: These APIs manage credential configurations for this workspace. // +// - [catalog.CredentialsAPI]: A credential represents an authentication and authorization mechanism for accessing services on your cloud tenant. +// // - [settings.CredentialsManagerAPI]: Credentials manager interacts with with Identity Providers to to perform token exchanges using stored credentials and refresh tokens. // // - [settings.CspEnablementAccountAPI]: The compliance security profile settings at the account level control whether to enable it for new workspaces. diff --git a/service/sharing/impl.go b/service/sharing/impl.go index 89cc08904..e6b6d33ec 100755 --- a/service/sharing/impl.go +++ b/service/sharing/impl.go @@ -6,9 +6,9 @@ import ( "context" "fmt" "net/http" - "slices" "github.com/databricks/databricks-sdk-go/client" + "golang.org/x/exp/slices" "github.com/databricks/databricks-sdk-go/service/catalog" )