Source code for sisense.data.build

from sisense.resource import Resource


[docs]class Build(Resource): PENDING = 'pending' BUILDING = 'building' DONE = 'done' CANCELLED = 'cancelled' FAILED = 'failed'
[docs] def is_initialized(self) -> bool: """ True, if build has a status. :return: (bool) """ return self.status is not None
[docs] def is_pending(self) -> bool: """ True, if build has pending status. :return: (bool) """ return self.status == self.PENDING
[docs] def is_building(self) -> bool: """ True, if build has building status. :return: (bool) """ return self.status == self.BUILDING
[docs] def is_done(self) -> bool: """ True, if build is done. :return: (bool) """ return self.status == self.DONE
[docs] def was_cancelled(self) -> bool: """ True, if build was cancelled. :return: (bool) """ return self.status == self.CANCELLED
[docs] def has_failed(self) -> bool: """ True, if build has failed. :return: (bool) """ return self.status == self.FAILED
[docs] def is_finished(self) -> bool: """ True, if build is not running nor pending. :return: (bool) """ return self.is_done() or self.was_cancelled() or self.has_failed()
[docs] def get(self, oid: str) -> Resource: """ Get a build task by id. :param oid: (str) Build ID. :return: Build """ content = self._api.get(f'builds/{oid}') return Build(self._api, content)
[docs] def update(self): """Update this build information.""" self.json = self.get(self.oid).json
[docs] def all(self, datamodel_id: str = None, status: str = None) -> list: """ Get a list of build tasks. :param datamodel_id: (str, default None) ID of Datamodel to filter results by. :param status: (str, default None) Build status to filter results by. Possible values: pending, building, done, failed, cancelled. :return: (list) List of Build objects. """ query = {} if datamodel_id: query['datamodelId'] = datamodel_id if status: query['status'] = status content = self._api.get('builds', query=query) return [Build(self._api, task) for task in content]
[docs] def start(self, datamodel_id: str, build_type: str = 'schema_changes', row_limit: int = None) -> Resource: """ Start a new build. :param datamodel_id: (str) Datamodel ID. :param build_type: (str, default 'schema_changes') Type of build. Possible values: schema_changes, by_table, full :param row_limit: (int) Row limit. :return: Build """ data = {'datamodelId': datamodel_id, 'buildType': build_type, 'rowLimit': row_limit} content = self._api.post('builds', data=data) return Build(self._api, content)
[docs] def stop(self): """Cancel/stop this build.""" self._api.delete(f'builds/{self.oid}') self.update()