There should be a validation check in Savanna when duplicating name of Heat stack

Bug #1286082 reported by Yaroslav Lobankov
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Sahara
Fix Released
Medium
Alexander Ignatov

Bug Description

For instance, I have created a Heat stack with name "some-name". I want to create a cluster with name "some-name" when using the Heat as infrastructure engine. If I create the cluster with this name, I will have error.

Savanna trace is

2014-02-28 14:44:37.055 31708 TRACE savanna.context Traceback (most recent call last):
2014-02-28 14:44:37.055 31708 TRACE savanna.context File "/home/ylobankov/Savanna/periodic-patch-set/savanna/savanna/context.py", line 124, in _wrapper
2014-02-28 14:44:37.055 31708 TRACE savanna.context func(*args, **kwargs)
2014-02-28 14:44:37.055 31708 TRACE savanna.context File "/home/ylobankov/Savanna/periodic-patch-set/savanna/savanna/service/api.py", line 202, in _provision_cluster
2014-02-28 14:44:37.055 31708 TRACE savanna.context INFRA.create_cluster(cluster)
2014-02-28 14:44:37.055 31708 TRACE savanna.context File "/home/ylobankov/Savanna/periodic-patch-set/savanna/savanna/service/heat_engine.py", line 61, in create_cluster
2014-02-28 14:44:37.055 31708 TRACE savanna.context self._rollback_cluster_creation(cluster)
2014-02-28 14:44:37.055 31708 TRACE savanna.context File "/home/ylobankov/Savanna/periodic-patch-set/savanna/savanna/openstack/common/excutils.py", line 68, in __exit__
2014-02-28 14:44:37.055 31708 TRACE savanna.context six.reraise(self.type_, self.value, self.tb)
2014-02-28 14:44:37.055 31708 TRACE savanna.context File "/home/ylobankov/Savanna/periodic-patch-set/savanna/savanna/service/heat_engine.py", line 51, in create_cluster
2014-02-28 14:44:37.055 31708 TRACE savanna.context launcher.launch_instances(ctx, cluster, target_count)
2014-02-28 14:44:37.055 31708 TRACE savanna.context File "/home/ylobankov/Savanna/periodic-patch-set/savanna/savanna/service/heat_engine.py", line 185, in launch_instances
2014-02-28 14:44:37.055 31708 TRACE savanna.context stack = tmpl.instantiate(update_existing=self.UPDATE_STACK)
2014-02-28 14:44:37.055 31708 TRACE savanna.context File "/home/ylobankov/Savanna/periodic-patch-set/savanna/savanna/utils/openstack/heat.py", line 107, in instantiate
2014-02-28 14:44:37.055 31708 TRACE savanna.context heat.stacks.create(**kwargs)
2014-02-28 14:44:37.055 31708 TRACE savanna.context File "/home/ylobankov/Savanna/periodic-patch-set/savanna/.tox/venv/local/lib/python2.7/site-packages/heatclient/v1/stacks.py", line 112, in create
2014-02-28 14:44:37.055 31708 TRACE savanna.context data=kwargs, headers=headers)
2014-02-28 14:44:37.055 31708 TRACE savanna.context File "/home/ylobankov/Savanna/periodic-patch-set/savanna/.tox/venv/local/lib/python2.7/site-packages/heatclient/common/http.py", line 223, in json_request
2014-02-28 14:44:37.055 31708 TRACE savanna.context resp = self._http_request(url, method, **kwargs)
2014-02-28 14:44:37.055 31708 TRACE savanna.context File "/home/ylobankov/Savanna/periodic-patch-set/savanna/.tox/venv/local/lib/python2.7/site-packages/heatclient/common/http.py", line 188, in _http_request
2014-02-28 14:44:37.055 31708 TRACE savanna.context raise exc.from_response(resp)
2014-02-28 14:44:37.055 31708 TRACE savanna.context HTTPConflict: ERROR: The Stack (test-cluster-transient-vanilla) already exists.
2014-02-28 14:44:37.055 31708 TRACE savanna.context

Heat trace is

2014-02-28 10:44:38.781 13043 ERROR heat.openstack.common.rpc.amqp [-] Exception during message handling
2014-02-28 10:44:38.781 13043 TRACE heat.openstack.common.rpc.amqp Traceback (most recent call last):
2014-02-28 10:44:38.781 13043 TRACE heat.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/heat/openstack/common/rpc/amqp.py", line 461, in _process_data
2014-02-28 10:44:38.781 13043 TRACE heat.openstack.common.rpc.amqp **args)
2014-02-28 10:44:38.781 13043 TRACE heat.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/heat/openstack/common/rpc/dispatcher.py", line 172, in dispatch
2014-02-28 10:44:38.781 13043 TRACE heat.openstack.common.rpc.amqp result = getattr(proxyobj, method)(ctxt, **kwargs)
2014-02-28 10:44:38.781 13043 TRACE heat.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/heat/engine/service.py", line 60, in wrapped
2014-02-28 10:44:38.781 13043 TRACE heat.openstack.common.rpc.amqp return func(self, ctx, *args, **kwargs)
2014-02-28 10:44:38.781 13043 TRACE heat.openstack.common.rpc.amqp File "/usr/lib/python2.6/site-packages/heat/engine/service.py", line 260, in create_stack
2014-02-28 10:44:38.781 13043 TRACE heat.openstack.common.rpc.amqp raise exception.StackExists(stack_name=stack_name)
2014-02-28 10:44:38.781 13043 TRACE heat.openstack.common.rpc.amqp StackExists: The Stack (test-cluster-transient-vanilla) already exists.
2014-02-28 10:44:38.781 13043 TRACE heat.openstack.common.rpc.amqp
2014-02-28 10:44:38.781 13043 ERROR heat.openstack.common.rpc.common [-] Returning exception The Stack (test-cluster-transient-vanilla) already exists. to caller
2014-02-28 10:44:38.781 13043 ERROR heat.openstack.common.rpc.common [-] ['Traceback (most recent call last):\n', ' File "/usr/lib/python2.6/site-packages/heat/openstack/common/rpc/amqp.py", line 461, in _process_data\n **args)\n', ' File "/usr/lib/python2.6/site-packages/heat/openstack/common/rpc/dispatcher.py", line 172, in dispatch\n result = getattr(proxyobj, method)(ctxt, **kwargs)\n', ' File "/usr/lib/python2.6/site-packages/heat/engine/service.py", line 60, in wrapped\n return func(self, ctx, *args, **kwargs)\n', ' File "/usr/lib/python2.6/site-packages/heat/engine/service.py", line 260, in create_stack\n raise exception.StackExists(stack_name=stack_name)\n', 'StackExists: The Stack (test-cluster-transient-vanilla) already exists.\n']
2014-02-28 10:44:38.783 13087 ERROR root [-] Unexpected error occurred serving API: The Stack (test-cluster-transient-vanilla) already exists.

Changed in savanna:
milestone: none → next
importance: Undecided → Low
status: New → Confirmed
Changed in savanna:
assignee: nobody → Alexander Ignatov (aignatov)
milestone: next → icehouse-rc1
Changed in savanna:
importance: Low → Medium
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to savanna (master)

Fix proposed to branch: master
Review: https://review.openstack.org/77871

Changed in savanna:
status: Confirmed → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to savanna (master)

Reviewed: https://review.openstack.org/77871
Committed: https://git.openstack.org/cgit/openstack/savanna/commit/?id=1443071ee8640ffe781c691d2517ded041d2c490
Submitter: Jenkins
Branch: master

commit 1443071ee8640ffe781c691d2517ded041d2c490
Author: Alexander Ignatov <email address hidden>
Date: Tue Mar 4 16:41:08 2014 +0400

    Fixed bug with unxpected stack delete

    * Fixes issue when existing stack has been deleted unxpectedly if cluser which
      is being deleted has the same name
    * Issue has been resolved on validation level
    * Unit-tests were added

    Change-Id: Ifbfb1aebe78c2274f9d85f08992fb13d32a3e46b
    Closes-Bug: #1286082

Changed in savanna:
status: In Progress → Fix Committed
Changed in savanna:
milestone: icehouse-rc1 → icehouse-3
Thierry Carrez (ttx)
Changed in savanna:
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in sahara:
milestone: icehouse-3 → 2014.1
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.