From 3f6884cce98c5cdda847c86984753253736c8f6a Mon Sep 17 00:00:00 2001
From: Liam Young <liam.young@canonical.com>
Date: Wed, 2 Dec 2020 13:10:04 +0000
Subject: [PATCH] Add support for Trilio 4.1 and 20.01 Updates

Add Trilio 4.1 support

Includes updates to charmhelpers/charms.openstack for cert_utils
and unit-get for the install hook error on Juju 2.9

* ensure tox.ini is from release-tools
* ensure requirements.txt files are from release-tools
* On reactive charms:
  - ensure master branch for charms.openstack
  - ensure master branch for charm-helpers

Change-Id: Id0602f52bf8b33abb7fb444a020301c07a656c98
---
 src/lib/charm/openstack/trilio_wlm.py    | 16 +++++++++++++---
 src/tests/bundles/bionic-queens-ssl.yaml |  2 ++
 src/tests/bundles/bionic-stein-ssl.yaml  |  2 ++
 src/tests/bundles/bionic-train-ssl.yaml  |  2 ++
 src/tests/tests.yaml                     |  5 ++++-
 src/wheelhouse.txt                       |  4 ++++
 test-requirements.txt                    |  2 ++
 7 files changed, 29 insertions(+), 4 deletions(-)
 create mode 100644 src/wheelhouse.txt

diff --git a/src/lib/charm/openstack/trilio_wlm.py b/src/lib/charm/openstack/trilio_wlm.py
index 3b64935..81e2360 100644
--- a/src/lib/charm/openstack/trilio_wlm.py
+++ b/src/lib/charm/openstack/trilio_wlm.py
@@ -16,6 +16,7 @@ import collections
 import subprocess
 
 import charmhelpers.core.hookenv as hookenv
+import charmhelpers.contrib.openstack.utils as os_utils
 
 import charms_openstack.charm
 import charms_openstack.adapters
@@ -24,8 +25,7 @@ import charms_openstack.ip as os_ip
 
 import charms.reactive as reactive
 
-# select the default release function
-charms_openstack.charm.use_defaults('charm.default-select-release')
+charms_openstack.plugins.trilio.make_trilio_handlers()
 
 
 def _get_internal_url(identity_service, service):
@@ -106,6 +106,7 @@ class TrilioWLMCharm(charms_openstack.plugins.TrilioVaultCharm,
     alembic_ini = "/etc/workloadmgr/alembic.ini"
 
     release = "train"
+    trilio_release = "4.0"
 
     # List of packages to install for this charm
     # NOTE(jamespage): nova-common ensures a consistent UID is use
@@ -114,6 +115,8 @@ class TrilioWLMCharm(charms_openstack.plugins.TrilioVaultCharm,
         "linux-image-virtual",  # Used for libguestfs supermin appliance
         "nova-common",
         "workloadmgr",
+        "python3-workloadmgrclient",
+        "python3-contegoclient",
         "python-apt",
     ]
 
@@ -140,7 +143,8 @@ class TrilioWLMCharm(charms_openstack.plugins.TrilioVaultCharm,
     package_codenames = {
         "workloadmgr": collections.OrderedDict(
             [("3", "stein"), ("4", "train")]
-        )
+        ),
+        "nova-common": os_utils.PACKAGE_CODENAMES["nova-common"],
     }
 
     sync_cmd = [
@@ -162,6 +166,8 @@ class TrilioWLMCharm(charms_openstack.plugins.TrilioVaultCharm,
         "cinder",
     ]
 
+    os_release_pkg = 'nova-common'
+
     workloadmgr_install_dir = "/usr/lib/python3/dist-packages/workloadmgr"
 
     endpoint_template = "{}/v1/$(tenant_id)s"
@@ -340,3 +346,7 @@ class TrilioWLMCharm(charms_openstack.plugins.TrilioVaultCharm,
                 "application not licensed; please run 'create-license' action",
             )
         return None, None
+
+    @classmethod
+    def trilio_version_package(cls):
+        return 'workloadmgr'
diff --git a/src/tests/bundles/bionic-queens-ssl.yaml b/src/tests/bundles/bionic-queens-ssl.yaml
index 09a71e2..4a0853e 100644
--- a/src/tests/bundles/bionic-queens-ssl.yaml
+++ b/src/tests/bundles/bionic-queens-ssl.yaml
@@ -100,6 +100,8 @@ relations:
   - keystone:identity-service
 - - trilio-data-mover:ceph
   - ceph-mon:client
+- - trilio-data-mover:shared-db
+  - mysql:shared-db
 applications:
   glance:
     charm: cs:~openstack-charmers-next/glance
diff --git a/src/tests/bundles/bionic-stein-ssl.yaml b/src/tests/bundles/bionic-stein-ssl.yaml
index 2a6e23f..eef7bb5 100644
--- a/src/tests/bundles/bionic-stein-ssl.yaml
+++ b/src/tests/bundles/bionic-stein-ssl.yaml
@@ -100,6 +100,8 @@ relations:
   - keystone:identity-service
 - - trilio-data-mover:ceph
   - ceph-mon:client
+- - trilio-data-mover:shared-db
+  - mysql:shared-db
 applications:
   glance:
     charm: cs:~openstack-charmers-next/glance
diff --git a/src/tests/bundles/bionic-train-ssl.yaml b/src/tests/bundles/bionic-train-ssl.yaml
index 66d1968..b275d9c 100644
--- a/src/tests/bundles/bionic-train-ssl.yaml
+++ b/src/tests/bundles/bionic-train-ssl.yaml
@@ -108,6 +108,8 @@ relations:
   - keystone:identity-service
 - - trilio-data-mover:ceph
   - ceph-mon:client
+- - trilio-data-mover:shared-db
+  - mysql:shared-db
 applications:
   glance:
     charm: cs:~openstack-charmers-next/glance
diff --git a/src/tests/tests.yaml b/src/tests/tests.yaml
index f0a2212..6504af3 100644
--- a/src/tests/tests.yaml
+++ b/src/tests/tests.yaml
@@ -27,10 +27,13 @@ target_deploy_status:
     workload-status-message: "Monitor bootstrapped but waiting for number of OSDs to reach expected-osd-count (3)"
   cinder-ceph:
     workload-status: waiting
-    workload-status-message: "Incomplete relations: ceph"
+    workload-status-message: "Ceph broker request incomplete"
   trilio-wlm:
     workload-status: blocked
     workload-status-message: "nfs-shares configuration not set"
   trilio-data-mover:
     workload-status: blocked
     workload-status-message: "nfs-shares configuration not set"
+  glance:
+    workload-status: waiting
+    workload-status-message: "Incomplete relations: storage-backend"
diff --git a/src/wheelhouse.txt b/src/wheelhouse.txt
new file mode 100644
index 0000000..9131674
--- /dev/null
+++ b/src/wheelhouse.txt
@@ -0,0 +1,4 @@
+
+git+https://opendev.org/openstack/charms.openstack.git#egg=charms.openstack
+
+git+https://github.com/juju/charm-helpers.git#egg=charmhelpers
diff --git a/test-requirements.txt b/test-requirements.txt
index 8ab24b2..3f08524 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -22,6 +22,8 @@ importlib-resources<3.0.0; python_version < '3.6'
 # dropped support for python 3.5:
 osprofiler<2.7.0;python_version<'3.6'
 stevedore<1.31.0;python_version<'3.6'
+debtcollector<1.22.0;python_version<'3.6'
+oslo.utils<=3.41.0;python_version<'3.6'
 
 requests>=2.18.4
 charms.reactive