Commit Graph

342 Commits

Author SHA1 Message Date
Zuul 018b72d734 Merge "Replace deprecated _ows_check_services_running" 2024-03-22 17:23:30 +00:00
Brian Haley db94234398 tox: Add py39 and py312 targets
Master branches need to support py39 and py312 (non-voting)
based on governance for 2024.2 [0].

Removed old targets that are no longer needed in master.

[0] https://review.opendev.org/c/openstack/governance/+/908862

Change-Id: I46feebfe449d956c0b9e35e42209162fcec52c44
2024-03-22 10:57:21 -04:00
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
Trent Lloyd ec900beaca tox: Add py311 target
Update tox.ini to include the py311 target as required by the current
openstack-python3-charm-jobs zuul template.

Change-Id: Iec0cad398f25e32fafdc064652f3d576b45e4550
2024-01-09 14:58:25 +08:00
Felipe Reyes 0664de1344 Update .zuul.yaml project-template
Change-Id: I98deaf937c374fdd2dc02f5bdcc56f8c75ee91d7
2023-10-11 17:20:48 -03: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
yazansalti 856a94cba0 Fixing typos in the README file
Found some typos in the README file and this commit is to fix them.

Change-Id: Iba31cab4dbf8a8ff348dafcefdffca1ba244d7fe
2022-04-22 08:41:41 +02: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
Zuul aca9e41ed6 Merge "[ussuri][goal] Updates for python 2.7 drop" 2021-12-17 09:25:22 +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
Ghanshyam Mann d99799bb85 [ussuri][goal] Updates for python 2.7 drop
OpenStack is dropping the py2.7 support in ussuri cycle.

charm repos need few updates on either py2 drop or updating
ussuri python template, tox.ini etc.

Complete discussion & schedule can be found in
- http://lists.openstack.org/pipermail/openstack-discuss/2019-October/010142.html
- https://etherpad.openstack.org/p/drop-python2-support

Ussuri Communtiy-wide goal:
https://governance.openstack.org/tc/goals/selected/ussuri/drop-py27.html

Needed-By: https://review.opendev.org/#/c/714728/

Change-Id: I6cb655295287c367e128194f1264910a2d761e79
2021-12-14 13:01:26 +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
James Troup 10627ee5f9 Update chat system.
Change-Id: I77320000915bfdd65c5f6b306a8df99d3624fbc4
2021-09-25 01:17:16 +01:00
Ghanshyam Mann 1cea4c56fb [community goal] Update contributor documentation
This patch updates/adds the contributor documentation to follow
the guidelines of the Ussuri cycle community goal[1].

[1] https://governance.openstack.org/tc/goals/selected/ussuri/project-ptl-and-contrib-docs.html

Story: #2007236
Task: #38543
Change-Id: If8c73e980db1a8a2475c21684bf630156d6fb8dd
2021-08-30 12:13:04 -05: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
Alex Kavanagh 976dd86b83 Change ostestr to stestr in comment in setup.py
charms.openstack now uses stestr rather that os-testr.

Change-Id: I436c75d8cb17abdcfbdc97cd31ced7a7165a48b5
2021-02-10 11:39:53 +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