Skip to content

Developing controllers

This documentation covers how to write a new ORC controller from scratch.

Overview

ORC controllers follow a unified pattern built on the generic reconciler framework. Each controller:

  • Defines a Kubernetes API (CRD) for the OpenStack resource
  • Implements an actuator that performs CRUD operations against OpenStack
  • Uses the generic reconciler to handle common logic (status, conditions, dependencies)
flowchart TB
    subgraph Your Controller
        api[API Types<br/><i>api/v1alpha1/*_types.go</i>]
        actuator[Actuator<br/><i>actuator.go</i>]
        status[Status Writer<br/><i>status.go</i>]
        controller[Controller Init<br/><i>controller.go</i>]
    end

    subgraph Generic Framework
        reconciler[Generic Reconciler]
        deps[Dependency Manager]
        conditions[Condition Handler]
    end

    subgraph OpenStack
        osapi[OpenStack APIs]
    end

    controller --> reconciler
    api --> reconciler
    actuator --> reconciler
    status --> reconciler
    reconciler --> deps
    reconciler --> conditions
    actuator --> osapi

Prerequisites

See the local development quickstart for setting up your environment.

Reference documentation

Generated documentation