aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Granberg <zorry@gentoo.org>2020-04-05 00:34:22 +0200
committerMagnus Granberg <zorry@gentoo.org>2020-04-05 00:44:59 +0200
commitbe80f7418991180567f0882902ca4151a635e42d (patch)
treec0ddd3545ed6c9c3c0fb6241ba43ee3a7755f252 /gosbs/version.py
parentuse perform_checksum for checksum on files (diff)
downloadtinderbox-cluster-be80f7418991180567f0882902ca4151a635e42d.tar.gz
tinderbox-cluster-be80f7418991180567f0882902ca4151a635e42d.tar.bz2
tinderbox-cluster-be80f7418991180567f0882902ca4151a635e42d.zip
Redone the code to use OpenStack's libs
We use Openstack's libs and Nova code as a base for the POC Most of the code to populate the db is done. Signed-off-by: Magnus Granberg <zorry@gentoo.org>
Diffstat (limited to 'gosbs/version.py')
-rw-r--r--gosbs/version.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/gosbs/version.py b/gosbs/version.py
new file mode 100644
index 0000000..268086c
--- /dev/null
+++ b/gosbs/version.py
@@ -0,0 +1,90 @@
+# Copyright 2011 OpenStack Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+# License for the specific language governing permissions and limitations
+# under the License.
+
+# Origin https://github.com/openstack/nova/blob/master/nova/version.py
+
+import pbr.version
+
+from gosbs.i18n import _LE
+
+NOVA_VENDOR = "Gentoo Foundation Inc"
+NOVA_PRODUCT = "OpenStack Gosbs"
+NOVA_PACKAGE = None # OS distro package version suffix
+
+loaded = False
+version_info = pbr.version.VersionInfo('gosbs')
+version_string = version_info.version_string
+
+
+def _load_config():
+ # Don't load in global context, since we can't assume
+ # these modules are accessible when distutils uses
+ # this module
+ from six.moves import configparser
+
+ from oslo_config import cfg
+
+ from oslo_log import log as logging
+
+ global loaded, NOVA_VENDOR, NOVA_PRODUCT, NOVA_PACKAGE
+ if loaded:
+ return
+
+ loaded = True
+
+ cfgfile = cfg.CONF.find_file("release")
+ if cfgfile is None:
+ return
+
+ try:
+ cfg = configparser.RawConfigParser()
+ cfg.read(cfgfile)
+
+ if cfg.has_option("Gosbs", "vendor"):
+ NOVA_VENDOR = cfg.get("Gosbs", "vendor")
+
+ if cfg.has_option("Gobs", "product"):
+ NOVA_PRODUCT = cfg.get("Gosbs", "product")
+
+ if cfg.has_option("Gosbs", "package"):
+ NOVA_PACKAGE = cfg.get("Gosbs", "package")
+ except Exception as ex:
+ LOG = logging.getLogger(__name__)
+ LOG.error(_LE("Failed to load %(cfgfile)s: %(ex)s"),
+ {'cfgfile': cfgfile, 'ex': ex})
+
+
+def vendor_string():
+ _load_config()
+
+ return NOVA_VENDOR
+
+
+def product_string():
+ _load_config()
+
+ return NOVA_PRODUCT
+
+
+def package_string():
+ _load_config()
+
+ return NOVA_PACKAGE
+
+
+def version_string_with_package():
+ if package_string() is None:
+ return version_info.version_string()
+ else:
+ return "%s-%s" % (version_info.version_string(), package_string())