Bug 885785

Summary: [RFE] Subscription Manager should alert a user if subscription vcpu limits are lower than system vcpu allocation
Product: Red Hat Enterprise Linux 7 Reporter: Amanda Carter <acarter>
Component: subscription-managerAssignee: Carter Kozak <ckozak>
Status: CLOSED CURRENTRELEASE QA Contact: IDM QE LIST <seceng-idm-qe-list>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 7.0CC: alikins, bkearney, ckozak, dlah, jgalipea, jsefler
Target Milestone: rcKeywords: FutureFeature
Target Release: 7.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Enhancement
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2014-06-13 10:08:25 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 863175    

Description Amanda Carter 2012-12-10 15:59:22 UTC
The vcpu attribute on a subscription should be used to calculate / message valid subscription usage to a user.

This should function like sockets does today:
1. detect vcpu value on a system and on subscriptions
2. use this value to choose 'matching' subscriptions, alert when subscriptions don't match, etc
3. per dgoodwin, stacking logic for vcpu is already in place

The vcpu attribute is only used on 'virt_only' subscriptions today.


Testing info:

SKU: RH0127380
Stage test acct: stage_test_57

Comment 6 Carter Kozak 2013-12-18 21:58:20 UTC
commit 99d4463457b79f0387ed7ee98db1038a97fc4b2f
Author: ckozak <ckozak>
Date:   Fri Dec 13 16:56:09 2013 -0500

    Implement vcpu product attribute.
    
    Cores and Sockets are no longer used on virtual guests.
    the vcpu attribute is tested against cores

Comment 7 John Sefler 2014-01-24 20:58:04 UTC
As indicated in comment 6, the compliance of a virtual/guest system now ignores subscriptions with a "sockets" and "cores" attribute.  Instead, when a subscription supporting a "vcpu" attribute is attached, the system's compliance will be compared to the system's "cpu.cpu_socket(s)"*"cpu.core(s)_per_socket" value as a measure of vCPUs.

Following is a demonstration for compliance on a virtual/guest system with a Stackable subscription that supports VCPUs.

[root@jsefler-7 ~]# subscription-manager facts --list | grep is_guest
virt.is_guest: True
[root@jsefler-7 ~]# subscription-manager facts --list | egrep "^cpu\."
cpu.core(s)_per_socket: 2
cpu.cpu(s): 2
cpu.cpu_socket(s): 4
cpu.thread(s)_per_core: 1
cpu.topology_source: kernel /sys cpu sibling lists

NOTICE: This virtual system has 4*2=8 cores which is interpreted as 8 vcpus

[root@jsefler-7 ~]# subscription-manager attach --pool 8a908740439d1e6f01439d1f4a5a0dac --quantity=1
Successfully attached a subscription for: Awesome OS for x86_64
[root@jsefler-7 ~]# subscription-manager list --consumed
+-------------------------------------------+
   Consumed Subscriptions
+-------------------------------------------+
Subscription Name: Awesome OS for x86_64
Provides:          Awesome OS for x86_64 Bits
SKU:               awesomeos-x86_64
Contract:          1
Account:           12331131231
Serial:            738514747125168152
Pool ID:           8a908740439d1e6f01439d1f4a5a0dac
Active:            True
Quantity Used:     1
Service Level:     
Service Type:      
Status Details:    Only supports 2 of 8 vCPUs.
Subscription Type: Stackable
Starts:            01/15/2014
Ends:              01/15/2015
System Type:       Physical

VERIFIED: Notice that after attaching a quantity of one subscription, the Status Details of the entitlement indicates that we are not yet compliant and that only 2 of the 8 vCPUs of the system are covered.  Attaching two more entitlements from the same pool, we should see some more coverage...

[root@jsefler-7 ~]# subscription-manager list --consumed
+-------------------------------------------+
   Consumed Subscriptions
+-------------------------------------------+
Subscription Name: Awesome OS for x86_64
Provides:          Awesome OS for x86_64 Bits
SKU:               awesomeos-x86_64
Contract:          1
Account:           12331131231
Serial:            738514747125168152
Pool ID:           8a908740439d1e6f01439d1f4a5a0dac
Active:            True
Quantity Used:     1
Service Level:     
Service Type:      
Status Details:    Only supports 6 of 8 vCPUs.
Subscription Type: Stackable
Starts:            01/15/2014
Ends:              01/15/2015
System Type:       Physical

Subscription Name: Awesome OS for x86_64
Provides:          Awesome OS for x86_64 Bits
SKU:               awesomeos-x86_64
Contract:          1
Account:           12331131231
Serial:            8297082931045790510
Pool ID:           8a908740439d1e6f01439d1f4a5a0dac
Active:            True
Quantity Used:     2
Service Level:     
Service Type:      
Status Details:    Only supports 6 of 8 vCPUs.
Subscription Type: Stackable
Starts:            01/15/2014
Ends:              01/15/2015
System Type:       Physical

VERIFIED: Indeed we now have a total of two entitlements covering a total of "6 of 8 vCPUs" worth of coverage.  Let's finish this off with one more attachment...

[root@jsefler-7 ~]# subscription-manager attach --pool 8a908740439d1e6f01439d1f4a5a0dac --quantity=1
Successfully attached a subscription for: Awesome OS for x86_64
[root@jsefler-7 ~]# subscription-manager list --consumed
+-------------------------------------------+
   Consumed Subscriptions
+-------------------------------------------+
Subscription Name: Awesome OS for x86_64
Provides:          Awesome OS for x86_64 Bits
SKU:               awesomeos-x86_64
Contract:          1
Account:           12331131231
Serial:            738514747125168152
Pool ID:           8a908740439d1e6f01439d1f4a5a0dac
Active:            True
Quantity Used:     1
Service Level:     
Service Type:      
Status Details:    
Subscription Type: Stackable
Starts:            01/15/2014
Ends:              01/15/2015
System Type:       Physical

Subscription Name: Awesome OS for x86_64
Provides:          Awesome OS for x86_64 Bits
SKU:               awesomeos-x86_64
Contract:          1
Account:           12331131231
Serial:            8297082931045790510
Pool ID:           8a908740439d1e6f01439d1f4a5a0dac
Active:            True
Quantity Used:     2
Service Level:     
Service Type:      
Status Details:    
Subscription Type: Stackable
Starts:            01/15/2014
Ends:              01/15/2015
System Type:       Physical

Subscription Name: Awesome OS for x86_64
Provides:          Awesome OS for x86_64 Bits
SKU:               awesomeos-x86_64
Contract:          1
Account:           12331131231
Serial:            5854208734038738145
Pool ID:           8a908740439d1e6f01439d1f4a5a0dac
Active:            True
Quantity Used:     1
Service Level:     
Service Type:      
Status Details:    
Subscription Type: Stackable
Starts:            01/15/2014
Ends:              01/15/2015
System Type:       Physical

VERIFIED: After attaching a total quantity of 4 entitlements from 3 attachments, we now cover all 8 vCPUs and the "Status Details" for the consumed subscriptions are empty (indicating full compliance).


The actual attributes associated with the attached entitlements can bee see from rhsm-debug as follows (look for the "vcpu" attribute)...

[root@jsefler-7 ~]# rhsm-debug system --no-archive 
Wrote: /tmp/rhsm-debug-system-20140124-692845
[root@jsefler-7 ~]# cat /tmp/rhsm-debug-system-20140124-692845/entitlements.json 
[
    {
        "certificates": [
            {
                "created": "2014-01-24T20:30:48.152+0000",
                "id": "8a908740439d1e6f0143c5f29d586b90",
                "serial": {
                    "collected": false,
                    "created": "2014-01-24T20:30:48.132+0000",
                    "expiration": "2015-01-16T00:00:00.000+0000",
                    "id": 8297082931045790510,
                    "revoked": false,
                    "serial": 8297082931045790510,
                    "updated": "2014-01-24T20:30:48.132+0000"
                },
                "updated": "2014-01-24T20:30:48.152+0000"
            }
        ],
        "consumer": {
            "href": "/consumers/75f02c69-eabe-4157-af53-40fcf22c19ea",
            "id": "8a908740439d1e6f0143c5deec4b6b62",
            "name": "jsefler-7.usersys.redhat.com",
            "uuid": "75f02c69-eabe-4157-af53-40fcf22c19ea"
        },
        "created": "2014-01-24T20:30:48.078+0000",
        "endDate": "2015-01-16T00:00:00.000+0000",
        "href": "/entitlements/8a908740439d1e6f0143c5f29d0e6b8f",
        "id": "8a908740439d1e6f0143c5f29d0e6b8f",
        "pool": {
            "accountNumber": "12331131231",
            "activeSubscription": true,
            "attributes": [],
            "calculatedAttributes": {
                "compliance_type": "Stackable"
            },
            "consumed": 4,
            "contractNumber": "1",
            "created": "2014-01-16T22:15:10.170+0000",
            "derivedProductAttributes": [],
            "derivedProductId": null,
            "derivedProductName": null,
            "derivedProvidedProducts": [],
            "endDate": "2015-01-16T00:00:00.000+0000",
            "exported": 0,
            "href": "/pools/8a908740439d1e6f01439d1f4a5a0dac",
            "id": "8a908740439d1e6f01439d1f4a5a0dac",
            "orderNumber": "order-8675309",
            "owner": {
                "displayName": "Admin Owner",
                "href": "/owners/admin",
                "id": "8a908740439d1e6f01439d1e91c60001",
                "key": "admin"
            },
            "productAttributes": [
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0dad",
LOOK HERE====>      "name": "vcpu",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
LOOK HERE====>      "value": "2"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0dae",
                    "name": "arch",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "x86_64"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0daf",
                    "name": "variant",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "ALL"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db0",
                    "name": "sockets",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "1"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db1",
                    "name": "warning_period",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "30"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db2",
                    "name": "type",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "MKT"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db3",
                    "name": "multi-entitlement",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "yes"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db4",
                    "name": "version",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "3.11"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db5",
                    "name": "stacking_id",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "1"
                }
            ],
            "productId": "awesomeos-x86_64",
            "productName": "Awesome OS for x86_64",
            "providedProducts": [
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db6",
                    "productId": "100000000000002",
                    "productName": "Awesome OS for x86_64 Bits",
                    "updated": "2014-01-16T22:15:10.170+0000"
                }
            ],
            "quantity": 10,
            "restrictedToUsername": null,
            "sourceConsumer": null,
            "sourceEntitlement": null,
            "sourceStackId": null,
            "stackId": "1",
            "stacked": true,
            "startDate": "2014-01-16T00:00:00.000+0000",
            "subscriptionId": "8a908740439d1e6f01439d1f02af0255",
            "subscriptionSubKey": "master",
            "type": "NORMAL",
            "updated": "2014-01-16T22:15:10.170+0000"
        },
        "quantity": 2,
        "startDate": "2014-01-16T00:00:00.000+0000",
        "updated": "2014-01-24T20:30:48.078+0000"
    },
    {
        "certificates": [
            {
                "created": "2014-01-24T20:32:55.511+0000",
                "id": "8a908740439d1e6f0143c5f48ed76b93",
                "serial": {
                    "collected": false,
                    "created": "2014-01-24T20:32:55.492+0000",
                    "expiration": "2015-01-16T00:00:00.000+0000",
                    "id": 5854208734038738145,
                    "revoked": false,
                    "serial": 5854208734038738145,
                    "updated": "2014-01-24T20:32:55.492+0000"
                },
                "updated": "2014-01-24T20:32:55.511+0000"
            }
        ],
        "consumer": {
            "href": "/consumers/75f02c69-eabe-4157-af53-40fcf22c19ea",
            "id": "8a908740439d1e6f0143c5deec4b6b62",
            "name": "jsefler-7.usersys.redhat.com",
            "uuid": "75f02c69-eabe-4157-af53-40fcf22c19ea"
        },
        "created": "2014-01-24T20:32:55.439+0000",
        "endDate": "2015-01-16T00:00:00.000+0000",
        "href": "/entitlements/8a908740439d1e6f0143c5f48e8f6b92",
        "id": "8a908740439d1e6f0143c5f48e8f6b92",
        "pool": {
            "accountNumber": "12331131231",
            "activeSubscription": true,
            "attributes": [],
            "calculatedAttributes": {
                "compliance_type": "Stackable"
            },
            "consumed": 4,
            "contractNumber": "1",
            "created": "2014-01-16T22:15:10.170+0000",
            "derivedProductAttributes": [],
            "derivedProductId": null,
            "derivedProductName": null,
            "derivedProvidedProducts": [],
            "endDate": "2015-01-16T00:00:00.000+0000",
            "exported": 0,
            "href": "/pools/8a908740439d1e6f01439d1f4a5a0dac",
            "id": "8a908740439d1e6f01439d1f4a5a0dac",
            "orderNumber": "order-8675309",
            "owner": {
                "displayName": "Admin Owner",
                "href": "/owners/admin",
                "id": "8a908740439d1e6f01439d1e91c60001",
                "key": "admin"
            },
            "productAttributes": [
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0dad",
LOOK HERE====>      "name": "vcpu",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
LOOK HERE====>      "value": "2"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0dae",
                    "name": "arch",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "x86_64"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0daf",
                    "name": "variant",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "ALL"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db0",
                    "name": "sockets",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "1"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db1",
                    "name": "warning_period",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "30"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db2",
                    "name": "type",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "MKT"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db3",
                    "name": "multi-entitlement",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "yes"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db4",
                    "name": "version",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "3.11"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db5",
                    "name": "stacking_id",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "1"
                }
            ],
            "productId": "awesomeos-x86_64",
            "productName": "Awesome OS for x86_64",
            "providedProducts": [
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db6",
                    "productId": "100000000000002",
                    "productName": "Awesome OS for x86_64 Bits",
                    "updated": "2014-01-16T22:15:10.170+0000"
                }
            ],
            "quantity": 10,
            "restrictedToUsername": null,
            "sourceConsumer": null,
            "sourceEntitlement": null,
            "sourceStackId": null,
            "stackId": "1",
            "stacked": true,
            "startDate": "2014-01-16T00:00:00.000+0000",
            "subscriptionId": "8a908740439d1e6f01439d1f02af0255",
            "subscriptionSubKey": "master",
            "type": "NORMAL",
            "updated": "2014-01-16T22:15:10.170+0000"
        },
        "quantity": 1,
        "startDate": "2014-01-16T00:00:00.000+0000",
        "updated": "2014-01-24T20:32:55.439+0000"
    },
    {
        "certificates": [
            {
                "created": "2014-01-24T20:25:58.320+0000",
                "id": "8a908740439d1e6f0143c5ee31306b8d",
                "serial": {
                    "collected": false,
                    "created": "2014-01-24T20:25:58.302+0000",
                    "expiration": "2015-01-16T00:00:00.000+0000",
                    "id": 738514747125168152,
                    "revoked": false,
                    "serial": 738514747125168152,
                    "updated": "2014-01-24T20:25:58.302+0000"
                },
                "updated": "2014-01-24T20:25:58.320+0000"
            }
        ],
        "consumer": {
            "href": "/consumers/75f02c69-eabe-4157-af53-40fcf22c19ea",
            "id": "8a908740439d1e6f0143c5deec4b6b62",
            "name": "jsefler-7.usersys.redhat.com",
            "uuid": "75f02c69-eabe-4157-af53-40fcf22c19ea"
        },
        "created": "2014-01-24T20:25:58.251+0000",
        "endDate": "2015-01-16T00:00:00.000+0000",
        "href": "/entitlements/8a908740439d1e6f0143c5ee30eb6b8c",
        "id": "8a908740439d1e6f0143c5ee30eb6b8c",
        "pool": {
            "accountNumber": "12331131231",
            "activeSubscription": true,
            "attributes": [],
            "calculatedAttributes": {
                "compliance_type": "Stackable"
            },
            "consumed": 4,
            "contractNumber": "1",
            "created": "2014-01-16T22:15:10.170+0000",
            "derivedProductAttributes": [],
            "derivedProductId": null,
            "derivedProductName": null,
            "derivedProvidedProducts": [],
            "endDate": "2015-01-16T00:00:00.000+0000",
            "exported": 0,
            "href": "/pools/8a908740439d1e6f01439d1f4a5a0dac",
            "id": "8a908740439d1e6f01439d1f4a5a0dac",
            "orderNumber": "order-8675309",
            "owner": {
                "displayName": "Admin Owner",
                "href": "/owners/admin",
                "id": "8a908740439d1e6f01439d1e91c60001",
                "key": "admin"
            },
            "productAttributes": [
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0dad",
LOOK HERE====>      "name": "vcpu",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
LOOK HERE====>      "value": "2"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0dae",
                    "name": "arch",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "x86_64"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0daf",
                    "name": "variant",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "ALL"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db0",
                    "name": "sockets",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "1"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db1",
                    "name": "warning_period",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "30"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db2",
                    "name": "type",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "MKT"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db3",
                    "name": "multi-entitlement",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "yes"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db4",
                    "name": "version",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "3.11"
                },
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db5",
                    "name": "stacking_id",
                    "productId": "awesomeos-x86_64",
                    "updated": "2014-01-16T22:15:10.170+0000",
                    "value": "1"
                }
            ],
            "productId": "awesomeos-x86_64",
            "productName": "Awesome OS for x86_64",
            "providedProducts": [
                {
                    "created": "2014-01-16T22:15:10.170+0000",
                    "id": "8a908740439d1e6f01439d1f4a5a0db6",
                    "productId": "100000000000002",
                    "productName": "Awesome OS for x86_64 Bits",
                    "updated": "2014-01-16T22:15:10.170+0000"
                }
            ],
            "quantity": 10,
            "restrictedToUsername": null,
            "sourceConsumer": null,
            "sourceEntitlement": null,
            "sourceStackId": null,
            "stackId": "1",
            "stacked": true,
            "startDate": "2014-01-16T00:00:00.000+0000",
            "subscriptionId": "8a908740439d1e6f01439d1f02af0255",
            "subscriptionSubKey": "master",
            "type": "NORMAL",
            "updated": "2014-01-16T22:15:10.170+0000"
        },
        "quantity": 1,
        "startDate": "2014-01-16T00:00:00.000+0000",
        "updated": "2014-01-24T20:25:58.251+0000"
    }
][root@jsefler-7 ~]# 


VERIFIED: Notice above that the productAttributes for this subscription contained a "vcpu" attribute with a value of "2" which means that each single attachment of this subscription covered two vCPUs.  This is why all eight VCPUs were covered for compliance after attaching a total quantity of four.

NOTICE: Also notice that the productAttributes contained a "sockets" attribute with a value of "1" which was ignored for this virtual system.  Had this system been a physical/is_guest=false system, then the sockets attribute would have contributed to compliance of the system's "cpu.cpu_socket(s)" and the vcpu attribute would have been ignored.


Moving this RFE to VERIFIED.
Further issues will be opened under separate bugzillas.

Comment 8 John Sefler 2014-01-24 21:01:57 UTC
Comment 7 was verified against version...
[root@jsefler-7 ~]# subscription-manager version
server type: Red Hat Subscription Management
subscription management server: 0.9.2-1
subscription-manager: 1.10.11-1.el7
python-rhsm: 1.10.11-1.el7

Comment 9 Ludek Smid 2014-06-13 10:08:25 UTC
This request was resolved in Red Hat Enterprise Linux 7.0.

Contact your manager or support representative in case you have further questions about the request.