diff --git a/api/src/main/java/org/onosproject/segmentrouting/config/DeviceProperties.java b/api/src/main/java/org/onosproject/segmentrouting/config/DeviceProperties.java
index bb86aac..fd50c19 100644
--- a/api/src/main/java/org/onosproject/segmentrouting/config/DeviceProperties.java
+++ b/api/src/main/java/org/onosproject/segmentrouting/config/DeviceProperties.java
@@ -108,6 +108,13 @@
     List<DeviceId> getEdgeDeviceIds();
 
     /**
+     * Returns a list of infra devices.
+     *
+     * @return list of the infra device ids
+     */
+    List<DeviceId> getInfraDeviceIds();
+
+    /**
      * Returns all segment IDs to be considered in building auto
      *
      * created groups.
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
