summaryrefslogtreecommitdiffstats
path: root/deploy/post/glance.py
diff options
context:
space:
mode:
Diffstat (limited to 'deploy/post/glance.py')
-rw-r--r--deploy/post/glance.py37
1 files changed, 37 insertions, 0 deletions
diff --git a/deploy/post/glance.py b/deploy/post/glance.py
new file mode 100644
index 00000000..2422c7a4
--- /dev/null
+++ b/deploy/post/glance.py
@@ -0,0 +1,37 @@
+import os
+
+import glanceclient
+
+import keystoneauth
+
+
+class Glance(keystoneauth.Keystoneauth):
+ def __init__(self, version='2', openrc=None):
+ super(Glance, self).__init__(openrc)
+ self.client = glanceclient.Client(version, session=self.session)
+ self.controller = self.client.images
+
+ def create(self, name, path,
+ disk_format="qcow2",
+ container_format="bare",
+ visibility="public"):
+ if not os.path.isfile(path):
+ raise Exception('Error: file {} not exist'.format(path))
+ image = self.controller.create(name=name,
+ visibility=visibility,
+ disk_format=disk_format,
+ container_format=container_format)
+ id = image.id
+ with open(path) as data:
+ self.controller.upload(id, data)
+ return id
+
+ def get_by_name(self, name):
+ for image in self.list():
+ if image.name == name:
+ return image.id
+
+ return None
+
+ def list(self):
+ return self.controller.list()