Booting Ironic instance, neutron port remains in DOWN state
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Invalid
|
Medium
|
Unassigned |
Bug Description
When booting ironic instance in flat network, neutron port always remain in down state since it is not bound.
stack@vsaienko-
+------
| Field | Value |
+------
| admin_state_up | True |
| allowed_
| binding:host_id | vsaienko-
| binding:profile | {} |
| binding:vif_details | {"port_filter": true, "ovs_hybrid_plug": true} |
| binding:vif_type | ovs |
| binding:vnic_type | normal |
| created_at | 2016-07-07T07:32:05 |
| description | |
| device_id | 0a03a565-
| device_owner | compute:None |
| extra_dhcp_opts | {"opt_value": "undionly.kpxe", "ip_version": 4, "opt_name": "tag:!ipxe,
| | {"opt_value": "10.11.0.51", "ip_version": 4, "opt_name": "tftp-server"} |
| | {"opt_value": "10.11.0.51", "ip_version": 4, "opt_name": "server-
| | {"opt_value": "http://
| fixed_ips | {"subnet_id": "17ab9d45-
| id | 6cabc468-
| mac_address | 52:54:00:d9:9e:d8 |
| name | |
| network_id | b5587303-
| port_security_
| security_groups | edd667ef-
| status | DOWN |
| tenant_id | fd9f6a00f3a849b
| updated_at | 2016-07-07T07:32:07 |
+------
stack@vsaienko-
2016-07-07 03:32:08.086 7799 DEBUG neutron.
2016-07-07 03:32:15.215 7799 DEBUG neutron.
q-svc.log http://
2016-07-07 03:32:06.931 7807 DEBUG neutron.
2016-07-07 03:32:06.959 7807 DEBUG neutron.
The reason why it is happening is next.
1. Nova allocates networks for instance. Neutron port is created with vnic_type: normal
2. Neutron ovs agent that responds for binding this vnic type can't bind port, since de facto instance lives on dedicated hardware server.
As result port remains unbound.
3. Neutron don't move port to ACTIVE, since it is unbound.
How to fix it:
1. Create neutron port for Ironic instance with vnic_type: baremetal
2. Implement neutron driver, that will perform fake binding of baremetal port. (If network if flat just set that port is bound, no need to perform any operations, since hardware server is already plugged to this network)
description: | updated |
Changed in neutron: | |
assignee: | nobody → Vasyl Saienko (vsaienko) |
tags: | added: ironic |
description: | updated |
no longer affects: | neutron |
Hmm, this seems to be exposing lots of details to the end user of the API, I am curious why it works like this.