|
|
- #!/home/alpcentaur/ProjektA/PrototypeWebApp/venv/bin/python3.5
- # -*- coding: utf-8 -*-
- # Copyright (c) 2012 Miguel Olivares http://moliware.com/
- #
- # Permission is hereby granted, free of charge, to any person obtaining a
- # copy of this software and associated documentation files (the
- # "Software"), to deal in the Software without restriction, including
- # without limitation the rights to use, copy, modify, merge, publish, dis-
- # tribute, sublicense, and/or sell copies of the Software, and to permit
- # persons to whom the Software is furnished to do so, subject to the fol-
- # lowing conditions:
- #
- # The above copyright notice and this permission notice shall be included
- # in all copies or substantial portions of the Software.
- #
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABIL-
- # ITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
- # SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- # IN THE SOFTWARE.
- #
- """
- glacier
- ~~~~~~~
-
- Amazon Glacier tool built on top of boto. Look at the usage method to see
- how to use it.
-
- Author: Miguel Olivares <miguel@moliware.com>
- """
- import sys
-
- from boto.glacier import connect_to_region
- from getopt import getopt, GetoptError
- from os.path import isfile, basename
-
-
- COMMANDS = ('vaults', 'jobs', 'upload')
-
-
- def usage():
- print("""
- glacier <command> [args]
-
- Commands
- vaults - Operations with vaults
- jobs - Operations with jobs
- upload - Upload files to a vault. If the vault doesn't exits, it is
- created
-
- Common args:
- --access_key - Your AWS Access Key ID. If not supplied, boto will
- use the value of the environment variable
- AWS_ACCESS_KEY_ID
- --secret_key - Your AWS Secret Access Key. If not supplied, boto
- will use the value of the environment variable
- AWS_SECRET_ACCESS_KEY
- --region - AWS region to use. Possible values: us-east-1, us-west-1,
- us-west-2, ap-northeast-1, eu-west-1.
- Default: us-east-1
-
- Vaults operations:
-
- List vaults:
- glacier vaults
-
- Jobs operations:
-
- List jobs:
- glacier jobs <vault name>
-
- Uploading files:
-
- glacier upload <vault name> <files>
-
- Examples :
- glacier upload pics *.jpg
- glacier upload pics a.jpg b.jpg
- """)
- sys.exit()
-
-
- def connect(region, debug_level=0, access_key=None, secret_key=None):
- """ Connect to a specific region """
- layer2 = connect_to_region(region,
- aws_access_key_id=access_key,
- aws_secret_access_key=secret_key,
- debug=debug_level)
- if layer2 is None:
- print('Invalid region (%s)' % region)
- sys.exit(1)
- return layer2
-
-
- def list_vaults(region, access_key=None, secret_key=None):
- layer2 = connect(region, access_key = access_key, secret_key = secret_key)
- for vault in layer2.list_vaults():
- print(vault.arn)
-
-
- def list_jobs(vault_name, region, access_key=None, secret_key=None):
- layer2 = connect(region, access_key = access_key, secret_key = secret_key)
- print(layer2.layer1.list_jobs(vault_name))
-
-
- def upload_files(vault_name, filenames, region, access_key=None, secret_key=None):
- layer2 = connect(region, access_key = access_key, secret_key = secret_key)
- layer2.create_vault(vault_name)
- glacier_vault = layer2.get_vault(vault_name)
- for filename in filenames:
- if isfile(filename):
- sys.stdout.write('Uploading %s to %s...' % (filename, vault_name))
- sys.stdout.flush()
- archive_id = glacier_vault.upload_archive(
- filename,
- description = basename(filename))
- print(' done. Vault returned ArchiveID %s' % archive_id)
-
- def main():
- if len(sys.argv) < 2:
- usage()
-
- command = sys.argv[1]
- if command not in COMMANDS:
- usage()
-
- argv = sys.argv[2:]
- options = 'a:s:r:'
- long_options = ['access_key=', 'secret_key=', 'region=']
- try:
- opts, args = getopt(argv, options, long_options)
- except GetoptError as e:
- usage()
-
- # Parse agument
- access_key = secret_key = None
- region = 'us-east-1'
- for option, value in opts:
- if option in ('-a', '--access_key'):
- access_key = value
- elif option in ('-s', '--secret_key'):
- secret_key = value
- elif option in ('-r', '--region'):
- region = value
- # handle each command
- if command == 'vaults':
- list_vaults(region, access_key, secret_key)
- elif command == 'jobs':
- if len(args) != 1:
- usage()
- list_jobs(args[0], region, access_key, secret_key)
- elif command == 'upload':
- if len(args) < 2:
- usage()
- upload_files(args[0], args[1:], region, access_key, secret_key)
-
-
- if __name__ == '__main__':
- main()
|