diff --git a/external-script-iaas/.gitignore b/external-script-iaas/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..88306fb90afd8baf6f3544e5866d932414c27248 --- /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 0000000000000000000000000000000000000000..28199a09f575347062fa5fe5c1f2dc6771bd0cac --- /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 0000000000000000000000000000000000000000..b01091926726b5dcae1029aa46d6a4501b07dcc7 --- /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 ef7141305ec387092e43dba2fe82d3577d60ab64..c7516539964d03bdba73777e04ff3f45a95addab 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 0000000000000000000000000000000000000000..19a7c10dcb36cdbc3b560250b33f78d9196022db --- /dev/null +++ b/external-script-iaas/token_backup_template @@ -0,0 +1,3 @@ +[token] +id = +expires =