Fix _retrive_k8s_master_url

If baymodel.apiserver_port is None, _retrive_k8s_master_url method return
invalid k8s master address. This fixes it.

Change-Id: Ieb907fbdb8a81b6b7a69f4d13549a24c3b58e6f8
Closes-Bug: #1411518
This commit is contained in:
OTSUKA, Yuanying 2015-01-16 15:48:46 +09:00
parent aa45150fd4
commit cf41146263
2 changed files with 41 additions and 2 deletions

View File

@ -49,7 +49,9 @@ def _retrive_k8s_master_url(ctxt, obj):
apiserver_port = cfg.CONF.kubernetes.k8s_port
if hasattr(obj, 'bay_uuid'):
obj = _retrive_bay(ctxt, obj)
baymodel = _retrive_baymodel(ctxt, obj)
baymodel = _retrive_baymodel(ctxt, obj)
if baymodel.apiserver_port is not None:
apiserver_port = baymodel.apiserver_port
params = {

View File

@ -12,6 +12,8 @@
# License for the specific language governing permissions and limitations
# under the License.
from oslo.config import cfg
from magnum.conductor.handlers import kube
from magnum import objects
from magnum.tests import base
@ -20,6 +22,12 @@ import mock
from mock import patch
cfg.CONF.import_opt('k8s_protocol', 'magnum.conductor.handlers.kube',
group='kubernetes')
cfg.CONF.import_opt('k8s_port', 'magnum.conductor.handlers.kube',
group='kubernetes')
class TestKube(base.BaseTestCase):
def setUp(self):
super(TestKube, self).setUp()
@ -62,7 +70,7 @@ class TestKube(base.BaseTestCase):
expected_context = 'context'
expected_master_address = 'master_address'
expected_baymodel_id = 'e74c40e0-d825-11e2-a28f-0800200c9a61'
expected_apiserver_port = 8080
expected_apiserver_port = 9999
pod = self.mock_pod()
pod.bay_uuid = 'bay_uuid'
@ -81,6 +89,35 @@ class TestKube(base.BaseTestCase):
expected_apiserver_port),
actual_master_address)
@patch('magnum.objects.Bay.get_by_uuid')
@patch('magnum.objects.BayModel.get_by_uuid')
def test_retrive_k8s_master_url_without_baymodel_apiserver_port(self,
mock_baymodel_get_by_uuid,
mock_bay_get_by_uuid):
expected_context = 'context'
expected_master_address = 'master_address'
expected_baymodel_id = 'e74c40e0-d825-11e2-a28f-0800200c9a61'
expected_protocol = cfg.CONF.kubernetes.k8s_protocol
expected_apiserver_port = cfg.CONF.kubernetes.k8s_port
resource = self.mock_pod()
resource.bay_uuid = 'bay_uuid'
bay = self.mock_bay()
bay.master_address = expected_master_address
bay.baymodel_id = expected_baymodel_id
baymodel = self.mock_baymodel()
baymodel.apiserver_port = None
mock_bay_get_by_uuid.return_value = bay
mock_baymodel_get_by_uuid.return_value = baymodel
actual_master_address = kube._retrive_k8s_master_url(expected_context,
resource)
self.assertEqual("%s://%s:%d" % (expected_protocol,
expected_master_address,
expected_apiserver_port),
actual_master_address)
@patch('magnum.conductor.handlers.kube._retrive_k8s_master_url')
def test_pod_create_with_success(self,
mock_retrive_k8s_master_url):