create m1.micro flavor for functest 05/30405/2
authorSerenaFeng <feng.xiaowei@zte.com.cn>
Tue, 14 Mar 2017 09:53:45 +0000 (17:53 +0800)
committerSerenaFeng <feng.xiaowei@zte.com.cn>
Tue, 14 Mar 2017 10:08:07 +0000 (18:08 +0800)
Change-Id: Iacb36cb05e72b0755cec0a5bd5a6c48f3ec70c6f
Signed-off-by: SerenaFeng <feng.xiaowei@zte.com.cn>
deploy/post/execute.py
deploy/post/nova.py [new file with mode: 0644]

index d5a0727..9e029b1 100644 (file)
@@ -7,6 +7,7 @@
 # http://www.apache.org/licenses/LICENSE-2.0
 ##############################################################################
 import neutron
+import nova
 
 
 def _config_admin_external_network():
@@ -44,10 +45,23 @@ def _config_admin_external_subnet(nid):
     }
 
 
+def _create_flavor_m1_micro():
+    name = 'm1.micro'
+    novaclient = nova.Nova()
+    if not novaclient.get_flavor_by_name(name):
+        try:
+            return novaclient.create_flavor(name, ram=64, vcpus=1, disk=0)
+        except Exception as error:
+            print ('_create_flavor_m1_micro failed: {}'.format(str(error)))
+    else:
+        print ('Use existing m1.micro flavor')
+
+
 def main():
     neutronclient = neutron.Neutron()
     nid = neutronclient.create_network(*(_config_admin_external_network()))
     neutronclient.create_subnet(_config_admin_external_subnet(nid))
+    _create_flavor_m1_micro()
 
 if __name__ == '__main__':
     main()
diff --git a/deploy/post/nova.py b/deploy/post/nova.py
new file mode 100644 (file)
index 0000000..5c356a1
--- /dev/null
@@ -0,0 +1,25 @@
+import novaclient.client
+
+import keystoneauth
+
+
+class Nova(keystoneauth.Keystoneauth):
+    def __init__(self, version='2', openrc=None):
+        super(Nova, self).__init__(openrc)
+        self.client = novaclient.client.Client(version, session=self.session)
+        self.flavors = self.client.flavors
+
+    def create_flavor(self, name, ram, vcpus, disk, is_public=True):
+        flavor = self.flavors.create(name, ram, vcpus, disk,
+                                     is_public=is_public)
+        return flavor.id
+
+    def get_flavor_by_name(self, name):
+        for flavor in self.list_flavors():
+            if flavor.name == name:
+                return flavor.id
+
+        return None
+
+    def list_flavors(self):
+        return self.flavors.list(detailed=True)