Don't specify gateway_ip for management net
diff --git a/xos/synchronizers/openstack/steps/sync_controller_networks.py b/xos/synchronizers/openstack/steps/sync_controller_networks.py
index 5375a8d..4e54fdf 100644
--- a/xos/synchronizers/openstack/steps/sync_controller_networks.py
+++ b/xos/synchronizers/openstack/steps/sync_controller_networks.py
@@ -22,7 +22,7 @@
 class SyncControllerNetworks(OpenStackSyncStep):
     requested_interval = 0
     provides=[Network]
-    observes=ControllerNetwork	
+    observes=ControllerNetwork
     playbook='sync_controller_networks.yaml'
 
     def alloc_subnet(self, uuid):
@@ -61,6 +61,15 @@
         self.cidr=cidr
         slice = controller_network.network.owner
 
+        # (VTN only) A primary network is one with an external gateway.
+        # For now we set it to True for all but the management network.
+        # In future we may want to make it an attribute of a Network.
+        use_vtn = getattr(Config(), "networking_use_vtn", False)
+        if use_vtn:
+            primary = not network_name.startswith("management")
+        else:
+            primary = False
+
         network_fields = {'endpoint':controller_network.controller.auth_url,
                     'endpoint_v3': controller_network.controller.auth_url_v3,
                     'admin_user':slice.creator.email,
@@ -72,7 +81,7 @@
                     'ansible_tag':'%s-%s@%s'%(network_name,slice.slicename,controller_network.controller.name),
                     'cidr':cidr,
                     'gateway':self.alloc_gateway(cidr),
-                    'use_vtn':getattr(Config(), "networking_use_vtn", False),
+                    'primary':primary,
                     'delete':False
                     }
         return network_fields
@@ -97,7 +106,7 @@
         # hopefully a better approach than above
         if (controller_network.network.template.shared_network_name or controller_network.network.template.shared_network_id):
             return SyncStep.SYNC_WITHOUT_RUNNING
-        
+
         if not controller_network.controller.admin_user:
             logger.info("controller %r has no admin_user, skipping" % controller_network.controller)
             return
@@ -128,7 +137,7 @@
                     'subnet_name':subnet_name,
                     'ansible_tag':'%s-%s@%s'%(network_name,slice.slicename,controller_network.controller.name),
                     'cidr':cidr,
-		    'delete':True	
+		    'delete':True
                     }
 
         return network_fields
diff --git a/xos/synchronizers/openstack/steps/sync_controller_networks.yaml b/xos/synchronizers/openstack/steps/sync_controller_networks.yaml
index b885516..553ba26 100644
--- a/xos/synchronizers/openstack/steps/sync_controller_networks.yaml
+++ b/xos/synchronizers/openstack/steps/sync_controller_networks.yaml
@@ -28,7 +28,7 @@
         state=absent
         {% else %}
         state=present
-        {% if use_vtn %}
+        {% if primary %}
         gateway_ip={{ gateway }}
         {% else %}
         no_gateway=true