This patch switches from per-user stacks to per-tenant stacks.
Change-Id: Ia7ac65033560bcff1db83d4d673945029e06ea6a
Signed-off-by: Ian Main <imain@redhat.com>
return IMPL.stack_get_all(context)
-def stack_get_by_user(context):
- return IMPL.stack_get_by_user(context)
+def stack_get_by_tenant(context):
+ return IMPL.stack_get_by_tenant(context)
def stack_create(context, values):
return IMPL.event_get_all(context)
-def event_get_all_by_user(context):
- return IMPL.event_get_all_by_user(context)
+def event_get_all_by_tenant(context):
+ return IMPL.event_get_all_by_tenant(context)
def event_get_all_by_stack(context, stack_id):
.filter_by(nova_instance=physical_resource_id)
.first())
if (result is not None and context is not None and
- result.stack.username != context.username):
+ result.stack.tenant != context.tenant):
return None
return result
result = model_query(context, models.Stack).\
filter_by(name=stack_name).first()
if (result is not None and context is not None and
- result.username != context.username):
+ result.tenant != context.tenant):
return None
return result
result = model_query(context, models.Stack).get(stack_id)
if (result is not None and context is not None and
- result.username != context.username):
+ result.tenant != context.tenant):
return None
return result
return results
-def stack_get_by_user(context):
+def stack_get_by_tenant(context):
results = model_query(context, models.Stack).\
filter_by(owner_id=None).\
- filter_by(username=context.username).all()
+ filter_by(tenant=context.tenant).all()
return results
return results
-def event_get_all_by_user(context):
+def event_get_all_by_tenant(context):
stacks = model_query(context, models.Stack).\
- filter_by(username=context.username).all()
+ filter_by(tenant=context.tenant).all()
results = []
for stack in stacks:
results.extend(model_query(context, models.Event).
--- /dev/null
+from sqlalchemy import *
+from migrate import *
+
+
+def upgrade(migrate_engine):
+ meta = MetaData(bind=migrate_engine)
+
+ stack = Table('stack', meta, autoload=True)
+
+ Column('tenant', String(length=256, convert_unicode=False,
+ assert_unicode=None,
+ unicode_error=None,
+ _warn_on_bytestring=False)).create(stack)
+
+
+def downgrade(migrate_engine):
+ meta = MetaData()
+ meta.bind = migrate_engine
+ stack = Table('stack', meta, autoload=True)
+ stack.c.tenant.drop()
raw_template = relationship(RawTemplate,
backref=backref('stack'))
username = Column(String)
+ tenant = Column(String)
status = Column('status', String)
status_reason = Column('status_reason', String)
parameters = Column('parameters', Json)
else:
raise AttributeError('Unknown stack name')
else:
- stacks = db_api.stack_get_by_user(context) or []
+ stacks = db_api.stack_get_by_tenant(context) or []
def format_stack_detail(s):
stack = parser.Stack.load(context, s.id)
events = db_api.event_get_all_by_stack(context, st.id)
else:
- events = db_api.event_get_all_by_user(context)
+ events = db_api.event_get_all_by_tenant(context)
return {'events': [api.format_event(e) for e in events]}
'owner_id': owner and owner.id,
'user_creds_id': new_creds.id,
'username': self.context.username,
+ 'tenant': self.context.tenant,
'status': self.state,
'status_reason': self.state_description,
'timeout': self.timeout_mins,
'templates'))
-def create_context(mocks, user='stacks_test_user', ctx=None):
+def create_context(mocks, user='stacks_test_user',
+ tenant='test_admin', ctx=None):
ctx = ctx or context.get_admin_context()
mocks.StubOutWithMock(ctx, 'username')
+ mocks.StubOutWithMock(ctx, 'tenant')
ctx.username = user
+ ctx.tenant = tenant
mocks.StubOutWithMock(auth, 'authenticate')
return ctx
self.assertNotEqual(stack.resources['WebServer'].ipaddress, '0.0.0.0')
def test_wordpress_single_instance_stack_delete(self):
- ctx = create_context(self.m, 'test_delete_user')
+ ctx = create_context(self.m, tenant='test_delete_tenant')
stack = get_wordpress_stack('test_stack', ctx)
setup_mocks(self.m, stack)
self.m.ReplayAll()
def setUpClass(cls):
m = mox.Mox()
cls.username = 'stack_manager_test_user'
- ctx = create_context(m, cls.username)
+ cls.tenant = 'stack_manager_test_tenant'
+ ctx = create_context(m, cls.username, cls.tenant)
cls.stack_name = 'manager_test_stack'
stack = get_wordpress_stack(cls.stack_name, ctx)
def tearDownClass(cls):
cls = cls
m = mox.Mox()
- create_context(m, cls.username, ctx=cls.stack.context)
+ create_context(m, cls.username, cls.tenant, ctx=cls.stack.context)
setup_mocks(m, cls.stack)
m.ReplayAll()
def setUp(self):
self.m = mox.Mox()
- self.ctx = create_context(self.m, self.username)
+ self.ctx = create_context(self.m, self.username, self.tenant)
auth.authenticate(self.ctx).AndReturn(True)
setup_mocks(self.m, self.stack)
self.m.ReplayAll()
def test_stack_describe_all_empty(self):
self.tearDown()
- self.username = 'stack_describe_all_empty_user'
+ self.tenant = 'stack_describe_all_empty_tenant'
self.setUp()
sl = self.man.show_stack(self.ctx, None, {})