Skip to content

Commit

Permalink
Revert "Implement stack-locking for multi-engine support"
Browse files Browse the repository at this point in the history
This is a short term backout until it gets fixed.

This reverts commit c30530f.
Closes-bug: #1250797

Change-Id: Ide1dc4a9d1469dee033e8bc08d8ab4da96f79fc0
  • Loading branch information
asalkeld committed Nov 13, 2013
1 parent c30530f commit 4ed487b
Show file tree
Hide file tree
Showing 12 changed files with 0 additions and 357 deletions.
5 changes: 0 additions & 5 deletions etc/heat/heat.conf.sample
Expand Up @@ -10,11 +10,6 @@
# Driver to use for controlling instances (string value)
#instance_driver=heat.engine.nova

# Engine identifier for multi-engine distributed lock. If
# this is set to "generate_uuid", a UUID will be generated.
# (string value)
#engine_id=generate_uuid

# List of directories to search for Plugins (list value)
#plugin_dirs=/usr/lib64/heat,/usr/lib/heat

Expand Down
13 changes: 0 additions & 13 deletions heat/api/aws/exception.py
Expand Up @@ -247,16 +247,6 @@ class HeatAPINotImplementedError(HeatAPIException):
err_type = "Server"


class HeatActionInProgressError(HeatAPIException):
'''
Cannot perform action on stack in its current state
'''
code = 400
title = 'InvalidAction'
explanation = ("Cannot perform action on stack while other actions are " +
"in progress")


def map_remote_error(ex):
"""
Map rpc_common.RemoteError exceptions returned by the engine
Expand All @@ -281,7 +271,6 @@ def map_remote_error(ex):
)
denied_errors = ('Forbidden', 'NotAuthorized')
already_exists_errors = ('StackExists')
invalid_action_errors = ('ActionInProgress',)

ex_type = ex.__class__.__name__

Expand All @@ -294,8 +283,6 @@ def map_remote_error(ex):
return HeatAccessDeniedError(detail=str(ex))
elif ex_type in already_exists_errors:
return AlreadyExistsError(detail=str(ex))
elif ex_type in invalid_action_errors:
return HeatActionInProgressError(detail=str(ex))
else:
# Map everything else to internal server error for now
return HeatInternalFailureError(detail=str(ex))
1 change: 0 additions & 1 deletion heat/api/middleware/fault.py
Expand Up @@ -58,7 +58,6 @@ class FaultWrapper(wsgi.Middleware):

error_map = {
'AttributeError': webob.exc.HTTPBadRequest,
'ActionInProgress': webob.exc.HTTPConflict,
'ValueError': webob.exc.HTTPBadRequest,
'StackNotFound': webob.exc.HTTPNotFound,
'ResourceNotFound': webob.exc.HTTPNotFound,
Expand Down
5 changes: 0 additions & 5 deletions heat/common/config.py
Expand Up @@ -75,11 +75,6 @@
cfg.StrOpt('instance_driver',
default='heat.engine.nova',
help='Driver to use for controlling instances'),
cfg.StrOpt('engine_id',
default="generate_uuid",
help=_('Engine identifier for multi-engine distributed lock.'
' If this is set to "generate_uuid", a UUID will be'
' generated.')),
cfg.ListOpt('plugin_dirs',
default=['/usr/lib64/heat', '/usr/lib/heat'],
help='List of directories to search for Plugins'),
Expand Down
5 changes: 0 additions & 5 deletions heat/common/exception.py
Expand Up @@ -334,8 +334,3 @@ class RequestLimitExceeded(HeatException):

class StackResourceLimitExceeded(HeatException):
msg_fmt = _('Maximum resources per stack exceeded.')


class ActionInProgress(HeatException):
msg_fmt = _("Stack %(stack_name)s already has an action (%(action)s) "
"in progress.")
20 changes: 0 additions & 20 deletions heat/db/api.py
Expand Up @@ -139,22 +139,6 @@ def stack_delete(context, stack_id):
return IMPL.stack_delete(context, stack_id)


def stack_lock_get(context, stack_id):
return IMPL.stack_lock_get(context, stack_id)


def stack_lock_create(context, stack_id, engine_id):
return IMPL.stack_lock_create(context, stack_id, engine_id)


def stack_lock_steal(context, stack_id, engine_id):
return IMPL.stack_lock_steal(context, stack_id, engine_id)


def stack_lock_release(context, stack_id):
return IMPL.stack_lock_release(context, stack_id)


def user_creds_create(context):
return IMPL.user_creds_create(context)

Expand Down Expand Up @@ -231,7 +215,3 @@ def db_sync(version=None):
def db_version():
"""Display the current database version."""
return IMPL.db_version()


def current_timestamp():
return IMPL.current_timestamp()
30 changes: 0 additions & 30 deletions heat/db/sqlalchemy/api.py
Expand Up @@ -297,28 +297,6 @@ def stack_delete(context, stack_id):
session.flush()


def stack_lock_get(context, stack_id):
return model_query(context, models.StackLock).get(stack_id)


def stack_lock_create(context, stack_id, engine_id):
stack_lock = models.StackLock()
stack_lock.update({"stack_id": stack_id,
"engine_id": engine_id})
stack_lock.save(_session(context))


def stack_lock_steal(context, stack_id, engine_id):
stack_lock = stack_lock_get(context, stack_id)
stack_lock.update({"engine_id": engine_id})
stack_lock.save(_session(context))


def stack_lock_release(context, stack_id):
stack_lock = stack_lock_get(context, stack_id)
stack_lock.delete()


def user_creds_create(context):
values = context.to_dict()
user_creds_ref = models.UserCreds()
Expand Down Expand Up @@ -543,11 +521,3 @@ def db_sync(version=None):
def db_version():
"""Display the current database version."""
return migration.db_version()


def current_timestamp():
"""Return a datetime object with the current database time."""
session = get_session()
query = sqlalchemy.select([sqlalchemy.func.current_timestamp()])
result = session.execute(query).fetchall()
return result[0][0]
40 changes: 0 additions & 40 deletions heat/db/sqlalchemy/migrate_repo/versions/029_stack_lock.py

This file was deleted.

11 changes: 0 additions & 11 deletions heat/db/sqlalchemy/models.py
Expand Up @@ -143,17 +143,6 @@ class Stack(BASE, HeatBase, SoftDelete):
disable_rollback = sqlalchemy.Column(sqlalchemy.Boolean, nullable=False)


class StackLock(BASE, HeatBase):
"""Store stack locks for deployments with multiple-engines."""

__tablename__ = 'stack_lock'

stack_id = sqlalchemy.Column(sqlalchemy.String,
sqlalchemy.ForeignKey('stack.id'),
primary_key=True)
engine_id = sqlalchemy.Column(sqlalchemy.String)


class UserCreds(BASE, HeatBase):
"""
Represents user credentials and mirrors the 'context'
Expand Down
89 changes: 0 additions & 89 deletions heat/engine/stack_lock.py

This file was deleted.

45 changes: 0 additions & 45 deletions heat/tests/test_sqlalchemy_api.py
Expand Up @@ -17,7 +17,6 @@
from json import loads
from json import dumps
import mox
from testtools import matchers


from heat.db.sqlalchemy import api as db_api
Expand Down Expand Up @@ -419,10 +418,6 @@ def create_resource_data(ctx, resource, **kwargs):
return db_api.resource_data_set(resource, **values)


def create_stack_lock(ctx, stack_id, engine_id):
return db_api.stack_lock_create(ctx, stack_id, engine_id)


def create_event(ctx, **kwargs):
values = {
'stack_id': 'test_stack_id',
Expand Down Expand Up @@ -805,34 +800,6 @@ def test_resource_get_all_by_stack(self):
self.ctx, self.stack2.id)


class DBAPIStackLockTest(HeatTestCase):
def setUp(self):
super(DBAPIStackLockTest, self).setUp()
self.ctx = utils.dummy_context()
utils.setup_dummy_db()
utils.reset_dummy_db()
self.template = create_raw_template(self.ctx)
self.user_creds = create_user_creds(self.ctx)
self.stack = create_stack(self.ctx, self.template, self.user_creds)

def test_stack_lock_create_get(self):
create_stack_lock(self.ctx, self.stack.id, UUID1)
lock = db_api.stack_lock_get(self.ctx, self.stack.id)
self.assertEqual(UUID1, lock['engine_id'])

def test_stack_lock_steal(self):
create_stack_lock(self.ctx, self.stack.id, UUID1)
db_api.stack_lock_steal(self.ctx, self.stack.id, UUID2)
lock = db_api.stack_lock_get(self.ctx, self.stack.id)
self.assertEqual(UUID2, lock['engine_id'])

def test_stack_lock_release(self):
create_stack_lock(self.ctx, self.stack.id, UUID1)
db_api.stack_lock_release(self.ctx, self.stack.id)
lock = db_api.stack_lock_get(self.ctx, self.stack.id)
self.assertIsNone(lock)


class DBAPIResourceDataTest(HeatTestCase):
def setUp(self):
super(DBAPIResourceDataTest, self).setUp()
Expand Down Expand Up @@ -1083,15 +1050,3 @@ def test_watch_data_get_all(self):

data = [wd.data for wd in watch_data]
[self.assertIn(val['data'], data) for val in values]


class DBAPIUtilTest(HeatTestCase):
def setUp(self):
super(DBAPIUtilTest, self).setUp()
self.ctx = utils.dummy_context()
utils.setup_dummy_db()
utils.reset_dummy_db()

def test_current_timestamp(self):
current_timestamp = db_api.current_timestamp()
self.assertThat(current_timestamp, matchers.IsInstance(datetime))

0 comments on commit 4ed487b

Please sign in to comment.