diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/configdict.py | 4 | ||||
| -rw-r--r-- | python/vyos/opmode.py | 2 | ||||
| -rw-r--r-- | python/vyos/system/grub.py | 14 | ||||
| -rw-r--r-- | python/vyos/template.py | 17 | ||||
| -rw-r--r-- | python/vyos/utils/system.py | 7 | 
5 files changed, 28 insertions, 16 deletions
| diff --git a/python/vyos/configdict.py b/python/vyos/configdict.py index 4111d7271..cb9f0cbb8 100644 --- a/python/vyos/configdict.py +++ b/python/vyos/configdict.py @@ -633,7 +633,7 @@ def get_accel_dict(config, base, chap_secrets, with_pki=False):      Return a dictionary with the necessary interface config keys.      """ -    from vyos.utils.system import get_half_cpus +    from vyos.cpu import get_core_count      from vyos.template import is_ipv4      dict = config.get_config_dict(base, key_mangling=('-', '_'), @@ -643,7 +643,7 @@ def get_accel_dict(config, base, chap_secrets, with_pki=False):                                    with_pki=with_pki)      # set CPUs cores to process requests -    dict.update({'thread_count' : get_half_cpus()}) +    dict.update({'thread_count' : get_core_count()})      # we need to store the path to the secrets file      dict.update({'chap_secrets_file' : chap_secrets}) diff --git a/python/vyos/opmode.py b/python/vyos/opmode.py index e1af1a682..8dab9a4ca 100644 --- a/python/vyos/opmode.py +++ b/python/vyos/opmode.py @@ -81,7 +81,7 @@ class InternalError(Error):  def _is_op_mode_function_name(name): -    if re.match(r"^(show|clear|reset|restart|add|update|delete|generate|set)", name): +    if re.match(r"^(show|clear|reset|restart|add|update|delete|generate|set|renew)", name):          return True      else:          return False diff --git a/python/vyos/system/grub.py b/python/vyos/system/grub.py index 864ed65aa..5ab9d76f0 100644 --- a/python/vyos/system/grub.py +++ b/python/vyos/system/grub.py @@ -56,7 +56,7 @@ REGEX_KERNEL_CMDLINE: str = r'^BOOT_IMAGE=/(?P<boot_type>boot|live)/((?P<image_v  REGEX_GRUB_BOOT_OPTS: str = r'^\s*set boot_opts="(?P<boot_opts>[^$]+)"$' -def install(drive_path: str, boot_dir: str, efi_dir: str, id: str = 'VyOS') -> None: +def install(drive_path: str, boot_dir: str, efi_dir: str, id: str = 'VyOS', chroot : str = "") -> None:      """Install GRUB for both BIOS and EFI modes (hybrid boot)      Args: @@ -65,17 +65,22 @@ def install(drive_path: str, boot_dir: str, efi_dir: str, id: str = 'VyOS') -> N          efi_dir (str): a path to '/boot/efi' directory      """ +    if chroot: +        chroot_cmd = f"chroot {chroot}" +    else: +        chroot_cmd = "" +      efi_installation_arch = "x86_64"      if platform.machine() == "aarch64":          efi_installation_arch = "arm64"      elif platform.machine() == "x86_64":          cmd( -            f'grub-install --no-floppy --target=i386-pc \ +            f'{chroot_cmd} grub-install --no-floppy --target=i386-pc \              --boot-directory={boot_dir}  {drive_path} --force'          )      cmd( -        f'grub-install --no-floppy --recheck --target={efi_installation_arch}-efi \ +        f'{chroot_cmd} grub-install --no-floppy --recheck --target={efi_installation_arch}-efi \              --force-extra-removable --boot-directory={boot_dir} \              --efi-directory={efi_dir} --bootloader-id="{id}" \              --no-uefi-secure-boot' @@ -374,7 +379,7 @@ def create_structure(root_dir: str = '') -> None:      if not root_dir:          root_dir = disk.find_persistence() -    Path(f'{root_dir}/GRUB_DIR_VYOS_VERS').mkdir(parents=True, exist_ok=True) +    Path(f'{root_dir}/{GRUB_DIR_VYOS_VERS}').mkdir(parents=True, exist_ok=True)  def set_console_type(console_type: str, root_dir: str = '') -> None: @@ -458,3 +463,4 @@ def sort_inodes(dir_path: str) -> None:      for item in temp_list_new:          new_name = Path(f'{item.as_posix()[0:-4]}')          item.rename(new_name) + diff --git a/python/vyos/template.py b/python/vyos/template.py index 19a469c8f..1aa9ace8b 100644 --- a/python/vyos/template.py +++ b/python/vyos/template.py @@ -1,4 +1,4 @@ -# Copyright 2019-2023 VyOS maintainers and contributors <maintainers@vyos.io> +# Copyright 2019-2024 VyOS maintainers and contributors <maintainers@vyos.io>  #  # This library is free software; you can redistribute it and/or  # modify it under the terms of the GNU Lesser General Public @@ -32,8 +32,21 @@ _TESTS = {}  # reuse Environments with identical settings to improve performance  @functools.lru_cache(maxsize=2)  def _get_environment(location=None): +    from os import getenv +      if location is None: -        loc_loader=FileSystemLoader(directories["templates"]) +        # Sometimes functions that rely on templates need to be executed outside of VyOS installations: +        # for example, installer functions are executed for image builds, +        # and anything may be invoked for testing from a developer's machine. +        # This environment variable allows running any unmodified code +        # with a custom template location. +        location_env_var = getenv("VYOS_TEMPLATE_DIR") +        if location_env_var: +            print(f"Using environment variable {location_env_var}") +            template_dir = location_env_var +        else: +            template_dir = directories["templates"] +        loc_loader=FileSystemLoader(template_dir)      else:          loc_loader=FileSystemLoader(location)      env = Environment( diff --git a/python/vyos/utils/system.py b/python/vyos/utils/system.py index 5d41c0c05..55813a5f7 100644 --- a/python/vyos/utils/system.py +++ b/python/vyos/utils/system.py @@ -79,13 +79,6 @@ def sysctl_apply(sysctl_dict: dict[str, str], revert: bool = True) -> bool:      # everything applied      return True -def get_half_cpus(): -    """ return 1/2 of the numbers of available CPUs """ -    cpu = os.cpu_count() -    if cpu > 1: -        cpu /= 2 -    return int(cpu) -  def find_device_file(device):      """ Recurively search /dev for the given device file and return its full path.          If no device file was found 'None' is returned """ | 
