Skip to content
Snippets Groups Projects
Commit 4b8410bb authored by Philipp Goymann's avatar Philipp Goymann
Browse files

add cmd interface

parent 88473b7f
No related branches found
No related tags found
No related merge requests found
#!/usr/bin/env python3
import os
import sys
import time
import logging
class Utils:
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=logging.INFO)
def is_valid_file(self, parser, arg):
if not os.path.exists(arg):
parser.error("The file %s does not exist!" % arg)
else:
return open(arg, 'r') # return an open file handle
#--------------------------------------------------------------------------------------------------------#
def check_if_file_exists(self, files):
if len(files) == 0:
logging.error( "Their are no Files given!")
sys.exit(1)
for i in files:
if os.path.exists(i):
pass
else:
logging.error('File ' + i + ' didn\'t exist!')
sys.exit(1)
#--------------------------------------------------------------------------------------------------------#
def query_yes_no(self, question, default="yes"):
valid = {"yes": True, "y": True, "ye": True,
"no": False, "n": False}
if default is None:
prompt = " [y/n] "
elif default == "yes":
prompt = " [Y/n] "
elif default == "no":
prompt = " [y/N] "
else:
raise ValueError("invalid default answer: '%s'" % default)
while True:
sys.stdout.write(question + prompt)
choice = input().lower()
if default is not None and choice == '':
return valid[default]
elif choice in valid:
return valid[choice]
else:
sys.stdout.write("Please respond with 'yes' or 'no' "
"(or 'y' or 'n').\n")
#--------------------------------------------------------------------------------------------------------#
def waiting_points(self, message):
time.sleep(0.25)
print(message + ' {0}'.format('. '), end='\r')
time.sleep(0.25)
print(message + ' {0}'.format('.. '), end='\r')
time.sleep(0.25)
print(message + ' {0}'.format('... '), end='\r')
time.sleep(0.25)
print(message + ' {0}'.format('....'), end='\r')
#--------------------------------------------------------------------------------------------------------#
def check_argparser(self,args, required):
for arg in required:
if getattr(args, arg) == None:
sys.exit("ERROR: Missing argument --{0}".format(arg))
\ No newline at end of file
#!/usr/bin/env python
""" CMD function for loosolab s3 """
import argparse
import sys
#own functions
from loosolab_s3.Utils import Utils
from loosolab_s3.s3_functions import Loosolab_s3
#--------------------------------------------------------------------------------------------------------#
#- MAIN -------------------------------------------------------------------------------------------------#
def run_s3_functions():
utils = Utils()
args = argparsefunc()
#start s3 session
credentials = {
"endpoint":args.endpoint,
"key":args.key,
"secret": args.secret,
"signature":args.signature
}
if args.no_log:
s3 = Loosolab_s3(credentials, logger=False)
else:
s3 = Loosolab_s3(credentials)
#------------------------------------------------actions--------------------------------------------#
#check if bucket exists
if args.bucket_exists:
utils.check_argparser(args, ['secret', "key", 'bucketname'])
if s3.check_s3_bucket_ex(args.bucketname):
print('Bucket ' + args.bucketname + ' exists!')
else:
print('Bucket ' + args.bucketname + ' dont exists!')
#--------------------------------------------------------------------------------------------------------#
# parse command line arguments:
def argparsefunc():
parser = argparse.ArgumentParser(
description="", add_help=False)
parser.add_argument('--key', help="user name")
parser.add_argument("--secret", help="s3 secret")
parser.add_argument("--signature", help="s3 signature",default='s3v4')
parser.add_argument("--endpoint", help="URL S3",default='https://s3.mpi-bn.mpg.de')
#actions
parser.add_argument("--bucket_exists", action='store_true', help="check if bucket exists")
#values
parser.add_argument("--bucketname")
parser.add_argument("--no_log", action='store_true', help='disable logging')
parser.add_argument('-h', '--help', action='store_true', dest='show_help')
args = parser.parse_args()
if args.show_help:
parser.print_help(sys.stderr)
if len(sys.argv)==1:
parser.print_help(sys.stderr)
sys.exit(1)
return args
if __name__ == "__main__":
run_s3_functions()
\ No newline at end of file
......@@ -29,7 +29,7 @@ class Loosolab_s3:
level = logging.INFO
else:
level = logging.CRITICAL
self.logger = logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', level=level)
self.logger = logging.getLogger('Loosolab_s3_logger')
......@@ -443,7 +443,7 @@ class Loosolab_s3:
else:
self.transfer.upload_file(local_file_name, bucket_name, file_name)
#self.session.Bucket(bucket_name).upload_file(local_file_name, file_name, Config=self.transfer)
self.logger.info("All files are uploaded!" + str(file_list))
self.logger.info("File " + str(local_file_name) + ' gets uploaded!')
except Exception as e:
self.__exception_log__("S3: Uploading files failed!" ,e)
return
......
......@@ -7,10 +7,12 @@ setup(name='loosolab_s3',
author_email='marina.kiweler@mpi-bn.mpg.de',
license='MIT',
packages=['loosolab_s3'],
entry_points = {
'console_scripts': ['S3 = loosolab_s3.cmd:run_s3_functions']
},
install_requires=[
'boto3',
'botocore>=1.24.26'
],
'boto3', # ==1.21.25',
'botocore'],
classifiers = [
'Programming Language :: Python :: 3'
],
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment