in skywalking/plugins/__init__.py [0:0]
def pkg_version_check(plugin):
supported = True
# no version rules was set, no checks
if not hasattr(plugin, 'version_rule'):
return supported
pkg_name = plugin.version_rule.get('name')
rules = plugin.version_rule.get('rules')
try:
current_pkg_version = pkg_resources.get_distribution(pkg_name).version
except pkg_resources.DistributionNotFound:
# when failed to get the version, we consider it as supported.
return supported
current_version = version.parse(current_pkg_version)
# pass one rule in rules (OR)
for rule in rules:
if rule.find(' ') == -1:
if check(rule, current_version):
return supported
else:
# have to pass all rule_uint in this rule (AND)
rule_units = rule.split(' ')
results = [check(unit, current_version) for unit in rule_units]
if False in results:
# check failed, try to check next rule
continue
else:
return supported
supported = False
return supported