Updating Nova::Server with Neutron::Port resource fails
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Opinion
|
Undecided
|
Unassigned | ||
OpenStack Heat |
Won't Fix
|
Undecided
|
Unassigned | ||
neutron |
Invalid
|
Undecided
|
Unassigned |
Bug Description
A Nova::Server resource that was created with an implicit port cannot be updated.
If I first create the following resource:
# template1.yaml
resources:
my_ironic_
type: OS::Nova::Server
properties:
key_name: default
image: overcloud-full
flavor: baremetal
networks:
- network: ctlplane
And then try to run a stack update with a different ip_address:
# template2.yaml
resources:
my_ironic_
type: OS::Nova::Server
properties:
key_name: default
image: overcloud-full
flavor: baremetal
networks:
- network: ctlplane
This fails with the following error:
RetryError: resources.
I also tried assigning an external IP to the Nova::Server created in the template1.yaml, but that gave me the same error.
# template3.yaml
resources:
instance_port:
type: OS::Neutron::Port
properties:
network: ctlplane
fixed_ips:
- subnet: "ctlplane-subnet"
my_ironic_
type: OS::Nova::Server
properties:
key_name: default
image: overcloud-full
flavor: baremetal
networks:
- network: ctlplane
port: {get_resource: instance_port}
However, if I first create the Nova::Server resource with an external port specified (as in template3.yaml above), then I can update the port to a different IP address and Ironic/Neutron does the right thing (at least since the recent attach/detach VIF in Ironic code has merged). So it appears that you can update a port if the port was created externally, but not if the port was created as part of the Nova::Server resource.
Changed in heat: | |
status: | New → Won't Fix |
Changed in neutron: | |
status: | New → Invalid |
What version of heat? And I can't reproduce this problem as following steps in master:
1. create a stack with the template:
th_server:
type: OS::Nova::Server
properties:
name: test_server
flavor: {get_param: flavor}
image: {get_param: image}
networks:
- network: {get_param: net}
fixed_ip: 10.0.0.24
2. update the stack to change the fixed_ip to '10.0.0.25', stack update success and the server ip is changed to the new one.