diff --git a/impl/src/main/java/org/onosproject/segmentrouting/DeviceConfiguration.java b/impl/src/main/java/org/onosproject/segmentrouting/DeviceConfiguration.java
index 0f9efce..7980d25 100644
--- a/impl/src/main/java/org/onosproject/segmentrouting/DeviceConfiguration.java
+++ b/impl/src/main/java/org/onosproject/segmentrouting/DeviceConfiguration.java
@@ -426,6 +426,14 @@
     }
 
     @Override
+    public List<DeviceId> getInfraDeviceIds() {
+        return deviceConfigMap.values().stream()
+                .filter(deviceInfo -> !deviceInfo.isEdge)
+                .map(deviceInfo -> deviceInfo.deviceId)
+                .collect(Collectors.toList());
+    }
+
+    @Override
     public List<Integer> getAllDeviceSegmentIds() {
         return allSegmentIds;
     }
diff --git a/impl/src/main/java/org/onosproject/segmentrouting/LinkHandler.java b/impl/src/main/java/org/onosproject/segmentrouting/LinkHandler.java
index 62ac1c0..229d32c 100644
--- a/impl/src/main/java/org/onosproject/segmentrouting/LinkHandler.java
+++ b/impl/src/main/java/org/onosproject/segmentrouting/LinkHandler.java
@@ -347,6 +347,12 @@
      * @param added true if link was added, false if link was removed
      */
     private void updateHostPorts(Link link, boolean added) {
+        // Topology has only a single pair of leaves
+        if (srManager.getInfraDeviceIds().isEmpty()) {
+            log.debug("No spine configured. Not updating edge port for {} {}", link, added ? "add" : "remove");
+            return;
+        }
+
         DeviceConfiguration devConfig = srManager.deviceConfiguration;
         if (added) {
             try {
@@ -674,12 +680,19 @@
      * @param loc the host location
      */
     void checkUplinksForHost(HostLocation loc) {
+        // Topology has only a single pair of leaves
+        if (srManager.getInfraDeviceIds().isEmpty()) {
+            log.debug("No spine configured. Not disabling access port for {}", loc);
+            return;
+        }
+
         // If the device does not have a pair device - return
         if (getPairDeviceIdOrNull(loc.deviceId()) == null) {
             log.info("Device {} does not have pair device " +
                              "not disabling access port", loc.deviceId());
             return;
         }
+
         // Verify link validity
         try {
             for (Link l : srManager.linkService.getDeviceLinks(loc.deviceId())) {
diff --git a/impl/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java b/impl/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
index f96e9d0..c42773f 100644
--- a/impl/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
+++ b/impl/src/main/java/org/onosproject/segmentrouting/SegmentRoutingManager.java
@@ -1214,6 +1214,11 @@
     }
 
     @Override
+    public List<DeviceId> getInfraDeviceIds() {
+        return deviceConfiguration.getInfraDeviceIds();
+    }
+
+    @Override
     public MacAddress getDeviceMacAddress(DeviceId deviceId) throws DeviceConfigNotFoundException {
         return deviceConfiguration.getDeviceMac(deviceId);
     }
@@ -1583,6 +1588,7 @@
                     defaultRoutingHandler.invalidateShouldProgramCache(deviceId);
                     pairDeviceId.ifPresent(defaultRoutingHandler::invalidateShouldProgramCache);
                     defaultRoutingHandler.checkFullRerouteForMasterChange(deviceId, me);
+
                 } else {
                     log.warn("Unhandled event type: {}", event.type());
                 }
diff --git a/impl/src/main/java/org/onosproject/segmentrouting/SegmentRoutingService.java b/impl/src/main/java/org/onosproject/segmentrouting/SegmentRoutingService.java
index 4d89588..061e246 100644
--- a/impl/src/main/java/org/onosproject/segmentrouting/SegmentRoutingService.java
+++ b/impl/src/main/java/org/onosproject/segmentrouting/SegmentRoutingService.java
@@ -447,6 +447,13 @@
     List<DeviceId> getEdgeDeviceIds();
 
     /**
+     * Returns a list of infra devices.
+     *
+     * @return list of the infra device ids
+     */
+    List<DeviceId> getInfraDeviceIds();
+
+    /**
      * Returns the configured mac address of the device.
      *
      * @param deviceId the device id
