← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1771728] Re: libvirt: Shared Resource Provider (RP) DISK_GB is NOT taken into account if it's configured with Compute Node RPs

 

Reviewed:  https://review.openstack.org/560459
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=7e48b227d0622b268f74d1a559aca4cd3784f7cf
Submitter: Zuul
Branch:    master

commit 7e48b227d0622b268f74d1a559aca4cd3784f7cf
Author: Eric Fried <efried@xxxxxxxxxx>
Date:   Wed Apr 11 09:47:49 2018 -0500

    libvirt: Don't report DISK_GB if sharing
    
    For libvirt, if the operator wishes to use shared storage, they must
    manually configure the sharing resource provider in placement and
    associate it via aggregate with the compute node.  However, the libvirt
    driver was still reporting the (same) DISK_GB inventory in the compute
    node provider.
    
    With this patch, we check the provider tree to see if a sharing provider
    of DISK_GB is present.  If so, we don't report that inventory - because
    it's already accounted for by the sharing provider.
    
    Co-Authored-By: Bhagyashri Shewale <bhagyashri.shewale@xxxxxxxxxxx>
    Closes-Bug: #1771728
    Change-Id: Iea283322124cb35fc0bc6d25f35548621e8c8c2f


** Changed in: nova
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1771728

Title:
  libvirt: Shared Resource Provider (RP) DISK_GB is NOT taken into
  account if it's configured with Compute Node RPs

Status in OpenStack Compute (nova):
  Fix Released

Bug description:
  If user configures shared resource provider for disk_gb resources and
  links it with the compute nodes resource provider using aggregates
  then the disk_gb resources are still allocated from compute Node
  resource provider instead of shared resource provider.

  Environment Details:

  commit id: 0051e622e90ef4ea2678f3a1135043da460cad19

  1. Compute Host A
  2. NFS server on Host B 
  3. Disk files stored in the instance path on each compute nodes is mounted on NFS server storage.

  Steps to reproduce:

  1. Create shared resource provider

  $ curl -g -i -X POST http://<HOST IP>/placement/resource_providers  -H
  "Content-Type: application/json" -H "X-Auth-Token: <auth-token value>"
  -H "OpenStack-API-Version: placement latest" -d '{"name": "shared-
  disk", "uuid": <UUID of ----->'

  2. Create inventory DISK_GB against shared resource provider created
  step 1.

  $ curl -g -i -X POST http://<HOST IP>/placement/resource_providers/<RP
  ID>/inventories -H "Content-Type: application/json" -H "X-Auth-Token:
  <auth-token value>" " -d '{"resource_class": "DISK_GB", "total": 78,
  "reserved": 0, "min_unit": 1, "max_unit": 78, "step_size": 1,
  "allocation_ratio": 1.0}'

  3. Create an aggregate

  $ nova aggregate-create shared_resource_aggregate

  4. link both the compute node RP and shared resource provider to
  agrregate create in step 3

  $ curl -g -i -X PUT http://<HOST IP>/placement/resource_providers/<RP
  ID>/aggregates -H "Accept: application/json" -H "Content-Type:
  application/json" -H "OpenStack-API-Version: placement latest" -H "x
  -auth-token: <auth-token value>" " -d '{"aggregates": [ "<aggregate
  ID>" ], "resource_provider_generation": 1}'

  5. Add MISC_SHARES_VIA_AGGREGATE trait to shared resource provider

  $ curl -g -i -X PUT http://<HOST IP>/placement/resource_providers/<RP
  ID>/traits -H "Accept: application/json" -H "Content-Type:
  application/json" -H "OpenStack-API-Version: placement latest" -H "x
  -auth-token: <auth-token value>" " -d '{"traits":
  ["MISC_SHARES_VIA_AGGREGATE"], "resource_provider_generation": 1}'

  6. Boot the instance:

          Flavor Details:

          $ nova boot --flavor 1 --image <image_id> <instance_name>

  7. Check usages of compute node resource provider:

  $ curl -g -i -X GET http://<HOST IP>/placement/resource_providers/<RP ID>/usages -H "Accept: application/json" -H "Content-Type: application/json" -H "OpenStack-API-Version: placement latest" -H "x-auth-token: 27903d0f-cc28-45ae-ae2e-3105c9e640b9"
  HTTP/1.1 200 OK
  Date: Wed, 28 Mar 2018 06:22:59 GMT
  Server: Apache/2.4.18 (Ubuntu)
  Content-Length: 90
  Content-Type: application/json
  Cache-Control: no-cache
  Last-Modified: Wed, 28 Mar 2018 06:22:59 GMT
  openstack-api-version: placement 1.21
  vary: openstack-api-version
  x-openstack-request-id: req-b3fe929f-187f-47d6-92a6-03c605a39848
  Connection: close

  {"resource_provider_generation": 5, "usages": {"VCPU": 1, "MEMORY_MB":
  512, "DISK_GB": 1}}

  8. Check usages of shared resource provider:

  $ curl -g -i -X GET http:// <HOST IP>/placement/resource_providers/<RP ID>/usages -H "Accept: application/json" -H "Content-Type: application/json" -H "OpenStack-API-Version: placement latest" -H "x-auth-token: 27903d0f-cc28-45ae-ae2e-3105c9e640b9"
  HTTP/1.1 200 OK
  Date: Wed, 28 Mar 2018 06:23:05 GMT
  Server: Apache/2.4.18 (Ubuntu)
  Content-Length: 61
  Content-Type: application/json
  Cache-Control: no-cache
  Last-Modified: Wed, 28 Mar 2018 06:23:05 GMT
  openstack-api-version: placement 1.21
  vary: openstack-api-version
  x-openstack-request-id: req-8093854e-c5ab-429a-8dbc-474ef06ed243
  Connection: close

  {"resource_provider_generation": 3, "usages": {"DISK_GB": 0}}

  Observation:
  By comparing usages details above (point 7 and 8) it shows that DISK_GB is consumed from Compute Node Resource Provider and not from the Shared Resource Provider.

  Expected Result: DISK_GB should be allocated from the shared resource
  provider.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1771728/+subscriptions


References