Tenant to project migration for RequestContext

Change-Id: I98dfc0b5883c74d67b430eaa8348c11d74ce1518
This commit is contained in:
zhurong
2022-03-29 13:55:58 +00:00
parent 3e7815c4db
commit 0f652e573e
41 changed files with 95 additions and 95 deletions

View File

@@ -1,7 +1,6 @@
- project:
templates:
- openstack-cover-jobs
- openstack-lower-constraints-jobs
- openstack-python3-yoga-jobs
- publish-openstack-docs-pti
- release-notes-jobs-python3

View File

@@ -119,14 +119,14 @@ class ContextHook(hooks.PecanHook):
ctx = context.RequestContext(auth_token=recv_auth_token,
auth_token_info=auth_token_info,
user=user_id,
tenant=project_id,
project_id=project_id,
domain=domain,
user_domain=user_domain_id,
project_domain=project_domain_id,
user_name=user_name,
roles=roles,
password=password,
tenant_name=tenant_name)
project_name=tenant_name)
state.request.security_context = ctx
def _get_roles(self, req):

View File

@@ -77,7 +77,7 @@ class AppHandler(handler.Handler):
db_obj = objects.registry.App()
db_obj.id = uuidutils.generate_uuid()
db_obj.user_id = self.context.user
db_obj.project_id = self.context.tenant
db_obj.project_id = self.context.project_id
db_obj.deleted = False
# create a delegation trust_id\token, if required
@@ -108,8 +108,8 @@ class AppHandler(handler.Handler):
raw_content_json['password'] = decoded_password
raw_content_json['auth_url'] = self.context.auth_url
raw_content_json['tenant'] = self.context.tenant
raw_content_json['tenant_name'] = self.context.tenant_name
raw_content_json['tenant'] = self.context.project_id
raw_content_json['tenant_name'] = self.context.project_name
db_obj.raw_content = json.dumps(raw_content_json)
@@ -128,7 +128,7 @@ class AppHandler(handler.Handler):
try:
self.context = keystone_utils.create_delegation_context(
app_obj, self.context)
self.context.tenant = app_obj.project_id
self.context.project_id = app_obj.project_id
self.context.user = app_obj.user_id
self.context.user_name = app_obj.trust_user
except exception.AuthorizationFailure as auth_ex:

View File

@@ -113,7 +113,7 @@ class AssemblyHandler(handler.Handler):
db_obj.update(data)
db_obj.uuid = uuidutils.generate_uuid()
db_obj.user_id = self.context.user
db_obj.project_id = self.context.tenant
db_obj.project_id = self.context.project_id
db_obj.username = self.context.user_name
db_obj.status = ASSEMBLY_STATES.QUEUED
@@ -143,7 +143,7 @@ class AssemblyHandler(handler.Handler):
image.image_format = CONF.api.image_format
image.uuid = uuidutils.generate_uuid()
image.user_id = self.context.user
image.project_id = self.context.tenant
image.project_id = self.context.project_id
image.status = IMAGE_STATES.QUEUED
image.create(self.context)
test_cmd = artifact.get('unittest_cmd')

View File

@@ -42,7 +42,7 @@ class ComponentHandler(handler.Handler):
db_obj.uuid = uuidutils.generate_uuid()
db_obj.update(data)
db_obj.user_id = self.context.user
db_obj.project_id = self.context.tenant
db_obj.project_id = self.context.project_id
db_obj.create(self.context)
return db_obj

View File

@@ -40,7 +40,7 @@ class ExtensionHandler(handler.Handler):
db_obj.update(data)
db_obj.uuid = uuidutils.generate_uuid()
db_obj.user_id = self.context.user
db_obj.project_id = self.context.tenant
db_obj.project_id = self.context.project_id
db_obj.create(self.context)
return db_obj

View File

@@ -50,7 +50,7 @@ class InfrastructureStackHandler(handler.Handler):
db_obj.update(data)
db_obj.uuid = uuidutils.generate_uuid()
db_obj.user_id = self.context.user
db_obj.project_id = self.context.tenant
db_obj.project_id = self.context.project_id
self._create_zaqar_queue(db_obj.uuid)
db_obj.heat_stack_id = self._deploy_infra(data.get('image_id'))

View File

@@ -112,7 +112,7 @@ class LanguagePackHandler(handler.Handler):
db_obj.update(data)
db_obj.uuid = uuidutils.generate_uuid()
db_obj.user_id = self.context.user
db_obj.project_id = self.context.tenant
db_obj.project_id = self.context.project_id
db_obj.status = image.States.QUEUED
db_obj.artifact_type = 'language_pack'
if lp_metadata:

View File

@@ -198,7 +198,7 @@ class PipelineHandler(handler.Handler):
db_obj.update(data)
db_obj.uuid = uuidutils.generate_uuid()
db_obj.user_id = self.context.user
db_obj.project_id = self.context.tenant
db_obj.project_id = self.context.project_id
db_obj.trigger_id = uuidutils.generate_uuid()
# create the trust_id and store it.

View File

@@ -101,7 +101,7 @@ class PlanHandler(handler.Handler):
db_obj.name = data['name']
db_obj.uuid = uuidutils.generate_uuid()
db_obj.user_id = self.context.user
db_obj.project_id = self.context.tenant
db_obj.project_id = self.context.project_id
db_obj.trigger_id = uuidutils.generate_uuid()
# create a delegation trust_id\token, if required
@@ -206,7 +206,7 @@ class PlanHandler(handler.Handler):
try:
self.context = keystone_utils.create_delegation_context(
plan_obj, self.context)
self.context.tenant = plan_obj.project_id
self.context.project_id = plan_obj.project_id
self.context.user = plan_obj.user_id
self.context.user_name = plan_obj.username

View File

@@ -40,7 +40,7 @@ class SensorHandler(handler.Handler):
db_obj.update(data)
db_obj.uuid = uuidutils.generate_uuid()
db_obj.user_id = self.context.user
db_obj.project_id = self.context.tenant
db_obj.project_id = self.context.project_id
db_obj.create(self.context)
return db_obj

View File

@@ -42,7 +42,7 @@ class ServiceHandler(handler.Handler):
db_obj.update(data)
db_obj.uuid = uuidutils.generate_uuid()
db_obj.user_id = self.context.user
db_obj.project_id = self.context.tenant
db_obj.project_id = self.context.project_id
db_obj.create(self.context)
return db_obj

View File

@@ -112,7 +112,7 @@ class WorkflowHandler(handler.Handler):
db_obj = objects.registry.Workflow()
db_obj.id = uuidutils.generate_uuid()
db_obj.user_id = self.context.user
db_obj.project_id = self.context.tenant
db_obj.project_id = self.context.project_id
db_obj.deleted = False
db_obj.app_id = data['app_id']
@@ -176,7 +176,7 @@ class WorkflowHandler(handler.Handler):
image.image_format = CONF.api.image_format
image.uuid = uuidutils.generate_uuid()
image.user_id = self.context.user
image.project_id = self.context.tenant
image.project_id = self.context.project_id
image.status = IMAGE_STATES.QUEUED
image.create(self.context)
test_cmd = wf_obj.config['test_cmd']
@@ -260,14 +260,14 @@ class PlanAssemblyAdapter(object):
plan = objects.registry.Plan()
plan.uuid = self.app_obj.id
plan.user_id = self.context.user
plan.project_id = self.context.tenant
plan.project_id = self.context.project_id
plan.name = self.app_obj.name
plan.create(self.context)
assembly = objects.registry.Assembly()
assembly.plan_id = plan.id
assembly.user_id = self.context.user
assembly.project_id = self.context.tenant
assembly.project_id = self.context.project_id
assembly.name = self.app_obj.name
assembly.uuid = uuidutils.generate_uuid()

View File

@@ -33,14 +33,14 @@ CONF.register_opts(AUTH_OPTS)
class RequestContext(context.RequestContext):
def __init__(self, auth_token=None, user=None, tenant=None, domain=None,
user_domain=None, project_domain=None, is_admin=False,
read_only=False, request_id=None, user_name=None, roles=None,
auth_url=None, trust_id=None, auth_token_info=None,
password=None, tenant_name=None):
def __init__(self, auth_token=None, user=None, project_id=None,
domain=None, user_domain=None, project_domain=None,
is_admin=False, read_only=False, request_id=None,
user_name=None, roles=None, auth_url=None, trust_id=None,
auth_token_info=None, password=None, project_name=None):
super(RequestContext, self).__init__(auth_token=auth_token,
user=user,
tenant=tenant,
project_id=project_id,
domain=domain,
user_domain=user_domain,
project_domain=project_domain,
@@ -54,9 +54,9 @@ class RequestContext(context.RequestContext):
self.trust_id = trust_id
self.auth_token_info = auth_token_info
self.password = password
self.tenant_name = tenant_name
self.project_name = project_name
global_admin_id = CONF.get('solum_admin_tenant_id')
if global_admin_id and global_admin_id == tenant:
if global_admin_id and global_admin_id == project_id:
self.is_admin = True
def to_dict(self):

View File

@@ -154,7 +154,7 @@ class KeystoneClientV3(object):
cfg.CONF, 'keystone_authtoken', **kwargs)
elif self.context.auth_token is not None:
kwargs['token'] = self.context.auth_token
kwargs['project_id'] = self.context.tenant
kwargs['project_id'] = self.context.project_id
auth = identity.Token(
auth_url=kwargs['auth_url'],
token=kwargs['token'],
@@ -177,7 +177,7 @@ class KeystoneClientV3(object):
self.context.auth_token = client.auth_ref.auth_token
self.context.auth_url = self.endpoint
self.context.user = client.auth_ref.user_id
self.context.tenant = client.auth_ref.project_id
self.context.project_id = client.auth_ref.project_id
self.context.user_name = client.auth_ref.username
return client

View File

@@ -17,7 +17,7 @@
# will be considered support-only data. This list may be too restrictive and
# can be relaxed more as needed. This is only used if import_context() is
# called.
_TRACE_USER_KEYS = ["user", "tenant"]
_TRACE_USER_KEYS = ["user", "project_id"]
_TRACE_CONTEXT_IGNORE = ["auth_token", "trust_id"]

View File

@@ -67,7 +67,7 @@ class Component(sql.Base, abstract.Component):
comp.description = description
comp.assembly_id = assem.id
comp.user_id = ctxt.user
comp.project_id = ctxt.tenant
comp.project_id = ctxt.project_id
comp.resource_uri = resource_uri
comp.heat_stack_id = stack_id
comp.create(ctxt)

View File

@@ -59,7 +59,7 @@ class Image(sql.Base, abstract.Image):
try:
session = Image.get_session()
oper_result = session.query(cls).filter_by(
project_id=context.tenant, status='READY')
project_id=context.project_id, status='READY')
cnt = oper_result.count()
return cnt
except exc.NoResultFound:
@@ -75,8 +75,9 @@ class Image(sql.Base, abstract.Image):
result = session.query(cls).filter_by(
artifact_type='language_pack', uuid=name_or_uuid)
if include_operators_lp is True:
project_id = context.project_id
result = result.filter(
Image.project_id.in_([operator_id, context.tenant]))
Image.project_id.in_([operator_id, project_id]))
return result.one()
else:
return sql.filter_by_project(context, result).one()
@@ -94,7 +95,7 @@ class Image(sql.Base, abstract.Image):
artifact_type='language_pack', name=name)
if include_operators_lp is True:
result = result.filter(
Image.project_id.in_([operator_id, context.tenant]))
Image.project_id.in_([operator_id, context.project_id]))
return result.one()
else:
return sql.filter_by_project(context, result).one()

View File

@@ -78,7 +78,7 @@ def filter_by_project(context, query):
if context.is_admin:
return query
try:
query = query.filter_by(project_id=context.tenant)
query = query.filter_by(project_id=context.project_id)
except sqla_exc.InvalidRequestError:
# No project_id column.
pass

View File

@@ -45,6 +45,6 @@ class UserlogList(abstract.UserlogList):
@classmethod
def get_all_by_id(cls, context, resource_uuid):
session = sql.Base.get_session()
logs = session.query(Userlog).filter_by(project_id=context.tenant)
logs = session.query(Userlog).filter_by(project_id=context.project_id)
logs = logs.filter_by(resource_uuid=resource_uuid)
return logs.order_by(Userlog.created_at).all()

View File

@@ -58,7 +58,7 @@ class TestAuth(base.BaseTestCase):
self.assertIsInstance(ctx, context.RequestContext)
self.assertEqual(ctx.auth_token,
fakes.fakeAuthTokenHeaders['X-Auth-Token'])
self.assertEqual(ctx.tenant,
self.assertEqual(ctx.project_id,
fakes.fakeAuthTokenHeaders['X-Project-Id'])
self.assertEqual(ctx.user,
fakes.fakeAuthTokenHeaders['X-User-Id'])

View File

@@ -26,7 +26,7 @@ class TestContext(base.BaseTestCase):
def test_context_to_dict(self):
ctx = context.RequestContext(auth_token='_token_',
user='_user_',
tenant='_tenant_',
project_id='_project_id_',
domain='_domain_',
user_domain='_user_domain_',
project_domain='_project_domain_',
@@ -41,7 +41,7 @@ class TestContext(base.BaseTestCase):
ctx_dict = ctx.to_dict()
self.assertEqual(ctx_dict['auth_token'], '_token_')
self.assertEqual(ctx_dict['user'], '_user_')
self.assertEqual(ctx_dict['tenant'], '_tenant_')
self.assertEqual(ctx_dict['project_id'], '_project_id_')
self.assertEqual(ctx_dict['domain'], '_domain_')
self.assertEqual(ctx_dict['user_domain'], '_user_domain_')
self.assertEqual(ctx_dict['project_domain'], '_project_domain_')
@@ -60,7 +60,7 @@ class TestContext(base.BaseTestCase):
self.CONF.config(solum_admin_tenant_id='fake_tenant_id')
ctx = context.RequestContext(auth_token='_token_',
user='_user_',
tenant='fake_tenant_id',
project_id='fake_tenant_id',
domain='_domain_',
user_domain='_user_domain_',
project_domain='_project_domain_',
@@ -75,7 +75,7 @@ class TestContext(base.BaseTestCase):
ctx_dict = ctx.to_dict()
self.assertEqual(ctx_dict['auth_token'], '_token_')
self.assertEqual(ctx_dict['user'], '_user_')
self.assertEqual(ctx_dict['tenant'], 'fake_tenant_id')
self.assertEqual(ctx_dict['project_id'], 'fake_tenant_id')
self.assertEqual(ctx_dict['domain'], '_domain_')
self.assertEqual(ctx_dict['user_domain'], '_user_domain_')
self.assertEqual(ctx_dict['project_domain'], '_project_domain_')
@@ -93,7 +93,7 @@ class TestContext(base.BaseTestCase):
self.CONF.config(solum_admin_tenant_id='fake_tenant_id')
ctx = context.RequestContext(auth_token='_token_',
user='_user_',
tenant='_tenant_id_',
project_id='_tenant_id_',
domain='_domain_',
user_domain='_user_domain_',
project_domain='_project_domain_',
@@ -108,7 +108,7 @@ class TestContext(base.BaseTestCase):
ctx_dict = ctx.to_dict()
self.assertEqual(ctx_dict['auth_token'], '_token_')
self.assertEqual(ctx_dict['user'], '_user_')
self.assertEqual(ctx_dict['tenant'], '_tenant_id_')
self.assertEqual(ctx_dict['project_id'], '_tenant_id_')
self.assertEqual(ctx_dict['domain'], '_domain_')
self.assertEqual(ctx_dict['user_domain'], '_user_domain_')
self.assertEqual(ctx_dict['project_domain'], '_project_domain_')

View File

@@ -47,7 +47,7 @@ class KeystoneClientTest(base.BaseTestCase):
"""Test creating the client, token auth."""
# TODO(zhurong): should unskip the test
self.skipTest('Skipping this test for bug #1686560')
self.ctx.tenant = None
self.ctx.project_id = None
self.ctx.trust_id = None
solum_ks_client = solum_keystoneclient.KeystoneClientV3(self.ctx)
solum_ks_client.client
@@ -70,7 +70,7 @@ class KeystoneClientTest(base.BaseTestCase):
"""Test creating the client, token auth."""
# TODO(zhurong): should unskip the test
self.skipTest('Skipping this test for bug #1686560')
self.ctx.tenant = 'abcd1234'
self.ctx.project_id = 'abcd1234'
self.ctx.trust_id = None
self.ctx.auth_token_info = {'access': {'token': {'id': 'placeholder'}}}
@@ -86,7 +86,7 @@ class KeystoneClientTest(base.BaseTestCase):
def test_init_trust_token_token(self, mock_ks):
# TODO(zhurong): should unskip the test
self.skipTest('Skipping this test for bug #1686560')
self.ctx.tenant = None
self.ctx.project_id = None
self.ctx.trust_id = None
self.ctx.auth_token_info = {'token': {}}
@@ -101,7 +101,7 @@ class KeystoneClientTest(base.BaseTestCase):
def test_init_trust_token_none(self, mock_ks):
# TODO(zhurong): should unskip the test
self.skipTest('Skipping this test for bug #1686560')
self.ctx.tenant = None
self.ctx.project_id = None
self.ctx.trust_id = None
self.ctx.auth_token_info = {'not_this': 'urg'}

View File

@@ -22,7 +22,7 @@ solum.TLS.trace = trace_data.TraceData()
# Just putting highly recognizable values in context
CONTEXT = context.RequestContext(auth_token='_auth_token_',
user='_user_',
tenant='_tenant_',
project_id='_project_id_',
domain='_domain_',
user_domain='_user_domain_',
project_domain='_project_domain_',
@@ -54,7 +54,7 @@ class TestTraceData(base.BaseTestCase):
solum.TLS.trace.import_context(CONTEXT)
self.assertEqual(
solum.TLS.trace._user_data,
{'user': '_user_', 'tenant': '_tenant_'})
{'user': '_user_', 'project_id': '_project_id_'})
self.assertEqual(({
'auth_token_info': '_auth_token_info_',
'auth_url': '_auth_url_',
@@ -62,7 +62,7 @@ class TestTraceData(base.BaseTestCase):
'global_request_id': None,
'is_admin': False,
'is_admin_project': True,
'project': '_tenant_',
'project': '_project_id_',
'project_domain': '_project_domain_',
'read_only': False,
'resource_uuid': None,
@@ -70,7 +70,7 @@ class TestTraceData(base.BaseTestCase):
'show_deleted': False,
'system_scope': None,
'user_domain': '_user_domain_',
'user_identity': u'_user_ _tenant_ _domain_ '
'user_identity': u'_user_ _project_id_ _domain_ '
'_user_domain_ _project_domain_',
'user_name': '_user_name_'}), solum.TLS.trace._support_data)

View File

@@ -24,7 +24,7 @@ class TestApp(base.BaseTestCase):
self.db = self.useFixture(utils.Database())
self.ctx = utils.dummy_context()
self.data = [{'id': 'test-uuid-555',
'project_id': self.ctx.tenant,
'project_id': self.ctx.project_id,
'user_id': 'fred',
'name': 'testapp',
'description': 'fake app for testing',

View File

@@ -30,7 +30,7 @@ class TestAssembly(base.BaseTestCase):
self.db = self.useFixture(utils.Database())
self.ctx = utils.dummy_context()
self.data = [{'project_id': self.ctx.tenant,
self.data = [{'project_id': self.ctx.project_id,
'uuid': 'ce43e347f0b0422825245b3e5f140a81cef6e65b',
'user_id': 'fred',
'name': 'assembly1',

View File

@@ -26,7 +26,7 @@ class TestComponent(base.BaseTestCase):
self.db = self.useFixture(utils.Database())
self.ctx = utils.dummy_context()
self.data_assembly = [
{'project_id': self.ctx.tenant,
{'project_id': self.ctx.project_id,
'uuid': 'ce43e347f0b0422825245b3e5f140a81cef6e65b',
'user_id': 'fred',
'name': 'assembly1',
@@ -39,7 +39,7 @@ class TestComponent(base.BaseTestCase):
utils.create_models_from_data(assembly.Assembly, self.data_assembly,
self.ctx)
self.data = [{'project_id': self.ctx.tenant,
self.data = [{'project_id': self.ctx.project_id,
'user_id': 'fred',
'uuid': 'ce43e347f0b0422825245b3e5f140a81cef6e65b',
'name': 'component_no_assembly',
@@ -48,7 +48,7 @@ class TestComponent(base.BaseTestCase):
'parent_component_id': '87d98s',
'tags': 'component tags',
'heat_stack_id': '4c712026-dcd5-4664-90b8-0915494c1332'},
{'project_id': self.ctx.tenant,
{'project_id': self.ctx.project_id,
'user_id': 'fred',
'uuid': '70763488-72e0-44ac-a612-e94bf5488555',
'name': 'component_assembly',

View File

@@ -23,7 +23,7 @@ class TestExtension(base.BaseTestCase):
self.ctx = utils.dummy_context()
self.data = [{'uuid': 'test-uuid-42',
'project_id': self.ctx.tenant,
'project_id': self.ctx.project_id,
'user_id': '55f41cf46df74320b9486a35f5d28a11',
'name': 'logstash',
'version': '2.13',

View File

@@ -28,7 +28,7 @@ class TestImage(base.BaseTestCase):
super(TestImage, self).setUp()
self.db = self.useFixture(utils.Database())
self.ctx = utils.dummy_context()
self.data = [{'project_id': self.ctx.tenant,
self.data = [{'project_id': self.ctx.project_id,
'user_id': 'fred',
'uuid': '25f7fa50-b980-4452-a550-dea5fd98ffc2',
'name': 'image1',

View File

@@ -22,7 +22,7 @@ class TestInfrastructureStack(base.BaseTestCase):
self.db = self.useFixture(utils.Database())
self.ctx = utils.dummy_context()
self.data = [{'project_id': self.ctx.tenant,
self.data = [{'project_id': self.ctx.project_id,
'user_id': 'fred',
'uuid': 'ceda0408-c93d-4772-abb2-18f65189d440',
'name': 'o1',

View File

@@ -22,7 +22,7 @@ class TestOperation(base.BaseTestCase):
self.db = self.useFixture(utils.Database())
self.ctx = utils.dummy_context()
self.data = [{'project_id': self.ctx.tenant,
self.data = [{'project_id': self.ctx.project_id,
'user_id': 'fred',
'uuid': 'ce43e347f0b0422825245b3e5f140a81cef6e65b',
'name': 'o1',

View File

@@ -25,7 +25,7 @@ class TestPipeline(base.BaseTestCase):
self.db = self.useFixture(utils.Database())
self.ctx = utils.dummy_context()
self.data = [{'project_id': self.ctx.tenant,
self.data = [{'project_id': self.ctx.project_id,
'uuid': 'ce43e347f0b0422825245b3e5f140a81cef6e65b',
'user_id': 'fred',
'name': 'pipeline1',

View File

@@ -28,7 +28,7 @@ class TestPlan(base.BaseTestCase):
{'href': 'http://github.com/some/project'}}]}
self.data = [{'uuid': 'test-uuid-123',
'name': 'fakeplan',
'project_id': self.ctx.tenant,
'project_id': self.ctx.project_id,
'user_id': 'fred',
'description': 'some description',
'raw_content': raw_content}]

View File

@@ -23,7 +23,7 @@ class TestSensor(base.BaseTestCase):
self.ctx = utils.dummy_context()
self.data = [{'uuid': 'test-uuid-34dsxD',
'project_id': self.ctx.tenant,
'project_id': self.ctx.project_id,
'user_id': '55f41cf46df74320b9486a35f5d28a11',
'name': 'hb',
'description': 'A heartbeat sensor',

View File

@@ -32,7 +32,7 @@ class TestUserlog(base.BaseTestCase):
'resource_type': 'app',
'strategy': 'local',
'location': '/dev/null',
'project_id': self.ctx.tenant,
'project_id': self.ctx.project_id,
'strategy_info': '{}',
}]
utils.create_models_from_data(userlog.Userlog, self.data, self.ctx)

View File

@@ -23,10 +23,10 @@ class TestWorkflow(base.BaseTestCase):
super(TestWorkflow, self).setUp()
self.db = self.useFixture(utils.Database())
self.ctx = utils.dummy_context()
self.data = [self._get_data(self.ctx.tenant)]
self.data = [self._get_data(self.ctx.project_id)]
utils.create_models_from_data(workflow.Workflow, self.data, self.ctx)
def _get_data(self, tenant_id):
def _get_data(self, project_id):
source = dict()
source['repository'] = "https://github.com"
@@ -40,7 +40,7 @@ class TestWorkflow(base.BaseTestCase):
jsondata['source'] = source
jsondata['config'] = workflow
jsondata['actions'] = ["test", "build", "deploy"]
jsondata['project_id'] = tenant_id
jsondata['project_id'] = project_id
jsondata['user_id'] = 'fred'
jsondata['id'] = '123'
return jsondata

View File

@@ -28,7 +28,7 @@ CONF = cfg.CONF
def dummy_context(user='test_username', tenant_id='fake_project_id',
user_name='usr_name'):
return context.RequestContext(user=user,
tenant=tenant_id,
project_id=tenant_id,
user_name=user_name)

View File

@@ -179,7 +179,7 @@ class HandlerTest(base.BaseTestCase):
script = os.path.join(proj_dir, 'contrib/lp-cedarish/docker/build-app')
mock_popen.assert_called_once_with([script, 'git://example.com/foo',
git_info['commit_sha'],
'new_app', self.ctx.tenant,
'new_app', self.ctx.project_id,
self.expected_img_id,
self.img_name],
env=test_env,
@@ -246,7 +246,7 @@ class HandlerTest(base.BaseTestCase):
expected_tag = fake_image.docker_image_name
mock_popen.assert_called_once_with([script, 'git://example.com/foo',
git_info['commit_sha'],
'new_app', self.ctx.tenant,
'new_app', self.ctx.project_id,
expected_loc, expected_tag],
env=test_env,
stdout=-1)
@@ -308,7 +308,7 @@ class HandlerTest(base.BaseTestCase):
script = os.path.join(proj_dir, 'contrib/lp-cedarish/docker/build-app')
mock_popen.assert_called_once_with([script, 'git://example.com/foo',
git_info['commit_sha'],
'new_app', self.ctx.tenant,
'new_app', self.ctx.project_id,
self.expected_img_id,
self.img_name],
env=test_env, stdout=-1)
@@ -383,7 +383,7 @@ class HandlerTest(base.BaseTestCase):
# self.assertTrue(mock_shelve.call().__setitem__.called)
mock_popen.assert_called_once_with([script, 'git://example.com/foo',
git_info['commit_sha'],
'new_app', self.ctx.tenant,
'new_app', self.ctx.project_id,
self.expected_img_id,
self.img_name],
env=test_env, stdout=-1)
@@ -437,7 +437,7 @@ class HandlerTest(base.BaseTestCase):
script = os.path.join(proj_dir, 'contrib/lp-cedarish/docker/build-app')
mock_popen.assert_called_once_with([script, 'git://example.com/foo',
git_info['commit_sha'],
'new_app', self.ctx.tenant,
'new_app', self.ctx.project_id,
'auto',
''],
env=test_env, stdout=-1)
@@ -483,7 +483,7 @@ class HandlerTest(base.BaseTestCase):
script = os.path.join(proj_dir, 'contrib/lp-cedarish/docker/build-app')
mock_popen.assert_called_once_with([script, 'git://example.com/foo',
git_info['commit_sha'],
'new_app', self.ctx.tenant,
'new_app', self.ctx.project_id,
self.expected_img_id,
self.img_name],
env=test_env, stdout=-1)
@@ -531,7 +531,7 @@ class HandlerTest(base.BaseTestCase):
'contrib/lp-chef/docker/unittest-app')
mock_popen.assert_called_once_with([script, 'git://example.com/foo',
git_info['commit_sha'],
self.ctx.tenant,
self.ctx.project_id,
self.expected_img_id,
self.img_name],
env=test_env, stdout=-1)
@@ -571,7 +571,7 @@ class HandlerTest(base.BaseTestCase):
'contrib/lp-chef/docker/unittest-app')
mock_popen.assert_called_once_with([script, 'git://example.com/foo',
git_info['commit_sha'],
self.ctx.tenant,
self.ctx.project_id,
self.expected_img_id,
self.img_name],
env=test_env, stdout=-1)
@@ -622,12 +622,12 @@ class HandlerTest(base.BaseTestCase):
expected = [
mock.call([u_script, 'git://example.com/foo',
git_info['commit_sha'],
self.ctx.tenant, self.expected_img_id,
self.ctx.project_id, self.expected_img_id,
self.img_name], env=test_env,
stdout=-1),
mock.call([b_script, 'git://example.com/foo',
git_info['commit_sha'], 'new_app',
self.ctx.tenant, self.expected_img_id,
self.ctx.project_id, self.expected_img_id,
self.img_name], env=test_env,
stdout=-1)]
self.assertEqual(expected, mock_popen.call_args_list)
@@ -687,7 +687,7 @@ class HandlerTest(base.BaseTestCase):
expected = [
mock.call([u_script, 'git://example.com/foo',
git_info['commit_sha'],
self.ctx.tenant, self.expected_img_id,
self.ctx.project_id, self.expected_img_id,
self.img_name], env=test_env,
stdout=-1)]
self.assertEqual(expected, mock_popen.call_args_list)
@@ -791,7 +791,7 @@ class TestBuildCommand(base.BaseTestCase):
self.assertIn(self.expect_b, cmd[0])
self.assertEqual('http://example.com/a.git', cmd[1])
self.assertEqual('testa', cmd[3])
self.assertEqual(ctx.tenant, cmd[4])
self.assertEqual(ctx.project_id, cmd[4])
if self.base_image_id == 'auto' and self.image_format == 'qcow2':
self.assertEqual('cedarish', cmd[5])
else:
@@ -811,7 +811,7 @@ class TestBuildCommand(base.BaseTestCase):
self.assertIn(self.expect_u, cmd[0])
self.assertEqual('http://example.com/a.git', cmd[1])
self.assertEqual('asdf', cmd[2])
self.assertEqual(ctx.tenant, cmd[3])
self.assertEqual(ctx.project_id, cmd[3])
class TestLanguagePackBuildCommand(base.BaseTestCase):
@@ -833,7 +833,7 @@ class TestLanguagePackBuildCommand(base.BaseTestCase):
self.assertIn('lp-cedarish/docker/build-lp', cmd[0])
self.assertEqual('http://example.com/a.git', cmd[1])
self.assertEqual('testa', cmd[2])
self.assertEqual(ctx.tenant, cmd[3])
self.assertEqual(ctx.project_id, cmd[3])
@mock.patch('solum.worker.handlers.shell.Handler._get_environment')
@mock.patch('solum.objects.registry')
@@ -864,7 +864,7 @@ class TestLanguagePackBuildCommand(base.BaseTestCase):
script = os.path.join(proj_dir, 'contrib/lp-cedarish/docker/build-lp')
mock_execute.assert_called_once_with(
script, 'git://example.com/foo',
'lp_name', self.ctx.tenant,
'lp_name', self.ctx.project_id,
env_variables=test_env,
run_as_root=True,
)

View File

@@ -78,7 +78,7 @@ class TenantLogger(object):
t = time.time()
print_tm = dt.datetime.fromtimestamp(t).strftime('%Y-%m-%d %H:%M:%S')
log_line['@timestamp'] = print_tm
log_line['project_id'] = self.ctxt.tenant
log_line['project_id'] = self.ctxt.project_id
log_line['stage_id'] = self.assem.uuid
log_line['task'] = self.stage
log_line['message'] = message

View File

@@ -83,7 +83,7 @@ class DockerHandler(base.BaseHandler):
def _prepare(self, git_info, lp_obj_name, lp_img_tag, logger):
"""Create working dir and download LP only once for an app workflow."""
if self.work_dir is None or self.source_sha is None:
tenant = self.context.tenant
tenant = self.context.project_id
self.work_dir = '/tmp/apps/{tenant}/{id}'.format(
tenant=tenant, id=self.assembly.uuid)
try:
@@ -117,7 +117,7 @@ class DockerHandler(base.BaseHandler):
def build_lp(self, lp_name, git_info):
logger = self._get_tenant_logger('language_pack')
tenant = self.context.tenant
tenant = self.context.project_id
ts = utils.timestamp()
ranid = (''.join(random.choice(string.ascii_uppercase)
for _ in range(20)))
@@ -286,7 +286,7 @@ class DockerHandler(base.BaseHandler):
logger.upload()
return
tenant = self.context.tenant
tenant = self.context.project_id
ts = utils.timestamp()
storage_obj_name = '{name}-{ts}-{sha}'.format(name=app_name, ts=ts,
sha=self.source_sha)

View File

@@ -259,7 +259,7 @@ class Handler(object):
if run_cmd is not None:
user_env['RUN_CMD'] = run_cmd
user_env['PROJECT_ID'] = ctxt.tenant
user_env['PROJECT_ID'] = ctxt.project_id
user_env['BUILD_ID'] = uuidutils.generate_uuid()
user_env['SOLUM_TASK_DIR'] = cfg.CONF.worker.task_log_dir
@@ -300,15 +300,15 @@ class Handler(object):
if artifact_type == 'language_pack':
build_lp = os.path.join(build_app_path, 'build-lp')
return [build_lp, source_uri, name, ctxt.tenant]
return [build_lp, source_uri, name, ctxt.project_id]
if stage == 'unittest':
build_app = os.path.join(build_app_path, 'unittest-app')
return [build_app, source_uri, commit_sha, ctxt.tenant,
return [build_app, source_uri, commit_sha, ctxt.project_id,
base_image_id, lp_image_tag]
elif stage == 'build':
build_app = os.path.join(build_app_path, 'build-app')
return [build_app, source_uri, commit_sha, name, ctxt.tenant,
return [build_app, source_uri, commit_sha, name, ctxt.project_id,
base_image_id, lp_image_tag]
def _get_parameter_env(self, ctxt, source_uri, assembly_id, build_id):
@@ -697,7 +697,7 @@ class Handler(object):
source_format, 'docker', '',
artifact_type)
lp_access = get_lp_access_method(ctxt.tenant)
lp_access = get_lp_access_method(ctxt.project_id)
user_env = {}
try: