diff --git a/.github/workflows/packaging-tests.yml b/.github/workflows/packaging-tests.yml index a08e5b5d098..cbd2249e97b 100644 --- a/.github/workflows/packaging-tests.yml +++ b/.github/workflows/packaging-tests.yml @@ -30,7 +30,7 @@ jobs: run: | # This stage is slow, and unnecessecary when no series exists, so # only run it if necessary to save some cycles. - # Github Actions doesn't appear to have a simple mechanism for + # GitHub Actions doesn't appear to have a simple mechanism for # early exit without failure if [ ! -f debian/patches/series ]; then echo "no patches, skipping" @@ -41,7 +41,7 @@ jobs: - name: Setup - Configure quilt run: | - # Github Actions doesn't appear to have a simple mechanism for + # GitHub Actions doesn't appear to have a simple mechanism for # early exit without failure if [ ! -f debian/patches/series ]; then echo "no patches, skipping" @@ -57,7 +57,7 @@ jobs: - name: Run test - apply patches and run unit tests run: | - # Github Actions doesn't appear to have a simple mechanism for + # GitHub Actions doesn't appear to have a simple mechanism for # early exit without failure if [ ! -f debian/patches/series ]; then echo "no patches, skipping" @@ -68,7 +68,7 @@ jobs: quilt pop -a --refresh - name: Enforce sorted patches run: | - # Github Actions doesn't appear to have a simple mechanism for + # GitHub Actions doesn't appear to have a simple mechanism for # early exit without failure if [ ! -f debian/patches/series ]; then echo "no patches, skipping" diff --git a/.github/workflows/packaging-upstream.yml b/.github/workflows/packaging-upstream.yml index 2caa12cf38b..9e446f6791d 100644 --- a/.github/workflows/packaging-upstream.yml +++ b/.github/workflows/packaging-upstream.yml @@ -43,7 +43,7 @@ jobs: - name: Setup - configure git run: | - git config user.name "Github Actions" + git config user.name "GitHub Actions" git config user.email "noreply@github.com" - name: Run test - apply patches and run unit tests for each series diff --git a/.github/workflows/shellcheck-debian-scripts.yml b/.github/workflows/shellcheck-debian-scripts.yml index 442f71d5e5a..eb79a5deb05 100644 --- a/.github/workflows/shellcheck-debian-scripts.yml +++ b/.github/workflows/shellcheck-debian-scripts.yml @@ -9,7 +9,7 @@ env: on: pull_request: - # There is a known bug in Github but it will most probably not affect out use case + # There is a known bug in GitHub but it will most probably not affect out use case # https://github.com/orgs/community/discussions/118623#discussioncomment-9087833 # When there are 2 PRs using the same source branch (actually the same head SHA to be more specific), with the base branch in one PR matching # on.pull_request.branches and thee base branch in the second PR not matching this key, diff --git a/cloudinit/analyze/show.py b/cloudinit/analyze/show.py index 56e317bfcfe..2dd0bb425eb 100644 --- a/cloudinit/analyze/show.py +++ b/cloudinit/analyze/show.py @@ -141,7 +141,7 @@ def __init__(self, property: str, parameter: Optional[str] = None): if parameter: self.args.append(parameter) - # --timestamp=utc is needed for native date strings. Othwerise, + # --timestamp=utc is needed for native date strings. Otherwise, # the datetime will be returned in the local timezone (which would be # a problem for strptime used later on in this method) # This option does not affect monotonic properties (values as @@ -203,7 +203,7 @@ def convert_val_to_float(self) -> float: # The format in this case is always "%a %Y-%m-%d %H:%M:%S %Z" # For example, UserspaceTimestamp=Wed 2025-07-30 05:14:32 UTC - # strptime returns a naive datetime so we need to explictly + # strptime returns a naive datetime so we need to explicitly # set the timezone of this datetime # at the timezone of the parsed string (utc) timestamp = ( diff --git a/cloudinit/cmd/main.py b/cloudinit/cmd/main.py index 05b9336d2f7..042d89420e2 100644 --- a/cloudinit/cmd/main.py +++ b/cloudinit/cmd/main.py @@ -1105,7 +1105,7 @@ def main(sysv_args=None): action="store_true", help=( "Run cloud-init's stages under a single process using a " - "syncronization protocol. This is not intended for CLI usage." + "synchronization protocol. This is not intended for CLI usage." ), default=False, ) diff --git a/cloudinit/config/cc_reset_rmc.py b/cloudinit/config/cc_reset_rmc.py index c6ce4881c53..aad3521f9b2 100644 --- a/cloudinit/config/cc_reset_rmc.py +++ b/cloudinit/config/cc_reset_rmc.py @@ -103,7 +103,7 @@ def get_node_id(): def add_path(orig_path): # Adding the RSCT_PATH to env standard path - # So thet cloud init automatically find and + # So that cloud init automatically find and # run RECFGCT to create new node_id. suff = ":" + orig_path if orig_path else "" os.environ["PATH"] = RSCT_PATH + suff diff --git a/cloudinit/config/cc_ssh.py b/cloudinit/config/cc_ssh.py index a7ecb1c0429..04a6e9c057d 100644 --- a/cloudinit/config/cc_ssh.py +++ b/cloudinit/config/cc_ssh.py @@ -80,7 +80,7 @@ def set_redhat_keyfile_perms(keyfile: str) -> None: permissions_private = 0o640 else: # fedora 38, centos 10 stream and above. sshd-keygen sets - # private key persmissions to 0o600. + # private key permissions to 0o600. permissions_private = 0o600 gid = util.get_group_id("ssh_keys") diff --git a/cloudinit/features.py b/cloudinit/features.py index 24edf880175..081bb9cd101 100644 --- a/cloudinit/features.py +++ b/cloudinit/features.py @@ -114,7 +114,7 @@ version to start logging deprecations at a level higher than INFO. The default value "devel" tells cloud-init to log all deprecations higher -than INFO. This value may be overriden by downstreams in order to maintain +than INFO. This value may be overridden by downstreams in order to maintain stable behavior across releases. Jsonschema key deprecations and inline logger deprecations include a diff --git a/cloudinit/net/dhcp.py b/cloudinit/net/dhcp.py index a301c76b3fb..fafa5e1b20c 100644 --- a/cloudinit/net/dhcp.py +++ b/cloudinit/net/dhcp.py @@ -747,7 +747,7 @@ def parse_unknown_options_from_packet( @param number: Option number to return @return: the option (bytes) or None """ - # DHCP is basically an extension to bootp. The relevent standards that + # DHCP is basically an extension to bootp. The relevant standards that # describe the packet format include: # # RFC 951 (Section 3) diff --git a/cloudinit/net/sysconfig.py b/cloudinit/net/sysconfig.py index 5d45babdf8d..5d2e2e1b30d 100644 --- a/cloudinit/net/sysconfig.py +++ b/cloudinit/net/sysconfig.py @@ -1121,7 +1121,7 @@ def render_network_state( netcfg.append("IPV6_AUTOCONF=no") # if sysconfig file exists and is not empty, append rest of the - # file content, do not remove the exsisting customizations. + # file content, do not remove the existing customizations. if os.path.exists(sysconfig_path): for line in util.load_text_file(sysconfig_path).splitlines(): if ( diff --git a/cloudinit/sources/DataSourceAliYun.py b/cloudinit/sources/DataSourceAliYun.py index b9a7a995b42..6986abfc1d1 100644 --- a/cloudinit/sources/DataSourceAliYun.py +++ b/cloudinit/sources/DataSourceAliYun.py @@ -147,7 +147,7 @@ def _maybe_fetch_api_token(self, mdurls): connect_synchronously=False, ) except uhelp.UrlError: - # We use the raised exception to interupt the retry loop. + # We use the raised exception to interrupt the retry loop. # Nothing else to do here. pass @@ -216,7 +216,7 @@ def crawl_metadata(self): except Exception: util.logexc( LOG, - "Faild read json meta-data from %s " + "Failed read json meta-data from %s " "fall back directory tree style", self.metadata_address, ) diff --git a/cloudinit/sources/DataSourceNoCloud.py b/cloudinit/sources/DataSourceNoCloud.py index dba8176314b..571e4f9d21c 100644 --- a/cloudinit/sources/DataSourceNoCloud.py +++ b/cloudinit/sources/DataSourceNoCloud.py @@ -415,7 +415,7 @@ def ds_detect(self): NoCloud historically used "nocloud-net" as its dsname for network timeframe (DEP_NETWORK), which supports http(s) urls. - For backwards compatiblity, check for that dsname. + For backwards compatibility, check for that dsname. """ log_deprecated = partial( lifecycle.deprecate, diff --git a/cloudinit/sources/DataSourceWSL.py b/cloudinit/sources/DataSourceWSL.py index e51db4eee60..222ec2a0f63 100644 --- a/cloudinit/sources/DataSourceWSL.py +++ b/cloudinit/sources/DataSourceWSL.py @@ -295,7 +295,7 @@ def merge_agent_landscape_data( # If both are found but we cannot reliably model both data files as # cloud-config dicts, then we cannot merge them ourselves, so we should # pass the data as if the user had written an include file - # for cloud-init to handle internally. We explicitely prioritize the + # for cloud-init to handle internally. We explicitly prioritize the # agent data, to ensure cloud-init would handle it even in the presence # of syntax errors in user data (agent data is autogenerated). # It's possible that the effects caused by the user data would override @@ -385,7 +385,7 @@ def __init__(self, sys_cfg, distro: Distro, paths: Paths, ud_proc=None): def find_user_data_file(self, seed_dir: PurePath) -> PurePath: """ - Finds the most precendent of the candidate files that may contain + Finds the most precedent of the candidate files that may contain user-data, if any, or None otherwise. """ diff --git a/cloudinit/sources/__init__.py b/cloudinit/sources/__init__.py index 820c09257af..29685e73964 100644 --- a/cloudinit/sources/__init__.py +++ b/cloudinit/sources/__init__.py @@ -319,10 +319,10 @@ class DataSource(CloudInitPickleMixin, metaclass=abc.ABCMeta): # in the updated metadata skip_hotplug_detect = False - # AWS interface data propagates to the IMDS without a syncronization method - # Since no better alternative exists, use a datasource-specific mechanism - # which retries periodically for a set amount of time - apply configuration - # as needed. Do not force retry on other datasources. + # AWS interface data propagates to the IMDS without a synchronization + # method. Since no better alternative exists, use a datasource-specific + # mechanism which retries periodically for a set amount of time - apply + # configuration as needed. Do not force retry on other datasources. # # https://github.com/amazonlinux/amazon-ec2-net-utils/blob/601bc3513fa7b8a6ab46d9496b233b079e55f2e9/lib/lib.sh#L483 hotplug_retry_settings = HotplugRetrySettings(False, 0, 0) diff --git a/cloudinit/sources/helpers/aliyun.py b/cloudinit/sources/helpers/aliyun.py index 201ceb04b88..fe97c8d2ae6 100644 --- a/cloudinit/sources/helpers/aliyun.py +++ b/cloudinit/sources/helpers/aliyun.py @@ -181,10 +181,10 @@ def convert_ecs_metadata_network_config( nic_name_2_mac_map[nic_name] = mac # sorted by nic_name - orderd_nic_name_list = sorted( + ordered_nic_name_list = sorted( nic_name_2_mac_map.keys(), key=net.natural_sort_key ) - for nic_idx, nic_name in enumerate(orderd_nic_name_list): + for nic_idx, nic_name in enumerate(ordered_nic_name_list): nic_mac = nic_name_2_mac_map[nic_name] nic_metadata = macs_metadata.get(nic_mac) dhcp_override = {"route-metric": (nic_idx + 1) * 100} diff --git a/cloudinit/url_helper.py b/cloudinit/url_helper.py index bae99b0322d..90d3cd39974 100644 --- a/cloudinit/url_helper.py +++ b/cloudinit/url_helper.py @@ -101,7 +101,7 @@ def read_ftps(url: str, timeout: float = 5.0, **kwargs: dict) -> "FtpResponse": when using strict mode (ftps://), raise exception in event of failure when not using strict mode (ftp://), fall back to using unencrypted ftp - url: string containing the desination to read a file from. The url is + url: string containing the destination to read a file from. The url is parsed with urllib.urlsplit to identify username, password, host, path, and port in the following format: ftps://[username:password@]host[:port]/[path] diff --git a/cloudinit/util.py b/cloudinit/util.py index 3e65c7ef508..c1996184b05 100644 --- a/cloudinit/util.py +++ b/cloudinit/util.py @@ -930,7 +930,7 @@ def del_dir(path): def read_optional_seed(fill, base="", ext="", timeout=5): """ - returns boolean indicating success or failure (presense of files) + returns boolean indicating success or failure (presence of files) if files are present, populates 'fill' dictionary with 'user-data' and 'meta-data' entries """ diff --git a/doc/examples/cloud-config-disk-setup.txt b/doc/examples/cloud-config-disk-setup.txt index cbdf0733e25..a608d6b1221 100644 --- a/doc/examples/cloud-config-disk-setup.txt +++ b/doc/examples/cloud-config-disk-setup.txt @@ -206,7 +206,7 @@ fs_setup: # of the ephemeral storage layer. # # If you define the device as 'ephemeralX.Y' then Y will be interpetted -# as a partition value. However, ephermalX.0 is the _same_ as ephemeralX. +# as a partition value. However, ephemeralX.0 is the _same_ as ephemeralX. # # : # Partition definitions are overwritten if you use the '.Y' notation. diff --git a/doc/man/cloud-init.1 b/doc/man/cloud-init.1 index b402b21ec87..c49f7bad004 100644 --- a/doc/man/cloud-init.1 +++ b/doc/man/cloud-init.1 @@ -23,7 +23,7 @@ Show program's version number and exit. .TP .B "--all-stages" -INTERNAL: Run cloud-init's stages under a single process using a syncronization protocol. This is not intended for CLI usage. +INTERNAL: Run cloud-init's stages under a single process using a synchronization protocol. This is not intended for CLI usage. .SH SUBCOMMANDS Please see the help output for each subcommand for additional details, diff --git a/doc/rtd/conf.py b/doc/rtd/conf.py index 3558750262f..11eec9069cb 100644 --- a/doc/rtd/conf.py +++ b/doc/rtd/conf.py @@ -337,7 +337,7 @@ def debug_module_docs( :param module_id: A specific 'cc_*' module name to print rendered RST for, or provide 'all' to print out all rendered module docs. - :param mod_docs: A dict represnting doc metadata for each config module. + :param mod_docs: A dict representing doc metadata for each config module. The dict is keyed on config module id (cc_*) and each value is a dict with values such as: title, name, examples, schema_doc. :param debug_file_path: A specific file to write the rendered RST content. diff --git a/doc/rtd/development/code_review.rst b/doc/rtd/development/code_review.rst index bde3f2328b2..42a27167588 100644 --- a/doc/rtd/development/code_review.rst +++ b/doc/rtd/development/code_review.rst @@ -27,7 +27,7 @@ need advice on an open PR, these are the available avenues: * Open a PR, add "WIP:" to the title, and leave a comment on that PR * join the ``#cloud-init`` `channel on Matrix `_ -* post on `Github Discussions`_ +* post on `GitHub Discussions`_ These are listed in order of our preference, but please use whichever of them you are most comfortable with. diff --git a/doc/rtd/development/integration_tests.rst b/doc/rtd/development/integration_tests.rst index ee60ae0a82b..36e6cb3bdd3 100644 --- a/doc/rtd/development/integration_tests.rst +++ b/doc/rtd/development/integration_tests.rst @@ -60,7 +60,7 @@ All possible configuration values are defined in `tests/integration_tests/integration_settings.py`_. Look in this file for the full list of variables that are available and for context on what each variable does and what the default values are. -Defaults can be overriden by supplying values in +Defaults can be overridden by supplying values in :file:`tests/integration_tests/user_settings.py` or by providing an environment variable of the same name prepended with ``CLOUD_INIT_``. For example, to set the ``PLATFORM`` setting: @@ -116,7 +116,7 @@ variable to ``ON_ERROR``. Use in-place cloud-init source code ------------------------------------- -The simplest way to test an integraton test using your current cloud-init +The simplest way to test an integration test using your current cloud-init changes is to set the ``CLOUD_INIT_SOURCE`` to ``IN_PLACE``. This works ONLY on LXD containers. This will mount the source code as-is directly into the container to override the pre-existing cloud-init code within the @@ -188,7 +188,7 @@ by ``LOCAL_LOG_PATH``. INCLUDE_COVERAGE = True -Addtionally, for profiling the integration tests, set the ``INCLUDE_PROFILE`` +Additionally, for profiling the integration tests, set the ``INCLUDE_PROFILE`` variable to ``True``. This will generate a profile report for the integration test run, and the report will be stored in the directory specified by ``LOCAL_LOG_PATH``. diff --git a/doc/rtd/development/testing.rst b/doc/rtd/development/testing.rst index 1ac90c8aef1..77abaae673d 100644 --- a/doc/rtd/development/testing.rst +++ b/doc/rtd/development/testing.rst @@ -66,7 +66,7 @@ Cloud-init supports a range of versions for each of its test dependencies, as well as runtime dependencies. If you are unsure whether a specific feature is supported for a particular dependency, check the ``lowest-supported`` environment in ``tox.ini``. This can be run using ``tox -e lowest-supported``. -This runs as a Github Actions job when a pull request is submitted or updated. +This runs as a GitHub Actions job when a pull request is submitted or updated. Mocking and assertions ---------------------- diff --git a/doc/rtd/explanation/format.rst b/doc/rtd/explanation/format.rst index a1fd83dd8c0..a0f8e98f02f 100644 --- a/doc/rtd/explanation/format.rst +++ b/doc/rtd/explanation/format.rst @@ -304,7 +304,7 @@ Explanation ----------- A cloud-config-archive is a way to specify more than one type of data -using YAML. Since building a MIME multipart archive can be somewhat unwieldly +using YAML. Since building a MIME multipart archive can be somewhat unwieldy to build by hand or requires using a cloud-init helper utility, the cloud-config-archive provides a simpler alternative to building the MIME multi-part archive for those that would prefer to use YAML. diff --git a/doc/rtd/explanation/hardening.rst b/doc/rtd/explanation/hardening.rst index 06c9be3b4c9..333e6781e72 100644 --- a/doc/rtd/explanation/hardening.rst +++ b/doc/rtd/explanation/hardening.rst @@ -2,7 +2,7 @@ Security Hardening ****************** Cloud-init's use case is automating cloud instance initialization, with support -across distributions and platforms. There are a myriad of ways to imrpove the +across distributions and platforms. There are a myriad of ways to improve the security posture of a cloud-init configured machine. Follow the security hardening guidelines provided by the OSes and cloud diff --git a/doc/rtd/index.rst b/doc/rtd/index.rst index 6a3ef84684c..f114f1ae19c 100644 --- a/doc/rtd/index.rst +++ b/doc/rtd/index.rst @@ -65,7 +65,7 @@ Having trouble? We would like to help! - :ref:`Check out our tutorials` if you're new to ``cloud-init`` - :ref:`Try the FAQ` for answers to some common questions -- You can also check `Github Discussions`_ +- You can also check `GitHub Discussions`_ - Find a bug? `Report bugs on GitHub Issues`_ Project and community diff --git a/doc/rtd/reference/breaking_changes.rst b/doc/rtd/reference/breaking_changes.rst index 434e0e0dd4c..9d00e8e8c83 100644 --- a/doc/rtd/reference/breaking_changes.rst +++ b/doc/rtd/reference/breaking_changes.rst @@ -81,7 +81,7 @@ in non-x86 images without DMI-data: - Charmed OpenStack Admins using glance-simplestreams-sync can default all - syncronized images to use config_drive: + synchronized images to use config_drive: .. code-block:: shell-session @@ -130,14 +130,14 @@ for more details. Single Process Optimization --------------------------- -As a performance optimization, cloud-init no longer runs as four seperate +As a performance optimization, cloud-init no longer runs as four separate Python processes. Instead, it launches a single process and then communicates with the init system over a Unix socket to allow the init system to tell it when it should start each stage and to tell the init system when each stage has completed. Init system ordering is preserved. -This should have no noticable affect for end users, besides a faster boot time. -This is labeled a breaking change for three reasons: +This should have no noticeable affect for end users, besides a faster boot +time. This is labeled a breaking change for three reasons: 1. this change included renaming a systemd service: ``cloud-init.service`` -> ``cloud-init-network.service`` diff --git a/doc/rtd/reference/cli.rst b/doc/rtd/reference/cli.rst index dff40b50707..286ae6f16b2 100644 --- a/doc/rtd/reference/cli.rst +++ b/doc/rtd/reference/cli.rst @@ -32,7 +32,7 @@ Example output: --version, -v Show program's version number and exit. --debug, -d Show additional pre-action logging (default: False). --force Force running even if no datasource is found (use at your own risk). - --all-stages Run cloud-init's stages under a single process using a syncronization protocol. This is not intended for CLI usage. + --all-stages Run cloud-init's stages under a single process using a synchronization protocol. This is not intended for CLI usage. Subcommands: {init,modules,single,query,features,analyze,devel,collect-logs,clean,status,schema} diff --git a/doc/rtd/reference/datasources/nocloud.rst b/doc/rtd/reference/datasources/nocloud.rst index 9a1e9eb30c3..94d9a0c754c 100644 --- a/doc/rtd/reference/datasources/nocloud.rst +++ b/doc/rtd/reference/datasources/nocloud.rst @@ -39,8 +39,8 @@ vendor-data ----------- Vendor-data may be used to provide default cloud-specific configurations which -may be overriden by user-data. This may be useful, for example, to configure an -instance with a cloud provider's repository mirror for faster package +may be overridden by user-data. This may be useful, for example, to configure +an instance with a cloud provider's repository mirror for faster package installation. network config @@ -87,7 +87,7 @@ configuration. .. note:: If using kernel command line arguments with GRUB, note that an - unescaped semicolon is intepreted as the end of a statement. + unescaped semicolon is interpreted as the end of a statement. See: `GRUB quoting`_ Method 2: System configuration @@ -118,7 +118,7 @@ that downstream distributions often use them to set reasonable default behaviors for cloud-init. This includes things such as which distro to behave as and which networking backend to use. -The default values in :file:`/etc/cloud/cloud.cfg` may be overriden by drop-in +The default values in :file:`/etc/cloud/cloud.cfg` may be overridden by drop-in files which are stored in :file:`/etc/cloud/cloud.cfg.d`. Configuration sources diff --git a/doc/rtd/reference/faq.rst b/doc/rtd/reference/faq.rst index 225ea642ffa..7a03da68761 100644 --- a/doc/rtd/reference/faq.rst +++ b/doc/rtd/reference/faq.rst @@ -11,7 +11,7 @@ Having trouble? We would like to help! - First go through this page with answers to common questions - Use the search bar at the upper left to search our documentation - Ask questions in the ``#cloud-init`` `Matrix room `_ -- Join and ask questions on `Github Discussions`_ +- Join and ask questions on `GitHub Discussions`_ - Find a bug? Check out the :ref:`reporting_bugs` topic to find out how to report one diff --git a/doc/rtd/reference/yaml_examples/disk_setup.rst b/doc/rtd/reference/yaml_examples/disk_setup.rst index 1827fdf343b..dc3a35a0472 100644 --- a/doc/rtd/reference/yaml_examples/disk_setup.rst +++ b/doc/rtd/reference/yaml_examples/disk_setup.rst @@ -167,7 +167,7 @@ Where: as ``ephemeralX`` or there may be issues with mounting the ephemeral storage layer. - If you define the device as ``ephemeralX.Y`` then Y will be interpeted as a + If you define the device as ``ephemeralX.Y`` then Y will be interpreted as a partition value. However, ``ephemeralX.0`` is the **same** as ``ephemeralX``. - ````: diff --git a/doc/rtd/tutorial/qemu.rst b/doc/rtd/tutorial/qemu.rst index ee8d627b353..ddd73a598ce 100644 --- a/doc/rtd/tutorial/qemu.rst +++ b/doc/rtd/tutorial/qemu.rst @@ -23,7 +23,7 @@ Why QEMU? machines. QEMU is used at the core of a range of production operating system deployments and open source software projects (including libvirt, LXD, and vagrant). It is capable of running Windows, Linux, and Unix guest operating -systems. While QEMU is flexibile and feature-rich, we are using it because it +systems. While QEMU is flexible and feature-rich, we are using it because it is widely supported and able to run on \*nix-derived operating systems. If you do not already have QEMU installed, you can install it by running the diff --git a/tools/ds-identify b/tools/ds-identify index b531cfd0d46..33353c96d08 100755 --- a/tools/ds-identify +++ b/tools/ds-identify @@ -1769,7 +1769,7 @@ dscheck_WSL() { return "${DS_NOT_FOUND}" fi - # We know we are under WSL and have acess to the host filesystem, + # We know we are under WSL and have access to the host filesystem, # so let's find the user's home directory WSL_profile_dir "$mountpoints" profile_dir="${_RET}"