
Note that Horizon still uses version v1_1, so we are still getting the warnings. Change-Id: I32fe0f47c332ffb78f8774a245f0430a96cc7cf7
135 lines
5.0 KiB
Python
135 lines
5.0 KiB
Python
#
|
|
# 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.
|
|
|
|
from __future__ import absolute_import
|
|
|
|
from django.utils import unittest
|
|
from heatclient.v1 import events
|
|
import mock
|
|
from mock import patch # noqa
|
|
|
|
from tuskar_ui import api
|
|
import tuskar_ui.api.heat # noqa
|
|
from tuskar_ui.test import helpers as test
|
|
|
|
|
|
class HeatAPITests(test.APITestCase):
|
|
def test_stack_list(self):
|
|
stacks = self.heatclient_stacks.list()
|
|
|
|
with patch('openstack_dashboard.api.heat.stacks_list',
|
|
return_value=(stacks, None, None)):
|
|
stacks = api.heat.Stack.list(self.request)
|
|
for stack in stacks:
|
|
self.assertIsInstance(stack, api.heat.Stack)
|
|
self.assertEqual(1, len(stacks))
|
|
|
|
def test_stack_get(self):
|
|
stack = self.heatclient_stacks.first()
|
|
|
|
with patch('openstack_dashboard.api.heat.stack_get',
|
|
return_value=stack):
|
|
ret_val = api.heat.Stack.get(self.request, stack.id)
|
|
self.assertIsInstance(ret_val, api.heat.Stack)
|
|
|
|
def test_stack_plan(self):
|
|
stack = api.heat.Stack(self.heatclient_stacks.first(),
|
|
self.request)
|
|
plan = self.tuskarclient_plans.first()
|
|
|
|
with patch('tuskarclient.v2.plans.PlanManager.list',
|
|
return_value=[plan]):
|
|
ret_val = stack.plan
|
|
self.assertIsInstance(ret_val, api.tuskar.Plan)
|
|
|
|
def test_stack_events(self):
|
|
event_list = self.heatclient_events.list()
|
|
stack = self.heatclient_stacks.first()
|
|
|
|
with patch('openstack_dashboard.api.heat.events_list',
|
|
return_value=event_list):
|
|
ret_val = api.heat.Stack(stack).events
|
|
for e in ret_val:
|
|
self.assertIsInstance(e, events.Event)
|
|
self.assertEqual(8, len(ret_val))
|
|
|
|
def test_stack_is_deployed(self):
|
|
stack = api.heat.Stack(self.heatclient_stacks.first())
|
|
ret_val = stack.is_deployed
|
|
self.assertFalse(ret_val)
|
|
|
|
def test_stack_is_updating(self):
|
|
stack = api.heat.Stack(self.heatclient_stacks.first())
|
|
ret_val = stack.is_updating
|
|
self.assertFalse(ret_val)
|
|
|
|
def test_stack_is_deploying(self):
|
|
stack = api.heat.Stack(self.heatclient_stacks.first())
|
|
ret_val = stack.is_deploying
|
|
self.assertFalse(ret_val)
|
|
|
|
@unittest.skip("Add appropriate test data to deal with nested stacks.")
|
|
def test_stack_resources(self):
|
|
stack = api.heat.Stack(self.heatclient_stacks.first(),
|
|
request=self.request)
|
|
resources = self.heatclient_resources.list()
|
|
nodes = self.baremetalclient_nodes.list()
|
|
instances = []
|
|
|
|
with patch('openstack_dashboard.api.base.is_service_enabled',
|
|
return_value=False):
|
|
with patch('openstack_dashboard.api.heat.resources_list',
|
|
return_value=resources):
|
|
with patch('openstack_dashboard.api.nova.server_list',
|
|
return_value=(instances, None)):
|
|
with patch('novaclient.v2.contrib.baremetal.'
|
|
'BareMetalNodeManager.list',
|
|
return_value=nodes):
|
|
ret_val = stack.resources()
|
|
|
|
for i in ret_val:
|
|
self.assertIsInstance(i, api.heat.Resource)
|
|
self.assertEqual(4, len(ret_val))
|
|
|
|
def test_stack_keystone_ip(self):
|
|
stack = api.heat.Stack(self.heatclient_stacks.first())
|
|
|
|
self.assertEqual('192.0.2.23', stack.keystone_ip)
|
|
|
|
def test_stack_dashboard_url(self):
|
|
stack = api.heat.Stack(self.heatclient_stacks.first())
|
|
stack.plan = api.tuskar.Plan(self.tuskarclient_plans.first())
|
|
|
|
mocked_service = mock.Mock(id='horizon_id')
|
|
mocked_service.name = 'horizon'
|
|
|
|
services = [mocked_service]
|
|
endpoints = [mock.Mock(service_id='horizon_id',
|
|
adminurl='http://192.0.2.23:/admin'), ]
|
|
|
|
services_obj = mock.Mock(
|
|
**{'list.return_value': services, })
|
|
|
|
endpoints_obj = mock.Mock(
|
|
**{'list.return_value': endpoints, })
|
|
|
|
overcloud_keystone_client = mock.Mock(
|
|
services=services_obj,
|
|
endpoints=endpoints_obj)
|
|
|
|
with patch('tuskar_ui.api.heat.overcloud_keystoneclient',
|
|
return_value=overcloud_keystone_client) as client_get:
|
|
self.assertEqual(['http://192.0.2.23:/admin'],
|
|
stack.dashboard_urls)
|
|
self.assertEqual(client_get.call_count, 1)
|