def clone()

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