From 8890031037c16e183159786f860602005d8ed35d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Casta=C3=B1o=20Arteaga?= Date: Mon, 19 Aug 2024 16:23:46 +0200 Subject: [PATCH] Add support for Radius recipes (#3998) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Sergio Castaño Arteaga Signed-off-by: Cintia Sanchez Garcia Co-authored-by: Sergio Castaño Arteaga Co-authored-by: Cintia Sanchez Garcia --- README.md | 1 + charts/artifact-hub/Chart.yaml | 3 +- charts/artifact-hub/values-production.yaml | 1 + charts/artifact-hub/values.schema.json | 2 +- cmd/ah/lint.go | 4 +- .../migrations/schema/060_radius_recipes.sql | 5 ++ database/tests/schema/schema.sql | 3 +- docs/api/openapi.yaml | 63 +++++++++++++++++ docs/radius_recipes_repositories.md | 54 ++++++++++++++ docs/repositories.md | 1 + docs/www/headers/radius_recipes_repositories | 6 ++ internal/handlers/handlers.go | 4 +- internal/handlers/pkg/handlers_test.go | 11 +++ internal/hub/repo.go | 7 ++ internal/repo/manager.go | 4 ++ internal/tracker/helpers.go | 1 + internal/tracker/source/generic/generic.go | 49 +++++++++++++ internal/tracker/tracker.go | 1 + scripts/prepare-docs.sh | 1 + .../static/media/placeholder_pkg_radius.png | Bin 0 -> 141383 bytes web/public/static/media/radius-light.svg | 16 +++++ web/public/static/media/radius.svg | 41 +++++++++++ web/public/static/media/radius_icon.png | Bin 0 -> 65240 bytes web/src/api/index.ts | 1 + web/src/layout/common/Image.tsx | 2 + web/src/layout/common/RepositoryIcon.test.tsx | 7 ++ web/src/layout/common/RepositoryIcon.tsx | 4 ++ .../controlPanel/repositories/Modal.tsx | 14 ++++ .../__snapshots__/Modal.test.tsx.snap | 5 ++ .../home/__snapshots__/index.test.tsx.snap | 36 ++++++++-- web/src/layout/home/index.test.tsx | 9 +-- web/src/layout/home/index.tsx | 14 +++- web/src/layout/package/Details.tsx | 1 + .../package/RecommendedPackages/index.tsx | 2 +- web/src/layout/package/index.tsx | 66 ++++++++++++++++++ web/src/types.ts | 6 ++ web/src/utils/data.tsx | 11 ++- web/src/utils/getInstallMethods.ts | 1 + web/src/utils/repoKind.test.tsx | 8 +++ web/src/utils/repoKind.ts | 4 ++ widget/src/layout/Widget.tsx | 2 + widget/src/layout/common/Image.test.tsx | 7 ++ widget/src/layout/common/Image.tsx | 2 + widget/src/layout/common/RepositoryIcon.tsx | 1 + .../src/layout/common/RepositoryIconLabel.tsx | 4 ++ widget/src/layout/common/SVGIcons.test.tsx | 5 ++ widget/src/layout/common/SVGIcons.tsx | 34 +++++++++ widget/src/types.ts | 1 + 48 files changed, 505 insertions(+), 20 deletions(-) create mode 100644 database/migrations/schema/060_radius_recipes.sql create mode 100644 docs/radius_recipes_repositories.md create mode 100644 docs/www/headers/radius_recipes_repositories create mode 100644 web/public/static/media/placeholder_pkg_radius.png create mode 100644 web/public/static/media/radius-light.svg create mode 100644 web/public/static/media/radius.svg create mode 100644 web/public/static/media/radius_icon.png diff --git a/README.md b/README.md index 2381b9453..c0a37b47b 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,7 @@ At the moment, the following artifacts kinds are supported *(with plans to suppo - [OLM operators](https://github.com/operator-framework) - [OpenCost plugins](https://www.opencost.io) - [Open Policy Agent (OPA) policies](https://www.openpolicyagent.org/) +- [Radius Recipes](https://radapp.io) - [Tekton tasks, pipelines and stepactions](https://tekton.dev/) - [Tinkerbell actions](https://tinkerbell.org/) diff --git a/charts/artifact-hub/Chart.yaml b/charts/artifact-hub/Chart.yaml index f2b0b54c1..f2e56d6ea 100644 --- a/charts/artifact-hub/Chart.yaml +++ b/charts/artifact-hub/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 name: artifact-hub description: Artifact Hub is a web-based application that enables finding, installing, and publishing Cloud Native packages. type: application -version: 1.19.1-0 +version: 1.19.1-1 appVersion: 1.19.0 kubeVersion: ">= 1.19.0-0" home: https://artifacthub.io @@ -32,6 +32,7 @@ keywords: - inspektor gadget - meshery - opencost + - radius maintainers: - name: Sergio email: tegioz@icloud.com diff --git a/charts/artifact-hub/values-production.yaml b/charts/artifact-hub/values-production.yaml index 55511fc89..b9a6bf036 100644 --- a/charts/artifact-hub/values-production.yaml +++ b/charts/artifact-hub/values-production.yaml @@ -119,6 +119,7 @@ tracker: requests: cpu: 2 memory: 4000Mi + repositoryTimeout: 25m trivy: deploy: diff --git a/charts/artifact-hub/values.schema.json b/charts/artifact-hub/values.schema.json index 29d715d71..b0f2a26a5 100644 --- a/charts/artifact-hub/values.schema.json +++ b/charts/artifact-hub/values.schema.json @@ -1162,7 +1162,7 @@ }, "repositoriesKinds": { "title": "Repositories kinds to process ([] = all)", - "description": "The following kinds are supported at the moment: falco, helm, olm, opa, tbaction, krew, helm-plugin, tekton-task, keda-scaler, coredns, keptn, tekton-pipeline, container, kubewarden, gatekeeper, kyverno, knative-client-plugin, backstage, argo-template, kubearmor, kcl, headlamp, inspektor-gadget, tekton-stepaction, meshery, opencost", + "description": "The following kinds are supported at the moment: falco, helm, olm, opa, tbaction, krew, helm-plugin, tekton-task, keda-scaler, coredns, keptn, tekton-pipeline, container, kubewarden, gatekeeper, kyverno, knative-client-plugin, backstage, argo-template, kubearmor, kcl, headlamp, inspektor-gadget, tekton-stepaction, meshery, opencost, radius", "type": "array", "items": { "type": "string" diff --git a/cmd/ah/lint.go b/cmd/ah/lint.go index 4037a712e..237ea366f 100644 --- a/cmd/ah/lint.go +++ b/cmd/ah/lint.go @@ -97,7 +97,7 @@ func newLintCmd() *cobra.Command { return lint(opts, &output{cmd.OutOrStdout()}) }, } - lintCmd.Flags().StringVarP(&opts.kind, "kind", "k", "helm", "repository kind: argo-template, backstage, coredns, falco, gatekeeper, headlamp, helm, helm-plugin, inspektor-gadget, kcl, keda-scaler, keptn, knative-client-plugin, krew, kubearmor, kubewarden, kyverno, meshery, olm, opa, opencost, tbaction, tekton-pipeline, tekton-stepaction, tekton-task") + lintCmd.Flags().StringVarP(&opts.kind, "kind", "k", "helm", "repository kind: argo-template, backstage, coredns, falco, gatekeeper, headlamp, helm, helm-plugin, inspektor-gadget, kcl, keda-scaler, keptn, knative-client-plugin, krew, kubearmor, kubewarden, kyverno, meshery, olm, opa, opencost, radius, tbaction, tekton-pipeline, tekton-stepaction, tekton-task") lintCmd.Flags().StringVarP(&opts.path, "path", "p", ".", "repository's packages path") lintCmd.Flags().StringVarP(&opts.tektonVersioning, "tekton-versioning", "", hub.TektonDirBasedVersioning, "tekton versioning option: directory, git") return lintCmd @@ -134,6 +134,7 @@ func lint(opts *lintOptions, out *output) error { hub.Meshery, hub.OPA, hub.OpenCost, + hub.Radius, hub.TBAction: report = lintGeneric(opts.path, kind) case hub.Helm: @@ -761,6 +762,7 @@ func (out *output) printPkgDetails(pkg *hub.Package) { hub.Meshery, hub.OPA, hub.OpenCost, + hub.Radius, hub.TBAction: // Install diff --git a/database/migrations/schema/060_radius_recipes.sql b/database/migrations/schema/060_radius_recipes.sql new file mode 100644 index 000000000..d30b0f09a --- /dev/null +++ b/database/migrations/schema/060_radius_recipes.sql @@ -0,0 +1,5 @@ +insert into repository_kind values (26, 'Radius recipes'); + +---- create above / drop below ---- + +delete from repository_kind where repository_kind_id = 26; diff --git a/database/tests/schema/schema.sql b/database/tests/schema/schema.sql index 17ed8aa55..b9c540258 100644 --- a/database/tests/schema/schema.sql +++ b/database/tests/schema/schema.sql @@ -567,7 +567,8 @@ select results_eq( (22, 'Inspektor gadgets'), (23, 'Tekton stepactions'), (24, 'Meshery designs'), - (25, 'OpenCost plugins') + (25, 'OpenCost plugins'), + (26, 'Radius recipes') $$, 'Repository kinds should exist' ); diff --git a/docs/api/openapi.yaml b/docs/api/openapi.yaml index 7668605f7..ab65d5601 100644 --- a/docs/api/openapi.yaml +++ b/docs/api/openapi.yaml @@ -1621,6 +1621,29 @@ paths: $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" + "/packages/radius/{repoName}/{packageName}": + get: + tags: + - Packages + summary: Get package details + description: Get package details + operationId: getRadiusRecipeDetails + parameters: + - $ref: "#/components/parameters/RepoNameParam" + - $ref: "#/components/parameters/PackageNameParam" + responses: + "200": + description: "" + content: + application/json: + schema: + $ref: "#/components/schemas/RadiusRecipe" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequests" + "500": + $ref: "#/components/responses/InternalServerError" "/packages/tbaction/{repoName}/{packageName}": get: tags: @@ -2242,6 +2265,30 @@ paths: $ref: "#/components/responses/TooManyRequests" "500": $ref: "#/components/responses/InternalServerError" + "/packages/radius/{repoName}/{packageName}/{version}": + get: + tags: + - Packages + summary: Get package version details + description: Get package version details + operationId: getRadiusRecipeVersionDetails + parameters: + - $ref: "#/components/parameters/RepoNameParam" + - $ref: "#/components/parameters/PackageNameParam" + - $ref: "#/components/parameters/VersionParam" + responses: + "200": + description: "" + content: + application/json: + schema: + $ref: "#/components/schemas/RadiusRecipe" + "404": + $ref: "#/components/responses/NotFoundResponse" + "429": + $ref: "#/components/responses/TooManyRequests" + "500": + $ref: "#/components/responses/InternalServerError" "/packages/tbaction/{repoName}/{packageName}/{version}": get: tags: @@ -4509,6 +4556,18 @@ components: condition: (evt.num < 0) OpencostPlugin: $ref: "#/components/schemas/Package" + RadiusRecipe: + allOf: + - $ref: "#/components/schemas/Package" + - type: object + properties: + data: + type: object + properties: + recipe: + type: object + nullable: false + additionalProperties: true TBActionPackage: $ref: "#/components/schemas/Package" TektonPipelinePackage: @@ -5019,6 +5078,7 @@ components: * `23` - Tekton stepactions * `24` - Meshery designs * `25` - Opencost plugins + * `26` - Radius recipes RepositoryKindParam: type: string enum: @@ -5048,6 +5108,7 @@ components: - tekton-stepaction - meshery - opencost + - radius description: | Repository kind name: * `helm` - Helm charts @@ -5076,6 +5137,7 @@ components: * `tekton-stepaction` - Tekton stepactions * `meshery` - Meshery designs * `opencost` - Opencost plugins + * `radius` - Radius recipes RepositorySummary: type: object required: @@ -5621,6 +5683,7 @@ components: * `23` - Tekton stepactions * `24` - Meshery designs * `25` - Opencost plugins + * `26` - Radius recipes PackageNameParam: in: path name: packageName diff --git a/docs/radius_recipes_repositories.md b/docs/radius_recipes_repositories.md new file mode 100644 index 000000000..a22b6a3c7 --- /dev/null +++ b/docs/radius_recipes_repositories.md @@ -0,0 +1,54 @@ +## Radius recipes repositories + +Radius recipes repositories are expected to be hosted in GitHub, GitLab or Bitbucket repos. When adding your repository to Artifact Hub, the url used **must** follow the following format: + +- `https://github.com/user/repo[/path/to/packages]` +- `https://gitlab.com/user/repo[/path/to/packages]` +- `https://bitbucket.org/user/repo[/path/to/packages]` + +By default the `master` branch is used, but it's possible to specify a different one from the UI. + +*Please NOTE that the repository URL used when adding the repository to Artifact Hub **must NOT** contain the git hosting platform specific parts, like **tree/branch**, just the path to your packages like it would show in the filesystem.* + +The *path/to/packages* provided can contain metadata for one or more packages. Each package version **must** be on a separate folder, and it's up to you to decide if you want to publish one or multiple versions of your package. + +The structure of a repository with multiple recipes packages and versions could look something like this: + +```sh +$ tree path/to/packages +path/to/packages +├── artifacthub-repo.yml +├── recipe1 +│   ├── 1.0.0 +│   │   ├── README.md +│   │   ├── artifacthub-pkg.yml +│   │   └── recipe.bicep +│   └── 2.0.0 +│      ├── README.md +│      ├── artifacthub-pkg.yml +│   └── recipe.bicep +└── recipe2 + └── 1.0.0 +       ├── README.md +      ├── artifacthub-pkg.yml +      ├── main.tf + └── variables.tf +``` + +This structure is flexible, and in some cases where you only have a package and a version it can be greatly simplified. In the case of a single package with a single version available at a time (the publisher doesn't want to make previous ones available, for example), the structure could look like this: + +```sh +$ tree path/to/packages +path/to/packages +├── artifacthub-repo.yml +└── recipe1 +    ├── README.md +    ├── recipe.bicep + └── artifacthub-pkg.yml +``` + +In the previous case, even the `package1` directory could be omitted. The reason is that both packages names and versions are read from the `artifacthub-pkg.yml` metadata file, so directories names are not used at all. + +Each package version **needs** an `artifacthub-pkg.yml` metadata file. Please see the file [spec](https://github.com/artifacthub/hub/blob/master/docs/metadata/artifacthub-pkg.yml) for more details. The [artifacthub-repo.yml](https://github.com/artifacthub/hub/blob/master/docs/metadata/artifacthub-repo.yml) repository metadata file shown above can be used to setup features like [Verified publisher](https://github.com/artifacthub/hub/blob/master/docs/repositories.md#verified-publisher) or [Ownership claim](https://github.com/artifacthub/hub/blob/master/docs/repositories.md#ownership-claim). This file must be located at `/path/to/packages`. + +Once you have added your repository, you are all set up. As you add new versions of your recipes packages or new packages to your git repository, they'll be automatically indexed and listed in Artifact Hub. diff --git a/docs/repositories.md b/docs/repositories.md index a477e8503..49234146b 100644 --- a/docs/repositories.md +++ b/docs/repositories.md @@ -25,6 +25,7 @@ The following repositories kinds are supported at the moment: - [OLM operators repositories](https://github.com/artifacthub/hub/blob/master/docs/olm_operators_repositories.md) - [OPA policies repositories](https://github.com/artifacthub/hub/blob/master/docs/opa_policies_repositories.md) - [OpenCost plugins repositories](https://github.com/artifacthub/hub/blob/master/docs/opencost_plugins_repositories.md) +- [Radius recipes repositories](https://github.com/artifacthub/hub/blob/master/docs/radius_recipes_repositories.md) - [Tekton pipelines repositories](https://github.com/artifacthub/hub/blob/master/docs/tekton_pipelines_repositories.md) - [Tekton tasks repositories](https://github.com/artifacthub/hub/blob/master/docs/tekton_tasks_repositories.md) - [Tekton stepactions repositories](https://github.com/artifacthub/hub/blob/master/docs/tekton_stepactions_repositories.md) diff --git a/docs/www/headers/radius_recipes_repositories b/docs/www/headers/radius_recipes_repositories new file mode 100644 index 000000000..ebcd57de0 --- /dev/null +++ b/docs/www/headers/radius_recipes_repositories @@ -0,0 +1,6 @@ +--- +title: "Radius recipes" +aliases: [ + "/radius_recipes_repositories", +] +--- diff --git a/internal/handlers/handlers.go b/internal/handlers/handlers.go index 8de4e9cfc..44d02828a 100644 --- a/internal/handlers/handlers.go +++ b/internal/handlers/handlers.go @@ -265,7 +265,7 @@ func (h *Handlers) setupRouter() { r.Get("/stats", h.Packages.GetStats) r.With(corsMW).Get("/search", h.Packages.Search) r.With(h.Users.RequireLogin).Get("/starred", h.Packages.GetStarredByUser) - r.Route("/{^helm$|^falco$|^opa$|^olm|^tbaction|^krew|^helm-plugin|^tekton-task|^keda-scaler|^coredns|^keptn|^tekton-pipeline|^container|^kubewarden|^gatekeeper|^kyverno|^knative-client-plugin|^backstage|^argo-template|^kubearmor|^kcl|^headlamp|^inspektor-gadget|^tekton-stepaction|^meshery|^opencost$}/{repoName}/{packageName}", func(r chi.Router) { + r.Route("/{^helm$|^falco$|^opa$|^olm|^tbaction|^krew|^helm-plugin|^tekton-task|^keda-scaler|^coredns|^keptn|^tekton-pipeline|^container|^kubewarden|^gatekeeper|^kyverno|^knative-client-plugin|^backstage|^argo-template|^kubearmor|^kcl|^headlamp|^inspektor-gadget|^tekton-stepaction|^meshery|^opencost|^radius$}/{repoName}/{packageName}", func(r chi.Router) { r.Get("/feed/rss", h.Packages.RssFeed) r.With(corsMW).Get("/summary", h.Packages.GetSummary) r.Get("/{version}", h.Packages.Get) @@ -430,7 +430,7 @@ func (h *Handlers) setupRouter() { // Index special entry points r.Route("/packages", func(r chi.Router) { - r.Route("/{^helm$|^falco$|^opa$|^olm|^tbaction|^krew|^helm-plugin|^tekton-task|^keda-scaler|^coredns|^keptn|^tekton-pipeline|^container|^kubewarden|^gatekeeper|^kyverno|^knative-client-plugin|^backstage|^argo-template|^kubearmor|^kcl|^headlamp|^inspektor-gadget|^tekton-stepaction|^meshery|^opencost$}/{repoName}/{packageName}", func(r chi.Router) { + r.Route("/{^helm$|^falco$|^opa$|^olm|^tbaction|^krew|^helm-plugin|^tekton-task|^keda-scaler|^coredns|^keptn|^tekton-pipeline|^container|^kubewarden|^gatekeeper|^kyverno|^knative-client-plugin|^backstage|^argo-template|^kubearmor|^kcl|^headlamp|^inspektor-gadget|^tekton-stepaction|^meshery|^opencost|^radius$}/{repoName}/{packageName}", func(r chi.Router) { r.With(h.Packages.InjectIndexMeta).Get("/{version}", h.Static.Index) r.With(h.Packages.InjectIndexMeta).Get("/", h.Static.Index) }) diff --git a/internal/handlers/pkg/handlers_test.go b/internal/handlers/pkg/handlers_test.go index ac6aa7851..2c01c5bdc 100644 --- a/internal/handlers/pkg/handlers_test.go +++ b/internal/handlers/pkg/handlers_test.go @@ -2210,6 +2210,17 @@ func TestBuildURL(t *testing.T) { "2.0.0", baseURL + "/packages/opencost/repo1/pkg1/2.0.0", }, + { + &hub.Package{ + NormalizedName: "pkg1", + Repository: &hub.Repository{ + Kind: hub.Radius, + Name: "repo1", + }, + }, + "2.0.0", + baseURL + "/packages/radius/repo1/pkg1/2.0.0", + }, } for _, tc := range testCases { tc := tc diff --git a/internal/hub/repo.go b/internal/hub/repo.go index c1ddeb2a0..384258765 100644 --- a/internal/hub/repo.go +++ b/internal/hub/repo.go @@ -124,6 +124,9 @@ const ( // OpenCost represents a repository with OpenCost plugins. OpenCost RepositoryKind = 25 + + // Radius represents a repository with Radius recipes. + Radius RepositoryKind = 26 ) // GetKindName returns the name of the provided repository kind. @@ -173,6 +176,8 @@ func GetKindName(kind RepositoryKind) string { return "opa" case OpenCost: return "opencost" + case Radius: + return "radius" case TBAction: return "tbaction" case TektonPipeline: @@ -234,6 +239,8 @@ func GetKindFromName(kind string) (RepositoryKind, error) { return OPA, nil case "opencost": return OpenCost, nil + case "radius": + return Radius, nil case "tbaction": return TBAction, nil case "tekton-pipeline": diff --git a/internal/repo/manager.go b/internal/repo/manager.go index 9b3cfa556..e966430ca 100644 --- a/internal/repo/manager.go +++ b/internal/repo/manager.go @@ -101,6 +101,7 @@ var ( hub.OLM, hub.OPA, hub.OpenCost, + hub.Radius, hub.TBAction, hub.TektonPipeline, hub.TektonTask, @@ -304,6 +305,7 @@ func (m *Manager) ClaimOwnership(ctx context.Context, repoName, orgName string) hub.OLM, hub.OPA, hub.OpenCost, + hub.Radius, hub.TBAction, hub.TektonPipeline, hub.TektonTask, @@ -487,6 +489,7 @@ func (m *Manager) locateMetadataFile(r *hub.Repository, basePath string) string hub.OLM, hub.OPA, hub.OpenCost, + hub.Radius, hub.TBAction, hub.TektonPipeline, hub.TektonTask, @@ -855,6 +858,7 @@ func (m *Manager) validateURL(r *hub.Repository) error { hub.OLM, hub.OPA, hub.OpenCost, + hub.Radius, hub.TBAction, hub.TektonPipeline, hub.TektonTask, diff --git a/internal/tracker/helpers.go b/internal/tracker/helpers.go index 4a56d8fdc..bfd8b5865 100644 --- a/internal/tracker/helpers.go +++ b/internal/tracker/helpers.go @@ -129,6 +129,7 @@ func SetupSource(i *hub.TrackerSourceInput) hub.TrackerSource { hub.Meshery, hub.OPA, hub.OpenCost, + hub.Radius, hub.TBAction: source = generic.NewTrackerSource(i) case hub.TektonTask, hub.TektonPipeline, hub.TektonStepAction: diff --git a/internal/tracker/source/generic/generic.go b/internal/tracker/source/generic/generic.go index 1d3655d50..1a8de2e69 100644 --- a/internal/tracker/source/generic/generic.go +++ b/internal/tracker/source/generic/generic.go @@ -50,6 +50,10 @@ const ( // contains the raw policies. OPAPoliciesKey = "policies" + // RadiusRecipeKey represents the key used in the package's data field that + // contains the raw recipe files. + RadiusRecipeKey = "recipe" + // argoTemplateManifests represents the filename that contains the Argo // template manifests. argoTemplateManifests = "manifests.yaml" @@ -69,6 +73,18 @@ const ( // opaPoliciesSuffix is the suffix that each of the policies files in the // package must use. opaPoliciesSuffix = ".rego" + + // radiusBicepRecipe represents the filename that contains the Radius + // recipe file in Bicep format. + radiusBicepRecipe = "recipe.bicep" + + // radiusTFRecipe represents the filename that contains the Radius recipe + // file in Terraform format (main). + radiusTFRecipe = "main.tf" + + // radiusTFRecipeVariables represents the filename that contains the + // variables used by the Radius recipe file in Terraform format. + radiusTFRecipeVariables = "variables.tf" ) // TrackerSource is a hub.TrackerSource implementation used by several kinds @@ -230,6 +246,8 @@ func PreparePackage(r *hub.Repository, md *hub.PackageMetadata, pkgPath string) kindData, err = prepareMesheryData(pkgPath) case hub.OPA: kindData, err = prepareOPAData(pkgPath, ignorer) + case hub.Radius: + kindData, err = prepareRadiusData(pkgPath) } if err != nil { return nil, fmt.Errorf("error preparing package %s version %s data: %w", md.Name, md.Version, err) @@ -410,6 +428,37 @@ func prepareOPAData(pkgPath string, ignorer ignore.IgnoreParser) (map[string]int }, nil } +// prepareRadiusData reads and formats Radius specific data available in the +// path provided, returning the resulting data structure. +func prepareRadiusData(pkgPath string) (map[string]interface{}, error) { + // Read recipe files + files := make(map[string]string) + for _, fileName := range []string{radiusBicepRecipe, radiusTFRecipe, radiusTFRecipeVariables} { + filePath := path.Join(pkgPath, fileName) + content, err := util.ReadRegularFile(filePath) + if err == nil { + files[fileName] = string(content) + } else if !errors.Is(err, os.ErrNotExist) { + return nil, fmt.Errorf("error reading recipe file (%s): %w", fileName, err) + } + } + + // Check recipe files found + _, bicepFound := files[radiusBicepRecipe] + _, tfFound := files[radiusTFRecipe] + if bicepFound && tfFound { + return nil, errors.New("invalid recipe: both bicep and terraform files found") + } + if len(files) == 0 { + return nil, errors.New("no recipe files found") + } + + // Return package data field + return map[string]interface{}{ + RadiusRecipeKey: files, + }, nil +} + // GetFilesWithSuffix returns the files with a given suffix in the path // provided, ignoring the ones the ignorer matches. func GetFilesWithSuffix(suffix, rootPath string, ignorer ignore.IgnoreParser) (map[string]string, error) { diff --git a/internal/tracker/tracker.go b/internal/tracker/tracker.go index f20e484f0..68078dc80 100644 --- a/internal/tracker/tracker.go +++ b/internal/tracker/tracker.go @@ -203,6 +203,7 @@ func (t *Tracker) cloneRepository() (string, string, error) { hub.Meshery, hub.OPA, hub.OpenCost, + hub.Radius, hub.TBAction, hub.TektonPipeline, hub.TektonTask, diff --git a/scripts/prepare-docs.sh b/scripts/prepare-docs.sh index 01226a10d..039f7742b 100755 --- a/scripts/prepare-docs.sh +++ b/scripts/prepare-docs.sh @@ -28,6 +28,7 @@ cat docs/www/headers/meshery_designs_repositories docs/meshery_designs_repositor cat docs/www/headers/olm_operators_repositories docs/olm_operators_repositories.md > docs/www/content/topics/repositories/olm-operators.md cat docs/www/headers/opa_policies_repositories docs/opa_policies_repositories.md > docs/www/content/topics/repositories/opa-policies.md cat docs/www/headers/opencost_plugins_repositories docs/opencost_plugins_repositories.md > docs/www/content/topics/repositories/opencost-plugins.md +cat docs/www/headers/radius_recipes_repositories docs/radius_recipes_repositories.md > docs/www/content/topics/repositories/radius-recipes.md cat docs/www/headers/tekton_pipelines_repositories docs/tekton_pipelines_repositories.md > docs/www/content/topics/repositories/tekton-pipelines.md cat docs/www/headers/tekton_tasks_repositories docs/tekton_tasks_repositories.md > docs/www/content/topics/repositories/tekton-tasks.md cat docs/www/headers/tekton_stepactions_repositories docs/tekton_stepactions_repositories.md > docs/www/content/topics/repositories/tekton-stepactions.md diff --git a/web/public/static/media/placeholder_pkg_radius.png b/web/public/static/media/placeholder_pkg_radius.png new file mode 100644 index 0000000000000000000000000000000000000000..74828034ff265afd7a03b48ff9327cdb2be8b9ef GIT binary patch literal 141383 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 z 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 baDCH39RKD*o5lhL`143XRleXpBIy4B;SQmI literal 0 HcmV?d00001 diff --git a/web/public/static/media/radius-light.svg b/web/public/static/media/radius-light.svg new file mode 100644 index 000000000..5aff4d22b --- /dev/null +++ b/web/public/static/media/radius-light.svg @@ -0,0 +1,16 @@ + + + + + + + + \ No newline at end of file diff --git a/web/public/static/media/radius.svg b/web/public/static/media/radius.svg new file mode 100644 index 000000000..7e2e94365 --- /dev/null +++ b/web/public/static/media/radius.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/web/public/static/media/radius_icon.png b/web/public/static/media/radius_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..35fc6c4017d3fb01d2b82b2218ce55a4307c176c GIT binary patch literal 65240 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 IGk)>^09-pE { return '/static/media/placeholder_pkg_meshery.png'; case RepositoryKind.OpenCost: return '/static/media/placeholder_pkg_opencost.png'; + case RepositoryKind.RadiusRecipe: + return '/static/media/placeholder_pkg_radius.png'; default: return PLACEHOLDER_SRC; } diff --git a/web/src/layout/common/RepositoryIcon.test.tsx b/web/src/layout/common/RepositoryIcon.test.tsx index a64194e24..d4fd42008 100644 --- a/web/src/layout/common/RepositoryIcon.test.tsx +++ b/web/src/layout/common/RepositoryIcon.test.tsx @@ -163,6 +163,13 @@ describe('RepositoryIcon', () => { expect(icon).toHaveProperty('src', 'http://localhost/static/media/opencost-light.svg'); }); + it('renders Radius recipe icon', () => { + render(); + const icon = screen.getByAltText('Icon'); + expect(icon).toBeInTheDocument(); + expect(icon).toHaveProperty('src', 'http://localhost/static/media/radius-light.svg'); + }); + it('renders empty icon', () => { render(); expect(() => screen.getByAltText('Icon')).toThrow(); diff --git a/web/src/layout/common/RepositoryIcon.tsx b/web/src/layout/common/RepositoryIcon.tsx index 62ede6bf8..e19cc2f0a 100644 --- a/web/src/layout/common/RepositoryIcon.tsx +++ b/web/src/layout/common/RepositoryIcon.tsx @@ -113,6 +113,10 @@ const ICONS = { default: '/static/media/opencost.svg', white: '/static/media/opencost-light.svg', }, + [RepositoryKind.RadiusRecipe]: { + default: '/static/media/radius.svg', + white: '/static/media/radius-light.svg', + }, }; const RepositoryIcon = (props: Props) => { diff --git a/web/src/layout/controlPanel/repositories/Modal.tsx b/web/src/layout/controlPanel/repositories/Modal.tsx index e6601dd67..503909503 100644 --- a/web/src/layout/controlPanel/repositories/Modal.tsx +++ b/web/src/layout/controlPanel/repositories/Modal.tsx @@ -537,6 +537,17 @@ const RepositoryModal = (props: Props) => { ); break; + case RepositoryKind.RadiusRecipe: + link = ( + + Radius recipes + + ); + break; } if (isUndefined(link)) return; @@ -570,6 +581,7 @@ const RepositoryModal = (props: Props) => { case RepositoryKind.TektonStepAction: case RepositoryKind.MesheryDesign: case RepositoryKind.OpenCost: + case RepositoryKind.RadiusRecipe: return ( <>

{ RepositoryKind.TektonStepAction, RepositoryKind.MesheryDesign, RepositoryKind.OpenCost, + RepositoryKind.RadiusRecipe, ].includes(selectedKind) && (

{ RepositoryKind.TektonStepAction, RepositoryKind.MesheryDesign, RepositoryKind.OpenCost, + RepositoryKind.RadiusRecipe, ].includes(selectedKind) && (
diff --git a/web/src/layout/controlPanel/repositories/__snapshots__/Modal.test.tsx.snap b/web/src/layout/controlPanel/repositories/__snapshots__/Modal.test.tsx.snap index 22ee4af14..ded280603 100644 --- a/web/src/layout/controlPanel/repositories/__snapshots__/Modal.test.tsx.snap +++ b/web/src/layout/controlPanel/repositories/__snapshots__/Modal.test.tsx.snap @@ -169,6 +169,11 @@ exports[`Repository Modal - repositories section creates snapshot 1`] = ` > OpenCost plugins +
- +
+
+ +
+ Icon +
+ + Radius recipes + +
+
+
{ await waitFor(() => expect(API.getStats).toHaveBeenCalledTimes(1)); const links = await screen.findAllByRole('button'); - expect(links).toHaveLength(29); + expect(links).toHaveLength(30); expect(links[2]).toHaveProperty('href', 'https://github.com/artifacthub/hub'); expect(links[3]).toHaveProperty('href', 'https://cloud-native.slack.com/channels/artifact-hub'); @@ -157,10 +157,11 @@ describe('Home index', () => { expect(links[23]).toHaveProperty('href', 'https://github.com/operator-framework'); expect(links[24]).toHaveProperty('href', 'https://www.openpolicyagent.org/'); expect(links[25]).toHaveProperty('href', 'https://www.opencost.io/'); - expect(links[26]).toHaveProperty('href', 'https://tekton.dev/'); - expect(links[27]).toHaveProperty('href', 'https://tinkerbell.org/'); + expect(links[26]).toHaveProperty('href', 'https://radapp.io/'); + expect(links[27]).toHaveProperty('href', 'https://tekton.dev/'); + expect(links[28]).toHaveProperty('href', 'https://tinkerbell.org/'); - expect(links[28]).toHaveProperty('href', 'https://www.cncf.io/projects/'); + expect(links[29]).toHaveProperty('href', 'https://www.cncf.io/projects/'); }); }); }); diff --git a/web/src/layout/home/index.tsx b/web/src/layout/home/index.tsx index 4f121f5ba..0a51ff801 100644 --- a/web/src/layout/home/index.tsx +++ b/web/src/layout/home/index.tsx @@ -233,7 +233,7 @@ const HomeView = () => { kubectl plugins, Tekton tasks, pipelines and stepactions, KEDA scalers, CoreDNS plugins, Keptn integrations, container images, Kubewarden policies, Kyverno policies, Knative client, Backstage plugins, Argo templates, KubeArmor policies, KCL modules, Headlamp plugins, Inspektor gadgets, Meshery - designs and OpenCost plugins. + designs, OpenCost plugins and Radius recipes.
{
-
-
{
+ +
+ +
+ +
+ Radius recipes +
+
+
{ case RepositoryKind.InspektorGadget: case RepositoryKind.MesheryDesign: case RepositoryKind.OpenCost: + case RepositoryKind.RadiusRecipe: return ( <> {props.package.appVersion && ( diff --git a/web/src/layout/package/RecommendedPackages/index.tsx b/web/src/layout/package/RecommendedPackages/index.tsx index 736d9e21a..0eac23211 100644 --- a/web/src/layout/package/RecommendedPackages/index.tsx +++ b/web/src/layout/package/RecommendedPackages/index.tsx @@ -14,7 +14,7 @@ interface Props { } export const URL_regex = - /^https:\/\/([^\/?]+)\/packages\/(helm|falco|opa|olm|tbaction|krew|helm-plugin|tekton-task|keda-scaler|coredns|keptn|tekton-pipeline|kubewarden|gatekeeper|kyverno|knative-client-plugin|backstage|argo-template|kubearmor|inspektor-gadget|tekton-stepaction|meshery|opencost|container)\/([a-z0-9-]+)\/([a-z0-9-]+)$/; // eslint-disable-line + /^https:\/\/([^\/?]+)\/packages\/(helm|falco|opa|olm|tbaction|krew|helm-plugin|tekton-task|keda-scaler|coredns|keptn|tekton-pipeline|kubewarden|gatekeeper|kyverno|knative-client-plugin|backstage|argo-template|kubearmor|inspektor-gadget|tekton-stepaction|meshery|opencost|radius|container)\/([a-z0-9-]+)\/([a-z0-9-]+)$/; // eslint-disable-line const prepareRecommendations = (recommendations?: Recommendation[]): RecommendedPackage[] => { const list: RecommendedPackage[] = []; diff --git a/web/src/layout/package/index.tsx b/web/src/layout/package/index.tsx index b706e3701..d1ceff797 100644 --- a/web/src/layout/package/index.tsx +++ b/web/src/layout/package/index.tsx @@ -28,6 +28,7 @@ import { Package, PackageLink, PackageViewsStats, + RadiusRecipeData, Recommendation, RepositoryKind, Version, @@ -467,6 +468,20 @@ const PackageView = () => { return policy; }; + const getRadiusRecipeFiles = (): { [key: string]: string } | undefined => { + let files: { [key: string]: string } | undefined; + if ( + !isUndefined(detail) && + !isNull(detail) && + !isNull(detail.data) && + !isUndefined(detail.data) && + !isUndefined(detail.data[RadiusRecipeData.Recipe]) + ) { + files = detail.data[RadiusRecipeData.Recipe] as { [key: string]: string }; + } + return files; + }; + const getArgoTemplate = (): string | undefined => { let template: string | undefined; if ( @@ -578,6 +593,7 @@ const PackageView = () => { <> {(() => { let file: string | undefined; + let files: { [key: string]: string } | undefined; switch (detail.repository.kind) { case RepositoryKind.Krew: file = getManifestRaw(); @@ -747,6 +763,56 @@ const PackageView = () => { ); + case RepositoryKind.RadiusRecipe: + files = getRadiusRecipeFiles(); + if (!isUndefined(file)) { + additionalTitles += '# Recipe\n'; + } + return ( + <> + {!isUndefined(files) && ( +
+ + {Object.keys(files).map((fileName: string) => { + const content = files![fileName]; + const extension = fileName.split('.').pop(); + return ( +
+
{fileName}
+
+ + + {content} + +
+
+ ); + })} +
+ )} + + ); + default: return null; } diff --git a/web/src/types.ts b/web/src/types.ts index 7497030b0..9f6bbf516 100644 --- a/web/src/types.ts +++ b/web/src/types.ts @@ -27,6 +27,7 @@ export enum RepositoryKind { TektonStepAction, MesheryDesign, OpenCost, + RadiusRecipe, } export enum PackageCategory { @@ -83,6 +84,10 @@ export enum VersioningOption { Directory = 'directory', } +export enum RadiusRecipeData { + Recipe = 'recipe', +} + export interface Repository { repositoryId?: string; name: string; @@ -277,6 +282,7 @@ export interface PackageData { [ArgoTemplateData.Version]?: string; tasks?: TektonTaskInPipeline[]; alternativeLocations?: string[]; + [RadiusRecipeData.Recipe]?: { [key: string]: string }; } export interface TektonTaskInPipeline { diff --git a/web/src/utils/data.tsx b/web/src/utils/data.tsx index 0f873ec01..2f0242153 100644 --- a/web/src/utils/data.tsx +++ b/web/src/utils/data.tsx @@ -285,6 +285,15 @@ export const REPOSITORY_KINDS: RepoKindDef[] = [ icon: , active: true, }, + { + kind: RepositoryKind.RadiusRecipe, + label: 'radius', + name: 'Radius recipe', + singular: 'Radius recipe', + plural: 'Radius recipes', + icon: , + active: true, + }, { kind: RepositoryKind.TektonPipeline, label: 'tekton-pipeline', @@ -822,7 +831,7 @@ export const CVSS_V3_VECTORS: { [key: string]: CVSSVectorMetric[] } = { export const OCI_PREFIX = 'oci://'; export const PKG_DETAIL_PATH = - /^\/packages\/(helm|falco|opa|olm|tbaction|krew|helm-plugin|tekton-task|keda-scaler|coredns|keptn|tekton-pipeline|kubewarden|gatekeeper|kyverno|knative-client-plugin|backstage|argo-template|kubearmor|kcl|headlamp|inspektor-gadget|tekton-stepaction|meshery|opencost|container)\//; + /^\/packages\/(helm|falco|opa|olm|tbaction|krew|helm-plugin|tekton-task|keda-scaler|coredns|keptn|tekton-pipeline|kubewarden|gatekeeper|kyverno|knative-client-plugin|backstage|argo-template|kubearmor|kcl|headlamp|inspektor-gadget|tekton-stepaction|meshery|opencost|radius|container)\//; export const HOME_ROUTES = [ '/verify-email', diff --git a/web/src/utils/getInstallMethods.ts b/web/src/utils/getInstallMethods.ts index 7c6f664f5..81043e5f6 100644 --- a/web/src/utils/getInstallMethods.ts +++ b/web/src/utils/getInstallMethods.ts @@ -116,6 +116,7 @@ const getInstallMethods = (props: PackageInfo): InstallMethodOutput => { case RepositoryKind.InspektorGadget: case RepositoryKind.MesheryDesign: case RepositoryKind.OpenCost: + case RepositoryKind.RadiusRecipe: if (isUndefined(pkg.install)) { output.errorMessage = 'This package does not include installation instructions yet.'; hasError = true; diff --git a/web/src/utils/repoKind.test.tsx b/web/src/utils/repoKind.test.tsx index 2590dac7a..7b83605a4 100644 --- a/web/src/utils/repoKind.test.tsx +++ b/web/src/utils/repoKind.test.tsx @@ -91,6 +91,10 @@ describe('repoKind', () => { expect(methods.getRepoKind('opencost')).toBe(RepositoryKind.OpenCost); }); + it('radius', () => { + expect(methods.getRepoKind('radius')).toBe(RepositoryKind.RadiusRecipe); + }); + it('unknown', () => { expect(methods.getRepoKind('unknown')).toBeNull(); }); @@ -185,6 +189,10 @@ describe('repoKind', () => { expect(methods.getRepoKindName(RepositoryKind.OpenCost)).toBe('opencost'); }); + it('radius recipe kind', () => { + expect(methods.getRepoKindName(RepositoryKind.RadiusRecipe)).toBe('radius'); + }); + it('unknown kind', () => { expect(methods.getRepoKindName(50 as RepositoryKind)).toBeNull(); }); diff --git a/web/src/utils/repoKind.ts b/web/src/utils/repoKind.ts index b0f8789f9..170a20c43 100644 --- a/web/src/utils/repoKind.ts +++ b/web/src/utils/repoKind.ts @@ -54,6 +54,8 @@ const getRepoKind = (repoName: string): RepositoryKind | null => { return RepositoryKind.MesheryDesign; case 'opencost': return RepositoryKind.OpenCost; + case 'radius': + return RepositoryKind.RadiusRecipe; default: return null; } @@ -113,6 +115,8 @@ const getRepoKindName = (repoKind: RepositoryKind): string | null => { return 'meshery'; case RepositoryKind.OpenCost: return 'opencost'; + case RepositoryKind.RadiusRecipe: + return 'radius'; default: return null; } diff --git a/widget/src/layout/Widget.tsx b/widget/src/layout/Widget.tsx index fd5eb8e41..5f3f09d20 100644 --- a/widget/src/layout/Widget.tsx +++ b/widget/src/layout/Widget.tsx @@ -101,6 +101,8 @@ const getRepoKindName = (repoKind: RepositoryKind): string | null => { return 'meshery'; case RepositoryKind.OpenCost: return 'opencost'; + case RepositoryKind.RadiusRecipe: + return 'radius'; default: return null; } diff --git a/widget/src/layout/common/Image.test.tsx b/widget/src/layout/common/Image.test.tsx index 6cad13c2a..7a272bc53 100644 --- a/widget/src/layout/common/Image.test.tsx +++ b/widget/src/layout/common/Image.test.tsx @@ -193,6 +193,13 @@ describe('Image', () => { expect(image).toHaveProperty('src', 'https://localhost:8000/static/media/placeholder_pkg_opencost.png'); }); + it('renders Radius recipe icon', () => { + render(); + const image = screen.getByAltText('alt image'); + expect(image).toBeInTheDocument(); + expect(image).toHaveProperty('src', 'https://localhost:8000/static/media/placeholder_pkg_radius.png'); + }); + it('renders placeholder icon', () => { render(icon} />); expect(screen.getByText('icon')).toBeInTheDocument(); diff --git a/widget/src/layout/common/Image.tsx b/widget/src/layout/common/Image.tsx index 0413becf1..3761dfadc 100644 --- a/widget/src/layout/common/Image.tsx +++ b/widget/src/layout/common/Image.tsx @@ -80,6 +80,8 @@ const Image = (props: Props) => { return '/static/media/placeholder_pkg_meshery.png'; case RepositoryKind.OpenCost: return '/static/media/placeholder_pkg_opencost.png'; + case RepositoryKind.RadiusRecipe: + return '/static/media/placeholder_pkg_radius.png'; default: return PLACEHOLDER_SRC; } diff --git a/widget/src/layout/common/RepositoryIcon.tsx b/widget/src/layout/common/RepositoryIcon.tsx index b947ca67c..1e89fc0db 100644 --- a/widget/src/layout/common/RepositoryIcon.tsx +++ b/widget/src/layout/common/RepositoryIcon.tsx @@ -38,6 +38,7 @@ const ICONS: IconsList = { [RepositoryKind.TektonStepAction]: , [RepositoryKind.MesheryDesign]: , [RepositoryKind.OpenCost]: , + [RepositoryKind.RadiusRecipe]: , }; const RepositoryIcon = (props: Props) => ( diff --git a/widget/src/layout/common/RepositoryIconLabel.tsx b/widget/src/layout/common/RepositoryIconLabel.tsx index 8b37d1297..ee52a1e81 100644 --- a/widget/src/layout/common/RepositoryIconLabel.tsx +++ b/widget/src/layout/common/RepositoryIconLabel.tsx @@ -120,6 +120,10 @@ const REPOSITORY_KINDS: RepoKindDef[] = [ kind: RepositoryKind.OpenCost, name: 'OpenCost plugin', }, + { + kind: RepositoryKind.RadiusRecipe, + name: 'Radius recipe', + }, ]; const Wrapper = styled('span')` diff --git a/widget/src/layout/common/SVGIcons.test.tsx b/widget/src/layout/common/SVGIcons.test.tsx index 4562d7a16..99138ded4 100644 --- a/widget/src/layout/common/SVGIcons.test.tsx +++ b/widget/src/layout/common/SVGIcons.test.tsx @@ -138,6 +138,11 @@ describe('SVGIcons', () => { expect(screen.getByTitle('opencost')); }); + it('renders Radius recipe icon', () => { + render(); + expect(screen.getByTitle('radius')); + }); + it('does not render when name is not in the list', () => { render(); expect(screen.getByTestId('iconWrapper')).toBeEmptyDOMElement(); diff --git a/widget/src/layout/common/SVGIcons.tsx b/widget/src/layout/common/SVGIcons.tsx index 6c58ad624..afb1bba66 100644 --- a/widget/src/layout/common/SVGIcons.tsx +++ b/widget/src/layout/common/SVGIcons.tsx @@ -1255,6 +1255,40 @@ const SVGIcons = (props: Props) => ( ); + case 'radius': + return ( + + {props.name} + + + + + + + + + + ); + default: return null; } diff --git a/widget/src/types.ts b/widget/src/types.ts index 61b15835f..91493548d 100644 --- a/widget/src/types.ts +++ b/widget/src/types.ts @@ -54,6 +54,7 @@ export enum RepositoryKind { TektonStepAction, MesheryDesign, OpenCost, + RadiusRecipe, } export interface SearchResults {