def _get_package_version(self): own_version = utils.get_package_version('contrail-nodemgr') if own_version is None: self.msg_log('Error getting %s package version' % ( 'contrail-nodemgr'), SandeshLevel.SYS_ERR) own_version = "package-version-unknown" return own_version
def _get_package_version(self): pkg_version = utils.get_package_version('contrail-nodemgr') if pkg_version is None: self.msg_log('Error getting %s package version' % ( 'contrail-nodemgr'), SandeshLevel.SYS_ERR) pkg_version = "unknown" return pkg_version
def clear_partition(partition): unmount_partition(partition) enc_key = '-pbkdf2' openssl_version = get_package_version('openssl') if compare_package_versions(openssl_version, '1.1.1') == 'smaller': # deprecated key derivation in openssl 1.1.1+ enc_key = '-aes-256-ctr' shell_exec( "openssl enc {0} -pass pass:\"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)\" -nosalt < /dev/zero > {1}" .format(enc_key, partition.enc_status['device']))
def status(): version = utils.get_package_version() or "Not Installed" last_sync = utils.get_appliance_config("last_sync_time") or "None" last_discovery = utils.get_appliance_config("last_discovery_time") or "None" cpu_load_average = " ".join(map(str, utils.get_cpu_load_average())) mem_stats = utils.get_memory_stats() used = mem_stats["used"] - mem_stats["buffers"] - mem_stats["cached"] memory_usage = "%s MB of %s MB (%s%%)" % (used, mem_stats["total"], used * 100 / mem_stats["total"]) disc_stats = utils.get_disk_stats() disc_usage = "%.1f GB of %.1f GB (%s%%)" % (disc_stats["used"] / 1024.0**2, disc_stats["total"] / 1024.0**2, disc_stats["usage_percent"]) agent_enabled = utils.is_agent_proxy_enabled() if agent_enabled: agent_url = utils.get_agent_proxy_url() return render_template('status.html', **locals())
def run(self): if self.setThemePath is None: self.write_log('Plymouth not installed - exiting', 'warning') return try: if not exists(self.modulesPath): shell_exec("touch {}".format(self.modulesPath)) # Cleanup first self.queue_progress() shell_exec("sed -i -e 's/^ *//; s/ *$//' %s" % self.modulesPath) # Trim all lines shell_exec("sed -i -e '/^.*KMS$/d' %s" % self.modulesPath) shell_exec("sed -i -e '/^intel_agp$/d' %s" % self.modulesPath) shell_exec("sed -i -e '/^drm$/d' %s" % self.modulesPath) shell_exec("sed -i -e '/^nouveau modeset.*/d' %s" % self.modulesPath) shell_exec("sed -i -e '/^radeon modeset.*/d' %s" % self.modulesPath) shell_exec("sed -i -e '/^i915 modeset.*/d' %s" % self.modulesPath) shell_exec("sed -i -e '/^uvesafb\s*mode_option.*/d' %s" % self.modulesPath) if self.boot is not None: shell_exec("sed -i -e '/^GRUB_GFXPAYLOAD_LINUX.*/d' %s" % self.boot) splashFile = '/etc/initramfs-tools/conf.d/splash' if exists(splashFile): os.remove(splashFile) # Set/Unset splash self.queue_progress() if self.boot is not None: cmd = "sed -i -e 's/\s*[a-z]*splash//' {}".format(self.boot) shell_exec(cmd) if self.theme is None: self.write_log("Set nosplash") cmd = "sed -i -e '/^GRUB_CMDLINE_LINUX_DEFAULT=/ s/\"$/ nosplash\"/' {}".format( self.boot) shell_exec(cmd) # Comment the GRUB_GFXMODE line if needed cmd = "sed -i '/GRUB_GFXMODE=/s/^/#/' %s" % self.boot shell_exec(cmd) else: self.write_log("Set splash") cmd = "sed -i -e '/^GRUB_CMDLINE_LINUX_DEFAULT=/ s/\"$/ splash\"/' {}".format( self.boot) shell_exec(cmd) # Set resolution if self.resolution is not None: self.write_log("GRUB_GFXMODE={}".format( self.resolution)) cmd = "sed -i -e '/GRUB_GFXMODE=/ c GRUB_GFXMODE={0}' {1}".format( self.resolution, self.boot) shell_exec(cmd) # Only for plymouth version older than 9 self.queue_progress() if self.theme is not None and self.resolution is not None: plymouthVersion = str_to_nr( get_package_version("plymouth").replace('.', '')[0:2], True) self.write_log("plymouthVersion={}".format(plymouthVersion)) if plymouthVersion < 9: # Write uvesafb command to modules file self.write_log("> Use uvesafb to configure Plymouth") line = "\nuvesafb mode_option=%s-24 mtrr=3 scroll=ywrap\ndrm\n" % self.resolution with open(self.modulesPath, 'a') as f: f.write(line) # Use framebuffer line = "FRAMEBUFFER=y" with open('/etc/initramfs-tools/conf.d/splash', 'w') as f: f.write(line) if self.boot is not None: # Read grub for debugging purposes with open(self.boot, 'r') as f: content = f.read() self.write_log("\nNew grub:\n{}\n".format(content)) # Update grub self.queue_progress() if 'grub' in self.boot: shell_exec('update-grub') else: shell_exec('update-burg') # Set the theme and update initramfs self.queue_progress() if self.theme is not None: shell_exec("{0} -R {1}".format(self.setThemePath, self.theme)) except Exception as detail: self.write_log(detail, 'exception')
fix_progs = [['apache2', '/var/log/apache2', 'root:adm', 0], ['mysql-client', '/var/log/mysql', 'mysql:adm', 0], ['clamav', '/var/log/clamav', 'clamav:clamav', 0], ['lightdm', '/var/lib/lightdm/data', 'lightdm:lightdm', 0], ['v86d', 'v86d', 'purge', 0], ['usb-creator', 'solydxk-usb-creator', 'purge', 0], ['solydk-system-adjustments-8', 'solydk-system-adjustments', 'purge', 0], ['solydx-system-adjustments-8', 'solydx-system-adjustments', 'purge', 0], ['solydk-system-adjustments-9', 'solydk-system-adjustments', 'purge', 0], ['solydx-system-adjustments-9', 'solydx-system-adjustments', 'purge', 0], ['firefox-solydxk-adjustments', 'firefox-esr-solydxk-adjustments', 'purge', 0]] ver = get_debian_version() for prog in fix_progs: if ver >= prog[3] or prog[3] == 0: if get_package_version(prog[0]) != '': if prog[2] == 'purge' or prog[2] == 'install': if get_apt_cache_locked_program() == '': os.system("apt-get %s %s %s" % (prog[2], force, prog[1])) elif ':' in prog[2] and not isdir(prog[1]): os.system("mkdir -p %s" % prog[1]) os.system("chown %s %s" % (prog[2], prog[1])) try: adjustment_directory = "/usr/share/solydxk/system-adjustments/" array_preserves = [] overwrites = {} # Perform file execution adjustments for filename in sorted(os.listdir(adjustment_directory)):
def main(): args = docopt.docopt(__doc__, version=__version__) log_level = 'DEBUG' if args['--debug'] else 'INFO' if sys.platform == 'win32': log_fn = 'c:/atxpkg/atxpkg.log' else: log_fn = '/tmp/atxpkg/atxpkg.log' utils.logging_setup(log_level, log_fn, print_=True) logging.info('*' * 40) logging.info('starting atxpkg v%s' % __version__) logging.debug('args: %s' % dict(args)) if sys.platform == 'win32': logging.debug('detected win32') db_fn = 'c:/atxpkg/installed.json' repos_fn = 'c:/atxpkg/repos.txt' prefix = 'c:' cache_dir = 'c:/atxpkg/cache' else: logging.debug('detected non-win32') db_fn = '/tmp/atxpkg/installed.json' repos_fn = '/tmp/atxpkg/repos.txt' prefix = '' cache_dir = '/tmp/atxpkg/cache' repos = utils.get_repos(repos_fn) repos.append(cache_dir) #logging.debug(str(args)) prefix = args['--prefix'] if args['--prefix'] else '' if not os.path.isfile(db_fn): logging.info('%s not found, creating empty one' % db_fn) with open(db_fn, 'w') as f: f.write('{}') if not os.path.isdir(cache_dir): logging.info('%s not found, creating empty one' % cache_dir) os.makedirs(cache_dir) installed_packages = utils.get_installed_packages(db_fn) force = args['--force'] yes, no = args['--yes'], args['--no'] if args['install']: available_packages = utils.get_available_packages(repos) for package in args['<package>']: package_name = utils.get_package_name(package) if package_name not in available_packages: raise Exception('unable to find package %s' % package_name) if package_name in installed_packages and not force: raise Exception('package %s already installed' % package_name) for package in args['<package>']: package_name = utils.get_package_name(package) package_version = utils.get_package_version(package) if package_version: url = utils.get_specific_version_url(available_packages[package_name], package_version) else: url = utils.get_max_version_url(available_packages[package_name]) ver = utils.get_package_version(utils.get_package_fn(url)) print('install %s-%s' % (package_name, ver)) if no or not (yes or utils.yes_no('continue?', default='y')): return for package in args['<package>']: package_name = utils.get_package_name(package) package_version = utils.get_package_version(package) if package_version: url = utils.get_specific_version_url(available_packages[package_name], package_version) else: url = utils.get_max_version_url(available_packages[package_name]) local_fn = utils.download_package(url, cache_dir) if not args['--downloadonly']: package_info = utils.install_package(local_fn, prefix, force) installed_packages[package_name] = package_info utils.save_installed_packages(installed_packages, db_fn) elif args['update']: available_packages = utils.get_available_packages(repos) if args['<package>']: packages = args['<package>'] for package in packages: if '..' in package: package_old, package_new = package.split('..') package_name_old = utils.get_package_name(package_old) package_name_new = utils.get_package_name(package_new) else: package_name_old = package_name_new = utils.get_package_name(package) if package_name_old not in installed_packages: raise Exception('package %s not installed' % package_name_old) else: packages = installed_packages.keys() packages_to_update = set() for package in packages: if '..' in package: package_old, package_new = package.split('..') package_name_old = utils.get_package_name(package_old) package_name_new = utils.get_package_name(package_new) package_version = utils.get_package_version(package_new) else: package_name_old = package_name_new = utils.get_package_name(package) package_version = utils.get_package_version(package) if package_name_new not in available_packages: logging.warning('%s not available in any repository' % package_name_new) continue if package_version: url = utils.get_specific_version_url(available_packages[package_name_new], package_version) else: url = utils.get_max_version_url(available_packages[package_name_new]) ver_cur = installed_packages[package_name_old]['version'] ver_avail = utils.get_package_version(utils.get_package_fn(url)) if package_name_old != package_name_new or ver_avail != ver_cur or force: print('update %s-%s -> %s-%s' % (package_name_old, ver_cur, package_name_new, ver_avail)) packages_to_update.add(package) if not packages_to_update: print('nothing to update') return if no or not (yes or utils.yes_no('continue?', default='y')): return for package in packages_to_update: if '..' in package: package_old, package_new = package.split('..') package_name_old = utils.get_package_name(package_old) package_name_new = utils.get_package_name(package_new) package_version = utils.get_package_version(package_new) else: package_name_old = package_name_new = utils.get_package_name(package) package_version = utils.get_package_version(package) if package_version: url = utils.get_specific_version_url(available_packages[package_name_new], package_version) else: url = utils.get_max_version_url(available_packages[package_name_new]) ver_cur = installed_packages[package_name_old]['version'] ver_avail = utils.get_package_version(utils.get_package_fn(url)) if package_name_old != package_name_new or ver_avail != ver_cur or force: local_fn = utils.download_package(url, cache_dir) if not args['--downloadonly']: package_info = utils.update_package(local_fn, package_name_old, installed_packages[package_name_old], prefix, force) del installed_packages[package_name_old] installed_packages[package_name_new] = package_info utils.save_installed_packages(installed_packages, db_fn) elif args['merge_config']: if args['<package>']: packages = args['<package>'] for package in packages: package_name = utils.get_package_name(package) if package_name not in installed_packages: raise Exception('package %s not installed' % package_name) else: packages = installed_packages.keys() for package in packages: package_name = utils.get_package_name(package) if package_name not in installed_packages: raise Exception('package %s not installed' % package_name) for package in packages: utils.mergeconfig_package(package, installed_packages, prefix) elif args['remove']: for package_name in args['<package>']: if package_name not in installed_packages: raise Exception('package %s not installed' % package_name) for package_name in args['<package>']: package_version = installed_packages[package_name]['version'] print('remove %s-%s' % (package_name, package_version)) if no or not (yes or utils.yes_no('continue?', default='n')): return for package_name in args['<package>']: utils.remove_package(package_name, installed_packages, prefix) del installed_packages[package_name] utils.save_installed_packages(installed_packages, db_fn) elif args['list_available']: available_packages = utils.get_available_packages(repos) for package_name in sorted(available_packages.keys()): print(package_name) elif args['list_installed']: for package_name, package_info in installed_packages.items(): package_version = package_info['version'] print('%s-%s' % (package_name, package_version)) elif args['show_untracked']: recursive = args['--recursive'] fn_to_package_name = utils.gen_fn_to_package_name_mapping(installed_packages, prefix) if args['<path>']: paths = set([args['<path>'], ]) else: paths = set() for fn in fn_to_package_name.keys(): paths.add(os.path.dirname(fn)) while paths: for path in paths.copy(): for fn in os.listdir(path): if os.path.isdir('%s/%s' % (path, fn)) and not os.path.islink('%s/%s' % (path, fn)): if recursive: paths.add('%s/%s' % (path, fn)) else: continue if '%s/%s' % (path, fn) in fn_to_package_name: continue print('%s/%s' % (path, fn)) paths.remove(path) elif args['clean_cache']: utils.clean_cache(cache_dir) logging.debug('exit') return 0
def main(): args = docopt.docopt(__doc__, version=__version__) log_level = 'DEBUG' if args['--debug'] else 'INFO' if sys.platform == 'win32': log_fn = 'c:/atxpkg/atxpkg.log' else: log_fn = '/tmp/atxpkg/atxpkg.log' utils.logging_setup(log_level, log_fn, print_=True) logging.info('*' * 40) logging.info('starting atxpkg v%s' % __version__) logging.debug('args: %s' % dict(args)) if sys.platform == 'win32': logging.debug('detected win32') db_fn = 'c:/atxpkg/installed.json' repos_fn = 'c:/atxpkg/repos.txt' prefix = 'c:' cache_dir = 'c:/atxpkg/cache' else: logging.debug('detected non-win32') db_fn = '/tmp/atxpkg/installed.json' repos_fn = '/tmp/atxpkg/repos.txt' prefix = '' cache_dir = '/tmp/atxpkg/cache' repos = utils.get_repos(repos_fn) repos.append(cache_dir) #logging.debug(str(args)) prefix = args['--prefix'] if args['--prefix'] else '' if not os.path.isfile(db_fn): logging.info('%s not found, creating empty one' % db_fn) with open(db_fn, 'w') as f: f.write('{}') if not os.path.isdir(cache_dir): logging.info('%s not found, creating empty one' % cache_dir) os.makedirs(cache_dir) installed_packages = utils.get_installed_packages(db_fn) force = args['--force'] yes, no = args['--yes'], args['--no'] if args['install']: available_packages = utils.get_available_packages(repos) for package in args['<package>']: package_name = utils.get_package_name(package) if package_name not in available_packages: raise Exception('unable to find package %s' % package_name) if package_name in installed_packages and not force: raise Exception('package %s already installed' % package_name) for package in args['<package>']: package_name = utils.get_package_name(package) package_version = utils.get_package_version(package) if package_version: url = utils.get_specific_version_url( available_packages[package_name], package_version) else: url = utils.get_max_version_url( available_packages[package_name]) ver = utils.get_package_version(utils.get_package_fn(url)) print('install %s-%s' % (package_name, ver)) if no or not (yes or utils.yes_no('continue?', default='y')): return for package in args['<package>']: package_name = utils.get_package_name(package) package_version = utils.get_package_version(package) if package_version: url = utils.get_specific_version_url( available_packages[package_name], package_version) else: url = utils.get_max_version_url( available_packages[package_name]) local_fn = utils.download_package(url, cache_dir) if not args['--downloadonly']: package_info = utils.install_package(local_fn, prefix, force) installed_packages[package_name] = package_info utils.save_installed_packages(installed_packages, db_fn) logging.info('%s-%s is now installed' % (package_name, package_version)) elif args['update']: available_packages = utils.get_available_packages(repos) if args['<package>']: packages = args['<package>'] for package in packages: if '..' in package: package_old, package_new = package.split('..') package_name_old = utils.get_package_name(package_old) package_name_new = utils.get_package_name(package_new) else: package_name_old = package_name_new = utils.get_package_name( package) if package_name_old not in installed_packages: raise Exception('package %s not installed' % package_name_old) else: packages = installed_packages.keys() packages_to_update = set() for package in packages: if '..' in package: package_old, package_new = package.split('..') package_name_old = utils.get_package_name(package_old) package_name_new = utils.get_package_name(package_new) package_version = utils.get_package_version(package_new) else: package_name_old = package_name_new = utils.get_package_name( package) package_version = utils.get_package_version(package) if package_name_new not in available_packages: logging.warning('%s not available in any repository' % package_name_new) continue if package_version: url = utils.get_specific_version_url( available_packages[package_name_new], package_version) else: url = utils.get_max_version_url( available_packages[package_name_new]) ver_cur = installed_packages[package_name_old]['version'] ver_avail = utils.get_package_version(utils.get_package_fn(url)) if package_name_old != package_name_new or ver_avail != ver_cur or force: print('update %s-%s -> %s-%s' % (package_name_old, ver_cur, package_name_new, ver_avail)) packages_to_update.add(package) if not packages_to_update: print('nothing to update') return if no or not (yes or utils.yes_no('continue?', default='y')): return for package in packages_to_update: if '..' in package: package_old, package_new = package.split('..') package_name_old = utils.get_package_name(package_old) package_name_new = utils.get_package_name(package_new) package_version = utils.get_package_version(package_new) else: package_name_old = package_name_new = utils.get_package_name( package) package_version = utils.get_package_version(package) if package_version: url = utils.get_specific_version_url( available_packages[package_name_new], package_version) else: url = utils.get_max_version_url( available_packages[package_name_new]) ver_cur = installed_packages[package_name_old]['version'] ver_avail = utils.get_package_version(utils.get_package_fn(url)) if package_name_old != package_name_new or ver_avail != ver_cur or force: local_fn = utils.download_package(url, cache_dir) if not args['--downloadonly']: package_info = utils.update_package( local_fn, package_name_old, installed_packages[package_name_old], prefix, force) del installed_packages[package_name_old] installed_packages[package_name_new] = package_info utils.save_installed_packages(installed_packages, db_fn) logging.info('%s-%s updated to %s-%s' % (package_name_old, ver_cur, package_name_new, ver_avail)) elif args['merge_config']: if args['<package>']: packages = args['<package>'] for package in packages: package_name = utils.get_package_name(package) if package_name not in installed_packages: raise Exception('package %s not installed' % package_name) else: packages = installed_packages.keys() for package in packages: package_name = utils.get_package_name(package) if package_name not in installed_packages: raise Exception('package %s not installed' % package_name) for package in packages: utils.mergeconfig_package(package, installed_packages, prefix) elif args['remove']: for package_name in args['<package>']: if package_name not in installed_packages: raise Exception('package %s not installed' % package_name) for package_name in args['<package>']: package_version = installed_packages[package_name]['version'] print('remove %s-%s' % (package_name, package_version)) if no or not (yes or utils.yes_no('continue?', default='n')): return for package_name in args['<package>']: utils.remove_package(package_name, installed_packages, prefix) del installed_packages[package_name] utils.save_installed_packages(installed_packages, db_fn) elif args['list_available']: available_packages = utils.get_available_packages(repos) for package_name in sorted(available_packages.keys()): print(package_name) elif args['list_installed']: for package_name, package_info in installed_packages.items(): package_version = package_info['version'] print('%s-%s' % (package_name, package_version)) elif args['show_untracked']: recursive = args['--recursive'] fn_to_package_name = utils.gen_fn_to_package_name_mapping( installed_packages, prefix) if args['<path>']: paths = set([ args['<path>'], ]) else: paths = set() for fn in fn_to_package_name.keys(): paths.add(os.path.dirname(fn)) while paths: for path in paths.copy(): for fn in os.listdir(path): if os.path.isdir( '%s/%s' % (path, fn)) and not os.path.islink('%s/%s' % (path, fn)): if recursive: paths.add('%s/%s' % (path, fn)) else: continue if '%s/%s' % (path, fn) in fn_to_package_name: continue print('%s/%s' % (path, fn)) paths.remove(path) elif args['clean_cache']: utils.clean_cache(cache_dir) elif args['check']: if args['<package>']: packages = args['<package>'] for package in packages: if not package in installed_packages.keys(): packages = [] print('%s not installed' % package) else: packages = installed_packages.keys() if packages: for package in packages: for fn in installed_packages[package]['md5sums']: if not os.path.isfile('%s/%s' % (prefix, fn)): logging.info('%s/%s does not exist' % (prefix, fn)) else: if utils.get_md5sum( '%s/%s' % (prefix, fn) ) != installed_packages[package]['md5sums'][fn]: logging.info('sum of %s/%s differs' % (prefix, fn)) print('check of %s complete' % package) logging.info('check of %s complete' % package) logging.debug('exit') return 0
def get_package_version(self): return utils.get_package_version(self.path_or_file)