diff --git a/xos/openstack_observer/steps/sync_slivers.py b/xos/openstack_observer/steps/sync_slivers.py
index 48f5c25..3cb3347 100644
--- a/xos/openstack_observer/steps/sync_slivers.py
+++ b/xos/openstack_observer/steps/sync_slivers.py
@@ -55,8 +55,23 @@
         if sliver.slice.service and sliver.slice.service.public_key:
             pubkeys.add(sliver.slice.service.public_key)
 
+        # Handle any ports that are already created and attached to the sliver.
+        # If we do have a port for a network, then add that network to an
+        # exclude list so we won't try to auto-create ports on that network
+        # when instantiating.
+        ports = []
+        exclude_networks = set()
+        exclude_templates = set()
+        for ns in sliver.networkslivers.all():
+            if not ns.port_id:
+                raise Exception("Port %s on sliver %s has no id; Try again later" % (str(ns), str(sliver)) )
+            ports.append(ns.port_id)
+            exclude_networks.add(ns.network)
+            exclude_templates.add(ns.network.template)
+
         nics = []
         networks = [ns.network for ns in NetworkSlice.objects.filter(slice=sliver.slice)]
+        networks = [n for n in networks if (n not in exclude_networks)]
         controller_networks = ControllerNetwork.objects.filter(network__in=networks,
                                                                 controller=sliver.node.site_deployment.controller)
 
@@ -67,9 +82,11 @@
                         raise Exception("Private Network %s has no id; Try again later" % controller_network.network.name)
                    nics.append(controller_network.net_id)
 
-        # now include network template
+        # Now include network templates, for those networks that use a
+        # shared_network_name.
         network_templates = [network.template.shared_network_name for network in networks \
                              if network.template.shared_network_name]
+        network_templates = [nt for nt in network_templates if (nt not in exclude_templates)]
 
         #driver = self.driver.client_driver(caller=sliver.creator, tenant=sliver.slice.name, controller=sliver.controllerNetwork)
         driver = self.driver.admin_driver(tenant='admin', controller=sliver.node.site_deployment.controller)
@@ -78,7 +95,9 @@
             if net['name'] in network_templates:
                 nics.append(net['id'])
 
-        if (not nics):
+        # If the slice isn't connected to anything, then at least put it on
+        # the public network.
+        if (not nics) and (not ports):
             for net in nets:
                 if net['name']=='public':
                     nics.append(net['id'])
@@ -127,6 +146,7 @@
                      'image_name':image_name,
                      'flavor_name':sliver.flavor.name,
                      'nics':nics,
+                     'ports':ports,
                      'meta':metadata_update,
                      'user_data':r'%s'%escape(userData)}
 
diff --git a/xos/openstack_observer/steps/sync_slivers.yaml b/xos/openstack_observer/steps/sync_slivers.yaml
index c543227..803a294 100644
--- a/xos/openstack_observer/steps/sync_slivers.yaml
+++ b/xos/openstack_observer/steps/sync_slivers.yaml
@@ -21,6 +21,9 @@
       {% for net in nics %}
           - net-id: {{ net }}
       {% endfor %}
+      {% for port in ports %}
+          - port-id: {{ port }}
+      {% endfor %}
 
       {% if meta %}
       meta:
