diff --git a/pkg/chartmuseum/server/multitenant/handlers.go b/pkg/chartmuseum/server/multitenant/handlers.go index f095d9e9..6743b82b 100644 --- a/pkg/chartmuseum/server/multitenant/handlers.go +++ b/pkg/chartmuseum/server/multitenant/handlers.go @@ -130,6 +130,10 @@ func (server *MultiTenantServer) getIndexFileRequestHandler(c *gin.Context) { c.Data(200, indexFileContentType, indexFile.Raw) } +func (server *MultiTenantServer) headIndexFileRequestHandler(c *gin.Context) { + c.Status(200) +} + func (server *MultiTenantServer) getArtifactHubFileRequestHandler(c *gin.Context) { repo := c.Param("repo") log := server.Logger.ContextLoggingFn(c) diff --git a/pkg/chartmuseum/server/multitenant/routes.go b/pkg/chartmuseum/server/multitenant/routes.go index 785a83f7..77a673a4 100644 --- a/pkg/chartmuseum/server/multitenant/routes.go +++ b/pkg/chartmuseum/server/multitenant/routes.go @@ -37,6 +37,7 @@ func (s *MultiTenantServer) Routes() []*cm_router.Route { helmChartRepositoryRoutes := []*cm_router.Route{ {Method: "GET", Path: "/:repo/index.yaml", Handler: s.getIndexFileRequestHandler, Action: cm_auth.PullAction}, + {Method: "HEAD", Path: "/:repo/index.yaml", Handler: s.headIndexFileRequestHandler, Action: cm_auth.PullAction}, {Method: "GET", Path: "/:repo/charts/:filename", Handler: s.getStorageObjectRequestHandler, Action: cm_auth.PullAction}, } diff --git a/pkg/chartmuseum/server/multitenant/server_test.go b/pkg/chartmuseum/server/multitenant/server_test.go index 3b4c1246..59d85c90 100644 --- a/pkg/chartmuseum/server/multitenant/server_test.go +++ b/pkg/chartmuseum/server/multitenant/server_test.go @@ -1070,6 +1070,10 @@ func (suite *MultiTenantServerTestSuite) testAllRoutes(repo string, depth int) { res = suite.doRequest(stype, "GET", fmt.Sprintf("%s/index.yaml", repoPrefix), nil, "") suite.Equal(200, res.Status(), fmt.Sprintf("200 GET %s/index.yaml", repoPrefix)) + // HEAD /:repo/index.yaml + res = suite.doRequest(stype, "HEAD", fmt.Sprintf("%s/index.yaml", repoPrefix), nil, "") + suite.Equal(200, res.Status(), fmt.Sprintf("200 HEAD %s/index.yaml", repoPrefix)) + // GET /:repo/artifacthub-repo.yaml res = suite.doRequest(stype, "GET", fmt.Sprintf("%s/artifacthub-repo.yml", repoPrefix), nil, "") suite.Equal(200, res.Status(), fmt.Sprintf("200 GET %s/artifacthub-repo.yml", repoPrefix))