MCPcopy Index your code
hub / github.com/Azure/ARO-HCP

github.com/Azure/ARO-HCP @main

Chat with this repo
repository ↗ · DeepWiki ↗ · + Follow
13,174 symbols 45,163 edges 1,406 files 6,765 documented · 51%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

ARO-HCP

Description

This repository contains the code, configuration, and deployment pipelines for Red Hat OpenShift on Azure (ARO) using the Hosted Control Planes (HCP) architecture. It includes the ARM Resource Provider (frontend/backend), Cluster Service integration, management cluster controllers, and all Azure infrastructure as code.

Each component is encapsulated in a top-level directory with its own Makefile. A root Makefile provides targets for building all components and managing deployments.

For a full overview, see the documentation index and the high-level architecture.

[!TIP] Make Options Make Options describes how to customize the make build e.g. by defining the container engine to be used or limiting parallel jobs.

Development setup

For instructions on building out a dev environment for testing -- Review the Dev Infrastructure guide

For instructions on building and testing Frontend -- Check out Frontend's README

Remote Containers Development setup

The setup is based on VSCode Remote Containers. See here for more information.

VSCode should be installed from the offical downloads page (as opposed to other sources, like flatpak). This is to avoid potential docker compatibility issues with the required extensions mentioned below.

The predefined container is in .devcontainer with a custom postCreate.sh. To use it, please install the Remote - Containers extension in VSCode.

The VSCode will have the following extensions installed: - golang.go - editorconfig.editorconfig - ms-azuretools.vscode-bicep - ms-vscode.azurecli - arjun.swagger-viewer

During the container setup, it also installs golangci-lint, which is the de facto standard for linting go.

On top of that, it sets up the Bicep CLI and the Azure CLI with the Bicep extension to simplify the development of infra code.

Finally, the container also contains the nodejs and sets up the typespec which is needed for the ARM contract development, as it is now mandatory to have the typespec in the ARM templates.

Most importantly, the container is set up to use the same user as the host machine, so you can use the same git config and ssh keys. It is implemented as a host mount in the .devcontainer/devcontainer.json file.

"mounts": [
    "source=${localEnv:HOME}/.gitconfig,target=/home/vscode/.gitconfig,type=bind,consistency=cached"
],

Note for Mac users

If you are developing on MacOS you will need to install both docker cli (NOT docker desktop) and colima. There have been issues with the devcontainer working with vscode using podman desktop.

brew install docker
brew install colima

Before running your devcontainer, make sure colima is started.

colima start --cpu 4 --memory 8 --vz-rosetta --vm-type=vz

Then, rebuild and connect to the dev container: cmd + shift + P => dev containers: rebuild container

Extension points exported contracts — how you extend this code

StampSyncer (Interface)
StampSyncer is the interface that concrete stamp controllers implement. [66 implementers]
fleet/pkg/controllers/base/stamp_watching_controller.go
ClusterLister (Interface)
ClusterLister lists and gets Clusters from an informer's indexer. [10 implementers]
backend/pkg/listers/cluster_lister.go
LoggableKey (Interface)
LoggableKey is the contract a controller workqueue key implements so that the generic worker loop can seed its per-recon [10 …
internal/utils/context.go
ManagementClustersCRUD (Interface)
ManagementClustersCRUD provides CRUD operations for management clusters and access to their nested controller status doc [11 …
internal/database/fleet_client.go
CooldownChecker (Interface)
CooldownChecker decides whether a key may be (re-)queued. Implementations must be safe to call concurrently — informer [18 …
internal/controllerutils/cooldown.go
Replacer (Interface)
Replacer writes back a fully-populated desire. Implementations are free to derive the partition / parent scoping from th [7 …
kube-applier/pkg/controllers/desirestatuswriter/desirestatuswriter.go
HostedClusterVerifier (Interface)
(no doc) [40 implementers]
test/util/verifiers/basic.go
ListIterator (Interface)
(no doc) [9 implementers]
internal/ocm/iterators.go

Core symbols most depended-on inside this repo

Info
called by 873
tooling/templatize/pkg/pipeline/run.go
Run
called by 599
test-integration/kube-applier/framework/framework.go
Get
called by 533
backend/pkg/maestro/maestro_client.go
String
called by 437
internal/utils/context.go
Add
called by 391
internal/database/unioninformers/kubeapplier/desire_informer.go
Child
called by 339
internal/database/crud_untyped_resource.go
Run
called by 303
backend/pkg/controllers/controllerutils/util.go
Info
called by 273
backend/pkg/maestro/logr_to_ocm_adapter.go

Shape

Method 5,527
Function 4,739
Struct 2,411
TypeAlias 259
Interface 189
FuncType 48
Class 1

Languages

Go100%
Python1%

Modules by API surface

internal/ocm/mock_client.go220 symbols
internal/api/zz_generated.deepcopy.go176 symbols
test/sdk/v20251223preview/resourcemanager/redhatopenshifthcp/armredhatopenshifthcp/models_serde.go163 symbols
test/sdk/v20260630preview/resourcemanager/redhatopenshifthcp/armredhatopenshifthcp/models_serde.go161 symbols
test/sdk/v20240610preview/resourcemanager/redhatopenshifthcp/armredhatopenshifthcp/models_serde.go157 symbols
test/sdk/resourcemanager/redhatopenshifthcp/armredhatopenshifthcp/models_serde.go157 symbols
internal/api/v20260630preview/generated/models_serde.go152 symbols
internal/api/v20251223preview/generated/models_serde.go148 symbols
internal/api/v20240610preview/generated/models_serde.go142 symbols
internal/ocm/client.go81 symbols
test/sdk/v20251223preview/resourcemanager/redhatopenshifthcp/armredhatopenshifthcp/models.go80 symbols
test/sdk/v20260630preview/resourcemanager/redhatopenshifthcp/armredhatopenshifthcp/models.go79 symbols

For agents

$ claude mcp add ARO-HCP \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact