name: nova-k8s
summary: OpenStack Compute - Nova cloud controller service
maintainer: OpenStack Charmers <openstack-charmers@lists.ubuntu.com>
description: |
 OpenStack is a reliable cloud infrastructure. Its mission is to produce
 the ubiquitous cloud computing platform that will meet the needs of public
 and private cloud providers regardless of size, by being simple to implement
 and massively scalable.
 .
 OpenStack Compute, codenamed Nova, is a cloud computing fabric controller. In
 addition to its "native" API (the OpenStack API), it also supports the Amazon
 EC2 API.
 .
 This charm provides the cloud controller service for OpenStack Nova and includes
 nova-scheduler, nova-api and nova-conductor services.
version: 3
bases:
  - name: ubuntu
    channel: 22.04/stable
assumes:
  - k8s-api
  - juju >= 3.1
tags:
  - openstack
source: https://opendev.org/openstack/charm-nova-k8s
issues: https://bugs.launchpad.net/charm-nova-k8s

containers:
  nova-api:
    resource: nova-api-image
  nova-scheduler:
    resource: nova-scheduler-image
  nova-conductor:
    resource: nova-conductor-image
  nova-spiceproxy:
    resource: nova-spiceproxy-image

resources:
  nova-api-image:
    type: oci-image
    description: OCI image for OpenStack Nova API
    upstream-source: ghcr.io/canonical/nova-consolidated:2024.1
  nova-scheduler-image:
    type: oci-image
    description: OCI image for OpenStack Nova Scheduler
    upstream-source: ghcr.io/canonical/nova-consolidated:2024.1
  nova-conductor-image:
    type: oci-image
    description: OCI image for OpenStack Nova Conductor
    upstream-source: ghcr.io/canonical/nova-consolidated:2024.1
  nova-spiceproxy-image:
    type: oci-image
    description: OCI image for OpenStack Nova Spice proxy
    upstream-source: ghcr.io/canonical/nova-consolidated:2024.1

requires:
  ingress-internal:
    interface: ingress
    optional: true
    limit: 1
  ingress-public:
    interface: ingress
    limit: 1
  traefik-route-internal:
    interface: traefik_route
    optional: true
    limit: 1
  traefik-route-public:
    interface: traefik_route
    limit: 1
  database:
    interface: mysql_client
    limit: 1
  api-database:
    interface: mysql_client
    limit: 1
  cell-database:
    interface: mysql_client
    limit: 1
  amqp:
    interface: rabbitmq
  image-service:
    interface: glance
  identity-service:
    interface: keystone
  cloud-compute:
    interface: nova-compute
  cinder-volume-service:
    interface: cinder
  neutron-network-service:
    interface: neutron
  neutron-api:
    interface: neutron-api
  placement:
    interface: placement
  receive-ca-cert:
    interface: certificate_transfer
    optional: true
  logging:
    interface: loki_push_api
    optional: true
  tracing:
    interface: tracing
    optional: true
    limit: 1

provides:
  nova-service:
    interface: nova

peers:
  peers:
    interface: nova-peer