Remove deprecated optical apps

Change-Id: Ia79855b97f1daef7f325bb9697a040b729e8a794
diff --git a/apps/optical/BUCK b/apps/optical/BUCK
deleted file mode 100644
index c70cbb8..0000000
--- a/apps/optical/BUCK
+++ /dev/null
@@ -1,16 +0,0 @@
-COMPILE_DEPS = [
-    '//lib:CORE_DEPS',
-    '//apps/optical-model:onos-apps-optical-model',
-]
-
-osgi_jar_with_tests (
-    deps = COMPILE_DEPS,
-)
-
-onos_app (
-    title = 'Packet/Optical Use-Case App',
-    category = 'Traffic Steering',
-    url = 'http://onosproject.org',
-    description = 'Packet/Optical use-case application.',
-    required_apps = [ 'org.onosproject.optical-model' ],
-)
diff --git a/apps/optical/pom.xml b/apps/optical/pom.xml
deleted file mode 100644
index 43b96e9..0000000
--- a/apps/optical/pom.xml
+++ /dev/null
@@ -1,75 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Copyright 2014-present Open Networking Laboratory
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~     http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.onosproject</groupId>
-        <artifactId>onos-apps</artifactId>
-        <version>1.11.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>onos-app-optical</artifactId>
-    <packaging>bundle</packaging>
-
-    <description>Packet/Optical use-case application</description>
-
-    <properties>
-        <onos.app.name>org.onosproject.optical</onos.app.name>
-        <onos.app.title>Packet/Optical Use-Case App</onos.app.title>
-        <onos.app.category>Traffic Steering</onos.app.category>
-        <onos.app.url>http://onosproject.org</onos.app.url>
-        <onos.app.readme>Packet/Optical use-case application.</onos.app.readme>
-        <onos.app.requires>
-            org.onosproject.optical-model
-        </onos.app.requires>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.onosproject</groupId>
-            <artifactId>onos-optical-model</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.onosproject</groupId>
-            <artifactId>onos-cli</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.karaf.shell</groupId>
-            <artifactId>org.apache.karaf.shell.console</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-annotations</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.onosproject</groupId>
-            <artifactId>onos-core-serializers</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-    </dependencies>
-
-</project>
diff --git a/apps/optical/src/main/java/org/onosproject/optical/OpticalLinkProvider.java b/apps/optical/src/main/java/org/onosproject/optical/OpticalLinkProvider.java
deleted file mode 100644
index c042abb..0000000
--- a/apps/optical/src/main/java/org/onosproject/optical/OpticalLinkProvider.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright 2014-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.optical;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.Link;
-import org.onosproject.net.Port;
-import org.onosproject.net.device.DeviceEvent;
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.link.DefaultLinkDescription;
-import org.onosproject.net.link.LinkDescription;
-import org.onosproject.net.link.LinkEvent;
-import org.onosproject.net.link.LinkListener;
-import org.onosproject.net.link.LinkProvider;
-import org.onosproject.net.link.LinkProviderRegistry;
-import org.onosproject.net.link.LinkProviderService;
-import org.onosproject.net.link.LinkService;
-import org.onosproject.net.provider.AbstractProvider;
-import org.onosproject.net.provider.ProviderId;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.onosproject.net.Link.Type.OPTICAL;
-
-/**
- * Ancillary provider to activate/deactivate optical links as their respective
- * devices go online or offline.
- *
- * @deprecated in Goldeneye (1.6.0)
- */
-@Deprecated
-@Component(immediate = true)
-public class OpticalLinkProvider extends AbstractProvider implements LinkProvider {
-
-    private static final Logger log = LoggerFactory.getLogger(OpticalLinkProvider.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected LinkProviderRegistry registry;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected DeviceService deviceService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected LinkService linkService;
-
-    private LinkProviderService providerService;
-    private DeviceListener deviceListener = new InternalDeviceListener();
-    private LinkListener linkListener = new InternalLinkListener();
-
-    public OpticalLinkProvider() {
-        super(new ProviderId("optical", "org.onosproject.optical"));
-    }
-
-    @Activate
-    protected void activate() {
-        deviceService.addListener(deviceListener);
-        linkService.addListener(linkListener);
-        providerService = registry.register(this);
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        deviceService.removeListener(deviceListener);
-        linkService.removeListener(linkListener);
-        registry.unregister(this);
-        log.info("Stopped");
-    }
-
-    //Listens to device events and processes their links.
-    private class InternalDeviceListener implements DeviceListener {
-        @Override
-        public void event(DeviceEvent event) {
-            DeviceEvent.Type type = event.type();
-            Device device = event.subject();
-            if (type == DeviceEvent.Type.DEVICE_AVAILABILITY_CHANGED ||
-                    type == DeviceEvent.Type.DEVICE_ADDED ||
-                    type == DeviceEvent.Type.DEVICE_UPDATED) {
-                processDeviceLinks(device);
-            } else if (type == DeviceEvent.Type.PORT_UPDATED) {
-                processPortLinks(device, event.port());
-            }
-        }
-    }
-
-    //Listens to link events and processes the link additions.
-    private class InternalLinkListener implements LinkListener {
-        @Override
-        public void event(LinkEvent event) {
-            if (event.type() == LinkEvent.Type.LINK_ADDED) {
-                Link link = event.subject();
-                if ("cfg".equals(link.providerId().scheme())) {
-                    processLink(event.subject());
-                }
-            }
-        }
-    }
-
-    private void processDeviceLinks(Device device) {
-        for (Link link : linkService.getDeviceLinks(device.id())) {
-            if (link.isExpected() && link.type() == OPTICAL) {
-                processLink(link);
-            }
-        }
-    }
-
-    private void processPortLinks(Device device, Port port) {
-        ConnectPoint connectPoint = new ConnectPoint(device.id(), port.number());
-        for (Link link : linkService.getLinks(connectPoint)) {
-            if (link.isExpected() && link.type() == OPTICAL) {
-                processLink(link);
-            }
-        }
-    }
-
-    private void processLink(Link link) {
-        DeviceId srcId = link.src().deviceId();
-        DeviceId dstId = link.dst().deviceId();
-        Port srcPort = deviceService.getPort(srcId, link.src().port());
-        Port dstPort = deviceService.getPort(dstId, link.dst().port());
-
-        if (srcPort == null || dstPort == null) {
-            return; //FIXME remove this in favor of below TODO
-        }
-
-        boolean active = deviceService.isAvailable(srcId) &&
-                deviceService.isAvailable(dstId) &&
-                // TODO: should update be queued if src or dstPort is null?
-                //srcPort != null && dstPort != null &&
-                srcPort.isEnabled() && dstPort.isEnabled();
-
-        LinkDescription desc = new DefaultLinkDescription(link.src(), link.dst(), OPTICAL);
-        if (active) {
-            providerService.linkDetected(desc);
-        } else {
-            providerService.linkVanished(desc);
-        }
-    }
-}
diff --git a/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java b/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java
deleted file mode 100644
index e2674b6..0000000
--- a/apps/optical/src/main/java/org/onosproject/optical/OpticalPathProvisioner.java
+++ /dev/null
@@ -1,404 +0,0 @@
-/*
- * Copyright 2014-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.optical;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Component;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.onosproject.cluster.ClusterService;
-import org.onosproject.cluster.NodeId;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.mastership.MastershipService;
-import org.onosproject.net.CltSignalType;
-import org.onosproject.net.ConnectPoint;
-import org.onosproject.net.Device;
-import org.onosproject.net.Host;
-import org.onosproject.net.Link;
-import org.onosproject.net.OduSignalType;
-import org.onosproject.net.Path;
-import org.onosproject.net.Port;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.host.HostService;
-import org.onosproject.net.intent.HostToHostIntent;
-import org.onosproject.net.intent.Intent;
-import org.onosproject.net.intent.IntentEvent;
-import org.onosproject.net.intent.IntentListener;
-import org.onosproject.net.intent.IntentService;
-import org.onosproject.net.intent.IntentState;
-import org.onosproject.net.intent.OpticalCircuitIntent;
-import org.onosproject.net.intent.OpticalConnectivityIntent;
-import org.onosproject.net.intent.PointToPointIntent;
-import org.onosproject.net.optical.OchPort;
-import org.onosproject.net.optical.OduCltPort;
-import org.onosproject.net.topology.LinkWeight;
-import org.onosproject.net.topology.PathService;
-import org.onosproject.net.topology.TopologyEdge;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.onosproject.net.optical.device.OpticalDeviceServiceView.opticalView;
-
-/**
- * OpticalPathProvisioner listens for event notifications from the Intent F/W.
- * It generates one or more opticalConnectivityIntent(s) and submits (or withdraws) to Intent F/W
- * for adding/releasing capacity at the packet layer.
- *
- * @deprecated in Goldeneye (1.6.0)
- */
-
-@Deprecated
-@Component(immediate = true)
-public class OpticalPathProvisioner {
-
-    protected static final Logger log = LoggerFactory
-            .getLogger(OpticalPathProvisioner.class);
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    private IntentService intentService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected PathService pathService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected HostService hostService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected MastershipService mastershipService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected ClusterService clusterService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected DeviceService deviceService;
-
-    private ApplicationId appId;
-
-    private final InternalOpticalPathProvisioner pathProvisioner = new InternalOpticalPathProvisioner();
-
-    @Activate
-    protected void activate() {
-        deviceService = opticalView(deviceService);
-        intentService.addListener(pathProvisioner);
-        appId = coreService.registerApplication("org.onosproject.optical");
-        initOpticalPorts();
-        log.info("Started");
-    }
-
-    @Deactivate
-    protected void deactivate() {
-        intentService.removeListener(pathProvisioner);
-        log.info("Stopped");
-    }
-
-    /**
-     * Initialize availability of optical ports.
-     */
-    private void initOpticalPorts() {
-        // TODO: check for existing optical intents
-        return;
-    }
-
-    public class InternalOpticalPathProvisioner implements IntentListener {
-        @Override
-        public void event(IntentEvent event) {
-            switch (event.type()) {
-                case INSTALL_REQ:
-                    break;
-                case INSTALLED:
-                    break;
-                case FAILED:
-                    log.info("Intent {} failed, calling optical path provisioning app.", event.subject());
-                    setupLightpath(event.subject());
-                    break;
-                default:
-                    break;
-            }
-        }
-
-        private void setupLightpath(Intent intent) {
-            checkNotNull(intent);
-
-            // TODO change the coordination approach between packet intents and optical intents
-            // Low speed LLDP may cause multiple calls which are not expected
-
-            if (intentService.getIntentState(intent.key()) != IntentState.FAILED) {
-                return;
-            }
-
-            // Get source and destination based on intent type
-            ConnectPoint src;
-            ConnectPoint dst;
-            if (intent instanceof HostToHostIntent) {
-                HostToHostIntent hostToHostIntent = (HostToHostIntent) intent;
-
-                Host one = hostService.getHost(hostToHostIntent.one());
-                Host two = hostService.getHost(hostToHostIntent.two());
-
-                checkNotNull(one);
-                checkNotNull(two);
-
-                src = one.location();
-                dst = two.location();
-            } else if (intent instanceof PointToPointIntent) {
-                PointToPointIntent p2pIntent = (PointToPointIntent) intent;
-
-                src = p2pIntent.ingressPoint();
-                dst = p2pIntent.egressPoint();
-            } else {
-                return;
-            }
-
-            if (src == null || dst == null) {
-                return;
-            }
-
-            // Ignore if we're not the master for the intent's origin device
-            NodeId localNode = clusterService.getLocalNode().id();
-            NodeId sourceMaster = mastershipService.getMasterFor(src.deviceId());
-            if (!localNode.equals(sourceMaster)) {
-                return;
-            }
-
-            // Generate optical connectivity intents
-            List<Intent> intents = getOpticalIntents(src, dst);
-
-            // Submit the intents
-            for (Intent i : intents) {
-                intentService.submit(i);
-                log.debug("Submitted an intent: {}", i);
-            }
-        }
-
-        /**
-         * Returns list of cross connection points of missing optical path sections.
-         *
-         * Scans the given multi-layer path and looks for sections that use cross connect links.
-         * The ingress and egress points in the optical layer are returned in a list.
-         *
-         * @param path the multi-layer path
-         * @return list of cross connection points on the optical layer
-         */
-        private List<ConnectPoint> getCrossConnectPoints(Path path) {
-            boolean scanning = false;
-            List<ConnectPoint> connectPoints = new LinkedList<>();
-
-            for (Link link : path.links()) {
-                if (!isCrossConnectLink(link)) {
-                    continue;
-                }
-
-                if (scanning) {
-                    connectPoints.add(checkNotNull(link.src()));
-                    scanning = false;
-                } else {
-                    connectPoints.add(checkNotNull(link.dst()));
-                    scanning = true;
-                }
-            }
-
-            return connectPoints;
-        }
-
-        /**
-         * Checks if cross connect points are of same type.
-         *
-         * @param crossConnectPoints list of cross connection points
-         * @return true if cross connect point pairs are of same type, false otherwise
-         */
-        private boolean checkCrossConnectPoints(List<ConnectPoint> crossConnectPoints) {
-            checkArgument(crossConnectPoints.size() % 2 == 0);
-
-            Iterator<ConnectPoint> itr = crossConnectPoints.iterator();
-
-            while (itr.hasNext()) {
-                // checkArgument at start ensures we'll always have pairs of connect points
-                ConnectPoint src = itr.next();
-                ConnectPoint dst = itr.next();
-
-                Device.Type srcType = deviceService.getDevice(src.deviceId()).type();
-                Device.Type dstType = deviceService.getDevice(dst.deviceId()).type();
-
-                // Only support connections between identical port types
-                if (srcType != dstType) {
-                    log.warn("Unsupported mix of cross connect points");
-                    return false;
-                }
-            }
-
-            return true;
-        }
-
-        /**
-         * Scans the list of cross connection points and returns a list of optical connectivity intents.
-         *
-         * @param crossConnectPoints list of cross connection points
-         * @return list of optical connectivity intents
-         */
-        private List<Intent> getIntents(List<ConnectPoint> crossConnectPoints) {
-            checkArgument(crossConnectPoints.size() % 2 == 0);
-
-            List<Intent> intents = new LinkedList<>();
-            Iterator<ConnectPoint> itr = crossConnectPoints.iterator();
-
-            while (itr.hasNext()) {
-                // checkArgument at start ensures we'll always have pairs of connect points
-                ConnectPoint src = itr.next();
-                ConnectPoint dst = itr.next();
-
-                Port srcPort = deviceService.getPort(src.deviceId(), src.port());
-                Port dstPort = deviceService.getPort(dst.deviceId(), dst.port());
-
-                if (srcPort instanceof OduCltPort && dstPort instanceof OduCltPort) {
-                    // Create OTN circuit
-                    Intent circuitIntent = OpticalCircuitIntent.builder()
-                            .appId(appId)
-                            .src(src)
-                            .dst(dst)
-                            .signalType(CltSignalType.CLT_10GBE)
-                            .bidirectional(true)
-                            .build();
-                    intents.add(circuitIntent);
-                } else if (srcPort instanceof OchPort && dstPort instanceof OchPort) {
-                    // Create lightpath
-                    // FIXME: hardcoded ODU signal type
-                    Intent opticalIntent = OpticalConnectivityIntent.builder()
-                            .appId(appId)
-                            .src(src)
-                            .dst(dst)
-                            .signalType(OduSignalType.ODU4)
-                            .bidirectional(true)
-                            .build();
-                    intents.add(opticalIntent);
-                } else {
-                    log.warn("Unsupported cross connect point types {} {}", srcPort.type(), dstPort.type());
-                    return Collections.emptyList();
-                }
-            }
-
-            return intents;
-        }
-
-        /**
-         * Returns list of optical connectivity intents needed to create connectivity
-         * between ingress and egress.
-         *
-         * @param ingress the ingress connect point
-         * @param egress the egress connect point
-         * @return list of optical connectivity intents, empty list if no path was found
-         */
-        private List<Intent> getOpticalIntents(ConnectPoint ingress, ConnectPoint egress) {
-            Set<Path> paths = pathService.getPaths(ingress.deviceId(),
-                    egress.deviceId(),
-                    new OpticalLinkWeight());
-
-            if (paths.isEmpty()) {
-                return Collections.emptyList();
-            }
-
-            // Search path with available cross connect points
-            for (Path path : paths) {
-                List<ConnectPoint> crossConnectPoints = getCrossConnectPoints(path);
-
-                // Skip to next path if cross connect points are mismatched
-                if (!checkCrossConnectPoints(crossConnectPoints)) {
-                    continue;
-                }
-
-                return getIntents(crossConnectPoints);
-            }
-
-            log.warn("Unable to find multi-layer path.");
-            return Collections.emptyList();
-        }
-
-        /**
-         * Link weight function that emphasizes re-use of packet links.
-         */
-        private class OpticalLinkWeight implements LinkWeight {
-            @Override
-            public double weight(TopologyEdge edge) {
-                // Ignore inactive links
-                if (edge.link().state() == Link.State.INACTIVE) {
-                    return -1;
-                }
-
-                // TODO: Ignore cross connect links with used ports
-
-                // Transport links have highest weight
-                if (edge.link().type() == Link.Type.OPTICAL) {
-                    return 1000;
-                }
-
-                // Packet links
-                return 1;
-            }
-        }
-
-    }
-
-    /**
-     * Verifies if given device type is in packet layer, i.e., ROADM, OTN or ROADM_OTN device.
-     *
-     * @param type device type
-     * @return true if in packet layer, false otherwise
-     */
-    private boolean isPacketLayer(Device.Type type) {
-        return type == Device.Type.SWITCH || type == Device.Type.ROUTER || type == Device.Type.VIRTUAL;
-    }
-
-    /**
-     * Verifies if given device type is in packet layer, i.e., switch or router device.
-     *
-     * @param type device type
-     * @return true if in packet layer, false otherwise
-     */
-    private boolean isTransportLayer(Device.Type type) {
-        return type == Device.Type.ROADM || type == Device.Type.OTN || type == Device.Type.ROADM_OTN;
-    }
-
-    /**
-     * Verifies if given link forms a cross-connection between packet and optical layer.
-     *
-     * @param link the link
-     * @return true if the link is a cross-connect link, false otherwise
-     */
-    private boolean isCrossConnectLink(Link link) {
-        if (link.type() != Link.Type.OPTICAL) {
-            return false;
-        }
-
-        Device.Type src = deviceService.getDevice(link.src().deviceId()).type();
-        Device.Type dst = deviceService.getDevice(link.dst().deviceId()).type();
-
-        return src != dst &&
-                ((isPacketLayer(src) && isTransportLayer(dst)) || (isPacketLayer(dst) && isTransportLayer(src)));
-    }
-
-}
diff --git a/apps/optical/src/main/java/org/onosproject/optical/package-info.java b/apps/optical/src/main/java/org/onosproject/optical/package-info.java
deleted file mode 100644
index 987196b..0000000
--- a/apps/optical/src/main/java/org/onosproject/optical/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2014-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Packet/Optical application.
- */
-package org.onosproject.optical;
diff --git a/apps/optical/src/main/java/org/onosproject/optical/testapp/MplsForwarding.java b/apps/optical/src/main/java/org/onosproject/optical/testapp/MplsForwarding.java
deleted file mode 100644
index 862af0f..0000000
--- a/apps/optical/src/main/java/org/onosproject/optical/testapp/MplsForwarding.java
+++ /dev/null
@@ -1,179 +0,0 @@
-/*
- * Copyright 2015-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.onosproject.optical.testapp;
-
-import org.apache.felix.scr.annotations.Activate;
-import org.apache.felix.scr.annotations.Deactivate;
-import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.onlab.packet.Ethernet;
-import org.onlab.packet.MplsLabel;
-import org.onosproject.core.ApplicationId;
-import org.onosproject.core.CoreService;
-import org.onosproject.net.Device;
-import org.onosproject.net.DeviceId;
-import org.onosproject.net.PortNumber;
-import org.onosproject.net.device.DeviceEvent;
-import org.onosproject.net.device.DeviceListener;
-import org.onosproject.net.device.DeviceService;
-import org.onosproject.net.flow.DefaultFlowRule;
-import org.onosproject.net.flow.DefaultTrafficSelector;
-import org.onosproject.net.flow.DefaultTrafficTreatment;
-import org.onosproject.net.flow.FlowRule;
-import org.onosproject.net.flow.FlowRuleService;
-import org.onosproject.net.flow.TrafficSelector;
-import org.onosproject.net.flow.TrafficTreatment;
-import org.slf4j.Logger;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import static org.slf4j.LoggerFactory.getLogger;
-
-/**
- * Sample reactive forwarding application.
- */
-//@Component(immediate = true)
-public class MplsForwarding {
-
-    private final Logger log = getLogger(getClass());
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected FlowRuleService flowRuleService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected CoreService coreService;
-
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected DeviceService deviceService;
-
-    private ApplicationId appId;
-
-    private final InternalDeviceListener listener = new InternalDeviceListener();
-
-    private final Map<DeviceId, Integer> uglyMap = new HashMap<>();
-
-    @Activate
-    public void activate() {
-        appId = coreService.registerApplication("org.onosproject.mplsfwd");
-
-        uglyMap.put(DeviceId.deviceId("of:0000000000000001"), 1);
-        uglyMap.put(DeviceId.deviceId("of:0000000000000002"), 2);
-        uglyMap.put(DeviceId.deviceId("of:0000000000000003"), 3);
-
-        deviceService.addListener(listener);
-
-        for (Device d : deviceService.getDevices()) {
-            pushRules(d);
-        }
-
-
-        log.info("Started with Application ID {}", appId.id());
-    }
-
-    @Deactivate
-    public void deactivate() {
-        flowRuleService.removeFlowRulesById(appId);
-
-        log.info("Stopped");
-    }
-
-
-    private void pushRules(Device device) {
-
-        TrafficSelector.Builder sbuilder = DefaultTrafficSelector.builder();
-        TrafficTreatment.Builder tbuilder = DefaultTrafficTreatment.builder();
-        int inport = 1;
-        int outport = 2;
-        MplsLabel mplsLabel = MplsLabel.mplsLabel(101);
-        Integer switchNumber = uglyMap.get(device.id());
-        if (switchNumber == null) {
-            return;
-        }
-
-        switch (switchNumber) {
-            case 1:
-                sbuilder.matchInPort(PortNumber.portNumber(inport));
-                tbuilder.setOutput(PortNumber.portNumber(outport))
-                        .pushMpls()
-                        .setMpls(mplsLabel);
-                break;
-            case 2:
-                sbuilder.matchMplsLabel(mplsLabel)
-                        .matchEthType(Ethernet.MPLS_UNICAST)
-                        .matchInPort(PortNumber.portNumber(inport));
-                tbuilder.setOutput(PortNumber.portNumber(outport));
-                break;
-            case 3:
-                sbuilder.matchMplsLabel(mplsLabel)
-                        .matchEthType(Ethernet.MPLS_UNICAST)
-                        .matchInPort(PortNumber.portNumber(inport));
-                tbuilder.popMpls().setOutput(PortNumber.portNumber(outport));
-                break;
-            default:
-        }
-
-        TrafficTreatment treatement = tbuilder.build();
-        TrafficSelector selector = sbuilder.build();
-
-        FlowRule f = DefaultFlowRule.builder()
-                .forDevice(device.id())
-                .withSelector(selector)
-                .withTreatment(treatement)
-                .withPriority(100)
-                .fromApp(appId)
-                .makeTemporary(600)
-                .build();
-
-        flowRuleService.applyFlowRules(f);
-    }
-
-
-    public class InternalDeviceListener implements DeviceListener {
-
-        @Override
-        public void event(DeviceEvent event) {
-            switch (event.type()) {
-                case DEVICE_ADDED:
-                    pushRules(event.subject());
-                    break;
-                case DEVICE_AVAILABILITY_CHANGED:
-                    break;
-                case DEVICE_REMOVED:
-                    break;
-                case DEVICE_SUSPENDED:
-                    break;
-                case DEVICE_UPDATED:
-                    break;
-                case PORT_ADDED:
-                    break;
-                case PORT_REMOVED:
-                    break;
-                case PORT_UPDATED:
-                    break;
-                default:
-                    break;
-
-            }
-
-        }
-
-    }
-
-
-}
-
-
diff --git a/apps/optical/src/main/java/org/onosproject/optical/testapp/package-info.java b/apps/optical/src/main/java/org/onosproject/optical/testapp/package-info.java
deleted file mode 100644
index 33e8e25..0000000
--- a/apps/optical/src/main/java/org/onosproject/optical/testapp/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright 2014-present Open Networking Laboratory
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-/**
- * Packet/Optical sample forwarding applications.
- */
-package org.onosproject.optical.testapp;
diff --git a/apps/optical/src/main/resources/demo-10-roadm-6-ps.json b/apps/optical/src/main/resources/demo-10-roadm-6-ps.json
deleted file mode 100644
index e4e1122..0000000
--- a/apps/optical/src/main/resources/demo-10-roadm-6-ps.json
+++ /dev/null
@@ -1,391 +0,0 @@
-{
-        "opticalSwitches": [
-        {
-            "allowed": true,
-            "latitude": 37.6,
-            "longitude": 122.3,
-            "name": "SFO-W10",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:01",
-            "params": {
-                "numRegen": 0
-            },
-            "type": "Roadm"
-        },
-        
-	{
-            "allowed": true,
-            "latitude": 37.3,
-            "longitude": 121.9,
-            "name": "SJC-W10",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:02",
-            "params": {
-                "numRegen": 0
-            },
-            "type": "Roadm"
-         },
-
- 	{
-            "allowed": true,
-            "latitude": 33.9,
-            "longitude": 118.4
-            "name": "LAX-W10",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:03",
-            "params": {
-                "numRegen": 0
-            },
-            "type": "Roadm"
-         },
-
-	{
-            "allowed": true,
-            "latitude": 32.8,
-            "longitude": 117.1,
-            "name": "SDG-W10",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:04",
-            "params": {
-                "numRegen": 3
-            },
-            "type": "Roadm"
-        },
-
-	{
-            "allowed": true,
-            "latitude": 44.8,
-            "longitude": 93.1,
-            "name": "MSP-M10",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:05",
-            "params": {
-                "numRegen": 3
-            },
-            "type": "Roadm"
-         },
-
-	{
-            "allowed": true,
-            "latitude": 32.8,
-            "longitude": 97.1,
-            "name": "DFW-M10",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:06",
-            "params": {
-                "numRegen": 3
-            },
-            "type": "Roadm"
-         },
-	
-	{
-            "allowed": true,
-            "latitude": 41.8,
-            "longitude": 120.1,
-            "name": "CHG-N10",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:07",
-            "params": {
-                "numRegen": 3
-            },
-            "type": "Roadm"
-         },
-
-	{
-            "allowed": true,
-            "latitude": 38.8,
-            "longitude": 77.1,
-            "name": "IAD-M10",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:08",
-            "params": {
-                "numRegen": 3
-            },
-            "type": "Roadm"
-        },
-
-	{
-            "allowed": true,
-            "latitude": 40.8,
-            "longitude": 73.1,
-            "name": "JFK-E10",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:09",
-            "params": {
-                "numRegen": 0
-            },
-            "type": "Roadm"
-
-        },
-
-	{
-            "allowed": true,
-            "latitude": 33.8,
-            "longitude": 84.1,
-            "name": "ATL-S10",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:0A",
-            "params": {
-                "numRegen": 0
-            },
-            "type": "Roadm"
-        }
-	
-    ],
-
-        "opticalLinks": [
-        {
-            "allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:01",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:02",
-            "params": {
-                "distKms": 1000,
-                "nodeName1": "SFO-W10",
-                "nodeName2": "SJC-W10",
-                "numWaves": 80,
-                "port1": 10,
-                "port2": 10
-            },
-            "type": "wdmLink"
-         },
-       
-       {
-	"allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:03",
-            "params": {
-                "distKms": 1000,
-                "nodeName1": "SJC-W10",
-                "nodeName2": "LAX-W10",
-                "numWaves": 80,
-                "port1": 20,
-                "port2": 10
-            },
-            "type": "wdmLink"
-       },
-
-       {
-	"allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:03",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:04",
-            "params": {
-                "distKms": 1000,
-                "nodeName1": "LAX-W10",
-                "nodeName2": "SDG-W10",
-                "numWaves": 80,
-                "port1": 30,
-                "port2": 10
-            },
-            "type": "wdmLink"
-        },
-
-        {
-	"allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:05",
-            "params": {
-                "distKms": 4000,
-                "nodeName1": "SJC-W10",
-                "nodeName2": "MSP-M10",
-                "numWaves": 80,
-                "port1": 20,
-                "port2": 10
-            },
-            "type": "wdmLink"
-        },
-
-        {
-
-	"allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:03",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:06",
-            "params": {
-                "distKms": 5000,
-                "nodeName1": "LAX-W10",
-                "nodeName2": "DFW-M10",
-                "numWaves": 80,
-                "port1": 20,
-                "port2": 10
-            },
-            "type": "wdmLink"
-         },
-
-       {
-	"allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:05",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:06",
-            "params": {
-                "distKms": 3000,
-                "nodeName1": "MSP-M10",
-                "nodeName2": "DFW-M10",
-                "numWaves": 80,
-                "port1": 30,
-                "port2": 20
-            },
-            "type": "wdmLink"
-        },
-
-        {
-	"allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:05",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:07",
-            "params": {
-                "distKms": 3000,
-                "nodeName1": "MSP-M10",
-                "nodeName2": "CHG-N10",
-                "numWaves": 80,
-                "port1": 20,
-                "port2": 21
-            },
-            "type": "wdmLink"
-         },
- 
-        {
-
-	"allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:06",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:08",
-            "params": {
-                "distKms": 4000,
-                "nodeName1": "DFW-M10",
-                "nodeName2": "IAD-M10",
-                "numWaves": 80,
-                "port1": 30,
-                "port2": 10
-            },
-            "type": "wdmLink"
-          },
-
-        {
-
-	"allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:07",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:08",
-            "params": {
-                "distKms": 4000,
-                "nodeName1": "CHG-M10",
-                "nodeName2": "IAD-M10",
-                "numWaves": 80,
-                "port1": 30,
-                "port2": 20
-            },
-            "type": "wdmLink"
-          },
-
-        {
-	"allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:07",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:09",
-            "params": {
-                "distKms": 5000,
-                "nodeName1": "CHG-M10",
-                "nodeName2": "JFK-E10",
-                "numWaves": 80,
-                "port1": 20,
-                "port2": 10
-            },
-            "type": "wdmLink"
-         },
-
-      {
-	"allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:08",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:0A",
-            "params": {
-                "distKms": 3000,
-                "nodeName1": "IAD-M10",
-                "nodeName2": "ATL-S10",
-                "numWaves": 80,
-                "port1": 30,
-                "port2": 10
-            },
-            "type": "wdmLink"
-      },
-
-      {
-
-	"allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:09",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:0A",
-            "params": {
-                "distKms": 4000,
-                "nodeName1": "JFK-E10",
-                "nodeName2": "ATL-S10",
-                "numWaves": 80,
-                "port1": 20,
-                "port2": 20
-            },
-            "type": "wdmLink"
-        },
-
-
-        {
-            "allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:00:01",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:01",
-            "params": {
-                "nodeName1": "SFO-R10",
-                "nodeName2": "SFO-W10",
-                "port1": 10,
-                "port2": 1
-            },
-            "type": "pktOptLink"
-        },
-
-       {
-            "allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:00:03",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:03",
-            "params": {
-                "nodeName1": "LAX-R10",
-                "nodeName2": "LAX-W10",
-                "port1": 10,
-                "port2": 1
-            },
-            "type": "pktOptLink"
-        },
-
-         {
-            "allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:00:04",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:04",
-            "params": {
-                "nodeName1": "SDG-R10",
-                "nodeName2": "SDG-W10",
-                "port1": 10,
-                "port2": 1
-            },
-            "type": "pktOptLink"
-        },
-
-       {
-            "allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:00:07",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:07",
-            "params": {
-                "nodeName1": "CHG-R10",
-                "nodeName2": "CHG-W10",
-                "port1": 10,
-                "port2": 1
-            },
-            "type": "pktOptLink"
-        },
-
-    {
-            "allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:00:09",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:09",
-            "params": {
-                "nodeName1": "JFK-R10",
-                "nodeName2": "JFK-W10",
-                "port1": 10,
-                "port2": 1
-            },
-            "type": "pktOptLink"
-        },
-
-       {
-            "allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:00:0A",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:0A",
-            "params": {
-                "nodeName1": "ATL-R10",
-                "nodeName2": "ATL-W10",
-                "port1": 10,
-                "port2": 1
-            },
-            "type": "pktOptLink"
-        },   
-
-    ]
-}
diff --git a/apps/optical/src/main/resources/demo-3-roadm-2-ps.json b/apps/optical/src/main/resources/demo-3-roadm-2-ps.json
deleted file mode 100644
index 125a307..0000000
--- a/apps/optical/src/main/resources/demo-3-roadm-2-ps.json
+++ /dev/null
@@ -1,100 +0,0 @@
-{
-    "opticalSwitches": [
-        {
-            "allowed": true,
-            "latitude": 37.6,
-            "longitude": 122.3,
-            "name": "ROADM1",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:01",
-            "params": {
-                "numRegen": 0
-            },
-            "type": "Roadm"
-        },
-
-        {
-            "allowed": true,
-            "latitude": 37.3,
-            "longitude": 121.9,
-            "name": "ROADM2",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:02",
-            "params": {
-                "numRegen": 0
-            },
-            "type": "Roadm"
-        },
-
-        {
-            "allowed": true,
-            "latitude": 33.9,
-            "longitude": 118.4,
-            "name": "ROADM3",
-            "nodeDpid": "00:00:ff:ff:ff:ff:ff:03",
-            "params": {
-                "numRegen": 2
-            },
-            "type": "Roadm"
-        }
-    ],
-
-    "opticalLinks": [
-        {
-            "allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:01",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:03",
-            "params": {
-                "distKms": 1000,
-                "nodeName1": "ROADM1",
-                "nodeName2": "ROADM3",
-                "numWaves": 80,
-                "port1": 20,
-                "port2": 30
-            },
-            "type": "wdmLink"
-        },
-
-        {
-            "allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:ff:03",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:02",
-            "params": {
-                "distKms": 2000,
-                "nodeName1": "ROADM3",
-                "nodeName2": "ROADM2",
-                "numWaves": 80,
-                "port1": 31,
-                "port2": 21
-            },
-            "type": "wdmLink"
-        },
-
-        {
-            "allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:00:01",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:01",
-            "params": {
-                "nodeName1": "ROUTER1",
-                "nodeName2": "ROADM1",
-                "bandWidth": 100000,
-                "port1": 2,
-                "port2": 10
-            },
-            "type": "pktOptLink"
-        },
-
-        {
-            "allowed": true,
-            "nodeDpid1": "00:00:ff:ff:ff:ff:00:02",
-            "nodeDpid2": "00:00:ff:ff:ff:ff:ff:02",
-            "params": {
-                "nodeName1": "ROUTER2",
-                "nodeName2": "ROADM2",
-                "bandWidth": 100000,
-                "port1": 2,
-                "port2": 11
-            },
-            "type": "pktOptLink"
-        }
-
-    ]
-}
diff --git a/apps/pom.xml b/apps/pom.xml
index 66e691c..d9f93a2 100644
--- a/apps/pom.xml
+++ b/apps/pom.xml
@@ -38,7 +38,6 @@
         <module>proxyarp</module>
         <module>sdnip</module>
         <module>optical-model</module>
-        <module>optical</module>
         <module>newoptical</module>
         <module>metrics</module>
         <module>routing</module>
diff --git a/modules.defs b/modules.defs
index 13cd632..6f771c9 100644
--- a/modules.defs
+++ b/modules.defs
@@ -151,7 +151,6 @@
     '//apps/mlb:onos-apps-mlb-oar',
     '//apps/openstacknetworking:onos-apps-openstacknetworking-oar',
     '//apps/mobility:onos-apps-mobility-oar',
-    '//apps/optical:onos-apps-optical-oar',
     '//apps/newoptical:onos-apps-newoptical-oar',
     '//apps/optical-model:onos-apps-optical-model-oar',
     '//apps/pathpainter:onos-apps-pathpainter-oar',