Implement service creation
Service creation is working from magnum api now. Change-Id: I97fbe4e47c444969ff77adb600b4fd7203eeb194changes/09/145709/1
parent
5d79a518bc
commit
bdabe2e592
|
@ -82,6 +82,9 @@ class Service(base.APIBase):
|
|||
service_definition_url = wtypes.text
|
||||
"""URL for service file to create the service"""
|
||||
|
||||
service_data = wtypes.text
|
||||
"""Data for service to create the service"""
|
||||
|
||||
links = wsme.wsattr([link.Link], readonly=True)
|
||||
"""A list containing a self link and associated service links"""
|
||||
|
||||
|
@ -296,6 +299,8 @@ class ServicesController(rest.RestController):
|
|||
# ignore service_definition_url as it was used for create service
|
||||
if field == 'service_definition_url':
|
||||
continue
|
||||
if field == 'service_data':
|
||||
continue
|
||||
try:
|
||||
patch_val = getattr(service, field)
|
||||
except AttributeError:
|
||||
|
|
|
@ -68,8 +68,9 @@ class Handler(object):
|
|||
|
||||
def service_create(self, ctxt, service):
|
||||
LOG.debug("service_create")
|
||||
k8s_master_url = _retrive_k8s_master_url(ctxt, service)
|
||||
# trigger a kubectl command
|
||||
status = self.kube_cli.service_create(service)
|
||||
status = self.kube_cli.service_create(k8s_master_url, service)
|
||||
if not status:
|
||||
return None
|
||||
# call the service object to persist in db
|
||||
|
|
|
@ -36,6 +36,7 @@ class Service(base.MagnumObject):
|
|||
'ip': obj_utils.str_or_none,
|
||||
'port': int,
|
||||
'service_definition_url': obj_utils.str_or_none,
|
||||
'service_data': obj_utils.str_or_none,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
|
@ -45,6 +46,8 @@ class Service(base.MagnumObject):
|
|||
# ignore service_definition_url as it was used for create service
|
||||
if field == 'service_definition_url':
|
||||
continue
|
||||
if field == 'service_data':
|
||||
continue
|
||||
service[field] = db_service[field]
|
||||
|
||||
service.obj_reset_changes()
|
||||
|
|
|
@ -28,6 +28,9 @@ class TestKube(base.BaseTestCase):
|
|||
def mock_pod(self):
|
||||
return objects.Pod({})
|
||||
|
||||
def mock_service(self):
|
||||
return objects.Service({})
|
||||
|
||||
def mock_bay(self):
|
||||
return objects.Bay({})
|
||||
|
||||
|
@ -89,3 +92,18 @@ class TestKube(base.BaseTestCase):
|
|||
|
||||
self.kube_handler.pod_create({}, expected_pod)
|
||||
self.assertEqual('failed', expected_pod.status)
|
||||
|
||||
@patch('magnum.conductor.handlers.kube._retrive_k8s_master_url')
|
||||
def test_service_create_with_success(self,
|
||||
mock_retrive_k8s_master_url):
|
||||
expected_master_url = 'master_address'
|
||||
expected_service = self.mock_service()
|
||||
expected_service.create = mock.MagicMock()
|
||||
|
||||
mock_retrive_k8s_master_url.return_value = expected_master_url
|
||||
with patch.object(self.kube_handler, 'kube_cli') as mock_kube_cli:
|
||||
mock_kube_cli.service_create.return_value = True
|
||||
|
||||
self.kube_handler.service_create({}, expected_service)
|
||||
mock_kube_cli.service_create.assert_called_once_with(
|
||||
expected_master_url, expected_service)
|
Loading…
Reference in New Issue