input_values object of type 'NoneType' has no len() (HTTP 400)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Heat |
Fix Released
|
High
|
Ryan Brown |
Bug Description
With this logged in heat-engine.log:
2014-05-15 07:08:01.003 18487 ERROR heat.engine.
2014-05-15 07:08:01.003 18487 TRACE heat.engine.
2014-05-15 07:08:01.003 18487 TRACE heat.engine.
2014-05-15 07:08:01.003 18487 TRACE heat.engine.
2014-05-15 07:08:01.003 18487 TRACE heat.engine.
2014-05-15 07:08:01.003 18487 TRACE heat.engine.
2014-05-15 07:08:01.003 18487 TRACE heat.engine.
2014-05-15 07:08:01.003 18487 TRACE heat.engine.
Now, something might be generically setting the property to None, but I couldn't see anything that knows about input_values doing that except the service update method...
And that method could perhaps be called with None:
update() in heat/api/
update_data = dict((k, body.get(k)) for k in (
sd = self.rpc_
If input_values isn't in the body, then it will create an update_dict with input_values:None which is invalid.
Changed in heat: | |
status: | New → Triaged |
importance: | Undecided → High |
assignee: | nobody → Steve Baker (steve-stevebaker) |
milestone: | none → juno-1 |
Changed in heat: | |
milestone: | juno-1 → juno-2 |
Changed in heat: | |
assignee: | Steve Baker (steve-stevebaker) → Ryan Brown (sb-p) |
status: | Triaged → In Progress |
Changed in heat: | |
status: | Fix Committed → Fix Released |
Changed in heat: | |
milestone: | juno-3 → 2014.2 |
I put an assert in there and it fired: resource [req-f31c6b62- d02e-48b3- 9e99-3f12aa87bd 6c None] signal StructuredDeplo yment "NovaCompute18C onfig" [6774f17c- f4c4-4bb8- 8d28-4edfada872 15] Stack "overcloud" [00d02dae- 320f-4116- ac2f-98004a41ea d0] : ERROR: resource Traceback (most recent call last): resource File "/opt/stack/ venvs/heat/ local/lib/ python2. 7/site- packages/ heat/engine/ resource. py", line 893, in signal resource self.handle_ signal( details) resource File "/opt/stack/ venvs/heat/ lib/python2. 7/site- packages/ heat/engine/ resources/ software_ config/ software_ deployment. py", line 464, in handle_signal resource sd.update( output_ values= ov, status=status, status_ reason= status_ reason) resource File "/opt/stack/ venvs/heat/ local/lib/ python2. 7/site- packages/ heatclient/ v1/software_ deployments. py", line 23, in update resource self.manager. update( deployment_ id=self. id, **fields) resource File "/opt/stack/ venvs/heat/ local/lib/ python2. 7/site- packages/ heatclient/ v1/software_ deployments. py", line 68, in update resource 'PUT', '/software_ deployments/ %s' % deployment_id, data=kwargs) resource File "/opt/stack/ venvs/heat/ local/lib/ python2. 7/site- packages/ heatclient/ common/ http.py" , line 235, in json_request resource resp = self._http_ request( url, method, **kwargs) resource File "/opt/stack/ venvs/heat/ local/lib/ python2. 7/site- packages/ heatclient/ common/ http.py" , line 196, in _http_request resource raise exc.from_ response( resp) resource HTTPInternalSer verError: ERROR:
2014-05-15 15:01:39.955 1240 ERROR heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.
2014-05-15 15:01:39.955 1240 TRACE heat.engine.