Commit 49aa2da8 authored by Lluis Gifre Renom's avatar Lluis Gifre Renom
Browse files

WebUI component:

- Implemented vlink removal
- Added sanity checks in device and link removal
parent ca65ef73
Loading
Loading
Loading
Loading
+14 −13
Original line number Diff line number Diff line
@@ -184,20 +184,21 @@ def logical(device_uuid: str):
@device.get('<path:device_uuid>/delete')
def delete(device_uuid):
    try:
        context_client.connect()

        # first, check if device exists!
        # request: DeviceId = DeviceId()
        # request.device_uuid.uuid = device_uuid
        # response: Device = client.GetDevice(request)
        # TODO: finalize implementation

        request = DeviceId()
        request.device_uuid.uuid = device_uuid # pylint: disable=no-member
        device_obj = get_device(
            context_client, device_uuid, rw_copy=False, include_components=False,
            include_config_rules=False, include_endpoints=False
        )
        if device_obj is None:
            flash('Device({:s}) not found'.format(str(device_uuid)), 'danger')
        else:
            device_client.connect()
        device_client.DeleteDevice(request)
            device_client.DeleteDevice(device_obj.device_id)
            device_client.close()

            flash(f'Device "{device_uuid}" deleted successfully!', 'success')

        context_client.close()
    except Exception as e: # pylint: disable=broad-except
        flash(f'Problem deleting device "{device_uuid}": {e.details()}', 'danger')
        current_app.logger.exception(e)
+13 −11
Original line number Diff line number Diff line
@@ -21,10 +21,12 @@ from common.tools.context_queries.EndPoint import get_endpoint_names
from common.tools.context_queries.Link import get_link
from common.tools.context_queries.Topology import get_topology
from context.client.ContextClient import ContextClient
from vnt_manager.client.VNTManagerClient import VNTManagerClient


link = Blueprint('link', __name__, url_prefix='/link')
context_client = ContextClient()
vntm_client = VNTManagerClient()

@link.get('/')
def home():
@@ -77,20 +79,20 @@ def detail(link_uuid: str):
@link.get('<path:link_uuid>/delete')
def delete(link_uuid):
    try:

        # first, check if link exists!
        # request: LinkId = LinkId()
        # request.link_uuid.uuid = link_uuid
        # response: Link = client.GetLink(request)
        # TODO: finalize implementation

        request = LinkId()
        request.link_uuid.uuid = link_uuid # pylint: disable=no-member
        context_client.connect()
        context_client.RemoveLink(request)
        context_client.close()

        link_obj = get_link(context_client, link_uuid, rw_copy=False)
        if link_obj is None:
            flash('Link({:s}) not found'.format(str(link_uuid)), 'danger')
        else:
            link_type = link_obj.link_type
            if link_type == LinkTypeEnum.LINKTYPE_VIRTUAL:
                vntm_client.RemoveVirtualLink(link_obj.link_id)
            else:
                context_client.RemoveLink(link_obj.link_id)
            flash(f'Link "{link_uuid}" deleted successfully!', 'success')

        context_client.close()
    except Exception as e: # pylint: disable=broad-except
        flash(f'Problem deleting link "{link_uuid}": {e.details()}', 'danger')
        current_app.logger.exception(e)