Move FakeKeystoneClient to engine.clients
Add the ability to consume FakeKeystoneClient class as a client module. This avoids extra dependencies on the Python mox/mox3 libraries at runtime and allows the end user to wire in the custom class by simply making the following config setting: keystone_backend = heat.engine.clients.os.keystone.fake_keystoneclient.FakeKeystoneClient This use case for this is the TripleO undercloud installer which uses a heat-all process to transform heat templates into Ansible playbooks. Previously we leveraged a "fake_keystone" service as multiple applications and binaries required keystone dependencies. (Both Heat, os-collect-config, and some openstackclients wanted a fully version of keystone running) Now that we've streamlined these dependencies allowing heat to use a fake KeystoneClient library shim instead of the full fake_keystone process is much lighter and avoids the security concerns of the extra socket. This patch allows us to do all of this without installing extra test time dependencies on mox/mox3. Change-Id: I03f1789957ba157871fd13164592116d7fcdabe4 Closes-bug: #1723639
This commit is contained in:
parent
1f73478e32
commit
14b0451fc9
123
heat/engine/clients/os/keystone/fake_keystoneclient.py
Normal file
123
heat/engine/clients/os/keystone/fake_keystoneclient.py
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
"""A fake FakeKeystoneClient. This can be used during some runtime
|
||||||
|
scenarios where you want to disable Heat's internal Keystone dependencies
|
||||||
|
entirely. One example is the TripleO Undercloud installer.
|
||||||
|
|
||||||
|
To use this class at runtime set to following heat.conf config setting:
|
||||||
|
|
||||||
|
keystone_backend = heat.engine.clients.os.keystone.fake_keystoneclient\
|
||||||
|
.FakeKeystoneClient
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
from keystoneauth1 import session
|
||||||
|
|
||||||
|
from heat.common import context
|
||||||
|
|
||||||
|
|
||||||
|
class FakeKeystoneClient(object):
|
||||||
|
def __init__(self, username='test_username', password='password',
|
||||||
|
user_id='1234', access='4567', secret='8901',
|
||||||
|
credential_id='abcdxyz', auth_token='abcd1234',
|
||||||
|
context=None, stack_domain_id='4321', client=None):
|
||||||
|
self.username = username
|
||||||
|
self.password = password
|
||||||
|
self.user_id = user_id
|
||||||
|
self.access = access
|
||||||
|
self.secret = secret
|
||||||
|
self.session = session.Session()
|
||||||
|
self.credential_id = credential_id
|
||||||
|
self.token = auth_token
|
||||||
|
self.context = context
|
||||||
|
self.v3_endpoint = 'http://localhost:5000/v3'
|
||||||
|
self.stack_domain_id = stack_domain_id
|
||||||
|
self.client = client
|
||||||
|
|
||||||
|
class FakeCred(object):
|
||||||
|
id = self.credential_id
|
||||||
|
access = self.access
|
||||||
|
secret = self.secret
|
||||||
|
self.creds = FakeCred()
|
||||||
|
|
||||||
|
def create_stack_user(self, username, password=''):
|
||||||
|
self.username = username
|
||||||
|
return self.user_id
|
||||||
|
|
||||||
|
def delete_stack_user(self, user_id):
|
||||||
|
self.user_id = None
|
||||||
|
|
||||||
|
def get_ec2_keypair(self, access, user_id):
|
||||||
|
if user_id == self.user_id:
|
||||||
|
if access == self.access:
|
||||||
|
return self.creds
|
||||||
|
else:
|
||||||
|
raise ValueError("Unexpected access %s" % access)
|
||||||
|
else:
|
||||||
|
raise ValueError("Unexpected user_id %s" % user_id)
|
||||||
|
|
||||||
|
def create_ec2_keypair(self, user_id):
|
||||||
|
if user_id == self.user_id:
|
||||||
|
return self.creds
|
||||||
|
|
||||||
|
def delete_ec2_keypair(self, credential_id=None, user_id=None,
|
||||||
|
access=None):
|
||||||
|
if user_id == self.user_id and access == self.creds.access:
|
||||||
|
self.creds = None
|
||||||
|
else:
|
||||||
|
raise Exception('Incorrect user_id or access')
|
||||||
|
|
||||||
|
def enable_stack_user(self, user_id):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def disable_stack_user(self, user_id):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def create_trust_context(self):
|
||||||
|
return context.RequestContext(username=self.username,
|
||||||
|
password=self.password,
|
||||||
|
is_admin=False,
|
||||||
|
trust_id='atrust',
|
||||||
|
trustor_user_id=self.user_id)
|
||||||
|
|
||||||
|
def delete_trust(self, trust_id):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def delete_stack_domain_project(self, project_id):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def create_stack_domain_project(self, stack_id):
|
||||||
|
return 'aprojectid'
|
||||||
|
|
||||||
|
def create_stack_domain_user(self, username, project_id, password=None):
|
||||||
|
return self.user_id
|
||||||
|
|
||||||
|
def delete_stack_domain_user(self, user_id, project_id):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def create_stack_domain_user_keypair(self, user_id, project_id):
|
||||||
|
return self.creds
|
||||||
|
|
||||||
|
def enable_stack_domain_user(self, user_id, project_id):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def disable_stack_domain_user(self, user_id, project_id):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def delete_stack_domain_user_keypair(self, user_id, project_id,
|
||||||
|
credential_id):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def stack_domain_user_token(self, user_id, project_id, password):
|
||||||
|
return 'adomainusertoken'
|
@ -17,6 +17,7 @@ from oslo_config import cfg
|
|||||||
from heat.common import exception
|
from heat.common import exception
|
||||||
from heat.common import short_id
|
from heat.common import short_id
|
||||||
from heat.common import template_format
|
from heat.common import template_format
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine import node_data
|
from heat.engine import node_data
|
||||||
from heat.engine.resources.aws.iam import user
|
from heat.engine.resources.aws.iam import user
|
||||||
from heat.engine.resources.openstack.heat import access_policy as ap
|
from heat.engine.resources.openstack.heat import access_policy as ap
|
||||||
@ -24,7 +25,6 @@ from heat.engine import scheduler
|
|||||||
from heat.engine import stk_defn
|
from heat.engine import stk_defn
|
||||||
from heat.objects import resource_data as resource_data_object
|
from heat.objects import resource_data as resource_data_object
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
|
|
||||||
@ -109,7 +109,7 @@ class UserTest(common.HeatTestCase):
|
|||||||
super(UserTest, self).setUp()
|
super(UserTest, self).setUp()
|
||||||
self.stack_name = 'test_user_stack_%s' % utils.random_name()
|
self.stack_name = 'test_user_stack_%s' % utils.random_name()
|
||||||
self.username = '%s-CfnUser-aabbcc' % self.stack_name
|
self.username = '%s-CfnUser-aabbcc' % self.stack_name
|
||||||
self.fc = fakes.FakeKeystoneClient(username=self.username)
|
self.fc = fake_ks.FakeKeystoneClient(username=self.username)
|
||||||
cfg.CONF.set_default('heat_stack_user_role', 'stack_user_role')
|
cfg.CONF.set_default('heat_stack_user_role', 'stack_user_role')
|
||||||
|
|
||||||
def create_user(self, t, stack, resource_name,
|
def create_user(self, t, stack, resource_name,
|
||||||
@ -118,9 +118,9 @@ class UserTest(common.HeatTestCase):
|
|||||||
self.m.StubOutWithMock(user.User, 'keystone')
|
self.m.StubOutWithMock(user.User, 'keystone')
|
||||||
user.User.keystone().MultipleTimes().AndReturn(self.fc)
|
user.User.keystone().MultipleTimes().AndReturn(self.fc)
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'create_stack_domain_project')
|
'create_stack_domain_project')
|
||||||
fakes.FakeKeystoneClient.create_stack_domain_project(
|
fake_ks.FakeKeystoneClient.create_stack_domain_project(
|
||||||
stack.id).AndReturn(project_id)
|
stack.id).AndReturn(project_id)
|
||||||
|
|
||||||
resource_defns = stack.t.resource_definitions(stack)
|
resource_defns = stack.t.resource_definitions(stack)
|
||||||
@ -132,9 +132,9 @@ class UserTest(common.HeatTestCase):
|
|||||||
self.m.StubOutWithMock(short_id, 'get_id')
|
self.m.StubOutWithMock(short_id, 'get_id')
|
||||||
short_id.get_id(rsrc.uuid).MultipleTimes().AndReturn('aabbcc')
|
short_id.get_id(rsrc.uuid).MultipleTimes().AndReturn('aabbcc')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'create_stack_domain_user')
|
'create_stack_domain_user')
|
||||||
fakes.FakeKeystoneClient.create_stack_domain_user(
|
fake_ks.FakeKeystoneClient.create_stack_domain_user(
|
||||||
username=self.username, password=password,
|
username=self.username, password=password,
|
||||||
project_id=project_id).AndReturn(user_id)
|
project_id=project_id).AndReturn(user_id)
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
@ -301,9 +301,9 @@ class AccessKeyTest(common.HeatTestCase):
|
|||||||
super(AccessKeyTest, self).setUp()
|
super(AccessKeyTest, self).setUp()
|
||||||
self.username = utils.PhysName('test_stack', 'CfnUser')
|
self.username = utils.PhysName('test_stack', 'CfnUser')
|
||||||
self.credential_id = 'acredential123'
|
self.credential_id = 'acredential123'
|
||||||
self.fc = fakes.FakeKeystoneClient(username=self.username,
|
self.fc = fake_ks.FakeKeystoneClient(username=self.username,
|
||||||
user_id='dummy_user',
|
user_id='dummy_user',
|
||||||
credential_id=self.credential_id)
|
credential_id=self.credential_id)
|
||||||
cfg.CONF.set_default('heat_stack_user_role', 'stack_user_role')
|
cfg.CONF.set_default('heat_stack_user_role', 'stack_user_role')
|
||||||
|
|
||||||
def create_user(self, t, stack, resource_name,
|
def create_user(self, t, stack, resource_name,
|
||||||
|
@ -36,6 +36,7 @@ from heat.common import exception
|
|||||||
from heat.engine import clients
|
from heat.engine import clients
|
||||||
from heat.engine.clients import client_exception
|
from heat.engine.clients import client_exception
|
||||||
from heat.engine.clients import client_plugin
|
from heat.engine.clients import client_plugin
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
from heat.tests import fakes
|
||||||
from heat.tests.openstack.nova import fakes as fakes_nova
|
from heat.tests.openstack.nova import fakes as fakes_nova
|
||||||
@ -257,7 +258,7 @@ class ClientPluginTest(common.HeatTestCase):
|
|||||||
|
|
||||||
@mock.patch.object(generic, "Token", name="v3_token")
|
@mock.patch.object(generic, "Token", name="v3_token")
|
||||||
def test_get_missing_service_catalog(self, mock_v3):
|
def test_get_missing_service_catalog(self, mock_v3):
|
||||||
class FakeKeystone(fakes.FakeKeystoneClient):
|
class FakeKeystone(fake_ks.FakeKeystoneClient):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(FakeKeystone, self).__init__()
|
super(FakeKeystone, self).__init__()
|
||||||
self.client = self
|
self.client = self
|
||||||
@ -285,7 +286,7 @@ class ClientPluginTest(common.HeatTestCase):
|
|||||||
|
|
||||||
@mock.patch.object(generic, "Token", name="v3_token")
|
@mock.patch.object(generic, "Token", name="v3_token")
|
||||||
def test_endpoint_not_found(self, mock_v3):
|
def test_endpoint_not_found(self, mock_v3):
|
||||||
class FakeKeystone(fakes.FakeKeystoneClient):
|
class FakeKeystone(fake_ks.FakeKeystoneClient):
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
super(FakeKeystone, self).__init__()
|
super(FakeKeystone, self).__init__()
|
||||||
self.client = self
|
self.client = self
|
||||||
|
@ -28,6 +28,7 @@ from heat.engine.clients.os import barbican
|
|||||||
from heat.engine.clients.os import cinder
|
from heat.engine.clients.os import cinder
|
||||||
from heat.engine.clients.os import glance
|
from heat.engine.clients.os import glance
|
||||||
from heat.engine.clients.os import keystone
|
from heat.engine.clients.os import keystone
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine.clients.os.keystone import keystone_constraints as ks_constr
|
from heat.engine.clients.os.keystone import keystone_constraints as ks_constr
|
||||||
from heat.engine.clients.os.neutron import neutron_constraints as neutron
|
from heat.engine.clients.os.neutron import neutron_constraints as neutron
|
||||||
from heat.engine.clients.os import nova
|
from heat.engine.clients.os import nova
|
||||||
@ -220,7 +221,7 @@ class HeatTestCase(testscenarios.WithScenarios,
|
|||||||
|
|
||||||
def stub_keystoneclient(self, fake_client=None, **kwargs):
|
def stub_keystoneclient(self, fake_client=None, **kwargs):
|
||||||
client = self.patchobject(keystone.KeystoneClientPlugin, "_create")
|
client = self.patchobject(keystone.KeystoneClientPlugin, "_create")
|
||||||
fkc = fake_client or fakes.FakeKeystoneClient(**kwargs)
|
fkc = fake_client or fake_ks.FakeKeystoneClient(**kwargs)
|
||||||
client.return_value = fkc
|
client.return_value = fkc
|
||||||
return fkc
|
return fkc
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ import six
|
|||||||
from heat.common import exception
|
from heat.common import exception
|
||||||
from heat.common import identifier
|
from heat.common import identifier
|
||||||
from heat.engine.clients.os import keystone
|
from heat.engine.clients.os import keystone
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine import dependencies
|
from heat.engine import dependencies
|
||||||
from heat.engine import resource as res
|
from heat.engine import resource as res
|
||||||
from heat.engine.resources.aws.ec2 import instance as ins
|
from heat.engine.resources.aws.ec2 import instance as ins
|
||||||
@ -28,7 +29,6 @@ from heat.engine import template as templatem
|
|||||||
from heat.objects import stack as stack_object
|
from heat.objects import stack as stack_object
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests.engine import tools
|
from heat.tests.engine import tools
|
||||||
from heat.tests import fakes as test_fakes
|
|
||||||
from heat.tests import generic_resource as generic_rsrc
|
from heat.tests import generic_resource as generic_rsrc
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
@ -319,7 +319,7 @@ class StackResourcesServiceTest(common.HeatTestCase):
|
|||||||
|
|
||||||
def _stack_create(self, stack_name):
|
def _stack_create(self, stack_name):
|
||||||
self.patchobject(keystone.KeystoneClientPlugin, '_create',
|
self.patchobject(keystone.KeystoneClientPlugin, '_create',
|
||||||
return_value=test_fakes.FakeKeystoneClient())
|
return_value=fake_ks.FakeKeystoneClient())
|
||||||
|
|
||||||
stk = tools.get_stack(stack_name, self.ctx, policy_template)
|
stk = tools.get_stack(stack_name, self.ctx, policy_template)
|
||||||
stk.store()
|
stk.store()
|
||||||
@ -457,7 +457,7 @@ class StackResourcesServiceTest(common.HeatTestCase):
|
|||||||
mock_update):
|
mock_update):
|
||||||
# fake keystone client
|
# fake keystone client
|
||||||
self.patchobject(keystone.KeystoneClientPlugin, '_create',
|
self.patchobject(keystone.KeystoneClientPlugin, '_create',
|
||||||
return_value=test_fakes.FakeKeystoneClient())
|
return_value=fake_ks.FakeKeystoneClient())
|
||||||
|
|
||||||
stk = tools.get_stack('signal_reception', self.ctx, policy_template)
|
stk = tools.get_stack('signal_reception', self.ctx, policy_template)
|
||||||
self.stack = stk
|
self.stack = stk
|
||||||
@ -485,7 +485,7 @@ class StackResourcesServiceTest(common.HeatTestCase):
|
|||||||
mock_update):
|
mock_update):
|
||||||
# fake keystone client
|
# fake keystone client
|
||||||
self.patchobject(keystone.KeystoneClientPlugin, '_create',
|
self.patchobject(keystone.KeystoneClientPlugin, '_create',
|
||||||
return_value=test_fakes.FakeKeystoneClient())
|
return_value=fake_ks.FakeKeystoneClient())
|
||||||
|
|
||||||
stk = tools.get_stack('signal_reception', self.ctx, policy_template)
|
stk = tools.get_stack('signal_reception', self.ctx, policy_template)
|
||||||
self.stack = stk
|
self.stack = stk
|
||||||
|
@ -18,12 +18,12 @@ import six
|
|||||||
from heat.common import template_format
|
from heat.common import template_format
|
||||||
from heat.engine.clients.os import glance
|
from heat.engine.clients.os import glance
|
||||||
from heat.engine.clients.os import keystone
|
from heat.engine.clients.os import keystone
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine.clients.os import nova
|
from heat.engine.clients.os import nova
|
||||||
from heat.engine import environment
|
from heat.engine import environment
|
||||||
from heat.engine.resources.aws.ec2 import instance as instances
|
from heat.engine.resources.aws.ec2 import instance as instances
|
||||||
from heat.engine import stack as parser
|
from heat.engine import stack as parser
|
||||||
from heat.engine import template as templatem
|
from heat.engine import template as templatem
|
||||||
from heat.tests import fakes as test_fakes
|
|
||||||
from heat.tests.openstack.nova import fakes as fakes_nova
|
from heat.tests.openstack.nova import fakes as fakes_nova
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
@ -169,7 +169,7 @@ def get_stack(stack_name, ctx, template=None, with_params=True,
|
|||||||
|
|
||||||
|
|
||||||
def setup_keystone_mocks(mocks, stack):
|
def setup_keystone_mocks(mocks, stack):
|
||||||
fkc = test_fakes.FakeKeystoneClient()
|
fkc = fake_ks.FakeKeystoneClient()
|
||||||
|
|
||||||
mocks.StubOutWithMock(keystone.KeystoneClientPlugin, '_create')
|
mocks.StubOutWithMock(keystone.KeystoneClientPlugin, '_create')
|
||||||
keystone.KeystoneClientPlugin._create().AndReturn(fkc)
|
keystone.KeystoneClientPlugin._create().AndReturn(fkc)
|
||||||
|
@ -19,11 +19,8 @@ places where actual behavior differs from the spec.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from keystoneauth1 import plugin
|
from keystoneauth1 import plugin
|
||||||
from keystoneauth1 import session
|
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
from heat.common import context
|
|
||||||
|
|
||||||
|
|
||||||
class FakeClient(object):
|
class FakeClient(object):
|
||||||
|
|
||||||
@ -97,102 +94,6 @@ class FakeAuth(plugin.BaseAuthPlugin):
|
|||||||
return FakeAccessInfo([], None, None)
|
return FakeAccessInfo([], None, None)
|
||||||
|
|
||||||
|
|
||||||
class FakeKeystoneClient(object):
|
|
||||||
def __init__(self, username='test_username', password='password',
|
|
||||||
user_id='1234', access='4567', secret='8901',
|
|
||||||
credential_id='abcdxyz', auth_token='abcd1234',
|
|
||||||
context=None, stack_domain_id='4321', client=None):
|
|
||||||
self.username = username
|
|
||||||
self.password = password
|
|
||||||
self.user_id = user_id
|
|
||||||
self.access = access
|
|
||||||
self.secret = secret
|
|
||||||
self.session = session.Session()
|
|
||||||
self.credential_id = credential_id
|
|
||||||
self.token = auth_token
|
|
||||||
self.context = context
|
|
||||||
self.v3_endpoint = 'http://localhost:5000/v3'
|
|
||||||
self.stack_domain_id = stack_domain_id
|
|
||||||
self.client = client
|
|
||||||
|
|
||||||
class FakeCred(object):
|
|
||||||
id = self.credential_id
|
|
||||||
access = self.access
|
|
||||||
secret = self.secret
|
|
||||||
self.creds = FakeCred()
|
|
||||||
|
|
||||||
def create_stack_user(self, username, password=''):
|
|
||||||
self.username = username
|
|
||||||
return self.user_id
|
|
||||||
|
|
||||||
def delete_stack_user(self, user_id):
|
|
||||||
self.user_id = None
|
|
||||||
|
|
||||||
def get_ec2_keypair(self, access, user_id):
|
|
||||||
if user_id == self.user_id:
|
|
||||||
if access == self.access:
|
|
||||||
return self.creds
|
|
||||||
else:
|
|
||||||
raise ValueError("Unexpected access %s" % access)
|
|
||||||
else:
|
|
||||||
raise ValueError("Unexpected user_id %s" % user_id)
|
|
||||||
|
|
||||||
def create_ec2_keypair(self, user_id):
|
|
||||||
if user_id == self.user_id:
|
|
||||||
return self.creds
|
|
||||||
|
|
||||||
def delete_ec2_keypair(self, credential_id=None, user_id=None,
|
|
||||||
access=None):
|
|
||||||
if user_id == self.user_id and access == self.creds.access:
|
|
||||||
self.creds = None
|
|
||||||
else:
|
|
||||||
raise Exception('Incorrect user_id or access')
|
|
||||||
|
|
||||||
def enable_stack_user(self, user_id):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def disable_stack_user(self, user_id):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def create_trust_context(self):
|
|
||||||
return context.RequestContext(username=self.username,
|
|
||||||
password=self.password,
|
|
||||||
is_admin=False,
|
|
||||||
trust_id='atrust',
|
|
||||||
trustor_user_id=self.user_id)
|
|
||||||
|
|
||||||
def delete_trust(self, trust_id):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def delete_stack_domain_project(self, project_id):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def create_stack_domain_project(self, stack_id):
|
|
||||||
return 'aprojectid'
|
|
||||||
|
|
||||||
def create_stack_domain_user(self, username, project_id, password=None):
|
|
||||||
return self.user_id
|
|
||||||
|
|
||||||
def delete_stack_domain_user(self, user_id, project_id):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def create_stack_domain_user_keypair(self, user_id, project_id):
|
|
||||||
return self.creds
|
|
||||||
|
|
||||||
def enable_stack_domain_user(self, user_id, project_id):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def disable_stack_domain_user(self, user_id, project_id):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def delete_stack_domain_user_keypair(self, user_id, project_id,
|
|
||||||
credential_id):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def stack_domain_user_token(self, user_id, project_id, password):
|
|
||||||
return 'adomainusertoken'
|
|
||||||
|
|
||||||
|
|
||||||
class FakeAccessInfo(object):
|
class FakeAccessInfo(object):
|
||||||
def __init__(self, roles, user_domain, project_domain):
|
def __init__(self, roles, user_domain, project_domain):
|
||||||
self.roles = roles
|
self.roles = roles
|
||||||
|
@ -13,12 +13,12 @@
|
|||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine import resource
|
from heat.engine import resource
|
||||||
from heat.engine.resources.openstack.keystone import domain
|
from heat.engine.resources.openstack.keystone import domain
|
||||||
from heat.engine import stack
|
from heat.engine import stack
|
||||||
from heat.engine import template
|
from heat.engine import template
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
KEYSTONE_REGION_TEMPLATE = {
|
KEYSTONE_REGION_TEMPLATE = {
|
||||||
@ -54,7 +54,7 @@ class KeystoneDomainTest(common.HeatTestCase):
|
|||||||
# Mock client
|
# Mock client
|
||||||
self.keystoneclient = mock.Mock()
|
self.keystoneclient = mock.Mock()
|
||||||
self.patchobject(resource.Resource, 'client',
|
self.patchobject(resource.Resource, 'client',
|
||||||
return_value=fakes.FakeKeystoneClient(
|
return_value=fake_ks.FakeKeystoneClient(
|
||||||
client=self.keystoneclient))
|
client=self.keystoneclient))
|
||||||
self.domains = self.keystoneclient.domains
|
self.domains = self.keystoneclient.domains
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ import copy
|
|||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine import constraints
|
from heat.engine import constraints
|
||||||
from heat.engine import properties
|
from heat.engine import properties
|
||||||
from heat.engine import resource
|
from heat.engine import resource
|
||||||
@ -22,7 +23,6 @@ from heat.engine.resources.openstack.keystone import endpoint
|
|||||||
from heat.engine import stack
|
from heat.engine import stack
|
||||||
from heat.engine import template
|
from heat.engine import template
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
keystone_endpoint_template = {
|
keystone_endpoint_template = {
|
||||||
@ -54,7 +54,7 @@ class KeystoneEndpointTest(common.HeatTestCase):
|
|||||||
# Mock client
|
# Mock client
|
||||||
self.keystoneclient = mock.Mock()
|
self.keystoneclient = mock.Mock()
|
||||||
self.patchobject(resource.Resource, 'client',
|
self.patchobject(resource.Resource, 'client',
|
||||||
return_value=fakes.FakeKeystoneClient(
|
return_value=fake_ks.FakeKeystoneClient(
|
||||||
client=self.keystoneclient))
|
client=self.keystoneclient))
|
||||||
self.endpoints = self.keystoneclient.endpoints
|
self.endpoints = self.keystoneclient.endpoints
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine import constraints
|
from heat.engine import constraints
|
||||||
from heat.engine import properties
|
from heat.engine import properties
|
||||||
from heat.engine import resource
|
from heat.engine import resource
|
||||||
@ -20,7 +21,6 @@ from heat.engine.resources.openstack.keystone import group
|
|||||||
from heat.engine import stack
|
from heat.engine import stack
|
||||||
from heat.engine import template
|
from heat.engine import template
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
keystone_group_template = {
|
keystone_group_template = {
|
||||||
@ -56,7 +56,7 @@ class KeystoneGroupTest(common.HeatTestCase):
|
|||||||
# Mock client
|
# Mock client
|
||||||
self.keystoneclient = mock.Mock()
|
self.keystoneclient = mock.Mock()
|
||||||
self.patchobject(resource.Resource, 'client',
|
self.patchobject(resource.Resource, 'client',
|
||||||
return_value=fakes.FakeKeystoneClient(
|
return_value=fake_ks.FakeKeystoneClient(
|
||||||
client=self.keystoneclient))
|
client=self.keystoneclient))
|
||||||
self.groups = self.keystoneclient.groups
|
self.groups = self.keystoneclient.groups
|
||||||
self.role_assignments = self.keystoneclient.role_assignments
|
self.role_assignments = self.keystoneclient.role_assignments
|
||||||
|
@ -14,12 +14,12 @@
|
|||||||
import mock
|
import mock
|
||||||
from six.moves.urllib import parse
|
from six.moves.urllib import parse
|
||||||
|
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine import resource
|
from heat.engine import resource
|
||||||
from heat.engine.resources.openstack.keystone import region
|
from heat.engine.resources.openstack.keystone import region
|
||||||
from heat.engine import stack
|
from heat.engine import stack
|
||||||
from heat.engine import template
|
from heat.engine import template
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
KEYSTONE_REGION_TEMPLATE = {
|
KEYSTONE_REGION_TEMPLATE = {
|
||||||
@ -56,7 +56,7 @@ class KeystoneRegionTest(common.HeatTestCase):
|
|||||||
# Mock client
|
# Mock client
|
||||||
self.keystoneclient = mock.Mock()
|
self.keystoneclient = mock.Mock()
|
||||||
self.patchobject(resource.Resource, 'client',
|
self.patchobject(resource.Resource, 'client',
|
||||||
return_value=fakes.FakeKeystoneClient(
|
return_value=fake_ks.FakeKeystoneClient(
|
||||||
client=self.keystoneclient))
|
client=self.keystoneclient))
|
||||||
self.regions = self.keystoneclient.regions
|
self.regions = self.keystoneclient.regions
|
||||||
|
|
||||||
|
@ -14,12 +14,12 @@
|
|||||||
import copy
|
import copy
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine import resource
|
from heat.engine import resource
|
||||||
from heat.engine.resources.openstack.keystone import role
|
from heat.engine.resources.openstack.keystone import role
|
||||||
from heat.engine import stack
|
from heat.engine import stack
|
||||||
from heat.engine import template
|
from heat.engine import template
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
keystone_role_template = {
|
keystone_role_template = {
|
||||||
@ -45,7 +45,7 @@ class KeystoneRoleTest(common.HeatTestCase):
|
|||||||
# Mock client
|
# Mock client
|
||||||
self.keystoneclient = mock.Mock()
|
self.keystoneclient = mock.Mock()
|
||||||
self.patchobject(resource.Resource, 'client',
|
self.patchobject(resource.Resource, 'client',
|
||||||
return_value=fakes.FakeKeystoneClient(
|
return_value=fake_ks.FakeKeystoneClient(
|
||||||
client=self.keystoneclient))
|
client=self.keystoneclient))
|
||||||
self.roles = self.keystoneclient.roles
|
self.roles = self.keystoneclient.roles
|
||||||
|
|
||||||
|
@ -15,13 +15,13 @@ import copy
|
|||||||
import mock
|
import mock
|
||||||
|
|
||||||
from heat.common import exception
|
from heat.common import exception
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine import properties
|
from heat.engine import properties
|
||||||
from heat.engine import resource
|
from heat.engine import resource
|
||||||
from heat.engine.resources.openstack.keystone import role_assignments
|
from heat.engine.resources.openstack.keystone import role_assignments
|
||||||
from heat.engine import stack
|
from heat.engine import stack
|
||||||
from heat.engine import template
|
from heat.engine import template
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import generic_resource
|
from heat.tests import generic_resource
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
@ -429,7 +429,7 @@ class KeystoneUserRoleAssignmentTest(common.HeatTestCase):
|
|||||||
# Mock client
|
# Mock client
|
||||||
self.keystoneclient = mock.Mock()
|
self.keystoneclient = mock.Mock()
|
||||||
self.patchobject(resource.Resource, 'client',
|
self.patchobject(resource.Resource, 'client',
|
||||||
return_value=fakes.FakeKeystoneClient(
|
return_value=fake_ks.FakeKeystoneClient(
|
||||||
client=self.keystoneclient))
|
client=self.keystoneclient))
|
||||||
self.roles = self.keystoneclient.roles
|
self.roles = self.keystoneclient.roles
|
||||||
|
|
||||||
@ -558,7 +558,7 @@ class KeystoneGroupRoleAssignmentTest(common.HeatTestCase):
|
|||||||
# Mock client
|
# Mock client
|
||||||
self.keystoneclient = mock.Mock()
|
self.keystoneclient = mock.Mock()
|
||||||
self.patchobject(resource.Resource, 'client',
|
self.patchobject(resource.Resource, 'client',
|
||||||
return_value=fakes.FakeKeystoneClient(
|
return_value=fake_ks.FakeKeystoneClient(
|
||||||
client=self.keystoneclient))
|
client=self.keystoneclient))
|
||||||
self.roles = self.keystoneclient.roles
|
self.roles = self.keystoneclient.roles
|
||||||
|
|
||||||
|
@ -15,13 +15,13 @@ import copy
|
|||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine import properties
|
from heat.engine import properties
|
||||||
from heat.engine import resource
|
from heat.engine import resource
|
||||||
from heat.engine.resources.openstack.keystone import service
|
from heat.engine.resources.openstack.keystone import service
|
||||||
from heat.engine import stack
|
from heat.engine import stack
|
||||||
from heat.engine import template
|
from heat.engine import template
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
keystone_service_template = {
|
keystone_service_template = {
|
||||||
@ -51,7 +51,7 @@ class KeystoneServiceTest(common.HeatTestCase):
|
|||||||
# Mock client
|
# Mock client
|
||||||
self.keystoneclient = mock.Mock()
|
self.keystoneclient = mock.Mock()
|
||||||
self.patchobject(resource.Resource, 'client',
|
self.patchobject(resource.Resource, 'client',
|
||||||
return_value=fakes.FakeKeystoneClient(
|
return_value=fake_ks.FakeKeystoneClient(
|
||||||
client=self.keystoneclient))
|
client=self.keystoneclient))
|
||||||
self.services = self.keystoneclient.services
|
self.services = self.keystoneclient.services
|
||||||
|
|
||||||
|
@ -13,12 +13,12 @@
|
|||||||
|
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine import resource
|
from heat.engine import resource
|
||||||
from heat.engine.resources.openstack.keystone import user
|
from heat.engine.resources.openstack.keystone import user
|
||||||
from heat.engine import stack
|
from heat.engine import stack
|
||||||
from heat.engine import template
|
from heat.engine import template
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
keystone_user_template = {
|
keystone_user_template = {
|
||||||
@ -60,7 +60,7 @@ class KeystoneUserTest(common.HeatTestCase):
|
|||||||
# Mock client
|
# Mock client
|
||||||
self.keystoneclient = mock.Mock()
|
self.keystoneclient = mock.Mock()
|
||||||
self.patchobject(resource.Resource, 'client',
|
self.patchobject(resource.Resource, 'client',
|
||||||
return_value=fakes.FakeKeystoneClient(
|
return_value=fake_ks.FakeKeystoneClient(
|
||||||
client=self.keystoneclient))
|
client=self.keystoneclient))
|
||||||
self.users = self.keystoneclient.users
|
self.users = self.keystoneclient.users
|
||||||
|
|
||||||
|
@ -22,13 +22,13 @@ from heat.common import exception
|
|||||||
from heat.common import template_format
|
from heat.common import template_format
|
||||||
from heat.db.sqlalchemy import models
|
from heat.db.sqlalchemy import models
|
||||||
from heat.engine.clients.os import heat_plugin
|
from heat.engine.clients.os import heat_plugin
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine.clients.os import swift
|
from heat.engine.clients.os import swift
|
||||||
from heat.engine import scheduler
|
from heat.engine import scheduler
|
||||||
from heat.engine import stack as stk
|
from heat.engine import stack as stk
|
||||||
from heat.engine import template
|
from heat.engine import template
|
||||||
from heat.objects import resource_data as resource_data_object
|
from heat.objects import resource_data as resource_data_object
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import generic_resource
|
from heat.tests import generic_resource
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
@ -467,7 +467,7 @@ class SignalTest(common.HeatTestCase):
|
|||||||
|
|
||||||
def test_delete_not_found(self):
|
def test_delete_not_found(self):
|
||||||
# Setup
|
# Setup
|
||||||
class FakeKeystoneClientFail(fakes.FakeKeystoneClient):
|
class FakeKeystoneClientFail(fake_ks.FakeKeystoneClient):
|
||||||
def delete_stack_user(self, name):
|
def delete_stack_user(self, name):
|
||||||
raise kc_exceptions.NotFound()
|
raise kc_exceptions.NotFound()
|
||||||
self.stub_keystoneclient(fake_client=FakeKeystoneClientFail())
|
self.stub_keystoneclient(fake_client=FakeKeystoneClientFail())
|
||||||
|
@ -31,6 +31,7 @@ from heat.common import template_format
|
|||||||
from heat.common import timeutils
|
from heat.common import timeutils
|
||||||
from heat.db.sqlalchemy import api as db_api
|
from heat.db.sqlalchemy import api as db_api
|
||||||
from heat.engine.clients.os import keystone
|
from heat.engine.clients.os import keystone
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine.clients.os import nova
|
from heat.engine.clients.os import nova
|
||||||
from heat.engine import environment
|
from heat.engine import environment
|
||||||
from heat.engine import function
|
from heat.engine import function
|
||||||
@ -1485,9 +1486,9 @@ class StackTest(common.HeatTestCase):
|
|||||||
|
|
||||||
self.m.StubOutWithMock(keystone.KeystoneClientPlugin, '_create')
|
self.m.StubOutWithMock(keystone.KeystoneClientPlugin, '_create')
|
||||||
keystone.KeystoneClientPlugin._create().AndReturn(
|
keystone.KeystoneClientPlugin._create().AndReturn(
|
||||||
fakes.FakeKeystoneClient(user_id='auser123'))
|
fake_ks.FakeKeystoneClient(user_id='auser123'))
|
||||||
keystone.KeystoneClientPlugin._create().AndReturn(
|
keystone.KeystoneClientPlugin._create().AndReturn(
|
||||||
fakes.FakeKeystoneClient(user_id='auser123'))
|
fake_ks.FakeKeystoneClient(user_id='auser123'))
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
|
|
||||||
self.stack = stack.Stack(self.ctx, 'creds_stack', self.tmpl)
|
self.stack = stack.Stack(self.ctx, 'creds_stack', self.tmpl)
|
||||||
|
@ -23,6 +23,7 @@ from heat.common import exception
|
|||||||
from heat.common import template_format
|
from heat.common import template_format
|
||||||
from heat.common import timeutils
|
from heat.common import timeutils
|
||||||
from heat.engine.clients.os import keystone
|
from heat.engine.clients.os import keystone
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine.clients.os.keystone import heat_keystoneclient as hkc
|
from heat.engine.clients.os.keystone import heat_keystoneclient as hkc
|
||||||
from heat.engine import scheduler
|
from heat.engine import scheduler
|
||||||
from heat.engine import stack
|
from heat.engine import stack
|
||||||
@ -31,7 +32,6 @@ from heat.objects import snapshot as snapshot_object
|
|||||||
from heat.objects import stack as stack_object
|
from heat.objects import stack as stack_object
|
||||||
from heat.objects import user_creds as ucreds_object
|
from heat.objects import user_creds as ucreds_object
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import generic_resource as generic_rsrc
|
from heat.tests import generic_resource as generic_rsrc
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
@ -272,7 +272,7 @@ class StackTest(common.HeatTestCase):
|
|||||||
self.ctx, user_creds_id)
|
self.ctx, user_creds_id)
|
||||||
self.assertEqual('thetrustor', user_creds.get('trustor_user_id'))
|
self.assertEqual('thetrustor', user_creds.get('trustor_user_id'))
|
||||||
|
|
||||||
mock_kc.return_value = fakes.FakeKeystoneClient(user_id='nottrustor')
|
mock_kc.return_value = fake_ks.FakeKeystoneClient(user_id='nottrustor')
|
||||||
|
|
||||||
loaded_stack = stack.Stack.load(other_ctx, self.stack.id)
|
loaded_stack = stack.Stack.load(other_ctx, self.stack.id)
|
||||||
loaded_stack.delete()
|
loaded_stack.delete()
|
||||||
@ -284,7 +284,7 @@ class StackTest(common.HeatTestCase):
|
|||||||
loaded_stack.state)
|
loaded_stack.state)
|
||||||
|
|
||||||
def test_delete_trust_backup(self):
|
def test_delete_trust_backup(self):
|
||||||
class FakeKeystoneClientFail(fakes.FakeKeystoneClient):
|
class FakeKeystoneClientFail(fake_ks.FakeKeystoneClient):
|
||||||
def delete_trust(self, trust_id):
|
def delete_trust(self, trust_id):
|
||||||
raise Exception("Shouldn't delete")
|
raise Exception("Shouldn't delete")
|
||||||
|
|
||||||
@ -306,7 +306,7 @@ class StackTest(common.HeatTestCase):
|
|||||||
mock_kcp.assert_called_once_with()
|
mock_kcp.assert_called_once_with()
|
||||||
|
|
||||||
def test_delete_trust_nested(self):
|
def test_delete_trust_nested(self):
|
||||||
class FakeKeystoneClientFail(fakes.FakeKeystoneClient):
|
class FakeKeystoneClientFail(fake_ks.FakeKeystoneClient):
|
||||||
def delete_trust(self, trust_id):
|
def delete_trust(self, trust_id):
|
||||||
raise Exception("Shouldn't delete")
|
raise Exception("Shouldn't delete")
|
||||||
|
|
||||||
@ -335,7 +335,7 @@ class StackTest(common.HeatTestCase):
|
|||||||
self.stack.state)
|
self.stack.state)
|
||||||
|
|
||||||
def test_delete_trust_fail(self):
|
def test_delete_trust_fail(self):
|
||||||
class FakeKeystoneClientFail(fakes.FakeKeystoneClient):
|
class FakeKeystoneClientFail(fake_ks.FakeKeystoneClient):
|
||||||
def delete_trust(self, trust_id):
|
def delete_trust(self, trust_id):
|
||||||
raise kc_exceptions.Forbidden("Denied!")
|
raise kc_exceptions.Forbidden("Denied!")
|
||||||
|
|
||||||
@ -360,7 +360,7 @@ class StackTest(common.HeatTestCase):
|
|||||||
self.assertIn('Error deleting trust', self.stack.status_reason)
|
self.assertIn('Error deleting trust', self.stack.status_reason)
|
||||||
|
|
||||||
def test_delete_deletes_project(self):
|
def test_delete_deletes_project(self):
|
||||||
fkc = fakes.FakeKeystoneClient()
|
fkc = fake_ks.FakeKeystoneClient()
|
||||||
fkc.delete_stack_domain_project = mock.Mock()
|
fkc.delete_stack_domain_project = mock.Mock()
|
||||||
|
|
||||||
mock_kcp = self.patchobject(keystone.KeystoneClientPlugin, '_create',
|
mock_kcp = self.patchobject(keystone.KeystoneClientPlugin, '_create',
|
||||||
@ -489,7 +489,7 @@ class StackTest(common.HeatTestCase):
|
|||||||
|
|
||||||
def test_stack_user_project_id_delete_fail(self):
|
def test_stack_user_project_id_delete_fail(self):
|
||||||
|
|
||||||
class FakeKeystoneClientFail(fakes.FakeKeystoneClient):
|
class FakeKeystoneClientFail(fake_ks.FakeKeystoneClient):
|
||||||
def delete_stack_domain_project(self, project_id):
|
def delete_stack_domain_project(self, project_id):
|
||||||
raise kc_exceptions.Forbidden("Denied!")
|
raise kc_exceptions.Forbidden("Denied!")
|
||||||
|
|
||||||
|
@ -17,11 +17,11 @@ import six
|
|||||||
from heat.common import exception
|
from heat.common import exception
|
||||||
from heat.common import short_id
|
from heat.common import short_id
|
||||||
from heat.common import template_format
|
from heat.common import template_format
|
||||||
|
from heat.engine.clients.os.keystone import fake_keystoneclient as fake_ks
|
||||||
from heat.engine.resources import stack_user
|
from heat.engine.resources import stack_user
|
||||||
from heat.engine import scheduler
|
from heat.engine import scheduler
|
||||||
from heat.objects import resource_data as resource_data_object
|
from heat.objects import resource_data as resource_data_object
|
||||||
from heat.tests import common
|
from heat.tests import common
|
||||||
from heat.tests import fakes
|
|
||||||
from heat.tests import utils
|
from heat.tests import utils
|
||||||
|
|
||||||
|
|
||||||
@ -38,7 +38,7 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(StackUserTest, self).setUp()
|
super(StackUserTest, self).setUp()
|
||||||
self.fc = fakes.FakeKeystoneClient()
|
self.fc = fake_ks.FakeKeystoneClient()
|
||||||
|
|
||||||
def _user_create(self, stack_name, project_id, user_id,
|
def _user_create(self, stack_name, project_id, user_id,
|
||||||
resource_name='user', create_project=True,
|
resource_name='user', create_project=True,
|
||||||
@ -51,9 +51,9 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
stack_user.StackUser.keystone().MultipleTimes().AndReturn(self.fc)
|
stack_user.StackUser.keystone().MultipleTimes().AndReturn(self.fc)
|
||||||
|
|
||||||
if create_project:
|
if create_project:
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'create_stack_domain_project')
|
'create_stack_domain_project')
|
||||||
fakes.FakeKeystoneClient.create_stack_domain_project(
|
fake_ks.FakeKeystoneClient.create_stack_domain_project(
|
||||||
self.stack.id).AndReturn(project_id)
|
self.stack.id).AndReturn(project_id)
|
||||||
else:
|
else:
|
||||||
self.stack.set_stack_user_project_id(project_id)
|
self.stack.set_stack_user_project_id(project_id)
|
||||||
@ -62,10 +62,10 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
self.m.StubOutWithMock(short_id, 'get_id')
|
self.m.StubOutWithMock(short_id, 'get_id')
|
||||||
short_id.get_id(rsrc.uuid).MultipleTimes().AndReturn('aabbcc')
|
short_id.get_id(rsrc.uuid).MultipleTimes().AndReturn('aabbcc')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'create_stack_domain_user')
|
'create_stack_domain_user')
|
||||||
expected_username = '%s-%s-%s' % (stack_name, resource_name, 'aabbcc')
|
expected_username = '%s-%s-%s' % (stack_name, resource_name, 'aabbcc')
|
||||||
fakes.FakeKeystoneClient.create_stack_domain_user(
|
fake_ks.FakeKeystoneClient.create_stack_domain_user(
|
||||||
username=expected_username, password=password,
|
username=expected_username, password=password,
|
||||||
project_id=project_id).AndReturn(user_id)
|
project_id=project_id).AndReturn(user_id)
|
||||||
|
|
||||||
@ -101,9 +101,9 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
project_id='aprojectdel',
|
project_id='aprojectdel',
|
||||||
user_id='auserdel')
|
user_id='auserdel')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'delete_stack_domain_user')
|
'delete_stack_domain_user')
|
||||||
fakes.FakeKeystoneClient.delete_stack_domain_user(
|
fake_ks.FakeKeystoneClient.delete_stack_domain_user(
|
||||||
user_id='auserdel', project_id='aprojectdel').AndReturn(None)
|
user_id='auserdel', project_id='aprojectdel').AndReturn(None)
|
||||||
|
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
@ -119,9 +119,9 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
project_id='aprojectdel2',
|
project_id='aprojectdel2',
|
||||||
user_id='auserdel2')
|
user_id='auserdel2')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'delete_stack_domain_user')
|
'delete_stack_domain_user')
|
||||||
fakes.FakeKeystoneClient.delete_stack_domain_user(
|
fake_ks.FakeKeystoneClient.delete_stack_domain_user(
|
||||||
user_id='auserdel2', project_id='aprojectdel2').AndRaise(
|
user_id='auserdel2', project_id='aprojectdel2').AndRaise(
|
||||||
kc_exceptions.NotFound)
|
kc_exceptions.NotFound)
|
||||||
|
|
||||||
@ -152,9 +152,9 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
project_id='aprojectdel',
|
project_id='aprojectdel',
|
||||||
user_id='auserdel')
|
user_id='auserdel')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'disable_stack_domain_user')
|
'disable_stack_domain_user')
|
||||||
fakes.FakeKeystoneClient.disable_stack_domain_user(
|
fake_ks.FakeKeystoneClient.disable_stack_domain_user(
|
||||||
user_id='auserdel', project_id='aprojectdel').AndReturn(None)
|
user_id='auserdel', project_id='aprojectdel').AndReturn(None)
|
||||||
|
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
@ -170,13 +170,13 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
project_id='aprojectdel',
|
project_id='aprojectdel',
|
||||||
user_id='auserdel')
|
user_id='auserdel')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'disable_stack_domain_user')
|
'disable_stack_domain_user')
|
||||||
fakes.FakeKeystoneClient.disable_stack_domain_user(
|
fake_ks.FakeKeystoneClient.disable_stack_domain_user(
|
||||||
user_id='auserdel', project_id='aprojectdel').AndRaise(ValueError)
|
user_id='auserdel', project_id='aprojectdel').AndRaise(ValueError)
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'disable_stack_user')
|
'disable_stack_user')
|
||||||
fakes.FakeKeystoneClient.disable_stack_user(
|
fake_ks.FakeKeystoneClient.disable_stack_user(
|
||||||
user_id='auserdel').AndReturn(None)
|
user_id='auserdel').AndReturn(None)
|
||||||
|
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
@ -192,9 +192,9 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
project_id='aprojectdel',
|
project_id='aprojectdel',
|
||||||
user_id='auserdel')
|
user_id='auserdel')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'enable_stack_domain_user')
|
'enable_stack_domain_user')
|
||||||
fakes.FakeKeystoneClient.enable_stack_domain_user(
|
fake_ks.FakeKeystoneClient.enable_stack_domain_user(
|
||||||
user_id='auserdel', project_id='aprojectdel').AndReturn(None)
|
user_id='auserdel', project_id='aprojectdel').AndReturn(None)
|
||||||
|
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
@ -211,13 +211,13 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
project_id='aprojectdel',
|
project_id='aprojectdel',
|
||||||
user_id='auserdel')
|
user_id='auserdel')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'enable_stack_domain_user')
|
'enable_stack_domain_user')
|
||||||
fakes.FakeKeystoneClient.enable_stack_domain_user(
|
fake_ks.FakeKeystoneClient.enable_stack_domain_user(
|
||||||
user_id='auserdel', project_id='aprojectdel').AndRaise(ValueError)
|
user_id='auserdel', project_id='aprojectdel').AndRaise(ValueError)
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'enable_stack_user')
|
'enable_stack_user')
|
||||||
fakes.FakeKeystoneClient.enable_stack_user(
|
fake_ks.FakeKeystoneClient.enable_stack_user(
|
||||||
user_id='auserdel').AndReturn(None)
|
user_id='auserdel').AndReturn(None)
|
||||||
|
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
@ -235,9 +235,9 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
user_id='auserdel')
|
user_id='auserdel')
|
||||||
|
|
||||||
# create_stack_domain_user_keypair(self, user_id, project_id):
|
# create_stack_domain_user_keypair(self, user_id, project_id):
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'create_stack_domain_user_keypair')
|
'create_stack_domain_user_keypair')
|
||||||
fakes.FakeKeystoneClient.create_stack_domain_user_keypair(
|
fake_ks.FakeKeystoneClient.create_stack_domain_user_keypair(
|
||||||
user_id='auserdel', project_id='aprojectdel').AndReturn(
|
user_id='auserdel', project_id='aprojectdel').AndReturn(
|
||||||
self.fc.creds)
|
self.fc.creds)
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
@ -260,9 +260,9 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
user_id='auserdel')
|
user_id='auserdel')
|
||||||
|
|
||||||
# create_stack_domain_user_keypair(self, user_id, project_id):
|
# create_stack_domain_user_keypair(self, user_id, project_id):
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'create_stack_domain_user_keypair')
|
'create_stack_domain_user_keypair')
|
||||||
fakes.FakeKeystoneClient.create_stack_domain_user_keypair(
|
fake_ks.FakeKeystoneClient.create_stack_domain_user_keypair(
|
||||||
user_id='auserdel', project_id='aprojectdel').AndReturn(None)
|
user_id='auserdel', project_id='aprojectdel').AndReturn(None)
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
|
|
||||||
@ -276,9 +276,9 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
project_id='aprojectdel',
|
project_id='aprojectdel',
|
||||||
user_id='auserdel')
|
user_id='auserdel')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'delete_stack_domain_user_keypair')
|
'delete_stack_domain_user_keypair')
|
||||||
fakes.FakeKeystoneClient.delete_stack_domain_user_keypair(
|
fake_ks.FakeKeystoneClient.delete_stack_domain_user_keypair(
|
||||||
user_id='auserdel', project_id='aprojectdel',
|
user_id='auserdel', project_id='aprojectdel',
|
||||||
credential_id='acredential').AndReturn(None)
|
credential_id='acredential').AndReturn(None)
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
@ -304,14 +304,14 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
project_id='aprojectdel',
|
project_id='aprojectdel',
|
||||||
user_id='auserdel')
|
user_id='auserdel')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'delete_stack_domain_user_keypair')
|
'delete_stack_domain_user_keypair')
|
||||||
fakes.FakeKeystoneClient.delete_stack_domain_user_keypair(
|
fake_ks.FakeKeystoneClient.delete_stack_domain_user_keypair(
|
||||||
user_id='auserdel', project_id='aprojectdel',
|
user_id='auserdel', project_id='aprojectdel',
|
||||||
credential_id='acredential').AndRaise(ValueError())
|
credential_id='acredential').AndRaise(ValueError())
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'delete_ec2_keypair')
|
'delete_ec2_keypair')
|
||||||
fakes.FakeKeystoneClient.delete_ec2_keypair(
|
fake_ks.FakeKeystoneClient.delete_ec2_keypair(
|
||||||
user_id='auserdel', credential_id='acredential').AndReturn(None)
|
user_id='auserdel', credential_id='acredential').AndReturn(None)
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
|
|
||||||
@ -330,9 +330,9 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
project_id='aprojectdel',
|
project_id='aprojectdel',
|
||||||
user_id='auserdel')
|
user_id='auserdel')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'delete_stack_domain_user_keypair')
|
'delete_stack_domain_user_keypair')
|
||||||
fakes.FakeKeystoneClient.delete_stack_domain_user_keypair(
|
fake_ks.FakeKeystoneClient.delete_stack_domain_user_keypair(
|
||||||
user_id='auserdel', project_id='aprojectdel',
|
user_id='auserdel', project_id='aprojectdel',
|
||||||
credential_id='acredential').AndReturn(None)
|
credential_id='acredential').AndReturn(None)
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
@ -351,9 +351,9 @@ class StackUserTest(common.HeatTestCase):
|
|||||||
user_id='aabbcc',
|
user_id='aabbcc',
|
||||||
password='apassword')
|
password='apassword')
|
||||||
|
|
||||||
self.m.StubOutWithMock(fakes.FakeKeystoneClient,
|
self.m.StubOutWithMock(fake_ks.FakeKeystoneClient,
|
||||||
'stack_domain_user_token')
|
'stack_domain_user_token')
|
||||||
fakes.FakeKeystoneClient.stack_domain_user_token(
|
fake_ks.FakeKeystoneClient.stack_domain_user_token(
|
||||||
user_id='aabbcc', project_id='aproject123',
|
user_id='aabbcc', project_id='aproject123',
|
||||||
password='apassword').AndReturn('atoken123')
|
password='apassword').AndReturn('atoken123')
|
||||||
self.m.ReplayAll()
|
self.m.ReplayAll()
|
||||||
|
Loading…
Reference in New Issue
Block a user