Add initial charm code

Co-authored-by: Marius Oprin <moprin@cloudbasesolutions.com>
This commit is contained in:
Ionut Balutoiu 2021-02-26 12:23:28 +02:00
parent b0cb9da641
commit b674530d33
4 changed files with 109 additions and 0 deletions

17
src/layer.yaml Normal file
View File

@ -0,0 +1,17 @@
includes:
- layer:openstack
- interface:dashboard-plugin
options:
basic:
use_venv: True
include_system_packages: False
repo: https://github.com/openstack/charm-magnum-dashboard
config:
deletes:
- debug
- verbose
- use-internal-endpoints
- use-syslog
- ssl_ca
- ssl_cert
- ssl_key

View File

@ -0,0 +1,35 @@
# Copyright 2021 Canonical Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import os
import charms_openstack.adapters
import charms_openstack.charm
class MagnumDashboardCharm(charms_openstack.charm.OpenStackCharm):
release = 'rocky'
name = 'octavia-dashboard'
packages = ['python3-magnum-ui']
python_version = 3
adapters_class = charms_openstack.adapters.OpenStackRelationAdapters
required_relations = ['dashboard']
def enable_ui_plugin(self):
source = '/etc/openstack-dashboard/enabled'
destination = '/usr/lib/python3/dist-packages/openstack_dashboard/local/enabled'
for filename in os.listdir(source):
if "container_infra" in filename:
src = os.path.join(source, filename)
dst = os.path.join(destination, filename)
os.symlink(src, dst)

16
src/metadata.yaml Normal file
View File

@ -0,0 +1,16 @@
name: magnum-dashboard
summary: Openstack Magnum Dashboard
maintainer: Marius Oprin<moprin@cloudbasesolutions.com>
description: |
This is the dashboard for the OpenStack COE service, Magnum.
tags:
- openstack
series:
- bionic
- focal
- groovy
subordinate: true
requires:
dashboard:
interface: dashboard-plugin
scope: container

View File

@ -0,0 +1,41 @@
# Copyright 2018 Canonical Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import charms.reactive as reactive
import charms_openstack.bus
import charms_openstack.charm as charm
charms_openstack.bus.discover()
# Use the charms.openstack defaults for common states and hooks
charm.use_defaults(
'charm.installed',
'config.changed',
'update-status',
'upgrade-charm')
@reactive.when('dashboard.available')
def dashboard_available():
"""Relation to OpenStack Dashboard principal charm complete.
"""
with charm.provide_charm_instance() as magnum_dashboard_charm:
dashboard_relation = reactive.endpoint_from_flag('dashboard.available')
dashboard_relation.publish_plugin_info(
"", None,
conflicting_packages=magnum_dashboard_charm.purge_packages,
install_packages=magnum_dashboard_charm.packages)
magnum_dashboard_charm.enable_ui_plugin()
magnum_dashboard_charm.assess_status()