[Bug 1857320] [NEW] openstack limits show --absolute --project <project id> does not work correctly for volumes and security groups

Shatadru Bandyopadhyay 1857320 at bugs.launchpad.net
Mon Dec 23 07:55:15 UTC 2019


Public bug reported:

openstack limits show --absolute --project <project id>  does not work correctly for volumes and security groups
--------------------

if I source admin credential even if I use `openstack limits show
--absolute --project <project id>  ` it shows details for admin project
for volumes and security groups.


OS_REGION_NAME=regionOne
OS_USER_DOMAIN_NAME=Default
OS_IMAGE_API_VERSION=2
OS_PROJECT_NAME=admin
OS_IDENTITY_API_VERSION=3
OS_PASSWORD=xxxx
OS_AUTH_TYPE=password
PS1=${OS_CLOUDNAME:+($OS_CLOUDNAME)} [\u@\h \W]\$ 
OS_AUTH_URL=http://192.168.100.7:5000//v3
OS_USERNAME=admin
OS_VOLUME_API_VERSION=3
OS_NO_CACHE=True
OS_CLOUDNAME=overcloud
OS_PROJECT_DOMAIN_NAME=Default

admin limits :
openstack limits show  --absolute
None
+--------------------------+-------+
| Name                     | Value |
+--------------------------+-------+
| maxServerMeta            |   128 |
| maxTotalInstances        |    10 |
| maxPersonality           |     5 |
| totalServerGroupsUsed    |     0 |
| maxImageMeta             |   128 |
| maxPersonalitySize       | 10240 |
| maxTotalRAMSize          | 51200 |
| maxServerGroups          |    10 |
| maxSecurityGroupRules    |    20 |
| maxTotalKeypairs         |   100 |
| totalCoresUsed           |     4 |
| totalRAMUsed             |  4096 |
| maxSecurityGroups        |    10 |
| totalFloatingIpsUsed     |     0 |
| totalInstancesUsed       |     2 |
| maxServerGroupMembers    |    10 |
| maxTotalFloatingIps      |    10 |
| totalSecurityGroupsUsed  |     1 |
| maxTotalCores            |    20 |
| totalSnapshotsUsed       |     0 |
| maxTotalBackups          |    10 |
| maxTotalVolumeGigabytes  |  1000 |
| maxTotalSnapshots        |    10 |
| maxTotalBackupGigabytes  |  1000 |
| totalBackupGigabytesUsed |     0 |
| maxTotalVolumes          |    10 |
| totalVolumesUsed         |     3 |
| totalBackupsUsed         |     0 |
| totalGigabytesUsed       |     3 |
+--------------------------+-------+


test project limits :

(overcloud-test-project) [stack at shatadru-osp13-director ~]$ source test-user.rc 
(overcloud-test-project) [stack at shatadru-osp13-director ~]$ env|grep -i OS_
OS_REGION_NAME=regionOne
OS_USER_DOMAIN_NAME=Default
OS_IMAGE_API_VERSION=2
OS_PROJECT_NAME=test-project
OS_IDENTITY_API_VERSION=3
OS_PASSWORD=xxxxxx
OS_AUTH_TYPE=password
PS1=${OS_CLOUDNAME:+($OS_CLOUDNAME)} [\u@\h \W]\$ 
OS_AUTH_URL=http://192.168.100.7:5000//v3
OS_USERNAME=test-user
OS_VOLUME_API_VERSION=3
OS_NO_CACHE=True
OS_CLOUDNAME=overcloud-test-project
OS_PROJECT_DOMAIN_NAME=Default


This works too :
(overcloud-test-project) [stack at shatadru-osp13-director ~]$ openstack limits show  --absolute
None
+--------------------------+-------+
| Name                     | Value |
+--------------------------+-------+
| maxServerMeta            |   128 |
| maxTotalInstances        |    10 |
| maxPersonality           |     5 |
| totalServerGroupsUsed    |     0 |
| maxImageMeta             |   128 |
| maxPersonalitySize       | 10240 |
| maxTotalRAMSize          | 51200 |
| maxServerGroups          |    10 |
| maxSecurityGroupRules    |    20 |
| maxTotalKeypairs         |   100 |
| totalCoresUsed           |     2 |
| totalRAMUsed             |  2048 |
| maxSecurityGroups        |    10 |
| totalFloatingIpsUsed     |     0 |
| totalInstancesUsed       |     1 |
| maxServerGroupMembers    |    10 |
| maxTotalFloatingIps      |    10 |
| totalSecurityGroupsUsed  |     1 | <--
| maxTotalCores            |    20 |
| totalSnapshotsUsed       |     0 |
| maxTotalBackups          |    10 |
| maxTotalVolumeGigabytes  |  1000 |
| maxTotalSnapshots        |    10 |
| maxTotalBackupGigabytes  |  1000 |
| totalBackupGigabytesUsed |     0 |
| maxTotalVolumes          |    10 |
| totalVolumesUsed         |     1 | <-- for this project(test-project) this is correct
| totalBackupsUsed         |     0 |
| totalGigabytesUsed       |     1 |
+--------------------------+-------+


But if I source admin credential and try to list details for specific project the details are incorrect 
~~~
openstack limits show --project 2f50689300a948ba912988a65f8a42f1 --absolute
+--------------------------+-------+
| Name                     | Value |
+--------------------------+-------+
| maxServerMeta            |   128 |
| maxTotalInstances        |    10 |
| maxPersonality           |     5 |
| totalServerGroupsUsed    |     0 |
| maxImageMeta             |   128 |
| maxPersonalitySize       | 10240 |
| maxTotalRAMSize          | 51200 |
| maxServerGroups          |    10 |
| maxSecurityGroupRules    |    20 |
| maxTotalKeypairs         |   100 |
| totalCoresUsed           |     4 |
| totalRAMUsed             |  4096 |
| maxSecurityGroups        |    10 |
| totalFloatingIpsUsed     |     0 |
| totalInstancesUsed       |     2 |
| maxServerGroupMembers    |    10 |
| maxTotalFloatingIps      |    10 |
| totalSecurityGroupsUsed  |     1 |
| maxTotalCores            |    20 |
| totalSnapshotsUsed       |     0 |
| maxTotalBackups          |    10 |
| maxTotalVolumeGigabytes  |  1000 |
| maxTotalSnapshots        |    10 |
| maxTotalBackupGigabytes  |  1000 |
| totalBackupGigabytesUsed |     0 |
| maxTotalVolumes          |    10 |
| totalVolumesUsed         |     3 | < --- this is not for test-project but for admin
| totalBackupsUsed         |     0 |
| totalGigabytesUsed       |     3 |
+--------------------------+-------+

~~~

#source overcloud


openstack project list
+----------------------------------+--------------+
| ID                               | Name         |
+----------------------------------+--------------+
| 046e24ef0bb844609aeb14f21c8d2af0 | service      |
| 2f50689300a948ba912988a65f8a42f1 | test-project |
| 34fb06df15fe46d3b52bc17a7af07e42 | admin        |
+----------------------------------+--------------+

If we use --debug, we can see openstackclient is sending api call to get
admin project details
(http://192.168.100.7:8776/v3/34fb06df15fe46d3b52bc17a7af07e42)instead
of the one we passed in command line(2f50689300a948ba912988a65f8a42f1)

~~~
REQ: curl -g -i -X GET http://192.168.100.7:8776/v3/34fb06df15fe46d3b52bc17a7af07e42/limits -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}aac11b336cb6ac9d71bd8cb7a0486f3693833ea1"
Starting new HTTP connection (1): 192.168.100.7
http://192.168.100.7:8776 "GET /v3/34fb06df15fe46d3b52bc17a7af07e42/limits HTTP/1.1" 200 148
RESP: [200] Date: Mon, 23 Dec 2019 07:23:38 GMT Server: Apache x-compute-request-id: req-d895762f-ebeb-4ea4-97e2-9b3dcf65e370 OpenStack-API-Version: volume 3.0 Vary: OpenStack-API-Version,Accept-Encoding x-openstack-request-id: req-d895762f-ebeb-4ea4-97e2-9b3dcf65e370 Content-Encoding: gzip Content-Length: 148 Content-Type: application/json 
RESP BODY: {"limits": {"rate": [], "absolute": {"totalSnapshotsUsed": 0, "maxTotalBackups": 10, "maxTotalVolumeGigabytes": 1000, "maxTotalSnapshots": 10, "maxTotalBackupGigabytes": 1000, "totalBackupGigabytesUsed": 0, "maxTotalVolumes": 10, "totalVolumesUsed": 3, "totalBackupsUsed": 0, "totalGigabytesUsed": 3}}}
~~~


if we source that project's credential, it sends correct api call 'http://192.168.100.7:8776/v3/2f50689300a948ba912988a65f8a42f1/limits'

~~~
GET call to compute for http://192.168.100.7:8774/v2.1/limits used request id req-3c7c0118-6873-4c27-bd42-990a247f466d
REQ: curl -g -i -X GET http://192.168.100.7:8776/v3/2f50689300a948ba912988a65f8a42f1/limits -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}163d2047ed15afcda3c0cbe37c86b87ea54ad6bb"
Starting new HTTP connection (1): 192.168.100.7
http://192.168.100.7:8776 "GET /v3/2f50689300a948ba912988a65f8a42f1/limits HTTP/1.1" 200 148
RESP: [200] Date: Mon, 23 Dec 2019 07:27:53 GMT Server: Apache x-compute-request-id: req-9f93863c-9d43-4d4b-acb7-be8337382abd OpenStack-API-Version: volume 3.0 Vary: OpenStack-API-Version,Accept-Encoding x-openstack-request-id: req-9f93863c-9d43-4d4b-acb7-be8337382abd Content-Encoding: gzip Content-Length: 148 Content-Type: application/json 
RESP BODY: {"limits": {"rate": [], "absolute": {"totalSnapshotsUsed": 0, "maxTotalBackups": 10, "maxTotalVolumeGigabytes": 1000, "maxTotalSnapshots": 10, "maxTotalBackupGigabytes": 1000, "totalBackupGigabytesUsed": 0, "maxTotalVolumes": 10, "totalVolumesUsed": 1, "totalBackupsUsed": 0, "totalGigabytesUsed": 1}}}
~~~


 68     def take_action(self, parsed_args):
 69         #pdb.set_trace()
 70 
 71         compute_client = self.app.client_manager.compute
 72         volume_client = self.app.client_manager.volume
 73 
 74         project_id = None
 75         if parsed_args.project is not None:
 76             identity_client = self.app.client_manager.identity
 77             if parsed_args.domain is not None:
 78                 domain = identity_common.find_domain(identity_client,
 79                                                      parsed_args.domain)
 80                 project_id = utils.find_resource(identity_client.projects,
 81                                                  parsed_args.project,
 82                                                  domain_id=domain.id).id
 83             else:
 84                 project_id = utils.find_resource(identity_client.projects,
 85                                                  parsed_args.project).id
 86         #print (project_id)
 87 
 88         compute_limits = compute_client.limits.get(parsed_args.is_reserved,
 89                                                    tenant_id=project_id)
 90         volume_limits = volume_client.limits.get() <---

** Affects: python-openstackclient (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
OpenStack, which is subscribed to python-openstackclient in Ubuntu.
https://bugs.launchpad.net/bugs/1857320

Title:
  openstack limits show --absolute --project <project id>  does not work
  correctly for volumes and security groups

Status in python-openstackclient package in Ubuntu:
  New

Bug description:
  openstack limits show --absolute --project <project id>  does not work correctly for volumes and security groups
  --------------------

  if I source admin credential even if I use `openstack limits show
  --absolute --project <project id>  ` it shows details for admin
  project for volumes and security groups.

  
  OS_REGION_NAME=regionOne
  OS_USER_DOMAIN_NAME=Default
  OS_IMAGE_API_VERSION=2
  OS_PROJECT_NAME=admin
  OS_IDENTITY_API_VERSION=3
  OS_PASSWORD=xxxx
  OS_AUTH_TYPE=password
  PS1=${OS_CLOUDNAME:+($OS_CLOUDNAME)} [\u@\h \W]\$ 
  OS_AUTH_URL=http://192.168.100.7:5000//v3
  OS_USERNAME=admin
  OS_VOLUME_API_VERSION=3
  OS_NO_CACHE=True
  OS_CLOUDNAME=overcloud
  OS_PROJECT_DOMAIN_NAME=Default

  admin limits :
  openstack limits show  --absolute
  None
  +--------------------------+-------+
  | Name                     | Value |
  +--------------------------+-------+
  | maxServerMeta            |   128 |
  | maxTotalInstances        |    10 |
  | maxPersonality           |     5 |
  | totalServerGroupsUsed    |     0 |
  | maxImageMeta             |   128 |
  | maxPersonalitySize       | 10240 |
  | maxTotalRAMSize          | 51200 |
  | maxServerGroups          |    10 |
  | maxSecurityGroupRules    |    20 |
  | maxTotalKeypairs         |   100 |
  | totalCoresUsed           |     4 |
  | totalRAMUsed             |  4096 |
  | maxSecurityGroups        |    10 |
  | totalFloatingIpsUsed     |     0 |
  | totalInstancesUsed       |     2 |
  | maxServerGroupMembers    |    10 |
  | maxTotalFloatingIps      |    10 |
  | totalSecurityGroupsUsed  |     1 |
  | maxTotalCores            |    20 |
  | totalSnapshotsUsed       |     0 |
  | maxTotalBackups          |    10 |
  | maxTotalVolumeGigabytes  |  1000 |
  | maxTotalSnapshots        |    10 |
  | maxTotalBackupGigabytes  |  1000 |
  | totalBackupGigabytesUsed |     0 |
  | maxTotalVolumes          |    10 |
  | totalVolumesUsed         |     3 |
  | totalBackupsUsed         |     0 |
  | totalGigabytesUsed       |     3 |
  +--------------------------+-------+

  
  test project limits :

  (overcloud-test-project) [stack at shatadru-osp13-director ~]$ source test-user.rc 
  (overcloud-test-project) [stack at shatadru-osp13-director ~]$ env|grep -i OS_
  OS_REGION_NAME=regionOne
  OS_USER_DOMAIN_NAME=Default
  OS_IMAGE_API_VERSION=2
  OS_PROJECT_NAME=test-project
  OS_IDENTITY_API_VERSION=3
  OS_PASSWORD=xxxxxx
  OS_AUTH_TYPE=password
  PS1=${OS_CLOUDNAME:+($OS_CLOUDNAME)} [\u@\h \W]\$ 
  OS_AUTH_URL=http://192.168.100.7:5000//v3
  OS_USERNAME=test-user
  OS_VOLUME_API_VERSION=3
  OS_NO_CACHE=True
  OS_CLOUDNAME=overcloud-test-project
  OS_PROJECT_DOMAIN_NAME=Default


  This works too :
  (overcloud-test-project) [stack at shatadru-osp13-director ~]$ openstack limits show  --absolute
  None
  +--------------------------+-------+
  | Name                     | Value |
  +--------------------------+-------+
  | maxServerMeta            |   128 |
  | maxTotalInstances        |    10 |
  | maxPersonality           |     5 |
  | totalServerGroupsUsed    |     0 |
  | maxImageMeta             |   128 |
  | maxPersonalitySize       | 10240 |
  | maxTotalRAMSize          | 51200 |
  | maxServerGroups          |    10 |
  | maxSecurityGroupRules    |    20 |
  | maxTotalKeypairs         |   100 |
  | totalCoresUsed           |     2 |
  | totalRAMUsed             |  2048 |
  | maxSecurityGroups        |    10 |
  | totalFloatingIpsUsed     |     0 |
  | totalInstancesUsed       |     1 |
  | maxServerGroupMembers    |    10 |
  | maxTotalFloatingIps      |    10 |
  | totalSecurityGroupsUsed  |     1 | <--
  | maxTotalCores            |    20 |
  | totalSnapshotsUsed       |     0 |
  | maxTotalBackups          |    10 |
  | maxTotalVolumeGigabytes  |  1000 |
  | maxTotalSnapshots        |    10 |
  | maxTotalBackupGigabytes  |  1000 |
  | totalBackupGigabytesUsed |     0 |
  | maxTotalVolumes          |    10 |
  | totalVolumesUsed         |     1 | <-- for this project(test-project) this is correct
  | totalBackupsUsed         |     0 |
  | totalGigabytesUsed       |     1 |
  +--------------------------+-------+

  
  But if I source admin credential and try to list details for specific project the details are incorrect 
  ~~~
  openstack limits show --project 2f50689300a948ba912988a65f8a42f1 --absolute
  +--------------------------+-------+
  | Name                     | Value |
  +--------------------------+-------+
  | maxServerMeta            |   128 |
  | maxTotalInstances        |    10 |
  | maxPersonality           |     5 |
  | totalServerGroupsUsed    |     0 |
  | maxImageMeta             |   128 |
  | maxPersonalitySize       | 10240 |
  | maxTotalRAMSize          | 51200 |
  | maxServerGroups          |    10 |
  | maxSecurityGroupRules    |    20 |
  | maxTotalKeypairs         |   100 |
  | totalCoresUsed           |     4 |
  | totalRAMUsed             |  4096 |
  | maxSecurityGroups        |    10 |
  | totalFloatingIpsUsed     |     0 |
  | totalInstancesUsed       |     2 |
  | maxServerGroupMembers    |    10 |
  | maxTotalFloatingIps      |    10 |
  | totalSecurityGroupsUsed  |     1 |
  | maxTotalCores            |    20 |
  | totalSnapshotsUsed       |     0 |
  | maxTotalBackups          |    10 |
  | maxTotalVolumeGigabytes  |  1000 |
  | maxTotalSnapshots        |    10 |
  | maxTotalBackupGigabytes  |  1000 |
  | totalBackupGigabytesUsed |     0 |
  | maxTotalVolumes          |    10 |
  | totalVolumesUsed         |     3 | < --- this is not for test-project but for admin
  | totalBackupsUsed         |     0 |
  | totalGigabytesUsed       |     3 |
  +--------------------------+-------+

  ~~~

  #source overcloud

  
  openstack project list
  +----------------------------------+--------------+
  | ID                               | Name         |
  +----------------------------------+--------------+
  | 046e24ef0bb844609aeb14f21c8d2af0 | service      |
  | 2f50689300a948ba912988a65f8a42f1 | test-project |
  | 34fb06df15fe46d3b52bc17a7af07e42 | admin        |
  +----------------------------------+--------------+

  If we use --debug, we can see openstackclient is sending api call to
  get admin project details
  (http://192.168.100.7:8776/v3/34fb06df15fe46d3b52bc17a7af07e42)instead
  of the one we passed in command line(2f50689300a948ba912988a65f8a42f1)

  ~~~
  REQ: curl -g -i -X GET http://192.168.100.7:8776/v3/34fb06df15fe46d3b52bc17a7af07e42/limits -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}aac11b336cb6ac9d71bd8cb7a0486f3693833ea1"
  Starting new HTTP connection (1): 192.168.100.7
  http://192.168.100.7:8776 "GET /v3/34fb06df15fe46d3b52bc17a7af07e42/limits HTTP/1.1" 200 148
  RESP: [200] Date: Mon, 23 Dec 2019 07:23:38 GMT Server: Apache x-compute-request-id: req-d895762f-ebeb-4ea4-97e2-9b3dcf65e370 OpenStack-API-Version: volume 3.0 Vary: OpenStack-API-Version,Accept-Encoding x-openstack-request-id: req-d895762f-ebeb-4ea4-97e2-9b3dcf65e370 Content-Encoding: gzip Content-Length: 148 Content-Type: application/json 
  RESP BODY: {"limits": {"rate": [], "absolute": {"totalSnapshotsUsed": 0, "maxTotalBackups": 10, "maxTotalVolumeGigabytes": 1000, "maxTotalSnapshots": 10, "maxTotalBackupGigabytes": 1000, "totalBackupGigabytesUsed": 0, "maxTotalVolumes": 10, "totalVolumesUsed": 3, "totalBackupsUsed": 0, "totalGigabytesUsed": 3}}}
  ~~~

  
  if we source that project's credential, it sends correct api call 'http://192.168.100.7:8776/v3/2f50689300a948ba912988a65f8a42f1/limits'

  ~~~
  GET call to compute for http://192.168.100.7:8774/v2.1/limits used request id req-3c7c0118-6873-4c27-bd42-990a247f466d
  REQ: curl -g -i -X GET http://192.168.100.7:8776/v3/2f50689300a948ba912988a65f8a42f1/limits -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: {SHA1}163d2047ed15afcda3c0cbe37c86b87ea54ad6bb"
  Starting new HTTP connection (1): 192.168.100.7
  http://192.168.100.7:8776 "GET /v3/2f50689300a948ba912988a65f8a42f1/limits HTTP/1.1" 200 148
  RESP: [200] Date: Mon, 23 Dec 2019 07:27:53 GMT Server: Apache x-compute-request-id: req-9f93863c-9d43-4d4b-acb7-be8337382abd OpenStack-API-Version: volume 3.0 Vary: OpenStack-API-Version,Accept-Encoding x-openstack-request-id: req-9f93863c-9d43-4d4b-acb7-be8337382abd Content-Encoding: gzip Content-Length: 148 Content-Type: application/json 
  RESP BODY: {"limits": {"rate": [], "absolute": {"totalSnapshotsUsed": 0, "maxTotalBackups": 10, "maxTotalVolumeGigabytes": 1000, "maxTotalSnapshots": 10, "maxTotalBackupGigabytes": 1000, "totalBackupGigabytesUsed": 0, "maxTotalVolumes": 10, "totalVolumesUsed": 1, "totalBackupsUsed": 0, "totalGigabytesUsed": 1}}}
  ~~~


   68     def take_action(self, parsed_args):
   69         #pdb.set_trace()
   70 
   71         compute_client = self.app.client_manager.compute
   72         volume_client = self.app.client_manager.volume
   73 
   74         project_id = None
   75         if parsed_args.project is not None:
   76             identity_client = self.app.client_manager.identity
   77             if parsed_args.domain is not None:
   78                 domain = identity_common.find_domain(identity_client,
   79                                                      parsed_args.domain)
   80                 project_id = utils.find_resource(identity_client.projects,
   81                                                  parsed_args.project,
   82                                                  domain_id=domain.id).id
   83             else:
   84                 project_id = utils.find_resource(identity_client.projects,
   85                                                  parsed_args.project).id
   86         #print (project_id)
   87 
   88         compute_limits = compute_client.limits.get(parsed_args.is_reserved,
   89                                                    tenant_id=project_id)
   90         volume_limits = volume_client.limits.get() <---

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/python-openstackclient/+bug/1857320/+subscriptions



More information about the Ubuntu-openstack-bugs mailing list