Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
# Copyright 2018 TrilioData Inc.
# All Rights Reserved.

import pbr.version
import sys

from dmapi.i18n import _LE
from oslo_log import log as logging

DMAPI_VENDOR = "Trilio Data, Inc"
DMAPI_PRODUCT = "TrilioVault"
DMAPI_PACKAGE = None  # OS distro package version suffix

loaded = False
LOG = logging.getLogger(__name__)

if sys.version_info[0] < 3:
    version_info = pbr.version.VersionInfo('dmapi')
else:
    try:
        version_info = pbr.version.VersionInfo('python3-dmapi')
        version_info.version_string()
    except Exception as ex:
        LOG.debug("{0}\n\npython3-dmapi not installed; fetching version from python3-dmapi-el9 package".format(ex))
        version_info = pbr.version.VersionInfo('python3-dmapi-el9')

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, DMAPI_VENDOR, DMAPI_PRODUCT, DMAPI_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("Dmapi", "vendor"):
            DMAPI_VENDOR = cfg.get("Dmapi", "vendor")

        if cfg.has_option("Dmapi", "product"):
            DMAPI_PRODUCT = cfg.get("Dmapi", "product")

        if cfg.has_option("Dmapi", "package"):
            DMAPI_PACKAGE = cfg.get("Dmapi", "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 DMAPI_VENDOR


def product_string():
    _load_config()

    return DMAPI_PRODUCT


def package_string():
    _load_config()

    return DMAPI_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())