Remove Python 3.8 support
Python 3.8 is no longer part of the tested runtimes for 2024.2[1] because its EOL is coming soon. [1] https://governance.openstack.org/tc/reference/runtimes/2024.2.html Change-Id: I3e9ba41b542ea6309a7415337f60fd37bc9adebc
This commit is contained in:
parent
f43e903117
commit
88c2fd905a
@ -21,6 +21,7 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import itertools
|
import itertools
|
||||||
import json
|
import json
|
||||||
|
import zoneinfo
|
||||||
|
|
||||||
import croniter
|
import croniter
|
||||||
from oslo_config import cfg
|
from oslo_config import cfg
|
||||||
@ -36,14 +37,6 @@ import wsme
|
|||||||
from wsme import types as wtypes
|
from wsme import types as wtypes
|
||||||
import wsmeext.pecan as wsme_pecan
|
import wsmeext.pecan as wsme_pecan
|
||||||
|
|
||||||
try:
|
|
||||||
import zoneinfo
|
|
||||||
except ImportError:
|
|
||||||
# zoneinfo is available in Python >= 3.9
|
|
||||||
import pytz
|
|
||||||
import pytz.exceptions
|
|
||||||
zoneinfo = None
|
|
||||||
|
|
||||||
import aodh
|
import aodh
|
||||||
from aodh.api.controllers.v2 import base
|
from aodh.api.controllers.v2 import base
|
||||||
from aodh.api.controllers.v2 import utils as v2_utils
|
from aodh.api.controllers.v2 import utils as v2_utils
|
||||||
@ -182,12 +175,9 @@ class AlarmTimeConstraint(base.Base):
|
|||||||
@staticmethod
|
@staticmethod
|
||||||
def validate(tc):
|
def validate(tc):
|
||||||
if tc.timezone:
|
if tc.timezone:
|
||||||
checker = zoneinfo.ZoneInfo if zoneinfo else pytz.timezone
|
|
||||||
exc = (zoneinfo.ZoneInfoNotFoundError if zoneinfo else
|
|
||||||
pytz.exceptions.UnknownTimeZoneError)
|
|
||||||
try:
|
try:
|
||||||
checker(tc.timezone)
|
zoneinfo.ZoneInfo(tc.timezone)
|
||||||
except exc:
|
except zoneinfo.ZoneInfoNotFoundError:
|
||||||
raise base.ClientSideError(_("Timezone %s is not valid")
|
raise base.ClientSideError(_("Timezone %s is not valid")
|
||||||
% tc.timezone)
|
% tc.timezone)
|
||||||
return tc
|
return tc
|
||||||
|
@ -18,6 +18,7 @@ import abc
|
|||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
import threading
|
import threading
|
||||||
|
import zoneinfo
|
||||||
|
|
||||||
from concurrent import futures
|
from concurrent import futures
|
||||||
import cotyledon
|
import cotyledon
|
||||||
@ -29,13 +30,6 @@ from oslo_utils import timeutils
|
|||||||
from oslo_utils import uuidutils
|
from oslo_utils import uuidutils
|
||||||
from stevedore import extension
|
from stevedore import extension
|
||||||
|
|
||||||
try:
|
|
||||||
import zoneinfo
|
|
||||||
except ImportError:
|
|
||||||
# zoneinfo is available in Python >= 3.9
|
|
||||||
import pytz
|
|
||||||
zoneinfo = None
|
|
||||||
|
|
||||||
import aodh
|
import aodh
|
||||||
from aodh import coordination
|
from aodh import coordination
|
||||||
from aodh import keystone_client
|
from aodh import keystone_client
|
||||||
@ -156,11 +150,7 @@ class Evaluator(object, metaclass=abc.ABCMeta):
|
|||||||
|
|
||||||
now_utc = timeutils.utcnow().replace(tzinfo=datetime.timezone.utc)
|
now_utc = timeutils.utcnow().replace(tzinfo=datetime.timezone.utc)
|
||||||
for tc in alarm.time_constraints:
|
for tc in alarm.time_constraints:
|
||||||
if zoneinfo:
|
tz = zoneinfo.ZoneInfo(tc['timezone']) if tc['timezone'] else None
|
||||||
tz = (zoneinfo.ZoneInfo(tc['timezone'])
|
|
||||||
if tc['timezone'] else None)
|
|
||||||
else:
|
|
||||||
tz = pytz.timezone(tc['timezone']) if tc['timezone'] else None
|
|
||||||
now_tz = now_utc.astimezone(tz) if tz else now_utc
|
now_tz = now_utc.astimezone(tz) if tz else now_utc
|
||||||
start_cron = croniter.croniter(tc['start'], now_tz)
|
start_cron = croniter.croniter(tc['start'], now_tz)
|
||||||
if cls._is_exact_match(start_cron, now_tz):
|
if cls._is_exact_match(start_cron, now_tz):
|
||||||
|
@ -18,18 +18,12 @@ import datetime
|
|||||||
import fixtures
|
import fixtures
|
||||||
import json
|
import json
|
||||||
from unittest import mock
|
from unittest import mock
|
||||||
|
import zoneinfo
|
||||||
|
|
||||||
from gnocchiclient import exceptions
|
from gnocchiclient import exceptions
|
||||||
from oslo_utils import timeutils
|
from oslo_utils import timeutils
|
||||||
from oslo_utils import uuidutils
|
from oslo_utils import uuidutils
|
||||||
|
|
||||||
try:
|
|
||||||
import zoneinfo
|
|
||||||
except ImportError:
|
|
||||||
# zoneinfo is available in Python >= 3.9
|
|
||||||
import pytz
|
|
||||||
zoneinfo = None
|
|
||||||
|
|
||||||
from aodh.evaluator import gnocchi
|
from aodh.evaluator import gnocchi
|
||||||
from aodh import messaging
|
from aodh import messaging
|
||||||
from aodh.storage import models
|
from aodh.storage import models
|
||||||
@ -357,10 +351,7 @@ class TestGnocchiResourceThresholdEvaluate(TestGnocchiEvaluatorBase):
|
|||||||
'duration': 10800, # 3 hours
|
'duration': 10800, # 3 hours
|
||||||
'timezone': 'Europe/Ljubljana'}
|
'timezone': 'Europe/Ljubljana'}
|
||||||
]
|
]
|
||||||
if zoneinfo:
|
tzinfo = zoneinfo.ZoneInfo('Europe/Ljubljana')
|
||||||
tzinfo = zoneinfo.ZoneInfo('Europe/Ljubljana')
|
|
||||||
else:
|
|
||||||
tzinfo = pytz.timezone('Europe/Ljubljana')
|
|
||||||
dt = datetime.datetime(2014, 1, 1, 15, 0, 0, tzinfo=tzinfo)
|
dt = datetime.datetime(2014, 1, 1, 15, 0, 0, tzinfo=tzinfo)
|
||||||
mock_utcnow.return_value = dt.astimezone(datetime.timezone.utc)
|
mock_utcnow.return_value = dt.astimezone(datetime.timezone.utc)
|
||||||
self.client.metric.get_measures.return_value = []
|
self.client.metric.get_measures.return_value = []
|
||||||
@ -382,10 +373,7 @@ class TestGnocchiResourceThresholdEvaluate(TestGnocchiEvaluatorBase):
|
|||||||
'duration': 10800, # 3 hours
|
'duration': 10800, # 3 hours
|
||||||
'timezone': 'Europe/Ljubljana'}
|
'timezone': 'Europe/Ljubljana'}
|
||||||
]
|
]
|
||||||
if zoneinfo:
|
tzinfo = zoneinfo.ZoneInfo('Europe/Ljubljana')
|
||||||
tzinfo = zoneinfo.ZoneInfo('Europe/Ljubljana')
|
|
||||||
else:
|
|
||||||
tzinfo = pytz.timezone('Europe/Ljubljana')
|
|
||||||
dt = datetime.datetime(2014, 1, 1, 12, 0, 0, tzinfo=tzinfo)
|
dt = datetime.datetime(2014, 1, 1, 12, 0, 0, tzinfo=tzinfo)
|
||||||
mock_utcnow.return_value = dt.astimezone(datetime.timezone.utc)
|
mock_utcnow.return_value = dt.astimezone(datetime.timezone.utc)
|
||||||
self.client.metric.get_measures.return_value = []
|
self.client.metric.get_measures.return_value = []
|
||||||
|
5
releasenotes/notes/drop-python-3-8-24f35246e92cf9af.yaml
Normal file
5
releasenotes/notes/drop-python-3-8-24f35246e92cf9af.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
Python 3.8 support was dropped. The minimum version of Python now supported
|
||||||
|
is Python 3.9.
|
@ -19,7 +19,6 @@ oslo.messaging>=5.2.0 # Apache-2.0
|
|||||||
oslo.middleware>=3.22.0 # Apache-2.0
|
oslo.middleware>=3.22.0 # Apache-2.0
|
||||||
oslo.utils>=4.7.0 # Apache-2.0
|
oslo.utils>=4.7.0 # Apache-2.0
|
||||||
python-keystoneclient>=1.6.0
|
python-keystoneclient>=1.6.0
|
||||||
pytz>=2013.6;python_version<"3.9" # MIT
|
|
||||||
requests>=2.5.2
|
requests>=2.5.2
|
||||||
stevedore>=1.5.0 # Apache-2.0
|
stevedore>=1.5.0 # Apache-2.0
|
||||||
SQLAlchemy>=1.4.1
|
SQLAlchemy>=1.4.1
|
||||||
@ -34,4 +33,4 @@ python-observabilityclient>=0.0.4
|
|||||||
python-octaviaclient>=1.8.0
|
python-octaviaclient>=1.8.0
|
||||||
python-dateutil>=2.8.2 # BSD
|
python-dateutil>=2.8.2 # BSD
|
||||||
python-heatclient>=1.17.0
|
python-heatclient>=1.17.0
|
||||||
tzdata>=2022.4;python_version>="3.9" # MIT
|
tzdata>=2022.4
|
||||||
|
@ -7,7 +7,7 @@ description_file =
|
|||||||
author = OpenStack
|
author = OpenStack
|
||||||
author_email = openstack-discuss@lists.openstack.org
|
author_email = openstack-discuss@lists.openstack.org
|
||||||
home_page = https://docs.openstack.org/aodh/latest/
|
home_page = https://docs.openstack.org/aodh/latest/
|
||||||
python_requires = >=3.8
|
python_requires = >=3.9
|
||||||
classifier =
|
classifier =
|
||||||
Environment :: OpenStack
|
Environment :: OpenStack
|
||||||
Intended Audience :: Information Technology
|
Intended Audience :: Information Technology
|
||||||
@ -18,7 +18,6 @@ classifier =
|
|||||||
Programming Language :: Python :: Implementation :: CPython
|
Programming Language :: Python :: Implementation :: CPython
|
||||||
Programming Language :: Python :: 3 :: Only
|
Programming Language :: Python :: 3 :: Only
|
||||||
Programming Language :: Python :: 3
|
Programming Language :: Python :: 3
|
||||||
Programming Language :: Python :: 3.8
|
|
||||||
Programming Language :: Python :: 3.9
|
Programming Language :: Python :: 3.9
|
||||||
Programming Language :: Python :: 3.10
|
Programming Language :: Python :: 3.10
|
||||||
Programming Language :: Python :: 3.11
|
Programming Language :: Python :: 3.11
|
||||||
|
Loading…
Reference in New Issue
Block a user