aro-rp

module
v0.0.0-...-a580c8e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 18, 2020 License: Apache-2.0

README

Azure Red Hat OpenShift Resource Provider

⚠ Notice

For information relating to the generally available Azure Red Hat OpenShift v3 service, please see the following links:

Quickstarts

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repositories using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Repository map

  • .pipelines: CI workflows using Azure pipelines.

  • cmd/aro: RP entrypoint.

  • deploy: ARM templates to deploy RP in development and production.

  • docs: Documentation.

  • hack: Build scripts and utilities.

  • pkg: RP source code:

    • pkg/api: RP internal and external API definitions.

    • pkg/backend: RP backend workers.

    • pkg/client: Autogenerated ARO service Go client.

    • pkg/database: RP CosmosDB wrapper layer.

    • pkg/deploy: /deploy ARM template generation code.

    • pkg/env: RP environment-specific shims for running in production, development or test

    • pkg/frontend: RP frontend webserver.

    • pkg/genevalogging: Daemonset for Geneva logging.

    • pkg/install: OpenShift installer wrapper layer.

    • pkg/metrics: Handles RP metrics via statsd.

    • pkg/mirror: OpenShift release mirror tooling.

    • pkg/monitor: Monitors running clusters.

    • pkg/swagger: Swagger specification generation code.

    • pkg/util: Utility libraries.

  • python: Autogenerated ARO service Python client and az aro client extension.

  • swagger: Autogenerated ARO service Swagger specification.

  • test: End-to-end tests.

  • vendor: Vendored Go libraries.

Basic architecture

  • pkg/frontend is intended to become a spec-compliant RP web server. It is backed by CosmosDB. Incoming PUT/DELETE requests are written to the database with an non-terminal (Updating/Deleting) provisioningState.

  • pkg/backend reads documents with non-terminal provisioningStates, asynchronously updates them and finally updates document with a terminal provisioningState (Succeeded/Failed). The backend updates the document with a heartbeat - if this fails, the document will be picked up by a different worker.

  • As CosmosDB does not support document patch, care is taken to correctly pass through any fields in the internal model which the reader is unaware of (see github.com/ugorji/go/codec.MissingFielder). This is intended to help in upgrade cases and (in the future) with multiple microservices reading from the database in parallel.

  • Care is taken to correctly use optimistic concurrency to avoid document corruption through concurrent writes (see RetryOnPreconditionFailed).

  • The pkg/api architecture differs somewhat from github.com/openshift/openshift-azure: the intention is to fix the broken merge semantics and try pushing validation into the versioned APIs to improve error reporting.

  • Everything is intended to be crash/restart/upgrade-safe, horizontally scaleable, upgradeable...

Directories

Path Synopsis
cmd
aro
hack
db
pkg
api
client/services/redhatopenshift/mgmt/2020-04-30/redhatopenshift
Package redhatopenshift implements the Azure ARM Redhatopenshift service API version 2020-04-30.
Package redhatopenshift implements the Azure ARM Redhatopenshift service API version 2020-04-30.
client/services/redhatopenshift/mgmt/2020-10-31-preview/redhatopenshift
Package redhatopenshift implements the Azure ARM Redhatopenshift service API version 2020-10-31-preview.
Package redhatopenshift implements the Azure ARM Redhatopenshift service API version 2020-10-31-preview.
deploy
Code generated for package deploy by go-bindata DO NOT EDIT.
Code generated for package deploy by go-bindata DO NOT EDIT.
env
operator/apis/aro.openshift.io/v1alpha1
Package v1alpha1 is the v1alpha1 version of the API.
Package v1alpha1 is the v1alpha1 version of the API.
operator/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
operator/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
operator/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
operator/clientset/versioned/typed/aro.openshift.io/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
operator/clientset/versioned/typed/aro.openshift.io/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
operator/deploy
Code generated for package deploy by go-bindata DO NOT EDIT.
Code generated for package deploy by go-bindata DO NOT EDIT.
util/dynamichelper/discovery
Code generated for package discovery by go-bindata DO NOT EDIT.
Code generated for package discovery by go-bindata DO NOT EDIT.
util/mocks/adminactions
Package mock_adminactions is a generated GoMock package.
Package mock_adminactions is a generated GoMock package.
util/mocks/azureclient/graphrbac
Package mock_graphrbac is a generated GoMock package.
Package mock_graphrbac is a generated GoMock package.
util/mocks/azureclient/keyvault
Package mock_keyvault is a generated GoMock package.
Package mock_keyvault is a generated GoMock package.
util/mocks/azureclient/mgmt/authorization
Package mock_authorization is a generated GoMock package.
Package mock_authorization is a generated GoMock package.
util/mocks/azureclient/mgmt/compute
Package mock_compute is a generated GoMock package.
Package mock_compute is a generated GoMock package.
util/mocks/azureclient/mgmt/containerregistry
Package mock_containerregistry is a generated GoMock package.
Package mock_containerregistry is a generated GoMock package.
util/mocks/azureclient/mgmt/dns
Package mock_dns is a generated GoMock package.
Package mock_dns is a generated GoMock package.
util/mocks/azureclient/mgmt/documentdb
Package mock_documentdb is a generated GoMock package.
Package mock_documentdb is a generated GoMock package.
util/mocks/azureclient/mgmt/features
Package mock_features is a generated GoMock package.
Package mock_features is a generated GoMock package.
util/mocks/azureclient/mgmt/insights
Package mock_insights is a generated GoMock package.
Package mock_insights is a generated GoMock package.
util/mocks/azureclient/mgmt/keyvault
Package mock_keyvault is a generated GoMock package.
Package mock_keyvault is a generated GoMock package.
util/mocks/azureclient/mgmt/mock_redhatopenshift
Package mock_redhatopenshift is a generated GoMock package.
Package mock_redhatopenshift is a generated GoMock package.
util/mocks/azureclient/mgmt/msi
Package mock_msi is a generated GoMock package.
Package mock_msi is a generated GoMock package.
util/mocks/azureclient/mgmt/network
Package mock_network is a generated GoMock package.
Package mock_network is a generated GoMock package.
util/mocks/azureclient/mgmt/storage
Package mock_storage is a generated GoMock package.
Package mock_storage is a generated GoMock package.
util/mocks/azureclient/workaround
Package mock_workaround is a generated GoMock package.
Package mock_workaround is a generated GoMock package.
util/mocks/billing
Package mock_billing is a generated GoMock package.
Package mock_billing is a generated GoMock package.
util/mocks/database
Package mock_database is a generated GoMock package.
Package mock_database is a generated GoMock package.
util/mocks/database/cosmosdb
Package mock_cosmosdb is a generated GoMock package.
Package mock_cosmosdb is a generated GoMock package.
util/mocks/dynamichelper
Package mock_dynamichelper is a generated GoMock package.
Package mock_dynamichelper is a generated GoMock package.
util/mocks/encryption
Package mock_encryption is a generated GoMock package.
Package mock_encryption is a generated GoMock package.
util/mocks/env
Package mock_env is a generated GoMock package.
Package mock_env is a generated GoMock package.
util/mocks/instancemetadata
Package mock_instancemetadata is a generated GoMock package.
Package mock_instancemetadata is a generated GoMock package.
util/mocks/kubeactions
Package mock_kubeactions is a generated GoMock package.
Package mock_kubeactions is a generated GoMock package.
util/mocks/metrics
Package mock_metrics is a generated GoMock package.
Package mock_metrics is a generated GoMock package.
util/mocks/operator/controllers/workaround
Package mock_workaround is a generated GoMock package.
Package mock_workaround is a generated GoMock package.
util/mocks/refreshable
Package mock_refreshable is a generated GoMock package.
Package mock_refreshable is a generated GoMock package.
util/mocks/subnet
Package mock_subnet is a generated GoMock package.
Package mock_subnet is a generated GoMock package.
test
e2e

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL