Skip to content

Commit b09019d

Browse files
authored
Merge pull request #210 from wltrimbl/mg-submit
Mg submit
2 parents a2cfd8c + 4a39219 commit b09019d

File tree

5 files changed

+149
-81
lines changed

5 files changed

+149
-81
lines changed

mglib/mglib.py

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import base64
77
import json
88
import string
9+
import time
910
import random
1011
import hashlib
1112
import subprocess
@@ -176,6 +177,7 @@ def async_rest_api(url, auth=None, data=None, debug=False, delay=60):
176177

177178
# POST file to MG-RAST or Shock
178179
def post_file(url, keyname, filename, data={}, auth=None, debug=False):
180+
179181
if debug:
180182
print("post_file", url)
181183
data[keyname] = (filename, open(filename, 'rb'))
@@ -187,27 +189,47 @@ def post_file(url, keyname, filename, data={}, auth=None, debug=False):
187189
print("data:\t"+repr(data))
188190
print("header:\t"+repr(header))
189191
print("url:\t"+url)
190-
try:
191-
res = requests.post(url, data=datagen, headers=header, stream=True)
192-
except HTTPError as error:
192+
193+
success = False
194+
sleep = 60
195+
maxt = 3
196+
counter = 0
197+
obj = None
198+
199+
# try maxt times
200+
while not success and counter < maxt :
193201
try:
194-
eobj = json.loads(error.read())
195-
if 'ERROR' in eobj:
196-
sys.stderr.write("ERROR (%s): %s\n" %(error.code, eobj['ERROR']))
197-
elif 'error' in eobj:
198-
sys.stderr.write("ERROR (%s): %s\n" %(error.code, eobj['error'][0]))
199-
except:
202+
res = requests.post(url, data=datagen, headers=header, stream=True)
203+
except HTTPError as error:
204+
try:
205+
eobj = json.loads(error.read())
206+
if 'ERROR' in eobj:
207+
sys.stderr.write("ERROR (%s): %s\n" %(error.code, eobj['ERROR']))
208+
elif 'error' in eobj:
209+
sys.stderr.write("ERROR (%s): %s\n" %(error.code, eobj['error'][0]))
210+
except:
211+
sys.stderr.write("ERROR (%s): %s\n" %(error.code, error.read()))
212+
finally:
213+
# sys.exit(1)
214+
return None
215+
except OSError as error:
216+
sys.stderr.write("ERROR with post_file\n")
200217
sys.stderr.write("ERROR (%s): %s\n" %(error.code, error.read()))
201-
finally:
202-
sys.exit(1)
203-
if not res:
204-
sys.stderr.write("ERROR: no results returned\n")
205-
sys.exit(1)
206-
obj = json.loads(res.content.decode("utf8"))
207-
if debug:
208-
print(json.dumps(obj))
209-
if obj is None:
210-
sys.stderr.write("ERROR: return structure not valid json format\n")
218+
if not res:
219+
sys.stderr.write("ERROR: no results returned for %s\n"% (filename))
220+
# sys.exit(1)
221+
else:
222+
obj = json.loads(res.content.decode("utf8"))
223+
if debug:
224+
print(json.dumps(obj))
225+
if obj is None:
226+
sys.stderr.write("ERROR: return structure not valid json format\n")
227+
else:
228+
success = True
229+
# increase counter
230+
if not success :
231+
counter += 1
232+
time.sleep(counter * sleep)
211233
return(obj)
212234

213235
# safe handling of stdout for piping

scripts/mg-display-statistics.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def main(args):
8383
token = get_auth_token(opts)
8484

8585
# build call url
86-
url = opts.url+'/metagenome/'+opts.id+'?verbosity=stats'
86+
url = opts.url+'/metagenome/'+opts.id+'?verbosity=stats&public=1'
8787

8888
# retrieve / output data
8989
result = obj_from_url(url, auth=token)

scripts/mg-project.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
"""
5050

5151
synch_pause = 900
52-
valid_actions = ["get-info", "get-metadata", "update-metadata", "make-public", "submit-ebi", "status-ebi"]
52+
valid_actions = ["get-info", "get-metadata", "update-metadata", "make-public", "submit-ebi", "status-ebi" , "move-metagenomes"]
5353

5454

5555
def main(args):
@@ -116,6 +116,10 @@ def main(args):
116116
elif action == "status-ebi":
117117
data = obj_from_url(opts.url+'/submission/'+pid, auth=token)
118118
print(json.dumps(data, sort_keys=True, indent=4))
119+
elif action == "move-metagenoes":
120+
next ;
121+
data = obj_from_url(opts.url+'/submission/'+pid, auth=token)
122+
print(json.dumps(data, sort_keys=True, indent=4))
119123

120124
return 0
121125

0 commit comments

Comments
 (0)