diff options
Diffstat (limited to 'src/live/ogOperations.py')
-rw-r--r-- | src/live/ogOperations.py | 35 |
1 files changed, 16 insertions, 19 deletions
diff --git a/src/live/ogOperations.py b/src/live/ogOperations.py index 6b1b01f..0e31cea 100644 --- a/src/live/ogOperations.py +++ b/src/live/ogOperations.py @@ -30,6 +30,7 @@ from src.utils.probe import os_probe, cache_probe from src.utils.disk import * from src.utils.cache import generate_cache_txt, umount_cache, init_cache from src.utils.tiptorrent import * +from src.utils.inventory import get_package_set OG_SHELL = '/bin/bash' @@ -252,30 +253,26 @@ class OgLiveOperations: def software(self, request, path, ogRest): disk = request.getDisk() partition = request.getPartition() + partdev = get_partition_device(int(disk), int(partition)) + mountpoint = partdev.replace('dev', 'mnt') + if not mount_mkdir(partdev, mountpoint): + raise RuntimeError(f'Error mounting {partdev} at {mountpoint}') + if not os.path.ismount(mountpoint): + raise RuntimeError('Invalid mountpoint for software inventory') self._restartBrowser(self._url_log) - - try: - cmd = f'{ogClient.OG_PATH}interfaceAdm/InventarioSoftware {disk} ' \ - f'{partition} {path}' - - ogRest.proc = subprocess.Popen([cmd], - stdout=subprocess.PIPE, - shell=True, - executable=OG_SHELL) - (output, error) = ogRest.proc.communicate() - except: - logging.error('Exception when running software inventory subprocess') - raise ValueError('Error: Incorrect command value') - + pkgset = get_package_set(mountpoint) self._restartBrowser(self._url) - software = '' - with open(path, 'r') as f: - software = f.read() - + umount(mountpoint) logging.info('Software inventory command OK') - return software + + # Software inventory result is still processed by legacy server code + # (ogAdmServer.c). Legacy response format is string where each + # software package is separated by a newline '\n'. + # Each package/software line follows this format: + # "{package_name} {package_version}" + return '\n'.join(map(str,pkgset)) def hardware(self, path, ogRest): self._restartBrowser(self._url_log) |