Merge "Get undercloud name in get_undercloud_registry()"
This commit is contained in:
commit
027a33befd
|
@ -17,7 +17,6 @@ import base64
|
|||
from concurrent import futures
|
||||
import hashlib
|
||||
import json
|
||||
import netifaces
|
||||
import os
|
||||
import random
|
||||
import re
|
||||
|
@ -27,6 +26,7 @@ from requests.adapters import HTTPAdapter
|
|||
import shutil
|
||||
import six
|
||||
from six.moves.urllib import parse
|
||||
import socket
|
||||
import subprocess
|
||||
import tempfile
|
||||
import tenacity
|
||||
|
@ -40,7 +40,6 @@ from tripleo_common.image.exception import ImageNotFoundException
|
|||
from tripleo_common.image.exception import ImageUploaderException
|
||||
from tripleo_common.image.exception import ImageUploaderThreadException
|
||||
from tripleo_common.image import image_export
|
||||
from tripleo_common.utils import common as common_utils
|
||||
from tripleo_common.utils.locks import threadinglock
|
||||
|
||||
|
||||
|
@ -99,15 +98,19 @@ DEFAULT_UPLOADER = 'python'
|
|||
|
||||
|
||||
def get_undercloud_registry():
|
||||
addr = 'localhost'
|
||||
if 'br-ctlplane' in netifaces.interfaces():
|
||||
addrs = netifaces.ifaddresses('br-ctlplane')
|
||||
if netifaces.AF_INET in addrs and addrs[netifaces.AF_INET]:
|
||||
addr = addrs[netifaces.AF_INET][0].get('addr', 'localhost')
|
||||
elif netifaces.AF_INET6 in addrs and addrs[netifaces.AF_INET6]:
|
||||
addr = addrs[netifaces.AF_INET6][0].get('addr', 'localhost')
|
||||
ctlplane_hostname = '.'.join([socket.gethostname().split('.')[0],
|
||||
'ctlplane'])
|
||||
cmd = ['getent', 'hosts', ctlplane_hostname]
|
||||
process = subprocess.Popen(cmd, stdout=subprocess.PIPE)
|
||||
out, err = process.communicate()
|
||||
|
||||
return '%s:%s' % (common_utils.bracket_ipv6(addr), '8787')
|
||||
if process.returncode != 0:
|
||||
raise ImageUploaderException('No entry for %s in /etc/hosts'
|
||||
% ctlplane_hostname)
|
||||
|
||||
address = out.split()[1]
|
||||
|
||||
return '%s:%s' % (address, '8787')
|
||||
|
||||
|
||||
class MakeSession(object):
|
||||
|
|
|
@ -93,49 +93,52 @@ class TestImageUploadManager(base.TestCase):
|
|||
key=operator.itemgetter('imagename'))
|
||||
self.assertEqual(sorted_expected_data, sorted_parsed_data)
|
||||
|
||||
@mock.patch('netifaces.ifaddresses')
|
||||
@mock.patch('netifaces.interfaces')
|
||||
def test_get_undercloud_registry(self, mock_interfaces, mock_addresses):
|
||||
mock_interfaces.return_value = ['lo', 'eth0']
|
||||
self.assertEqual(
|
||||
'localhost:8787',
|
||||
image_uploader.get_undercloud_registry()
|
||||
)
|
||||
@mock.patch('subprocess.Popen', autospec=True)
|
||||
@mock.patch('socket.gethostname', return_value='uc.somedomain')
|
||||
def test_get_undercloud_registry_ipv4(self, mock_gethostname,
|
||||
mock_popen):
|
||||
mock_process = mock.Mock()
|
||||
mock_process.communicate.return_value = (
|
||||
'192.0.2.1 uc.ctlplane.localdomain uc.ctlplane', '')
|
||||
mock_process.returncode = 0
|
||||
mock_popen.return_value = mock_process
|
||||
self.assertEqual('uc.ctlplane.localdomain:8787',
|
||||
image_uploader.get_undercloud_registry())
|
||||
|
||||
mock_interfaces.return_value = ['lo', 'eth0', 'br-ctlplane']
|
||||
mock_addresses.return_value = {
|
||||
2: [{'addr': '192.0.2.0'}]
|
||||
}
|
||||
self.assertEqual(
|
||||
'192.0.2.0:8787',
|
||||
image_uploader.get_undercloud_registry()
|
||||
)
|
||||
@mock.patch('subprocess.Popen', autospec=True)
|
||||
@mock.patch('socket.gethostname', return_value='uc.somedomain')
|
||||
def test_get_undercloud_registry_ipv6(self, mock_gethostname,
|
||||
mock_popen):
|
||||
mock_process = mock.Mock()
|
||||
mock_process.communicate.return_value = (
|
||||
'fd12::1 uc.ctlplane.localdomain uc.ctlplane', '')
|
||||
mock_process.returncode = 0
|
||||
mock_popen.return_value = mock_process
|
||||
self.assertEqual('uc.ctlplane.localdomain:8787',
|
||||
image_uploader.get_undercloud_registry())
|
||||
|
||||
@mock.patch('netifaces.ifaddresses')
|
||||
@mock.patch('netifaces.interfaces')
|
||||
@mock.patch('netifaces.AF_INET6', 10)
|
||||
def test_get_undercloud_registry_ipv6(self, mock_interfaces,
|
||||
mock_addresses):
|
||||
@mock.patch('subprocess.Popen', autospec=True)
|
||||
@mock.patch('socket.gethostname', return_value='undercloud.somedomain')
|
||||
def test_get_undercloud_registry_no_etc_hosts(self, mock_gethostname,
|
||||
mock_popen):
|
||||
mock_process = mock.Mock()
|
||||
mock_process.communicate.return_value = ('', '')
|
||||
mock_process.returncode = 2
|
||||
mock_popen.return_value = mock_process
|
||||
self.assertRaises(ImageUploaderException,
|
||||
image_uploader.get_undercloud_registry)
|
||||
|
||||
mock_interfaces.return_value = ['lo', 'eth0', 'br-ctlplane']
|
||||
mock_addresses.return_value = {
|
||||
10: [{'addr': 'fd12:3456:789a:1::1'}]
|
||||
}
|
||||
self.assertEqual(
|
||||
'[fd12:3456:789a:1::1]:8787',
|
||||
image_uploader.get_undercloud_registry()
|
||||
)
|
||||
|
||||
@mock.patch('netifaces.ifaddresses')
|
||||
@mock.patch('netifaces.interfaces')
|
||||
def test_get_push_destination(self, mock_interfaces, mock_addresses):
|
||||
mock_interfaces.return_value = ['lo', 'eth0', 'br-ctlplane']
|
||||
mock_addresses.return_value = {
|
||||
2: [{'addr': '192.0.2.0'}]
|
||||
}
|
||||
@mock.patch('subprocess.Popen', autospec=True)
|
||||
@mock.patch('socket.gethostname', return_value='undercloud.somedomain')
|
||||
def test_get_push_destination(self, mock_gethostname, mock_popen):
|
||||
mock_process = mock.Mock()
|
||||
mock_process.communicate.return_value = (
|
||||
'fd12::1 uc.ctlplane.localdomain uc.ctlplane', '')
|
||||
mock_process.returncode = 0
|
||||
mock_popen.return_value = mock_process
|
||||
manager = image_uploader.ImageUploadManager(self.filelist)
|
||||
self.assertEqual(
|
||||
'192.0.2.0:8787',
|
||||
'uc.ctlplane.localdomain:8787',
|
||||
manager.get_push_destination({})
|
||||
)
|
||||
self.assertEqual(
|
||||
|
@ -144,15 +147,15 @@ class TestImageUploadManager(base.TestCase):
|
|||
'192.0.2.1:8787'})
|
||||
)
|
||||
self.assertEqual(
|
||||
'192.0.2.0:8787',
|
||||
'uc.ctlplane.localdomain:8787',
|
||||
manager.get_push_destination({'push_destination': False})
|
||||
)
|
||||
self.assertEqual(
|
||||
'192.0.2.0:8787',
|
||||
'uc.ctlplane.localdomain:8787',
|
||||
manager.get_push_destination({'push_destination': True})
|
||||
)
|
||||
self.assertEqual(
|
||||
'192.0.2.0:8787',
|
||||
'uc.ctlplane.localdomain:8787',
|
||||
manager.get_push_destination({'push_destination': None})
|
||||
)
|
||||
|
||||
|
|
Loading…
Reference in New Issue