def releases_data(self): path = self.releases_key if self._releases is None: try: self._releases = self._fetch_data(path) except ResourceNotFound: raise_package_not_found(self.package) return self._releases
def get_release(cls, package, release_query, stable=False): releases = cls.all_releases(package) if not releases: raise_package_not_found(package, release=release_query) if release_query is None or release_query == 'default': return last_version(releases, stable) else: try: return select_version(releases, str(release_query), stable) except ValueError as e: raise InvalidRelease(e.message, {"release": release_query})
def delete_release(self, release, media_type): try: self.get_lock(self.releases_key) data = self.releases_data if release not in data['releases'] or media_type not in data[ 'releases'][release]['manifests']: raise_package_not_found(self.package) data['releases'][release]['manifests'].pop(media_type) if not data['releases'][release]['manifests']: data['releases'].pop(release) if not data['releases']: self.delete_package(self.package) self._write_data(self.releases_key, data) return True finally: self.release_lock(self.releases_key)
def get_blob(self, digest): try: path = self.blob_key(digest) return self._fetch_raw_data(path) except ResourceNotFound: raise_package_not_found(self.package, digest)
def release_channels(self, release): if release not in self.releases_data['releases']: raise_package_not_found(self.package, release) return self.releases_data['releases'][release]['channels']
def _check_channel_release(self, channel, release): if not self.ischannel_exists(channel): raise_channel_not_found(channel) if release not in self.releases_data['releases']: raise_package_not_found(self.package, release)
def release(self, release, media_type): try: return self.release_manifests(release)[media_type] except KeyError: raise_package_not_found(self.package, release, media_type)
def release_manifests(self, release): try: manifests = self.releases_data['releases'][release]['manifests'] return manifests except KeyError: raise_package_not_found(self.package, release)