3636import pickle
3737import re
3838import requests
39+ from retrying import retry
3940import sys
4041import tempfile
4142import time
4748from singularity .logman import bot
4849
4950##########################################################################################
50- # GOOGLE STORAGE API #####################################################################
51+ # GOOGLE GENERAL API #####################################################################
5152##########################################################################################
5253
53- def get_storage_service ():
54+ def get_google_service (service_type = None ,version = None ):
55+ '''
56+ get_url will use the requests library to get a url
57+ :param service_type: the service to get (default is storage)
58+ :param version: version to use (default is v1)
59+ '''
60+ if service_type == None :
61+ service_type = "storage"
62+ if version == None :
63+ version = "v1"
64+
5465 credentials = GoogleCredentials .get_application_default ()
55- return build ('storage' , 'v1' , credentials = credentials )
66+ return build (service_type , version , credentials = credentials )
5667
5768
58- def get_compute_service ():
59- credentials = GoogleCredentials . get_application_default ()
60- return build ( 'compute' , 'v1' , credentials = credentials )
69+ ##########################################################################################
70+ # GOOGLE STORAGE API #####################################################################
71+ ##########################################################################################
6172
62-
73+ @ retry ( wait_exponential_multiplier = 1000 , wait_exponential_max = 10000 )
6374def get_bucket (storage_service ,bucket_name ):
6475 req = storage_service .buckets ().get (bucket = bucket_name )
6576 return req .execute ()
6677
6778
79+ @retry (wait_exponential_multiplier = 1000 , wait_exponential_max = 10000 )
6880def delete_object (storage_service ,bucket_name ,object_name ):
6981 '''delete_file will delete a file from a bucket
7082 :param storage_service: the service obtained with get_storage_service
@@ -75,6 +87,7 @@ def delete_object(storage_service,bucket_name,object_name):
7587 object = object_name ).execute ()
7688
7789
90+ @retry (wait_exponential_multiplier = 1000 , wait_exponential_max = 10000 )
7891def upload_file (storage_service ,bucket ,bucket_path ,file_name ,verbose = True ):
7992 '''get_folder will return the folder with folder_name, and if create=True,
8093 will create it if not found. If folder is found or created, the metadata is
@@ -103,6 +116,7 @@ def upload_file(storage_service,bucket,bucket_path,file_name,verbose=True):
103116 return request .execute ()
104117
105118
119+ @retry (wait_exponential_multiplier = 1000 , wait_exponential_max = 10000 )
106120def list_bucket (bucket ,storage_service ):
107121 # Create a request to objects.list to retrieve a list of objects.
108122 request = storage_service .objects ().list (bucket = bucket ['id' ],
@@ -183,7 +197,7 @@ def run_build(build_dir=None,spec_file=None,repo_url=None,token=None,size=None,b
183197 params ['bucket_name' ] = "singularity-hub"
184198
185199 if params ['padding' ] == None :
186- params ['padding' ] = 50
200+ params ['padding' ] = 200
187201
188202 output = run_build_main (build_dir = build_dir ,
189203 params = params )
@@ -209,7 +223,7 @@ def run_build(build_dir=None,spec_file=None,repo_url=None,token=None,size=None,b
209223 bot .logger .info ("Sending build files %s to storage" ,'\n ' .join (build_files ))
210224
211225 # Start the storage service, retrieve the bucket
212- storage_service = get_storage_service ()
226+ storage_service = get_google_service () # default is "storage" "v1"
213227 bucket = get_bucket (storage_service ,params ["bucket_name" ])
214228
215229 # For each file, upload to storage
@@ -275,7 +289,7 @@ def finish_build(verbose=True):
275289 params = pickle .load (open (passing_params ,'rb' ))
276290
277291 # Start the storage service, retrieve the bucket
278- storage_service = get_storage_service ()
292+ storage_service = get_google_service ()
279293 bucket = get_bucket (storage_service ,params ['bucket_name' ])
280294 image_path = "%s/%s" % (re .sub ('^http.+//www[.]' ,'' ,params ['repo_url' ]),params ['commit' ])
281295
0 commit comments