{"id":20111220,"url":"https://github.com/openstack/charm-openstack-dashboard","last_synced_at":"2025-08-01T20:11:42.866Z","repository":{"id":46229192,"uuid":"52858888","full_name":"openstack/charm-openstack-dashboard","owner":"openstack","description":"Juju Charm - OpenStack dashboard. Mirror of code maintained at opendev.org.","archived":false,"fork":false,"pushed_at":"2025-04-22T09:04:22.000Z","size":2851,"stargazers_count":16,"open_issues_count":0,"forks_count":24,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-06-04T08:17:36.837Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://opendev.org/openstack/charm-openstack-dashboard","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:39.000Z","updated_at":"2025-04-22T09:04:26.000Z","dependencies_parsed_at":"2023-02-10T09:00:25.320Z","dependency_job_id":"cf4a02de-ac81-455c-91f5-3560ac2519f4","html_url":"https://github.com/openstack/charm-openstack-dashboard","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/openstack/charm-openstack-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-openstack-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-openstack-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-openstack-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-openstack-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/openstack","download_url":"https://codeload.github.com/openstack/charm-openstack-dashboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/openstack%2Fcharm-openstack-dashboard/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268290751,"owners_count":24226646,"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","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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:14:55.469Z","updated_at":"2025-08-01T20:11:42.819Z","avatar_url":"https://github.com/openstack.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Overview\n\nThe OpenStack Dashboard provides a Django based web interface for use by both\nadministrators and users of an OpenStack Cloud.\n\nIt allows you to manage Nova, Glance, Cinder and Neutron resources within the\ncloud.\n\n# Usage\n\nThe OpenStack Dashboard is deployed and related to keystone:\n\n    juju deploy openstack-dashboard\n    juju add-relation openstack-dashboard:identity-service \\\n                      keystone:identity-service\n\nThe dashboard will use keystone for user authentication and authorization and\nto interact with the catalog of services within the cloud.\n\nThe dashboard is accessible on:\n\n    http(s)://service_unit_address/horizon\n\nAt a minimum, the cloud must provide Glance and Nova services.\n\n## SSL configuration\n\nTo fully secure your dashboard services, you can provide a SSL key and\ncertificate for installation and configuration. These are provided as base64\nencoded configuration options:\n\n    juju config openstack-dashboard ssl_key=\"$(base64 my.key)\" \\\n        ssl_cert=\"$(base64 my.cert)\"\n\nThe service will be reconfigured to use the supplied information.\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\u003e **Note**: Regardless of which HA method has been chosen, the `secret` option\n  should be set to ensure that the Django secret is consistent across all\n  units.\n\n## Keystone V3\n\nIf the charm is being deployed into a keystone v3 enabled environment then the\ncharm needs to be related to a database to store session information. This is\nonly supported for Mitaka or later.\n\n## Use with a Load Balancing Proxy\n\nInstead of deploying with the hacluster charm for load balancing, its possible\nto also deploy the dashboard with load balancing proxy such as HAProxy:\n\n    juju deploy haproxy\n    juju add-relation haproxy openstack-dashboard\n    juju add-unit -n 2 openstack-dashboard\n\nThis option potentially provides better scale-out than using the charm in\nconjunction with the hacluster charm.\n\n## Custom Theme\n\nThis charm supports providing a custom theme as documented in the [themes]\nconfiguration. In order to enable this capability the configuration options\n'ubuntu-theme' must be turned off and the option 'custom-theme' turned on.\n\n    juju config openstack-dashboard ubuntu-theme=no\n    juju config openstack-dashboard custom-theme=true\n\nOnce the option is enabled a custom theme can be provided via a juju resource.\nThe resource should be a .tgz file with the contents of your custom theme. If\nthe file 'local_settings.py' is included it will be sourced.\n\n    juju attach-resource openstack-dashboard theme=theme.tgz\n\nRepeating the attach-resource will update the theme and turning off the\ncustom-theme option will return to the default.\n\nThe extracted .tgz file should contain the root of the custom theme directory,\nwhere all static content is placed in a directory named 'static'. Here is an\nexample directory structure:\n\n    theme.tgz\n    \\ static - _styles.scss\n    |        | _variables.scss\n    |        \\ img - favicon.ico\n    |              | logo.svg\n    |              \\ logo-splash.svg\n    |\n    \\ local_settings.py (optional)\n\nA barebone custom theme would include only the files shown in the example\nabove, where the '\\_styles.scss' file is empty, and the '\\_variables.scss'\nfile contains:\n\n    $brand-primary: #772953; // the key brand color\n    $navbar-default-bg: $brand-primary;\n    $navbar-default-link-hover-bg: darken($navbar-default-bg, 15%);\n    $navbar-default-color: #fff;\n    $navbar-default-toggle-hover-bg: darken($navbar-default-bg, 10%);\n    $navbar-default-toggle-icon-bar-bg: #fff;\n    $navbar-height: 36px;\n    @import \"/themes/default/variables\";\n\nOptionally, the uploaded custom theme can be set as the default theme.\n\n    juju config openstack-dashboard default-theme='custom'\n\n[themes]: https://docs.openstack.org/horizon/latest/configuration/themes.html\n\n## Policy Overrides\n\nPolicy overrides is an **advanced** feature that allows an operator to override\nthe default policy of an OpenStack service. The policies that the service\nsupports, the defaults it implements in its code, and the defaults that a charm\nmay include 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\nplaced into an appropriately-name directory (or directories) and (ZIP)\ncompressed into a single file. This compressed file is then used as an\napplication resource. Finally, the override is enabled via a Boolean charm\noption.\n\nThe directory names correspond to the OpenStack services that Horizon has\npolicy override support for:\n\n| directory name | service   | charm                  |\n|----------------|-----------|------------------------|\n| `compute`      | Nova      | nova-cloud-controller  |\n| `identity`     | Keystone  | keystone               |\n| `image`        | Glance    | glance                 |\n| `network`      | Neutron   | neutron-api            |\n| `volume`       | Cinder    | cinder                 |\n\n\u003e **Important**: The exact same overrides must also be implemented at the\n  service level using the appropriate charm. See the Policy Overrides section\n  of each charm's README.\n\nFor example, to provide overrides for Nova and Keystone, the compressed file\nshould have a structure similar to the following (the YAML filenames are\narbitrary):\n\n    \\ compute - compute-override1.yaml\n    |         \\ compute-override2.yaml\n    |\n    \\ identity - identity-override1.yaml\n               | identity-override2.yaml\n               \\ identity-override3.yaml\n\nHere are the essential commands:\n\n    zip -r overrides.zip compute identity\n    juju attach-resource openstack-dashboard policyd-override=overrides.zip\n    juju config openstack-dashboard 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# Bugs\n\nPlease report bugs on [Launchpad][lp-bugs-charm-openstack-dashboard].\n\nFor general charm questions refer to the OpenStack [Charm Guide][cg].\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-openstack-dashboard]: https://bugs.launchpad.net/charm-openstack-dashboard/+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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstack%2Fcharm-openstack-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenstack%2Fcharm-openstack-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenstack%2Fcharm-openstack-dashboard/lists"}