** Also affects: nova/train
   Importance: Undecided
       Status: New

** Also affects: nova/stein
   Importance: Undecided
       Status: New

** Changed in: nova/stein
       Status: New => Triaged

** Changed in: nova/train
       Status: New => Triaged

** Changed in: nova/stein
   Importance: Undecided => Medium

** Changed in: nova/train
   Importance: Undecided => Medium

-- 
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/1849657

Title:
   allocation key is missing from the binding:profile of the neutron qos
  port when the server is created by a non-admin user

Status in OpenStack Compute (nova):
  In Progress
Status in OpenStack Compute (nova) stein series:
  Triaged
Status in OpenStack Compute (nova) train series:
  Triaged

Bug description:
  Description
  ===========
  When a server is create by a non-admin tenant with a qos neutron port Nova 
does not add the allocation key to the binding:profile of the port.

  Steps to reproduce
  ==================
  1) Set up a devstack with bandwidth inventory
     * sudo ovs-vsctl add-br br-test
     * devstack local conf:
  [[post-config|/etc/neutron/neutron.conf]]
  [DEFAULT]
  service_plugins = router, placement, qos

  [[post-config|/etc/neutron/plugins/ml2/ml2_conf.ini]]
  [ml2]
  extension_drivers = port_security,qos
  mechanism_drivers = openvswitch
  tenant_network_types = vxlan

  [ml2_type_vlan]
  network_vlan_ranges = physnet0:1000:2000
  [ovs]
  bridge_mappings = public:br-ex,physnet0:br-test
  resource_provider_bandwidths = br-test:5000:5000
  [ovs_driver]
  vnic_type_blacklist = direct

     * stack.sh

  2) As admin user set up a network and a qos policy:

     * openstack network create net-demo --provider-network-type vlan  
--provider-physical-network physnet0 --provider-segment 101 --share
     * openstack subnet create subnet-demo --network net-demo --subnet-range 
10.0.4.0/24
     * openstack network qos policy create qp-demo --share
     * openstack network qos rule create qp-demo --type minimum-bandwidth 
--min-kbps 1000 --egress
     * openstack network qos rule create qp-demo --type minimum-bandwidth 
--min-kbps 1000 --ingress

  3) As a normal user (demo in devstack) create a port with the qos
  policy and create a server with the port

     * openstack port create port-normal-qos-demo --network net-demo 
--vnic-type normal --qos-policy qp-demo
     * openstack --os-compute-api-version 2.72 server create --image 
cirros-0.4.0-x86_64-disk --flavor c1 --nic port-id=port-normal-qos-demo vm-demo 
--wait

  
  Expected result
  ===============

  1) Server is reaching ACTIVE state
  2) Bandwidth allocation is created in placement according to the qp-demo 
policy
  3) The allocation key of the binding:profile of the port-normal-qos-demo port 
contains the UUID of the placement resource provider from where the bandwidth 
resource is allocated from.

  
  Actual result
  =============
  1) and 2) are as expected but the binding:porfile of the neutron port does 
not have an allocation key.

  Note that if the server is booted as admin user then both 1) 2) 3) are
  as expected.

  Environment
  ===========
  Devstack from master:

  stack@aio:/opt/stack/nova$ git log --oneline | head -1
  d3403e5294 Merge "Fix unit of hw_rng:rate_period"

  stack@aio:/opt/stack/neutron$ git log --oneline | head -1
  2ffaa40b43 Merge "ovsdb monitor: handle modified ports"

  Triage
  ======
  Looking at the port-normal-qos-demo port from the demo user. The 
resource_request filed of the port is None. While looking at the port from the 
admin user the resource_request field is properly filled according to the qos 
policy of the port.

  As demo:

  stack@aio:~$ openstack port show port-normal-qos-demo
  
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
  | Field                   | Value                                             
                                                                                
                              |
  
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
  | admin_state_up          | UP                                                
                                                                                
                              |
  | allowed_address_pairs   |                                                   
                                                                                
                              |
  | binding_host_id         | None                                              
                                                                                
                              |
  | binding_profile         | None                                              
                                                                                
                              |
  | binding_vif_details     | None                                              
                                                                                
                              |
  | binding_vif_type        | None                                              
                                                                                
                              |
  | binding_vnic_type       | normal                                            
                                                                                
                              |
  | created_at              | 2019-10-24T11:05:27Z                              
                                                                                
                              |
  | data_plane_status       | None                                              
                                                                                
                              |
  | description             |                                                   
                                                                                
                              |
  | device_id               |                                                   
                                                                                
                              |
  | device_owner            |                                                   
                                                                                
                              |
  | dns_assignment          | None                                              
                                                                                
                              |
  | dns_domain              | None                                              
                                                                                
                              |
  | dns_name                | None                                              
                                                                                
                              |
  | extra_dhcp_opts         |                                                   
                                                                                
                              |
  | fixed_ips               | ip_address='10.0.4.213', 
subnet_id='736636a1-114f-4d9e-9e8f-82568593061d'                                
                                                       |
  | id                      | b1593c18-b088-4d5c-b3c6-bdd5348f3b52              
                                                                                
                              |
  | location                | cloud='', project.domain_id='default', 
project.domain_name=, project.id='05c189206e0d4e3d8ea95f1a4067b420', 
project.name='demo', region_name='RegionOne', zone= |
  | mac_address             | fa:16:3e:8a:56:8a                                 
                                                                                
                              |
  | name                    | port-normal-qos-demo                              
                                                                                
                              |
  | network_id              | f32506ae-4cf4-414a-8349-09fc744f024c              
                                                                                
                              |
  | port_security_enabled   | True                                              
                                                                                
                              |
  | project_id              | 05c189206e0d4e3d8ea95f1a4067b420                  
                                                                                
                              |
  | propagate_uplink_status | None                                              
                                                                                
                              |
  | qos_policy_id           | f774c8b2-d302-427b-bdef-bd0614a0fbaa              
                                                                                
                              |
  | resource_request        | None                                              
                                                                                
                              |
  | revision_number         | 1                                                 
                                                                                
                              |
  | security_group_ids      | fb5f417f-727b-48c9-881a-21571450ae06              
                                                                                
                              |
  | status                  | DOWN                                              
                                                                                
                              |
  | tags                    |                                                   
                                                                                
                              |
  | trunk_details           | None                                              
                                                                                
                              |
  | updated_at              | 2019-10-24T11:05:27Z                              
                                                                                
                              |
  
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+

  As admin:

  stack@aio:~$ openstack port show port-normal-qos-demo
  
+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  | Field                   | Value                                             
                                                                                
                                |
  
+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  | admin_state_up          | UP                                                
                                                                                
                                |
  | allowed_address_pairs   |                                                   
                                                                                
                                |
  | binding_host_id         | aio                                               
                                                                                
                                |
  | binding_profile         |                                                   
                                                                                
                                |
  | binding_vif_details     | bridge_name='br-int', connectivity='l2', 
datapath_type='system', ovs_hybrid_plug='False', port_filter='True'             
                                         |
  | binding_vif_type        | ovs                                               
                                                                                
                                |
  | binding_vnic_type       | normal                                            
                                                                                
                                |
  | created_at              | 2019-10-24T11:05:27Z                              
                                                                                
                                |
  | data_plane_status       | None                                              
                                                                                
                                |
  | description             |                                                   
                                                                                
                                |
  | device_id               | f60856cc-9817-4fd9-a89f-c87c93fc729b              
                                                                                
                                |
  | device_owner            | compute:nova                                      
                                                                                
                                |
  | dns_assignment          | None                                              
                                                                                
                                |
  | dns_domain              | None                                              
                                                                                
                                |
  | dns_name                | None                                              
                                                                                
                                |
  | extra_dhcp_opts         |                                                   
                                                                                
                                |
  | fixed_ips               | ip_address='10.0.4.213', 
subnet_id='736636a1-114f-4d9e-9e8f-82568593061d'                                
                                                         |
  | id                      | b1593c18-b088-4d5c-b3c6-bdd5348f3b52              
                                                                                
                                |
  | location                | cloud='', project.domain_id=, 
project.domain_name=, project.id='05c189206e0d4e3d8ea95f1a4067b420', 
project.name=, region_name='RegionOne', zone=                  |
  | mac_address             | fa:16:3e:8a:56:8a                                 
                                                                                
                                |
  | name                    | port-normal-qos-demo                              
                                                                                
                                |
  | network_id              | f32506ae-4cf4-414a-8349-09fc744f024c              
                                                                                
                                |
  | port_security_enabled   | True                                              
                                                                                
                                |
  | project_id              | 05c189206e0d4e3d8ea95f1a4067b420                  
                                                                                
                                |
  | propagate_uplink_status | None                                              
                                                                                
                                |
  | qos_policy_id           | f774c8b2-d302-427b-bdef-bd0614a0fbaa              
                                                                                
                                |
  | resource_request        | {u'required': [u'CUSTOM_PHYSNET_PHYSNET0', 
u'CUSTOM_VNIC_TYPE_NORMAL'], u'resources': {u'NET_BW_EGR_KILOBIT_PER_SEC': 
1000, u'NET_BW_IGR_KILOBIT_PER_SEC': 1000}} |
  | revision_number         | 4                                                 
                                                                                
                                |
  | security_group_ids      | fb5f417f-727b-48c9-881a-21571450ae06              
                                                                                
                                |
  | status                  | ACTIVE                                            
                                                                                
                                |
  | tags                    |                                                   
                                                                                
                                |
  | trunk_details           | None                                              
                                                                                
                                |
  | updated_at              | 2019-10-24T11:14:46Z                              
                                                                                
                                |
  
+-------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+

  The placement allocation is correct:

  stack@aio:~$ openstack --os-placement-api-version 1.22 resource provider 
allocation show f60856cc-9817-4fd9-a89f-c87c93fc729b
  
+--------------------------------------+------------+----------------------------------------------------------------------------+----------------------------------+----------------------------------+
  | resource_provider                    | generation | resources               
                                                   | project_id                 
      | user_id                          |
  
+--------------------------------------+------------+----------------------------------------------------------------------------+----------------------------------+----------------------------------+
  | 1110cf59-cabf-526c-bacc-08baabbac692 |          9 | 
{u'NET_BW_EGR_KILOBIT_PER_SEC': 1000, u'NET_BW_IGR_KILOBIT_PER_SEC': 1000} | 
05c189206e0d4e3d8ea95f1a4067b420 | 2d0cf2d4e46348fda2c6d47d0e619544 |
  | 40f2860b-f0b4-4325-af91-011d374c8aba |         15 | {u'VCPU': 1, 
u'MEMORY_MB': 256, u'DISK_GB': 1}                             | 
05c189206e0d4e3d8ea95f1a4067b420 | 2d0cf2d4e46348fda2c6d47d0e619544 |
  
+--------------------------------------+------------+----------------------------------------------------------------------------+----------------------------------+----------------------------------+

  So Nova was able to gather the resource_request field from the Neutron
  port with admin (service) credentials before the scheduling. But Nova
  failed to include the allocation key to the same port. I assume that
  this happens because Nova only adds allocation key to the port if the
  port has resource_request [1] but Nova checks the port at [1] with the
  user credentials not with the service credentials.

  [1]
  
https://github.com/openstack/nova/blob/1bfa4626d13d0a73e63745cc4a864ae86d490daf/nova/network/neutronv2/api.py#L998

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

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to