{"id":18291162,"url":"https://github.com/rhecosystemappeng/isv-addon-operator","last_synced_at":"2026-06-30T11:32:10.998Z","repository":{"id":161304976,"uuid":"626424635","full_name":"RHEcosystemAppEng/isv-addon-operator","owner":"RHEcosystemAppEng","description":null,"archived":false,"fork":false,"pushed_at":"2023-07-12T14:18:34.000Z","size":83,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-12T00:27:23.389Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RHEcosystemAppEng.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-11T12:50:54.000Z","updated_at":"2023-04-21T12:41:16.000Z","dependencies_parsed_at":null,"dependency_job_id":"9968c62f-4f21-424b-9889-c1466d09ce85","html_url":"https://github.com/RHEcosystemAppEng/isv-addon-operator","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"purl":"pkg:github/RHEcosystemAppEng/isv-addon-operator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2Fisv-addon-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2Fisv-addon-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2Fisv-addon-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2Fisv-addon-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RHEcosystemAppEng","download_url":"https://codeload.github.com/RHEcosystemAppEng/isv-addon-operator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHEcosystemAppEng%2Fisv-addon-operator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34965642,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-30T02:00:05.919Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T14:13:24.694Z","updated_at":"2026-06-30T11:32:10.930Z","avatar_url":"https://github.com/RHEcosystemAppEng.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ISV Addon operator template\n\n[Sequence Diagram Quick Access](#sequence-diagram)\n\n## Prologue\n\nThis repository holds a template for creating ISV Addon operator in OSD, it is a starting point from which to start developing your operator\u003cbr/\u003e\nThe design leverages *OLM* dependencies mechanism for operator dependencies.\u003cbr/\u003e\nA *Dynamic Admission Webhook* for provisioning the *Enterprise* CR modifications.\u003cbr/\u003e\nAnd a *Finalizer* for cleaning up the *Enterprise* CR.\n\n## Repository content\n\nNext to this document, you'll find the template operator with its bundle manifest (deployed to *quay.io*).\u003cbr/\u003e\nThe [isv-addon](/isv-addon) controller is the shell for the new design, this part will be implemented in our current operator, if this design gets accepted.\u003cbr/\u003e\nThe [olm-catalog](/olm-catalog) folder holds the sources for the OLM catalog.\u003cbr/\u003e\n\n## Design walkthrough\n\nThe *isv-addon* describes the *enterprise* package as its dependency and runs 2 controllers.\u003cbr/\u003e\nThe *addon* controller creates the *ISV* CR.\u003cbr/\u003e\nThe *webhook* controller provisions all *ISV* CRs.\u003cbr/\u003e\nThe *addon* controller leverages a *finalizer* for cleaning up existing *ISV* CRs.\n\nIn this design, the *addon* controller handles the following actions:\u003cbr/\u003e\nReconciling the required resources, i.e. secrets, prometheus servers, and service monitors.\u003cbr/\u003e\nAnd eventually deploying the required *ISV* CR.\n\n## Entity Relationship\n\n## Sequence Diagram\n\n```mermaid\nsequenceDiagram\n  participant P as Platform\n  participant A as Addon Controller\n  participant I as ISV operator\n  participant V as Validation Webhook\n  actor U as User\n\n  P-\u003e\u003e+A: Create Addon CR\n  activate A\n  A-\u003e\u003eV: ISV CR Create Allowed?\n  V--\u003e\u003eA: Create Allowed!\n  A-\u003e\u003eI: Create ISV CR\n  activate I\n\n  U-\u003e\u003eV: ISV CR Delete Allowed?\n  V--xU: Delete Denied\n  U-\u003e\u003eV: ISV CR Update Allowed?\n  V--xU: Update Denied!\n  U-\u003e\u003eV: New ISV CR Create Allowed?\n  V--xU: Create Denied!\n\n  P-\u003e\u003eA: Delete Addon CR\n  A-\u003e\u003eV: ISV CR Delete Allowed?\n  V--\u003e\u003eA: Delete Allowed!\n  A-\u003e\u003eI: Delete ISV CR\n  deactivate I\n  deactivate A\n```\n\n## Implementing ISV addon operator using this template\nNew ISV operator written using this template repository must implement this method\n```go\ntype CommonISV interface {\n    GetISVPrefix() string\n}\n```\nIn addition the file [enterprise-crd.env](isv-addon%2Fenterprise-crd.env) should also be filled with the appropriate values,\nit is used by kustomize for dynamic values, for example:\n```dotenv\nKIND=StarburstEnterprise\nGROUP=example.com.example.com\nVERSION=v1alpha1\nPLURAL=starburstenterprises\n```\n\nIf ISV specific logic is needed it should be written in functions which should be added to the isvCustomFuncs array.\u003cbr/\u003e\nIf modification of the ISV cr read from the secret is needed, it should be written in functions which should be added to the isvCustomPatches array.\u003cbr/\u003e\nThen an init method needs to be added to the [load_isv_funcs.go](isv-addon%2Fpkg%2Fisv%2Fload_isv_funcs.go) and in it the function specified above should be added to the appropriate arrays for example:\n\n```go\nfunc init() {\n    isvCustomFuncs = append(isvCustomFuncs, funcX)\n    isvCustomPatches = append(isvCustomPatches, funcY)\n}\n```\n\nAddon Operator dependencies should be specified in the [dependencies.yaml](isv-addon%2Fbundle%2Fmetadata%2Fdependencies.yaml) file including dependencies to the isv-operator, for example:\n```yaml\ndependencies:\n- type: olm.package\n  value:\n    packageName: isv-operator(starburst-operator for example)\n    version: \"0.0.1\"\n- type: olm.package\n  value:\n    packageName: ose-prometheus-operator\n    version: \"4.10.0\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhecosystemappeng%2Fisv-addon-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhecosystemappeng%2Fisv-addon-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhecosystemappeng%2Fisv-addon-operator/lists"}