diff --git a/awx/main/analytics/collectors.py b/awx/main/analytics/collectors.py index 1bc4c9044f..15577c9696 100644 --- a/awx/main/analytics/collectors.py +++ b/awx/main/analytics/collectors.py @@ -131,7 +131,7 @@ def _identify_lower(key, since, until, last_gather): return lower, last_entries -@register('config', '1.5', description=_('General platform configuration.')) +@register('config', '1.6', description=_('General platform configuration.')) def config(since, **kwargs): license_info = get_license() install_type = 'traditional' @@ -155,10 +155,13 @@ def config(since, **kwargs): 'subscription_name': license_info.get('subscription_name'), 'sku': license_info.get('sku'), 'support_level': license_info.get('support_level'), + 'usage': license_info.get('usage'), 'product_name': license_info.get('product_name'), 'valid_key': license_info.get('valid_key'), 'satellite': license_info.get('satellite'), 'pool_id': license_info.get('pool_id'), + 'subscription_id': license_info.get('subscription_id'), + 'account_number': license_info.get('account_number'), 'current_instances': license_info.get('current_instances'), 'automated_instances': license_info.get('automated_instances'), 'automated_since': license_info.get('automated_since'), diff --git a/awx/main/utils/licensing.py b/awx/main/utils/licensing.py index c692e3131a..b5e8957e32 100644 --- a/awx/main/utils/licensing.py +++ b/awx/main/utils/licensing.py @@ -170,6 +170,8 @@ class Licenser(object): license.setdefault('sku', sub['pool']['productId']) license.setdefault('subscription_name', sub['pool']['productName']) + license.setdefault('subscription_id', sub['pool']['subscriptionId']) + license.setdefault('account_number', sub['pool']['accountNumber']) license.setdefault('pool_id', sub['pool']['id']) license.setdefault('product_name', sub['pool']['productName']) license.setdefault('valid_key', True) @@ -185,6 +187,14 @@ class Licenser(object): license['instance_count'] = license.get('instance_count', 0) + instances license['subscription_name'] = re.sub(r'[\d]* Managed Nodes', '%d Managed Nodes' % license['instance_count'], license['subscription_name']) + license['support_level'] = '' + license['usage'] = '' + for attr in sub['pool'].get('productAttributes', []): + if attr.get('name') == 'support_level': + license['support_level'] = attr.get('value') + elif attr.get('name') == 'usage': + license['usage'] = attr.get('value') + if not license: logger.error("No valid subscriptions found in manifest") self._attrs.update(license) @@ -277,7 +287,10 @@ class Licenser(object): license['productId'] = sub['product_id'] license['quantity'] = int(sub['quantity']) license['support_level'] = sub['support_level'] + license['usage'] = sub['usage'] license['subscription_name'] = sub['name'] + license['subscriptionId'] = sub['subscription_id'] + license['accountNumber'] = sub['account_number'] license['id'] = sub['upstream_pool_id'] license['endDate'] = sub['end_date'] license['productName'] = "Red Hat Ansible Automation" @@ -304,7 +317,7 @@ class Licenser(object): def generate_license_options_from_entitlements(self, json): from dateutil.parser import parse - ValidSub = collections.namedtuple('ValidSub', 'sku name support_level end_date trial quantity pool_id satellite') + ValidSub = collections.namedtuple('ValidSub', 'sku name support_level end_date trial quantity pool_id satellite subscription_id account_number usage') valid_subs = [] for sub in json: satellite = sub.get('satellite') @@ -333,15 +346,23 @@ class Licenser(object): sku = sub['productId'] trial = sku.startswith('S') # i.e.,, SER/SVC support_level = '' + usage = '' pool_id = sub['id'] + subscription_id = sub['subscriptionId'] + account_number = sub['accountNumber'] if satellite: support_level = sub['support_level'] + usage = sub['usage'] else: for attr in sub.get('productAttributes', []): if attr.get('name') == 'support_level': support_level = attr.get('value') + elif attr.get('name') == 'usage': + usage = attr.get('value') - valid_subs.append(ValidSub(sku, sub['productName'], support_level, end_date, trial, quantity, pool_id, satellite)) + valid_subs.append( + ValidSub(sku, sub['productName'], support_level, end_date, trial, quantity, pool_id, satellite, subscription_id, account_number, usage) + ) if valid_subs: licenses = [] @@ -350,6 +371,7 @@ class Licenser(object): license._attrs['instance_count'] = int(sub.quantity) license._attrs['sku'] = sub.sku license._attrs['support_level'] = sub.support_level + license._attrs['usage'] = sub.usage license._attrs['license_type'] = 'enterprise' if sub.trial: license._attrs['trial'] = True @@ -364,6 +386,8 @@ class Licenser(object): license._attrs['valid_key'] = True license.update(license_date=int(sub.end_date.strftime('%s'))) license.update(pool_id=sub.pool_id) + license.update(subscription_id=sub.subscription_id) + license.update(account_number=sub.account_number) licenses.append(license._attrs.copy()) return licenses