148 lines
4.0 KiB
Python
148 lines
4.0 KiB
Python
# Copyright 2015 Red Hat, Inc.
|
|
#
|
|
# 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.
|
|
#
|
|
|
|
import mock
|
|
from osc_lib.tests import utils
|
|
|
|
from tripleoclient.tests import fakes
|
|
|
|
|
|
FAKE_STACK = {
|
|
'parameters': {
|
|
'ControllerCount': 1,
|
|
'ComputeCount': 1,
|
|
'ObjectStorageCount': 0,
|
|
'BlockStorageCount': 0,
|
|
'CephStorageCount': 0,
|
|
'DeployIdentifier': '',
|
|
},
|
|
'stack_name': 'overcloud',
|
|
'stack_status': "CREATE_COMPLETE",
|
|
'outputs': [{
|
|
'output_key': 'KeystoneURL',
|
|
'output_value': 'http://0.0.0.0:8000',
|
|
}, {
|
|
'output_key': 'EndpointMap',
|
|
'output_value': {
|
|
'KeystoneAdmin': {
|
|
'host': '0.0.0.0',
|
|
'uri': 'http://0.0.0.0:35357',
|
|
'port': 35357,
|
|
},
|
|
'KeystoneInternal': {
|
|
'host': '0.0.0.0',
|
|
'uri': 'http://0.0.0.0:5000',
|
|
'port': 5000,
|
|
},
|
|
'KeystonePublic': {
|
|
'host': '0.0.0.0',
|
|
'uri': 'http://0.0.0.0:5000',
|
|
'port': 5000,
|
|
},
|
|
'NovaAdmin': {
|
|
'host': '0.0.0.0',
|
|
'uri': 'http://0.0.0.0:5000',
|
|
'port': 8774,
|
|
},
|
|
'NovaInternal': {
|
|
'host': '0.0.0.0',
|
|
'uri': 'http://0.0.0.0:5000',
|
|
'port': 8774,
|
|
},
|
|
'NovaPublic': {
|
|
'host': '0.0.0.0',
|
|
'uri': 'https://0.0.0.0:8774',
|
|
'port': 8774,
|
|
},
|
|
}
|
|
}]
|
|
}
|
|
|
|
|
|
def create_to_dict_mock(**kwargs):
|
|
mock_with_to_dict = mock.Mock()
|
|
mock_with_to_dict.configure_mock(**kwargs)
|
|
mock_with_to_dict.to_dict.return_value = kwargs
|
|
return mock_with_to_dict
|
|
|
|
|
|
def create_tht_stack(**kwargs):
|
|
stack = FAKE_STACK.copy()
|
|
stack.update(kwargs)
|
|
return create_to_dict_mock(**stack)
|
|
|
|
|
|
def create_env_with_ntp(**kwargs):
|
|
env = {
|
|
'parameter_defaults': {
|
|
'CinderEnableRbdBackend': True,
|
|
'NtpServer': 'ntp.local',
|
|
},
|
|
}
|
|
env.update(kwargs)
|
|
return env
|
|
|
|
|
|
def create_env(**kwargs):
|
|
env = {
|
|
'parameter_defaults': {
|
|
'CinderEnableRbdBackend': True,
|
|
},
|
|
}
|
|
env.update(kwargs)
|
|
return env
|
|
|
|
|
|
class FakeClientWrapper(object):
|
|
|
|
def __init__(self):
|
|
self._instance = mock.Mock()
|
|
self.object_store = FakeObjectClient()
|
|
|
|
def messaging_websocket(self):
|
|
return fakes.FakeWebSocket()
|
|
|
|
|
|
class FakeObjectClient(object):
|
|
|
|
def __init__(self):
|
|
self._instance = mock.Mock()
|
|
self.put_object = mock.Mock()
|
|
|
|
def get_object(self, *args):
|
|
return [None, "fake"]
|
|
|
|
def get_container(self, *args):
|
|
return [None, [{"name": "fake"}]]
|
|
|
|
|
|
class TestDeployOvercloud(utils.TestCommand):
|
|
|
|
def setUp(self):
|
|
super(TestDeployOvercloud, self).setUp()
|
|
|
|
self.app.client_manager.auth_ref = mock.Mock(auth_token="TOKEN")
|
|
self.app.client_manager.baremetal = mock.Mock()
|
|
self.app.client_manager.compute = mock.Mock()
|
|
self.app.client_manager.identity = mock.Mock()
|
|
self.app.client_manager.image = mock.Mock()
|
|
self.app.client_manager.network = mock.Mock()
|
|
self.app.client_manager.orchestration = mock.Mock()
|
|
workflow = execution = mock.Mock()
|
|
execution.id = "IDID"
|
|
workflow.executions.create.return_value = execution
|
|
self.app.client_manager.workflow_engine = workflow
|
|
self.app.client_manager.tripleoclient = FakeClientWrapper()
|