Example #1
0
 def add_job(self, session_id, job_id):
     # endpoint /v1/sessions/{sessions_id}/jobs/{job_id}
     endpoint = '{0}{1}/jobs/{2}'.format(self.endpoint, session_id, job_id)
     r = requests.put(endpoint, headers=self.headers, verify=self.verify)
     if r.status_code != 204:
         raise exceptions.ApiClientException(r)
     return
Example #2
0
    def list(self, limit=10, offset=0, search=None):
        """
        Retrieves a list of client info structures

        :param limit: number of result to return (optional, default 10)
        :param offset: order of first document (optional, default 0)
        :param search: structured query (optional)
                       can contain:
                       * "match": list of {field, value}
                       Example:
                       { "match": [
                               {"description": "some search text here"},
                               {"client_id": "giano"},
                               ...
                             ],
                       }
        """
        data = json.dumps(search) if search else None
        query = {'limit': int(limit), 'offset': int(offset)}
        r = requests.get(self.endpoint,
                         headers=self.headers,
                         params=query,
                         data=data,
                         verify=self.verify)
        if r.status_code != 200:
            raise exceptions.ApiClientException(r)
        return r.json()['clients']
Example #3
0
    def end_session(self, session_id, job_id, session_tag, result):
        """
        Informs the freezer service that the job has ended.
        Provides information about the job's result and the session tag

        :param session_id:
        :param job_id:
        :param session_tag:
        :param result:
        :return:
        """
        # endpoint /v1/sessions/{sessions_id}/action
        endpoint = '{0}{1}/action'.format(self.endpoint, session_id)
        doc = {
            "end": {
                "job_id": job_id,
                "current_tag": session_tag,
                "result": result
            }
        }
        r = requests.post(endpoint,
                          headers=self.headers,
                          data=json.dumps(doc),
                          verify=self.verify)
        if r.status_code != 202:
            raise exceptions.ApiClientException(r)
        return r.json()
Example #4
0
    def start_session(self, session_id, job_id, session_tag):
        """
        Informs the api that the client is starting the session
        identified by the session_id and request the session_tag
        to be incremented up to the requested value.
        The returned session_id could be:
         * current_tag + 1 if the session has started
         * > current_tag + 1 if the action had already been started
           by some other node and this node was out of sync

        :param session_id:
        :param job_id:
        :param session_tag: the new session_id
        :return: the response obj:
                 { result: string 'running' or 'error',
                  'session_tag': the new session_tag )
        """
        # endpoint /v1/sessions/{sessions_id}/action
        endpoint = '{0}{1}/action'.format(self.endpoint, session_id)
        doc = {"start": {"job_id": job_id, "current_tag": session_tag}}
        r = requests.post(endpoint,
                          headers=self.headers,
                          data=json.dumps(doc),
                          verify=self.verify)
        if r.status_code != 202:
            raise exceptions.ApiClientException(r)
        return r.json()
Example #5
0
 def get(self, client_id):
     endpoint = self.endpoint + client_id
     r = requests.get(endpoint, headers=self.headers, verify=self.verify)
     if r.status_code == 200:
         return r.json()
     if r.status_code == 404:
         return None
     raise exceptions.ApiClientException(r)
Example #6
0
 def create(self, client_info):
     r = requests.post(self.endpoint,
                       data=json.dumps(client_info),
                       headers=self.headers,
                       verify=self.verify)
     if r.status_code != 201:
         raise exceptions.ApiClientException(r)
     client_id = r.json()['client_id']
     return client_id
Example #7
0
 def update(self, action_id, update_doc):
     endpoint = self.endpoint + action_id
     r = requests.patch(endpoint,
                        headers=self.headers,
                        data=json.dumps(update_doc),
                        verify=self.verify)
     if r.status_code != 200:
         raise exceptions.ApiClientException(r)
     return r.json()['version']
Example #8
0
 def create(self, backup_metadata):
     r = requests.post(self.endpoint,
                       data=json.dumps(backup_metadata),
                       headers=self.headers,
                       verify=self.verify)
     if r.status_code != 201:
         raise exceptions.ApiClientException(r)
     backup_id = r.json()['backup_id']
     return backup_id
Example #9
0
 def list(self, limit=10, offset=0, search=None):
     data = json.dumps(search) if search else None
     query = {'limit': int(limit), 'offset': int(offset)}
     r = requests.get(self.endpoint,
                      headers=self.headers,
                      params=query,
                      data=data,
                      verify=self.verify)
     if r.status_code != 200:
         raise exceptions.ApiClientException(r)
     return r.json()['actions']
Example #10
0
 def create(self, doc, action_id=''):
     action_id = action_id or doc.get('action_id', '')
     endpoint = self.endpoint + action_id
     r = requests.post(endpoint,
                       data=json.dumps(doc),
                       headers=self.headers,
                       verify=self.verify)
     if r.status_code != 201:
         raise exceptions.ApiClientException(r)
     action_id = r.json()['action_id']
     return action_id
Example #11
0
 def create(self, doc, job_id=''):
     job_id = job_id or doc.get('job_id', '')
     endpoint = self.endpoint + job_id
     doc['client_id'] = doc.get('client_id', '') or self.client.client_id
     r = requests.post(endpoint,
                       data=json.dumps(doc),
                       headers=self.headers,
                       verify=self.verify)
     if r.status_code != 201:
         raise exceptions.ApiClientException(r)
     job_id = r.json()['job_id']
     return job_id
Example #12
0
 def remove_job(self, session_id, job_id):
     # endpoint /v1/sessions/{sessions_id}/jobs/{job_id}
     endpoint = '{0}{1}/jobs/{2}'.format(self.endpoint, session_id, job_id)
     retry = 5
     r = ''
     while retry:
         r = requests.delete(endpoint,
                             headers=self.headers,
                             verify=self.verify)
         if r.status_code == 204:
             return
         retry -= 1
     raise exceptions.ApiClientException(r)
Example #13
0
    def start_job(self, job_id):
        """
        Request to start a job

        :param job_id: the id of the job to start
        :return: the response obj:
                 {
                    result: string 'success' or 'already started'
                 }
        """
        # endpoint /v1/jobs/{job_id}/event
        endpoint = '{0}{1}/event'.format(self.endpoint, job_id)
        doc = {"start": None}
        r = requests.post(endpoint,
                          headers=self.headers,
                          data=json.dumps(doc),
                          verify=self.verify)
        if r.status_code != 202:
            raise exceptions.ApiClientException(r)
        return r.json()
Example #14
0
    def list(self, limit=10, offset=0, search=None):
        """
        Retrieves a list of backup infos

        :param limit: number of result to return (optional, default 10)
        :param offset: order of first document (optional, default 0)
        :param search: structured query (optional)
                       can contain:
                       * "time_before": timestamp
                       * "time_after": timestamp
                       Example:
                       { "time_before": 1428529956 }
        """
        data = json.dumps(search) if search else None
        query = {'limit': int(limit), 'offset': int(offset)}
        r = requests.get(self.endpoint,
                         headers=self.headers,
                         params=query,
                         data=data,
                         verify=self.verify)
        if r.status_code != 200:
            raise exceptions.ApiClientException(r)

        return r.json()['backups']
Example #15
0
 def delete(self, client_id):
     endpoint = self.endpoint + client_id
     r = requests.delete(endpoint, headers=self.headers, verify=self.verify)
     if r.status_code != 204:
         raise exceptions.ApiClientException(r)
Example #16
0
 def test_get_message_from_response_string(self):
     e = exceptions.ApiClientException('some error message')
     self.assertEquals(str(e), 'some error message')