from ..xlate import XLATOR
-from ..base_module_info import BaseModuleInfo
+from ..base_moduleinfo import BaseModuleInfo
from . import parse_forge_date, ForgeModuleInfoError
from .owner_info import ForgeOwnerInfo
-__version__ = '0.4.0'
+__version__ = '0.4.1'
LOG = logging.getLogger(__name__)
res = super(ForgeModuleInfo, self).as_dict(short=short)
res['created_at'] = self.created_at
+ res['date_checked'] = self.date_checked
res['deprecated_for'] = self.deprecated_for
res['downloads'] = self.downloads
res['endorsement'] = self.endorsement
res['homepage_url'] = self.homepage_url
res['http_timeout'] = self.http_timeout
res['issues_url'] = self.issues_url
- res['last_download_date'] = self.last_download_date
- res['last_download_ts'] = self.last_download_ts
res['module_group'] = self.module_group
res['response_code'] = self.response_code
res['response_msg'] = self.response_msg
return self._var_dir
@var_dir.setter
- def var_dir(self, value)
+ def var_dir(self, value):
if value is None:
msg = _("The var directory must not be None.")
raise BaseModuleInfoError(msg)
self.apply_data(data)
# -------------------------------------------------------------------------
- def apply_data(self, data):
+ def apply_data(self, data, from_cache=True):
- if 'forge_data' not in data:
- msg = _("The given data seems not to be valid cached puppet forge data:")
- msg += '\n' + pp(data)
- raise ReadForgeModuleInfoError(msg)
+ fd = data
- fd = data['forge_data']
+ if from_cache:
+ if 'forge_data' not in data:
+ msg = _("The given data seems not to be valid cached puppet forge data:")
+ msg += '\n' + pp(data)
+ raise ReadForgeModuleInfoError(msg)
+ fd = data['forge_data']
self.releases = ModuleReleaseList(
appname=self.appname, verbose=self.verbose, base_dir=self.base_dir)
except (ConnectionError, ReadTimeout, ConnectTimeout) as e:
msg = "{c} on getting module info for {m}: {e}".format(
c=e.__class__.__name__, m=full_name, e=e)
- raise RetrieveForgeDataErrormsg)
+ raise RetrieveForgeDataError(msg)
if w:
warn_class = w[-1].category.__name__
warn_msg = '{}: {}'.format(
warn_class, w[-1].message)
- self.response_msg = warn_msg
+ self._response_msg = warn_msg
if warn_class == 'SubjectAltNameWarning':
LOG.debug(warn_msg)
else:
LOG.warn(warn_msg)
LOG.debug("Got status code: {}.".format(response.status_code))
- self.response_code = response.status_code
+ self._response_code = response.status_code
if not response.ok:
err = response.json()
- err_msg = err['error']
- if self.response_msg:
- self.response_msg += '\n' + err_msg
+ err_msg = '\n'.join(err['errors'])
+ if self._response_msg:
+ self._response_msg += '\n' + err_msg
else:
- self.response_msg = err_msg
- LOG.debug("Did not found module {} on Puppet forge.".format(self.full_name))
+ self._response_msg = err_msg
+ msg = _("Did not found module {!r} on Puppet forge:").format(self.full_name)
+ msg += ' ' + self.response_msg
+ LOG.debug(msg)
return None
if not response.text:
data = response.json()
if self.verbose > 3:
LOG.debug("Performing forge data:\n" + pp(data))
- self.apply_data(data)
+ self.apply_data(data, from_cache=False)
if self.verbose > 2:
msg = _("Got {}:").format(self.__class__.__name__)