Hi Nicola,
             I've merged your changes into my version of the galaxy code 
(slightly older than galaxy-central) I believe, however, I get the following 
error when I try and execute your script:

Traceback (most recent call last):
  File "get_wfs.py", line 13, in <module>
    common.post(api_key, 'http://barium-rbh:9100/extras/api/workflows/import', 
data)
  File "/home/galaxy/milxcloud/scripts/api/common.py", line 48, in post
    return simplejson.loads( urllib2.urlopen( req ).read() )
  File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 406, in open
    response = meth(req, response)
  File "/usr/lib/python2.7/urllib2.py", line 519, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.7/urllib2.py", line 444, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 527, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 500: Internal Server Error

so I printed out the some lines in common.py 

def post( api_key, url, data ):
    # Do the actual POST.
    url = make_url( api_key, url )
    print "URL is %s" % url

>>> URL is 
>>> http://barium-rbh:9100/extras/api/workflows/import?key=34ee80757f0d03de36e33a1676d245e4

the script is:
import sys
#sys.path.insert(1, 'milxcloud/scripts/api')
import common
api_key = '34ee80757f0d03de36e33a1676d245e4'
workflows = common.get(api_key, 
'http://barium-rbh:9100/api/workflows?show_published=True')
print workflows
published_workflow_ids = [str(workflow[u'id']) for workflow in workflows if 
bool(workflow[u'published'])]
print published_workflow_ids

for pw_id in published_workflow_ids:
    data = {}
    data['workflow_id'] = pw_id
    common.post(api_key, 'http://barium-rbh:9100/extras/api/workflows/import', 
data)


and I run it from ~/scripts/api

The output from the script is :
python get_wfs.py 
[{'name': 'SUVR', 'tags': [], 'url': '/extras/api/workflows/f2db41e1fa331b3e', 
'published': True, 'model_class': 'StoredWorkflow', 'id': 'f2db41e1fa331b3e'}, 
{'name': 'processSUVRData', 'tags': [], 'url': 
'/extras/api/workflows/f597429621d6eb2b', 'published': True, 'model_class': 
'StoredWorkflow', 'id': 'f597429621d6eb2b'}]
['f2db41e1fa331b3e', 'f597429621d6eb2b']
URL is 
http://barium-rbh:9100/extras/api/workflows/import?key=34ee80757f0d03de36e33a1676d245e4

Any ideas why the import maybe failing?

Thanks
Neil



________________________________________
From: Nicola Soranzo [sora...@crs4.it]
Sent: Monday, January 20, 2014 9:03 PM
To: Burdett, Neil (CCI, Herston - RBWH)
Cc: galaxy-dev@lists.bx.psu.edu
Subject: Re: Import workflows via API

Hi Neil,
to import all published workflows you can use a script like this:

import sys
sys.path.insert(1, 'galaxy-central/scripts/api')
import common
api_key = 'YOUR_USER_API_KEY'
workflows = common.get(api_key,
'http://YOUR_SERVER/api/workflows?show_published=True')
published_workflow_ids = [str(workflow[u'id']) for workflow in
workflows if bool(workflow[u'published'])]
for pw_id in published_workflow_ids:
     data['workflow_id'] = pw_id
     common.post(api_key, 'http://YOUR_SERVER/api/workflows/import',
data)

Nicola

Il 2014-01-19 03:12 neil.burd...@csiro.au ha scritto:
> Hi Nicola,
>                 that is exactly what I'm looking for, however, how do
> I execute the script/tool? I would like to import all published
> workflows. What is the name of the script to run and the arguments ?
> Can you give an example please?
>
> Thanks again
> Neil
>
>
> Date: Fri, 17 Jan 2014 11:36:03 +0100
> From: Nicola Soranzo <sora...@crs4.it>
> To: <galaxy-dev@lists.bx.psu.edu>
> Subject: Re: [galaxy-dev] Import workflows via API
> Message-ID: <d834d247437269704a26e8bbf8f67...@crs4.it>
> Content-Type: text/plain; charset=UTF-8; format=flowed
>
> Il 2014-01-17 06:45 neil.burd...@csiro.au ha scritto:
>> Hi,
>>
>>  I execute workflows via the API. However, if I want another user to
>> use my workflows, I can publish my workflows, but the new user then
>> has to go on to the web browser and import this workflow.
>>
>> Is there a method/script which I can call via the API which can
>> import
>> all available (published) workflows so the user doesn't have to
>> click
>> a button on the web browser "import workflow" ?
>>
>> Thanks for any help
>
> Hi Neil,
> you are very lucky, just yesterday my pull request implementing
> exactly
> this has been merged in galaxy-central:
>
>
> https://bitbucket.org/galaxy/galaxy-central/pull-request/298/api-display-and-import-workflows-shared-by/diff
>
> and is also available in BioBlend thanks to my colleague Simone Leo:
>
> https://github.com/afgane/bioblend/pull/51
>
> Best,
> Nicola
>
> --
> Nicola Soranzo, Ph.D.
> Bioinformatics Program, CRS4
> Loc. Piscina Manna, 09010 Pula (CA), Italy
> http://www.bioinformatica.crs4.it/


___________________________________________________________
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
  http://lists.bx.psu.edu/

To search Galaxy mailing lists use the unified search at:
  http://galaxyproject.org/search/mailinglists/

Reply via email to