Service create need filename as parameter
This is the backend change for patch Iaae8486 The k8s service create only has one parameter as filename, this patch is updating magnum backend api can use filename as parameter when creating service. Change-Id: I67f0cea72b00f1ce35bf3e8c49153daf1d2fff68changes/87/143787/3
parent
01e4d151e6
commit
8ac4dc813f
|
@ -79,6 +79,9 @@ class Service(base.APIBase):
|
|||
port = wtypes.IntegerType()
|
||||
"""Port of this service"""
|
||||
|
||||
service_definition_url = wtypes.text
|
||||
"""URL for service file to create the service"""
|
||||
|
||||
links = wsme.wsattr([link.Link], readonly=True)
|
||||
"""A list containing a self link and associated service links"""
|
||||
|
||||
|
@ -290,6 +293,9 @@ class ServicesController(rest.RestController):
|
|||
|
||||
# Update only the fields that have changed
|
||||
for field in objects.Service.fields:
|
||||
# ignore service_definition_url as it was used for create service
|
||||
if field == 'service_definition_url':
|
||||
continue
|
||||
try:
|
||||
patch_val = getattr(service, field)
|
||||
except AttributeError:
|
||||
|
@ -314,4 +320,4 @@ class ServicesController(rest.RestController):
|
|||
|
||||
rpc_service = objects.Service.get_by_uuid(pecan.request.context,
|
||||
service_uuid)
|
||||
pecan.request.rpcapi.service_delete(rpc_service)
|
||||
pecan.request.rpcapi.service_delete(rpc_service)
|
||||
|
|
|
@ -35,7 +35,13 @@ class KubeClient(object):
|
|||
def service_create(service):
|
||||
LOG.debug("service_create with contents %s" % service)
|
||||
try:
|
||||
out, err = utils.trycmd('kubectl', 'create', '-f', service)
|
||||
if service.service_definition_url:
|
||||
out, err = utils.trycmd('kubectl', 'create', '-f',
|
||||
service.service_definition_url)
|
||||
else:
|
||||
# TODO(jay-lau-513) Translate the contents to a json stdin
|
||||
out, err = utils.trycmd('echo service | kubectl', 'create',
|
||||
'-f', '-')
|
||||
if err:
|
||||
return False
|
||||
except Exception as e:
|
||||
|
|
|
@ -34,13 +34,17 @@ class Service(base.MagnumObject):
|
|||
'labels': obj_utils.dict_or_none,
|
||||
'selector': obj_utils.dict_or_none,
|
||||
'ip': obj_utils.str_or_none,
|
||||
'port': int
|
||||
'port': int,
|
||||
'service_definition_url': obj_utils.str_or_none,
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def _from_db_object(service, db_service):
|
||||
"""Converts a database entity to a formal object."""
|
||||
for field in service.fields:
|
||||
# ignore service_definition_url as it was used for create service
|
||||
if field == 'service_definition_url':
|
||||
continue
|
||||
service[field] = db_service[field]
|
||||
|
||||
service.obj_reset_changes()
|
||||
|
|
|
@ -32,7 +32,8 @@ class TestServiceController(db_base.DbTestCase):
|
|||
'"bay_uuid": "7ae81bb3-dec3-4289-8d6c-da80bd8001ae",' \
|
||||
'"labels": {"bar": "foo"},' \
|
||||
'"selector": {"bar": "foo"}, "ip": "172.17.2.3",' \
|
||||
'"port": 88}'
|
||||
'"port": 88,' \
|
||||
'"service_definition_url": "http://172.17.1.2/svc.json"}'
|
||||
response = self.app.post('/v1/services',
|
||||
params=params,
|
||||
content_type='application/json')
|
||||
|
|
Loading…
Reference in New Issue