Implement service deletion
Service deletion is working from magnum api. Change-Id: Ifbd10246682dda32bb28bbc1d640ff365d53495d
This commit is contained in:
parent
b982600545
commit
444a202859
|
@ -338,6 +338,4 @@ class ServicesController(rest.RestController):
|
||||||
if self.from_services:
|
if self.from_services:
|
||||||
raise exception.OperationNotPermitted
|
raise exception.OperationNotPermitted
|
||||||
|
|
||||||
rpc_service = objects.Service.get_by_uuid(pecan.request.context,
|
pecan.request.rpcapi.service_delete(service_uuid)
|
||||||
service_uuid)
|
|
||||||
pecan.request.rpcapi.service_delete(rpc_service)
|
|
||||||
|
|
|
@ -68,8 +68,8 @@ class API(rpc_service.API):
|
||||||
# or figure out a clean way to interact with k8s.
|
# or figure out a clean way to interact with k8s.
|
||||||
return objects.Service.list(context, limit, marker, sort_key, sort_dir)
|
return objects.Service.list(context, limit, marker, sort_key, sort_dir)
|
||||||
|
|
||||||
def service_delete(self, service):
|
def service_delete(self, uuid):
|
||||||
return self._call('service_delete', service=service)
|
return self._call('service_delete', uuid=uuid)
|
||||||
|
|
||||||
def service_show(self, ctxt, uuid):
|
def service_show(self, ctxt, uuid):
|
||||||
return objects.Service.get_by_uuid(ctxt, uuid)
|
return objects.Service.get_by_uuid(ctxt, uuid)
|
||||||
|
|
|
@ -129,18 +129,18 @@ class KubeClient(object):
|
||||||
LOG.error("Couldn't get list of services due to error %s" % e)
|
LOG.error("Couldn't get list of services due to error %s" % e)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def service_delete(self, master_address, uuid):
|
def service_delete(self, master_address, name):
|
||||||
LOG.debug("service_delete %s" % uuid)
|
LOG.debug("service_delete %s" % name)
|
||||||
try:
|
try:
|
||||||
out, err = utils.trycmd('kubectl', 'delete', 'service', uuid,
|
out, err = utils.trycmd('kubectl', 'delete', 'service', name,
|
||||||
'-s', master_address)
|
'-s', master_address)
|
||||||
if err:
|
if err:
|
||||||
return False
|
return False
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
LOG.error("Couldn't delete service %s due to error %s"
|
LOG.error("Couldn't delete service %s due to error %s"
|
||||||
% (uuid, e))
|
% (name, e))
|
||||||
return False
|
|
||||||
return False
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
def service_get(self, master_address, uuid):
|
def service_get(self, master_address, uuid):
|
||||||
LOG.debug("service_get %s" % uuid)
|
LOG.debug("service_get %s" % uuid)
|
||||||
|
|
|
@ -98,10 +98,12 @@ class Handler(object):
|
||||||
LOG.debug("service_list")
|
LOG.debug("service_list")
|
||||||
return self.kube_cli.service_list()
|
return self.kube_cli.service_list()
|
||||||
|
|
||||||
def service_delete(self, ctxt, service):
|
def service_delete(self, ctxt, uuid):
|
||||||
LOG.debug("service_delete")
|
LOG.debug("service_delete")
|
||||||
|
service = objects.Service.get_by_uuid(ctxt, uuid)
|
||||||
|
k8s_master_url = _retrive_k8s_master_url(ctxt, service)
|
||||||
# trigger a kubectl command
|
# trigger a kubectl command
|
||||||
status = self.kube_cli.service_delete(service.uuid)
|
status = self.kube_cli.service_delete(k8s_master_url, service.name)
|
||||||
if not status:
|
if not status:
|
||||||
return None
|
return None
|
||||||
# call the service object to persist in db
|
# call the service object to persist in db
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
# See the License for the specific language governing permissions and
|
# See the License for the specific language governing permissions and
|
||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
from magnum.conductor import api
|
from magnum.conductor import api
|
||||||
|
from magnum import objects
|
||||||
from magnum.tests.db import base as db_base
|
from magnum.tests.db import base as db_base
|
||||||
|
|
||||||
from mock import patch
|
from mock import patch
|
||||||
|
@ -21,7 +22,8 @@ class TestServiceController(db_base.DbTestCase):
|
||||||
service.create()
|
service.create()
|
||||||
return service
|
return service
|
||||||
|
|
||||||
def mock_service_destroy(self, service):
|
def mock_service_destroy(self, uuid):
|
||||||
|
service = objects.Service.get_by_uuid({}, uuid)
|
||||||
service.destroy()
|
service.destroy()
|
||||||
|
|
||||||
def test_service_api(self):
|
def test_service_api(self):
|
||||||
|
|
|
@ -89,12 +89,11 @@ class RPCAPITestCase(base.DbTestCase):
|
||||||
version='1.0',
|
version='1.0',
|
||||||
service=self.fake_service)
|
service=self.fake_service)
|
||||||
|
|
||||||
# TODO(sdake) the parameters to delete operations are highly suspect
|
|
||||||
def test_service_delete(self):
|
def test_service_delete(self):
|
||||||
self._test_rpcapi('service_delete',
|
self._test_rpcapi('service_delete',
|
||||||
'call',
|
'call',
|
||||||
version='1.0',
|
version='1.0',
|
||||||
service=self.fake_service)
|
uuid=self.fake_service['uuid'])
|
||||||
|
|
||||||
def test_pod_create(self):
|
def test_pod_create(self):
|
||||||
self._test_rpcapi('pod_create',
|
self._test_rpcapi('pod_create',
|
||||||
|
|
Loading…
Reference in New Issue