in airavata_django_portal_sdk/experiment_util/api.py [0:0]
def clone(request, experiment_id):
"""Clone experiment and return the experiment id of the clone."""
if remoteapi.is_remote_api_configured():
resp = remoteapi.call(request,
"/experiments/{experiment_id}/clone/",
path_params={"experiment_id": experiment_id},
base_url="/api",
method="post")
data = resp.json()
return data['experimentId']
else:
# figure what project to clone into
experiment = request.airavata_client.getExperiment(
request.authz_token, experiment_id)
project_id = _get_writeable_project(request, experiment)
# clone experiment
cloned_experiment_id = request.airavata_client.cloneExperiment(
request.authz_token, experiment_id,
"Clone of {}".format(experiment.experimentName), project_id)
cloned_experiment = request.airavata_client.getExperiment(
request.authz_token, cloned_experiment_id)
# Create a copy of the experiment input files
_copy_cloned_experiment_input_uris(request, cloned_experiment)
# Null out experimentDataDir so a new one will get created at launch
# time
cloned_experiment.userConfigurationData.experimentDataDir = None
request.airavata_client.updateExperiment(
request.authz_token, cloned_experiment.experimentId, cloned_experiment
)
return cloned_experiment_id