{"id":20111295,"url":"https://github.com/openstack/charm-nova-cloud-controller","last_synced_at":"2025-05-06T10:32:58.553Z","repository":{"id":60841861,"uuid":"52858857","full_name":"openstack/charm-nova-cloud-controller","owner":"openstack","description":"Juju Charm - Nova Cloud Controller. Mirror of code maintained at opendev.org.","archived":false,"fork":false,"pushed_at":"2025-04-22T09:11:29.000Z","size":4595,"stargazers_count":16,"open_issues_count":0,"forks_count":30,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-22T10:33:14.161Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://opendev.org/openstack/charm-nova-cloud-controller","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/openstack.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2016-03-01T07:56:06.000Z","updated_at":"2025-04-22T09:11:34.000Z","dependencies_parsed_at":"2023-12-06T12:27:52.192Z","dependency_job_id":"0f7606d8-f6e1-42c8-8f75-ee7c368ea36c","html_url":"https://github.com/openstack/charm-nova-cloud-controller","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-nova-cloud-controller","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-nova-cloud-controller/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-nova-cloud-controller/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-nova-cloud-controller/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openstack","download_url":"https://codeload.github.com/openstack/charm-nova-cloud-controller/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252666275,"owners_count":21785235,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T18:15:15.637Z","updated_at":"2025-05-06T10:32:58.135Z","avatar_url":"https://github.com/openstack.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Overview\n\nThe nova-cloud-controller charm deploys a suite of OpenStack Nova services:\n\n* [nova-api][upstream-nova-api]\n* [nova-conductor][upstream-nova-conductor]\n* [nova-scheduler][upstream-nova-scheduler]\n\n# Usage\n\n## Configuration\n\nThis section covers common and/or important configuration options. See file\n`config.yaml` for the full list of options, along with their descriptions and\ndefault values. See the [Juju documentation][juju-docs-config-apps] for details\non configuring applications.\n\n#### `cache-known-hosts`\n\nControls whether or not the charm will use the current cache for hostname/IP\nresolution queries for nova-compute units. This occurs whenever information\nthat is passed over the `nova-compute:cloud-compute` relation changes (e.g. a\nnova-compute unit is added). The default value is 'true'. See section [SSH host\nlookup caching][anchor-ssh-caching] for details.\n\n#### `console-proxy-ip`\n\nSets a client accessible proxy IP address that allows for VM console access. It\nshould route to the nova-cloud-controller unit when the application is not\nunder HA. When it is, the value of 'local' will point to the VIP.\n\nEnsure that option `console-access-protocol` is set to a value other than\n'None'.\n\nVNC clients should be configured accordingly. In the case of a VIP, it will\nneed to be determined.\n\n#### `console-access-protocol`\n\nSpecifies the protocol to use when accessing the console of a VM. Supported\nvalues are: 'None', 'spice', 'xvpvnc', 'novnc', and 'vnc' (for both xvpvnc and\nnovnc). Type 'xvpvnc' is not supported with UCA release 'bionic-ussuri' or with\nseries 'focal' or later.\n\n\u003e **Caution**: VMs are configured with a specific protocol at creation time.\n  Console access for existing VMs will therefore break if this value is changed\n  to something different.\n\n#### `network-manager`\n\nDefines the network manager for the cloud. Supported values are:\n\n* 'FlatDHCPManager' for nova-network (the default)\n* 'FlatManager' - for nova-network\n* 'Neutron' - for a full SDN solution\n\nWhen using 'Neutron' the [neutron-gateway][neutron-gateway-charm] charm should\nbe used to provide L3 routing and DHCP Services.\n\n#### `openstack-origin`\n\nStates the software sources. A common value is an OpenStack UCA release (e.g.\n'cloud:bionic-ussuri' or 'cloud:focal-wallaby'). See [Ubuntu Cloud\nArchive][wiki-uca]. The underlying host's existing apt sources will be used if\nthis option is not specified (this behaviour can be explicitly chosen by using\nthe value of 'distro').\n\n## Deployment\n\nThese deployment instructions assume the following applications are present:\nkeystone, rabbitmq-server, neutron-api, nova-compute, and a cloud database.\n\nFile ``ncc.yaml`` contains an example configuration:\n\n```yaml\n   nova-cloud-controller:\n     network-manager: Neutron\n     openstack-origin: cloud:focal-wallaby\n```\n\nNova cloud controller is often containerised. Here a single unit is deployed to\na new container on machine '3':\n\n    juju deploy --to lxd:3 --config ncc.yaml nova-cloud-controller\n\n\u003e **Note**: The cloud's database is determined by the series: prior to focal\n  [percona-cluster][percona-cluster-charm] is used, otherwise it is\n  [mysql-innodb-cluster][mysql-innodb-cluster-charm]. In the example deployment\n  below mysql-innodb-cluster is used.\n\nJoin nova-cloud-controller to the cloud database:\n\n    juju deploy mysql-router ncc-mysql-router\n    juju add-relation ncc-mysql-router:db-router mysql-innodb-cluster:db-router\n    juju add-relation ncc-mysql-router:shared-db nova-cloud-controller:shared-db\n\nFive additional relations can be added:\n\n    juju add-relation nova-cloud-controller:identity-service keystone:identity-service\n    juju add-relation nova-cloud-controller:amqp rabbitmq-server:amqp\n    juju add-relation nova-cloud-controller:neutron-api neutron-api:neutron-api\n    juju add-relation nova-cloud-controller:cloud-compute nova-compute:cloud-compute\n\n### TLS\n\nEnable TLS by adding a relation to an existing vault application:\n\n    juju add-relation nova-cloud-controller:certificates vault:certificates\n\nSee [Managing TLS certificates][cdg-tls] in the\n[OpenStack Charms Deployment Guide][cdg] for more information on TLS.\n\n\u003e **Note**: This charm also supports TLS configuration via charm options\n  `ssl_cert`, `ssl_key`, and `ssl_ca`.\n\n## Actions\n\nThis section covers Juju [actions][juju-docs-actions] supported by the charm.\nActions allow specific operations to be performed on a per-unit basis. To\ndisplay action descriptions run `juju actions --schema nova-cloud-controller`.\nIf the charm is not deployed then see file `actions.yaml`.\n\n* `archive-data`\n* `clear-unit-knownhost-cache`\n* `openstack-upgrade`\n* `pause`\n* `resume`\n* `security-checklist`\n* `sync-compute-availability-zones`\n\n## High availability\n\nWhen more than one unit is deployed with the [hacluster][hacluster-charm]\napplication the charm will bring up an HA active/active cluster.\n\nThere are two mutually exclusive high availability options: using virtual IP(s)\nor DNS. In both cases the hacluster subordinate charm is used to provide the\nCorosync and Pacemaker backend HA functionality.\n\nSee [OpenStack high availability][cdg-ha-apps] in the [OpenStack Charms\nDeployment Guide][cdg] for details.\n\n## Spaces\n\nThis charm supports the use of Juju Network Spaces, allowing the charm to be\nbound to network space configurations managed directly by Juju.  This is only\nsupported with Juju 2.0 and above.\n\nAPI endpoints can be bound to distinct network spaces supporting the network\nseparation of public, internal and admin endpoints.\n\nAccess to the underlying MySQL instance can also be bound to a specific space\nusing the shared-db relation.\n\nTo use this feature, use the --bind option when deploying the charm:\n\n    juju deploy nova-cloud-controller --bind \\\n       \"public=public-space \\\n        internal=internal-space \\\n        admin=admin-space \\\n        shared-db=internal-space\"\n\nAlternatively, these can also be provided as part of a Juju native bundle\nconfiguration:\n\n```yaml\n    nova-cloud-controller:\n      charm: cs:xenial/nova-cloud-controller\n      num_units: 1\n      bindings:\n        public: public-space\n        admin: admin-space\n        internal: internal-space\n        shared-db: internal-space\n```\n\n\u003e **Note**: Spaces must be configured in the underlying provider prior to\n  attempting to use them.\n\n\u003e **Note**: Existing deployments using `os-*-network` configuration options\n  will continue to function; these options are preferred over any network space\n  binding provided if set.\n\n## Charm-managed quotas\n\nThe charm can optionally set project quotas, which affect both new and existing\nprojects. These quotas are set with the following configuration options:\n\n* `quota-cores`\n* `quota-count-usage-from-placement`\n* `quota-injected-files`\n* `quota-injected-file-size`\n* `quota-injected-path-size`\n* `quota-instances`\n* `quota-key-pairs`\n* `quota-metadata-items`\n* `quota-ram`\n* `quota-server-groups`\n* `quota-server-group-members`\n\nGiven that OpenStack quotas can be set in a variety of ways, the order of\nprecedence (from higher to lower) for the enforcing of quotas is:\n\n1. quotas set by the operator manually\n1. quotas set by the nova-cloud-controller charm\n1. default quotas of the OpenStack service\n\nFor information on OpenStack quotas see [Manage quotas][upstream-nova-quotas]\nin the Nova documentation.\n\n## SSH host lookup caching\n\nCaching SSH known hosts reduces 'cloud-compute' hook execution time. It does\nthis by reducing the number of lookups performed by the nova-cloud-controller\ncharm during SSH connection negotiations when distributing a new unit's SSH\nkeys among existing units of the same application group. These keys are needed\nfor VM migrations to succeed.\n\nThe cache is populated (or refreshed) when option `cache-known-hosts` is set to\n'false', in which case DNS lookups are always performed. The cache is queried\nby the charm when it is set to 'true', where a lookup is only performed (adding\nthe result to the cache) when the cache is unable satisfy the query.\n\nWhen a modification is made to DNS resolution, the `clear-unit-knownhost-cache`\naction should be used. This action refreshes the charm's cache and updates the\n`known_hosts` file on the nova-compute units. Information can be updated\nselectively by targeting a specific unit, an application group, or all\napplication groups:\n\n    juju run-action --wait nova-cloud-controller/0 clear-unit-knownhost-cache target=nova-compute/2\n    juju run-action --wait nova-cloud-controller/0 clear-unit-knownhost-cache target=nova-compute\n    juju run-action --wait nova-cloud-controller/0 clear-unit-knownhost-cache\n\nWhen nova-cloud-controller is under HA, the same invocation must be run on all\nnova-cloud-controller units.\n\n## Policy overrides\n\nPolicy overrides is an advanced feature that allows an operator to override the\ndefault policy of an OpenStack service. The policies that the service supports,\nthe defaults it implements in its code, and the defaults that a charm may\ninclude should all be clearly understood before proceeding.\n\n\u003e **Caution**: It is possible to break the system (for tenants and other\n  services) if policies are incorrectly applied to the service.\n\nPolicy statements are placed in a YAML file. This file (or files) is then (ZIP)\ncompressed into a single file and used as an application resource. The override\nis then enabled via a Boolean charm option.\n\nHere are the essential commands (filenames are arbitrary):\n\n    zip overrides.zip override-file.yaml\n    juju attach-resource nova-cloud-controller policyd-override=overrides.zip\n    juju config nova-cloud-controller use-policyd-override=true\n\nSee appendix [Policy overrides][cdg-appendix-n] in the [OpenStack Charms\nDeployment Guide][cdg] for a thorough treatment of this feature.\n\n# Documentation\n\nThe OpenStack Charms project maintains two documentation guides:\n\n* [OpenStack Charm Guide][cg]: for project information, including development\n  and support notes\n* [OpenStack Charms Deployment Guide][cdg]: for charm usage information\n\n# Bugs\n\nPlease report bugs on [Launchpad][lp-bugs-charm-nova-cloud-controller].\n\n\u003c!-- LINKS --\u003e\n\n[cg]: https://docs.openstack.org/charm-guide\n[cdg]: https://docs.openstack.org/project-deploy-guide/charm-deployment-guide\n[cdg-appendix-n]: https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/latest/app-policy-overrides.html\n[lp-bugs-charm-nova-cloud-controller]: https://bugs.launchpad.net/charm-nova-cloud-controller/+filebug\n[cdg-ha-apps]: https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/latest/app-ha.html#ha-applications\n[hacluster-charm]: https://jaas.ai/hacluster\n[neutron-gateway-charm]: https://jaas.ai/neutron-gateway\n[upstream-nova-quotas]: https://docs.openstack.org/nova/latest/admin/quotas.html\n[juju-docs-actions]: https://jaas.ai/docs/actions\n[juju-docs-config-apps]: https://juju.is/docs/configuring-applications\n[wiki-uca]: https://wiki.ubuntu.com/OpenStack/CloudArchive\n[anchor-ssh-caching]: #ssh-host-lookup-caching\n[percona-cluster-charm]: https://jaas.ai/percona-cluster\n[mysql-innodb-cluster-charm]: https://jaas.ai/mysql-innodb-cluster\n[vault-charm]: https://jaas.ai/vault\n[cdg-tls]: https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/latest/app-certificate-management.html\n[upstream-nova-api]: https://docs.openstack.org/nova/latest/cli/nova-api.html\n[upstream-nova-conductor]: https://docs.openstack.org/nova/latest/cli/nova-conductor.html\n[upstream-nova-scheduler]: https://docs.openstack.org/nova/latest/cli/nova-scheduler.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstack%2Fcharm-nova-cloud-controller","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenstack%2Fcharm-nova-cloud-controller","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstack%2Fcharm-nova-cloud-controller/lists"}