Exemplo n.º 1
0
def add_experiment():
    tic = time.time()
    userid = get_and_verify_user(request)

    artifacts = {}
    try:
        experiment = model.experiment_from_dict(request.json['experiment'])
        if get_db().can_write_experiment(experiment.key, userid):
            for tag, art in experiment.artifacts.iteritems():
                art.pop('local', None)

            get_db().add_experiment(experiment, userid)
            added_experiment = get_db().get_experiment(experiment.key)

            artifacts = _process_artifacts(added_experiment)
            status = 'ok'
        else:
            raise ValueError('Unauthorized')

    except BaseException:
        status = traceback.format_exc()
    toc = time.time()
    getlogger().info('Processed add_experiment request in {} s'.format(toc -
                                                                       tic))

    return json.dumps({'status': status, 'artifacts': artifacts})
Exemplo n.º 2
0
def add_experiment():
    tic = time.time()
    userid = get_and_verify_user(request)

    # TODO check if user has access

    artifacts = {}
    try:
        experiment = model.experiment_from_dict(request.json['experiment'])
        for tag, art in experiment.artifacts.iteritems():
            art.pop('local', None)

        get_db().add_experiment(experiment)
        added_experiment = get_db().get_experiment(experiment.key)

        for tag, art in added_experiment.artifacts.iteritems():
            if 'key' in art.keys():
                get_db().store.grant_write(art['key'], userid)
                artifacts[tag] = art
        status = 'ok'

    except BaseException:
        status = traceback.format_exc()
    toc = time.time()
    getlogger().info('Processed add_experiment request in {} s'.format(toc -
                                                                       tic))

    return json.dumps({'status': status, 'artifacts': artifacts})
Exemplo n.º 3
0
    def get_project_experiments(self, project):
        headers = self._get_headers()
        response = requests.post(self.url + '/api/get_project_experiments',
                                 headers=headers,
                                 data=json.dumps({"project": project}))

        self._raise_detailed_error(response)
        data = response.json()['experiments']

        experiments = [model.experiment_from_dict(edict) for edict in data]

        return experiments
Exemplo n.º 4
0
    def get_experiment(self, experiment):
        if isinstance(experiment, basestring):
            key = experiment
        else:
            key = experiment.key

        headers = self._get_headers()
        request = requests.post(self.url + '/api/get_experiment',
                                headers=headers,
                                data=json.dumps({"key": key}))

        self._raise_detailed_error(request)
        return model.experiment_from_dict(request.json()['experiment'])