HARestarter deletes quantum port required by instance
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Heat |
Won't Fix
|
Low
|
Unassigned |
Bug Description
Created from https:/
--
Using grizzly version from heat/openstack.
Ports on template also removed when instance is deleted, is that normal? I have HARestarter policy and few alarms for instances in the template and when I issue heat-wacth command from command line:
heat-watch set-state teststack.
Related instance is deleted ok, but it will also delete Port from with instance is dependent on. That will cause Instance start to fail as Port is not found.
See below my template and heat-engine.log and nova-api.log.
Template:
{
"AWSTemplate
"Description" : "Test template.",
"Parameters" : {
"KeyName" : {
"Type" : "String"
},
"InstanceType" : {
"Type" : "String",
"Default" : "m1.small",
},
"DemoDistr
"Default": "DemoV1",
"Type": "String",
}
},
"Mappings" : {
"AWSInstan
"m1.small" : { "Arch" : "64" }
},
"DistroArc
"DemoV1" : { "64" : "ubuntu1304-
}
},
"Resources" : {
"private-
"Type": "OS::Quantum::Net"
},
"public-
"Type": "OS::Quantum::Net",
"Properties": {
"value_specs": {"router:external" : true}
}
},
"private-
"Type": "OS::Quantum:
"DependsOn" : "private-network",
"Properties": {
"cidr": "10.0.0.0/24",
"gateway_ip": "10.0.0.1",
"allocation_
}
},
"public-subnet": {
"Type": "OS::Quantum:
"DependsOn" : "public-network",
"Properties": {
"cidr": "192.168.0.0/24",
"gateway_ip": "192.168.0.1",
"allocation_
}
},
"private-port": {
"Type": "OS::Quantum:
"DependsOn" : "private-subnet",
"Properties": {
}
},
"private-
"Type": "OS::Quantum:
"DependsOn" : "private-subnet",
"Properties": {
}
},
"router": {
"Type": "OS::Quantum:
"DependsOn" : "public-subnet"
},
"router_
"Type": "OS::Quantum:
"DependsOn" : "router",
}
},
"router_
"Type": "OS::Quantum:
"DependsOn" : "router_interface",
"Properties": {
}
},
"testInst1": {
"Type": "AWS::EC2:
"Metadata" : {
}
},
"ImageId" : { "Fn::FindInMap" : [ "DistroArch2AMI", { "Ref" : "DemoDistribution" },
"KeyName" : { "Ref" : "KeyName" },
"NetworkInter
}
},
"testInst2": {
"Type": "AWS::EC2:
"Metadata" : {
}
},
"ImageId" : { "Fn::FindInMap" : [ "DistroArch2AMI", { "Ref" : "DemoDistribution" },
"KeyName" : { "Ref" : "KeyName" },
"NetworkInter
}
},
"Test_
"Type" : "OS::Heat:
"Properties" : {
}
},
"Test_
"Type" : "OS::Heat:
"Properties" : {
}
},
"AllFailure
"Type": "AWS::CloudWatc
"Properties": {
"Period": "300",
}
},
"Test_
"Type": "AWS::CloudWatc
"Properties": {
"Period": "300",
}
},
"Test_
"Type": "AWS::CloudWatc
"Properties": {
"Period": "300",
}
}
}
}
heat-engine.log:
2013-07-01 19:57:14.279 12829 INFO heat.engine.
2013-07-01 19:57:14.360 12829 DEBUG heat.engine.
2013-07-01 19:57:14.365 12829 INFO heat.engine.
2013-07-01 19:57:14.365 12829 INFO heat.engine.
2013-07-01 19:57:14.701 12829 INFO heat.engine.
2013-07-01 19:57:15.035 12829 INFO heat.engine.
2013-07-01 19:57:15.370 12829 INFO heat.engine.
2013-07-01 19:57:17.515 12829 DEBUG heat.engine.service [-] Periodic watcher task for stack 0d2f4fe7-
2013-07-01 19:57:20.002 12829 INFO heat.engine.
2013-07-01 19:57:20.484 12829 ERROR heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.484 12829 TRACE heat.engine.
2013-07-01 19:57:20.646 12829 INFO heat.engine.
2013-07-01 19:57:20.896 12829 INFO heat.engine.
2013-07-01 19:57:21.189 12829 INFO heat.engine.
2013-07-01 19:58:17.544 12829 DEBUG heat.engine.service [-] Periodic watcher task for stack 0d2f4fe7-
nova-api.log:
2013-07-01 19:57:20.479 ERROR nova.api.openstack [req-624845c9-
etwork None
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack Traceback (most recent call last):
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack return req.get_
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack application, catch_exc_
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack app_iter = application(
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack return resp(environ, start_response)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack return self.app(env, start_response)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack return resp(environ, start_response)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack return resp(environ, start_response)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack return resp(environ, start_response)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/local/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack response = self.app(environ, start_response)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack return resp(environ, start_response)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack resp = self.call_func(req, *args, **self.kwargs)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack return self.func(req, *args, **kwargs)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack content_type, body, accept)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack action_result = self.dispatch(meth, request, action_args)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack return method(req=request, **action_args)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack scheduler_
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack rv = f(*args, **kwargs)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack scheduler_
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack reservation_id, scheduler_hints)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack QUOTAS.
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack self.gen.next()
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack self._check_
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack self.network_
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack port = quantumv2.
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack ret = self.function(
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack return self.get(
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack headers=headers, params=params)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack headers=headers, params=params)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack self._handle_
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack exception_
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack File "/usr/lib/
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack message=error_dict)
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack QuantumClientEx
2013-07-01 19:57:20.479 7044 TRACE nova.api.openstack
2013-07-01 19:57:20.482 INFO nova.api.openstack [req-624845c9-
Changed in heat: | |
assignee: | nobody → Liang Chen (cbjchen) |
Changed in heat: | |
assignee: | Liang Chen (cbjchen) → nobody |
Changed in heat: | |
milestone: | none → havana-3 |
importance: | Undecided → Medium |
Changed in heat: | |
milestone: | havana-3 → havana-rc1 |
Changed in heat: | |
milestone: | havana-rc1 → icehouse-1 |
tags: | added: havana-rc-potential |
Changed in heat: | |
milestone: | icehouse-1 → havana-rc2 |
Changed in heat: | |
milestone: | icehouse-1 → icehouse-2 |
Changed in heat: | |
milestone: | icehouse-2 → icehouse-3 |
Changed in heat: | |
milestone: | icehouse-3 → icehouse-rc1 |
Changed in heat: | |
status: | Confirmed → Won't Fix |
I added some trace logs to heat/engine/ resources/ quantum/ port.py handle_delete method.
It seemed that in case instance is deleted (and its port as a side effect) this method is not executed at all and no log is written. So could this mean that the bug is located somewhere else e.g. in quantum or nova side?