Commit Graph

268 Commits

Author SHA1 Message Date
Trent Lloyd 0042bc36de Replace deprecated _ows_check_services_running
_ows_check_services_running was made public without the underscore and
it's private function name was made an alias and marked deprecated by:
https://github.com/juju/charm-helpers/pull/658

Switch to the new name to avoid many deprecation warnings being printed
by dependant charms every time update-status hooks run:
DEPRECATION WARNING: Function _ows_check_services_running is being
removed on/around 2022-05 : use ows_check_services_running() instead

Change-Id: I4758330db81a95ac2aa17f9bc316afdc2eab2d44
2024-03-22 13:39:55 +00:00
Alex Kavanagh aec72e735b Add mock support for caracal
This is to enable caracal charms.openstack charms to test correctly as
caracal can be appropriately mocked.

Change-Id: Iea9d2aed7968dda0235694f3a9d73bad1573067c
2024-02-06 14:00:29 +00:00
Corey Bryant 5db62d90b9 Add bobcat to testing mocks
Change-Id: If01ea73538ab7dcc34b3b5f4c15585ea7adc432e
2023-07-20 14:08:58 -04:00
Erlon R. Cruz fd042afdf1 Skip version caching for subordinate charms
Caching the charm OpenStack version will cause undesired behaviors
if the charm is a subordinate. The charm local cache is firstly
populated during the charm install. If the charm is a subordinate,
the version will remain the same regardless of future OpenStack
upgrades because today, the hook that updates the cache to the new
version in only called for principal charms.

Related-bug: #1949074
Change-Id: I76abbd29ca910fe4c4d62da09e2d2dd3b5c798a6
2023-04-25 11:18:58 -03:00
Zuul 7a58988354 Merge "Add antelope to testing mocks" 2023-02-13 15:45:08 +00:00
Corey Bryant 56837ec6a6 Add antelope to testing mocks
Change-Id: I372382cbb655a3c3502dc52948af733b0126cfae
2023-02-03 08:43:11 -05:00
Mert Kırpıcı a133824a09 adapters: add healthcheck option support
If the charm class defines haproxy healthcheck endpoints for api
exposing services render them into the haproxy template.

An example declaration would be as follows

   class MyCharm(HAOpenStackCharm):
      ...
      healthcheck = {
         "option": "httpchk GET /healthcheck",
         "http-check": "expect status 200"
      }

Closes-Bug: #1880610
Change-Id: I0de1e45aad9db4d450f3e38e95868580537461e6
2022-11-21 05:29:09 +00:00
James Page bf2e867e9e adapters: fix compat for auto accessors
The keystone interface rebase to the Endpoint base class re-uses
the auto_accessors approach from RelationBase which makes the
interface smell a little different to other Endpoint based interfaces.

Check and map any keys listed in auto_accessors for all relation
class types rather than just for RelationBase.

This also fixes a minor issue where self.accessors was reset to []
when the auto_accessors attribute was not found in the relation
overwriting any accessors passed in during object construction.

Change-Id: I4481c6d8ad5c9f0a8bc5e892d1d7472be83f3454
2022-09-21 11:02:44 +01:00
Alex Kavanagh 581300632b Further fix to OpenStackAPIRelationAdapters
The existing method of using a property to lazily load the cluster
relation adapter permanently changes the class to include that as
a cluster property.  This means that a future (in the same hook
execution) instantiation of the class would include that property,
which means that 'real' cluster adapter could not be used. Sadly,
this was happening with the manila charm, and possibly others.

This patch changes it from a lazily loaded property, to a simple
attribute.

Change-Id: I704f362e0dd845ff00d0f0470b0235a4dead5f9f
Closes-Bug: #1981736
2022-08-04 11:57:02 +01:00
Alex Kavanagh c924762a9c Ensure that the _resolved_cluster member is set
In the OpenStackAPIRelationAdapters class, the _resolved_cluster member
is used to determine the cluster relation had been resolved.  However,
it's possible that it is accessed prior to be used as it was originally
an dunderscored method (__method).  This patch makes it more robust by
switching to a single-underscore (which is inherited and not class-
mangled) and that it is always set to None initially in the __init__
method.

Change-Id: I9b119ba6848923c27844a2f758ae9e3c34c7722d
Closes-Bug: #1981736
2022-08-01 19:05:23 +01:00
Frode Nordahl 11ba59ab4d
lint: Fix line too long in docstring blocking gate
Aparently this has been in the codebase since forever, and the
gate has now started to choke on it with this error message:

    charms_openstack/charm/defaults.py:170:80: E501 line too long (82 > 79 characters)

Change-Id: I0dd61242527c7f1d93df130810bb08269a4312b4
2022-08-01 08:10:02 +02:00
fdesi d049eee8f4 fix in config flags features
* fix name clashing
* fix regex
* fix test case

Change-Id: I2dbc4432a4be2b23dd39e66680abbe33da5ae5af
2022-07-02 01:21:51 +02:00
fdesi 18ac668cd7 Add observer for add multiple arbitrary options with config-flags
Add config_property_with_config_flags observer to handle extra option.
The config-flags are comma separated list of key-value pairs.

Change-Id: I74a693df95bebb14a6edcb796f1c8e6b17a95317
2022-07-01 10:46:09 +02:00
Liam Young 1079a19e2e Add new Trilio version template property
This change adds a new `trilio_compat_version` that can be used
in templates when an option is gated on the trilio Major and
Minor version. The config option cannot be used for examining
atch versions as it relies on a float representation of the
package version.

Change-Id: I9221188b817fbb570700406b97e194aacf6ef786
2022-06-16 10:02:47 +00:00
Liam Young 055fb499b8 Support Trilio 4.2 Share hashes
The Trilio 4.2 changes the way that hashes are generated for nfs
mount points. The hash is now generated from the directory only,
the source IP address is ignored. This patch updates the ghost-share
action to accommodate that.

Change-Id: I64a1cc95a3a78ce79d57f5b840edb29996f04f9c
2022-06-13 16:33:05 +00:00
Corey Bryant d0c540a651 Add zed to testing mocks
Change-Id: Ieaa5c4fcf6d88ae4d906e1f78f1a201f632f46f5
2022-05-17 20:52:32 +00:00
Frode Nordahl 13ef220ce3
core: Gracefully handle missing config option
The ``get_os_codename_package`` function will be called by all
charms.  The newly added call to the ``configure_source`` method
may in some circumstances raise an exception due to missing
source configuration option.

Handle this situation gracefully.

Related-Bug: #1951462
Change-Id: I2bb9c2561b89fea366bd7b7f6a10c3140ce09000
2022-02-26 07:38:20 +01:00
Frode Nordahl 55cc044ea8 Fix use of ``openstack-release`` to determine codename
The current code will oportunisticly attempt to install the
``openstack-release`` package, but it does so without configuring
the UCA sources.

Attempt to configure sources to avoid charms getting stuck in a
chicken and egg situation.

Closes-Bug: #1951462
Change-Id: I8ed6e2dfc7ce83c2e56fd072458e2ef189968e41
2022-02-25 11:29:23 +01:00
Frode Nordahl dda431eaf9
core: Move package version helpers to BaseOpenStackCharmActions
To resolve a inter-dependency issue between the various package
version helpers and the UCA ``configure_source`` method, co-locate
all of them in ``BaseOpenStackCharmActions``.

Partial-Bug: #1951462
Change-Id: If42ad980ff2b0430eba24531eae9a80204768388
2022-02-25 11:22:53 +01:00
Corey Bryant fd6581ecab Add support for package-upgrade action
The package-upgrade action is similar to the openstack-upgrade
action except that it performs package upgrades within the current
openstack release. If a new openstack release is available, the
package-upgrade action will not perform any upgrades.

Change-Id: Ie783f8da67494f31abe574d99b1f2433dc622be9
2022-01-13 14:21:50 +00:00
Corey Bryant 8a1b220486 Add xena and yoga to testing mocks
Change-Id: Id88eda48764ec244f992d2905a64fc19605e439d
2021-12-16 14:24:03 -05:00
Zuul 7aa1c0e4d0 Merge "Use unittest.mock instead of mock" 2021-12-14 18:53:42 +00:00
Hervé Beraud 2812f9f664 Use unittest.mock instead of mock
The mock third party library was needed for mock support in py2
runtimes. Since we now only support py36 and later, we can use the
standard lib unittest.mock module instead.

Change-Id: I491ca9f482a00b7ca3fa44aa8c26ef73559c178f
2021-12-14 13:06:13 +00:00
Felipe Reyes 58fc4dadac Register previously vip set for deletion.
When the vip is changed the ones that are no longer present need to be
registered for deletion from pacemaker's configuration. This change
relies on hookenv.config.changed() to determine what vip(s) are no
longer present in the configuration and ask hacluster to remove them.

Closes-Bug: #1952363
Change-Id: I1afe987ff26af0e10604dd507daef4ac282d9aab
2021-11-30 15:49:40 -03:00
Olivier Dufour-Cuvillier 6b0c1c7cad Replace deprecated call from charmhelpers policyd
The use of function maybe_do_policyd_overrides_on_config_changed
is deprecated in favor of maybe_do_policyd_overrides.
This would trigger deprecation warning messages not only in logs
but also in actions such as seen in Octavia Charm

The unittest covering the call has also been updated accordingly

Closes-Bug: #1939840
Change-Id: Iec91d60727533e6291c3ec20442197ac44f4607c
2021-11-23 11:59:36 +01:00
Liam Young 6c8eb01162 Config adapters for trilio s3 cert
Change-Id: I2351baa89b3f9d33eb2f9ad6bf4f82d044b2d330
2021-06-14 11:31:27 +00:00
Zuul 7b28c45320 Merge "Teach test_mocks.py about wallaby" 2021-05-20 11:49:59 +00:00
Corey Bryant 8960e070f2 Use openstack-release package to determine codename
The use of package versions to look up OpenStack codenames is
deprecated for in favor of using the openstack-release package.
The openstack-release package is available for Wallaby onward.

Change-Id: I9038c9785a4f36b854a1fb7e8d5baaf91a99c70e
2021-04-23 08:07:20 -04:00
Zuul bcd0c9b4b4 Merge "core: Add all supported releases - packages map" 2021-03-23 22:28:38 +00:00
Frode Nordahl ccb778f111
core: Add all supported releases - packages map
For principal - subordinate plugin type relations where the
principal Python payload imports code from packages managed by a
subordinate, upgrades can be problematic.

This helper will allow a subordinate charm to inform its principal
about all implemented release - packages combinations ahead of time.
With this information in place the principal can do the upgrade in
one operation without risk of charm relation RPC type processing at
a critical moment.

Related-Bug: #1806111
Change-Id: I455501c1c2cdb53e62b533be95d2493bf1a5027a
2021-03-19 03:44:53 +01:00
Liam Young 6719913853 Use restart_on_change from charmhelpers
Switch to using restart_on_change from charmhelpers rather than
duplicating the code in charms.openstack.

I have run designate smoke with this change: https://paste.ubuntu.com/p/ZyQmyK92Yr/

Change-Id: I4925243747dd00471bc828c65278dd16ed951b0c
2021-03-18 12:42:59 +00:00
Billy Olsen df9a2eddec Use application_name by default for creating pools
Charms consuming Ceph storage typically follow the convention that
pools are named for the application rather than the service name. Most
charms also allow for the pool name to be defined via a config option.
Charms which inherit from the BaseOpenStackCephCharm class will not
follow this typical behavior as the pool created is based on the charm
name.

This change updates the create_pool function to allow for a concrete
charm to optionally provide the name of the pool to be created,
defaulting to the application_name if one is not provided. This is a
change in behavior as the previous behavior was to use the charm
class's name property. Reviewing all known charms which inherit
from/mixin the BaseOpenStackCephCharm reveals that Gnocchi is the only
user of the create_pool method.

As such, it stands to reason that a change in behavior is safe in this
context since the charm class's name for gnocchi was set to the
'gnocchi' which is also the typical application name.

Change-Id: I1756ff4e1362fbc7584551249c583f8d3cb0c8dc
Closes-Bug: #1918821
2021-03-17 09:21:54 -07:00
Alex Kavanagh 2d58a628cf Teach test_mocks.py about wallaby
Change-Id: Ife2ff46f1442f396b52354218e6cbcdb9f3ed972
2021-03-03 17:39:56 +00:00
Edward Hope-Morley 6a050f5b3c Skip bindings that don't exist
When fetching CNs from bindings, skip those that are not
available since not all charms have all bindings.

Closes-Bug: 1913313
Change-Id: Iad9616d3f8668782cd9c7dc498120536fb756da7
2021-01-26 16:37:03 +00:00
Alex Kavanagh 946ee47cf0 Ensure PeerHARelationAdapter has correct backend IP addresses
In the linked bug, the designate charm ended up with the wrong IP
addresses in the haproxy.cfg due to the method add_default_addresses()
overwriting the correctly determined addresses obtained by the method
add_network_split_addresses().

It's not clear whether this has always been broken, and recent tests
have exposed it, or whether changes in charms.reactive have resulted in
add_default_addresses() adding more addresses than it used to.

However, it seems correct that the default addresses are added first and
then the ones from the relations/spaces add/overwrite the default ones
to provide the correct set.

Change-Id: Id7f1d457911374620e9a7ee3069376a1752160f5
Closes-Bug: #1912505
2021-01-24 16:12:42 +00:00
Liam Young 3436b75913 Add charmhelpers.contrib.openstack.ip to mocks
Reactive charms use charms_openstack.test_mocks to setup their
mocks. A recent change imports 'charmhelpers.contrib.openstack.ip'
so add that to the mock list

Change-Id: I3bd2517959b1cd43e057f420c8c4f2f28598d70a
2021-01-15 10:31:13 +00:00
Liam Young bf521e6d5b Stop getting {public,private}-address from unit-get
In Juju 2.8rc3 unit-get public-address became unreliable
(Bug #1910973). Since getting an address this was is deprecated
switch the OpenStack functions to prefer network-get. However,
fallback to the old method to support old versions of Juju for
the time being.

Change-Id: I33020deefa1f814b77767653dad34c228def91fa
2021-01-15 08:32:56 +00:00
Zuul d37b622a7b Merge "Send bindings for get_certificate_requests" 2021-01-07 20:57:35 +00:00
David Ames 21cd9a561f Send bindings for get_certificate_requests
Charm-helpers PR must land first:
https://github.com/juju/charm-helpers/pull/556

Closes-Bug: #1908306
Change-Id: I7b3c4e11ab04cc133ffe6a718d5b505f27edad68
2021-01-07 18:37:43 +00:00
Liam Young 2520764264 Support upgrades to Trilio 4.1
Adding support for Trilio 4.1 includes the following changes:

* Add Trilio_properties config property to enables templates to
  distinguish between 4.0 and 4.1 release.
* Add get_trilio_codename_install_source to attempt to derive the
  Trilio version supported by an apt repo.
* Add get_trilio_charm_instance which overrides the default
  get_charm_instance.  This will pick the correct charm class based
  on both the Trilio release and the OpenStack release.
* Add select_trilio_release which overrides the default
  select_release and calculates the target OpenStack and Trilio
  release.
* Add a specialist Trilio metaclass BaseTrilioCharmMeta. This
  registers charm classes using their OpenStack release, Trilio
  release and package type.
* Move code shared between TrilioVaultCharm &
  TrilioVaultSubordinateCharm to TrilioVaultCharmMixin. Add support
  for Trilio upgrades to TrilioVaultCharmMixina.

NOTE: An earlier version of this change
      (I5a5e5721d9a713b66f8c796896c400481e9733a2) was landed and
      reverted. It was reverted because get_trilio_charm_instance
      and select_trilio_release were both registered as handlers
      irrespective of whether a charm explicitly imported
      charms_openstack.plugins.trilio This caused reactive charms
      which used the default handlers to fail as they imported the
      Trilio functions and the default ones and only one can ever
      registered. This patch fixes this by wrapping the trilio
      function definitions inside make_* methods, so the decorator
      only registers the methods when the make_* methods are
      explicitly called.

Change-Id: Id3bb13aff6d0e6df2d5ec144689c992cf09c1b4c
2021-01-07 09:48:13 +00:00
gnuoy 390a426d31 Revert "Support upgrades to Trilio 4.1"
This reverts commit 3b72a8ba2f.

Reason for revert: Registering a second release_selector_function is breaking non-trilio charms

Change-Id: I5a4b8f8602c2a46b340765a8a22fdc218560dfc6
2021-01-06 13:43:58 +00:00
Liam Young 3b72a8ba2f Support upgrades to Trilio 4.1
Adding support for Trilio 4.1 includes the following changes:

* Add Trilio_properties config property to enables templates to distinguish
  between 4.0 and 4.1 release.
* Add get_trilio_codename_install_source to attempt to derive the Trilio
  version supported by an apt repo.
* Add get_trilio_charm_instance which overrides the default get_charm_instance.
  This will pick the correct charm class based on both the Trilio release and
  the OpenStack release.
* Add select_trilio_release which overrides the default select_release and
  calculates the target OpenStack and Trilio release.
* Add a specialist Trilio metaclass BaseTrilioCharmMeta. This registers
  charm classes using their OpenStack release, Trilio release and package
  type.
* Move code shared between TrilioVaultCharm & TrilioVaultSubordinateCharm
  to TrilioVaultCharmMixin. Add support for Trilio upgrades to
  TrilioVaultCharmMixina.

Change-Id: I5a5e5721d9a713b66f8c796896c400481e9733a2
2020-12-17 11:57:38 +00:00
Liam Young 38de241ce6 Allow bespoke get_charm_instance method to be used
Allow a charm to use the new register_get_charm_instance decorator
to register the method to be used when getting a charm instance.
Currently get_charm_instance expects standard OpenStack
versioning, this change allows are a charm to register an
alternative get_charm_instance method that can handle an
alternative versioning system.

Perhaps controversially the default method is not defined in
charms_openstack.charm.defaults. I have kept it in core
because it felt a more natural fit there given it relies on
core._releases but I am open to moving it if that is
preferable.

Change-Id: I42574654bc1f314b49049e80861d4039f8484dff
2020-12-03 13:46:07 +00:00
Liam Young 4907569ebc Separate pkg version collection from release calc
Break out the collection of a packages version information from
deriving the corresponding OpenStack release. This allows the package
version code to be used with charms which have their own
idiosyncratic versioning system.

Change-Id: I9a7dcc6ad3da8860dc650f956e5c6eec8ff51660
2020-12-03 09:36:10 +00:00
Linda Guo 8c2283a508 Checked if release_pkg is set. If not, ensure a RuntimeError raised.
Added test case to verify RuntimeError is raised when release_pkg is not set.

Closes-Bug: #1904494
Change-Id: I421b52d502644b52f4e31162e74dea8a1befdfa0
2020-11-30 10:00:05 +11:00
Zuul 8b2eed06c4 Merge "plugins/ceph: Add common pool creation method" 2020-10-02 14:18:29 +00:00
Frode Nordahl af1dd4cdee
plugins/ceph: Add common pool creation method
The new helper supports to optionally retrieve common
configuration options for BlueStore Compression.

Fix ordering of Ceph class composition. Both the CephCharm and the
fake charm class used in the unit test had the wrong order for the
composition making it impossible to override already existing
methods inherited from OpenStackCharm.

Change-Id: I9fb543f297522c7217acdcfa950bb2810b26c4a0
2020-10-02 14:57:36 +02:00
Liam Young c1db249cfb Optionally change service port for ssl
If a charm class sets ssl_port_bump to True then when configuring
the service for TLS also change the port it is listening on.

The need for this comes from the nova-scheduler and nova-compute
services which cache the url for the placement service, when the
placement service switches protocol the nova services fail which
does not trigger them to reexamine the catalogue.

Closes-Bug: #1862974

Change-Id: I790c55e78439b9a5ea2c3f12edbe5928a4f08e05
2020-09-28 13:03:34 +00:00
Dmitrii Shcherbakov 69eb753b02 Configure TLS on config-changed events
Ensure that TLS is potentially reconfigured in the event of a
config-changed hook execution - ssl_* configuration options may
have been changed so certs, keys and CA files on disk will need
to be updated.

Change-Id: I00d2eb16714785b15e13b196ea12716dc8a5b527
Related-Bug: 1865842
Co-Authored-By: James Page <james.page@ubuntu.com>
2020-09-21 09:39:08 +03:00
Zuul d0d3e2b1ea Merge "Allow service actions to be overridden" 2020-09-10 10:05:04 +00:00