Armada Clusters API

The Clusters API from Armada — 11 operation(s) for clusters.

OpenAPI Specification

armada-clusters-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Orchestrator Admin Settings Clusters API
  description: 'API for the GPUaaS Orchestrator microservice. Handles tenants, clusters, VMs,

    storage, networking, catalogs, quotas, and related infrastructure operations.

    '
  version: 1.0.0
  contact:
    name: GPUaaS Platform
servers:
- url: /
  description: Relative base (prefix with deployment base URL)
security:
- bearerAuth: []
tags:
- name: Clusters
paths:
  /tenants/{tenant}/clusters:
    get:
      tags:
      - Clusters
      summary: List clusters
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: List of clusters
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      tags:
      - Clusters
      summary: Create cluster
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Cluster created
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '201':
          $ref: '#/components/responses/Created'
        '409':
          $ref: '#/components/responses/Conflict'
  /tenants/{tenant}/clusters/external:
    post:
      tags:
      - Clusters
      summary: Onboard external cluster
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: External cluster onboarded
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '201':
          $ref: '#/components/responses/Created'
        '409':
          $ref: '#/components/responses/Conflict'
  /tenants/{tenant}/clusters/{clusterID}:
    get:
      tags:
      - Clusters
      summary: Get cluster
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Cluster
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    patch:
      tags:
      - Clusters
      summary: Update cluster
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Updated
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    put:
      tags:
      - Clusters
      summary: Scale cluster
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Scaled
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    delete:
      tags:
      - Clusters
      summary: Delete cluster
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Deleted
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '204':
          $ref: '#/components/responses/NoContent'
  /tenants/{tenant}/clusters/{clusterID}/kubeconfig:
    get:
      tags:
      - Clusters
      summary: Get cluster kubeconfig
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Kubeconfig
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /tenants/{tenant}/clusters/{clusterID}/workloads:
    get:
      tags:
      - Clusters
      summary: Get workloads
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: List of workloads
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      tags:
      - Clusters
      summary: Add workloads
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Workloads added
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '201':
          $ref: '#/components/responses/Created'
        '409':
          $ref: '#/components/responses/Conflict'
    delete:
      tags:
      - Clusters
      summary: Delete workloads
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Deleted
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '204':
          $ref: '#/components/responses/NoContent'
  /tenants/{tenant}/clusters/{clusterID}/upgrade:
    post:
      tags:
      - Clusters
      summary: Upgrade cluster
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Upgrade started
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '201':
          $ref: '#/components/responses/Created'
        '409':
          $ref: '#/components/responses/Conflict'
  /tenants/{tenant}/clusters/{clusterID}/migs:
    get:
      tags:
      - Clusters
      summary: Get MIG status
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: MIG status
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
    post:
      tags:
      - Clusters
      summary: Enable MIG
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: MIG enabled
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '201':
          $ref: '#/components/responses/Created'
        '409':
          $ref: '#/components/responses/Conflict'
  /tenants/{tenant}/clusters/{clusterID}/migs/capacity:
    get:
      tags:
      - Clusters
      summary: Get cluster MIG capacity
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: MIG capacity
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /tenants/{tenant}/clusters/{clusterID}/csi-drivers:
    post:
      tags:
      - Clusters
      summary: Deploy CSI driver
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: CSI deployed
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '201':
          $ref: '#/components/responses/Created'
        '409':
          $ref: '#/components/responses/Conflict'
  /tenants/{tenant}/clusters/{clusterID}/csi-drivers/{csiID}:
    delete:
      tags:
      - Clusters
      summary: Delete CSI driver
      parameters:
      - name: tenant
        in: path
        required: true
        schema:
          type: string
      - name: clusterID
        in: path
        required: true
        schema:
          type: string
      - name: csiID
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Deleted
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '204':
          $ref: '#/components/responses/NoContent'
  /clusters/versions:
    get:
      tags:
      - Clusters
      summary: Get cluster versions
      operationId: getClusterVersions
      responses:
        '200':
          description: List of versions
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  responses:
    NoContent:
      description: No Content - success with no response body
    InternalServerError:
      description: Internal Server Error - server error
    Unauthorized:
      description: Unauthorized - missing or invalid authentication
    BadRequest:
      description: Bad Request - invalid or malformed request
    Conflict:
      description: Conflict - resource conflict (e.g. duplicate)
    NotFound:
      description: Not Found - resource does not exist
    Forbidden:
      description: Forbidden - insufficient permissions
    Created:
      description: Created - resource created successfully
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT from auth middleware