summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Tantsur <dtantsur@protonmail.com>2021-04-26 09:14:08 +0200
committerDmitry Tantsur <dtantsur@protonmail.com>2021-04-26 09:16:34 +0200
commit3251d7b6417ff67c7f0d1e51bb9b3bea078de967 (patch)
treec32978d400d6e289f63b56b988f5b9b6209a139a
parent9edb13d891de658124d11099e2287163a76f1050 (diff)
downloadironic-python-agent-3251d7b6417ff67c7f0d1e51bb9b3bea078de967.tar.gz
Remove runtime dependency on pbr
Pbr is a very heavy package to depend on. It requires git-core, which is 16 MiB on my Fedora. We only use it to detect the version, which can be done without pbr using a much lighter importlib_metadata. Copied from https://review.opendev.org/c/openstack/osprofiler/+/739379 Change-Id: I5f434e6bfde6f645804941f3a36d5458a28270e7
-rw-r--r--ironic_python_agent/ironic_api_client.py2
-rw-r--r--ironic_python_agent/tests/unit/test_ironic_api_client.py8
-rw-r--r--ironic_python_agent/version.py9
-rw-r--r--requirements.txt1
4 files changed, 13 insertions, 7 deletions
diff --git a/ironic_python_agent/ironic_api_client.py b/ironic_python_agent/ironic_api_client.py
index 81573324..dc6f0cf7 100644
--- a/ironic_python_agent/ironic_api_client.py
+++ b/ironic_python_agent/ironic_api_client.py
@@ -150,7 +150,7 @@ class APIClient(object):
data['agent_token'] = self.agent_token
if api_ver >= AGENT_VERSION_IRONIC_VERSION:
- data['agent_version'] = version.version_info.release_string()
+ data['agent_version'] = version.__version__
if api_ver >= AGENT_VERIFY_CA_IRONIC_VERSION and generated_cert:
data['agent_verify_ca'] = generated_cert
diff --git a/ironic_python_agent/tests/unit/test_ironic_api_client.py b/ironic_python_agent/tests/unit/test_ironic_api_client.py
index 5de49f4e..ba603651 100644
--- a/ironic_python_agent/tests/unit/test_ironic_api_client.py
+++ b/ironic_python_agent/tests/unit/test_ironic_api_client.py
@@ -148,7 +148,7 @@ class TestBaseIronicPythonAgent(base.IronicAgentTest):
self.assertEqual(API_URL + heartbeat_path, request_args[1])
expected_data = {
'callback_url': 'http://192.0.2.1:9999',
- 'agent_version': version.version_info.release_string()}
+ 'agent_version': version.__version__}
self.assertEqual(jsonutils.dumps(expected_data), data)
def test_successful_heartbeat_ip6(self):
@@ -171,7 +171,7 @@ class TestBaseIronicPythonAgent(base.IronicAgentTest):
self.assertEqual(API_URL + heartbeat_path, request_args[1])
expected_data = {
'callback_url': 'http://[fc00:1111::4]:9999',
- 'agent_version': version.version_info.release_string()}
+ 'agent_version': version.__version__}
self.assertEqual(jsonutils.dumps(expected_data), data)
def test_successful_heartbeat_with_token(self):
@@ -196,7 +196,7 @@ class TestBaseIronicPythonAgent(base.IronicAgentTest):
expected_data = {
'callback_url': 'http://192.0.2.1:9999',
'agent_token': 'magical',
- 'agent_version': version.version_info.release_string()}
+ 'agent_version': version.__version__}
self.assertEqual(jsonutils.dumps(expected_data), data)
def test_heartbeat_agent_version_unsupported(self):
@@ -244,7 +244,7 @@ class TestBaseIronicPythonAgent(base.IronicAgentTest):
expected_data = {
'callback_url': 'https://192.0.2.1:9999',
'agent_token': 'magical',
- 'agent_version': version.version_info.release_string(),
+ 'agent_version': version.__version__,
'agent_verify_ca': 'I am a cert'}
self.assertEqual(jsonutils.dumps(expected_data), data)
headers = self.api_client.session.request.call_args[1]['headers']
diff --git a/ironic_python_agent/version.py b/ironic_python_agent/version.py
index 9082d81e..3c0bdb35 100644
--- a/ironic_python_agent/version.py
+++ b/ironic_python_agent/version.py
@@ -13,6 +13,11 @@
# License for the specific language governing permissions and limitations
# under the License.
-import pbr.version
+try:
+ # For Python 3.8 and later
+ import importlib.metadata as importlib_metadata
+except ImportError:
+ # For everyone else
+ import importlib_metadata
-version_info = pbr.version.VersionInfo('ironic_python_agent')
+__version__ = importlib_metadata.version("ironic_python_agent")
diff --git a/requirements.txt b/requirements.txt
index 9fefc997..eacef315 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,6 +2,7 @@
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
pbr!=2.1.0,>=2.0.0 # Apache-2.0
+importlib_metadata>=1.7.0;python_version<'3.8' # Apache-2.0
eventlet!=0.18.3,!=0.20.1,>=0.18.2 # MIT
netifaces>=0.10.4 # MIT
oslo.config>=5.2.0 # Apache-2.0