create external network 99/29899/3
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Tue, 7 Mar 2017 02:43:56 +0000 (10:43 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Tue, 7 Mar 2017 05:59:10 +0000 (13:59 +0800)
Change-Id: I6621fed21832f3e4653c2d236bb29de421b5b573
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
deploy/post/execute.py
deploy/post/neutron.py

index 8758b40..3f05d00 100644 (file)
@@ -9,9 +9,25 @@
 import neutron
 
 
+def _config_admin_external_network():
+    name = 'admin_external'
+    body = {
+        'network': {
+            'name': name,
+            'admin_state_up': True,
+            'shared': True,
+            'provider:network_type': 'flat',
+            'provider:physical_network': 'physnet1',
+            'router:external': True
+        }
+    }
+
+    return name, body
+
+
 def main():
     neutron.Neutron().list_networks()
-
+    neutron.Neutron().create_network(*(_config_admin_external_network()))
 
 if __name__ == '__main__':
     main()
index 0dffdfc..9c81ed2 100644 (file)
@@ -17,9 +17,23 @@ class Neutron(object):
         self.client = neutronclient.Client(api_v, session=session)
 
     def list_networks(self):
-        networks = self.client.list_networks()['networks']
-        for network in networks:
-            print network
+        return self.client.list_networks()['networks']
 
-    def create_admin_ext_net(self):
+    def create_network(self, name, body):
+        if not self.is_network_exist(name):
+            self._create_network(name, body)
+        else:
+            print('admin_ext [{}] already exist'.format(name))
         pass
+
+    def is_network_exist(self, name):
+        return [] != filter(lambda n: n['name'] == name, self.list_networks())
+
+    def _create_network(self, name, body):
+        try:
+            nid = self.client.create_network(body=body)['network']['id']
+            print('_create_admin_ext_net [{}] with id: {}'.format(name, nid))
+            return nid
+        except Exception, e:
+            print('_create_admin_ext_net [{}] fail with: {}'.format(name, e))
+            return None