Merge "Make sure we can get watch server url in uwsgi mode"
This commit is contained in:
commit
9195ead9bf
heat
@ -13,6 +13,7 @@
|
||||
|
||||
from oslo_config import cfg
|
||||
import six
|
||||
from six.moves import urllib
|
||||
|
||||
from heatclient import client as hc
|
||||
from heatclient import exc
|
||||
@ -91,12 +92,23 @@ class HeatClientPlugin(client_plugin.ClientPlugin):
|
||||
|
||||
def get_watch_server_url(self):
|
||||
cfn_url = self.get_heat_cfn_url()
|
||||
url_parts = cfn_url.split(':')
|
||||
port_and_version = url_parts[-1].split('/')
|
||||
port_and_version[0] = (
|
||||
six.text_type(cfg.CONF.heat_api_cloudwatch.bind_port))
|
||||
url_parts[-1] = '/'.join(port_and_version)
|
||||
return ':'.join(url_parts)
|
||||
parsed_url = urllib.parse.urlparse(cfn_url)
|
||||
separator = ':'
|
||||
(host, separator, port) = parsed_url.netloc.partition(separator)
|
||||
# The old url model, like http://localhost:port/v1
|
||||
if port:
|
||||
watch_api_port = (
|
||||
six.text_type(cfg.CONF.heat_api_cloudwatch.bind_port))
|
||||
replaced_netloc = ':'.join([host, str(watch_api_port)])
|
||||
parsed_url = parsed_url._replace(netloc=replaced_netloc)
|
||||
# The uwsgi url mode, like http://ip/heat-api-cfn/v1
|
||||
else:
|
||||
paths = parsed_url.path.split('/')
|
||||
paths[1] = 'heat-api-cloudwatch'
|
||||
replaced_paths = '/'.join(paths)
|
||||
parsed_url = parsed_url._replace(path=replaced_paths)
|
||||
|
||||
return urllib.parse.urlunparse(parsed_url)
|
||||
|
||||
def get_insecure_option(self):
|
||||
return self._get_client_option(CLIENT_NAME, 'insecure')
|
||||
|
@ -75,7 +75,7 @@ class ClientsTest(common.HeatTestCase):
|
||||
obj._get_client_option.return_value = result
|
||||
self.assertEqual(result, obj.get_heat_url())
|
||||
|
||||
def _client_cfn_url(self):
|
||||
def _client_cfn_url(self, use_uwsgi=False):
|
||||
con = mock.Mock()
|
||||
c = clients.Clients(con)
|
||||
con.clients = c
|
||||
@ -83,7 +83,10 @@ class ClientsTest(common.HeatTestCase):
|
||||
obj._get_client_option = mock.Mock()
|
||||
obj._get_client_option.return_value = None
|
||||
obj.url_for = mock.Mock(name="url_for")
|
||||
obj.url_for.return_value = "http://0.0.0.0:8000/v1/"
|
||||
if use_uwsgi:
|
||||
obj.url_for.return_value = "http://0.0.0.0/heat-api-cfn/v1/"
|
||||
else:
|
||||
obj.url_for.return_value = "http://0.0.0.0:8000/v1/"
|
||||
return obj
|
||||
|
||||
def test_clients_get_heat_cfn_url(self):
|
||||
@ -92,7 +95,13 @@ class ClientsTest(common.HeatTestCase):
|
||||
|
||||
def test_clients_get_watch_server_url(self):
|
||||
obj = self._client_cfn_url()
|
||||
self.assertEqual("http://0.0.0.0:8003/v1/", obj.get_watch_server_url())
|
||||
self.assertEqual("http://0.0.0.0:8003/v1/",
|
||||
obj.get_watch_server_url())
|
||||
|
||||
def test_clients_get_watch_server_url_use_uwsgi(self):
|
||||
obj = self._client_cfn_url(use_uwsgi=True)
|
||||
self.assertEqual("http://0.0.0.0/heat-api-cloudwatch/v1/",
|
||||
obj.get_watch_server_url())
|
||||
|
||||
def test_clients_get_heat_cfn_metadata_url(self):
|
||||
obj = self._client_cfn_url()
|
||||
|
@ -786,14 +786,14 @@ class ServersTest(common.HeatTestCase):
|
||||
|
||||
@mock.patch.object(heat_plugin.HeatClientPlugin, 'url_for')
|
||||
def test_server_create_software_config(self, fake_url):
|
||||
fake_url.return_value = 'the-cfn-url'
|
||||
fake_url.return_value = 'http://ip:port/v1'
|
||||
server = self._server_create_software_config()
|
||||
|
||||
self.assertEqual({
|
||||
'os-collect-config': {
|
||||
'cfn': {
|
||||
'access_key_id': '4567',
|
||||
'metadata_url': 'the-cfn-url/v1/',
|
||||
'metadata_url': 'http://ip:port/v1/',
|
||||
'path': 'WebServer.Metadata',
|
||||
'secret_access_key': '8901',
|
||||
'stack_name': 'software_config_s'
|
||||
@ -805,13 +805,13 @@ class ServersTest(common.HeatTestCase):
|
||||
|
||||
@mock.patch.object(heat_plugin.HeatClientPlugin, 'url_for')
|
||||
def test_resolve_attribute_os_collect_config(self, fake_url):
|
||||
fake_url.return_value = 'the-cfn-url'
|
||||
fake_url.return_value = 'http://ip/heat-api-cfn/v1'
|
||||
server = self._server_create_software_config()
|
||||
|
||||
self.assertEqual({
|
||||
'cfn': {
|
||||
'access_key_id': '4567',
|
||||
'metadata_url': 'the-cfn-url/v1/',
|
||||
'metadata_url': 'http://ip/heat-api-cfn/v1/',
|
||||
'path': 'WebServer.Metadata',
|
||||
'secret_access_key': '8901',
|
||||
'stack_name': 'software_config_s'
|
||||
@ -822,14 +822,14 @@ class ServersTest(common.HeatTestCase):
|
||||
@mock.patch.object(heat_plugin.HeatClientPlugin, 'url_for')
|
||||
def test_server_create_software_config_metadata(self, fake_url):
|
||||
md = {'os-collect-config': {'polling_interval': 10}}
|
||||
fake_url.return_value = 'the-cfn-url'
|
||||
fake_url.return_value = 'http://ip/heat-api-cfn/v1'
|
||||
server = self._server_create_software_config(md=md)
|
||||
|
||||
self.assertEqual({
|
||||
'os-collect-config': {
|
||||
'cfn': {
|
||||
'access_key_id': '4567',
|
||||
'metadata_url': 'the-cfn-url/v1/',
|
||||
'metadata_url': 'http://ip/heat-api-cfn/v1/',
|
||||
'path': 'WebServer.Metadata',
|
||||
'secret_access_key': '8901',
|
||||
'stack_name': 'software_config_s'
|
||||
@ -1650,7 +1650,7 @@ class ServersTest(common.HeatTestCase):
|
||||
|
||||
@mock.patch.object(heat_plugin.HeatClientPlugin, 'url_for')
|
||||
def test_server_update_metadata_software_config(self, fake_url):
|
||||
fake_url.return_value = 'the-cfn-url'
|
||||
fake_url.return_value = 'http://ip:port/v1'
|
||||
server, ud_tmpl = self._server_create_software_config(
|
||||
stack_name='update_meta_sc', ret_tmpl=True)
|
||||
|
||||
@ -1658,7 +1658,7 @@ class ServersTest(common.HeatTestCase):
|
||||
'os-collect-config': {
|
||||
'cfn': {
|
||||
'access_key_id': '4567',
|
||||
'metadata_url': 'the-cfn-url/v1/',
|
||||
'metadata_url': 'http://ip:port/v1/',
|
||||
'path': 'WebServer.Metadata',
|
||||
'secret_access_key': '8901',
|
||||
'stack_name': 'update_meta_sc'
|
||||
@ -1678,7 +1678,7 @@ class ServersTest(common.HeatTestCase):
|
||||
@mock.patch.object(heat_plugin.HeatClientPlugin, 'url_for')
|
||||
def test_server_update_metadata_software_config_merge(self, fake_url):
|
||||
md = {'os-collect-config': {'polling_interval': 10}}
|
||||
fake_url.return_value = 'the-cfn-url'
|
||||
fake_url.return_value = 'http://ip/heat-api-cfn/v1'
|
||||
server, ud_tmpl = self._server_create_software_config(
|
||||
stack_name='update_meta_sc', ret_tmpl=True,
|
||||
md=md)
|
||||
@ -1687,7 +1687,7 @@ class ServersTest(common.HeatTestCase):
|
||||
'os-collect-config': {
|
||||
'cfn': {
|
||||
'access_key_id': '4567',
|
||||
'metadata_url': 'the-cfn-url/v1/',
|
||||
'metadata_url': 'http://ip/heat-api-cfn/v1/',
|
||||
'path': 'WebServer.Metadata',
|
||||
'secret_access_key': '8901',
|
||||
'stack_name': 'update_meta_sc'
|
||||
@ -1708,7 +1708,7 @@ class ServersTest(common.HeatTestCase):
|
||||
@mock.patch.object(heat_plugin.HeatClientPlugin, 'url_for')
|
||||
def test_server_update_software_config_transport(self, fake_url):
|
||||
md = {'os-collect-config': {'polling_interval': 10}}
|
||||
fake_url.return_value = 'the-cfn-url'
|
||||
fake_url.return_value = 'http://ip/heat-api-cfn/v1'
|
||||
server = self._server_create_software_config(
|
||||
stack_name='update_meta_sc', md=md)
|
||||
|
||||
@ -1716,7 +1716,7 @@ class ServersTest(common.HeatTestCase):
|
||||
'os-collect-config': {
|
||||
'cfn': {
|
||||
'access_key_id': '4567',
|
||||
'metadata_url': 'the-cfn-url/v1/',
|
||||
'metadata_url': 'http://ip/heat-api-cfn/v1/',
|
||||
'path': 'WebServer.Metadata',
|
||||
'secret_access_key': '8901',
|
||||
'stack_name': 'update_meta_sc'
|
||||
|
Loading…
x
Reference in New Issue
Block a user