(self)
| 455 | return #When we find the first force that's enough |
| 456 | |
| 457 | def checkSoftwareVersion(self): |
| 458 | apiHost = roConfig('cloud.apiHost') |
| 459 | if not apiHost: |
| 460 | self._logger.error('cloud.apiHost not present in ro config file.') |
| 461 | return None |
| 462 | |
| 463 | try: |
| 464 | data = { |
| 465 | 'update_available': False, |
| 466 | 'releases': [] |
| 467 | } |
| 468 | |
| 469 | for package in ([self.data] + self.data['additional']): |
| 470 | versionData = { |
| 471 | 'current': [ |
| 472 | package['version']['major'], |
| 473 | package['version']['minor'], |
| 474 | package['version']['build'] |
| 475 | ], |
| 476 | 'channel': self._settings.getInt(['software', 'channel']) |
| 477 | } |
| 478 | |
| 479 | if 'variant' in package: |
| 480 | versionData['variant'] = package['variant']['id'] |
| 481 | versionData['platform'] = package['platform'] |
| 482 | versionData['manufacturer_pkg_id'] = self.data['manufacturer_pkg_id'] |
| 483 | elif 'package' in package: |
| 484 | versionData['variant'] = self.data['variant']['id'] |
| 485 | versionData['package'] = package['package']['id'] |
| 486 | |
| 487 | r = requests.post('%s/astrobox/software/check' % apiHost, data=json.dumps(versionData), |
| 488 | auth = self._checkAuth(), |
| 489 | headers = self._requestHeaders |
| 490 | ) |
| 491 | |
| 492 | if r.status_code != 200: |
| 493 | self._logger.error('Error getting software release info: %d.' % r.status_code) |
| 494 | return None |
| 495 | else: |
| 496 | packageData = r.json() |
| 497 | packageData['name'] = package['variant']['name'] if 'variant' in package else package['package']['name'] |
| 498 | |
| 499 | if packageData['update_available']: |
| 500 | #check if it's the same one we have installed |
| 501 | packageData['is_current'] = packageData['release']['major'] == int(package['version']['major']) and packageData['release']['minor'] == int(package['version']['minor']) and packageData['release']['build'] == package['version']['build'] |
| 502 | if not packageData['is_current']: |
| 503 | data['update_available'] = True |
| 504 | |
| 505 | data['releases'].append(packageData) |
| 506 | |
| 507 | except Exception as e: |
| 508 | self._logger.error('Error getting software release info: %s' % e, exc_info=True) |
| 509 | return None |
| 510 | |
| 511 | return data |
| 512 | |
| 513 | def updateSoftware(self, releases): |
| 514 | self._status = 'updating' |
no test coverage detected