]> Frank Brehm's Git Trees - pixelpark/puppet-tools.git/commitdiff
Fixing class ForgeModuleInfo in lib/dpx_puppettools/forge/mod_info.py
authorFrank Brehm <frank.brehm@pixelpark.com>
Fri, 10 Feb 2023 16:45:46 +0000 (17:45 +0100)
committerFrank Brehm <frank.brehm@pixelpark.com>
Fri, 10 Feb 2023 16:45:46 +0000 (17:45 +0100)
lib/dpx_puppettools/app/__init__.py
lib/dpx_puppettools/forge/mod_info.py

index 1b6986f55a533395ae96099814caf64d8ef4ca71..04ba703bf84caf1ac29c70717769670cf999566d 100644 (file)
@@ -378,5 +378,12 @@ class BaseDPXPuppetApplication(FbConfigApplication):
         p = Popen(cmd, stdin=PIPE, universal_newlines=True)
         p.communicate(mail.as_string())
 
+# =============================================================================
+
+if __name__ == "__main__":
+
+    pass
+
+# =============================================================================
 
-# vim: ts=4 et list
+# vim: tabstop=4 expandtab shiftwidth=4 softtabstop=4 list
index dcf34b904075b489e7a4bcbabba282841ebc54b1..4403c478ff0136edecb290bf8419d46da29db032 100644 (file)
@@ -37,7 +37,7 @@ from ..errors import BaseHookError, BaseModuleInfoError
 
 from ..xlate import XLATOR
 
-from ..base_module_info import BaseModuleInfo
+from ..base_moduleinfo import BaseModuleInfo
 
 from . import parse_forge_date, ForgeModuleInfoError
 
@@ -47,7 +47,7 @@ from .cur_mod_release_info import CurrentModuleReleaseInfo
 from .owner_info import ForgeOwnerInfo
 
 
-__version__ = '0.4.0'
+__version__ = '0.4.1'
 
 LOG = logging.getLogger(__name__)
 
@@ -139,6 +139,7 @@ class ForgeModuleInfo(BaseModuleInfo):
         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
@@ -147,8 +148,6 @@ class ForgeModuleInfo(BaseModuleInfo):
         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
@@ -504,7 +503,7 @@ class ForgeModuleInfo(BaseModuleInfo):
         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)
@@ -630,14 +629,16 @@ class ForgeModuleInfo(BaseModuleInfo):
         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)
@@ -747,27 +748,29 @@ class ForgeModuleInfo(BaseModuleInfo):
             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:
@@ -781,7 +784,7 @@ class ForgeModuleInfo(BaseModuleInfo):
         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__)