예제 #1
0
    def get_snap_status(self, snap_name, series=None, arch=None):
        if series is None:
            series = constants.DEFAULT_SERIES

        account_info = self.get_account_information()
        try:
            snap_id = account_info['snaps'][series][snap_name]['snap-id']
        except KeyError:
            raise errors.SnapNotFoundError(snap_name, series=series, arch=arch)

        response = self._refresh_if_necessary(self.sca.snap_status, snap_id,
                                              series, arch)

        if not response:
            raise errors.SnapNotFoundError(snap_name, series=series, arch=arch)

        return response
예제 #2
0
    def download(self, snap_name, channel, download_path, arch=None):
        if arch is None:
            arch = snapcraft.ProjectOptions().deb_arch

        package = self.cpi.search_package(snap_name, channel, arch)
        if package is None:
            raise errors.SnapNotFoundError(snap_name, channel, arch)
        self._download_snap(
            snap_name, channel, arch, download_path,
            package['download_url'], package['download_sha512'])
예제 #3
0
 def get_package(self, snap_name, channel, arch):
     headers = {
         'Accept': 'application/hal+json',
         'X-Ubuntu-Architecture': arch,
         'X-Ubuntu-Release': constants.DEFAULT_SERIES,
     }
     params = {
         'channel': channel,
         'fields': 'status,download_url,download_sha512',
     }
     logger.info('Getting details for {}'.format(snap_name))
     url = 'api/v1/snaps/details/{}'.format(snap_name)
     resp = self.get(url, headers=headers, params=params)
     if resp.status_code != 200:
         raise errors.SnapNotFoundError(snap_name, channel, arch)
     return resp.json()
예제 #4
0
    def get_package(self, snap_name, channel, arch=None):
        headers = self.get_default_headers()
        headers.update({
            'Accept': 'application/hal+json',
            'X-Ubuntu-Release': constants.DEFAULT_SERIES,
        })
        if arch:
            headers['X-Ubuntu-Architecture'] = arch

        params = {
            'channel': channel,
            # FIXME LP: #1662665
            'fields': 'status,anon_download_url,download_url,'
                      'download_sha3_384,download_sha512,snap_id,'
                      'revision,release',
        }
        logger.info('Getting details for {}'.format(snap_name))
        url = 'api/v1/snaps/details/{}'.format(snap_name)
        resp = self.get(url, headers=headers, params=params)
        if resp.status_code != 200:
            raise errors.SnapNotFoundError(snap_name, channel, arch)
        return resp.json()