def save(self): predicsis.log('Updating: ' + self.__class__.res_name() + '..', 1) post_data = self.__class__.parse_post_data(self.to_update) json_data = APIClient.request('patch', self.__class__.res_url() + '/' + self.id, post_data) j = json_data[self.__class__.res_name()] try: jid = j['job_ids'][0] status = 'pending' job = Job.retrieve(jid) status = job.status while ((status != 'completed') and (status != 'failed')): job = Job.retrieve(jid) status = job.status if status == 'failed': raise PredicSisError("Job failed! (job_id: " + job.id + ")") #time.sleep(1) json_data = APIClient.request('get', self.res_url() + '/' + self.id) obj = json_data[self.res_name()] for k, v in obj.iteritems(): if isinstance(v, dict): setattr(self, k, APIResource(v)) else: setattr(self, k, v) except KeyError: json_data = APIClient.request('get', self.res_url() + '/' + self.id) obj = json_data[self.res_name()] for k, v in obj.iteritems(): if isinstance(v, dict): setattr(self, k, APIResource(v)) else: setattr(self, k, v) except IndexError: raise PredicSisError("Job launching failed. Report this bug to [email protected]");
def create(cls, **data): if validate('c', cls.__name__, data) < 0: raise PredicSisError("Validation failed!") predicsis.log('Creating: ' + cls.res_name() + '..', 1) post_data = cls.parse_post_data(data) json_data = APIClient.request('post', cls.res_url(), post_data) j = json_data[cls.res_name()] try: jid = j['job_ids'][0] status = 'pending' job = Job.retrieve(jid) status = job.status while ((status != 'completed') and (status != 'failed')): job = Job.retrieve(jid) status = job.status if status == 'failed': raise PredicSisError("Job failed! (job_id: " + job.id + ")") #time.sleep(1) return cls.retrieve(j['id']) except KeyError: return cls(j) except IndexError: raise PredicSisError("Job launching failed. Report this bug to [email protected]");
def retrieve_all(cls): predicsis.log('Retrieving all: ' + cls.res_name() + '..', 1) json_data = APIClient.request('get', cls.res_url()) j = json_data[cls.res_url().split('/')[-1]] return [cls(i) for i in j]
def retrieve(cls, id): predicsis.log('Retrieving: ' + cls.res_name() + '..', 1) json_data = APIClient.request('get', cls.res_url() + '/' + id) j = json_data[cls.res_name()] return cls(j)
def delete(self): predicsis.log('Deleting: ' + self.__class__.res_name() + '..', 1) APIClient.request('delete', self.__class__.res_url() + '/' + self.id) for id in self.source_ids: APIClient.request('delete', 'sources/' + id)
def delete(self): predicsis.log('Deleting: ' + self.__class__.res_name() + '..', 1) APIClient.request('delete', self.__class__.res_url() + '/' + self.id)