From f660d8b0cda1e0c47a3b111bbd81457644a118f3 Mon Sep 17 00:00:00 2001 From: Arvind Choudhary Date: Thu, 13 Mar 2025 04:45:55 +0000 Subject: [PATCH] feat: [AH-994]: Updated Client setup details. Update pypi to python (#3547) * Merge branch 'main' of https://git0.harness.io/l7B_kbSEQD2wjrM7PShm5w/PROD/Harness_Commons/gitness into AH-994-client-setup-details-update * [AH-994]: Merge conflict fixed * [AH-994]: Merge conflict fixed * [AH-994]: Updated makefile * [AH-994]: Merge conflict fixed * [AH-994]: Updated Client setup details. Update pypi to python --- Makefile | 2 +- app/gitspace/orchestrator/utils/secret.go | 5 +- app/services/webhook/list.go | 1 + app/store/database/webhook.go | 4 + app/url/provider.go | 19 +- .../controller/metadata/artifact_mapper.go | 4 +- .../controller/metadata/create_registry.go | 19 +- .../api/controller/metadata/create_webhook.go | 4 +- .../metadata/get_client_setup_details.go | 115 ++++----- .../metadata/list_webhook_execution.go | 1 + registry/app/api/controller/metadata/utils.go | 2 +- registry/app/api/handler/packages/handler.go | 4 +- registry/app/api/openapi/api.yaml | 10 +- .../contracts/artifact/services.gen.go | 230 ++++++++---------- .../openapi/contracts/artifact/types.gen.go | 30 +-- registry/app/api/router/packages/route.go | 2 +- registry/app/pkg/pypi/metadata.go | 2 +- registry/app/store/database/webhook.go | 2 + registry/services/webhook/handler_artifact.go | 6 +- registry/services/webhook/repository.go | 14 ++ registry/types/enum/common.go | 13 - 21 files changed, 229 insertions(+), 260 deletions(-) diff --git a/Makefile b/Makefile index 4e0f24830..07ddc7975 100644 --- a/Makefile +++ b/Makefile @@ -60,7 +60,7 @@ run: ar-clean build ar-conformance-test: ar-clean build ./gitness server .local.env > logfile.log 2>&1 & echo $$! > server.PID - @sleep 10 + @sleep 20 ./registry/tests/conformance_test.sh localhost:3000 EXIT_CODE=$$?; kill `cat server.PID` diff --git a/app/gitspace/orchestrator/utils/secret.go b/app/gitspace/orchestrator/utils/secret.go index a2133c337..c618051f1 100644 --- a/app/gitspace/orchestrator/utils/secret.go +++ b/app/gitspace/orchestrator/utils/secret.go @@ -25,7 +25,10 @@ import ( gitnessenum "github.com/harness/gitness/types/enum" ) -func ResolveSecret(ctx context.Context, secretResolverFactory *secret.ResolverFactory, config types.GitspaceConfig) (*string, error) { +func ResolveSecret(ctx context.Context, secretResolverFactory *secret.ResolverFactory, config types.GitspaceConfig) ( + *string, + error, +) { rootSpaceID, _, err := paths.DisectRoot(config.SpacePath) if err != nil { return nil, fmt.Errorf("unable to find root space id from space path: %s", config.SpacePath) diff --git a/app/services/webhook/list.go b/app/services/webhook/list.go index dfdb28b4e..dfe4603f6 100644 --- a/app/services/webhook/list.go +++ b/app/services/webhook/list.go @@ -44,6 +44,7 @@ func (s *Service) List( if err != nil { return nil, 0, err } + case enum.WebhookParentRegistry: default: return nil, 0, fmt.Errorf("webhook type %s is not supported", parentType) } diff --git a/app/store/database/webhook.go b/app/store/database/webhook.go index 557de0be1..871782c55 100644 --- a/app/store/database/webhook.go +++ b/app/store/database/webhook.go @@ -134,6 +134,7 @@ func (s *WebhookStore) FindByIdentifier( stmt = stmt.Where("webhook_repo_id = ?", parentID) case enum.WebhookParentSpace: stmt = stmt.Where("webhook_space_id = ?", parentID) + case enum.WebhookParentRegistry: default: return nil, fmt.Errorf("webhook parent type '%s' is not supported", parentType) } @@ -329,6 +330,7 @@ func (s *WebhookStore) DeleteByIdentifier( stmt = stmt.Where("webhook_repo_id = ?", parentID) case enum.WebhookParentSpace: stmt = stmt.Where("webhook_space_id = ?", parentID) + case enum.WebhookParentRegistry: default: return fmt.Errorf("webhook parent type '%s' is not supported", parentType) } @@ -503,6 +505,7 @@ func mapToInternalWebhook(hook *types.Webhook) (*webhook, error) { res.RepoID = null.IntFrom(hook.ParentID) case enum.WebhookParentSpace: res.SpaceID = null.IntFrom(hook.ParentID) + case enum.WebhookParentRegistry: default: return nil, fmt.Errorf("webhook parent type %q is not supported", hook.ParentType) } @@ -581,6 +584,7 @@ func selectWebhookParents( parentSelector = append(parentSelector, squirrel.Eq{ "webhook_space_id": parent.ID, }) + case enum.WebhookParentRegistry: default: return fmt.Errorf("webhook parent type '%s' is not supported", parent.Type) } diff --git a/app/url/provider.go b/app/url/provider.go index f916b6bb6..4f9c4bfb4 100644 --- a/app/url/provider.go +++ b/app/url/provider.go @@ -24,6 +24,8 @@ import ( "strings" "github.com/harness/gitness/app/paths" + + "github.com/rs/zerolog/log" ) const ( @@ -78,7 +80,7 @@ type Provider interface { GetAPIProto(ctx context.Context) string RegistryURL(ctx context.Context, params ...string) string - + PackageURL(ctx context.Context, params ...string) string GetUIBaseURL(ctx context.Context, params ...string) string // GenerateUIRegistryURL returns the url for the UI screen of a registry. @@ -257,6 +259,21 @@ func (p *provider) RegistryURL(_ context.Context, params ...string) string { return strings.TrimRight(u.String(), "/") } +func (p *provider) PackageURL(_ context.Context, params ...string) string { + u, err := url.Parse(p.registryURL.String()) + if err != nil { + log.Warn().Msgf("failed to parse registry url: %v", err) + return p.registryURL.String() + } + + segments := []string{u.Path} + segments = append(segments, "pkg") + segments = append(segments, params...) + fullPath := path.Join(segments...) + u.Path = fullPath + return strings.TrimRight(u.String(), "/") +} + func (p *provider) GetUIBaseURL(_ context.Context, _ ...string) string { return p.uiURL.String() } diff --git a/registry/app/api/controller/metadata/artifact_mapper.go b/registry/app/api/controller/metadata/artifact_mapper.go index 6111cc230..30bb1a1a3 100644 --- a/registry/app/api/controller/metadata/artifact_mapper.go +++ b/registry/app/api/controller/metadata/artifact_mapper.go @@ -121,8 +121,8 @@ func toPackageType(packageTypeStr string) (artifactapi.PackageType, error) { return artifactapi.PackageTypeHELM, nil case string(artifactapi.PackageTypeMAVEN): return artifactapi.PackageTypeMAVEN, nil - case string(artifactapi.PackageTypePYPI): - return artifactapi.PackageTypePYPI, nil + case string(artifactapi.PackageTypePYTHON): + return artifactapi.PackageTypePYTHON, nil default: return "", errors.New("invalid package type") } diff --git a/registry/app/api/controller/metadata/create_registry.go b/registry/app/api/controller/metadata/create_registry.go index f0d1f12c8..14a13bf0b 100644 --- a/registry/app/api/controller/metadata/create_registry.go +++ b/registry/app/api/controller/metadata/create_registry.go @@ -332,7 +332,8 @@ func (c *APIController) CreateUpstreamProxyEntity( } if res.SecretSpacePath != nil && len(*res.SecretSpacePath) > 0 { - upstreamProxyConfigEntity.SecretSpaceID, err = c.RegistryMetadataHelper.getSecretSpaceID(ctx, res.SecretSpacePath) + upstreamProxyConfigEntity.SecretSpaceID, err = c.RegistryMetadataHelper.getSecretSpaceID(ctx, + res.SecretSpacePath) if err != nil { return nil, nil, err } @@ -365,7 +366,8 @@ func (c *APIController) CreateUpstreamProxyEntity( } if res.SecretKeySpacePath != nil && len(*res.SecretKeySpacePath) > 0 { - upstreamProxyConfigEntity.SecretSpaceID, err = c.RegistryMetadataHelper.getSecretSpaceID(ctx, res.SecretKeySpacePath) + upstreamProxyConfigEntity.SecretSpaceID, err = c.RegistryMetadataHelper.getSecretSpaceID(ctx, + res.SecretKeySpacePath) if err != nil { return nil, nil, err } @@ -377,19 +379,6 @@ func (c *APIController) CreateUpstreamProxyEntity( return repoEntity, upstreamProxyConfigEntity, nil } -func (c *APIController) getSecretSpaceID(ctx context.Context, secretSpacePath *string) (int, error) { - if secretSpacePath == nil { - return -1, fmt.Errorf("secret space path is missing") - } - - space, err := c.SpaceFinder.FindByRef(ctx, *secretSpacePath) - if err != nil { - return -1, fmt.Errorf("failed to get Space Path: %w", err) - } - - return int(space.ID), nil -} - func isDuplicateKeyError(err error) bool { return strings.Contains(err.Error(), "resource is a duplicate") } diff --git a/registry/app/api/controller/metadata/create_webhook.go b/registry/app/api/controller/metadata/create_webhook.go index b53e901a0..3a0391852 100644 --- a/registry/app/api/controller/metadata/create_webhook.go +++ b/registry/app/api/controller/metadata/create_webhook.go @@ -35,7 +35,9 @@ func (c *APIController) CreateWebhook( ) (api.CreateWebhookResponseObject, error) { webhookRequest := api.WebhookRequest(*r.Body) if webhookRequest.Identifier == internalWebhookIdentifier { - return createWebhookBadRequestErrorResponse(fmt.Errorf("webhook identifier %s is reserved", internalWebhookIdentifier)) + return createWebhookBadRequestErrorResponse( + fmt.Errorf("webhook identifier %s is reserved", internalWebhookIdentifier), + ) } regInfo, err := c.RegistryMetadataHelper.GetRegistryRequestBaseInfo(ctx, "", string(r.RegistryRef)) if err != nil { diff --git a/registry/app/api/controller/metadata/get_client_setup_details.go b/registry/app/api/controller/metadata/get_client_setup_details.go index e6179ca40..15618fbc2 100644 --- a/registry/app/api/controller/metadata/get_client_setup_details.go +++ b/registry/app/api/controller/metadata/get_client_setup_details.go @@ -17,6 +17,7 @@ package metadata import ( "context" "net/http" + "net/url" "strings" apiauth "github.com/harness/gitness/app/api/auth" @@ -71,37 +72,6 @@ func (c *APIController) GetClientSetupDetails( }, err } - //nolint:nestif - if imageParam != nil { - image, err := c.ImageStore.GetByName(ctx, reg.ID, string(*imageParam)) - if err != nil { - return artifact.GetClientSetupDetails404JSONResponse{ - NotFoundJSONResponse: artifact.NotFoundJSONResponse( - *GetErrorResponse(http.StatusNotFound, "image doesn't exist"), - ), - }, err - } - if reg.PackageType != artifact.PackageTypeDOCKER && reg.PackageType != artifact.PackageTypeHELM && tagParam != nil { - _, err := c.ArtifactStore.GetByName(ctx, image.ID, string(*tagParam)) - if err != nil { - return artifact.GetClientSetupDetails404JSONResponse{ - NotFoundJSONResponse: artifact.NotFoundJSONResponse( - *GetErrorResponse(http.StatusNotFound, "tag doesn't exist"), - ), - }, err - } - } else if tagParam != nil { - _, err := c.TagStore.FindTag(ctx, reg.ID, string(*imageParam), string(*tagParam)) - if err != nil { - return artifact.GetClientSetupDetails404JSONResponse{ - NotFoundJSONResponse: artifact.NotFoundJSONResponse( - *GetErrorResponse(http.StatusNotFound, "tag doesn't exist"), - ), - }, err - } - } - } - packageType := string(reg.PackageType) return artifact.GetClientSetupDetails200JSONResponse{ @@ -132,8 +102,8 @@ func (c *APIController) GenerateClientSetupDetails( loginPasswordLabel, username, registryRef, image, tag) case string(artifact.PackageTypeGENERIC): return c.generateGenericClientSetupDetail(ctx, blankString, registryRef, image, tag) - case string(artifact.PackageTypePYPI): - return c.generatePyPIClientSetupDetail(ctx, registryRef, username, image, tag) + case string(artifact.PackageTypePYTHON): + return c.generatePythonClientSetupDetail(ctx, registryRef, username, image, tag) } header1 := "Login to Docker" section1step1Header := "Run this Docker command in your terminal to authenticate the client." @@ -738,7 +708,7 @@ func (c *APIController) generateMavenClientSetupDetail( } } -func (c *APIController) generatePyPIClientSetupDetail( +func (c *APIController) generatePythonClientSetupDetail( ctx context.Context, registryRef string, username string, @@ -750,7 +720,7 @@ func (c *APIController) generatePyPIClientSetupDetail( // Authentication section section1 := artifact.ClientSetupSection{ - Header: stringPtr("1. Configure Authentication"), + Header: stringPtr("Configure Authentication"), } _ = section1.FromClientSetupStepConfig(artifact.ClientSetupStepConfig{ Steps: &[]artifact.ClientSetupStep{ @@ -762,9 +732,9 @@ func (c *APIController) generatePyPIClientSetupDetail( Value: stringPtr("[distutils]\n" + "index-servers = harness\n\n" + "[harness]\n" + - "repository: /\n" + - "username: \n" + - "password: {{identity-token}}"), + "repository = \n" + + "username = \n" + + "password = *see step 2*"), }, }, }, @@ -775,29 +745,11 @@ func (c *APIController) generatePyPIClientSetupDetail( }, }) - // Install section + // Publish section section2 := artifact.ClientSetupSection{ - Header: stringPtr("2. Install Package"), + Header: stringPtr("Publish Package"), } _ = section2.FromClientSetupStepConfig(artifact.ClientSetupStepConfig{ - Steps: &[]artifact.ClientSetupStep{ - { - Header: stringPtr("Install a package using pip:"), - Type: &staticStepType, - Commands: &[]artifact.ClientSetupStepCommand{ - { - Value: stringPtr("pip install --index-url / =="), - }, - }, - }, - }, - }) - - // Publish section - section3 := artifact.ClientSetupSection{ - Header: stringPtr("3. Publish Package"), - } - _ = section3.FromClientSetupStepConfig(artifact.ClientSetupStepConfig{ Steps: &[]artifact.ClientSetupStep{ { Header: stringPtr("Build and publish your package:"), @@ -807,7 +759,25 @@ func (c *APIController) generatePyPIClientSetupDetail( Value: stringPtr("python -m build"), }, { - Value: stringPtr("python -m twine upload --repository harness dist/*"), + Value: stringPtr("python -m twine upload --repository harness /path/to/files/*"), + }, + }, + }, + }, + }) + + // Install section + section3 := artifact.ClientSetupSection{ + Header: stringPtr("Install Package"), + } + _ = section3.FromClientSetupStepConfig(artifact.ClientSetupStepConfig{ + Steps: &[]artifact.ClientSetupStep{ + { + Header: stringPtr("Install a package using pip:"), + Type: &staticStepType, + Commands: &[]artifact.ClientSetupStepCommand{ + { + Value: stringPtr("pip install --index-url /simple --no-deps =="), }, }, }, @@ -815,7 +785,7 @@ func (c *APIController) generatePyPIClientSetupDetail( }) clientSetupDetails := artifact.ClientSetupDetails{ - MainHeader: "PyPI Client Setup", + MainHeader: "Python Client Setup", SecHeader: "Follow these instructions to install/use Python packages from this registry.", Sections: []artifact.ClientSetupSection{ section1, @@ -824,10 +794,10 @@ func (c *APIController) generatePyPIClientSetupDetail( }, } - rootSpace, _, _ := paths.DisectRoot(registryRef) - registryURL := c.URLProvider.RegistryURL(ctx, "pypi", rootSpace) + registryURL := c.URLProvider.PackageURL(ctx, registryRef, "python") - c.replacePlaceholders(ctx, &clientSetupDetails.Sections, username, registryRef, image, tag, registryURL, "", "pypi") + c.replacePlaceholders(ctx, &clientSetupDetails.Sections, username, registryRef, image, tag, registryURL, "", + string(artifact.PackageTypePYTHON)) return &artifact.ClientSetupDetailsResponseJSONResponse{ Data: clientSetupDetails, @@ -846,15 +816,23 @@ func (c *APIController) replacePlaceholders( groupID string, pkgType string, ) { + uploadURL := "" + if pkgType == string(artifact.PackageTypePYTHON) { + regURL, _ := url.Parse(registryURL) + // append username:password to the host + regURL.User = url.UserPassword(username, "identity-token") + uploadURL = regURL.String() + } + for i := range *clientSetupSections { tab, err := (*clientSetupSections)[i].AsTabSetupStepConfig() if err != nil || tab.Tabs == nil { //nolint:lll c.replacePlaceholdersInSection(ctx, &(*clientSetupSections)[i], username, regRef, image, tag, pkgType, - groupID, registryURL) + registryURL, groupID, uploadURL) } else { for j := range *tab.Tabs { - c.replacePlaceholders(ctx, (*tab.Tabs)[j].Sections, username, regRef, image, tag, groupID, registryURL, + c.replacePlaceholders(ctx, (*tab.Tabs)[j].Sections, username, regRef, image, tag, registryURL, groupID, pkgType) } _ = (*clientSetupSections)[i].FromTabSetupStepConfig(tab) @@ -872,6 +850,7 @@ func (c *APIController) replacePlaceholdersInSection( pkgType string, registryURL string, groupID string, + uploadURL string, ) { rootSpace, _, _ := paths.DisectRoot(regRef) _, registryName, _ := paths.DisectLeaf(regRef) @@ -891,7 +870,7 @@ func (c *APIController) replacePlaceholdersInSection( continue } for j := range *st.Commands { - replaceText(username, st, j, hostname, registryName, image, tag, registryURL, groupID) + replaceText(username, st, j, hostname, registryName, image, tag, registryURL, groupID, uploadURL) } } _ = clientSetupSection.FromClientSetupStepConfig(sec) @@ -907,6 +886,7 @@ func replaceText( tag *artifact.VersionParam, registryURL string, groupID string, + uploadURL string, ) { if username != "" { (*st.Commands)[i].Value = stringPtr(strings.ReplaceAll(*(*st.Commands)[i].Value, "", username)) @@ -920,6 +900,9 @@ func replaceText( if registryURL != "" { (*st.Commands)[i].Value = stringPtr(strings.ReplaceAll(*(*st.Commands)[i].Value, "", registryURL)) } + if uploadURL != "" { + (*st.Commands)[i].Value = stringPtr(strings.ReplaceAll(*(*st.Commands)[i].Value, "", uploadURL)) + } if hostname != "" { (*st.Commands)[i].Value = stringPtr(strings.ReplaceAll(*(*st.Commands)[i].Value, "", hostname)) } diff --git a/registry/app/api/controller/metadata/list_webhook_execution.go b/registry/app/api/controller/metadata/list_webhook_execution.go index ff46c76f3..9e5749fdc 100644 --- a/registry/app/api/controller/metadata/list_webhook_execution.go +++ b/registry/app/api/controller/metadata/list_webhook_execution.go @@ -170,6 +170,7 @@ func mapTpAPIExecutionResult(result enum.WebhookExecutionResult) api.WebhookExec return "" } +//nolint:exhaustive func mapTpAPITriggerType(trigger enum.WebhookTrigger) api.Trigger { switch trigger { case enum.WebhookTriggerArtifactCreated: diff --git a/registry/app/api/controller/metadata/utils.go b/registry/app/api/controller/metadata/utils.go index 152f84fdc..64d10ccff 100644 --- a/registry/app/api/controller/metadata/utils.go +++ b/registry/app/api/controller/metadata/utils.go @@ -115,7 +115,7 @@ var validPackageTypes = []string{ string(a.PackageTypeHELM), string(a.PackageTypeGENERIC), string(a.PackageTypeMAVEN), - string(a.PackageTypePYPI), + string(a.PackageTypePYTHON), } var validUpstreamSources = []string{ diff --git a/registry/app/api/handler/packages/handler.go b/registry/app/api/handler/packages/handler.go index 7ec29df05..831510c99 100644 --- a/registry/app/api/handler/packages/handler.go +++ b/registry/app/api/handler/packages/handler.go @@ -83,13 +83,13 @@ type PathPackageType string const ( PathPackageTypeGeneric PathPackageType = "generic" PathPackageTypeMaven PathPackageType = "maven" - PathPackageTypePyPI PathPackageType = "pypi" + PathPackageTypePython PathPackageType = "python" ) var packageTypeMap = map[PathPackageType]artifact2.PackageType{ PathPackageTypeGeneric: artifact2.PackageTypeGENERIC, PathPackageTypeMaven: artifact2.PackageTypeMAVEN, - PathPackageTypePyPI: artifact2.PackageTypePYPI, + PathPackageTypePython: artifact2.PackageTypePYTHON, } func (h *handler) GetAuthenticator() authn.Authenticator { diff --git a/registry/app/api/openapi/api.yaml b/registry/app/api/openapi/api.yaml index 5a25fd2ea..9340f6ad1 100644 --- a/registry/app/api/openapi/api.yaml +++ b/registry/app/api/openapi/api.yaml @@ -1749,13 +1749,13 @@ components: HELM: "#/components/schemas/HelmArtifactDetailConfig" GENERIC: "#/components/schemas/GenericArtifactDetailConfig" MAVEN: "#/components/schemas/MavenArtifactDetailConfig" - PYPI: "#/components/schemas/PyPiArtifactDetailConfig" + PYTHON: "#/components/schemas/PythonArtifactDetailConfig" oneOf: - $ref: "#/components/schemas/DockerArtifactDetailConfig" - $ref: "#/components/schemas/HelmArtifactDetailConfig" - $ref: "#/components/schemas/GenericArtifactDetailConfig" - $ref: "#/components/schemas/MavenArtifactDetailConfig" - - $ref: "#/components/schemas/PyPiArtifactDetailConfig" + - $ref: "#/components/schemas/PythonArtifactDetailConfig" required: - imageName - version @@ -1782,9 +1782,9 @@ components: type: string artifactId: type: string - PyPiArtifactDetailConfig: + PythonArtifactDetailConfig: type: object - description: Config for pypi artifact details + description: Config for python artifact details properties: groupId: type: string @@ -2196,7 +2196,7 @@ components: enum: - DOCKER - MAVEN - - PYPI + - PYTHON - GENERIC - HELM SectionType: diff --git a/registry/app/api/openapi/contracts/artifact/services.gen.go b/registry/app/api/openapi/contracts/artifact/services.gen.go index 2228185aa..e96ecf91c 100644 --- a/registry/app/api/openapi/contracts/artifact/services.gen.go +++ b/registry/app/api/openapi/contracts/artifact/services.gen.go @@ -1,6 +1,6 @@ // Package artifact provides primitives to interact with the openapi HTTP API. // -// Code generated by github.com/deepmap/oapi-codegen/v2 version v2.1.0 DO NOT EDIT. +// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.4.1 DO NOT EDIT. package artifact import ( @@ -346,7 +346,6 @@ type MiddlewareFunc func(http.Handler) http.Handler // CreateRegistry operation middleware func (siw *ServerInterfaceWrapper) CreateRegistry(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -369,12 +368,11 @@ func (siw *ServerInterfaceWrapper) CreateRegistry(w http.ResponseWriter, r *http handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // DeleteRegistry operation middleware func (siw *ServerInterfaceWrapper) DeleteRegistry(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -395,12 +393,11 @@ func (siw *ServerInterfaceWrapper) DeleteRegistry(w http.ResponseWriter, r *http handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetRegistry operation middleware func (siw *ServerInterfaceWrapper) GetRegistry(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -421,12 +418,11 @@ func (siw *ServerInterfaceWrapper) GetRegistry(w http.ResponseWriter, r *http.Re handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // ModifyRegistry operation middleware func (siw *ServerInterfaceWrapper) ModifyRegistry(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -447,12 +443,11 @@ func (siw *ServerInterfaceWrapper) ModifyRegistry(w http.ResponseWriter, r *http handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // ListArtifactLabels operation middleware func (siw *ServerInterfaceWrapper) ListArtifactLabels(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -500,12 +495,11 @@ func (siw *ServerInterfaceWrapper) ListArtifactLabels(w http.ResponseWriter, r * handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetArtifactStatsForRegistry operation middleware func (siw *ServerInterfaceWrapper) GetArtifactStatsForRegistry(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -545,12 +539,11 @@ func (siw *ServerInterfaceWrapper) GetArtifactStatsForRegistry(w http.ResponseWr handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // DeleteArtifact operation middleware func (siw *ServerInterfaceWrapper) DeleteArtifact(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -580,12 +573,11 @@ func (siw *ServerInterfaceWrapper) DeleteArtifact(w http.ResponseWriter, r *http handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // UpdateArtifactLabels operation middleware func (siw *ServerInterfaceWrapper) UpdateArtifactLabels(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -615,12 +607,11 @@ func (siw *ServerInterfaceWrapper) UpdateArtifactLabels(w http.ResponseWriter, r handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetArtifactStats operation middleware func (siw *ServerInterfaceWrapper) GetArtifactStats(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -669,12 +660,11 @@ func (siw *ServerInterfaceWrapper) GetArtifactStats(w http.ResponseWriter, r *ht handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetArtifactSummary operation middleware func (siw *ServerInterfaceWrapper) GetArtifactSummary(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -704,12 +694,11 @@ func (siw *ServerInterfaceWrapper) GetArtifactSummary(w http.ResponseWriter, r * handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // DeleteArtifactVersion operation middleware func (siw *ServerInterfaceWrapper) DeleteArtifactVersion(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -748,12 +737,11 @@ func (siw *ServerInterfaceWrapper) DeleteArtifactVersion(w http.ResponseWriter, handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetArtifactDetails operation middleware func (siw *ServerInterfaceWrapper) GetArtifactDetails(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -803,12 +791,11 @@ func (siw *ServerInterfaceWrapper) GetArtifactDetails(w http.ResponseWriter, r * handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetDockerArtifactDetails operation middleware func (siw *ServerInterfaceWrapper) GetDockerArtifactDetails(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -865,12 +852,11 @@ func (siw *ServerInterfaceWrapper) GetDockerArtifactDetails(w http.ResponseWrite handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetDockerArtifactLayers operation middleware func (siw *ServerInterfaceWrapper) GetDockerArtifactLayers(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -927,12 +913,11 @@ func (siw *ServerInterfaceWrapper) GetDockerArtifactLayers(w http.ResponseWriter handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetDockerArtifactManifest operation middleware func (siw *ServerInterfaceWrapper) GetDockerArtifactManifest(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -989,12 +974,11 @@ func (siw *ServerInterfaceWrapper) GetDockerArtifactManifest(w http.ResponseWrit handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetDockerArtifactManifests operation middleware func (siw *ServerInterfaceWrapper) GetDockerArtifactManifests(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1033,12 +1017,11 @@ func (siw *ServerInterfaceWrapper) GetDockerArtifactManifests(w http.ResponseWri handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetArtifactFiles operation middleware func (siw *ServerInterfaceWrapper) GetArtifactFiles(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1120,12 +1103,11 @@ func (siw *ServerInterfaceWrapper) GetArtifactFiles(w http.ResponseWriter, r *ht handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetHelmArtifactDetails operation middleware func (siw *ServerInterfaceWrapper) GetHelmArtifactDetails(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1164,12 +1146,11 @@ func (siw *ServerInterfaceWrapper) GetHelmArtifactDetails(w http.ResponseWriter, handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetHelmArtifactManifest operation middleware func (siw *ServerInterfaceWrapper) GetHelmArtifactManifest(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1208,12 +1189,11 @@ func (siw *ServerInterfaceWrapper) GetHelmArtifactManifest(w http.ResponseWriter handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetArtifactVersionSummary operation middleware func (siw *ServerInterfaceWrapper) GetArtifactVersionSummary(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1252,12 +1232,11 @@ func (siw *ServerInterfaceWrapper) GetArtifactVersionSummary(w http.ResponseWrit handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetAllArtifactVersions operation middleware func (siw *ServerInterfaceWrapper) GetAllArtifactVersions(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1330,12 +1309,11 @@ func (siw *ServerInterfaceWrapper) GetAllArtifactVersions(w http.ResponseWriter, handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetAllArtifactsByRegistry operation middleware func (siw *ServerInterfaceWrapper) GetAllArtifactsByRegistry(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1407,12 +1385,11 @@ func (siw *ServerInterfaceWrapper) GetAllArtifactsByRegistry(w http.ResponseWrit handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetClientSetupDetails operation middleware func (siw *ServerInterfaceWrapper) GetClientSetupDetails(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1452,12 +1429,11 @@ func (siw *ServerInterfaceWrapper) GetClientSetupDetails(w http.ResponseWriter, handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // ListWebhooks operation middleware func (siw *ServerInterfaceWrapper) ListWebhooks(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1521,12 +1497,11 @@ func (siw *ServerInterfaceWrapper) ListWebhooks(w http.ResponseWriter, r *http.R handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // CreateWebhook operation middleware func (siw *ServerInterfaceWrapper) CreateWebhook(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1547,12 +1522,11 @@ func (siw *ServerInterfaceWrapper) CreateWebhook(w http.ResponseWriter, r *http. handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // DeleteWebhook operation middleware func (siw *ServerInterfaceWrapper) DeleteWebhook(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1582,12 +1556,11 @@ func (siw *ServerInterfaceWrapper) DeleteWebhook(w http.ResponseWriter, r *http. handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetWebhook operation middleware func (siw *ServerInterfaceWrapper) GetWebhook(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1617,12 +1590,11 @@ func (siw *ServerInterfaceWrapper) GetWebhook(w http.ResponseWriter, r *http.Req handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // UpdateWebhook operation middleware func (siw *ServerInterfaceWrapper) UpdateWebhook(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1652,12 +1624,11 @@ func (siw *ServerInterfaceWrapper) UpdateWebhook(w http.ResponseWriter, r *http. handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // ListWebhookExecutions operation middleware func (siw *ServerInterfaceWrapper) ListWebhookExecutions(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1706,12 +1677,11 @@ func (siw *ServerInterfaceWrapper) ListWebhookExecutions(w http.ResponseWriter, handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetWebhookExecution operation middleware func (siw *ServerInterfaceWrapper) GetWebhookExecution(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1750,12 +1720,11 @@ func (siw *ServerInterfaceWrapper) GetWebhookExecution(w http.ResponseWriter, r handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // ReTriggerWebhookExecution operation middleware func (siw *ServerInterfaceWrapper) ReTriggerWebhookExecution(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1794,12 +1763,11 @@ func (siw *ServerInterfaceWrapper) ReTriggerWebhookExecution(w http.ResponseWrit handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetArtifactStatsForSpace operation middleware func (siw *ServerInterfaceWrapper) GetArtifactStatsForSpace(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1839,12 +1807,11 @@ func (siw *ServerInterfaceWrapper) GetArtifactStatsForSpace(w http.ResponseWrite handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetAllArtifacts operation middleware func (siw *ServerInterfaceWrapper) GetAllArtifacts(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -1932,12 +1899,11 @@ func (siw *ServerInterfaceWrapper) GetAllArtifacts(w http.ResponseWriter, r *htt handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } // GetAllRegistries operation middleware func (siw *ServerInterfaceWrapper) GetAllRegistries(w http.ResponseWriter, r *http.Request) { - ctx := r.Context() var err error @@ -2025,7 +1991,7 @@ func (siw *ServerInterfaceWrapper) GetAllRegistries(w http.ResponseWriter, r *ht handler = middleware(handler) } - handler.ServeHTTP(w, r.WithContext(ctx)) + handler.ServeHTTP(w, r) } type UnescapedCookieParamError struct { @@ -5796,69 +5762,69 @@ var swaggerSpec = []string{ "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", - "o/vY4wAA", + "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", + "knNw4uTjAAA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/registry/app/api/openapi/contracts/artifact/types.gen.go b/registry/app/api/openapi/contracts/artifact/types.gen.go index 4400c8547..90abd04bb 100644 --- a/registry/app/api/openapi/contracts/artifact/types.gen.go +++ b/registry/app/api/openapi/contracts/artifact/types.gen.go @@ -1,6 +1,6 @@ // Package artifact provides primitives to interact with the openapi HTTP API. // -// Code generated by github.com/deepmap/oapi-codegen/v2 version v2.1.0 DO NOT EDIT. +// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.4.1 DO NOT EDIT. package artifact import ( @@ -30,7 +30,7 @@ const ( PackageTypeGENERIC PackageType = "GENERIC" PackageTypeHELM PackageType = "HELM" PackageTypeMAVEN PackageType = "MAVEN" - PackageTypePYPI PackageType = "PYPI" + PackageTypePYTHON PackageType = "PYTHON" ) // Defines values for RegistryType. @@ -478,8 +478,8 @@ type MavenArtifactDetailConfig struct { // PackageType refers to package type PackageType string -// PyPiArtifactDetailConfig Config for pypi artifact details -type PyPiArtifactDetailConfig struct { +// PythonArtifactDetailConfig Config for python artifact details +type PythonArtifactDetailConfig struct { ArtifactId *string `json:"artifactId,omitempty"` GroupId *string `json:"groupId,omitempty"` } @@ -1359,25 +1359,25 @@ func (t *ArtifactDetail) MergeMavenArtifactDetailConfig(v MavenArtifactDetailCon return err } -// AsPyPiArtifactDetailConfig returns the union data inside the ArtifactDetail as a PyPiArtifactDetailConfig -func (t ArtifactDetail) AsPyPiArtifactDetailConfig() (PyPiArtifactDetailConfig, error) { - var body PyPiArtifactDetailConfig +// AsPythonArtifactDetailConfig returns the union data inside the ArtifactDetail as a PythonArtifactDetailConfig +func (t ArtifactDetail) AsPythonArtifactDetailConfig() (PythonArtifactDetailConfig, error) { + var body PythonArtifactDetailConfig err := json.Unmarshal(t.union, &body) return body, err } -// FromPyPiArtifactDetailConfig overwrites any union data inside the ArtifactDetail as the provided PyPiArtifactDetailConfig -func (t *ArtifactDetail) FromPyPiArtifactDetailConfig(v PyPiArtifactDetailConfig) error { - t.PackageType = "PYPI" +// FromPythonArtifactDetailConfig overwrites any union data inside the ArtifactDetail as the provided PythonArtifactDetailConfig +func (t *ArtifactDetail) FromPythonArtifactDetailConfig(v PythonArtifactDetailConfig) error { + t.PackageType = "PYTHON" b, err := json.Marshal(v) t.union = b return err } -// MergePyPiArtifactDetailConfig performs a merge with any union data inside the ArtifactDetail, using the provided PyPiArtifactDetailConfig -func (t *ArtifactDetail) MergePyPiArtifactDetailConfig(v PyPiArtifactDetailConfig) error { - t.PackageType = "PYPI" +// MergePythonArtifactDetailConfig performs a merge with any union data inside the ArtifactDetail, using the provided PythonArtifactDetailConfig +func (t *ArtifactDetail) MergePythonArtifactDetailConfig(v PythonArtifactDetailConfig) error { + t.PackageType = "PYTHON" b, err := json.Marshal(v) if err != nil { @@ -1411,8 +1411,8 @@ func (t ArtifactDetail) ValueByDiscriminator() (interface{}, error) { return t.AsHelmArtifactDetailConfig() case "MAVEN": return t.AsMavenArtifactDetailConfig() - case "PYPI": - return t.AsPyPiArtifactDetailConfig() + case "PYTHON": + return t.AsPythonArtifactDetailConfig() default: return nil, errors.New("unknown discriminator value: " + discriminator) } diff --git a/registry/app/api/router/packages/route.go b/registry/app/api/router/packages/route.go index d6eedaa54..8074cb568 100644 --- a/registry/app/api/router/packages/route.go +++ b/registry/app/api/router/packages/route.go @@ -69,7 +69,7 @@ func NewRouter( r.Put("/*", genericHandler.PushArtifact) }) - r.Route("/pypi", func(r chi.Router) { + r.Route("/python", func(r chi.Router) { r.Use(middlewareauthn.Attempt(packageHandler.GetAuthenticator())) r.With(middleware.RequestPackageAccess(packageHandler, enum.PermissionArtifactsUpload)). Post("/*", pypiHandler.UploadPackageFile) diff --git a/registry/app/pkg/pypi/metadata.go b/registry/app/pkg/pypi/metadata.go index 0ebf81708..7e987cb0f 100644 --- a/registry/app/pkg/pypi/metadata.go +++ b/registry/app/pkg/pypi/metadata.go @@ -53,7 +53,7 @@ func (c *controller) GetPackageMetadata(ctx context.Context, info ArtifactInfo, fileInfo := File{ Name: file.Filename, FileURL: c.urlProvider.RegistryURL(ctx) + fmt.Sprintf( - "/pkg/%s/%s/pypi/files/%s/%s/%s", + "/pkg/%s/%s/python/files/%s/%s/%s", info.RootIdentifier, info.RegIdentifier, packageName, diff --git a/registry/app/store/database/webhook.go b/registry/app/store/database/webhook.go index 800170eea..0801ce0eb 100644 --- a/registry/app/store/database/webhook.go +++ b/registry/app/store/database/webhook.go @@ -426,6 +426,7 @@ func mapToWebhookDB(webhook *gitnesstypes.WebhookCore) (*webhookDB, error) { dBWebhook.RegistryID = null.IntFrom(webhook.ParentID) case gitnessenum.WebhookParentSpace: dBWebhook.SpaceID = null.IntFrom(webhook.ParentID) + case gitnessenum.WebhookParentRepo: default: return nil, fmt.Errorf("webhook parent type %q is not supported", webhook.ParentType) } @@ -495,6 +496,7 @@ func selectWebhookParents( parentSelector = append(parentSelector, squirrel.Eq{ "registry_webhook_space_id": parent.ID, }) + case gitnessenum.WebhookParentRepo: default: return fmt.Errorf("webhook parent type '%s' is not supported", parent.Type) } diff --git a/registry/services/webhook/handler_artifact.go b/registry/services/webhook/handler_artifact.go index b0ef03f46..47b4842b4 100644 --- a/registry/services/webhook/handler_artifact.go +++ b/registry/services/webhook/handler_artifact.go @@ -224,18 +224,18 @@ func (s *Service) triggerForEventWithArtifact( func (s *Service) getParentInfoRegistry( ctx context.Context, - registryId int64, + registryID int64, inherited bool, ) ([]types.WebhookParentInfo, error) { var parents []types.WebhookParentInfo parents = append(parents, types.WebhookParentInfo{ - ID: registryId, + ID: registryID, Type: enum.WebhookParentRegistry, }) if inherited { - registry, err := s.registryRepository.Get(ctx, registryId) + registry, err := s.registryRepository.Get(ctx, registryID) if err != nil { return nil, fmt.Errorf("failed to get registry: %w", err) } diff --git a/registry/services/webhook/repository.go b/registry/services/webhook/repository.go index 2227f21f9..97da9c9e3 100644 --- a/registry/services/webhook/repository.go +++ b/registry/services/webhook/repository.go @@ -1,3 +1,17 @@ +// Copyright 2023 Harness, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package webhook import ( diff --git a/registry/types/enum/common.go b/registry/types/enum/common.go index b052a187a..b8057e145 100644 --- a/registry/types/enum/common.go +++ b/registry/types/enum/common.go @@ -19,19 +19,6 @@ import ( "golang.org/x/exp/slices" ) -func toInterfaceSlice[T interface{}](vals []T) []interface{} { - res := make([]interface{}, len(vals)) - for i := range vals { - res[i] = vals[i] - } - return res -} - -func sortEnum[T constraints.Ordered](slice []T) []T { - slices.Sort(slice) - return slice -} - func Sanitize[E constraints.Ordered](element E, all func() ([]E, E)) (E, bool) { allValues, defValue := all() var empty E