From d61a67159b56f99b7a1023b6c79ed9a8aab99f03 Mon Sep 17 00:00:00 2001
From: Daniele Belfiore <daniele.belfiore@pg.infn.it>
Date: Tue, 19 Jan 2016 16:02:01 +0000
Subject: [PATCH] Update conf files

---
 external-script-iaas/.gitignore               |  7 ++
 .../credentials_template.conf                 | 12 +++
 external-script-iaas/filelock.py              | 79 +++++++++++++++++++
 external-script-iaas/prisma-iaas              |  2 +-
 external-script-iaas/token_backup_template    |  3 +
 5 files changed, 102 insertions(+), 1 deletion(-)
 create mode 100644 external-script-iaas/.gitignore
 create mode 100644 external-script-iaas/credentials_template.conf
 create mode 100755 external-script-iaas/filelock.py
 create mode 100644 external-script-iaas/token_backup_template

diff --git a/external-script-iaas/.gitignore b/external-script-iaas/.gitignore
new file mode 100644
index 0000000..88306fb
--- /dev/null
+++ b/external-script-iaas/.gitignore
@@ -0,0 +1,7 @@
+# Python generated files
+*.pyc
+*.py~
+.*.swp
+
+credentials.conf
+token_backup
diff --git a/external-script-iaas/credentials_template.conf b/external-script-iaas/credentials_template.conf
new file mode 100644
index 0000000..28199a0
--- /dev/null
+++ b/external-script-iaas/credentials_template.conf
@@ -0,0 +1,12 @@
+[ceilometer]
+protocol = 
+server = 
+port = 
+
+[keystone]
+protocol = 
+server = 
+port = 
+tenant = 
+username = 
+password = 
diff --git a/external-script-iaas/filelock.py b/external-script-iaas/filelock.py
new file mode 100755
index 0000000..b010919
--- /dev/null
+++ b/external-script-iaas/filelock.py
@@ -0,0 +1,79 @@
+import os
+import time
+import errno
+
+class FileLockException(Exception):
+    pass
+ 
+class FileLock(object):
+    """ A file locking mechanism that has context-manager support so 
+        you can use it in a with statement. This should be relatively cross
+        compatible as it doesn't rely on msvcrt or fcntl for the locking.
+    """
+ 
+    def __init__(self, file_name, timeout=90, delay=.05):
+        """ Prepare the file locker. Specify the file to lock and optionally
+            the maximum timeout and the delay between each attempt to lock.
+        """
+        self.is_locked = False
+        self.lockfile = os.path.join(os.getcwd(), "%s.lock" % file_name)
+        self.file_name = file_name
+        self.timeout = timeout
+        self.delay = delay
+ 
+ 
+    def acquire(self):
+        """ Acquire the lock, if possible. If the lock is in use, it check again
+            every `wait` seconds. It does this until it either gets the lock or
+            exceeds `timeout` number of seconds, in which case it throws 
+            an exception.
+        """
+        start_time = time.time()
+        while True:
+            try:
+                self.fd = os.open(self.lockfile, os.O_CREAT|os.O_EXCL|os.O_RDWR)
+                break;
+            except OSError as e:
+                if e.errno != errno.EEXIST:
+                    raise
+                if time.time() - os.stat(self.lockfile)[7] >= 60: # if the file is locked since 60 seconds
+                    os.remove(self.lockfile)
+                #if (time.time() - start_time) >= self.timeout:
+                    #raise FileLockException("Timeout occured.")
+                time.sleep(self.delay)
+        self.is_locked = True
+ 
+ 
+    def release(self):
+        """ Get rid of the lock by deleting the lockfile. 
+            When working in a `with` statement, this gets automatically 
+            called at the end.
+        """
+        if self.is_locked:
+            os.close(self.fd)
+            os.unlink(self.lockfile)
+            self.is_locked = False
+ 
+ 
+    def __enter__(self):
+        """ Activated when used in the with statement. 
+            Should automatically acquire a lock to be used in the with block.
+        """
+        if not self.is_locked:
+            self.acquire()
+        return self
+ 
+ 
+    def __exit__(self, type, value, traceback):
+        """ Activated at the end of the with statement.
+            It automatically releases the lock if it isn't locked.
+        """
+        if self.is_locked:
+            self.release()
+ 
+ 
+    def __del__(self):
+        """ Make sure that the FileLock instance doesn't leave a lockfile
+            lying around.
+        """
+        self.release()
diff --git a/external-script-iaas/prisma-iaas b/external-script-iaas/prisma-iaas
index ef71413..c751653 100644
--- a/external-script-iaas/prisma-iaas
+++ b/external-script-iaas/prisma-iaas
@@ -221,7 +221,7 @@ class Prisma:
 def encode():
     struct = {}
 
-    config_file_path = os.path.join(os.path.dirname(__file__), 'proxy.conf')
+    config_file_path = os.path.join(os.path.dirname(__file__), 'credentials.conf')
     parser_config = ConfigParser.SafeConfigParser()
     parser_config.readfp(open(config_file_path))
 
diff --git a/external-script-iaas/token_backup_template b/external-script-iaas/token_backup_template
new file mode 100644
index 0000000..19a7c10
--- /dev/null
+++ b/external-script-iaas/token_backup_template
@@ -0,0 +1,3 @@
+[token]
+id = 
+expires = 
-- 
GitLab