Local modifications to ClusterLabs/Anvil by Alteeve
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

3499 lines
332 KiB

<?xml version="1.0" encoding="UTF-8"?>
<!--
Company: Alteeve's Niche, Inc.
License: GPL v2+
Author: Madison Kelly <mkelly@alteeve.ca>
-->
<words>
<meta version="3.0.0" languages="en_CA,jp"/>
<!-- Canadian English -->
<language name="en_CA" long_name="Canadian English" description="Anvil! language file.">
<!-- Branded strings reskinners may wish to change. -->
<key name="brand_0001">Alteeve</key>
<key name="brand_0002">Anvil!</key>
<key name="brand_0003">Striker</key>
<key name="brand_0004">ScanCore</key>
<key name="brand_0005"><![CDATA[&copy; 1997 - 2021 <a href="https://alteeve.com/" target="_new">Alteeve's Niche! Inc.</a>, Toronto, Ontario, Canada]]></key>
<key name="brand_0006"><![CDATA[<i>Anvil!</i>]]></key>
<key name="brand_0007">Node</key>
<key name="brand_0008">DR Host</key>
<key name="brand_0009">Unknown Type</key>
<key name="brand_0010">Red Hat Enterprise Linux</key>
<key name="brand_0011">CentOS Linux</key>
<key name="brand_0012">CentOS Stream Linux</key>
<!-- Emails messages -->
<key name="email_0001">[ #!string!brand_0004!# ] - Critical level alert from #!variable!host_name!#</key>
<key name="email_0002">[ #!string!brand_0004!# ] - Warning level alert from #!variable!host_name!#</key>
<key name="email_0003">[ #!string!brand_0004!# ] - Notice level alert from #!variable!host_name!#</key>
<key name="email_0004">[ #!string!brand_0004!# ] - Informational level alert from #!variable!host_name!#</key>
<key name="email_0005">
--
This alert email was sent from the machine:
- #!variable!host_name!#
It was generated by #!string!brand_0004!#, which is part of the #!string!brand_0002!# Intelligent Availability platform running on the host above.
This email was *not* sent by #!string!brand_0001!#. If you do not know why you are receiving this email, please speak to your system's administrator.
If you need any assistance, please feel free to contact #!string!brand_0001!# (https://alteeve.com) and we will do our best to assist.
</key>
<!-- Errors -->
<key name="error_0001">There are not enough network interfaces on this machine. You have: [#!variable!interface_count!#] interface(s), and you need at least: [#!variable!required_interfaces_for_single!#] interfaces to connect to the requested networks (one for Back-Channel and one for each Internet-Facing network).</key>
<key name="error_0002">The local system UUID can't be read yet. This might be because the system is brand new and/or ScanCore hasn't run yet. Please try again in a minute.</key>
<key name="error_0003">None of the databases are accessible, unable to proceed. Please be sure that 'anvil-daemon' is enabled and running on the database machine(s).</key>
<key name="error_0004">The gateway address doesn't match any of your networks.</key>
<key name="error_0005">This program must run with 'root' level privileges.</key>
<key name="error_0006">No password was given, exiting.</key>
<key name="error_0007">The passwords don't match, exiting.</key>
<key name="error_0008">Failed to read the file: [#!variable!file!#]. It doesn't appear to exist.</key>
<key name="error_0009">Failed to add the target: [#!variable!target!#]:[#!variable!port!#]'s RSA fingerprint to: [#!variable!user!#]'s list of known hosts.</key>
<key name="error_0010">There was a problem adding the local machine to the: [#!data!path::configs::anvil.conf!#] file. Please see the log for details.</key>
<key name="error_0011">Something went wrong while trying to update the password. The return code was: [#!variable!return_code!#], but '0' was expected.</key>
<key name="error_0012"><![CDATA[The <a href="https://en.wikipedia.org/wiki/Hostname" target="_new">host name</a> has to be set to a valid value.]]></key>
<key name="error_0013">A user name must be set. This is usually 'admin'.</key>
<key name="error_0014">You must set a password. There are no complexity rules, but a long password is strongly recommended.</key>
<key name="error_0015">A DNS entry is bad. One or more IPv4 addresses can be specified, with a comma separating multiple IPs.</key>
<key name="error_0016">The IPv4 address assigned to: [#!variable!network!#] is invalid.</key>
<key name="error_0017">An interface to use in: [#!variable!network!# - Link #!variable!link!#] must be selected.</key>
<key name="error_0018">Network interfaces can only be selected once.</key>
<key name="error_0019">The gateway appears to have an invalid IPv4 address set.</key>
<key name="error_0020">The: [#!variable!field!#] field can't be empty.</key>
<key name="error_0021">The prefix needs to be set, and be between 1 and 5 alphanumeric characters long.</key>
<key name="error_0022">The: [#!variable!field!#] must be a positive integer.</key>
<key name="error_0023">There was a problem reading your session details. To be safe, you have been logged out. Please try logging back in.</key>
<key name="error_0024">It appears that your session has expired. To be safe, you have been logged out. Please try logging back in.</key>
<key name="error_0025"><![CDATA[The user ID passed in to Account->read_details: [#!variable!uuid!#] is not a valid UUID.]]></key>
<key name="error_0026"><![CDATA[The user ID passed in to Account->read_details: [#!variable!uuid!#] was not found in the database.]]></key>
<key name="error_0027">Login failed, please try again.</key>
<key name="error_0028"><![CDATA[There appears to be a problem with Striker. The login failed, please check: [<span class="code">#!data!path::log::main!#</span>] for details.]]></key>
<key name="error_0029"><![CDATA[Failed to find the template: [<span class="code">#!variable!template!#</span>] in the template file: [<span class="code">#!variable!file!#</span>].]]></key>
<key name="error_0030"><![CDATA[Failed to process the template: [<span class="code">#!variable!template!#</span>] in the template file: [<span class="code">#!variable!file!#</span>]. Details of the problem should be in: [<span class="code">#!data!path::log::main!#</span>].]]></key>
<key name="error_0031">The 'host-uuid': [#!variable!host_uuid!#] is not valid.</key>
<key name="error_0032">The '#!variable!switch!#' switch is missing and no pending job was found.</key>
<key name="error_0033">The job UUID was passed via '--job-uuid' but the passed in value: [#!variable!uuid!#] is not a valid UUID.</key>
<key name="error_0034">The job UUID was passed via '--job-uuid': [#!variable!uuid!#] doesn't match a job in the database.</key>
<key name="error_0035">
The update appears to have not completed successfully. The output was:
====
#!variable!output!#
====
</key>
<key name="error_0036"></key>
<key name="error_0037"><![CDATA[In Words->parse_banged_string(), an infinite loop was detected while processing: [#!variable!message!#].]]></key>
<key name="error_0038">The TCP port: [#!variable!port!#] is not a valid.</key>
<key name="error_0039"><![CDATA[The password for the host was not provided by '--password-file' or in 'job_data' (as 'password=<secret>').]]></key>
<key name="error_0040">Logging out failed. The user's UUID wasn't passed and 'sys::users::user_uuid' wasn't set. Was the user already logged out?</key>
<key name="error_0041">Failed to install the Alteeve repo, unable to proceed.</key>
<key name="error_0042">No BCN interface found. Unable to configure the install target feature yet.</key>
<key name="error_0043">Failed to write or update the file: [#!variable!file!#]. Please see the system log for more information.</key>
<key name="error_0044">This is not a configured Striker dashboard, exiting.</key>
<key name="error_0045">
[ Error ] - There was a problem downloading packages. The error was:
====
#!variable!error!#
====
</key>
<key name="error_0046">This Striker system is not configured yet. This tool will not be available until it is.</key>
<key name="error_0047">Failed to start the Install Target feature. Got a non-zero return code when starting: [#!data!sys::daemon::dhcpd!#] (got: [#!variable!rc!#]).</key>
<key name="error_0048">Failed to stop the Install Target feature. Got a non-zero return code when starting: [#!data!sys::daemon::dhcpd!#] (got: [#!variable!rc!#]).</key>
<key name="error_0049">A request to rename a file was made, but no file name was given.</key>
<key name="error_0050">A request to rename the file: [#!variable!file!#] was made, but the new name wasn't given. Was '--to X' given?</key>
<key name="error_0051">A request to rename the file: [#!variable!file!#] was made, but that file doesn't exist.</key>
<key name="error_0052">A request to delete a file was made, but no file name was given.</key>
<key name="error_0053">A request to delete the file: [#!variable!file!#] was received, but it is not under '/mnt/shared/'. This program can only work on or under that directory.</key>
<key name="error_0054">Failed!</key>
<key name="error_0055">A request to toggle the script flag was received, but no file name was given.</key>
<key name="error_0056">A request to rename the file: [#!variable!file!#] to: [#!variable!to!#], but there is an existing file or directory with that name.</key>
<key name="error_0057">
Failed to generate an RSA public key for the user: [#!variable!user!#]. The output, if any, is below:
====
#!variable!output!#
====
</key>
<key name="error_0058">Failed to backup: [#!variable!file!#], skipping.</key>
<key name="error_0059">The file to be downloaded: [#!variable!file!#], already exists. Either remove it, or call again with '--overwrite'.</key>
<key name="error_0060">Something went wrong moving the downloaded file from the temporary location: [#!variable!source_file!#] to the output: [#!variable!target_file!#]. Useful errors may be above this message.</key>
<key name="error_0061">The download job with UUID: [#!variable!job_uuid!#] is not valid.</key>
<key name="error_0062">The download job with UUID: [#!variable!job_uuid!#] is already being handled by another process.</key>
<key name="error_0063">Something went wrong trying to download: [#!variable!packages!#]. The return code should have been '0'. but: [#!variable!return_code!#] was received. Is a package missing upstream?</key>
<key name="error_0064">A request to active the logical volume: [#!variable!path!#] was made, but that path doesn't exist or isn't a block device.</key>
<key name="error_0065"><![CDATA[No program name given (via --program <name>), unable to proceed.]]></key>
<key name="error_0066"><![CDATA[The program: [#!variable!program!#] was not found to be running on this system.]]></key>
<key name="error_0067"><![CDATA[Unable to connect to the database, unable to read the peer's password.]]></key>
<key name="error_0068"><![CDATA[There was a problem reading the password from the database.]]></key>
<key name="error_0069"><![CDATA[Unable to access the host: [#!variable!host!#].]]></key>
<key name="error_0070"><![CDATA[Unable to find the host UUID on the host: [#!variable!host!#].]]></key>
<key name="error_0071">Something went wrong trying to write: [#!variable!file!#], unable to proceed.</key>
<key name="error_0072">Something went wrong trying to compile the C-program: [#!variable!file!#], unable to proceed.</key>
<key name="error_0073">The job UUID was not passed via '--job-uuid' and no unclaimed job was found in the database.</key>
<key name="error_0074">The initialization target: [#!variable!target!#] is not accessible. Will keep trying...</key>
<key name="error_0075">There are no databases available. Will check periodically, waiting until one becomes available.</key>
<key name="error_0076">There was a problem adding out database to the target's anvil.conf file.</key>
<key name="error_0077">Unable to connect to the database, unable to read the details of the key to remove.</key>
<key name="error_0078">Did not find any offending keys on this host, exiting.</key>
<key name="error_0079">Job data not found for job_uuid: [#!variable!job_uuid!#].</key>
<key name="error_0080">No job UUID was passed .</key>
<key name="error_0081">The job_uuid: [#!variable!job_uuid!#] appears valid, but there was no job_data.</key>
<key name="error_0082">The state UUID: [#!variable!state_uuid!#] does not appear to be a valid UUID.</key>
<key name="error_0083">No (good) state UUIDs found, unable to run this job.</key>
<key name="error_0084">Unable to find a common network between the target and this machine. This shouldn't be possible, given we're able to talk to it. This is probably a program error.</key>
<key name="error_0085">The URL: [#!variable!url!#] is not supported. The URL must start with 'http://', 'https://' or 'ftp://'.</key>
<key name="error_0086">The requested URL: [#!variable!url!#] was not found on the remote server.</key>
<key name="error_0087">The requested URL: [#!variable!url!#] does not resolve to a known domain.</key>
<key name="error_0088">The requested URL: [#!variable!url!#] failed because the remote host refused the connection.</key>
<key name="error_0089">The requested URL: [#!variable!url!#] failed because there is no route to that host.</key>
<key name="error_0090">The requested URL: [#!variable!url!#] failed because the network is unreachable.</key>
<key name="error_0091">The requested URL: [#!variable!url!#] failed, access was forbidden (error 403).</key>
<key name="error_0092">The requested URL: [#!variable!url!#] failed, the file was not found on the source (error 404).</key>
<key name="error_0093">The requested URL: [#!variable!url!#] failed with HTTP error: [#!variable!error_code!#] (message: [#!variable!error_message!#]).</key>
<key name="error_0094">Aborting the download of: [#!variable!url!#] to: [#!variable!save_to!#]. The target file already exists and 'overwrite' was not set.</key>
<key name="error_0095">There was a problem downloading: [#!variable!url!#] to: [#!variable!file!#]. Aborting parsing of the OUI data.</key>
<key name="error_0096">The 'oui_mac_prefix': [#!variable!oui_mac_prefix!#] string doesn't appear to be a valid 6-byte hex string.</key>
<key name="error_0097"><![CDATA[The network range: [#!variable!range!#] does not appear to be valid. It must be '<ip>/<subnet>' (subnet can be dotted-decimal or CIDR notation) or be 'bcn', 'sn', 'ifn' or a specific variant like 'bcn1', 'sn2', or 'ifn2'. Alternatively, so not use '--network X' at all and all networks with host is connected to will be scanned.]]></key>
<key name="error_0098">Failed to create the archive directory: [#!variable!directory!#]. Skipping the archive process.</key>
<key name="error_0099">There was a problem writing out the records to file: [#!variable!file!#]. There may be more information in #!data!path::log::main!#. Skipping further attempts to archive: [#!variable!table!#].</key>
<key name="error_0100">Compression appears to have failed. The return code '0' was expected from the bzip2 call, but: [#!variable!return_code!#] was returned. The output, if any, was: [#!variable!output!#].</key>
<key name="error_0101">Compression appears to have failed. The output file: [#!variable!out_file!#] was not found.</key>
<key name="error_0102">Failed to check the existence and size of the file: [#!variable!file!#] on the target: [#!variable!target!#] as: [#!variable!remote_user!#]. The error (if any) was: [#!variable!error!#] and the output (if any) was: [#!variable!output!#].</key>
<key name="error_0103">The file: [#!variable!file!#] wasn't found.</key>
<key name="error_0104">The parameter get_company_from_oui->mac must be a valid MAC address or be in the format 'xx:xx:xx'. Received: [#!variable!mac!#].</key>
<key name="error_0105">The file: [#!variable!file!#] was not found.</key>
<key name="error_0106"><![CDATA[The method Network->find_matches() was given the hash key: [#!variable!key!#], but it does not reference a hash. Are any IPs associated with this target?]]></key>
<key name="error_0107">Failed to reconnect after reconfiguring the network, exiting.</key>
<key name="error_0108">The 'recipient_level': [#!variable!recipient_level!#] is invalid. It should be '0', '1', '2', or '3'.</key>
<key name="error_0109">The 'notification_alert_level': [#!variable!notification_alert_level!#] is invalid. It should be '0', '1', '2', or '3'.</key>
<key name="error_0110">The 'notification_uuid': [#!variable!notification_uuid!#] was not found in the database.</key>
<key name="error_0111">
[ Error ] - The was a problem parsing the unified metadata:
===========================================================
#!variable!xml_body!#
===========================================================
The error was:
===========================================================
#!variable!eval_error!#
===========================================================
</key>
<key name="error_0112"><![CDATA[Failed to read valid unified XML data from: [#!variable!file!#]. It should start with: [<?xml version="1.0" ?>]]]></key>
<key name="error_0113">The unified metadata file: [#!data!path::data::fences_unified_metadata!#] was not found. There may have been a problem creating it.</key>
<key name="error_0114">This row's modified_date wasn't the first column returned in query: [#!variable!query!#]</key>
<key name="error_0115">This row's UUID column: [#!variable!uuid_column!#] wasn't the second column returned in query: [#!variable!query!#]</key>
<key name="error_0116">This is a CentOS machine, and tried to move the directory: [#!variable!source!#] to: [#!variable!target!#], but that renane failed.</key>
<key name="error_0117">The domain name: [#!variable!name!#] does not appear to be valid.</key>
<key name="error_0118">The IP address: [#!variable!ip!#] does not appear to be valid.</key>
<key name="error_0119">The IP given for the network: [#!variable!name!#] does not appear to be the network base IP. Did you mean: [#!variable!ip!#]?</key>
<key name="error_0120">The IP given for the network: [#!variable!network!#] with the subnet mask: [#!variable!subnet!#] does not appear to be a valid network range.</key>
<key name="error_0121">The gateway: [#!variable!gateway!#] does not apear to be in the network: [#!variable!network!#]/[#!variable!subnet!#].</key>
<key name="error_0122">An NTP entry is bad. One or more IPv4 addresses can be specified, with a comma separating multiple IPs.</key>
<key name="error_0123">The MTU needs to be a positive integer equal or above '512' bytes.</key>
<key name="error_0124">The IP address: [#!variable!ip!#] does not appear to be within any of the configured networks.</key>
<key name="error_0125">The IPv4 address assigned to the IPMI interface on: [#!variable!network!#] is invalid.</key>
<key name="error_0126">The IP address: [#!variable!ip!#] does not appear to be in the network: [#!variable!network!#].</key>
<key name="error_0127">I was asked to delete and entry from: [#!variable!table!#] but neither the name or UUID was passed.</key>
<key name="error_0128">The host UUID: [#!variable!uuid!#] was set as the value for: [#!variable!column!#], but that host doesn't appear to exist.</key>
<key name="error_0129">Unable to connect to any database, unable to read the job details.</key>
<key name="error_0130">The answer: [#!variable!answer!#] is invalid. Please try again.</key>
<key name="error_0131">The host UUID: [#!variable!host_uuid!#] was not found. Has it already been purged?</key>
<key name="error_0132">Failed to remove the symlink: [#!variable!symlink!#]!</key>
<key name="error_0133">Failed to read or parse the CIB! Is pacemaker running?</key>
<key name="error_0134">Failed to start the daemon: [#!variable!daemon!#] on the local system, unable to boot the server.</key>
<key name="error_0135">Failed to start the daemon: [#!variable!daemon!#] on [#!variable!host!#], unable to boot the server.</key>
<key name="error_0136">System->test_ipmi() was called with an invalid 'lanplus' parameter. It must be 'yes', 'no', 'yes-no' or 'no-yes'. Received: [#!variable!lanplus!#].</key>
<key name="error_0137">All attempts to change the IPMI user: [#!variable!user_name!#] (number: [#!variable!user_number!#] failed. The last try's output (if any) was: [#!variable!output!#] (return code: [#!variable!return code!#]).</key>
<key name="error_0138">The system call: [#!variable!shell_call!#] failed. The output (if any) was: [#!variable!output!#] (return code: [#!variable!return code!#]).</key>
<key name="error_0139">The DRBD global common config file: [#!data!path::configs::global-common.conf!#] doesn't exist, unable to update it.</key>
<key name="error_0140">
Failed to parse the JSON string:
===========================================================
#!variable!json!#
===========================================================
The error was:
===========================================================
#!variable!error!#
===========================================================
</key>
<key name="error_0141">There appears to be no mail server in the database with the UUID: [#!variable!uuid!#].</key>
<key name="error_0142">There alert level: [#!variable!alert_level!#] is invalid. Valid values are '1' / 'critical', '2' / 'warning, '3' / 'notice', and '4' / 'info'.</key>
<key name="error_0143">Failed to write the email alert file: [#!variable!file!#]! Unable to process the alert. Check the logs above for possible reasons for the error.</key>
<key name="error_0144">I was asked to change the preferred host node of the server: [#!variable!server!#] to: [#!variable!node!#], but that doesn't match the name of either node in the cluster. The node names are: [#!variable!node1!#] and [#!variable!node2!#].</key>
<key name="error_0145">Unable to boot the server: [#!variable!server!#] as the cluster isn't running or there was a problem parsing the cluster CIB.</key>
<key name="error_0146">Unable to boot the server: [#!variable!server!#] as this host is not a node.</key>
<key name="error_0147">Unable to boot the server: [#!variable!server!#] as this node is not (yet) a full member of the cluster.</key>
<key name="error_0148">Unable to set the preferred host of the server: [#!variable!server!#] to: [#!variable!node!#] as this node is not (yet) a full member of the cluster.</key>
<key name="error_0149">Unable to boot the server: [#!variable!server!#] as this server was not found in the cluster information base (CIB).</key>
<key name="error_0150">Unable to shut down the server: [#!variable!server!#] as this host is not a node.</key>
<key name="error_0151">Unable to shut down the server: [#!variable!server!#] as the cluster isn't running or there was a problem parsing the cluster CIB.</key>
<key name="error_0152">Unable to shut down the server: [#!variable!server!#] as this node is not (yet) a full member of the cluster.</key>
<key name="error_0153">Unable to shut down the server: [#!variable!server!#] as this server was not found in the cluster information base (CIB).</key>
<key name="error_0154">Unable to migrate the server: [#!variable!server!#] as this host is not a node.</key>
<key name="error_0155">Unable to migrate the server: [#!variable!server!#] as the cluster isn't running or there was a problem parsing the cluster CIB.</key>
<key name="error_0156">Unable to migrate the server: [#!variable!server!#] as this node is not (yet) a full member of the cluster.</key>
<key name="error_0157">Unable to migrate the server: [#!variable!server!#] as the peer node is not (yet) a full member of the cluster.</key>
<key name="error_0158">Unable to migrate the server: [#!variable!server!#] as this server was not found in the cluster information base (CIB).</key>
<key name="error_0159">Unable to read the stat information for the file: [#!variable!file_path!#], the file doesn't appear to exist.</key>
<key name="error_0160">The '#!variable!name!#': [#!variable!uuid!#] is not valid.</key>
<key name="error_0161">Unable to mark the server with UUID: [#!variable!uuid!#] as "deleted" because it doesn't apprear to exist in the database in the first place.</key>
<key name="error_0162">The 'anvil_uuid': [#!variable!anvil_uuid!#] in invalid.</key>
<key name="error_0163">The MIB file: [#!variable!mib!#] doesn't exist or can't be read.</key>
<key name="error_0164">The date: [#!variable!date!#] is not in either the 'mm/dd/yy' or 'mm/dd/yyyy' formats. Can't convert to 'yyyy/mm/dd'.</key>
The core logic is done!!!! Still need to finish end-points for the WebUI to hook into, but the core of M3 is complete! Many, many bugs are expected, of course. :) * Created DRBD->check_if_syncsource() and ->check_if_synctarget() that return '1' if the target host is currently SyncSource or SyncTarget for any resource, respectively. * Updated DRBD->update_global_common() to return the unified-format diff if any changes were made to global-common.conf. * Created ScanCore->check_health() that returns the health score for a host. Created ->count_servers() that returns the number of servers on a host, how much RAM is used by those servers and, if available, the estimated migration time of the servers. Updated ->check_temperature() to set/clear/return the time that a host has been in a warning or critical temperature state. * Finished ScanCore->post_scan_analysis_node()!!! It certainly has bugs, and much testing is needed, but the logic is all in place! Oh what a slog that was... It should be far more intelligent than M2 though, once flushed out and tested. * Created Server->active_migrations() that returns '1' if any servers are in a migration on an Anvil! system. Updated ->migrate_virsh() to record how long a migration took in the "server::migration_duration" variable, which is averaged by ScanCore->count_servers() to estimate migration times. * Updated scan-drbd to check/update the global-common.conf file's config at the end of a scan. * Updated ScanCore itself to not scan when in maintenance mode. Also updated it to call 'anvil-safe-start' when ScanCore starts, so long as it is within ten minutes of the host booting. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="error_0165">The temperature: [#!variable!temperature!#] does not appear to be valid.</key>
<key name="error_0166">The resource: [#!variable!resource!#] in the config file: [#!variable!file!#] was found, but does not appear to be a valid UUID: [#!variable!uuid!#].</key>
<key name="error_0167">The resource: [#!variable!resource!#] in the config file: [#!variable!file!#] was found, and we were asked to replace the 'scan_drbd_resource_uuid' but the new UUID: [#!variable!uuid!#] is not a valud UUID.</key>
* Created Convert->fence_ipmilan_to_ipmitool() that takes a 'fence_ipmilan' call and converts it into a direct 'ipmitool' call. * Created Database->get_power() that loads data from the special 'power' table. * Fixed a bug in calls to Network->ping() where some weren't formatted properly for receiving two string variables. * Updated Database->get_anvils() to record the machine types when recording host information. * Updated Database->get_hosts_info() to also load the 'host_ipmi' column. * Updated Database->get_upses() to store the link to the 'power' -> 'power_uuid', when available. * Created ScanCore->call_scan_agents() that does the work of actually calling scan agents, moving the logic out from the scancore daemon. * Created ScanCore->check_power() that takes a host and the anvil it is in and returns if it's on batteries or not. If it is, the time on batteries and estimate hold-up time is returned. If not, the highest charge percentage is returned. * Created ScanCore->post_scan_analysis() that is a wrapper for calling the new ->post_scan_analysis_dr(), ->post_scan_analysis_node() and ->post_scan_analysis_striker(). Of which, _dr and _node are still empty, but _striker is complete. ** ->post_scan_analysis_striker() is complete. It now boots a node after a power loss if the UPSes powering it are OK (at least one has mains power, and the main-powered UPS(es) have reached the minimum charge percentage). If it's thermal, IPMI is called and so long as at least one thermal sensor is found and it/they are all OK, it is booted. For now, M2's thermal reboot delay logic hasn't been replicated, as it added a lot of complexity and didn't prove practically useful. * Created System->collect_ipmi_data() and moved 'scan_ipmitool's ipmitool call and parse into that method. This was done to allow ScanCore->post_scan_analysis_striker() to also call IPMI on a remote machine during thermal down events without reimplementing the logic. * Updated scan-ipmitool to only record temperature data for data collected locally. Also renamed 'machine' variables and hash keys to 'host_name' to clarify what is being stored. * Updated scancore to clear the 'system::stop_reason' variable. * Added missing packages to striker-manage-install-target. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="error_0168">The 'fence_ipmilan' command: [#!variable!command!#] does not appear to be valid.</key>
* Created Database->get_bridges() that, surprise, loads data from the 'bridges' table. * Started work on Get->available_resources() that will take an 'anvil_uuid' and figure out what resources are still available for use by new servers or that can be added to existing servers. * Fixed a bug in ScanCore->agent_startup() where tables weren't being generated properly from the agent's SQL file. * Made Storage->change_mode() return silently if it's called without a mode being passed. This happens frequently and is harmless so it's not worth filling the logs with errors. * Renamed the 'start_time' key to 'at_start' when recording files' MD5 sums in Storage->record_md5sums and ->check_md5sums. * When we moved the directory scan logic out of the 'scancore' daemon and into 'Storage->scan_directory', the logic to record scan agent names in 'scancore::agent::<file>' was removed. This broke a few things and, so, it was restored when it was found that a file starts with 'scan-' and the directory matches the scancore agent directory. * Moved the 'scancore' daemon's 'load_agent_strings' to 'Words' * Updated Words->parse_banged_string() to look for variables in the format 'value=X:units=Y' and translate it properly. * Fixed a bug in scan-ipmitool where discovered sensor INSERT SQL queries were queued, but not committed. * Fixed a bug in scan-storcli where a while loop was broken, preventing execution. * Fixed a bug in the 'scancore' daemon where it wouldn't exit if sums changed. Fixed a bug where alerts weren't being sent between loops. Fixed a bug where command-line log level wasn't surviving inside the main loop. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="error_0169">The Anvil! UUID: [#!variable!anvil_uuid!#] doesn't appear to exist in the database.</key>
<key name="error_0170">Unable to move an uploaded file from the: [#!data!path::directories::shared::incoming!#] directory as a file name wasn't set (or failed to parse) from the 'job_data' in the job: [#!variable!job_uuid!#].</key>
<key name="error_0171">Unable to move the uploaded file: [#!variable!file!#], it doesn't appear to exist.</key>
<key name="error_0172">Unable to move the uploaded file: [#!variable!file!#] to: [#!variable!target_directory!#]. The cause of the failure should be in the logs.</key>
<key name="error_0173">Unable to move pull a file from because a file UUID wasn't set (or failed to parse) from the 'job_data' in the job: [#!variable!job_uuid!#].</key>
<key name="error_0174">Unable to pull a file as the file UUID: [#!variable!file_uuid!#] is either invalid or doesn't exist in the database.</key>
<key name="error_0175">Unable to pull the file: [#!variable!file!#], we're not an Anvil! member.</key>
<key name="error_0176">The downloaded file's md5sum: [#!variable!local_md5sum!#] doesn't match what is expected: [#!variable!file_md5sum!#]. The file has been removed. We'll wait for a minute and then exit, and the download will be attempted again.</key>
<key name="error_0177">Something went wrong and the file wasn't downloaded. More information should be in the logs. We'll wait for a minute and then exit, and the download will be attempted again.</key>
<key name="error_0178">Unable to purge the a because a file UUID wasn't set (or failed to parse) from the 'job_data' in the job: [#!variable!job_uuid!#].</key>
<key name="error_0179">Unable to purge a file as the file UUID: [#!variable!file_uuid!#] is either invalid or doesn't exist in the database.</key>
<key name="error_0180">Failed to delete: [#!variable!file_path!#]. The error returned was: [#!variable!error!#]. There may be more details in the logs.</key>
<key name="error_0181">Unable to rename a file because a file UUID wasn't set (or failed to parse) from the 'job_data' in the job: [#!variable!job_uuid!#].</key>
<key name="error_0182">Unable to purge a file as the file UUID: [#!variable!file_uuid!#] is either invalid or doesn't exist in the database.</key>
<key name="error_0183">Unable to rename the file: [#!variable!file_name!#] because the new file name wasn't set (or failed to parse) from the 'job_data' in the job: [#!variable!job_uuid!#].</key>
<key name="error_0184">Moving the file failed. The problem should be logged. We'll sleep for a minute and then exit. We'll try again after that.</key>
<key name="error_0185">Unable to check the file mode because a file UUID wasn't set (or failed to parse) from the 'job_data' in the job: [#!variable!job_uuid!#].</key>
<key name="error_0186">Unable to check the file mode because the file UUID: [#!variable!file_uuid!#] is either invalid or doesn't exist in the database.</key>
<key name="error_0187">Unable to find the new server name from the job UUID: [#!variable!job_uuid!#].</key>
<key name="error_0188">Unable to get the number of CPU cores for the new server: [#!variable!server_name!#] from the job UUID: [#!variable!job_uuid!#].</key>
<key name="error_0189">The new server: [#!variable!server_name!#] was asked to have: [#!variable!requested_cores!#] CPU cores, but only: [#!variable!available_cores!#] are available.</key>
<key name="error_0190">Unable to get the amount of RAM for the new server: [#!variable!server_name!#] from the job UUID: [#!variable!job_uuid!#].</key>
<key name="error_0191">The new server: [#!variable!server_name!#] was asked to have: [#!variable!requested_ram!#] RAM, but only: [#!variable!available_ram!#] is available.</key>
<key name="error_0192">Unable to get the storage group UUID for the new server: [#!variable!server_name!#] from the job UUID: [#!variable!job_uuid!#].</key>
<key name="error_0193">Unable to get the amount of storage to use for the new server: [#!variable!server_name!#] from the job UUID: [#!variable!job_uuid!#].</key>
<key name="error_0194">The new server: [#!variable!server_name!#] was asked to have: [#!variable!requested_size!#] disk space, but only: [#!variable!available_size!#] is available on the requested storage group: [#!variable!storage_group!#].</key>
<key name="error_0195">Unable to get the install ISO to use for the new server: [#!variable!server_name!#] from the job UUID: [#!variable!job_uuid!#].</key>
<key name="error_0196">The install disc ISO: [#!variable!install_iso!#] to be used for the new server: [#!variable!server_name!#] wasn't found on this system.</key>
<key name="error_0197">The driver disc ISO: [#!variable!install_iso!#] to be used for the new server: [#!variable!server_name!#] wasn't found on this system.</key>
<key name="error_0198">The new server's name: [#!variable!server_name!#] is already in use. Has this job already run?</key>
<key name="error_0199">The storage group UUID: [#!variable!storage_group_uuid!#] wasn't found in the database.</key>
<key name="error_0200">The new DRBD resource will need a "minor" number and a TCP port. One or both are not provided or are invalid.</key>
<key name="error_0201">Failed to create the logical volume: [#!variable!lv_path!#]. Without this, we can't create the replicated storage backing the server, aborting.
Command: ... [#!variable!lv_create!#]
Return Code: [#!variable!return_code!#]
Output (if any):
====
#!variable!output!#
====
</key>
<key name="error_0202">Failed to write the DRBD resource file: [#!variable!drbd_res_file!#]. The cause of the failure should be in the logs.</key>
<key name="error_0203">Failed to load the DRBD resource file: [#!variable!drbd_res_file!#]. Tried dumping the new DRBD config and the file new resource wasn't found.</key>
<key name="error_0204">It appears that creating the DRBD meta data on the new logic volume(s) failed. Expected the return code '0' but got: [#!variable!return_code!#]. The command returned: [#!variable!output!#].</key>
<key name="error_0205">It appears that the initial forced primary role to initialize the new DRBD resource failed. Expected the return code '0' but got: [#!variable!return_code!#]. The command returned: [#!variable!output!#].</key>
<key name="error_0206">The logical volume behind the resource: [#!variable!resource!#] existed, and started the resource has the disk state 'diskless'. This is likely because the LV doesn't have DRBD meta-data. We can't (safely) create it. Please either remove the LV backing this resource or create the meta data manually.</key>
<key name="error_0207">Failed to make the resource: [#!variable!resource!#] disk state to 'UpToDate'. After attempt, the disk state is: [#!variable!disk_state!#].</key>
<key name="error_0208">No operating system type was found for the server: [#!variable!server_name!#] in the job: [#!variable!job_uuid!#].</key>
<key name="error_0209">The call to create the server appears to have failed. The attempt to parse the server's definition failed. The command was run as a background process so exact error details are not available here. Please check the logs for more details. The call used to create the server was:
====
#!variable!shell_call!#
====</key>
<key name="error_0210">The call to create the new server appears to have failed. It hasn't shown up as running after 10 seconds. The status, if any, was last seen as: [#!variable!status!#].</key>
<key name="error_0211">Failed to add the server: [#!variable!server_name!#] because we failed to parse the CIB. Is the cluster running?</key>
<key name="error_0212">Failed to add the server: [#!variable!server_name!#] because we are not a full cluster member?</key>
<key name="error_0213">Failed to add the server: [#!variable!server_name!#] because it appears to already exist in the cluster.</key>
<key name="error_0214">Failed to add the server: [#!variable!server_name!#]. After the commands to add it ran, it was still not found in the cluster.</key>
<key name="error_0215">It looks like something went wrong while adding the server to the cluster. There should be more information in the logs.</key>
<key name="error_0216">It looks like something went wrong while removing the server from the cluster. There should be more information in the logs.</key>
<key name="error_0217">This host is not an Anvil! node or DR host, unable to delete servers.</key>
<key name="error_0218">Unable to connect to any databases, unable to continue.</key>
<key name="error_0219">Unable to find the server uuid to delete from the job UUID: [#!variable!job_uuid!#].</key>
<key name="error_0220">Unable to find a server name to match the server UUID: [#!variable!server_uuid!#].</key>
<key name="error_0221">This tool is only designed to migrate servers between nodes, and this is a DR host.</key>
<key name="error_0222">The cluster does not appear to be running, unable to delete a server at this time. We'll sleep for a bit and then exit, and the try again.</key>
<key name="error_0223">The server: [#!variable!server_name!#] appears to have failed to stop.</key>
<key name="error_0224">Unable to delete the server resource: [#!variable!server_name!#] as the cluster isn't running or there was a problem parsing the cluster CIB.</key>
<key name="error_0225">Unable to delete the server resource: [#!variable!server_name!#] as this node is not (yet) a full member of the cluster.</key>
<key name="error_0226">It looks like to removal of the server resource: [#!variable!server_name!#] failed. The return code should have been '0', but: [#!variable!return_code!#] was returned. The 'pcs' command output, if any, was: [#!variable!output!#].</key>
<key name="error_0227">It looks like to removal of the server resource: [#!variable!server_name!#] failed. Unsafe to proceed with the removal of the server. Please check the logs for more information.</key>
<key name="error_0228">Unable to delete the resource: [#!variable!resource!#] because it wasn't found in DRBD's config. This can happen is a previous delete partially completed, in which case this is not a problem.</key>
<key name="error_0229">One or more peers need us, and we're not allowed to wait. Deletion aborted.</key>
<key name="error_0230">The shell call: [#!variable!shell_call!#] was expected to return '0', but instead the return code: [#!variable!return_code!#] was received. The output, if any, was: [#!variable!output!#].</key>
<key name="error_0231">This host is not an Anvil! node or DR host, unable to migrate servers.</key>
<key name="error_0232">Unable to find the server to migrate in the job UUID: [#!variable!job_uuid!#].</key>
<key name="error_0233">The cluster does not appear to be running, unable to migrate servers at this time. We'll sleep for a bit and then exit, and the try again.</key>
<key name="error_0234">Unable to find the target host to migrate to the job UUID: [#!variable!job_uuid!#].</key>
<key name="error_0235">The migration target host: [#!variable!target_host_uuid!#] is either invalid, or doesn't match one of the nodes in this Anvil! system.</key>
<key name="error_0236">There appears to be no resource data in the database for the host: [#!variable!host_name!#]. Has ScanCore run and, specifically, has 'scan-hardware' run yet? Unable to provide available resources for this Anvil! system.</key>
<key name="error_0237">The resource name: [#!variable!resource_name!#] already exists, and 'force_unique' is set. This is likely a name conflict, returning '!!error!!'.</key>
<key name="error_0238">This node is not yet fully in the cluster. Sleeping for a bit, then we'll exit. The job will try again shortly after.</key>
<key name="error_0239"><![CDATA[Remote->call() was called without a target being set. Other values passed in that may help locate the source of this call:
- remote_user: [#!variable!remote_user!#]
- port: ...... [#!variable!port!#]
- close: ..... [#!variable!close!#]
- secure: .... [#!variable!secure!#]
- shell_call: [#!variable!shell_call!#]
]]></key>
<key name="error_0240">Usage: [#!variable!program!# --config /path/to/config].</key>
<key name="error_0241">The file: [#!variable!file!#] doesn't appear to be valid.</key>
<key name="error_0242">Failed to find a matching entry in the file: [#!variable!file!#]. Please make sure the MAC addresses in the config are accurate for these systems.</key>
<key name="error_0243">Missing variable: [#!variable!variable!#] from config file: [#!data!switches::config!#].</key>
<key name="error_0244">The length of the prefix: [#!variable!prefix!#] is: [#!variable!length!#]. The prefix needs to be not more than 5.</key>
<key name="error_0245">The DNS IP: [#!variable!ip!#] is invalid.</key>
<key name="error_0246">The gateway IP: [#!variable!ip!#] is invalid.</key>
<key name="error_0247">The variable: [#!variable!variable!#] is invalid: [#!variable!value!#].</key>
<key name="error_0248">Failed to add the UPS: [#!variable!ups_name!#] at: [#!variable!aups_ip_address!#] using the agent: [#!variable!ups_agent!#]!</key>
<key name="error_0249">Failed to add the fence device: [#!variable!fence_name!#] using the agent: [#!variable!fence_agent!#]!</key>
<key name="error_0250">This machine is a an active cluster member, aborting job.</key>
<key name="error_0251">We were asked to call 'drbdadm' but it doesn't exist. Is DRBD installed?</key>
<key name="error_0252">The call to 'drbdadm dump-xml' returned the exit code: [#!variable!return_code!#].</key>
<key name="error_0253">[ Warning ] - Failed to parse the DRBD XML. The XML read was:
========
#!variable!xml!#
========
The error was:
========
#!variable!error!#
========
</key>
<key name="error_0254">Failed to read the lvm.conf file. The reason why should be logged above.</key>
<key name="error_0255">Failed to write the lvm.conf file. The reason why should be logged above.</key>
<key name="error_0256">
The attempt to start the cluster appears to have failed. The return code '0' was expected, but: [#!variable!return_code!#] was received. The output was:
====
#!variable!output!#
====
</key>
<key name="error_0257"><![CDATA[No server specified to boot. Please use '--server <name|all>' or '--server-uuid <UUID>.]]></key>
<key name="error_0258">This host is not a node or DR, unable to boot servers.</key>
<key name="error_0259">The definition file: [#!variable!definition_file!#] doesn't exist, unable to boot the server.</key>
<key name="error_0260">This host is not in an Anvil! system, aborting.</key>
<key name="error_0261">The definition file: [#!variable!definition_file!#] exists, but the server: [#!variable!server!#] does not appear to be in the cluster. Unable to boot it.</key>
<key name="error_0262">The server: [#!variable!server!#] status is: [#!variable!status!#]. We can only boot servers that are off, not booting it.</key>
<key name="error_0263"><![CDATA[No server specified to shut down. Please use '--server <name|all>' or '--server-uuid <UUID>.]]></key>
<key name="error_0264">This host is not a node or DR, unable to shut down servers.</key>
<key name="error_0265">This feature isn't enabled on DR hosts yet.</key>
<key name="error_0266">The server: [#!variable!server!#] does not appear to be in the cluster. Unable to shut it down.</key>
<key name="error_0267">The server: [#!variable!server!#] failed to boot. The reason why should be in the logs.</key>
<key name="error_0268">The server: [#!variable!server!#] failed to shut down. The reason why should be in the logs.</key>
<key name="error_0269">The server UUID: [#!variable!server_uuid!#] is not valid.</key>
<key name="error_0270"><![CDATA[No server specified to migrate. Please use '--server <name|all>' or '--server-uuid <UUID>.]]></key>
<key name="error_0271">This host is not a node, unable to migrate servers.</key>
<key name="error_0272"><![CDATA[No target node specified. Please use '--target <node_name>'.]]></key>
<key name="error_0273">The target: [#!variable!target!#] appears to be invalid. The --target switch needs to be set to 'peer', 'local', '#!variable!local_name!#' or '#!variable!peer_name!#'.</key>
<key name="error_0274">The server: [#!variable!server!#] failed to migrate. The reason why should be in the logs.</key>
<key name="error_0275">
The attempt to start the servers appears to have failed. The return code '0' was expected, but: [#!variable!return_code!#] was received. The output was:
====
#!variable!output!#
====
</key>
<key name="error_0276"><![CDATA[No server specified to rename. Please use '--server <name>' or '--server-uuid <UUID>.]]></key>
<key name="error_0277">Could not find the server: [#!variable!server!#] on this Anvil! in the database.</key>
<key name="error_0278">This host is not a node, unable to rename the server from here.</key>
<key name="error_0279"><![CDATA[The new name for the server was not given. Please use '--new-name <name>'. The new name can not contain spaces.]]></key>
<key name="error_0280"><![CDATA[The new name for the server: [#!variable!new_name!#] is not valid. The new name can not contain spaces.]]></key>
<key name="error_0281">The server wasn't found in the cluster configuration... Did a previous attempt to rename fail? Aborting.</key>
<key name="error_0282">Failed to read the file: [#!variable!file!#] from the host: [#!variable!host!#].</key>
<key name="error_0283">Failed to rename the old LV: [#!variable!old_lv!#] to: [#!variable!new_lv!#] on the host: [#!variable!host_name!#]! Aborting.</key>
<key name="error_0284">Failed to delete the file: [#!variable!file!#]. The error, if any, was: [#!variable!error!#].</key>
<key name="error_0285">Failed to delete the file: [#!variable!file!#] on the host: [#!variable!target!#].</key>
<key name="error_0286">Failed to delete the file: [#!variable!file!#] on the host: [#!variable!target!#]. This might be a connection issue. The call's error was: [#!variable!error!#] output was: [#!variable!output!#].</key>
<key name="error_0287">Failed to write the file: [#!variable!file!#] on the host: [#!variable!target!#].</key>
<key name="error_0288">Failed to add the server: [#!variable!server_name!#] to the cluster. The return code from the pcs command was: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="error_0289">The server: [#!variable!server!#] already exists on this Anvil!. Please use a different new name.</key>
<key name="error_0290"><![CDATA[No machine was specified to boot. Please use '--host-name <name>' or '--host-uuid UUID'.]]></key>
<key name="error_0291"><![CDATA[The host name: [#!variable!host_name!#] was not found in the database.]]></key>
<key name="error_0292">The attempt to boot the machine failed! The output, if anything, was: [#!variable!output!#].</key>
<key name="error_0293">The attempt to check the power status of the machine failed. The output, if anything, was: [#!variable!output!#].</key>
<key name="error_0294">There is no IPMI information or fence options available to boot this machine, unable to proceed.</key>
<key name="error_0295">The host: [#!variable!host_name!#] is not in an Anvil!, unable to parse fence methods.</key>
<key name="error_0296">The Anvil!: [#!variable!anvil_name!#] does not have a recored CIB in the database, unable to parse fence methods.</key>
<key name="error_0297">Either we failed to find a fence method, or all fence methods failed to boot this machine, unable to proceed.</key>
<key name="error_0298"><![CDATA[The method Cluster->check_stonith_config() only runs on nodes, and this host is a: [#!variable!host_type!#].]]></key>
<key name="error_0299">This host is not in a cluster, or it's in the cluster but not ready yet. Either way, unable to check the config.</key>
<key name="error_0300">Failed to find the install manifest for the: [#!variable!anvil_name!#] Anvil! system. Unable to check or update the fence configuration.</key>
<key name="error_0301">Failed to parse the install manifest with UUID: [#!variable!manifest_uuid!#]. Unable to check or update the fence configuration.</key>
<key name="error_0302">The passed in Anvil! UUID: [#!variable!anvil_uuid!#] was not found in the database.</key>
<key name="error_0303">The passed in host UUID: [#!variable!host_uuid!#] was not found in the database.</key>
<key name="error_0304">Failed to parse the request body: [#!variable!request_body_string!#]. Reason: [#!variable!json_decode_error!#]</key>
<key name="error_0305">Unable to connect to the database, unable to manage a server at this time.</key>
<key name="error_0306">Unable to connect to the database, unable to provision a server at this time.</key>
<!-- Files templates -->
<!-- NOTE: Translating these files requires an understanding of which lines are translatable -->
<!-- comments and which are command lines that can't be changed! -->
<key name="file_0001"><![CDATA[# Resource for #!variable!server!#
resource #!variable!server!# {
on #!variable!node1_short_name!# {
node-id 0;
volume 0 {
device /dev/drbd_#!variable!server!#_0 minor #!variable!minor!#;
disk #!variable!node1_lv_path!#;
meta-disk internal;
}
}
on #!variable!node2_short_name!# {
node-id 1;
volume 0 {
device /dev/drbd_#!variable!server!#_0 minor #!variable!minor!#;
disk #!variable!node2_lv_path!#;
meta-disk internal;
}
}
### NOTE: Remember to open the appropriate firewall port!
# firewall-cmd --zone=#!variable!sn_network!# --permanent --add-port=#!variable!tcp_port!#/tcp --permanent
# firewall-cmd --zone=#!variable!sn_network!# --permanent --add-port=#!variable!tcp_port!#/tcp
connection {
host #!variable!node1_short_name!# address #!variable!node1_sn_ip!#:#!variable!tcp_port!#;
host #!variable!node2_short_name!# address #!variable!node2_sn_ip!#:#!variable!tcp_port!#;
disk {
# Without this, the variable bit rate caps at 100 MiB/sec, and most deployments are
# 10 Gbps. So this lets the variable rate climb to 500 MiB/sec
c-max-rate 500M;
}
net {
protocol C;
fencing resource-and-stonith;
}
}
}
]]></key>
<!-- NOTE: If the core anvil.conf is updated, remember to update this as well. -->
<key name="file_0002"><![CDATA[### This is the main Anvil! configuration file.
# To help understand how the Anvil! is used, some features will "call home" to record anonymous information
# about a machine participating in an Anvil! system. An example is DRBD's 'usage-count' option. If you wish
# to not have this happen, set this to '1'.
sys::privacy::strong = #!data!sys::privacy::strong!#
### Features
# Normally, if one node in the Anvil! is healthier than the other, it will pull the servers from the peer
# on to it. This is a process called "preventative live migration". If you would like to disable this
# feature, set this to '1'.
feature::scancore::disable::preventative-live-migration = 0
### Database
# Database connections;
#
# Each Anvil! database is defined below using an incrementing counter as the second variable. The value of
# the second variable is the local 'host_uuid' (via: dmidecode --string system-uuid | perl -ne 'print lc').
# This ensures that entries can be moved and copied without causing conflicts.
#
# There are six variables for each database definition;
# host = This is the (resolvable) host name or IP address of the peer database.
# port = This is the TCP port used to connect to the database. By default, it is 5432
# password = This is the password used to connect to the database.
# NOTE: Do not directly change the database password. Please use 'anvil-update-password' so that
# the WebUI, database, nodes and peers are all kept in sync.
# ping = If set, this will cause a ping to be made against the database server before the actual
# connection is attempted. This can be useful when peer dashboards are offline for extended
# periods of time. The value can be any real number and will be used as the timeout for the actual
# ping. If the peer dashboard is on the same subnet, a value of '0.25' (250ms) should be a good
# balance between giving the peer a chance to reply and not waiting too long when it is offline.
# If the peer is remote, you will want to set this to '1' (1000ms) or higher.
#
# Setting this to '0' disables pinging before connecting entirely. In this case, if the peer is
# offline, it will take about 3 seconds on average for the connection attempt to timeout. This
# might be necessary if the peer dashboard is behind a firewall/router or otherwise can't respond
# to ICMP pings.
# NOTE: The database is called 'anvil' and the database owner is 'admin'.
#database::eec27c2f-2308-4b4f-bd81-24118b53f8a3::host = localhost
#database::eec27c2f-2308-4b4f-bd81-24118b53f8a3::port = 5432
#database::eec27c2f-2308-4b4f-bd81-24118b53f8a3::password = Initial1
#database::eec27c2f-2308-4b4f-bd81-24118b53f8a3::ping = 1
# Below are the databases configured for use by this system. Please be careful manually editing them. They
# are updated by Striker and changes can be overwritten. Please do not alter or remove the 'start db list'
# and 'end db list' comments below.
### start db list ###
### end db list ###
# To keep Anvil!'s database growth in check, an auto-archive mechanism is used by some agents where, at the
# end of each scan, the number of records in the history schema for a given table are counted (restricted to
# the agent's host, when appropriate).
#
# When the number exceeds the trigger, the number of records that are archived is approximately (number of
# records above trigger + 'count'). This is not an exact number because a representative timestamp will be
# selected from the hostory schema at this count, and then any record equal to or older than the time stamp
# is removed.
#
# To protect against the potential of using too much disk space, archives are off by default. Under normal
# behaviour, old records are simple removed. To enable the archive function, set this to '1'.
#sys::database::archive::save_to_disk = 1
#
# When archiving to disk is enabled, to protect against large memory use or long archive times in the case
# where the number of records to archive are particularly large, the 'division' value is used to break up the
# archive job into "chunks". Generally speaking, the division should be greater than the count, and never be
# needed. However, if the archive process takes too long, or if the archive was triggered well above the
# trigger value, the division can help prevent using too much memory at once. If division is set to '0',
# archive jobs will never be divided.
#
# The archives are all stored in the specified directory using the name format
# '<agent>.<table>.<timestamp>.bz2' and the archives are synced between dashboards for safe keeping. Archive
# files are never removed automatically.
#
# To disable auto-archiving entirely, set 'trigger' to '0'.
#
# NOTE: If the archive directory doesn't exist, Anvil! will create it
# automatically the first time it is needed.
sys::database::archive::compress = 1
sys::database::archive::trigger = 50000
sys::database::archive::count = 25000
sys::database::archive::division = 30000
sys::database::archive::directory = /usr/local/anvil/archives/
# This puts a limit on how many queries (writes, generally) to make in a single batch transaction. This is
# useful when doing very large transacions, like resync'ing a large table, by limiting how long a given
# transaction can take and how much memory is used.
sys::database::maximum_batch_size = 25000
### Apache stuff
# By default, we try to determine the host type which anvil RPM is installed. If, for some reason, you want
# to statically assign the host type, you can do so with this variable. Note that this sets the host type of
# this host only. You will need to set this appropriately on other hosts.
#
# Normally, you should not need to set this.
#sys::host_type = node
# This configuration file provides a way to override Anvil::Tools' built-in defaults.
# This controls the default language. The value is the ISO code of the country's language you want to use by
# default. Note that the logging language is set with 'defaults::log::language' below.
# NOTE: Be sure the language exists before changing it!
defaults::languages::output = en_CA
# This controls how many loops Anvil::Tools::Words is allow to make while processing a string. This acts as a
# mechanism to exit infinite loops, and generally should not need to be changed.
defaults::limits::string_loops = 1000
### Logging options
# This controls whether all database transactions are recorded or not. Genreally this should be left off
# unless you are debugging the program.
# WARNING: This ignores 'secure', and will always be logged. Be careful about exposing sensitive data!
sys::database::log_transactions = 0
# By default, if a configured database is not accessible, a log level 1 alert is registered. This can cause a
# lot of log traffic. If you want to silence these log alerts, you can set the value below to be higher than
# your current active log level (default is '1', so set to '2' or '3' to silence).
# NOTE: It's important to only use this temporarily.
sys::database::failed_connection_log_level = 1
# This controls what log facility to use by default.
# NOTE: This will always be 'authpriv' when a log entry is marked as secure.
defaults::log::facility = local0
# This controls what language logs are recorded in. Be sure that the language exists before changing it!
defaults::log::language = en_CA
# This controls the default log level. See 'perldoc Anvil::Tools::Logs' for details.
defaults::log::level = 1
# This controls whether sensitive log entries are logged or not. Generally, this should be left disabled!
defaults::log::secure = 0
# THis sets the default log server to send the log entries to. Leave it blank in most cases.
#defaults::log::server =
# This sets the default log tag used when logging an entry. Most programs will likely override this.
defaults::log::tag = anvil
### Templates
# This sets the default template used when rendering HTML pages. It must be the same as the directory name
# under /var/www/html/skins/
defaults::template::html = alteeve
### Install Target options
# Note; Please see 'pxe.txt' for editable templates for 'dhcpd.conf', (tftpboot's BIOS) 'default' and the
# kickstart templates.
#
# This section allows for adapting certain installations of systems via the Install Target feature.
# Generally, these don't need to be edited.
#
# This controls the keyboard configuration. See:
# - https://docs.fedoraproject.org/en-US/fedora/f28/install-guide/appendixes/Kickstart_Syntax_Reference/#sect-kickstart-commands-keyboard
#kickstart::keyboard = --vckeymap=us --xlayouts='us'
#
# This sets the default password of newly stage-1 built machines. Generally, this shouldn't be change. It is
# recorded in plain text and it is used in the stage-2 configuration tools.
#kickstart::password = Initial1
#
# This is the system timezone to be set. Generally, it's recommended to leave the Anvil! machines to UTC, but
# you might want to change this is if you spend time working directly on the various Anvil! cluster machines.
#kickstart::timezone = Etc/GMT --isUtc
# If this is set to '1', the packages used to build machines via the Install Target feature will not
# auto-update.
install-manifest::refresh-packages = 1
# This controls how often the local RPM repository is checked for updates. The default is '86400' seconds
# (one day). If anything, you might want to increase this. Common values;
# 86400 = Once per day
# 604800 = Once per week
# 2419200 = Once per month (well, 4 weeks)
install-manifest::refresh-period = 86400
### This controls Striker-specific features
# This can be set a a comma-separated list of packages to be added to Striker's RPM repos. Note that this is
# only useful is you want to store EL8-specific packages needed outside the Anvil!.
striker::repo::extra-packages =
### System functions
# The machines used in the Anvil! are treated as appliances, and thus fully under our control. As such, much
# of the system is monitored, managed and auto-repaired. This can frustrate sysadmins. As such, an admin may
# use the 'system::*' options to retake control over some system behaviour.
# Setting this to '0' will disable auto-management of the firewall.
sys::manage::firewall = 1
### Server related options
# This is the "short list" of servers shown when provisioning a new server. To see the full list of options,
# run '/usr/bin/osinfo-query os' on any machine in the Anvil!.
#sys::servers::os_short_list = debian10,fedora32,freebsd12.1,gentoo,macosx10.7,msdos6.22,openbsd6.7,opensuse15.2,rhel5.11,rhel6.10,rhel7.9,rhel8.3,sles12sp5,solaris11,ubuntu20.04,win10,win2k16,win2k19
]]></key>
<!-- Table headers -->
<key name="header_0001">Current Network Interfaces and States</key>
<key name="header_0002">MAC Address</key>
<key name="header_0003">Name</key>
<key name="header_0004">State</key>
<key name="header_0005">Speed</key>
<key name="header_0006">Change Order</key>
<key name="header_0007">Inbound Connections</key>
<key name="header_0008">Via network:</key>
<key name="header_0009">Peer Connections</key>
<key name="header_0010">Ping</key>
<key name="header_0011">Jobs</key>
<key name="header_0012">Target</key>
<key name="header_0013">User</key>
<key name="header_0014">File</key>
<key name="header_0015">On Host</key>
<key name="header_0016">Unconfigured Hosts</key>
<key name="header_0017">Accessible?</key>
<key name="header_0018">Configured Hosts</key>
<key name="header_0019">Type</key>
<key name="header_0020">At IP</key>
<key name="header_0021">Agent and Arguments</key>
<key name="header_0022">Delete</key>
<key name="header_0023">Fence Device</key>
<key name="header_0024">UPS</key>
<key name="header_0025">IP Address</key>
<key name="header_0026">Host Name</key>
<key name="header_0027">Brand</key>
<key name="header_0028">Install Manifest</key>
<key name="header_0029">Select Machine</key>
<key name="header_0030">#!string!brand_0006!# Password</key>
<key name="header_0031">Confirm Password</key>
<key name="header_0032">DNS Server(s)</key>
<key name="header_0033">NTP Server(s)</key>
<key name="header_0034">MTU Size (Bytes)</key>
<key name="header_0035">Network common</key>
<key name="header_0036">BCN link #!variable!number!#</key>
<key name="header_0037">SN link #!variable!number!#</key>
<key name="header_0038">IFN link #!variable!number!#</key>
<key name="header_0039">New Hostname</key>
<key name="header_0040">#!string!brand_0006!# Description</key>
<key name="header_0041">Scan Agent</key>
<key name="header_0042">Manage</key>
<key name="header_0043">File Name</key>
<key name="header_0044">File Type</key>
<key name="header_0045">File Size</key>
<key name="header_0046">md5sum</key>
<key name="header_0047">New File Name</key>
<key name="header_0048">New File Type</key>
<key name="header_0049">Purge File</key>
<key name="header_0050">#!string!brand_0006!# List</key>
<key name="header_0051">Synced</key>
<key name="header_0052">Remove</key>
<key name="header_0053">#!string!brand_0006!# Name</key>
<key name="header_0054">Active Interface</key>
<key name="header_0055">Bond Mode</key>
<key name="header_0056">Active Interface</key>
<key name="header_0057">Link State</key>
<key name="header_0058">Duplex</key>
<key name="header_0059">Link Drops</key>
<key name="header_0060"><![CDATA[-=[ Bond Status - #!variable!date!# ] =-]]></key>
<key name="header_0061"><![CDATA[-=[ Ctrl + C to exit ] =-]]></key>
<key name="header_0062">Table</key>
<key name="header_0063">public</key> <!-- SQL schema -->
<key name="header_0064">history</key> <!-- SQL schema -->
<!-- Strings used by jobs -->
<key name="job_0001">Configure Network</key>
<key name="job_0002">The network configuration will be updated based on the variables stored in the database. Reconnecting to the machine using the new IP address may be required.</key>
<key name="job_0003">Update Striker</key>
<key name="job_0004">This system is now scheduled to be updated.</key>
<key name="job_0005">Reboot Striker</key>
<key name="job_0006">This system will be rebooted momentarily. It will not respond until it has booted back up.</key>
<key name="job_0007">Poweroff Striker</key>
<key name="job_0008">This system will be powered off momentarily. It will not respond until it has turned back on.</key>
<key name="job_0009">Reboot...</key>
<key name="job_0010">Powering off...</key>
<key name="job_0011">Add a Striker Peer</key>
<key name="job_0012">The Striker peer will now be added to the local configuration.</key>
<key name="job_0013">Remove a Striker Peer</key>
<key name="job_0014">The Striker peer will now be removed from the local configuration.</key>
<key name="job_0015">Manager Install Target.</key>
<key name="job_0016">Enable or disable the 'Install Target' feature.</key>
<key name="job_0017">Update the 'Install Target' source files and refresh RPM repository.</key>
<key name="job_0018">Download a file</key>
<key name="job_0019">The referenced file will be downloaded by the target host.</key>
<key name="job_0020">Initialize a new #!string!brand_0002!# Node</key>
<key name="job_0021">Initialize a new DR Host</key>
<key name="job_0022">The target will be setup to talk to this and our peer dashboards. When initialization is complete, you will be able to map the target's network.</key>
<key name="job_0023">Connecting to the target: [#!variable!target!#]...</key>
<key name="job_0024">Connected!</key>
<key name="job_0025">Unable to connect to: [#!variable!target!#]. Will keep trying for another: [#!variable!timeout!#] seconds...</key>
<key name="job_0026">Unable to connect, the job has failed.</key>
<key name="job_0027">'Initialize host' job: [#!variable!job-uuid!#] picked up.</key>
<key name="job_0028">Adding repositories.</key>
<key name="job_0029">Added the repository for this dashboard.</key>
<key name="job_0030">Red Hat subscription information provides, attempting to register now.</key>
<key name="job_0031">This machine is already registered with Red Hat. Skipping it.</key>
<key name="job_0032">Unable to reach the Red Hat subscription service. Is the Internet working on this host?</key>
<key name="job_0033">Please be patient, subscription can take a while to complete.</key>
<key name="job_0034">Success!</key>
<key name="job_0035">
Failure! The return code: [#!variable!return_code!#] was received ('0' was expected). Possibly helpful information:
* Output: [#!variable!output!#]
* Error: [#!variable!error!#]
</key>
<key name="job_0036">Adding the repo: [#!variable!repo!#]</key>
<key name="job_0037">Verifying the the needed repos are enabled now.</key>
<key name="job_0038">[ Warning ] - The repo: [#!variable!repo!#] is not subcribed to this system! Initialization will continue, but it might fail.</key>
<key name="job_0039">Updating the target's operating system prior to package install.</key>
<key name="job_0040">[ Note ] - This step can take a while to finish, and there will be no input here until it completes.</key>
<key name="job_0041">Removing conflicting packages.</key>
<key name="job_0042">Will now install: [#!variable!package!#].</key>
<key name="job_0043">Verifying installation.</key>
<key name="job_0044">[ Failed ] - There may be more information in #!data!path::log::main!#.</key>
<key name="job_0045">Success!</key>
<key name="job_0046">Adding our database connection information to the target's anvil.conf file.</key>
<key name="job_0047">Finished! The target should be ready for initial configuration shortly. If it isn't, please check that the 'anvil-daemon' daemon is running.</key>
<key name="job_0048">Removing bad machine keys.</key>
<key name="job_0049">Removing existing entries for the target machine: [#!variable!target!#] from: [#!variable!file!#].</key>
<key name="job_0050">[ Error ] - The known hosts file: [#!variable!file!#] was not found. Skipping it.</key>
<key name="job_0051">Finished.</key>
<key name="job_0052">[ Error ] - There was a problem reading the known hosts file: [#!variable!file!#]. Skipping it.</key>
<key name="job_0053">Found an entry for the target at line: [#!variable!line!#], removing it.</key>
<key name="job_0054">[ Error ] - The line number: [#!variable!line!#] in: [#!variable!file!#] does not appear to be for the target: [#!variable!target!#]. Has the file already been updated? Skipping it.</key>
<key name="job_0055">Rewriting: [#!variable!file!#].</key>
<key name="job_0056">Manage Keys</key>
<key name="job_0057">The selected bad key(s) will be removed from the specified files.</key>
<key name="job_0058">The state UUID: [#!variable!state_uuid!#] is for the machine with the host UUID: [#!variable!host_uuid!#], which is not us. This is probably a progrem error, skipping this.</key>
<key name="job_0059">[ Error ] - There was a problem writing the file: [#!variable!file!#]. Details will be found in the logs.</key>
<key name="job_0060">Success! The file: [#!variable!file!#] has been updated.</key>
<key name="job_0061">Setting the host name to: [#!variable!host_name!#]...</key>
<key name="job_0062">[ Error ] - The host name: [#!variable!host_name!#] is invalid. Skipping host name setup.</key>
<key name="job_0063">[ Error ] - Something went wrong. The host name was set to: [#!variable!host_name!#], but the host name returned was: [#!variable!current_host_name!#].</key>
<key name="job_0064">OUI Database.</key>
<key name="job_0065">Refresh the 'OUI' database used to cross reference MAC addresses to the companies that own them.</key>
<key name="job_0066">Network Scan.</key>
<key name="job_0067">This job does a simple ping scan of the networks connected to this host. Any detected hosts have their MAC / IP addresses recorded. This is designed to help determine IP addresses assigned to servers hosted on the #!string!brand_0002!# system.</key>
<key name="job_0068">Adding the database connection information for the dashboard: [#!variable!host_name!#] to the target's anvil.conf file.</key>
<key name="job_0069">Unable to find a matching network, skipping this database.</key>
<key name="job_0070">Something went wrong adding this database. Please see: [#!data!path::log::main!#] for details.</key>
<key name="job_0071">The network configuration will be updated based on the variables stored in the database. When complete, the system will reboot.</key>
<key name="job_0072">Join this machine to an #!string!brand_0006!#.</key>
<key name="job_0073">This machine will join an #!string!brand_0006!# as a node or DR host. The role and #!string!brand_0006!# will be determined by the associated Install Manifest UUID.</key>
<key name="job_0074">'Join #!string!brand_0002!#' job: [#!variable!job-uuid!#] picked up.</key>
<key name="job_0075">This will become: [#!variable!machine!#] using data from the install manifest UUID: [#!variable!manifest_uuid!#].</key>
<key name="job_0076">[ Error ] - Failed to load and parse the install manifest. Details will be found in the logs.</key>
<key name="job_0077">The host name is already: [#!variable!host_name!#], no change needed.</key>
<key name="job_0078">Updating the network configuration for: [#!variable!interface!#].</key>
<key name="job_0079">Disconnected from all database(s). Will reconnect after the network configuration changes have taken effect.</key>
<key name="job_0080">About to update the network, as necessary.</key>
<key name="job_0081">Checking: [#!variable!name!#].</key>
<key name="job_0082">No changes needed.</key>
<key name="job_0083">Backing up and writting out the new version of: [#!variable!file!#].</key>
<key name="job_0084">Reconnected to: [#!data!sys::database::connections!#] database(s).</key>
<key name="job_0085">The default 'virbr0' libvirtd bridge exists. Removing it.</key>
<key name="job_0086">Checking if the MTU needs to be updated on any interfaces.</key>
<key name="job_0087">The MTU on the interface: [#!variable!interface!#] is already: [#!variable!mtu!#] bytes, no update needed.</key>
<key name="job_0088">The MTU on the interface: [#!variable!interface!#] is currently: [#!variable!old_mtu!#] bytes, changing it to: [#!variable!mtu!#] bytes now.</key>
<key name="job_0089">Adding NTP (network time protocol) servers, if needed.</key>
<key name="job_0090">Adding the NTP server: [#!variable!server!#].</key>
<key name="job_0091">Restarting the daemon: [#!variable!daemon!#].</key>
<key name="job_0092"><![CDATA[[ Error ] - The Job: [#!variable!job-uuid!#] appears to have passed malformed data. The raw data was: [#!variable!raw!#]. Expected 'as_machine=<host_type>,manifest_uuid=<manifest_uuid>,anvil_uuid=<anvil_uuid>'. Either the parse failed, or the data was somehow invalid.]]></key>
<key name="job_0093">Updated the password for the: [#!variable!user!#] user.</key>
<key name="job_0094">Enabled and started the daemon: [#!variable!daemon!#].</key>
<key name="job_0095">Disable and stop the daemon: [#!variable!daemon!#].</key>
<key name="job_0096">This is a DR host, skipping pacemaker configuration.</key>
<key name="job_0097"><![CDATA[[ Error ] - Authorizing against 'pcsd' failed. Has the peer configured it's 'hacluster' user yet?. Will try again in a moment.]]></key>
<key name="job_0098">Successfully authorized using 'pcsd' on both nodes.</key>
<key name="job_0099">No existing cluster found, will run initial setup.</key>
<key name="job_0100">The corosync.conf file does not exist locally, but it does exist on the peer. Copying the file to here.</key>
<key name="job_0101"><![CDATA[[ Error ] - Something went wrong while trying to initialize the cluster. The error, if any, was: [#!variable!error!#].]]></key>
<key name="job_0102">Starting the cluster (on both nodes) now.</key>
<key name="job_0103">We're node 2, so we will wait until the peer starts the cluster.</key>
<key name="job_0104">Both nodes are up!</key>
<key name="job_0105">Still waiting. Node 1: [#!variable!node1_name!#] ready: [#!variable!node1_ready!#] (in_ccm/crmd/join: [#!variable!node1_in_ccm!#/#!variable!node1_crmd!#/#!variable!node1_join!#]), Node 2: [#!variable!node2_name!#] ready: [#!variable!node2_ready!#] (in_ccm/crmd/join: [#!variable!node2_in_ccm!#/#!variable!node2_crmd!#/#!variable!node2_join!#])</key>
<key name="job_0106">Cluster hasn't started, calling local start.</key>
<key name="job_0107">Corosync is not yet configured, waiting. It will be created when node 1 initializes the cluster.</key>
<key name="job_0108">Corosync is configured. Will wait for the cluster to start. If it hasn't started in two minutes, we'll try to join it.</key>
<key name="job_0109">We will now wait for the cluster to start.</key>
<key name="job_0110">The interface: [#!variable!interface!#] has a DNS entry: [#!variable!dns_line!#], but it is not the default gateway. Removing the line.</key>
<key name="job_0111">The interface: [#!variable!interface!#] has a GATEWAY entry: [#!variable!gateway_line!#], but it is not the default gateway. Removing the line.</key>
<key name="job_0112">Updating the '/etc/hosts' file.</key>
<key name="job_0113">Checking the SSH configuration.</key>
<key name="job_0114">Configuring the IPMI BMC. Please be patient, this could take a minute.</key>
<key name="job_0115">Checking the fence configuration for the node: [#!variable!node!#].</key>
<key name="job_0116">IPMI exists on this node, but it is not yet setup as a fence device, adding it.</key>
<key name="job_0117">The IPMI information in the existing fence configuration is different from the details stored in the database. Will reconfigure.</key>
<key name="job_0118">There is an IPMI fence device configured, but there is no host IPMI information in the database. Removing it.</key>
<key name="job_0119">Deleting the old fence device: [#!variable!device!#].</key>
<key name="job_0120">Creating the new fence device: [#!variable!device!#].</key>
<key name="job_0121">The fence device: [#!variable!device!#] information in the existing fence configuration is different from the details stored in the database. Will reconfigure.</key>
<key name="job_0122">The fence device: [#!variable!device!#] does not exist as a fence device, adding it.</key>
<key name="job_0123">Adding a fence delay agent to provide time for the IPMI BMC to boot before trying it again.</key>
<key name="job_0124">Configuring the cluster to loop fence attempts indefinitely.</key>
<key name="job_0125">Enabling fencing!</key>
<key name="job_0126">Checking to see if: [#!data!path::configs::global-common.conf!#] needs to be configured or updated.</key>
<key name="job_0127">Update completed successfully.</key>
<key name="job_0128">Update not required, nothing changed.</key>
<key name="job_0129">Completed joining the #!string!brand_0002!#.</key>
<key name="job_0130">No job was found that needs to be run.</key>
<key name="job_0131">Reconnecting will start a synchonization of the database. This step might take a while to complete, please be patient.</key>
<key name="job_0132">Sync Uploaded File</key>
<key name="job_0133">This moves an uploaded file from the: [#!data!path::directories::shared::incoming!#] directory to: [#!data!path::directories::shared::files!#] directory, adds it to the Anvil! database, and pushed it out to other systems.</key>
<key name="job_0134">Successfully deleted the file: [#!variable!file_path!#].</key>
<key name="job_0135">No need to delete the file: [#!variable!file_path!#], it already doesn't exist.</key>
<key name="job_0136">Purge File.</key>
<key name="job_0137">This askes the host to delete the associated file from their system.</key>
<key name="job_0138">Rename File.</key>
<key name="job_0139">This askes all systems to rename the associated file.</key>
<key name="job_0140">No need to rename the file: [#!variable!file_path!#], it doesn't exist on this host.</key>
<key name="job_0141">About to rename the old file: [#!variable!old_file!#] to: [#!variable!new_file!#].</key>
<key name="job_0142">File renamed successfully.</key>
<key name="job_0143">Check File Mode.</key>
<key name="job_0144">This is used when a file type changes, setting the executable bits when the type is script, and removing the executable bits when set to another type.</key>
<key name="job_0145">The file: [#!variable!file_path!#]'s mode has been set to: [#!variable!new_mode!#].</key>
<key name="job_0146">No need to set the mode on the file: [#!variable!file_path!#], it doesn't exist here.</key>
<key name="job_0147">Provision a new server</key>
<key name="job_0148">This takes the information and creates a new server.</key>
<key name="job_0149">There are no known Anvil! systems at this time. Please setup an Anvil! and try again later.</key>
<key name="job_0150">Provision a new server menu:</key>
<key name="job_0151">Anvil! name: ... [#!variable!anvil_name!#]</key>
<key name="job_0152">* That was not a recognized Anvil! name. please try again.</key>
<key name="job_0153">-=] Existing Anvil! systems [=-</key>
<key name="job_0154">Loading available resources for: [#!variable!anvil_name!#] (#!variable!anvil_uuid!#)</key>
<key name="job_0155">There is not enough RAM available on this Anvil! to provision new servers.</key>
<key name="job_0156"> - Available RAM: [#!variable!available_ram!#]</key>
<key name="job_0157">Server name: ... [#!variable!server_name!#]</key>
<key name="job_0158">CPU Cores: ..... [#!variable!cpu_cores!#]</key>
<key name="job_0159">* Please enter a unique server name.</key>
<key name="job_0160">-=] Existing Servers on the Anvil! [#!variable!anvil_name!#] [=-</key>
<key name="job_0161">* Please enter a number between 1 and #!variable!max_cores!#.</key>
<key name="job_0162">-=] Available cores / threads: [#!variable!cores!# / #!variable!threads!#]</key>
<key name="job_0163"> - Node #!variable!core!# CPU Model: [#!variable!model!#]</key>
<key name="job_0164"> - DR Host CPU: .... [#!variable!model!#], [#!variable!cores!#c]/[#!variable!threads!#t]</key>
<key name="job_0165">RAM: ........... [#!variable!ram!#]</key>
<key name="job_0166">* Please enter a valid amount up to: [#!variable!ram_total!# / #!variable!ram_available!#].</key>
<key name="job_0167">-=] Available RAM: [#!variable!ram_available!#]
- Reserved by host: ... [#!variable!ram_reserved!#]
- Allocated to servers: [#!variable!ram_allocated!#]
- Node 1 RAM (total): . [#!variable!ram_node1!#]
- Node 2 RAM (total): . [#!variable!ram_node2!#]</key>
<key name="job_0168"> - DR Host RAM (total): [#!variable!ram_available!#]</key>
<key name="job_0169"> Available on Anvil!: [#!variable!vg_free!#], Total: [#!variable!vg_size!#]
Available on DR: ... [#!variable!dr_free!#], Total: [#!variable!dr_size!#]</key>
<key name="job_0170">Storage Group: . [#!variable!storage_group!#]</key>
<key name="job_0171">* Please enter a number beside the storage group you want to use.</key>
<key name="job_0172">-=] Storage groups</key>
<key name="job_0173">Storage Size: .. [#!variable!storage_size!#]</key>
<key name="job_0174">* Please enter a size up to: [#!variable!max_size!#].</key>
<key name="job_0175">-=] Storage group: [#!variable!storage_group!#], Available Space: [#!variable!available_size!#]
- Note: You can add additional drives later.</key>
<key name="job_0176">Install Media: . [#!variable!install_media!#]</key>
<key name="job_0177">* Please enter a number that corresponds to an install disc.</key>
<key name="job_0178">-=] Installation media</key>
<key name="job_0179"> - 0) #!string!unit_0005!#</key>
<key name="job_0180">Driver Disc: ... [#!variable!driver_disc!#]</key>
<key name="job_0181">* Please enter a number that corresponds to a driver disc.</key>
<key name="job_0182">-=] Driver disc</key>
<key name="job_0183">Saving the job details to create this server. Please wait a few moments.
Job Data:
====
#!variable!job_data!#
====</key>
<key name="job_0184">The job to create the new server has been registered as job: [#!variable!job_uuid!#].
It should be provisioned in the next minute or two.</key>
<key name="job_0185">Sanity checks complete.</key>
<key name="job_0186">The new DRBD resource will use minor number: [#!variable!minor!#] and the base TCP port: [#!variable!port!#].</key>
<key name="job_0187">[ Warning ] - The logical volume: [#!variable!lv_path!#] to use for this server already exists. We will NOT initialize it! If the LV does not have DRBD metadata, the server install will fail. If the LV is a DRBD resource, and it is inconsistent or outdated, provisioning will stall until the peer comes online. If the install fails, please determine why (or remove the existing LV) and try again.</key>
<key name="job_0188">The peer job: [#!variable!job_uuid!#] has been created for the peer: [#!variable!peer_name!#] to create it's side of the storage.</key>
<key name="job_0189">The new logical volume: [#!variable!lv_path!#] has been created. This will back the replicated storage used for the new server.</key>
<key name="job_0190">The DRBD resource: [#!variable!resource!#] configuration has been created and loaded.</key>
<key name="job_0191">The DRBD resource: [#!variable!resource!#] metadata has been created.</key>
<key name="job_0192">Bringing up the new resource.</key>
<key name="job_0193">Waiting for the disk state to be ready. The current volume: [#!variable!volume!#] disk state is: [#!variable!disk_state!#], waiting for it to become 'UpToDate', 'Consistent', 'Outdated' or 'Inconsistent'.</key>
<key name="job_0194">The LV(s) behind the resource: [#!variable!resource!#] already existed, and the DRBD resource is not in the disk state 'UpToDate'. As such, we'll keep waiting before provisioning the server.</key>
<key name="job_0195">The resource needs to be forced to UpToDate as it is brand now, doing that now.</key>
<key name="job_0196">-=] OS Short List</key>
<key name="job_0197">* Please enter an OS key that is closest to your target OS. Run 'osinfo-query os' for a full list.</key>
<key name="job_0198">Optimize for: .. [#!variable!os!#]</key>
<key name="job_0199">Ready to provision the server! Please be patient, this could take a moment. The call to create the server will be:
====
#!variable!shell_call!#
====</key>
<key name="job_0200">Provision call made, waiting for the server to start...</key>
<key name="job_0201">Started! Verifying that it looks good and adding it to the database.</key>
<key name="job_0202">Done! The server should now be booting. Connect now and finish the OS install.</key>
<key name="job_0203">The resource: [#!variable!resource!#] is now up.</key>
<key name="job_0204">We're the peer for this new server, and so we're now done. The other node will complete the server's install momentarily.</key>
<key name="job_0205">As we're the peer, we're now going to wait for the new server definition to be added to the database, then write it out to disk.</key>
<key name="job_0206">The definition file: [#!variable!file!#] has been saved.</key>
<key name="job_0207">Preparing to add the server to the central cluster manager.</key>
<key name="job_0208">Deleting a server</key>
<key name="job_0209">This deletes a server from an Anvil! system.</key>
<key name="job_0210">Asking pacemaker to stop the server: [#!variable!server_name!#].</key>
<key name="job_0211">The server: [#!variable!server_name!#] is now stopped in pacemaker.</key>
<key name="job_0212">Registered a job with: [#!variable!host_name!#] to delete it's records of this server.</key>
<key name="job_0213">Deleting the replicated storage resource behind this server.</key>
<key name="job_0214">Storage has been released. Checking that the server has flagged as deleted in the database.</key>
<key name="job_0215">The server has been flagged as deleted now.</key>
<key name="job_0216">The server delete is complete on this host!</key>
<key name="job_0217">It looks like ScanCore has not yet run on one or both nodes in this Anvil! system. Missing resource data, so unable to proceed.</key>
<key name="job_0218">Manually calling 'scan-drbd' to ensure that the new agent is recorded.</key>
<key name="job_0219">The server name: [#!variable!server_name!#] is already used by another server.</key>
<key name="job_0220">Deleting the server's definition file: [#!variable!file!#]...</key>
<key name="job_0221">The server: [#!variable!server_name!#] was not found in the cluster configuration. This can happen if a server was partially deleted and we're trying again.</key>
<key name="job_0222">Preparing to delete the server: [#!variable!server_name!#].</key>
<key name="job_0223">Using virsh to destroy (force off) the server: [#!variable!server_name!#], if it is still running.</key>
<key name="job_0224">Enabled the HA repository for CentOS Stream.</key>
<key name="job_0225">Initialize Stage-1 installed systems into a full Anvil!.</key>
<key name="job_0226">This program is designed the automation of turning a set of stage-1 (bare OS + anvil-repo) systems and turn them into a fully functioning Anvil! system.</key>
<key name="job_0227">We need to setup pairing with Striker: [#!variable!number!#]. We will wait for it to come up. Be sure that you're run 'striker-auto-initialize-all' on it.</key>
<key name="job_0228">Successfully connected to Striker: [#!variable!number!#] using the IP: [#!variable!ip!#]!</key>
<key name="job_0229">No connection to Striker: [#!variable!number!#] via the IP: [#!variable!ip!#].</key>
<key name="job_0230">Failed to connect Striker: [#!variable!number!#] over any IPs. Sleeping a bit and then trying again.</key>
<key name="job_0231">Waiting now for the peer Striker: [#!variable!number!#] with host UUID: [#!variable!peer_host_uuid!#] to show up in our database.</key>
<key name="job_0232">The peer Striker: [#!variable!number!#] with host name: [#!variable!peer_host_name!#] has successfully peered with us!</key>
<key name="job_0233">The peer Striker: [#!variable!number!#] with host UUID: [#!variable!peer_host_uuid!#] has not yet started using our database. Waiting a bit before checking again...</key>
<key name="job_0234">Peering Striker dashbaords</key>
<key name="job_0235">Striker peers now working with us!</key>
<key name="job_0236">Adding UPSes now.</key>
<key name="job_0237">Successfully added/updated the UPS: [#!variable!ups_name!#] at: [#!variable!ups_ip_address!#] using the agent: [#!variable!ups_agent!#]. It's UPS UUID is: [#!variable!ups_uuid!#].</key>
<key name="job_0238">Failed to assemble the Anvil!, aborting.</key>
<key name="job_0239">All UPSes added/updated.</key>
<key name="job_0240">Adding fence devices now.</key>
<key name="job_0241">Successfully added/updated the fence device: [#!variable!fence_name!#] using the agent: [#!variable!fence_agent!#]. It's fence UUID is: [#!variable!fence_uuid!#].</key>
<key name="job_0242">All fence devices added/updated.</key>
<key name="job_0243">Creating Install Manifest(s).</key>
<key name="job_0244">Created the manifest: [#!variable!manifest_name!#] with the UUID: [#!variable!manifest_uuid!#].</key>
<key name="job_0245">Install Manifest(s) created.</key>
<key name="job_0246">Initializing nodes and, if applicable, DR host(s).</key>
<key name="job_0247">The machine: [#!variable!machine!#] is already initialized and has the host UUID: [#!variable!host_uuid!#]. No need to initialize.</key>
<key name="job_0248">Trying to connect to: [#!variable!machine!#] using IP: [#!variable!ip!#] with the initial password.</key>
<key name="job_0249">Trying to connect to: [#!variable!machine!#] using IP: [#!variable!ip!#] with the desired password.</key>
<key name="job_0250">Connected! We will initialize using the IP: [#!variable!ip!#]</key>
<key name="job_0251">Failed to connect to: [#!variable!machine!#] using any IP address. We'll sleep and then try again shortly.</key>
<key name="job_0252">Created the job to initialize: [#!variable!host_name!#] via the IP address: [#!variable!ip!#] with job UUID: [#!variable!job_uuid!#].</key>
<key name="job_0253">All machines should now be initializing. Waiting now for all machines to register in the database.</key>
<key name="job_0254">The machine: [#!variable!machine!#] hasn't connected to the database yet.</key>
<key name="job_0255">One (or more) machines have not yet initialized. Waiting a few seconds, then checking again.</key>
<key name="job_0256">All machines have been initialized!</key>
<key name="job_0257">Ready to create jobs to assemble Anvil! systems.</key>
<key name="job_0258">Created (or updated) the Anvil! [#!variable!anvil_name!#] with the UUID: [#!variable!anvil_uuid!#].</key>
<key name="job_0259">Created the job for: [#!variable!machine_name!#] with host UUID: [#!variable!host_uuid!#] to the Anvil!: [#!variable!anvil_name!#] with the job UUID: [#!variable!job_uuid!#].</key>
<key name="job_0260">Add machines have been asked to joing their Anvil! system(s). We'll now wait for all jobs to complete.</key>
<key name="job_0261">The job UUID: [#!variable!job_uuid!#] is at: [#!variable!progress!#%].</key>
<key name="job_0262">Not all jobs are done yet, will check again in a bit.</key>
<key name="job_0263">All jobs are complete! Baring problems, the Anvil! system(s) should now be ready to use.</key>
<key name="job_0264">The peer Striker: [#!variable!number!#] with host name: [#!variable!peer_host_name!#] is already peered with us.</key>
<key name="job_0265">Configuring the network of all machines now.</key>
<key name="job_0266">Created a job for: [#!variable!host_name!#] to configure it's network under job UUID: [#!variable!job_uuid!#].</key>
<key name="job_0267">All machines should be configuring their network now. Waiting for all to become accessible over BCN 1.</key>
<key name="job_0268">The machine: [#!variable!host_name!#] is not yet accessible at: [#!variable!ip_address!#].</key>
<key name="job_0269">One or more machines are not yet accessible on the first BCN. Will check again in a moment.</key>
<key name="job_0270">All machines are now available on the first BCN!</key>
<key name="job_0271">One of the Striker dashboards has not yet updated network information in the database. We need this to know which IP to tell the peer to use to connect to us. We'll wait a moment and check again.</key>
<key name="job_0272">The cluster still hasn't started. Calling startup again (will try once per minute).</key>
<key name="job_0273">Successfully added/confirmed the filter in lvm.conf.</key>
<key name="job_0274">Failed to add/confirmed the filter in lvm.conf! This should be corrected later by 'scan-drbd' though.</key>
<key name="job_0275">The cluster isn't up. Provisioning the server will hold until it is. Will check every 10 seconds.</key>
<key name="job_0276">The cluster is up.</key>
<key name="job_0277">The cluster is not started yet, waiting. Will check again shortly.</key>
<key name="job_0278">The cluster is up, but waiting for this node to become ready. Will check again shortly.</key>
<key name="job_0279">The cluster is up and the node is ready.</key>
<key name="job_0280">The server: [#!variable!server!#] has booted!</key>
<key name="job_0281">Done!</key>
<key name="job_0282">Booting server(s)...</key>
<key name="job_0283">Shutting down server(s)...</key>
<key name="job_0284">The server: [#!variable!server!#] is already off, nothing to do.</key>
<key name="job_0285">The server: [#!variable!server!#] has shut down.</key>
<key name="job_0286">The server: [#!variable!server!#] has been asked to stop. You may need to verify that it is actually stopped (some OSes ignore power button events).</key>
<key name="job_0287">The server: [#!variable!server!#] has been asked to boot. It should come up soon.</key>
<key name="job_0288">The server: [#!variable!server!#] will now be booted...</key>
<key name="job_0289">The server: [#!variable!server!#] will now be asked to shut down. If the server doesn't stop, please log into it and make sure it reacted to the power button event. Shut it down manually, if needed.</key>
<key name="job_0290">Booting server(s)...</key>
<key name="job_0291">Source node: [#!variable!source!#], target node is: [#!variable!target!#].</key>
<key name="job_0292">The server: [#!variable!server!#] has been migrated to: [#!variable!target!#].</key>
<key name="job_0293">The server: [#!variable!server!#] will now be migrated to: [#!variable!target!#]. This could take some time! How much RAM is allocated to this server, the speed of the back-channel network and how busy the server is all contribute to migration time. Please be patient!</key>
<key name="job_0294">The server: [#!variable!server!#] has been asked to migrate. We are not waiting for it to complete.</key>
<key name="job_0295">The cluster is up and both nodes are ready.</key>
<key name="job_0296">The cluster is up and both one or both nodes are not yet ready. Will wait until both are up. Current states; [#!variable!local_name!#] is: [#!variable!local_ready!#], and [#!variable!peer_name!#] is: [#!variable!peer_ready!#].</key>
<key name="job_0297">The peer: [#!variable!host_name!#] can't be reached yet. Will wait for it to be available before proceeding with the rename.</key>
<key name="job_0298">The peer(s) of this server are accessible. Ready to proceed with the rename.</key>
<key name="job_0299">The server: [#!variable!server!#] status is: [#!variable!status!#]. Waiting for it to be off.</key>
<key name="job_0300">The server: [#!variable!server!#] is verified to be off everywhere.</key>
<key name="job_0301">The DRBD connection from: [#!variable!source_host!#] to: [#!variable!peer_host!#] for the resource/volume: [#!variable!resource!#/#!variable!volume!#] is: [#!variable!replication_state!#]. Will wait for the sync to finish before taking down the resource.</key>
<key name="job_0302">The DRBD resource behind the server is ready to be taken down.</key>
<key name="job_0303">Taking down the DRBD resource: [#!variable!resource!#] on the peer: [#!variable!peer!#] via the IP: [#!variable!ip!#].</key>
<key name="job_0304">The DRBD resource is down.</key>
<key name="job_0305">On the host: [#!variable!host_name!#], we'll now rename the LV: [#!variable!old_lv!#] to: [#!variable!new_lv!#].</key>
<key name="job_0306">The new LV: [#!variable!new_lv!#] now exists on the host: [#!variable!host_name!#].</key>
<key name="job_0307">Successfully wrote the file: [#!variable!file!#] on the host: [#!variable!host_name!#].</key>
<key name="job_0308">Successfully added the new server name: [#!variable!server_name!#] to the cluster!</key>
<key name="job_0309">Verifying that the server name: [#!variable!server_name!#] is not defined.</key>
<key name="job_0310">Verifying that the server name: [#!variable!server_name!#] is not defined on: [#!variable!host_name!#].</key>
<key name="job_0311">Renamed the server name to: [#!variable!server_name!#] in the database.</key>
<key name="job_0312">We are the SyncSource for the peer: [#!variable!peer_host!#] for the resource/volume: [#!variable!resource!#/#!variable!volume!#]. We have to wait for the peer to complete the sync or close it's connection before we can proceed with shut down.</key>
<key name="job_0313">The cluster has stopped.</key>
<key name="job_0314">Stopping all DRBD resources.</key>
The core logic is done!!!! Still need to finish end-points for the WebUI to hook into, but the core of M3 is complete! Many, many bugs are expected, of course. :) * Created DRBD->check_if_syncsource() and ->check_if_synctarget() that return '1' if the target host is currently SyncSource or SyncTarget for any resource, respectively. * Updated DRBD->update_global_common() to return the unified-format diff if any changes were made to global-common.conf. * Created ScanCore->check_health() that returns the health score for a host. Created ->count_servers() that returns the number of servers on a host, how much RAM is used by those servers and, if available, the estimated migration time of the servers. Updated ->check_temperature() to set/clear/return the time that a host has been in a warning or critical temperature state. * Finished ScanCore->post_scan_analysis_node()!!! It certainly has bugs, and much testing is needed, but the logic is all in place! Oh what a slog that was... It should be far more intelligent than M2 though, once flushed out and tested. * Created Server->active_migrations() that returns '1' if any servers are in a migration on an Anvil! system. Updated ->migrate_virsh() to record how long a migration took in the "server::migration_duration" variable, which is averaged by ScanCore->count_servers() to estimate migration times. * Updated scan-drbd to check/update the global-common.conf file's config at the end of a scan. * Updated ScanCore itself to not scan when in maintenance mode. Also updated it to call 'anvil-safe-start' when ScanCore starts, so long as it is within ten minutes of the host booting. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="job_0315">The server: [#!variable!server!#] is migrating. Will check again shortly to see if it is done.</key>
<key name="job_0316">Asking the cluster to shut down the server: [#!variable!server!#] now.</key>
<key name="job_0317">The server: [#!variable!server!#] has not shut down yet. Asking 'virsh' to shut it down. If the cluster stop woke it up, this should trigger a shutdown. If not, manual shutdown will be required.</key>
<key name="job_0318">The server: [#!variable!server!#] will now be migrated to: [#!variable!node!#]. This could take some time, depending on the amount of RAM allocated to the server, the speed of the BCN and the activity on the server. Please be patient!</key>
<key name="job_0319">No servers are running on this node now.</key>
<key name="job_0320">Will now shut down any servers running on the cluster.</key>
<key name="job_0321">Will now migrate any servers running on the cluster.</key>
<key name="job_0322">Checking to see if we're "SyncSource" for any peer's replicated storage.</key>
<key name="job_0323">Withdrawing this node from the cluster now.</key>
<key name="job_0324">Waiting for the node to finish withdrawing from the cluster.</key>
<key name="job_0325">Shutdown complete, powering off now.</key>
<key name="job_0326">Done. This node is no longer in the cluster.</key>
<key name="job_0327">The machine: [#!variable!host_name!#] appears to have IPMI, trying to boot it using that...</key>
<key name="job_0328">The target machine is already on, nothing to do.</key>
<key name="job_0329">The target machine is confirmed off, will try to start now.</key>
<key name="job_0330">The target machine is now booting!</key>
<key name="job_0331">The machine: [#!variable!host_name!#] does not have a (known) IPMI BMC, but it is a member of the Anvil! [#!variable!anvil_name!#]. Searching for a fence method to boot it...</key>
<!-- cgi-bin/set_power,on,job_title -->
<key name="job_0332">Power On Host</key>
<!-- cgi-bin/set_power,on,job_description -->
<key name="job_0333">Power on the target host by executing a start script on a striker.</key>
<!-- cgi-bin/set_power,off,job_title -->
<key name="job_0334">Power Off Host</key>
<!-- cgi-bin/set_power,off,job_description -->
<key name="job_0335">Power off the target host by executing a stop script on the host itself.</key>
<!-- cgi-bin/set_membership,join,job_title -->
<key name="job_0336">Host Join Cluster</key>
<!-- cgi-bin/set_membership,join,job_description -->
<key name="job_0337">Make target host join its anvil cluster.</key>
<!-- cgi-bin/set_membership,leave,job_title -->
<key name="job_0338">Host Leave Cluster</key>
<!-- cgi-bin/set_membership,leave,job_description -->
<key name="job_0339">Make target host leave its anvil cluster.</key>
<!-- Log entries -->
<key name="log_0001">Starting: [#!variable!program!#].</key>
<key name="log_0002">
This is a "test" entry.
It is multiple lines with single quotes ['] and double-quotes (") and here are random brackets{!}.
It also has replacement variables: [#!variable!first!#] and [#!variable!second!#].
</key>
<key name="log_0003">This is a test log entry that contains a secret [#!variable!passwaord!#]!</key>
<key name="log_0004">This is a test log entry at log level 2.</key>
<key name="log_0005">This is a test log entry at log level 3.</key>
<key name="log_0006">This is a test log entry at log level 4.</key>
<key name="log_0007">This is a test critical log entry.</key>
<key name="log_0008">This is a test error log entry.</key>
<key name="log_0009">This is a test alert log entry.</key>
<key name="log_0010">This is a test emergency log entry.</key>
<key name="log_0011">About to run the shell command: [#!variable!shell_call!#]</key>
<key name="log_0012">About to read the file: [#!variable!shell_call!#]</key>
<key name="log_0013">About to write the file: [#!variable!shell_call!#]</key>
<key name="log_0014">[ Error ] - There was a problem running the shell command: [#!variable!shell_call!#]. The error was: [#!variable!error!#].</key>
<key name="log_0015">[ Error ] - There was a problem reading the file: [#!variable!shell_call!#]. The error was: [#!variable!error!#].</key>
<key name="log_0016">[ Error ] - There was a problem writing the file: [#!variable!shell_call!#]. The error was: [#!variable!error!#].</key>
<key name="log_0017">Output: [#!variable!line!#].</key>
<key name="log_0018">About to open the directory: [#!variable!directory!#]</key>
<key name="log_0019">Variables:</key>
<key name="log_0020"><![CDATA[[ Error ] - The method: [#!variable!method!#] was called but the: [#!variable!parameter!#] parameter was not passed or it is empty.]]></key>
<key name="log_0021"><![CDATA[[ Error ] - The method Storage->read_file() was asked to read the file: [#!variable!file!#], but that file does not exist.]]></key>
<key name="log_0022"><![CDATA[[ Error ] - The method Storage->read_file() was asked to read the file: [#!variable!file!#] which exists but can't be read.]]></key>
<key name="log_0023">Reading: [#!variable!line!#].</key>
<key name="log_0024"><![CDATA[[ Error ] - No template file passed to Template->get().]]></key>
<key name="log_0025"><![CDATA[[ Error ] - No requested template file: [#!variable!source!#] does not exist. Is it missing in the active skin?]]></key>
<key name="log_0026"><![CDATA[[ Error ] - The requested template file: [#!variable!source!#] is not readable. Please check that it is readable by the webserver user: [#!variable!user_name!#]]]></key>
<key name="log_0027"><![CDATA[[ Error ] - No template name passed to Template->get().]]></key>
<key name="log_0028">Successfully read the words file: [#!variable!file!#].</key>
<key name="log_0029"><![CDATA[[ Error ] - Storage->find() failed to find: [#!variable!file!#].]]></key>
<key name="log_0030"><![CDATA[[ Warning ] - Template->skin() was asked to set the skin: [#!variable!set!#], but the source directory: [#!variable!skin_directory!#] doesn't exist. Ignoring.]]></key>
<key name="log_0031"><![CDATA[[ Warning ] - Storage->search_directories() was passed the array: [#!variable!array!#], but it wasn't actually an array. Using @INC + path::directories::tools + \$ENV{'PATH'} for the list of directories to search instead.]]></key>
<key name="log_0032"><![CDATA[[ Warning ] - Words->read()' called without a file name to read.]]></key>
<key name="log_0033"><![CDATA[[ Warning ] - Words->read()' asked to read: [#!variable!file!#] which was not found.]]></key>
<key name="log_0034"><![CDATA[[ Warning ] - Anvil::Tools::Words->read()' asked to read: [#!variable!file!#] which was not readable by: [#!variable!user!#] (uid/euid: [#!variable!uid!#]).]]></key>
<key name="log_0035"><![CDATA[[ Warning ] - The config file: [#!variable!file!#] appears to have a malformed line: [#!variable!count!#:#!variable!line!#].]]></key>
<key name="log_0036"><![CDATA[[ Error ] - The method Database->read_variable() was called but both the 'variable_name' and 'variable_uuid' parameters were not passed or both were empty.]]></key>
<key name="log_0037"><![CDATA[[ Error ] - The method Database->insert_or_update_variables() method was called but both the 'variable_name' and 'variable_uuid' parameters were not passed or both were empty.]]></key>
<key name="log_0038"><![CDATA[[ Error ] - The method Storage->change_mode() was called without an invalid 'mode' parameter. It should have been three or four digits, or 'x+/-y' format, but: [#!variable!mode!#] was passed.]]></key>
<key name="log_0039">The host: [#!variable!host!#] has released its database lock.</key>
<key name="log_0040"><![CDATA[[ Error ] - The method Storage->write_file() was asked to write the file: [#!variable!file!#] but it already exists and 'overwrite' was not set. Aborting.]]></key>
<key name="log_0041"><![CDATA[[ Error ] - The method Storage->write_file() was asked to write the file: [#!variable!file!#] but it is not a full path. Aborting.]]></key>
<key name="log_0042"><![CDATA[[ Error ] - The method Words->string() was asked to process the string: [#!variable!string!#] which has insertion variables, but nothing was passed to the 'variables' parameter.]]></key>
<key name="log_0043"><![CDATA[[ Error ] - The method System->call() was called but 'shell_call' was not passed or was empty.]]></key>
<key name="log_0044">The host: [#!variable!host!#] has renewed its database lock.</key>
<key name="log_0045">The host: [#!variable!host!#] is requesting a database lock.</key>
<key name="log_0046"><![CDATA[[ Note ] - The method Storage->#!variable!method!#() was asked to copy: [#!variable!source_file!#] to: [#!variable!target_file!#], but the target already exists and 'overwrite' wasn't specified, skipping.]]></key>
<key name="log_0047"><![CDATA[[ Error ] - The method Log->level() was passed an invalid log level: [#!variable!set!#]. Only '0', '1', '2', '3' or '4' are valid.]]></key>
<key name="log_0048"><![CDATA[[ Warning ] - Testing of Anvil::Tools is beginning. This will generate warnings and alerts and are not a concern.]]></key>
<key name="log_0049"><![CDATA[[ Warning ] - Testing of Anvil::Tools is complete.]]></key>
<key name="log_0050">[ Error ] - There is a local database defined, but it does not appear to exist and we could not initialize the database server. Is 'postgresql-server' installed?</key>
<key name="log_0051"><![CDATA[[ Error ] - The method Storage->change_owner() was asked to change the ownership of: [#!variable!path!#] which doesn't exist.]]></key>
<key name="log_0052"><![CDATA[[ Error ] - The method Storage->#!variable!method!#() was called but the source file: [#!variable!source_file!#] doesn't exist.]]></key>
<key name="log_0053"><![CDATA[[ Error ] - The 'Database->connect()' method tried to connect to the same database twice: [#!variable!target!#].]]></key>
<key name="log_0054">
Connecting to Database with configuration ID: [#!variable!uuid!#]
- driver: . [#!variable!driver!#]
- host: ... [#!variable!host!#]
- port: ... [#!variable!port!#]
- name: ... [#!variable!name!#]
- user: ... [#!variable!user!#]
- password: [#!variable!password!#]
</key>
<key name="log_0055">Initialized PostgreSQL.</key>
<key name="log_0056">Updated: [#!variable!file!#] to listen on all interfaces.</key>
<key name="log_0057">Updated: [#!variable!file!#] to require passwords for access.</key>
<key name="log_0058"><![CDATA[[ Error ] - The method Remote->call() was called but the port: [#!variable!port!#] is invalid. It must be a digit between '1' and '65535'.]]></key>
<key name="log_0059">Started the PostgreSQL database server.</key>
<key name="log_0060">Database user: [#!variable!user!#] already exists with UUID: [#!variable!uuid!#].</key>
<key name="log_0061"><![CDATA[[ Error ] - The method Get->users_home() was asked to find the home directory for the user: [#!variable!user!#], but was unable to do so.]]></key>
<key name="log_0062">SSH session opened without a password to: [#!variable!target!#].</key>
<key name="log_0063"><![CDATA[The database: [#!variable!host!# -> #!variable!name!#] with the UUID: [#!variable!uuid!#] did not respond to pings and 'database::#!variable!uuid!#::ping' is not set to '0' in '#!data!path::configs::anvil.conf!#', skipping it.]]></key>
<key name="log_0064">[ Warning ] - The database: [#!variable!name!#] on host: [#!variable!host!#] with UUID: [#!variable!uuid!#] can not be used, skipping it.</key>
<key name="log_0065">
The database connection error was:
----------
#!variable!dbi_error!#
----------
</key>
<key name="log_0066">Is the database server running on: [#!variable!target!#] and does the target's firewall allow connections on TCP port: [#!variable!port!#]?</key>
<key name="log_0067"><![CDATA[The password was not passed, and it is required. Please set: [database::#!variable!uuid!#::password = <password>] in: [#!data!path::configs::anvil.conf!#].]]></key>
<key name="log_0068"><![CDATA[The database user name: [#!variable!user!#] on the host: [#!variable!host!#] is either not the owner of the database: [#!variable!name!#], or the password for that user is incorrect.
- Please edit: [#!data!path::configs::anvil.conf!#]
* If the user name is not correct, please update:
database::#!variable!uuid!#::user = <user>
* If the user name is correct, please update:
database::#!variable!uuid!#::password = <password>
]]></key>
<key name="log_0069">The connection to the database: [#!variable!name!#] on host: [#!variable!host!#:#!variable!port!#] was refused. Is the database server running?</key>
<key name="log_0070">The connection to the database: [#!variable!name!#] on host: [#!variable!host!#:#!variable!port!#] failed because the name could not be translated to an IP address. Is this database server's host name in '/etc/hosts'?</key>
<key name="log_0071">Successfully Connected to the database: [#!variable!name!#] (id: [#!variable!uuid!#]) on host: [#!variable!host!#:#!variable!port!#].</key>
<key name="log_0072"><![CDATA[[ Error ] - The method Database->query() was called without a database ID to query and 'sys::database::read_uuid' doesn't contain a database ID, either. Are any databases available?]]></key>
<key name="log_0073"><![CDATA[[ Error ] - The method Database->query() was asked to query the database with UUID: [#!variable!uuid!#] but there is no file handle open to the database. Was the connection lost?]]></key>
<key name="log_0074">About to run: [#!variable!uuid!#]:[#!variable!query!#]</key>
<key name="log_0075"><![CDATA[[ Error ] - Failed to prepare the database query: [#!variable!query!#] on: [#!variable!server!#]. The error was: [#!variable!db_error!#]. Note that if the query reports '--', the query was listed as containing sensitive data and '$anvil->Log->secure' is not set.]]></key>
<key name="log_0076"><![CDATA[[ Error ] - Failed to execute the database query: [#!variable!query!#] on: [#!variable!server!#]. The error was: [#!variable!db_error!#]. Note that if the query reports '--', the query was listed as containing sensitive data and '$anvil->Log->secure' is not set.]]></key>
<key name="log_0077"><![CDATA[[ Error ] - The method Database->initialize() was called without a database ID to query and 'sys::database::read_uuid' doesn't contain a database ID, either. Are any databases available?]]></key>
<key name="log_0078"><![CDATA[[ Error ] - The method Database->initialize() was asked to query the database with UUID: [#!variable!uuid!#] but there is no file handle open to the database. Was the connection lost?]]></key>
<key name="log_0079"><![CDATA[[ Error ] - The method Database->initialize() was asked to initialize the database: [#!variable!server!#] (id: [#!variable!uuid!#]) but a core SQL file to load wasn't passed, and the 'database::#!variable!uuid!#::core_sql' variable isn't set. Unable to initialize without the core SQL file.]]></key>
<key name="log_0080"><![CDATA[[ Error ] - The method Database->initialize() was asked to initialize the database: [#!variable!server!#] (id: [#!variable!uuid!#]) but the core SQL file: [#!variable!sql_file!#] doesn't exist.]]></key>
<key name="log_0081"><![CDATA[[ Error ] - The method Database->initialize() was asked to initialize the database: [#!variable!server!#] (id: [#!variable!uuid!#]) but the core SQL file: [#!variable!sql_file!#] exist, but can't be read.]]></key>
<key name="log_0082">The database: [#!variable!server!#] needs to be initialized using: [#!variable!sql_file!#].</key>
<key name="log_0083">About to record: [#!variable!uuid!#]:[#!variable!query!#]</key>
<key name="log_0084"><![CDATA[[ Error ] - The method Database->query() was asked to query the database: [#!variable!server!#] but no query was given.]]></key>
<key name="log_0085"><![CDATA[[ Error ] - The method Database->write() was asked to write to the database: [#!variable!server!#] but no query was given.]]></key>
<key name="log_0086"><![CDATA[[ Error ] - The method System->check_memory() was called without a program name to check.]]></key>
<key name="log_0087">Testing access to the the database: [#!variable!server!#] prior to query or write. Program will exit if it fails.</key>
<key name="log_0088">Access confirmed.</key>
<key name="log_0089"><![CDATA[[ Error ] - The method Database->write() was asked to write to the database with UUID: [#!variable!uuid!#] but there is no file handle open to the database. Was the connection lost?]]></key>
<key name="log_0090"><![CDATA[[ Error ] - Failed to 'do' the database query: [#!variable!query!#] on: [#!variable!server!#]. The error was: [#!variable!db_error!#]. Note that if the query reports '--', the query was listed as containing sensitive data and '$anvil->Log->secure' is not set.]]></key>
<key name="log_0091">Failed to connect to any database.</key>
<key name="log_0092"><![CDATA[[ Error ] - Unable to connect to the database: [#!variable!server!#] (id: [#!variable!uuid!#]).]]></key>
<key name="log_0093"><![CDATA[[ Error ] - The method Alert->check_alert_sent() was called but the 'modified_date' parameter was not passed and/or 'sys::database::timestamp' is not set. Did the program fail to connect to any databases?]]></key>
<key name="log_0094">[ Error ] - Failed to start the Postgres server. Please check the system logs for details.</key>
<key name="log_0095">The database user: [#!variable!user!#] was created with UUID: [#!variable!id!#].</key>
<key name="log_0096">[ Error ] - Failed to add the database user: [#!variable!user!#]! Unable to proceed.</key>
<key name="log_0097">[ Error ] - Failed to find any tables in: [#!variable!file!#]. Unable to check/load the agent's schema.</key>
<key name="log_0098">
[ Warning ] - Failed to set an alert because this host is not yet in the database. This can happen if the alert was set before this host was added to the database.
* Details of the alert:
- Type: ......... [#!variable!type!#]
- Clear? ........ [#!variable!clear!#]
- Record Locator: [#!variable!record_locator!#]
- Timestamp: .... [#!variable!modified_date!#]
</key>
<key name="log_0099">[ Error ] - There is no #!string!brand_0002!# database user set for the local machine. Please check: [#!data!path::config::anvil.conf!#]'s DB entry: [#!variable!uuid!#].</key>
<key name="log_0100">Database user: [#!variable!user!#] password has been set/updated.</key>
<key name="log_0101">Failed to connect to: [#!variable!target!#:#!variable!port!#], sleeping for a second and then trying again.</key>
<key name="log_0102">I am not recording the alert with message_key: [#!variable!message_key!#] to the database because its log level was lower than any recipients.</key>
<key name="log_0103">The local machine's UUID was not read properly. It should be stored in: [#!data!sys::host_uuid!#] and contain hexadecimal characters in the format: '012345-6789-abcd-ef01-23456789abcd' and usually matches the output of 'dmidecode --string system-uuid'. If this file exists and if there is a string in the file, please verify that it is structured correctly.</key>
<key name="log_0104">The database with UUID: [#!variable!uuid!#] for: [#!variable!file!#] is behind.</key>
<key name="log_0105">#!string!brand_0002!# database: [#!variable!database!#] already exists.</key>
<key name="log_0106">The table: [#!variable!table!#] (and possibly others) in the database on: [#!variable!host!#] (UUID: [#!variable!uuid!#]) is behind by: [#!variable!seconds!#] seconds. A database resync will be requested.</key>
<key name="log_0107">[ Warning ] - Failed to delete the temporary postgres password.</key>
<key name="log_0108"><![CDATA[[ Error ] - The method Database->insert_or_update_states() was called but the 'state_host_uuid' parameter was not passed or it is empty. Normally this is set to 'sys::data_uuid'.]]></key>
<key name="log_0109">[ Error ] - Failed to create the #!string!brand_0002!# database: [#!variable!database!#]</key>
<key name="log_0110">#!string!brand_0002!# database: [#!variable!database!#] created.</key>
<key name="log_0111">[ Warning ] - Failed to reload the Postgres server. Please check the system logs for details. The updated configuration is probably not active yet.</key>
<key name="log_0112">Reloaded the PostgreSQL database server.</key>
<key name="log_0113"><![CDATA[[ Note ] - The 'Database->configure_pgsql() method was called but the parent program is not running with root priviledges. Returning without doing anything.]]></key>
<key name="log_0114"><![CDATA[The program: [#!data!path::exe::an-report-memory!#] must be called with '--program <name>', but no program name was read in.]]></key>
<key name="log_0115">#!variable!program!# has started.</key>
<key name="log_0116"><![CDATA[The method: [#!variable!method!#] was passed the parameter: [#!variable!parameter!#] with the value: [#!variable!value!#], which is invalid.]]></key>
<key name="log_0117"><![CDATA[The method 'Convert->human_readable_to_bytes()' was passed the byte size: [#!variable!size!#] in the string: [sign: #!variable!sign!#, size: #!variable!size!#, type: #!variable!type!#] contains an illegal value. Sizes can only be integers or real numbers. It may also have commas in it which will be removed automatically.]]></key>
<key name="log_0118"><![CDATA[The method 'Convert->human_readable_to_bytes()' was passed the byte size: [#!variable!size!#] in the string: [sign: #!variable!sign!#, size: #!variable!size!#, type: #!variable!type!#] appears to be a byte size already but the size does not seem to be an integer. Byte sizes can only be signed integers. It may also have commas in it which will be removed automatically.]]></key>
<key name="log_0119"><![CDATA[The method 'Convert->human_readable_to_bytes()' method was called with the value: [#!variable!value!#] which we split into the size: [#!variable!size!#] and type: [#!variable!type!#]. The type appears to be invalid.]]></key>
<key name="log_0120"><![CDATA[The method 'Convert->round()' was passed the number: [#!variable!number!#] which contains an illegal value. Only digits and one decimal place are allowed.]]></key>
<key name="log_0121">Current memory used by: [#!variable!program_name!#] is approximately: [#!variable!bytes!#] bytes (#!variable!hr_size!#).</key>
<key name="log_0122">The 'smaps' proc file for the process ID: [#!variable!pid!#] was not found. Did the program just close?</key>
<key name="log_0123"><![CDATA[[ Error ] - Asked 'pgrep' to return the PIDs (process IDs) of the program: [#!variable!program!#] and a non-digit value was returned in: [#!variable!line!#]. This should not have happened.]]></key>
<key name="log_0124">About to query: [#!variable!query!#]</key>
<key name="log_0125">Entering method: [#!variable!method!#]</key>
<key name="log_0126">Exiting method: [#!variable!method!#]</key>
<key name="log_0127">Firewalld was not running, re-enabling it. If you do not want this behaviour, please set 'sys::daemons::restart_firewalld = 0' in: [#!data!path::configs::anvil.conf!#].</key>
<key name="log_0128">Firewalld was not running, and 'sys::daemons::restart_firewalld = 0' is set. NOT starting it.</key>
<key name="log_0129"><![CDATA[<all>]]></key> <!-- Used when logging DB writes to all DBs -->
<key name="log_0130"><![CDATA[[ Error ] - The method: [#!variable!method!#] was called and the parameter: [#!variable!parameter!#] was passed an invalid UUID: [#!variable!uuid!#].]]></key>
<key name="log_0131">Entering function: [#!variable!function!#]</key>
<key name="log_0132">Connected to: [#!data!sys::database::connections!#] database(s).</key>
<key name="log_0133">Failed to read the system UUID. Received a non-UUID string: [#!variable!uuid!#]. Is the user: [#!variable!user!#] in the 'kmem' group?</key>
<key name="log_0134">The host UUID: [#!variable!uuid!#] does not appear to be a valid UUID. Please check the contents of: [#!data!path::data::host_uuid!#] or the output from: [dmidecode --string system-uuid]. Note that some mainboards will report their UUID as all-0. If this is the case, manually create the 'host.uuid' file with a UUID created by 'uuidgen'.</key>
<key name="log_0135">- #!variable!caller!# runtime was approximately: [#!variable!runtime!#] seconds.</key>
<key name="log_0136"><![CDATA[[ Error ] - The method: [#!variable!method!#] was called with either 'job_uuid': [#!variable!job_uuid!#] not being passed (or was not a valid UUID), or 'job_name': [#!variable!job_name!#] not being passed.]]></key>
<key name="log_0137"><![CDATA[[ Error ] - The method: [#!variable!method!#] was called with an invalid value for: [#!variable!variable_name!#]: -> [#!variable!variable_value!#]. See 'perldoc Anvil::Tools::#!variable!module!#' for valid options.]]></key>
<key name="log_0138"><![CDATA[[ Error ] - The method: [#!variable!method!#] was with an invalid 'job_progress': [#!variable!job_progress!#]. It needs to be a whole-number value between 0 and 100, inclusive.]]></key>
<key name="log_0139"><![CDATA[[ Error ] - Failed to initialized the database! The file: [#!variable!file!#] already exists, which should not be the case when initializing the database.]]></key>
<key name="log_0140"><![CDATA[[ Error ] - Failed to initialized the database! Information on why this failed might be found in: [#!variable!file!#].]]></key>
<key name="log_0141"><![CDATA[[ Error ] - The system call: [#!variable!shell_call!#] will fail because the program: [#!variable!program!#] doesn't exist.]]></key>
<key name="log_0142"><![CDATA[[ Error ] - The system call: [#!variable!shell_call!#] will fail because the program: [#!variable!program!#] isn't executable.]]></key>
<key name="log_0143">Failed to find a local ID, no databases are stored on this machine.</key>
<key name="log_0144">PostgreSQL server is not installed, unable to proceed.</key>
<key name="log_0145"><![CDATA[[ Warning ] - Unable to use the database on the host: [#!variable!host!#]. The local #!string!brand_0002!# version is: [#!variable!local_version!#], and the target host's is: [#!variable!target_version!#]. If you are upgrading, we will resync and use it once the host and our version is again the same.]]></key>
<key name="log_0146">A job to configure the network was found, but it has already been picked up by: [#!variable!pid!#].</key>
<key name="log_0147">A job to configure the network was found, and it was picked up by: [#!variable!pid!#], but that process is not running and it appears to only be: [#!variable!percent!# %] complete. Taking the job.</key>
<key name="log_0148">The network: [#!variable!network!#] has something set for the IP [#!variable!ip!#], but it appears to be invalid. Ignoring this network.</key>
<key name="log_0149">The network: [#!variable!network!#] is not set to be configured. Skipping it.</key>
<key name="log_0150"><![CDATA[The Storage->backup() method was called with the source file: [#!variable!source_file!#], which does not appear to be a full path and file name (should start with '/').]]></key>
<key name="log_0151"><![CDATA[The Storage->backup() method was called with the source file: [#!variable!source_file!#], which does not appear to exist.]]></key>
<key name="log_0152"><![CDATA[The Storage->backup() method was called with the source file: [#!variable!source_file!#], which can not be read (please check permissions and SELinux).]]></key>
<key name="log_0153"><![CDATA[The Storage->backup() method was called with the source file: [#!variable!source_file!#], which isn't actually a file.]]></key>
<key name="log_0154">The file: [#!variable!source_file!#] has been backed up as: [#!variable!target_file!#].</key>
<key name="log_0155">Removing the old network configuration file: [#!variable!file!#] as part of the network reconfiguration.</key>
<key name="log_0156"><![CDATA[[ Error ] - The method: [#!variable!method!#] must be called with root-level priviledges.]]></key>
<key name="log_0157"><![CDATA[[ Error ] - The method Storage->write_file() was asked to write the file: [#!variable!file!#] but it appears to be missing the file name. Aborting.]]></key>
<key name="log_0158">Ensuring we've recorded: [#!variable!target!#]'s RSA fingerprint for the user: [#!variable!user!#].</key>
<key name="log_0159">Adding the target: [#!variable!target!#]:[#!variable!port!#]'s RSA fingerprint to: [#!variable!user!#]'s list of known hosts.</key>
<key name="log_0160"><![CDATA[[ Error ] - The method Storage->read_file() was asked to read the remote file: [#!variable!file!#] but it is not a full path. Aborting.]]></key>
<key name="log_0161"><![CDATA[[ Error ] - The method Storage->read_file() was asked to read the remote file: [#!variable!file!#] but it appears to be missing the file name. Aborting.]]></key>
<key name="log_0162"><![CDATA[[ Error ] - The method Storage->read_file() tried to rsync the remote file: [#!variable!remote_file!#] to the local temporary file: [#!variable!local_file!#], but it did not arrive. There might be more information above.]]></key>
<key name="log_0163">The file: [#!variable!file!#] does not exist.</key>
<key name="log_0164"><![CDATA[[ Warning ] - Storage->read_config()' was called without a file name to read.]]></key>
<key name="log_0165"><![CDATA[The Storage->backup() method was asked to backup the file: [#!variable!source_file!#] on: [#!variable!target!#], but it looks like there was a problem connecting to the target.]]></key>
<key name="log_0166">About to run the shell command: [#!variable!shell_call!#] on: [#!variable!target!#] as: [#!variable!remote_user!#]</key>
<key name="log_0167">Failed to create the directory: [#!variable!directory!#] on: [#!variable!target!#] as: [#!variable!remote_user!#]. The error (if any) was: [#!variable!error!#] and the output (if any) was: [#!variable!output!#].</key>
<key name="log_0168">Failed to create the directory: [#!variable!directory!#]. The error (if any) was: [#!variable!error!#].</key>
<key name="log_0169">Failed to copy the file: [#!variable!source_file!#] to: [#!variable!target_file!#] on the target: [#!variable!target!#] as: [#!variable!remote_user!#]. The error (if any) was: [#!variable!error!#] and the output (if any) was: [#!variable!output!#].</key>
<key name="log_0170"><![CDATA[[ Note ] - The method Storage->#!variable!method!#() was asked to copy: [#!variable!source_file!#] to: [#!variable!target_file!#], but the target's parent directory doesn't exist and we were unable to create it.]]></key>
<key name="log_0171"><![CDATA[[ Error ] - The method: Account->encrypt_password() tried to use the algorithm: [#!variable!algorithm!#], which is not recognized. Only 'sha256', 'sha384' and 'sha512' are currently supported. The desired algorithm can be set via 'sys::password::algorithm'.]]></key>
<key name="log_0172"><![CDATA[[ Error ] - Asked to validate a password for the user: [#!variable!user!#], but that user wasn't found.]]></key>
<key name="log_0173"><![CDATA[[ Error ] - Asked to valudate a password encoded with the algorithm: [#!variable!user_algorithm!#], which is not recognized. Only 'sha256', 'sha384' and 'sha512' are currently supported.]]></key>
<key name="log_0174"><![CDATA[[ Error ] - Asked to update the variable: [#!variable!variable!#] in the configuration file: [#!variable!file!#], but that variable was not found.]]></key>
<key name="log_0175"><![CDATA[[ Error ] - Asked to update the variable: [#!variable!variable!#] in the configuration file: [#!variable!file!#] on the host: [#!variable!target!#], but that variable was not found.]]></key>
<key name="log_0176">The IP hash key: [#!variable!ip_key!#] does not exist, skipping it.</key>
<key name="log_0177">No cookies were read, the use is not logged in.</key>
<key name="log_0178">The user's UUID: [#!variable!uuid!#] was read, but it didn't match any known users.</key>
<key name="log_0179">The user has been logged out.</key>
<key name="log_0180">The user hash in the user's cookie is valid.</key>
<key name="log_0181">The user hash in the user's cookie was valid yesterday, updating the stored hash and allowing the user to proceed.</key>
<key name="log_0182">The user hash in the user's cookie is invalid. It is probably expired.</key>
<key name="log_0183">The user: [#!variable!user!#] logged in successfully.</key>
<key name="log_0184">Theew was a failed login attempt from: [#!variable!user_agent!#], trying to log in as: [#!variable!user!#]. log in rejected.</key>
<key name="log_0185"><![CDATA[<unknown>]]></key> <!-- Used in some cases when a variable isn't known -->
<key name="log_0186"><![CDATA[<suppressed>]]></key> <!-- Used in some cases when a variable isn't known -->
<key name="log_0187">Host UUID cache file: [#!data!path::data::host_uuid!#] doesn't exists and we're not running as root so we can't read dmidecode. Unable to proceed.</key>
<key name="log_0188">Database archive check skipped, not running as root.</key>
<key name="log_0189">Database archiving is disabled, skipping archive checks.</key>
<key name="log_0190">Peer: [#!variable!peer!#], database: [#!variable!name!#], password: [#!variable!password!#], host UUID: [#!variable!uuid!#]</key>
<key name="log_0191">Connection only to: [#!variable!db_uuid!#], skipping: [#!variable!uuid!#].</key>
<key name="log_0192">The connection to the database: [#!variable!server!#] has failed. Will attempt to reconnect.</key>
<key name="log_0193">Switching the default database handle to use the database: [#!variable!server!#] prior to reconnect attempt.</key>
<key name="log_0194">Switching the default database to read from to the database: [#!variable!server!#] prior to reconnect attempt.</key>
<key name="log_0195">Ready to try to reconnect to: [#!variable!server!#], but delaying for: [#!variable!delay!#] seconds to give the database a chance to come back online in case this is a transient issue.</key>
<key name="log_0196">Failed to reconnect to the database, and now no connections remail. Exiting.</key>
<key name="log_0197"><![CDATA[System->maintenance_mode() was passed an invalid 'set' value: [#!variable!set!#]. No action taken.]]></key>
<key name="log_0198">The user: [#!variable!user!#] logged out successfully.</key>
<key name="log_0199">A system reboot is required, setting the database flag.</key>
<key name="log_0200">A system reboot is required, setting the database flag.</key>
<key name="log_0201">Unable to connect to any database. Will try to initialize the local system and then try again.</key>
<key name="log_0202">Failed to connect to any databases. Skipping the loop of the daemon.</key>
<key name="log_0203">Disconnected from all databases. Will reconnect when entering the main loop.</key>
<key name="log_0204">Starting the background process: [#!variable!call!#] now.</key>
<key name="log_0205">Background process: [#!variable!call!#] running with PID: [#!variable!pid!#].</key>
<key name="log_0206"><![CDATA[In Words->parse_banged_string(), while processing: [#!variable!message!#], a variable name was found to be missing.]]></key>
<key name="log_0207"><![CDATA[Job->update_progress() called without 'job_uuid' being set, and 'jobs::job_uuid' was also not set. Unable to find the job to update.]]></key>
<key name="log_0208"><![CDATA[Job->update_progress() called with the 'job_uuid': [#!variable!job_uuid!#], which was not found. Unable to find the job to update.]]></key>
<key name="log_0209"><![CDATA[Job->update_progress() called with 'progress' set to an invalid value: [#!variable!progress!#]. This must be a whole number between '0' and '100' (fractions not allowed).]]></key>
<key name="log_0210"><![CDATA[Will now run the job: [#!variable!command!#] as a background task.]]></key>
<key name="log_0211"><![CDATA[The host: [#!variable!host!#] was passed to System->find_matching_ip(), but it failed to resolve to an IP address.]]></key>
<key name="log_0212">We've been asked to have the new peer add us. We will now wait for the peer to show up in the 'hosts' table and then request the job for it to add us.</key>
<key name="log_0213">The peer: [#!variable!peer_uuid!#] is not yet in 'hosts', continuing to wait.</key>
<key name="log_0214">The peer: [#!variable!peer_name!#] is now in 'hosts', proceeding.</key>
<key name="log_0215">Logging the user: [#!data!sys::users::user_name!#] out.</key>
<key name="log_0216">The #!variable!uuid_name!#: [#!variable!uuid!#] was passed in, but no record with that UUID was found in the database.</key>
<key name="log_0217">The variable with variable_uuid: [#!variable!variable_uuid!#], variable_source_table: [#!variable!variable_source_table!#] and variable_source_uuid: [#!variable!variable_source_uuid!#] was not found in the database, so unable to update.</key>
<key name="log_0218">The variable: [#!variable!name!#] was expected to be an array reference, but it wasn't. It contained (if anything): [#!variable!value!#].</key>
<key name="log_0219">The table: [#!variable!table!#] (and possibly others) in the database on: [#!variable!host!#] (UUID: [#!variable!uuid!#]) is missing: [#!variable!missing!#] row(s). A database resync will be requested.</key>
<key name="log_0220"><![CDATA[Database->insert_or_update_jobs() was called with 'update_progress_only' but without a 'job_uuid' being set.]]></key>
<key name="log_0221">Writing: [#!variable!to_write!#] record(s) to resync the table: [#!variable!table!#] in database on: [#!variable!host_name!#].</key>
<key name="log_0222">The connection to the database on: [#!variable!host!#] isn't established, trying again...</key>
<key name="log_0223">The connection to the database on: [#!variable!host!#] has been successfully established.</key>
<key name="log_0224">The system has only been running for: [#!variable!uptime!#] seconds. To minimize the impact of a bug causing a rapid reboot cycle, the request to: [#!variable!task!#] will be paused until the system has been running for at least ten minutes. We will proceed in: [#!variable!difference!#] seconds (at #!variable!say_time!#).</key>
<key name="log_0225">power off</key>
<key name="log_0226">reboot</key>
<key name="log_0227">Delay complete, proceeding with the #!variable!task!# operation now.</key>
<key name="log_0228">Failed to read the file: [#!variable!file!#]. It might not exist, so we will try to write it now.</key>
<key name="log_0229">The body of the file: [#!variable!file!#] does not match the new body. The file will be updated.</key>
<key name="log_0230">
The body of the file: [#!variable!file!#] does not match the new body. The file will be updated. The changes are:
==========
#!variable!diff!#
==========
</key>
<key name="log_0231">The file: [#!variable!file!#] is already the same as the passed in body, so no update is needed.</key>
<key name="log_0232">The file: [#!variable!file!#] will now be updated.</key>
<key name="log_0233">There was a problem updating file: [#!variable!file!#], expected the write to return '0' but got: [#!variable!return!#]. Please check the logs for details.</key>
<key name="log_0234">Failed to backup the file: [#!variable!source!#] to: [#!variable!destination!#]. Details may be found in the logs above.</key>
<key name="log_0235">Refreshing RPM repository has been disabled in [#!data!path::configs::anvil.conf!#] ('install-manifest::refresh-packages' is set). Not refreshing.</key>
<key name="log_0236">Skipping the RPM repository refresh. The next scheduled refresh will be done in: [#!variable!next_refresh!#] second(s). Override with '--force'.</key>
<key name="log_0237">RPM repository refresh required, [#!data!path::directories::packages!#] doesn't exist (likely this is the first run or the directory was deleted).</key>
<key name="log_0238">RPM repository refresh required, it has been more than: [#!variable!seconds!#] seconds since the last refresh (or no previous refresh was logged).</key>
<key name="log_0239">'Install Target' job: [#!variable!job-uuid!#] picked up.</key>
<key name="log_0240">'Install Target' job: [#!variable!job-uuid!#] aborted, system not yet configured.</key>
<key name="log_0241">Package list loaded.</key>
<key name="log_0242">It looks like a user tried to upload a file without actually doing so.</key>
<key name="log_0243">[ Error ] - Failed to delete the file: [#!variable!file!#].</key>
<key name="log_0244">[ Warning ] - None of the databases are accessible. ScanCore will try to connect once a minute until a database is accessible.</key>
<key name="log_0245">[ Cleared ] - We now have databases accessible, proceeding.</key>
<key name="log_0246">[ Warning ] - The local system is not yet configured. Scancore will check once a minute and start running once configured.</key>
<key name="log_0247">[ Cleared ] - The local system is now configured, proceeding.</key>
<key name="log_0248">ScanCore is entering the main loop now.</key>
<key name="log_0249">----=] ScanCore loop finished after: [#!variable!runtime!#]. Sleeping for: [#!variable!run_interval!#] seconds. ]=--------------------------------------</key> <!-- This is meant to be easily seen in the logs, hence the dashes. -->
<key name="log_0250">
The md5sum of: [#!variable!file!#] has changed since the daemon started.
* [#!variable!old_sum!#] -> [#!variable!new_sum!#]
</key>
<key name="log_0251">Reading the scan agent: [#!variable!agent_name!#]'s words file: [#!variable!file!#].</key>
<key name="log_0252">Running the scan agent: [#!variable!agent_name!#] with a timeout of: [#!variable!timeout!#] seconds now...</key>
<key name="log_0253">The database user is not 'admin'. Changing table and function ownerships to: [#!variable!database_user!#].</key>
<key name="log_0254">[ Warning ] - The Storage->make_directory() method failed to create the directory: [#!variable!directory!#].</key>
<key name="log_0255">[ Note ] - Created the directory: [#!variable!directory!#].</key>
<key name="log_0256">[ Note ] - Downloaded: [#!variable!file!#] (#!variable!human_readable_size!# / #!variable!size_in_bytes!# bytes).</key>
<key name="log_0257">[ Warning ] - It appears that we failed to downloaded and save: [#!variable!file!#].</key>
<key name="log_0258">[ Warning ] - It appears that we failed to downloaded and save: [#!variable!file!#]. The output file has no size, and will be removed.</key>
<key name="log_0259">Starting download of file: [#!variable!file!#].</key>
<key name="log_0260">
Finished Downloading: [#!variable!file!#].
- md5sum: ...... [#!variable!md5sum!#].
- Size: ........ [#!variable!size_human!# (#!variable!size_bytes!# bytes)].
- Took: ........ [#!variable!took!#] seconds.
- Download rate: [#!variable!rate!#]
</key>
<key name="log_0261">#!variable!file!# was called, but no files where available for download in CGI. Was the variable name 'upload_file' used?</key>
<key name="log_0262">[ Error ] - Storage->scan_directory() was asked to scan: [#!variable!directory!#], but it doesn't exist or isn't actually a directory.</key>
<key name="log_0263">Now deleting the file: [#!variable!file!#].</key>
<key name="log_0264">Checking: [#!data!path::directories::shared::incoming!#] for new files.</key>
<key name="log_0265">About to calculate the md5sum for the file: [#!variable!file!#].</key>
<key name="log_0266">This file is large, [#!variable!size!#], this might take a bit of time...</key>
<key name="log_0267">Failed to move the file: [#!variable!source_file!#] to: [#!variable!target_file!#] on the target: [#!variable!target!#] as: [#!variable!remote_user!#]. The error (if any) was: [#!variable!error!#] and the output (if any) was: [#!variable!output!#].</key>
<key name="log_0268">The file: [#!variable!file!#] has been added to the database (if needed) moved to: [#!variable!target!#].</key>
<key name="log_0269">The file: [#!variable!file!#] should exist, but doesn't. We will try to find it now.</key>
<key name="log_0270">The user: [#!variable!user!#] doesn't appear to have an SSH key yet. Will create it now. This could take some time, depending on how long it takes to collect entropy. If this appears to not be responding, move the mouse or do other things to generate activity on the host.</key>
<key name="log_0271">
The user: [#!variable!user!#]'s SSH key yet has been generated. The output is below;
====
#!variable!output!#
====
</key>
<key name="log_0272">The user: [#!variable!user!#] doesn't appear to have a base SSH directory. Will now create: [#!variable!directory!#].</key>
<key name="log_0273">The user: [#!variable!user!#]'s: [#!variable!file!#] file needs to be updated.</key>
<key name="log_0274">
The fingerprint of: [#!variable!machine!#] has changed! Updating it's entry in known hosts.
- From: [#!variable!old_key!#]
- To: . [#!variable!new_key!#]
</key>
<key name="log_0275">Gathering data for: [#!variable!file!#]:</key>
<key name="log_0276">Found the missing file: [#!variable!file!#] on: [#!variable!host_name!# (#!variable!ip!#]). Downloading it now...</key>
<key name="log_0277">Downloaded the file: [#!variable!file!#]. Generating md5sum from local copy now...</key>
<key name="log_0278">The md5sum of file: [#!variable!file!#] matches what we expected!</key>
<key name="log_0279">The md5sum of file: [#!variable!file!#] failed to match. Discarding the downloaded file.</key>
<key name="log_0280">Failed to download: [#!variable!file!#] from: [#!variable!host_name!# (#!variable!ip!#). Will look on other hosts (if any left).</key>
<key name="log_0281">The file: [#!variable!file!#] on: [#!variable!host_name!# (#!variable!ip!#]) doesn't match the file we're looking for.
- Wanted; md5sum: [#!variable!file_md5sum!#], size: [#!variable!say_file_size!# (#!variable!file_size!# bytes)]
- Found; md5sum: [#!variable!remote_md5sum!#], size: [#!variable!say_remote_size!# (#!variable!remote_size!# bytes)]
We will keep looking.</key>
<key name="log_0282">Already searched: [#!variable!host_name!# using another IP address, skipping this IP: [#!variable!ip!#].</key>
<key name="log_0283">Done.</key>
<key name="log_0284">[ Error ] - Failed to remove the file: [#!variable!file!#]! Please check the permissions or for SELinux denials.</key>
<key name="log_0285">As requested by another machine, we will now delete the file: [#!variable!file!#].</key>
<key name="log_0286">[ Error ] - The URL: [#!variable!url!#] to download appears to be invalid.</key>
<key name="log_0287">[ Error ] - The requested URL: [#!variable!url!#] was not found on the remote server.</key>
<key name="log_0288">[ Error ] - The requested URL: [#!variable!url!#] does not resolve to a known domain.</key>
<key name="log_0289">[ Error ] - The requested URL: [#!variable!url!#] failed because the remote host refused the connection.</key>
<key name="log_0290">[ Error ] - The requested URL: [#!variable!url!#] failed because there is no route to that host.</key>
<key name="log_0292">[ Error ] - The requested URL: [#!variable!url!#] failed because the network is unreachable.</key>
<key name="log_0293">[ Error ] - The requested URL: [#!variable!url!#] failed for an unknown reason.</key>
<key name="log_0294"><![CDATA[[ Error ] - The method Convert->time() was passed the 'time' of: [#!variable!time!#] which does not appear to be a whole number.]]></key>
<key name="log_0295"><![CDATA[[ Error ] - The method Remote->call() was passed the 'timeout' of: [#!variable!timeout!#] which does not appear to be a whole number.]]></key>
<key name="log_0296">We have a connection open already to: [#!variable!connection!#], skipping connect stage.</key>
<key name="log_0297">The file: [#!variable!file!#] has beed successfully downloaded.</key>
<key name="log_0298">ocf:alteeve:server invoked</key>
<key name="log_0299">We were asked to promote: [#!variable!server!#], which makes no sense and is not supported. Ignoreing.</key>
<key name="log_0300">We were asked to demote: [#!variable!server!#], which makes no sense and is not supported. Ignoreing.</key>
<key name="log_0301">We were asked to notify, but this is not a promotable (we're stateless) agent. Ignoring.</key>
<key name="log_0302">We were invoked with an unexpected (or no) command. Environment variables and arguments have been logged.</key>
<key name="log_0303">We've been asked to start the server: [#!variable!server!#].</key>
<key name="log_0304">It appears that the list the currently running servers returned a non-zero return code: [#!variable!return_code!#]. We will proceed as we may be able to fix this. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0305">Sanity checks passed, ready to start: [#!variable!server!#].</key>
<key name="log_0306">The server: [#!variable!server!#] is already on this node in the state: [#!variable!state!#], aborting the start request.</key>
<key name="log_0307">All tests passed, yet the attempt to boot the server: [#!variable!server!#] exited with a non-zero return code: [#!variable!return_code!#]. The server is in an unknown state, so exiting with a fatal error. Human intervention is now required. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0308">It appears that the call to boot the server: [#!variable!server!#] worked, but the call to list running servers exited with a non-zero return code: [#!variable!return_code!#]. The server is in an unknown state, so exiting with a fatal error. Human intervention is now required. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0309">The server: [#!variable!server!#] has started successfully.</key>
<key name="log_0310">The server: [#!variable!server!#] should have been started, but it's state is: [#!variable!state!#]. Human intervention is required!</key>
<key name="log_0311">The server: [#!variable!server!#] should have been started, but it wasn't found in the list of running servers.</key>
<key name="log_0312">The attempt to list the running servers returned a non-zero return code: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0313">The server: [#!variable!server!#] has been asked to shut down. If it is actually running, we will ask it to shut down now.</key>
<key name="log_0314">The server: [#!variable!server!#] is paused. Resuming it now so that it can react to the shutdown request.</key>
<key name="log_0315">The attempt to resume the server: [#!variable!server!#] returned a non-zero return code: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0316">Pausing for a moment to give the server time to resume.</key>
<key name="log_0317">The server: [#!variable!server!#] is asleep. Waking it now so that it can react to the shutdown request.</key>
<key name="log_0318">The attempt to wake the server: [#!variable!server!#] returned a non-zero return code: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0319">Pausing for half a minute to give the server time to wake up.</key>
<key name="log_0320">The server: [#!variable!server!#] is already shutting down. We'll monitor it until it actually shuts off.</key>
<key name="log_0321">The server: [#!variable!server!#] is already off.</key>
<key name="log_0322">The server: [#!variable!server!#] is hung. Its state is: [#!variable!state!#]. We will force it off now.</key>
<key name="log_0323">The attempt to force-off the server: [#!variable!server!#] returned a non-zero return code: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0324">The server: [#!variable!server!#] is not running on this machine.</key>
<key name="log_0325">The server: [#!variable!server!#] is running, but it is in an unexpected state: [#!variable!state!#]. Human intervention is required!</key>
<key name="log_0326">The server: [#!variable!server!#] was not listed on this node, so it is not running here.</key>
<key name="log_0327">Asking the server: [#!variable!server!#] to shut down now. Please be patient.</key>
<key name="log_0328">The attempt to shut down the server: [#!variable!server!#] returned a non-zero return code: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0329">The server: [#!variable!server!#] is no longer listed. It is now off.</key>
<key name="log_0330">The server: [#!variable!server!#] is not off yet, waiting a few seconds and then we'll check again.</key>
<key name="log_0331">The environment variable 'OCF_RESKEY_CRM_meta_timeout' was not set, so setting it to: [#!variable!timeout!#].</key>
<key name="log_0332">The 'virsh' call exited with the return code: [#!variable!return_code!#]. The 'libvirtd' may have failed to start. We won't wait any longer.</key>
<key name="log_0333">The 'virsh' call exited with the return code: [#!variable!return_code!#]. The 'libvirtd' service might be starting, so we will check again shortly.</key>
<key name="log_0334">It would appear that libvirtd is not operating (or not operating correctly). Expected the return code '0' but got: [#!variable!return_code!#].</key>
<key name="log_0335">
Output of: [#!variable!command!#] was;
==========
#!variable!output!#
==========
</key>
<key name="log_0336">The server: [#!variable!server!#] is: [#!variable!state!#], which is OK.</key>
<key name="log_0337">The server: [#!variable!server!#] is: [#!variable!state!#].</key>
<key name="log_0338">The server: [#!variable!server!#] is in a bad state: [#!variable!state!#]!</key>
<key name="log_0339">The server: [#!variable!server!#] is in an unexpected state: [#!variable!state!#]!</key>
<key name="log_0340">The server: [#!variable!server!#] is not running on this node.</key>
<key name="log_0341">We're pushing the: [#!variable!server!#] to: [#!variable!target!#].</key>
<key name="log_0342">It appears that the call to check if the server: [#!variable!server!#] is on this node returned a non-zero return code: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0343">The server: [#!variable!server!#] state is: [#!variable!state!#]. A server must be 'running' in order to migrate it.</key>
<key name="log_0344">The server: [#!variable!server!#] wasn't found on this machine.</key>
<key name="log_0345">Verifying that the server: [#!variable!server!#] was successfully migrated here.</key>
<key name="log_0346">While verifying that the server: [#!variable!server!#] migrated here, the attempt to list servers running here returned a non-zero return code: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0347">The migration of the server: [#!variable!server!#] to here was successful!</key>
<key name="log_0348">It looks like we were called to verify that the: [#!variable!server!#] migrated here, but it isn't here yet. We'll proceed with an attempt to pull the server over.</key>
<key name="log_0349">We're pulling the: [#!variable!server!#] from: [#!variable!target!#].</key>
<key name="log_0350">Temporarily enabling dual primary for the resource: [#!variable!resource!#] to the node: [#!variable!target_name!# (#!variable!target_node_id!#)].</key>
<key name="log_0351">The attempt to enable dual-primary for the resource: [#!variable!resource!#] to the node: [#!variable!target_name!# (#!variable!target_node_id!#)] returned a non-zero return code [#!variable!return_code!#]. The returned output (if any) was: [#!variable!output!#].</key>
<key name="log_0352">The migration of: [#!variable!server!#] to the node: [#!variable!target!#] will now begin.</key>
<key name="log_0353">The attempt to migrate the server: [#!variable!server!#] to the node: [#!variable!target!#] returned a non-zero return code [#!variable!return_code!#]. The returned output (if any) was: [#!variable!output!#].</key>
The core logic is done!!!! Still need to finish end-points for the WebUI to hook into, but the core of M3 is complete! Many, many bugs are expected, of course. :) * Created DRBD->check_if_syncsource() and ->check_if_synctarget() that return '1' if the target host is currently SyncSource or SyncTarget for any resource, respectively. * Updated DRBD->update_global_common() to return the unified-format diff if any changes were made to global-common.conf. * Created ScanCore->check_health() that returns the health score for a host. Created ->count_servers() that returns the number of servers on a host, how much RAM is used by those servers and, if available, the estimated migration time of the servers. Updated ->check_temperature() to set/clear/return the time that a host has been in a warning or critical temperature state. * Finished ScanCore->post_scan_analysis_node()!!! It certainly has bugs, and much testing is needed, but the logic is all in place! Oh what a slog that was... It should be far more intelligent than M2 though, once flushed out and tested. * Created Server->active_migrations() that returns '1' if any servers are in a migration on an Anvil! system. Updated ->migrate_virsh() to record how long a migration took in the "server::migration_duration" variable, which is averaged by ScanCore->count_servers() to estimate migration times. * Updated scan-drbd to check/update the global-common.conf file's config at the end of a scan. * Updated ScanCore itself to not scan when in maintenance mode. Also updated it to call 'anvil-safe-start' when ScanCore starts, so long as it is within ten minutes of the host booting. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="log_0354">The migration was successfully completed in: [#!variable!migration_time!#].</key>
<key name="log_0355">Re-disabling dual primary by restoring config file settings.</key>
<key name="log_0356">The attempt to reset DRBD to config file settings returned a non-zero return code: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0357">Failure, exiting with '1'.</key>
<key name="log_0358">It appears that the call to list the running servers on the migration target: [#!variable!target!#] returned a non-zero return code: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="log_0359">The migration of the server: [#!variable!server!#] to: [#!variable!target!#] was a success!</key>
<key name="log_0360">Success, exiting with '0'.</key>
<key name="log_0361">Running validation tests...</key>
<key name="log_0362">- Server definition was read.</key>
<key name="log_0363">- Server name is valid.</key>
<key name="log_0364">- Eumlator is valid.</key>
<key name="log_0365">- Sufficient RAM is available.</key>
<key name="log_0366">- Network bridge(s) are available.</key>
<key name="log_0367">- Storage is valid and ready.</key>
<key name="log_0368">The bridge: [#!variable!bridge!#] is available for this server.</key>
<key name="log_0369">The server wants to connect to the bridge: [#!variable!bridge!#] which we do not have on this node.</key>
<key name="log_0370">The attempt to read the DRBD configuration returned a non-zero code: [#!variable!return_code!#]. The returned output (if any) was: [#!variable!drbd_body!#].</key>
<key name="log_0371">Recording the local connection details for the resource: [#!variable!resource!#] -> [#!variable!address!#:#!variable!port!#].</key>
<key name="log_0372">Recording the peer's connection details for the resource: [#!variable!resource!#] -> [#!variable!address!#:#!variable!port!#].</key>
<key name="log_0373">Checking that the DRBD device: [#!variable!device_path!#] is ready.</key>
<key name="log_0374">The server wants to use: [#!variable!drbd_device!#] as a hard drive, but we couldn't find the backing logical volume: [#!variable!lv_path!#] on this node.</key>
<key name="log_0375">The server wants to use: [#!variable!drbd_device!#] as a hard drive, but the backing logical volume: [#!variable!lv_path!#] is inactive and an attempt to activate it failed.</key>
<key name="log_0376">The server wants to use: [#!variable!drbd_device!#] as a hard drive, which is backed by the logical volume: [#!variable!lv_path!#]. It is ready to use.</key>
<key name="log_0377">The attempt to read the DRBD status returned a non-zero code: [#!variable!return_code!#]. The returned output (if any) was: [#!variable!status_json!#].</key>
<key name="log_0378">The DRBD resource for this server is not running yet.</key>
<key name="log_0379">Bringing up the resource: [#!variable!resource!#] for the server's: [#!variable!device_path!#] disk.</key>
<key name="log_0380">The attempt to start the DRBD resource: [#!variable!resource!#] returned a non-zero code: [#!variable!return_code!#]. The returned output (if any) was: [#!variable!output!#].</key>
<key name="log_0381">Pausing briefly to give the resources time to start.</key>
<key name="log_0382">The attempt to read the DRBD status after bringing up the resource(s) for this server returned a non-zero code: [#!variable!return_code!#]. The returned output (if any) was: [#!variable!status_json!#].</key>
<key name="log_0383">The attempt to read the DRBD status after bringing up the resource(s) appears to have failed.</key>
<key name="log_0384">The DRBD resource: [#!variable!resource!#] backing the device: [#!variable!device_path!#] was not seen in the 'drbdsetup' status data. Attempting to bringing it up now.</key>
<key name="log_0385">Checking the DRBD status again.</key>
<key name="log_0386">The DRBD resource: [#!variable!resource!#] backing the device: [#!variable!device_path!#] was not able to start.</key>
<key name="log_0387">Checking that the peer's DRBD resources are Connected and UpToDate prior to migration.</key>
<key name="log_0388">The local replicated disk: [#!variable!device_path!#] is used by this server. Checking it out now.</key>
<key name="log_0389">The DRBD resource: [#!variable!resource!#] volume: [#!variable!volume!#] local disk state is: [#!variable!disk_state!#]. Unsafe to run the server unless the local disk state is UpToDate.</key>
<key name="log_0390">The DRBD resource: [#!variable!resource!#] volume: [#!variable!volume!#] local disk state is: [#!variable!disk_state!#], good.</key>
<key name="log_0391">Checking connection to: [#!variable!name!#].</key>
<key name="log_0392">The DRBD resource: [#!variable!resource!#] on the peer: [#!variable!name!#] is 'Primary'. Refusing to boot.</key>
<key name="log_0393">peer_short_name: [#!variable!peer_short_name!#], migration_target: [#!variable!migration_target!#].</key>
<key name="log_0394">Ignoring the connection to: [#!variable!peer_short_name!#], it isn't the migration target.</key>
<key name="log_0395">The DRBD resource: [#!variable!resource!#] on the peer: [#!variable!name!#] is not UpToDate (or SyncSource). Refusing to migrate.</key>
<key name="log_0396">Ignoring the local replicated disk: [#!variable!device_path!#], it is not used by this server.</key>
<key name="log_0397">Checking that the optical disc image: [#!variable!file!#] exists.</key>
<key name="log_0398">The server has the ISO: [#!variable!file!#] mounted in its optical drive, but that file doesn't exist on this system.</key>
<key name="log_0399">The server has the ISO: [#!variable!file!#] mounted in its optical drive, which we have, but we can't read it. Check permissions and for SELinux denials.</key>
<key name="log_0400">The server has the ISO: [#!variable!file!#] mounted in its optical drive, which we have.</key>
<key name="log_0401">The server wants to use the emulator: [#!variable!emulator!#] which doesn't exist on this node. Was this server migrated from a different generation #!string!brand_0002!# system? Please update '<emulator>...</emulator>' in the server's definition file: [#!variable!definition_file!#].</key>
<key name="log_0402">The server wants to use the emulator: [#!variable!emulator!#] which exists, but we can't run. Please check permissions and for SELinux denials.</key>
<key name="log_0403">The configured server name: [#!variable!server!#] does not match the name of the server in the definition file: [#!variable!name!#]!</key>
<key name="log_0404">The configured server name: [#!variable!name!#] needs: [#!variable!ram!# (#!variable!ram_bytes!# bytes)] of RAM, but only: #!variable!available_ram!# (#!variable!available_ram_bytes!# bytes)] are available!</key>
<key name="log_0405">The definition file: [#!variable!definition_file!#] for the server: [#!variable!server!#] does not exist here!</key>
<key name="log_0406">The definition file: [#!variable!definition_file!#] for the server: [#!variable!server!#] can not be read!</key>
<key name="log_0407">The server's disk: [#!variable!device_path!#] is part of the resource: [#!variable!resource!#] which was already started.</key>
<key name="log_0408">The server: [#!variable!server!#] no longer needs the DRBD resource: [#!variable!resource!#]. Taking it down on peer: [#!variable!peer!#] (via IP: #!variable!peer_ip!#) and then taking it down locally.</key>
<key name="log_0409">The server's disk: [#!variable!device_path!#] is part of the resource: [#!variable!resource!#] which was already taken down.</key>
<key name="log_0410">The DRBD resource: [#!variable!resource!#] local role is: [#!variable!role!#]. Promoting to primary now.</key>
<key name="log_0411">
Failed to promote the DRBD resource: [#!variable!resource!#] primary. Expected a zero return code but got: [#!variable!return_code!#]. The output, if any, is below:
====
#!variable!output!#
====
</key>
<key name="log_0412">The server: [#!variable!server!#] is already on this node in the state: [#!variable!state!#], aborting the migration request.</key>
<key name="log_0413">The logical volume: [#!variable!lv_path!#] is inactive. Attempting to activate it now.</key>
<key name="log_0414">The DRBD device: [#!variable!drbd_device!#] wasn't found in any DRBD resources on this machine.</key>
<key name="log_0415">- Seeing if the server: [#!variable!server!#] is running already.</key>
<key name="log_0416">The server: [#!variable!server!#] is already running. Exiting successfully.</key>
<key name="log_0417">The server: [#!variable!server!#] is already running on: [#!variable!host!#]. This appears to be a DR host, which is outside pacemaker. Exiting with OCF_ERR_CONFIGURED (6) to prevent pacemaker from trying to start the server on the other node.</key>
<key name="log_0418">The server: [#!variable!server!#] is already running on: [#!variable!host!#]. This appears to be our peer. Exiting with OCF_ERR_INSTALLED (5) to tell pacemaker to try to start it on the other node.</key>
<key name="log_0419">The server: [#!variable!server!#] needs the DRBD resource: [#!variable!resource!#]. Bringing it up locally and on the peer: [#!variable!peer!#] (via IP: #!variable!peer_ip!#).</key>
<key name="log_0420">DRBD's 'auto-promote' is disabled. Promoting the resource: [#!variable!resource!#].</key>
<key name="log_0421">The server: [#!variable!server!#] is now running on the host: [#!variable!host!#].</key>
<key name="log_0422">The request to shutdown the server: [#!variable!server!#] was given the wait period of: [#!variable!wait!#], which is not a valid number of seconds.</key>
<key name="log_0423">The server: [#!variable!server!#] is already off.</key>
<key name="log_0424">The server: [#!variable!server!#] will now be forced off!</key>
<key name="log_0425">The server: [#!variable!server!#] will now be gracefully shut down.</key>
<key name="log_0426">The server: [#!variable!server!#] is now off.</key>
<key name="log_0427">[ Warning ] - The server: [#!variable!server!#] is not yet off after: [#!variable!wait!#] seconds. Giving up waiting.</key>
<key name="log_0428">[ Error ] - The server: [#!variable!server!#] can't by migrated to: [#!variable!target!#] because the resource: [#!variable!resource!#] isn't connected. The current connection state is: [#!variable!connection_state!#].</key>
<key name="log_0429">[ Error ] - The server: [#!variable!server!#] can't by migrated to: [#!variable!target!#] because we can't reach it at all right now.</key>
<key name="log_0430">The migration of the server: [#!variable!server!#] over to: [#!variable!target!#] isn't needed, it's already running on the target. Exiting successfully.</key>
<key name="log_0431">All DRBD resources appear to be up, skipping individual DRBD resource startup.</key>
<key name="log_0432"><![CDATA[Database->archive_database() was not passed an array reference of tables to archive. Please pass an array reference using the 'tables' parameter.]]></key>
<key name="log_0433">The 'smaps' proc file for the process ID: [#!variable!pid!#] was not found. Did the program just close?</key>
<key name="log_0434">- The DRBD resource: [#!variable!resource!#] is in the role: [#!variable!role!#] already, no need to bring it up.</key>
<key name="log_0435">Program: [#!variable!program!#] running as the real user: [#!variable!real_user!# (#!variable!real_uid!#)] and effective user: [#!variable!effective_user!# (#!variable!effective_uid!#)].</key>
<key name="log_0436">The setuid c-wrapper: [#!variable!wrapper!#] already exists, no need to create it.</key>
<key name="log_0437">The anvil version cache file: [#!variable!file!#] for: [#!variable!target!#] needs to be created/updated.</key>
<key name="log_0438"><![CDATA[[ Error ] - No job was found for the 'job_uuid': [#!variable!job_uuid!#].]]></key>
<key name="log_0439">No databases available yet, continuing to wait.</key>
<key name="log_0440">The variable: [#!variable!name!#] is an array reference, but it doesn't have any entries in it.</key>
<key name="log_0441">The variable: [#!variable!name!#] was expected to be a positive integer, but: [#!variable!value!#] was received.</key>
<key name="log_0442">The domain: [#!variable!name!#] does not appear to be a valid domain name or an ipv4 IP address. Skipping it.</key>
<key name="log_0443">The bridge output wasn't in JSON format. Received: [#!variable!output!#].</key>
<key name="log_0444">
[ Warning ] - Parsed the IP: [#!variable!ip!#] and MAC: [#!variable!mac!#], but something seems wrong. The section in question was:
====
#!variable!section!#
====
</key>
<key name="log_0445"><![CDATA[[ Note ] - We're about to do a ping scan of: [#!variable!range!#]. This could take a long time, please be patient! If you think this process is hung, please run 'pgrep nmap' on the host. If a process is returned, this is still running. We go slow to avoid upsetting network security devices or admin.]]></key>
<key name="log_0446">Found the network device: [#!variable!mac!#] (owned by #!variable!company!#) using the IP address: [#!variable!ip!#].</key>
<key name="log_0447">About to download: [#!variable!url!#] and save it to: [#!variable!file!#].</key>
<key name="log_0448">Ready to parse: [#!variable!file!#].</key>
<key name="log_0449">Parsed: [#!variable!records!#], adding/updating them to the database now.</key>
<key name="log_0450">Skipping the network scan. The next scheduled scan will be done in: [#!variable!next_scan!#]. Override with '--force'.</key>
<key name="log_0451">Checking to see if any data needs to be archived.</key>
<key name="log_0452">Skipping archiving, not a Striker dashboard.</key>
<key name="log_0453">Archiving: [#!variable!records!#] over: [#!variable!loops!#] segments from the table: [#!variable!table!#] from the database on: [#!variable!host!#]. This might take a bit, please be patient.</key>
<key name="log_0454">Writing: [#!variable!records!#] to the file: [#!variable!file!#].</key>
<key name="log_0455">The file to be compressed: [#!variable!file!#] has a current size of: [#!variable!size!#]. Please be patient, this can take a bit of time.</key>
<key name="log_0456">The compressed file is: [#!variable!file!#] is: [#!variable!size!#], a reduction of: [#!variable!difference!#]. The compression took: [#!variable!took!#].</key>
<key name="log_0457">Removing archived records.</key>
<key name="log_0458">Vacuuming the database to purge the removed records.</key>
<key name="log_0459">Skipping the table: [#!variable!table!#], it is excluded from archiving.</key>
<key name="log_0460">Queing up to run: [#!variable!uuid!#]:[#!variable!query!#]</key>
<key name="log_0461">About to delete the network interface: [#!variable!interface!#]</key>
<key name="log_0462">About to take the network interface: [#!variable!interface!#] down</key>
<key name="log_0463">Requesting network manager reload config files.</key>
<key name="log_0464">About to bring up the network interface: [#!variable!interface!#]</key>
<key name="log_0465">About to rename the network interface: [#!variable!old_interface!#] to: [#!variable!new_interface!#]</key>
<key name="log_0466">Disconnected from all databases and closing all open SSH sessions. Will reconnect after the network configuration changes have taken effect.</key>
<key name="log_0467">Network reconfiguration is complete!</key>
<key name="log_0468">Skipping the OUI parse. The next scheduled parse will be done in: [#!variable!next_parse!#]. Override with '--force'.</key>
<key name="log_0469">The rpm: [#!variable!rpm_path!#] appears to be a problem, removing it.</key>
<key name="log_0470">The network mapping flag has aged out, clearing it.</key>
<key name="log_0471">The network mapping flag is set. If it isn't cleared by the user, it will expire in: [#!variable!timeout!#] second(s).</key>
<key name="log_0472">The unified fences metadata file: [#!data!path::data::fences_unified_metadata!#] doesn't exist yet. It will be created now.</key>
<key name="log_0473">The unified fences metadata file: [#!data!path::data::fences_unified_metadata!#] will be refreshed on user request (--refresh passed).</key>
<key name="log_0474">The unified fences metadata file: [#!data!path::data::fences_unified_metadata!#] old and will now be refreshed.</key>
<key name="log_0475">This is a CentOS machine, moving the directory: [#!variable!source!#] to: [#!variable!target!#].</key>
<key name="log_0476">The database on: [#!variable!host!#] (UUID: [#!variable!uuid!#]) has been forced to resync via '--resync-db'.</key>
<key name="log_0477">
It looks like you connected to the same database twice! The conflicting databases are:
- [#!variable!db1!#]
- [#!variable!db2!#].
The databases both report the same identifier (as reported by: #!variable!query!#).
If the targets are unique, did you copy the full database directory? A unique identifier is generated when 'initdb' is run, and exists on disk. Exiting.
</key>
<key name="log_0478">The libvirtd' daemon isn't running. Will check for and remove virsh networks set to start on boot.</key>
<key name="log_0479">Removing the symlink: [#!variable!symlink!#].</key>
<key name="log_0480">Updating the cache state file.</key>
<key name="log_0481">[ Note ] - The host: [#!variable!host!#] entry in /etc/hosts has changed IP from: [#!variable!old_ip!#] to: [#!variable!new_ip!#].</key>
<key name="log_0482">Starting the daemon: [#!variable!daemon!#] locally.</key>
<key name="log_0483">Verifying that the daemon: [#!variable!daemon!#] has started.</key>
<key name="log_0484">Waiting for the daemon: [#!variable!daemon!#] to start...</key>
<key name="log_0485">The daemon: [#!variable!daemon!#] was already running locally, no need to start.</key>
<key name="log_0486">Starting the daemon: [#!variable!daemon!#] on: [#!variable!host!#].</key>
<key name="log_0487">Verifying that the daemon: [#!variable!daemon!#] has started on: [#!variable!host!#].</key>
<key name="log_0488">Waiting for the daemon: [#!variable!daemon!#] to start on: [#!variable!host!#]...</key>
<key name="log_0489">The daemon: [#!variable!daemon!#] was already running on: [#!variable!host!#], no need to start.</key>
<key name="log_0490">There are no servers running on either node, stopping daemons.</key>
<key name="log_0491">There are no servers running on locally and the peer is not in the cluster, stopping daemons.</key>
<key name="log_0492">The daemon: [#!variable!daemon!#] is already stopped locally, nothing to do.</key>
<key name="log_0493">Stopping the daemon: [#!variable!daemon!#] locally.</key>
<key name="log_0494">The daemon: [#!variable!daemon!#] is already stopped on: [#!variable!host!#], nothing to do.</key>
<key name="log_0495">Stopping the daemon: [#!variable!daemon!#] on: [#!variable!host!#].</key>
<key name="log_0496">One or more servers are still running on the Anvil!, not stopping daemons.</key>
<key name="log_0497">About to remove the old host type file: [#!variable!file!#].</key>
<key name="log_0498">This machine is not in an #!string!brand_0002!#, not configuring IPMI.</key>
<key name="log_0499">This machine does not appear to have an IPMI BMC (no BMC reported by 'dmidecode'). Not attempting to configure IPMI.</key>
<key name="log_0500">This machine appears to have an IPMI BMC, but the LAN channel (used to configure the BMC's network) wasn't found. Channels 0 to 9 were checked.</key>
<key name="log_0501">Configuring the local IPMI is dependent on knowing what #!string!brand_0002!# this host is a member of. This involves looking for a 'job' for this host to be run by 'anvil-join-anvil' (used to determine the IPMI password to set and to know which machine we are in the #!string!brand_0002!#). No job was found, so unable to configure IPMI at this time.</key>
<key name="log_0502">The IPMI BMC is configured to be set to: [#!variable!ip_address!#], but this doesn't match any of the networks in the install manifest with the UUID: [#!variable!manifest_uuid!#].</key>
<key name="log_0503">The IPMI BMC was set to DHCP, changing to static.</key>
<key name="log_0504">The IPMI BMC currently has the IP address: [#!variable!old!#], changing it to: [#!variable!new!#].</key>
<key name="log_0505">The IPMI BMC currently has the subnet mask of: [#!variable!old!#], changing it to: [#!variable!new!#].</key>
<key name="log_0506">The IPMI BMC currently has the default gateway of: [#!variable!old!#], changing it to: [#!variable!new!#].</key>
<key name="log_0507">
The IPMI BMC administrator (oem) user was not found. The output (if any) of the call: [#!variable!shell_call!#] was:
====
#!variable!output!#
====
</key>
<key name="log_0508">This host's manufacturer is: [#!variable!manufacturer!#], for the changes to take effect, the BMC will be reset now.</key>
<key name="log_0509">Successfully pinged: [#!variable!ip_address!#].</key>
<key name="log_0510">Timed out waiting to ping: [#!variable!ip_address!#]! Configuration will process in case we can't ping our own BMC, but the fence test may fail.</key>
<key name="log_0511">The password for the IPMI BMC works, no need to update it.</key>
<key name="log_0512">The password for the IPMI BMC works, no need to update it. Note that we had to use another machine to confirm, it looks like we can't talk to our own BMC using the IP address.</key>
<key name="log_0513">The password for the IPMI BMC appears to have been successfully updated. Will test to confirm.</key>
<key name="log_0514">The password for the IPMI BMC appears to have been successfully updated, though we had to reduce it to 20-bytes long. Will test to confirm.</key>
<key name="log_0515">The password for the IPMI BMC appears to have been successfully updated, though we had to reduce it to 16-bytes long. Will test to confirm.</key>
<key name="log_0516">Waiting: [#!variable!reset_delay!#] seconds to give the BMC time to reset...</key>
<key name="log_0517">
The file: [#!variable!file!#] needs to be updated. The difference is:
====
#!variable!diff!#
====
</key>
<key name="log_0518">Appending the file: [#!variable!file!#] with the line: [#!variable!line!#].</key>
<key name="log_0519">Attempting to parse bridge information using standard output after failing to parse JSON status information.</key>
<key name="log_0520">The server: [#!variable!server!#] is indeed running. It will be shut down now.</key>
<key name="log_0521">Checking the status of the server: [#!variable!server!#].</key>
<key name="log_0522">The 'libvirtd' daemon is not running. It may be starting up, will wait: [#!variable!wait_time!#] seconds...</key>
<key name="log_0523">Found the server to be running using it's PID. The state of the server can't be determined, however. Please start the 'libvirtd' daemon!</key>
<key name="log_0524">No PID for the server was found. It is not running on this host.</key>
* Created Database->get_bridges() that, surprise, loads data from the 'bridges' table. * Started work on Get->available_resources() that will take an 'anvil_uuid' and figure out what resources are still available for use by new servers or that can be added to existing servers. * Fixed a bug in ScanCore->agent_startup() where tables weren't being generated properly from the agent's SQL file. * Made Storage->change_mode() return silently if it's called without a mode being passed. This happens frequently and is harmless so it's not worth filling the logs with errors. * Renamed the 'start_time' key to 'at_start' when recording files' MD5 sums in Storage->record_md5sums and ->check_md5sums. * When we moved the directory scan logic out of the 'scancore' daemon and into 'Storage->scan_directory', the logic to record scan agent names in 'scancore::agent::<file>' was removed. This broke a few things and, so, it was restored when it was found that a file starts with 'scan-' and the directory matches the scancore agent directory. * Moved the 'scancore' daemon's 'load_agent_strings' to 'Words' * Updated Words->parse_banged_string() to look for variables in the format 'value=X:units=Y' and translate it properly. * Fixed a bug in scan-ipmitool where discovered sensor INSERT SQL queries were queued, but not committed. * Fixed a bug in scan-storcli where a while loop was broken, preventing execution. * Fixed a bug in the 'scancore' daemon where it wouldn't exit if sums changed. Fixed a bug where alerts weren't being sent between loops. Fixed a bug where command-line log level wasn't surviving inside the main loop. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="log_0525">The server: [#!variable!server_name!#] is shutting down. Will wait for it to finish...</key>
<key name="log_0526">The server: [#!variable!server_name!#] is off.</key>
<key name="log_0527">The server: [#!variable!server_name!#] is running (state is: [#!variable!state!#]).</key>
<key name="log_0528">We've been asked to migrating the server: [#!variable!server!#] to: [#!variable!target_host!#].</key>
<key name="log_0529">Checking server state after: [#!variable!server!#] was migrated to this host.</key>
<key name="log_0530">Updating the postfix relay password file: [#!data!path::configs::postfix_relay_password!#].</key>
<key name="log_0531">Generating the binary hash of the postfix relay password file: [#!data!path::configs::postfix_relay_password!#].</key>
<key name="log_0532">It looks like the initial configuration of the postfix main configuration file, injecting the relay password file.</key>
<key name="log_0533">Injecting the configuration line: [#!variable!line!#].</key>
<key name="log_0534">Updating the configuration line from: [#!variable!old_line!#] to: [#!variable!new_line!#].</key>
<key name="log_0535">Starting and enabling the daemon: [#!variable!daemon!#].</key>
<key name="log_0536">Creating the Anvil! alert email spool directory: [#!data!path::directories::alert_emails!#].</key>
<key name="log_0537">Connected to the database named: [#!variable!name!#] as: [#!variable!user!#@#!variable!host!#:#!variable!port!#].</key>
<key name="log_0538">This IS the database queries are read from.</key>
<key name="log_0539">This is NOT the database queries are read from.</key>
<key name="log_0540">This host UUID is: [#!variable!uuid!#] and the database identifier is: [#!variable!identifier!#].</key>
<key name="log_0541">Writing out alert email to: [#!variable!file!#].</key>
<key name="log_0542">Sending email to: [#!variable!to!#].</key>
<key name="log_0543">I was asked to process alerts, but there are no configured email servers. No sense proceeding.</key>
<key name="log_0544">The table: [#!variable!table!#] already exists in the database on the host: [#!variable!host!#], no need to load the schema.</key>
<key name="log_0545">The table: [#!variable!table!#] does NOT exists in the database on the host: [#!variable!host!#]. Will load the schema file: [#!variable!file!#] now.</key>
<key name="log_0546">The passed in 'temperature_state' value: [#!variable!temperature_state!#] is invalid. The value must be 'ok', 'warning' or 'critical'.</key>
<key name="log_0547">The passed in 'temperature_is' value: [#!variable!temperature_is!#] is invalid. The value must be 'nominal', 'warning' or 'critical'.</key>
<key name="log_0548">The server: [#!variable!server!#] is already running, no need to boot it.</key>
<key name="log_0549">The server: [#!variable!server!#] is already running on the target node: [#!variable!requested_node!#], migration not needed.</key>
<key name="log_0550">Waiting for the server: [#!variable!server!#] to finish migrating to the node: [#!variable!requested_node!#]...</key>
<key name="log_0551">The migration of the server: [#!variable!server!#] to the node: [#!variable!requested_node!#] is complete!</key>
<key name="log_0552">Waiting for the server: [#!variable!server!#] to boot...</key>
<key name="log_0553">The server: [#!variable!server!#] has booted on: [#!variable!host_name!#]!</key>
<key name="log_0554">Waiting for the server: [#!variable!server!#] to shut down...</key>
<key name="log_0555">The server: [#!variable!server!#] is now off.</key>
<key name="log_0556">The server: [#!variable!server!#] (#!variable!server_uuid!#) has a definition change:
====
#!variable!difference!#
====
</key>
* Created Database->get_bridges() that, surprise, loads data from the 'bridges' table. * Started work on Get->available_resources() that will take an 'anvil_uuid' and figure out what resources are still available for use by new servers or that can be added to existing servers. * Fixed a bug in ScanCore->agent_startup() where tables weren't being generated properly from the agent's SQL file. * Made Storage->change_mode() return silently if it's called without a mode being passed. This happens frequently and is harmless so it's not worth filling the logs with errors. * Renamed the 'start_time' key to 'at_start' when recording files' MD5 sums in Storage->record_md5sums and ->check_md5sums. * When we moved the directory scan logic out of the 'scancore' daemon and into 'Storage->scan_directory', the logic to record scan agent names in 'scancore::agent::<file>' was removed. This broke a few things and, so, it was restored when it was found that a file starts with 'scan-' and the directory matches the scancore agent directory. * Moved the 'scancore' daemon's 'load_agent_strings' to 'Words' * Updated Words->parse_banged_string() to look for variables in the format 'value=X:units=Y' and translate it properly. * Fixed a bug in scan-ipmitool where discovered sensor INSERT SQL queries were queued, but not committed. * Fixed a bug in scan-storcli where a while loop was broken, preventing execution. * Fixed a bug in the 'scancore' daemon where it wouldn't exit if sums changed. Fixed a bug where alerts weren't being sent between loops. Fixed a bug where command-line log level wasn't surviving inside the main loop. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="log_0557">- Scan agent: [#!variable!agent_name!#] exited after: [#!variable!runtime!#] seconds with the return code: [#!variable!return_code!#].</key>
* Created Convert->fence_ipmilan_to_ipmitool() that takes a 'fence_ipmilan' call and converts it into a direct 'ipmitool' call. * Created Database->get_power() that loads data from the special 'power' table. * Fixed a bug in calls to Network->ping() where some weren't formatted properly for receiving two string variables. * Updated Database->get_anvils() to record the machine types when recording host information. * Updated Database->get_hosts_info() to also load the 'host_ipmi' column. * Updated Database->get_upses() to store the link to the 'power' -> 'power_uuid', when available. * Created ScanCore->call_scan_agents() that does the work of actually calling scan agents, moving the logic out from the scancore daemon. * Created ScanCore->check_power() that takes a host and the anvil it is in and returns if it's on batteries or not. If it is, the time on batteries and estimate hold-up time is returned. If not, the highest charge percentage is returned. * Created ScanCore->post_scan_analysis() that is a wrapper for calling the new ->post_scan_analysis_dr(), ->post_scan_analysis_node() and ->post_scan_analysis_striker(). Of which, _dr and _node are still empty, but _striker is complete. ** ->post_scan_analysis_striker() is complete. It now boots a node after a power loss if the UPSes powering it are OK (at least one has mains power, and the main-powered UPS(es) have reached the minimum charge percentage). If it's thermal, IPMI is called and so long as at least one thermal sensor is found and it/they are all OK, it is booted. For now, M2's thermal reboot delay logic hasn't been replicated, as it added a lot of complexity and didn't prove practically useful. * Created System->collect_ipmi_data() and moved 'scan_ipmitool's ipmitool call and parse into that method. This was done to allow ScanCore->post_scan_analysis_striker() to also call IPMI on a remote machine during thermal down events without reimplementing the logic. * Updated scan-ipmitool to only record temperature data for data collected locally. Also renamed 'machine' variables and hash keys to 'host_name' to clarify what is being stored. * Updated scancore to clear the 'system::stop_reason' variable. * Added missing packages to striker-manage-install-target. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="log_0558">I'm not on the same network as: [#!variable!host_name!#]. Unable to check the power state.</key>
<key name="log_0559">The host: [#!variable!host_name!#] appears to be off, but there's no IPMI information, so unable to check the power state or power on the machine.</key>
<key name="log_0560">The host: [#!variable!host_name!#] has no IPMI information. Wouldn't be able to boot it, even if it's off, so skipping it.</key>
<key name="log_0561">The host: [#!variable!host_name!#] will be checked to see if it needs to be booted or not.</key>
<key name="log_0562">The host: [#!variable!host_name!#] is up, no need to check if it needs booting.</key>
<key name="log_0563">The host: [#!variable!host_name!#] couldn't be reached directly, but IPMI reports that it is up. Could the IPMI BMC be hung or unplugged?</key>
<key name="log_0564">The host: [#!variable!host_name!#] is off. Will check now if it should be booted.</key>
<key name="log_0565">The host: [#!variable!host_name!#] has no stop reason, so we'll leave it off.</key>
<key name="log_0566">The host: [#!variable!host_name!#] was stopped by the user, so we'll leave it off.</key>
<key name="log_0567">The host: [#!variable!host_name!#] was powered off because of power loss. Checking to see if it is now safe to restart it.</key>
<key name="log_0568">The host: [#!variable!host_name!#] was powered off because of thermal issues. Checking to see if it is now safe to restart it.</key>
<key name="log_0569">Unable to find an install manifest for the Anvil! [#!variable!anvil_name!#]. As such, unable to determine what UPSes power the machine: [#!variable!host_name!#]. Unable to determine if the power feeding this node is OK or not.</key>
<key name="log_0570">Unable to parse the install manifest uuid: [#!variable!manifest_uuid!#] for the Anvil! [#!variable!anvil_name!#]. As such, unable to determine what UPSes power the machine: [#!variable!host_name!#]. Unable to determine if the power feeding this node is OK or not.</key>
<key name="log_0571">The UPS referenced by the 'power_uuid': [#!variable!power_uuid!#] under the host: [#!variable!host_name!#] has no record of being on mains power, so we can't determine how long it's been on batteries. Setting the "shortest time on batteries" to zero seconds.</key>
* THe get_cpu endpoint was completed. * The get_mmeory endpoint was completed. * The get_replicated_storage endpoint was completed, though it requires testing and likely has issues. To prepare for the get_status endpoint work, I needed to update ScanCore and modules to track the host_status. This commit contains the work needed for this. * Updated ScanCore->post_scan_analysis_striker() to use configured fence devices (except PDUs) to check if a target host is off or on, in there is no host_ipmi interface. In all cases, if a machine can be confirmed on or off, the host_status is now updated. * To support the above fence based power checks, updated scan-cluster to store the on-disk CIB in the new scan_cluster -> scan_cluster_cib colume. * Updated ScanCore->parse_cib() to map stonith primitive IDs to fence agents. Updated ->parse_crm_mon() to not call if the executable doesn't exist to avoid unhelpful error messages in the logs when called from a Striker. * Update DRBD->gather_data() to get the size data from /sys/block/drbd<minor>/size' x '/sys/block/drbd<minor>/queue/logical_block_size so it works when a device is Secondary (and can't be promoted). * Updated Database->get_hosts_info() to record the short host name as well as the stored host name. Created ->update_host_status() as a wrapper to ->insert_or_update_hosts() that only updates the host status. * Updated anvil-join-anvil to disabled ksm and ksmtuned daemons. * Updated scancore and anvil-daemon to set the host_status to 'online' on startup. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="log_0572">Marking the host as 'online' and clearing the host's stop reason.</key>
* Created Convert->fence_ipmilan_to_ipmitool() that takes a 'fence_ipmilan' call and converts it into a direct 'ipmitool' call. * Created Database->get_power() that loads data from the special 'power' table. * Fixed a bug in calls to Network->ping() where some weren't formatted properly for receiving two string variables. * Updated Database->get_anvils() to record the machine types when recording host information. * Updated Database->get_hosts_info() to also load the 'host_ipmi' column. * Updated Database->get_upses() to store the link to the 'power' -> 'power_uuid', when available. * Created ScanCore->call_scan_agents() that does the work of actually calling scan agents, moving the logic out from the scancore daemon. * Created ScanCore->check_power() that takes a host and the anvil it is in and returns if it's on batteries or not. If it is, the time on batteries and estimate hold-up time is returned. If not, the highest charge percentage is returned. * Created ScanCore->post_scan_analysis() that is a wrapper for calling the new ->post_scan_analysis_dr(), ->post_scan_analysis_node() and ->post_scan_analysis_striker(). Of which, _dr and _node are still empty, but _striker is complete. ** ->post_scan_analysis_striker() is complete. It now boots a node after a power loss if the UPSes powering it are OK (at least one has mains power, and the main-powered UPS(es) have reached the minimum charge percentage). If it's thermal, IPMI is called and so long as at least one thermal sensor is found and it/they are all OK, it is booted. For now, M2's thermal reboot delay logic hasn't been replicated, as it added a lot of complexity and didn't prove practically useful. * Created System->collect_ipmi_data() and moved 'scan_ipmitool's ipmitool call and parse into that method. This was done to allow ScanCore->post_scan_analysis_striker() to also call IPMI on a remote machine during thermal down events without reimplementing the logic. * Updated scan-ipmitool to only record temperature data for data collected locally. Also renamed 'machine' variables and hash keys to 'host_name' to clarify what is being stored. * Updated scancore to clear the 'system::stop_reason' variable. * Added missing packages to striker-manage-install-target. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="log_0573">The host: [#!variable!host_name!#] is off, but there appears to be a problem translating the 'fence_ipmilan' into a workable 'ipmitool' command. Unable to check the thermal data of the host, and so, unable to determine if it's safe to boot the node.</key>
<key name="log_0574">The host: [#!variable!host_name!#] was powered off because of power loss. Power is back and the UPSes are sufficiently charged. Booting it back up now.</key>
<key name="log_0575">The host: [#!variable!host_name!#] was powered off for thermal reasons. All available thermal sensors read as OK now. Booting it back up now.</key>
<key name="log_0576">The file: [#!variable!file_path!#] isn't on (or isn't the right size on) Striker: [#!variable!host_name!#]. Not using it to pull from.</key>
<key name="log_0577">The job: [#!variable!job_uuid!#] was assigned to our Anvil! and this is the primary node. Assigning the job to this machine.</key>
<key name="log_0578">I was about to start: [#!variable!command!#], but I last tried to run this: [#!variable!last_start!#] seconds ago. We'll wait at least a minute before we try to run it again.</key>
<key name="log_0579">The LV(s) behind the resource: [#!variable!resource!#] have had their DRBD metadata created successfully.</key>
<key name="log_0580">The LV(s) behind the resource: [#!variable!resource!#] have been forced to primary to initialize the resource.</key>
<key name="log_0581">Asked to validate that the server: [#!variable!server!#] is able to run.</key>
<key name="log_0582">We've been asked to stop the server: [#!variable!server!#].</key>
<key name="log_0583">The server: [#!variable!server_name!#] is already off.</key>
<key name="log_0584">The request to stop: [#!variable!server_name!#] has been sent. We'll now check periodically waiting for it to stop.</key>
<key name="log_0585">The server: [#!variable!server_name!#]'s current status is: [#!variable!status!#].</key>
<key name="log_0586">The server: [#!variable!server_name!#] is now off.</key>
<key name="log_0587">The server: [#!variable!server_name!#] has been removed from Pacemaker.</key>
<key name="log_0588">We're required by at least one peer, so we'll wait a bit and check to see if they still need us before we proceed with the deletion.</key>
<key name="log_0589">Deleting the file: [#!variable!file!#].</key>
<key name="log_0590">Wiping the metadata from the DRBD resource: [#!variable!resource!#].</key>
<key name="log_0591">Wiping any file system signatures and then deleting the logical volume: [#!variable!device_path!#].</key>
<key name="log_0592">The resource name: [#!variable!resource_name!#] was found, returning the first TCP port and minor number.</key>
<key name="log_0593">The job: [#!variable!command!#] with UUID: [#!variable!job_uuid!#] is a start-time job, not running it now.</key>
<key name="log_0594">The lvm.conf already has the filter: [#!variable!filter!#], will not change it.</key>
<key name="log_0595">Updated the lvm.conf file to add the filter: [#!variable!filter!#] to prevent LVM from seeing the DRBD devices as LVM devices.</key>
* THe get_cpu endpoint was completed. * The get_mmeory endpoint was completed. * The get_replicated_storage endpoint was completed, though it requires testing and likely has issues. To prepare for the get_status endpoint work, I needed to update ScanCore and modules to track the host_status. This commit contains the work needed for this. * Updated ScanCore->post_scan_analysis_striker() to use configured fence devices (except PDUs) to check if a target host is off or on, in there is no host_ipmi interface. In all cases, if a machine can be confirmed on or off, the host_status is now updated. * To support the above fence based power checks, updated scan-cluster to store the on-disk CIB in the new scan_cluster -> scan_cluster_cib colume. * Updated ScanCore->parse_cib() to map stonith primitive IDs to fence agents. Updated ->parse_crm_mon() to not call if the executable doesn't exist to avoid unhelpful error messages in the logs when called from a Striker. * Update DRBD->gather_data() to get the size data from /sys/block/drbd<minor>/size' x '/sys/block/drbd<minor>/queue/logical_block_size so it works when a device is Secondary (and can't be promoted). * Updated Database->get_hosts_info() to record the short host name as well as the stored host name. Created ->update_host_status() as a wrapper to ->insert_or_update_hosts() that only updates the host status. * Updated anvil-join-anvil to disabled ksm and ksmtuned daemons. * Updated scancore and anvil-daemon to set the host_status to 'online' on startup. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="log_0596">The host: [#!variable!host_name!#] last updated the database: [#!variable!difference!#] seconds ago, skipping power checks.</key>
<key name="log_0597">The host: [#!variable!host_name!#] has no entries in the 'updated' table, so ScanCore has likely never run. Skipping this host for now.</key>
<key name="log_0598">This host is not a node, this program isn't designed to run here.</key>
<key name="log_0599">Enabled 'anvil-safe-start' locally on this node.</key>
<key name="log_0600">Enabled 'anvil-safe-start' on both nodes in this Anvil! system.</key>
<key name="log_0601">Disabled 'anvil-safe-start' locally on this node.</key>
<key name="log_0602">Disabled 'anvil-safe-start' on both nodes in this Anvil! system.</key>
<key name="log_0603">This node is not in an Anvil! yet, so there's no reason to run this program.</key>
<key name="log_0604">Scuccessful acess over the network: [#!variable!network!#] to the peer: [#!variable!peer!#] using the peer's IP: [#!variable!peer_ip!#].</key>
<key name="log_0605">Failed to acess over the peer: [#!variable!peer!#] over the network: [#!variable!network!#] via the peer's IP: [#!variable!peer_ip!#].</key>
<key name="log_0606">At least one network connection to the peer: [#!variable!peer!#] is still down. Waiting a bit and then will check again.</key>
<key name="log_0607">All connections to the peer: [#!variable!peer!#] are up!</key>
<key name="log_0608">The cluster does not appear to be running, starting it now.</key>
<key name="log_0609">The cluster isn't up yet, waiting a bit before checking again.</key>
<key name="log_0610">We're online as: [#!variable!node_name!#], but we're not quorate yet. Continuing to wait.</key>
<key name="log_0611">We're online as: [#!variable!node_name!#] and quorate!</key>
<key name="log_0612">We're not online yet. Waiting for 'in_ccm/crmd/join': [#!variable!in_ccm!#/#!variable!crmd!#/#!variable!join!#]. ('in_ccm' = consensus cluster member, communication layer. 'crmd' = cluster resource manager daemon is up, 'join' = allowed to host resources).</key>
<key name="log_0613">The file: [#!variable!file_name!#] is not recorded for the Anvil! [#!variable!anvil_name!#] yet. Registering it now as not sync'ed to this Anvil! system.</key>
<key name="log_0614">Asking 'anvil-boot-server' to boot the servers now.</key>
<key name="log_0615">We were asked to delete the file: [#!variable!file!#], but it doesn't exist, so nothing to do.</key>
<key name="log_0616">The file: [#!variable!file!#] has been successfully removed.</key>
<key name="log_0617">We were asked to delete the file: [#!variable!file!#] on the target: [#!variable!target!#], but it doesn't exist, so nothing to do.</key>
<key name="log_0618">Successfully deleted the file: [#!variable!file!#] on the target: [#!variable!target!#].</key>
<key name="log_0619">The host: [#!variable!host_name!#] has shut down for thermal reasons: [#!variable!count!#] times. To prevent a frequent boot / thermal excursion / shutdown loop, we will wait: [#!variable!wait_for!#] before marking it's temperature as being OK again.</key>
The core logic is done!!!! Still need to finish end-points for the WebUI to hook into, but the core of M3 is complete! Many, many bugs are expected, of course. :) * Created DRBD->check_if_syncsource() and ->check_if_synctarget() that return '1' if the target host is currently SyncSource or SyncTarget for any resource, respectively. * Updated DRBD->update_global_common() to return the unified-format diff if any changes were made to global-common.conf. * Created ScanCore->check_health() that returns the health score for a host. Created ->count_servers() that returns the number of servers on a host, how much RAM is used by those servers and, if available, the estimated migration time of the servers. Updated ->check_temperature() to set/clear/return the time that a host has been in a warning or critical temperature state. * Finished ScanCore->post_scan_analysis_node()!!! It certainly has bugs, and much testing is needed, but the logic is all in place! Oh what a slog that was... It should be far more intelligent than M2 though, once flushed out and tested. * Created Server->active_migrations() that returns '1' if any servers are in a migration on an Anvil! system. Updated ->migrate_virsh() to record how long a migration took in the "server::migration_duration" variable, which is averaged by ScanCore->count_servers() to estimate migration times. * Updated scan-drbd to check/update the global-common.conf file's config at the end of a scan. * Updated ScanCore itself to not scan when in maintenance mode. Also updated it to call 'anvil-safe-start' when ScanCore starts, so long as it is within ten minutes of the host booting. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="log_0620">This host has been running for: [#!variable!uptime!#]. The cluster will not be started (uptime must be less than 10 minutes for 'anvil-safe-start' to be called automatically).</key>
<key name="log_0621">- The Scan agent: [#!variable!agent_name!#] ran a bit long, exiting after: [#!variable!runtime!#] seconds with the return code: [#!variable!return_code!#].</key>
<key name="log_0622">Aging out one or more records that are more than: [#!variable!age!#] hours old from the table: [#!variable!table!#] on the database host: [#!variable!database!#].</key>
<key name="log_0623">Starting the process of aging out old data. This can take about a minute, please be patient.</key>
<key name="log_0624">Aging out old data completed after: [#!variable!runtime!#] seconds.</key>
<key name="log_0625">Updating the apache configuration file: [#!variable!file!#]. The changes are:
====
#!variable!difference!#
====
</key>
<!-- Messages for users (less technical than log entries), though sometimes used for logs, too. -->
<key name="message_0001">The host name: [#!variable!target!#] does not resolve to an IP address.</key>
<key name="message_0002">The connection to: [#!variable!connection!#] was refused. If you recently booted the target, the network might have started, the ssh daemon might not be running yet.</key>
<key name="message_0003">There is no route to: [#!variable!target!#]. Is the machine (or the interface) up?</key>
<key name="message_0004">Timed out while waiting for a reply from: [#!variable!target!#]. Is the machine booting up? If so, please wait a minute or two and try again.</key>
<key name="message_0005">There was an unknown error while connecting as: [#!variable!user!#] to: [#!variable!remote_user!#@#!variable!target!#]. The error was: [#!variable!error!#]</key>
<key name="message_0006">We were unable to log in to: [#!variable!connection!#]. Please check that the password is correct or that passwordless SSH is configured properly.</key>
<key name="message_0007">An SSH session was successfully opened to: [#!variable!target!#].</key>
<key name="message_0008">The remote shell call: [#!variable!shell_call!#] to: [#!variable!connection!#] failed with the error: [#!variable!error!#].</key>
<key name="message_0009">The SSH session to: [#!variable!target!#] was successfully closed.</key>
<key name="message_0010">The SSH session to: [#!variable!target!#] was closed because 'no_cache' was set and there was an open SSH connection.</key>
<key name="message_0011">Wrote the system UUID to the file: [#!variable!file!#] to enable the web based tools to read this system's UUID.</key>
<key name="message_0012">Wrote the journald config file: [#!variable!file!#] to disable rate limiting to ensure high log levels are not lost.</key>
<key name="message_0013">Updated the journald config file: [#!variable!file!#] to enable persistent storage of logs to disk. Will restart the journald daemon now.</key>
<key name="message_0014">One or more files on disk have changed. Exiting to reload.</key>
<key name="message_0015">The reconfigure of the network has begun.</key>
<key name="message_0016">The host name: [#!variable!host_name!#] has been set.</key>
<key name="message_0017">Failed to set the host name: [#!variable!host_name!#]! The host name is currently [#!variable!bad_host_name!#]. This is probably a program error.</key>
<key name="message_0018">What would you like the new password to be?</key>
<key name="message_0019">Please enter the password again to confirm.</key>
<key name="message_0020">About to update the local passwords (shell users, database and web interface).</key>
<key name="message_0021">Proceed? [y/N]</key> <!-- Default Yes is at message_0206 -->
<key name="message_0022">Aborting.</key>
<key name="message_0023">Auto-approved by command line switch, proceeding.</key>
<key name="message_0024">Updating the Striker user: [#!variable!user!#] password... </key>
<key name="message_0025">Done.</key>
<key name="message_0026">Updating the database user: [#!variable!user!#] password... </key>
<key name="message_0027">Updating the local config file: [#!variable!file!#] database password... </key>
<key name="message_0028">Updating the shell user: [#!variable!user!#] password... </key>
<key name="message_0029">Finished!
NOTE: You must update the password of any other system using this host's
database manually!
</key>
<key name="message_0030">Failed to write the new password to the temporary file: [#!variable!file!#]. Please check the logs for details.</key>
<key name="message_0031">Beginning configuration of local system.</key>
<key name="message_0032">Peer: [#!variable!peer!#], database: [#!variable!name!#], UUID: [#!variable!uuid!#]</key>
<key name="message_0033">Clearing update cache and checking for available updates.</key>
<key name="message_0034"><![CDATA[Logged in as: [<span class="fixed_width">#!data!sys::users::user_name!#</span>]]]></key>
<key name="message_0035">Downloading approximately: [#!variable!size!#] worth of updates.</key>
<key name="message_0036">ERROR: There was a problem with the OS update process. Please check the system logs for more details.</key>
<key name="message_0037">Downloading complete. Installation of updates now underway.</key>
<key name="message_0038">Updates finished. Verifying now.</key>
<key name="message_0039">System update complete! The kernel was updated, so a reboot is required.</key>
<key name="message_0040">System update complete! A reboot is not required.</key>
<key name="message_0041">This system has been placed into maintenance mode.</key>
<key name="message_0042">This system was already in maintenance mode, nothing changed.</key>
<key name="message_0043">This system has been removed from maintenance mode.</key>
<key name="message_0044">This system was not in maintenance mode, nothing changed.</key>
<key name="message_0045">Bad call. Usage:
Set maintenance mode: #!variable!program!# --set 1
Clear maintenance mode: #!variable!program!# --set 0
Report maintenance mode: #!variable!program!#
</key>
<key name="message_0046">This system is in maintenance mode.</key>
<key name="message_0047">This system is NOT in maintenance mode.</key>
<key name="message_0048">This system has been set to need a reboot.</key>
<key name="message_0049">This system was already set to need a reboot, nothing changed.</key>
<key name="message_0050">This system has has been set to no longer need a reboot.</key>
<key name="message_0051">This system was not in maintenance mode, nothing changed.</key>
<key name="message_0052">Bad call. Usage:
Set that a reboot is required: #!variable!program!# --reboot-needed 1
Clear the need for a reboot: #!variable!program!# --reboot-neededset 0
Report if a reboot is needed: #!variable!program!#
Reboot the system: #!variable!program!# --reboot [-y]
Poweroff the system: #!variable!program!# --poweroff [-y]
The '-y' option prevents a confirmation prompt.
</key>
<key name="message_0053">This system needs to be rebooted.</key>
<key name="message_0054">This system does NOT need to be rebooted.</key>
<key name="message_0055">Asked to only run once, so exiting now.</key>
<key name="message_0056">Previous run exited early. Restarting momentarily.</key>
<key name="message_0057">No updates were found or needed.</key>
<!-- NOTE: If you change the variable names below, you have to update 'anvil-update-system' as well. -->
<key name="message_0058">* Packages downloaded: [#!variable!downloaded!#], Installed or updated: [#!variable!installed!#], Verified: [#!variable!verified!#], Output lines: [#!variable!lines!#].</key>
<key name="message_0059">Are you sure you want to reboot this system? [y/N].</key>
<key name="message_0060">Are you sure you want to power off this system? [y/N].</key>
<key name="message_0061">Aborting.</key>
<key name="message_0062">Powering off the local system now.</key>
<key name="message_0063">Rebooting the local system now.</key>
<key name="message_0064">The #!string!brand_0006!# has restarted at: [#!variable!date_and_time!#] after powering back on.</key>
<key name="message_0065">You will now be logged out and this machine will now be rebooted so that the new configuration can take effect.</key>
<key name="message_0066">Starting the job to add or update an #!string!brand_0006!# database peer.</key>
<key name="message_0067">Starting the job to remove an #!string!brand_0006!# database peer.</key>
<key name="message_0068">Sanity checkes passed.</key>
<key name="message_0069">Added the peer to the config file.</key>
<key name="message_0070">Old peer found and removed from the config file.</key>
<key name="message_0071">Existing peer found and update needed and made.</key>
<key name="message_0072">Configuration changed, existing config backed up as: [#!variable!backup!#].</key>
<key name="message_0073">New config written to disk.</key>
<key name="message_0074">Reconnecting to the database(s) to ask the peer to add us. Will hold here until the peer is added to the 'hosts' table. Please be patient.</key>
<key name="message_0075">The peer: [#!variable!host!#] is now in the database. Proceeding.</key>
<key name="message_0076">The job the peer add us has been registered. It should add us as soon as it looks for new jobs (generally within a second or two).</key>
<key name="message_0077">
NOTE: Please be patient!
The 'dnf' cache will be cleared to ensure the freshest RPMs are download. This will cause a delay
before output starts to appear. Once started, each RPM will be reported after it is downloaded. Large
RPMs may cause the output to appear stalled. You can verify that the download it proceeding by using
'df -hs #!variable!directory!#' to verify the numbers are increasing.
</key>
<key name="message_0078">Output: [#!variable!line!#].</key>
<key name="message_0079">Error: [#!variable!line!#].</key>
<!-- The strings below are used in the 'default' PXE menu. Entries used as option labels use '^' to indicate the hotkey, and must be unique in a given menu. -->
<key name="message_0080">#!string!brand_0002!# - Install Target Menu</key>
<key name="message_0081">Will boot the next device as configured in your BIOS in # second{,s}.</key>
<key name="message_0082"><![CDATA[Press the <tab> key to edit the boot parameters of the highlighted option.]]></key>
<key name="message_0083">Editing of this option is disabled.</key>
<key name="message_0084">Install a Striker dashboard (#!data!host_os::os_name!# #!data!host_os::os_arch!#)</key>
<!-- Keep help text wrapped within the area shown directly below for the 'help' section of PXE 'default' meny entry. -->
<!-- /===========================================================================================================\ -->
<key name="message_0085">
This install will choose the largest available fixed disk (spindle or platter), remove any data from it,
repartition in and install. This is a fully automated process! Once selected, the only way to abort will be
a manual reboot on the system.
*** ALL EXISTING DATA ON SELECTED DRIVE WILL BE LOST! ***
*** THERE WILL BE NO FURTHER PROMPT! PROCEED CAREFULLY! ***
</key>
<!-- \===========================================================================================================/ -->
<key name="message_0086">Install an #!string!brand_0002!# Node (#!data!host_os::os_name!# #!data!host_os::os_arch!#)</key>
<!-- Keep help text wrapped within the area shown directly below for the 'help' section of PXE 'default' meny entry. -->
<!-- /===========================================================================================================\ -->
<key name="message_0087">
This install will choose the smallest available fixed rotating disk, if available. If none is found, the
smallest solid-state fixed disk will be chosen. All data will be removed, the disk repartitioned and a new OS
will be installed. This is a fully automated process! Once selected, the only way to abort will be a manual
reboot on the system.
*** ALL EXISTING DATA ON SELECTED DRIVE WILL BE LOST! ***
*** THERE WILL BE NO FURTHER PROMPT! PROCEED CAREFULLY! ***
</key>
<!-- \===========================================================================================================/ -->
<key name="message_0088">Install an #!string!brand_0002!# Disaster Recover Host (#!data!host_os::os_name!# #!data!host_os::os_arch!#)</key>
<key name="message_0089">
<!-- Keep help text wrapped within the area shown directly below for the 'help' section of PXE 'default' meny entry. -->
<!-- /===========================================================================================================\ -->
This install will choose the smallest available fixed rotating disk, if available. If none is found, the
smallest solid-state fixed disk will be chosen. All data will be removed, the disk repartitioned and a new OS
will be installed. This is a fully automated process! Once selected, the only way to abort will be a manual
reboot on the system.
*** ALL EXISTING DATA ON SELECTED DRIVE WILL BE LOST! ***
*** THERE WILL BE NO FURTHER PROMPT! PROCEED CAREFULLY! ***
<!-- \===========================================================================================================/ -->
</key>
<key name="message_0090">Boot into a rescue session</key>
<key name="message_0091">
<!-- Keep help text wrapped within the area shown directly below for the 'help' section of PXE 'default' meny entry. -->
<!-- /===========================================================================================================\ -->
This will boot into a rescue shell. From there, you can access the bare hard drive on the machine to attempt
to diagnose and repair problems that might be preventing a system from booting.
No data on the target machine will be changed by this option.
</key>
<!-- \===========================================================================================================/ -->
<key name="message_0092">Install standard #!data!host_os::os_name!# #!data!host_os::os_arch!# Install</key>
<!-- Keep help text wrapped within the area shown directly below for the 'help' section of PXE 'default' meny entry. -->
<!-- /===========================================================================================================\ -->
<key name="message_0093">
This will start a standard install of #!data!host_os::os_name!#.
This option will not change anything on disk until and unless you choose to do so.
</key>
<!-- \===========================================================================================================/ -->
<key name="message_0094">Boot from the next boot device</key>
<key name="message_0095">Restarting: [#!variable!daemon!#] after updating the file: [#!variable!file!#].</key>
<key name="message_0096">The file: [#!variable!file!#] did not need to be updated.</key>
<key name="message_0097">The file: [#!variable!file!#] was updated.</key>
<key name="message_0098">Enabling and starting: [#!variable!daemon!#]</key>
<key name="message_0099">The daemon: [#!variable!daemon!#] is already enabled, skipping.</key>
<key name="message_0100">Copying the syslinux files: [#!data!path::directories::syslinux!#/*] into the tftpboot directory: [#!data!path::directories::tftpboot!#].</key>
<key name="message_0101">The syslinux files from: [#!data!path::directories::syslinux!#] appear to already be in the tftpboot directory: [#!data!path::directories::tftpboot!#], skipping.</key>
<key name="message_0102">Checking that the "Install Target" function is configured and updated.</key>
<!-- The strings below are printed in bash, so be mindful of escaping characters. The strings are wrapped in double-quotes ("), so escape them with a back-slash (\") -->
<key name="message_0103">Finding install drive for a Striker dashboard.</key>
<key name="message_0104">Finding install drive for an #!string!brand_0006!# node.</key>
<key name="message_0105">Finding install drive for a DR (disaster recovery) host.</key>
<key name="message_0106">
[ Error ] - Target type not specified. Be sure that '\$type' is set to
'striker', 'node' or 'dr' in the \%pre section of the kickstart
script.
</key>
<!-- These are injected into the perl script in the kickstart files. Leave the string variables and function calls in place! -->
<key name="message_0107"><![CDATA[Analyzing platter drive: [".$path."], using the transport: [".$device->{$path}{transport}."], of the size: [".$device->{$path}{size}." (".hr_size($device->{$path}{size}).")]]]></key>
<key name="message_0108"><![CDATA[Analyzing solid-state drive: [".$path."], using the transport: [".$device->{$path}{transport}."], of the size: [".$device->{$path}{size}." (".hr_size($device->{$path}{size}).")]]]></key>
<key name="message_0109"><![CDATA[Selected the largest disk: [".$use_drive."], which has a capacity of: [".hr_size($device->{$use_drive}{size})."]]]></key>
<key name="message_0110"><![CDATA[Selected the smallest platter drive: [".$use_drive."], which has a capacity of: [".hr_size($device->{$use_drive}{size})."]]]></key>
<key name="message_0111"><![CDATA[Selected the smallest solid-state drive: [".$use_drive."], which has a capacity of: [".hr_size($device->{$use_drive}{size})."] (no platter drives found)]]></key>
<key name="message_0112"><![CDATA[[ Error ] - Failed to find any fixed drives (platter or USB, not removable) to install onto. Unable to proceed.]]></key>
<key name="message_0113"><![CDATA[Writing out the partition plan to: [".$partition_file."]]]></key>
<key name="message_0114"><![CDATA[Completed successfully, exiting.]]></key>
<!-- Above here are strings used in the kickstart scripts. Be sure to test kickstart installation after changing / translation between 'message_0103' and 'message_0114'. -->
<key name="message_0115">Striker Dashboard</key>
<key name="message_0116">#!string!brand_0002!# Node</key>
<key name="message_0117">Disaster Recovery (DR) Host</key>
<key name="message_0118">Regenerating the source repository metadata.</key>
<key name="message_0119">[ Error ] - The comps.xml file: [#!variable!comps_xml!#] was not found. This provides package group information required for Install Target guests.</key>
<key name="message_0120">
About to try to download aproximately: [#!variable!packages!#] packages needed to:
- [#!variable!directory!#].
</key>
<key name="message_0121">Successfully enabled the Install Target function.</key>
<key name="message_0122">Successfully disabled the Install Target function.</key>
<key name="message_0123">The 'Install Target' function is enabled.</key>
<key name="message_0124">The 'Install Target' function is disabled.</key>
<key name="message_0125">The 'Install Target' function has been disabled.</key>
<key name="message_0126">The attempt to disabled the 'Install Target' function failed! Please check the logs for details.</key>
<key name="message_0127">The 'Install Target' function has been enabled.</key>
<key name="message_0128">The attempt to enable the 'Install Target' function failed! Please check the logs for details.</key>
<key name="message_0129">[ Error ] - The comps.xml file: [#!variable!comps_xml!#] was found, but something failed when we tried to copy it to: [#!variable!target_comps!#].</key>
<key name="message_0130">Updated repository data.</key>
<key name="message_0131">Back-Channel Network ##!variable!number!# - Used for all inter-machine communication in the #!string!brand_0006!#, as well as communication for foundation pack devices. Should be VLAN-isolated from the IFN and, thus, trusted.</key>
<key name="message_0132">Storage Network ##!variable!number!# - Used for DRBD communication between nodes and DR hosts. Should be VLAN-isolated from the IFN and, thus, trusted.</key>
<key name="message_0133">Internet-Facing Network ##!variable!number!# - Used for all client/user facing traffic. Likely connected to a semi-trusted network only.</key>
<key name="message_0134">Updating / configuring the firewall.</key>
<key name="message_0135">It appears like we need to accept the fingerprint. Will do so now and then try to conenct again.</key>
<key name="message_0136">The zone: [#!variable!zone!#] file: [#!variable!file!#] needs to be updated.</key>
<key name="message_0137">The zone: [#!variable!zone!#] file: [#!variable!file!#] doesn't exist, it will now be created.</key>
<key name="message_0138">The interface: [#!variable!interface!#] will be added to the zone: [#!variable!zone!#].</key>
<key name="message_0139">Reloading the firewall...</key>
<key name="message_0140">Restarting the firewall...</key>
<key name="message_0141">Changing the default zone to: [#!variable!zone!#].</key>
<key name="message_0142">* Download progress: [#!variable!percentage!# %], Downloaded: [#!variable!downloaded!#], Current rate: [#!variable!current_rate!#], Average Rate: [#!variable!average_rate!#], Time Running: [#!variable!running_time!#], Estimated left: [#!variable!estimated_left!#].</key>
<key name="message_0143">The zone: [#!variable!zone!#]'s user-land file: [#!variable!file!#] exists. Skipping checking the configuration of this zone.</key>
<key name="message_0144">Red Hat user</key>
<key name="message_0145">Red Hat password</key>
<key name="message_0146">What kind of machine will this host be?</key>
<key name="message_0147"><![CDATA[What is the host's <b>current</b> IP address and password?]]></key>
<key name="message_0148"><![CDATA[This is a RHEL host and has not yet been subscribed. You can enter your Red Hat subscription credentials below. If the host has internet access, the host will be subscribed during setup.]]></key>
<key name="message_0149">The target's host key has changed. If the target has been rebuilt, or the target IP reused, the old key will need to be removed. If this is the case, remove line: [#!variable!line!#] from: [#!variable!file!#].</key>
<key name="message_0150">Set the new host name.</key>
<key name="message_0151">This is a RHEL host and has not yet been subscribed, but there is no internet access detected. OS Updates likely won't work, nor will subscribing the system. These tasks will be deferred until later in the setup process.</key>
<key name="message_0152">There is no internet access detected. OS Updates likely won't work and will be deferred until later in the setup process.</key>
<key name="message_0153">Local repository</key>
<key name="message_0154">Mail Server Configuration</key>
<key name="message_0155">When alert emails are sent, they are stored locally and then forwarded to a mail server. This is where you can configure the mail server that alerts are forwarded to for delivery to recipients.</key>
<key name="message_0156">Alert recipient Configuration</key>
<key name="message_0157">When a system alert is recorded, any alert recipient interested in that alert will be notified by email. This is determined by the alert's level, and the recipients alert level interest. If the alert's level is equal to or higher than a given alert, an email will be crafted for them, in their chosen language and units.</key>
<key name="message_0158">[ Error ] - The modules.yaml file: [#!variable!modules_yaml!#] was found, but something failed when we tried to copy it to: [#!variable!target_modules!#].</key>
<key name="message_0159">Updated module metadata.</key>
<key name="message_0160">Back-Channel Network</key>
<key name="message_0161">Storage Network</key>
<key name="message_0162">Internet-Facing Network</key>
<key name="message_0163">The network is the lowest IP in the subnet range. This is not any given IP address. For example, '10.255.0.0' for the mask '255.255.0.0', '192.168.1.0' for the mask '255.255.255.0', etc.</key>
<key name="message_0164">The subnet mask indicates the size of the network. The BCN and SN must be '255.255.0.0 (/16)'. Set the mask to match you IFN network(s).</key>
<key name="message_0165">If the network has a gateway (permanent or periodic), enter it here.</key>
<key name="message_0166">An isolated, VLAN'ed network used for all inter-machine communication in the #!string!brand_0006!#, as well as communication for foundation pack devices.</key>
<key name="message_0167">An isolated, VLAN'ed network Used for storage replication traffic only.</key>
<key name="message_0168">Connecting to the main site intranet. This is the network (or networks) that guest virtual servers will use to connect to all devices outside the #!string!brand_0006!# system.</key>
<key name="message_0169">Please select the host you want to purge from the database:</key>
<key name="message_0170">#!variable!key!#) #!variable!host_name!# - #!variable!type!# - #!variable!host_uuid!#)</key>
<key name="message_0171">Which machine do you want to purge from the database(s)? </key>
<key name="message_0172">Note: Be sure all databases are online! Otherwise, the purged records could return during the next resync!</key>
<key name="message_0173">Are you sure you want to purge: [#!variable!host_name!# (#!variable!host_uuid!#)]?</key> <!-- Translation note: If you want to accept other characters as confirmation, update 'striker-purge-host', 'sub confirm' in the 'normalize -y' section. -->
<key name="message_0174">Confirmed by switch, proceeding with purge of: [#!variable!host_name!#].</key>
<key name="message_0175">Thank you, proceeding.</key>
<key name="message_0176">The host: [#!variable!host_name!#] has been purged.</key>
<key name="message_0177">
##] anvil-daemon [###########################################################################################
# NOTE: The /etc/hosts file is managed by the Anvil! system. Manual additions will be retained, but #
# conflicts with hosts managed by the Anvil! system will be overwritten. Specifically, all hosts #
# related to Striker dashboards and, for hosts in an Anvil!, peer nodes and DR hosts will be set to #
# use the IPs recorded in the Anvil! database (which themselves are recorded by the anvil-daemon #
# running on each host). If / when an IP address changes, the host files on all associated hosts #
# should update within a minute. #
#############################################################################################################
</key> <!-- Translation note: System->update_hosts() looks for '##] anvil-daemon [##' to know if this alert was added to /etc/hosts. As such, please retain that exact string in your translation. -->
<key name="message_0178">Hosts added or updated by the #!string!brand_0002!# on: [#!variable!date!#]:</key>
<key name="message_0179">ScanCore has started.</key>
<key name="message_0180">The scan agent: [#!variable!agent_name!#] timed out! It was given: [#!variable!timeout!#] seconds to run, but it didn't return, so it was terminated.</key>
<key name="message_0181">The scan agent: [#!variable!agent_name!#] check if it's schema was loaded! This is likely a problem with the SQL schema in the file: [#!variable!file!#]. Details are likely available in the: [#!data!path::log::main!#] log file.</key>
<key name="message_0182">The scan agent: [#!variable!agent_name!#] has now successfully loaded! Whatever issue existed with: [#!variable!file!#] has been resolved.</key>
<key name="message_0183">The SQL schema for the scan agent: [#!variable!agent_name!#] has been loaded into the database host: [#!variable!host_name!#].</key>
<key name="message_0184">This Striker is a RHEL host. As such, we'll need to download any updated to packages in the High Availability repositories from entitled nodes. Will search now for a node to use...</key>
<key name="message_0185">The node: [#!variable!node_name!#] is online, has internet access and it is a RHEL machine. Will use it to download HA packages.</key>
<key name="message_0186">No RHEL-based nodes are available. Unable to check for updated packages under the High Availability entitlement.</key>
<key name="message_0187">Downloaded and copied HA packages that started with the letter: [#!variable!letter!#].</key>
<key name="message_0188">Finished downloading HA packages!</key>
<key name="message_0189">
# The following line was added to track this resource UUID in the Anvil! database.
# Please do edit or remove it.
# scan_drbd_resource_uuid = #!variable!uuid!#
</key> <!-- Translation note: The format of [# scan_drbd_resource_uuid = #!variable!uuid!#] is important, don't alter it. -->
<key name="message_0190">Preparing to provision a new server.</key>
<key name="message_0191">Processing an uploaded file.</key>
<key name="message_0192">Moving the file: [#!variable!file!#] to: [#!data!path::directories::shared::files!#].</key>
<key name="message_0193">Calculating the md5sum. This can take a little while for large files, please be patient.</key>
<key name="message_0194">The md5sum is: [#!variable!md5sum!#]. Storing details in the database.</key>
<key name="message_0195">Copying the file over to: [#!variable!host!#]. Please be patient, this could take a bit for large files.</key>
<key name="message_0196">Registering the file to be downloaded to the Anvil!: [#!variable!anvil_name!#]. Anvil! members will sync this file shortly. Member machines that are not online will sync the file when they do return.</key>
<key name="message_0197">Upload is complete!</key>
<key name="message_0198">Processing the pull of a file from Striker.</key>
<key name="message_0199">We're a DR host and there are: [#!variable!strikers!#] dashboards, so we will wait to pull the file until after the nodes are done. We're currently waiting on; Node 1? [#!variable!node1_waiting!#], Node 2? [#!variable!node2_waiting!#]. We'll check again at: [#!variable!wait_until!#].</key>
<key name="message_0200">Beginning rsync from: [#!variable!source_file!#] to: [#!variable!target_directory!#], please be patient...</key>
<key name="message_0201">Download appears to be complete, calculating md5sum to verify, please be patient...</key>
<key name="message_0202">Success! The file has been successfully downloaded.</key>
<key name="message_0203">Processing a file purge.</key>
<key name="message_0204">Processing an uploaded file.</key>
<key name="message_0205">Processing a file mode check.</key>
<key name="message_0206">Proceed? [Y/n]</key> <!-- Default no is message_0021 -->
<key name="message_0207">Preparing to provision a new server.</key>
<key name="message_0208">-=] Listing servers on the Anvil! [#!variable!anvil_name!#].</key>
<key name="message_0209">(No servers found).</key>
<key name="message_0210">Which server would you like to delete?</key>
<key name="message_0211">- Please enter the server name or the number beside the server that you wish to delete. Press 'ctrl + c' to cancel.</key>
<key name="message_0212">[ WARNING ] - This is an irreversible action!
Are you sure that you want to delete the server: [#!variable!server_name!#]? [Type 'Yes'] </key>
<key name="message_0213">Searching to see if the server is running...</key>
<key name="message_0214">The server is running on the host: [#!variable!host_name!#], assigning the job to it.</key>
<key name="message_0215">The server is not running anywhere, assigning the job to this host.</key>
<key name="message_0216">The server is running here, assigning the job to this host.</key>
<key name="message_0217">Preparing to delete a server.</key>
<key name="message_0218">Preparing to migrate a server (or all servers).</key>
<key name="message_0219">- #!variable!server_name!# (Current state: [#!variable!server_state!#])</key>
<key name="message_0220">- * #!variable!server_name!# (Deleted, name can be reused)</key>
<key name="message_0221">We're Striker: [#!variable!striker!#], and we're now configured, so we're done. Striker 1 will finish configuration.</key>
<key name="message_0222">The node: [#!variable!host_name!#] is in an unknown state.</key>
<key name="message_0223">The node: [#!variable!host_name!#] is a full cluster member.</key>
<key name="message_0224">The node: [#!variable!host_name!#] is coming online; the cluster resource manager is running. (step 2/3)</key>
<key name="message_0225">The node: [#!variable!host_name!#] is coming online; the node is a consensus cluster member. (step 1/3)</key>
<key name="message_0226">The node: [#!variable!host_name!#] has booted, but it is not (yet) joining the cluster.</key>
<key name="message_0227">The 'anvil-safe-start' tool is enabled on both this node and on the peer.</key>
<key name="message_0228">The 'anvil-safe-start' tool is disabled on both this node and on the peer.</key>
<key name="message_0229">The 'anvil-safe-start' tool is enabled on this node and disabled on the peer.</key>
<key name="message_0230">The 'anvil-safe-start' tool is disabled on this node and enabled on the peer.</key>
<key name="message_0231">The 'anvil-safe-start' tool is disabled, exiting. Use '--force' to run anyway.</key>
<key name="message_0232">The 'anvil-safe-start' tool is disabled, but '--force' was used, so proceeding.</key>
<key name="message_0233">It appears that another instance of 'anvil-safe-start' is already runing. Please wait for it to complete (or kill it manually if needed).</key>
<key name="message_0234">Preparing to rename a server.</key>
<key name="message_0235">Preparing to rename stop this node.</key>
The core logic is done!!!! Still need to finish end-points for the WebUI to hook into, but the core of M3 is complete! Many, many bugs are expected, of course. :) * Created DRBD->check_if_syncsource() and ->check_if_synctarget() that return '1' if the target host is currently SyncSource or SyncTarget for any resource, respectively. * Updated DRBD->update_global_common() to return the unified-format diff if any changes were made to global-common.conf. * Created ScanCore->check_health() that returns the health score for a host. Created ->count_servers() that returns the number of servers on a host, how much RAM is used by those servers and, if available, the estimated migration time of the servers. Updated ->check_temperature() to set/clear/return the time that a host has been in a warning or critical temperature state. * Finished ScanCore->post_scan_analysis_node()!!! It certainly has bugs, and much testing is needed, but the logic is all in place! Oh what a slog that was... It should be far more intelligent than M2 though, once flushed out and tested. * Created Server->active_migrations() that returns '1' if any servers are in a migration on an Anvil! system. Updated ->migrate_virsh() to record how long a migration took in the "server::migration_duration" variable, which is averaged by ScanCore->count_servers() to estimate migration times. * Updated scan-drbd to check/update the global-common.conf file's config at the end of a scan. * Updated ScanCore itself to not scan when in maintenance mode. Also updated it to call 'anvil-safe-start' when ScanCore starts, so long as it is within ten minutes of the host booting. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="message_0236">This records how long it took to migate a given server. The average of the last five migations is used to guess how long future migrations will take.</key>
<key name="message_0237">One or more servers are migrating. While this is the case, ScanCore post-scan checks are not performed.</key>
<key name="message_0238">Preventative live migration has completed.</key>
<key name="message_0239">Preventative live migration has been disabled. We're healthier than our peer, but we will take no action.</key>
<key name="message_0240"><![CDATA[Please specify the Anvil! or host you want to purge. Use '--anvil <name_or_uuid>' or '--host <name_or_uuid>'.]]></key>
<key name="message_0241"><![CDATA[Used '-y' or '--yes', proceeding automatically.]]></key>
<key name="message_0242">Are you sure that you want to completely purge: [#!variable!host_name!#] (UUID: [#!variable!host_uuid!#] from the Anvil! database(s)?</key>
<key name="message_0243">Are you sure that you want to completely purge the Anvil!: [#!variable!anvil_name!#] (UUID: [#!variable!anvil_uuid!#] along with the machines:</key>
<key name="message_0244">- Host name: [#!variable!host_name!#] (host UUID: [#!variable!host_uuid!#]:</key>
<key name="message_0245">Now purging: [#!variable!host_name!#] (host UUID: [#!variable!host_uuid!#]:</key>
<key name="message_0246">Purging the Anvil!: [#!variable!anvil_name!#] (UUID: [#!variable!anvil_uuid!#]:</key>
<key name="message_0247"><![CDATA[Please specify which server you want to manage with '--server <name_or_uuid>'. Available servers on this Anvil! system;]]></key>
<key name="message_0248">Created the journald directory: [#!variable!directory!#].</key>
<key name="message_0249">Checking that the daemon: [#!variable!daemon!#] is running.</key>
<key name="message_0250">The daemon: [#!variable!daemon!#] was not running, starting it now.</key>
<key name="message_0251">Preparing to manage a server.</key>
<key name="message_0252">Found the server: [#!variable!server_name!#] in the database, loading details now.</key>
<!-- Success messages shown to the user -->
<key name="ok_0001">Saved the mail server information successfully!</key>
<key name="ok_0002">The mail server: [#!variable!mail_server!#] has been deleted.</key>
<key name="ok_0003">The alert recipient: [#!variable!recipient_email!#] has been deleted.</key>
<key name="ok_0004">Saved the alert recipient information successfully!</key>
<key name="ok_0005">The fence device: [#!variable!name!#] has been successfully saved!</key>
<key name="ok_0006">The fence device: [#!variable!name!#] has been successfully deleted!</key>
<key name="ok_0007">The UPS: [#!variable!name!#] has been successfully saved!</key>
<key name="ok_0008">The UPS: [#!variable!name!#] has been successfully deleted!</key>
<key name="ok_0009">The install manifest: [#!variable!name!#] has been successfully saved!</key>
<key name="ok_0010">The install manifest: [#!variable!name!#] has been successfully deleted!</key>
<key name="ok_0011">The install manifest job has be initiated! Target machines should start configuring momentarily!</key>
<key name="ok_0012">The file has been scheduled to purge from all systems.</key>
<key name="ok_0013">The file has been scheduled to be renamed on all systems.</key>
<key name="ok_0014">The file type been changed.</key>
<key name="ok_0015">The Anvil!: [#!variable!anvil_name!#] members will now sync this file.</key>
<key name="ok_0016">The Anvil!: [#!variable!anvil_name!#] members will now remove this file.</key>
<!-- String prefixes -->
<key name="prefix_0001">[ Error ] - </key>
<key name="prefix_0002">[ Warning ] - </key>
<key name="prefix_0003">[ Note ] - </key>
<key name="prefix_0004">Error</key>
<key name="prefix_0005">Warning</key>
<key name="prefix_0006">Note</key>
<!-- General strings shown in Striker -->
<key name="striker_0001">Welcome! Lets setup your #!string!brand_0003!# dashboard...</key>
<key name="striker_0002">We're going to ask you a few questions so that we can set things up for your environment. If you need help at any time, just click on the "[?]" icon in the top-right. Let's get started!</key>
<key name="striker_0003">Organization name</key>
<key name="striker_0004">This is the name of the company, organization or division that owns or maintains this #!string!brand_0006!#. This is a descriptive field and you can enter whatever makes most sense to you.</key>
<key name="striker_0005">Prefix</key>
<key name="striker_0006">This is a one to five character prefix used to identify this organization. It is used as the prefix for host names for dashboards, nodes and foundation pack equipment. You can use letters and numbers and set whatever makes sense to you.</key>
<key name="striker_0007">Domain Name</key>
<key name="striker_0008">This is the domain name you would like to use for this dashboard. This will also be used as the default domain used when creating new install manifests.</key>
<key name="striker_0009">Sequence Number</key>
<key name="striker_0010">If this is your first Striker, set this to '1'. If it is the second one, set '2'. If it is the third, '3' and so on.</key>
<key name="striker_0011">Internet-Facing Network Count</key>
<key name="striker_0012"><![CDATA[How many internal networks will this dashboard have access to? In most cases, this is just '1'.<br /><b>NOTE</b>: You must have a network interface for the back-channel network, plus one for each internal network. If you have two interfaces for each network, we will setup bonds for redundancy automatically.]]></key>
<key name="striker_0013">Next</key>
<key name="striker_0014">Step 1</key>
<key name="striker_0015">IFN Count</key>
<key name="striker_0016">Host name</key>
<key name="striker_0017">This is the host name for this Striker dashboard. Generally it is a good idea to stick with the default.</key>
<key name="striker_0018">Back-Channel Network link #!variable!number!#</key>
<key name="striker_0019">This is where you configure the network to enable access this Back-Channel Network.</key>
<key name="striker_0020">Storage Network link #!variable!number!#</key>
<key name="striker_0021">This is where you configure the network to enable access this Storage Network.</key>
<key name="striker_0022">Internet-Facing Network link #!variable!number!#</key>
<key name="striker_0023">This is where you configure the network to enable access this Internet-Facing Network.</key>
<key name="striker_0024">IP Address</key>
<key name="striker_0025">Subnet Mask</key>
<key name="striker_0026">Gateway</key>
<key name="striker_0027">DNS Server</key>
<key name="striker_0028">Network Interface</key>
<key name="striker_0029">Primary Interface</key>
<key name="striker_0030">Backup Interface</key>
<key name="striker_0031">Striker user name</key>
<key name="striker_0032">This is the user name that you will log into Striker as and the name of the user that owns the database.</key>
<key name="striker_0033">Striker password</key>
<key name="striker_0034"><![CDATA[This will be the password used to log into this Striker and connect to its database. It must be 6+ characters long.<br /><b>NOTE</b>: This password needs to be stored in plain text. Do not use a password you use elsewhere.]]></key>
<key name="striker_0035">Gateway</key>
<key name="striker_0036">This is the network gateway used to access the outside world.</key>
<key name="striker_0037">DNS</key>
<key name="striker_0038">This is the domain name server(s) to use when resolving domain names. You can specify 2 or more, separated by commas.</key>
<key name="striker_0039">Gateway Interface</key>
<key name="striker_0040">This is the interface with the internet access. Usually this is "ifn_link1".</key> <!-- Translation note; leave 'ifn_link1' as it is, it is the device name. -->
<key name="striker_0041">We're almost ready! Does this look right? If so, we'll setup this Striker dashboard.</key>
<key name="striker_0042">What we are planning to do...</key>
<key name="striker_0043">Apply New Configuration</key>
<key name="striker_0044">Done!</key>
<key name="striker_0045">The network will be reconfigured momentarily. You may need to reconnect using the new network address you chose.</key>
<key name="striker_0046">Offline...</key>
<key name="striker_0047">A job to reconfigure this Striker is underway. It is: [#!variable!percent!#%] done. It last updated its progress at: [#!variable!timestamp!#] (#!variable!seconds_ago!# seconds ago). Please try again shortly.</key>
<key name="striker_0048">This indicates that this machine has been configured. After an initial install, this variable won't exist. If it is set to '0', it will trigger a reconfiguration of the local system.</key>
<key name="striker_0049">Log in</key>
<key name="striker_0050">User name</key>
<key name="striker_0051">Password</key>
<key name="striker_0052">Striker Configuration and Management</key>
<key name="striker_0053">Reload</key>
<key name="striker_0054">Configure Striker Peers</key>
<key name="striker_0055">When you sync with a peer, this machine's data will be copied to and recorded on the peer's database. Data gathered by ScanCore will also be kept in sync on both dashboards, and any general purpose data collected by other dashboards while this one is offline will be copied back when this machine comes online. Should this machine ever be rebuilt, data recorded from before the rebuild will be automatically restored as well.</key>
<key name="striker_0056">Update System</key>
<key name="striker_0057">This will update this system using any available software repositories. You can also use this to create or load update packs to allow for the update of offline or air-gapped #!string!brand_0006!# systems.</key>
<key name="striker_0058">Configure Striker</key>
<key name="striker_0059">Update the network configuration for this Striker.</key>
<key name="striker_0060">Welcome!</key>
<key name="striker_0061">Create or manage #!string!brand_0006!# systems</key>
<key name="striker_0062">Manage this Striker system and sync with others</key>
<key name="striker_0063">Log out</key>
<key name="striker_0064">Help and support</key>
<key name="striker_0065"><![CDATA[Forgot your password?<br />Use '<span class="code">anvil-change-password</span>' from the console to reset it.]]></key>
<key name="striker_0066">Access to this machine via: [#!variable!network!#].</key>
<key name="striker_0067">Save</key>
<key name="striker_0068">Delete</key>
<key name="striker_0069">[db_user@]host[:pgsql_port][,ssh=ssh_port]</key>
<key name="striker_0070">Add</key>
<key name="striker_0071">Ping</key>
<key name="striker_0072">Bi-directional</key>
<key name="striker_0073">When checked, the #!string!brand_0006!# will ping the peer before trying to connect to the database. This speeds up skipping a database that is offline, but won't help if the databsae is behind a router. When unchecked, connections will be a touch faster when the database is available.</key>
<key name="striker_0074">When checked, the peer will be configured to add the local database as a peer at the same time that we add it to this system.</key>
<key name="striker_0075">Access</key>
<key name="striker_0076"><![CDATA[This tells Striker how to connect to the peer. The default username is '<span class="fixed_width">admin</span>', and the default port is '<span class="fixed_width">5432</span>'. If the peer uses these, then you only need to specify the IP address or host name of the peer. If the user name is not '<span class="fixed_width">admin</span>', then you need to use the format '<span class="fixed_width">user@host</span>. If the TCP port is not '<span class="fixed_width">5432</span>', then you need to use '<span class="fixed_width">host:port</span>. If both user and port are different, use the format '<span class="fixed_width">user@host:port</span>'.]]></key>
<key name="striker_0077"><![CDATA[If '#!string!striker_0072!#' is set, we will need to update the peer's configuration. If the peer's SSH port is not '<span class="fixed_width">22</span>', you can append: '<span class="fixed_width">,ssh=X</span>' where 'X' is the SSH TCP port.]]></key>
<key name="striker_0078">Please verify</key>
<key name="striker_0079">Peer</key>
<key name="striker_0080">Ping before connect</key>
<key name="striker_0081">The test connection was successful. When saved, the resynchronization process might take a few minutes, and cause maintenance periods where some features are offline until complete.</key>
<key name="striker_0082">Confirm</key>
<key name="striker_0083">Would you like to reconfigure this machine? If you confirm, Striker will re-run the initial configuration. Connections to peers and database data will be retained.</key>
<key name="striker_0084">Confirmed</key>
<key name="striker_0085">This Striker has been marked as reconfigured. Reload to start the confguration process.</key>
<key name="striker_0086">Would you like to update the operating system on this machine? This Striker will be placed into maintenance mode until the update completes.</key>
<key name="striker_0087">When enabled on a Striker dashboard, the web interface will be disabled and ScanCore will not record to the local database. When enabled on a node, no servers will be allowed to run on it, and any already running on it will be migrated. When run on a DR node, that node will be disconnected from storage and no servers will be allowed to run on it. When disabled, all normal functions are available</key>
<key name="striker_0088">The system will be updated momentarily. This system will now be in maintenance mode until the update is complete.</key>
<key name="striker_0089">This indicates whether this system needs to be rebooted or not.</key>
<key name="striker_0090">This system is in maintenance mode and is not currently available.</key>
<key name="striker_0091">Reboot This System</key>
<key name="striker_0092">This option will restart the host operating system. This is not currently needed.</key>
<key name="striker_0093">This machine needs to be rebooted. This option will restart the host operating system.</key>
<key name="striker_0094">Power Off This System</key>
<key name="striker_0095">This will power off the Striker machine and leave it off. To power it back on, you will need physical access or cycle the power of the PDU feeding this Striker.</key>
<key name="striker_0096">Recent and Running Jobs</key>
<key name="striker_0097">There are no jobs currently running or recently completed.</key>
<key name="striker_0098">Back</key>
<key name="striker_0099">Job</key>
<key name="striker_0100">Reboot this system? If you proceed, you will be logged out and this system will be rebooted. Please be sure you have access in the rare chance that the system fails to boot back up.</key>
<key name="striker_0101">Power off this system? If you proceed, you will be logged out and this system will be powered off. You will need physical access to the machine to turn it back on in most cases. A properly condigured Striker dashboard will power on after a power cycle (via a PDU) or any machine with IPMI if you have access to a machine on the BCN.</key>
<key name="striker_0102">The peer will be added to the local configuration shortly. Expect slight performance impacts if there is a lot of data to synchronize.</key>
<key name="striker_0103">The peer will be added to the local configuration shortly, and we will be added to their configuration as well. Expect slight performance impacts if there is a lot of data to synchronize.</key>
<key name="striker_0104">The peer will be removed from to the local configuration shortly. Any existing data will remain but no further data will be shared.</key>
<key name="striker_0105"><![CDATA[Are you sure that you want to remove the peer: [<span class="code">#!variable!peer!#</span>]? If so, no further data from this system will be written to the peer. Do note that any existing data will remain and will be reused if you add the peer back again.]]></key>
<key name="striker_0106">Indicates when the last time the host system's RPM repository was refreshed. If the last refresh failed, this will be incremented by one day before another attempt is made (regardless of 'install-manifest::refresh-period' setting).</key>
<key name="striker_0107">Enable 'Install Target'</key>
<key name="striker_0108">Disable 'Install Target'</key>
<key name="striker_0109"><![CDATA[<span class="disabled">'Install Target' Not Available</span>]]></key>
<key name="striker_0110">The 'Install Target' feature is used to do base (stage 1) installs on new or rebuilt Striker dashboards, #!string!brand_0006!# nodes or Disaster Recivery hosts. Specifically, it allows machines to boot off their BCN network interface and install the base operating system.</key>
<key name="striker_0111">The 'Install Target' disable job has been requested. It should be completed in a few moments. You may need to reload the next page in a minute to see that it has been disabled.</key>
<key name="striker_0112">The 'Install Target' enabled job has been requested. It should be completed in a few moments. You may need to reload the next page in a minute to see that it has been enabled.</key>
<key name="striker_0113">#!string!brand_0006!# Configuration and Management.</key>
<key name="striker_0114">Create a new #!string!brand_0006!# system.</key>
<key name="striker_0115">Any running jobs, or jobs that have ended recently, are displayed below.</key>
<key name="striker_0116">Initialize an #!string!brand_0006!# node or disaster recovery target.</key>
<key name="striker_0117">Initial host configuration.</key>
<key name="striker_0118">Prepare a new machine for use as an #!string!brand_0006!# node or DR (disaster recovery) host. This process will setup the repository, install the appropriate anvil packages and link it to the #!string!brand_0006!# databases on the Strikers you choose.</key>
<key name="striker_0119">#!string!brand_0006!# File Manager.</key>
<key name="striker_0120">Saving File...</key>
<key name="striker_0121">Prepare Node or DR Host</key>
<key name="striker_0122">Please enter the IP address and root password of the target machine you want to configure.</key>
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair. * Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered. * Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database. * Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host. * Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper. * In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead. * Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table. * Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host. Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
<key name="striker_0123">'root' Password</key>
<key name="striker_0124"><![CDATA[The test connection was successful! If you proceed with initialization, the target will have the Alteeve repo added and: [#!variable!package!#] installed. The target will also be configured to use our database.]]></key>
<key name="striker_0125">Host to Initialize</key>
* Got the node/dr host initialization form to the point where it can test access and decide if it should show the Red Hat account form. Decided that for M3, node/dr host setup will now be a four-stage process; initial install (over PXE), initialization (install the proper anvil-{node,dr} RPM and connect to the database), setup/map the network, and then add to an Anvil! pair. * Updated striker to no longer try to SSH to a remote machine. To enable this, we'd have to give apache a shell and an SSH key, which is dumb and dangerous when considered. * Created tools/striker-get-peer-data which is meant to be invoked as the 'admin' user (via a setuid c-wrapper). It collects basic data about a target machine and reports what it finds on STDOUT. It gets the password for the target via the database. * Updated anvil-daemon to check/create/update setuid c-wrapper(s), which for now is limited to call_striker-initialize-host. * Created Anvil/Tools/Striker.pm to store Striker web-specific methods, including get_peer_data() which calls tools/striker-initialize-host via the setuid admin call_striker-initialize-host c-wrapper. * In order to allow striker via apache to read a peer's anvil.version, which it can no longer do over SSH, any connection to a peer where the anvil.version is read is cached as /etc/anvil/anvil.<peer>.version. When Get->anvil_version is called as 'apache', this file is read instead. * Updated Database->resync_databases() and ->_find_behind_databases() to ignore the 'states' table. * Created tools/striker-initialize-host which will be called as a job to initialize a node/dr host. Signed-off-by: Digimer <digimer@alteeve.ca>
5 years ago
<key name="striker_0126">Current host name</key>
<key name="striker_0127">Host UUID</key>
<key name="striker_0128">Initialize</key>
<key name="striker_0129">The target will now be initialized. How long this takes will depend on how fast files can be downloaded and, when needed, how long it takes to register with Red Hat and add the needed repositories.</key>
<key name="striker_0130">Configure the network on a node or DR host.</key>
<key name="striker_0131">This option will allow old machine keys to be removed. This is not currently needed.</key>
<key name="striker_0132">There are one or more broken keys, blocking access to target machines. If a target has been rebuilt, you can clear the old keys here.</key>
<key name="striker_0133">Manage Changed Keys</key>
<key name="striker_0134">There are no known bad keys at this time.</key>
<key name="striker_0135">Add or remove Striker peers.</key>
<key name="striker_0136">Peer dashboards are Striker machines whose databases this Striker will use to record data. If this machine ever needs to be replaced, or goes offline for a period of time, it will automatically pull the data back from any peers that it is missing.</key>
<key name="striker_0137"><![CDATA[
The machines responding when we try to connect to the targets below are responding with a different "fingerprint". This indicates that the target is no longer the machine we saw before.<br />
<br />
<span class="warning">Warning</span>: If you haven't rebuilt the target, then the "broken key" could actually be a "<a href="https://en.wikipedia.org/wiki/Man-in-the-middle_attack" target="_new" class="highlight">man in the middle<a/>" attack. Verify that the target has changed for a known reason before proceeding!<br />
<br />
If you are comfortable that the target has changed for a known reason, you can select the broken keys below to have them removed.<br />
]]></key>
<key name="striker_0138">New host name</key>
<key name="striker_0139"><![CDATA[<unchanged>]]></key>
<key name="striker_0140">Indicates when the last time the networks connected to this host were scanned. The scan is done to help find the IP addresses assigned to hosted servers and virtual machine equipment. The scan is a simple, sequential nmap ping scan in an attempt to be as non-invasive as possible. The frequency of these scans can be controlled by setting 'network-scan::scan-period' to a number of seconds (the current value is: [#!data!network-scan::scan-period!# seconds]).</key>
<key name="striker_0141">Configure the network interfaces for this host.</key>
<key name="striker_0142"><![CDATA[This step renames the real network interfaces, pairs them into redundant bonds and creates bridges for connecting to hosted servers.<br /><br />IPs and host names are optional, and can be set when assembling this host into an #!string!brand_0006!# system later.]]></key>
<key name="striker_0143">If you would like to change the host name now, you can do so here. When adding this machine to an #!string!brand_0006!#, the host name will be set there as well making this optional.</key>
<key name="striker_0144">This is the network gateway used to access the outside world. We'll match it to the appropriate network interface.</key>
<key name="striker_0145">If left blank, the interface will be configured for DHCP.</key>
<key name="striker_0146">Confirm network configuration.</key>
<key name="striker_0147">If you confirm, the host will enter maintenance mode, reconfigure its network and reboot.</key>
<key name="striker_0148">Network Plan</key>
<key name="striker_0149">Network</key>
<key name="striker_0150">Address</key>
<key name="striker_0151">Bridged?</key>
<key name="striker_0152"><![CDATA[<span class="notice">dhcp</span>]]></key>
<key name="striker_0153">IP address for: [#!variable!say_network!#]</key>
<key name="striker_0154">Subnet mask for: [#!variable!say_network!#]</key>
<key name="striker_0155">The network interface that connects to the default gateway.</key>
<key name="striker_0156">This is the primary network interface. All things being equal, this is the interface that network traffic will travel over.</key>
<key name="striker_0157">This is the secondary network interface. Network traffic will switch over to this interface if there is a problem detected with the primary interface.</key>
<key name="striker_0158">If set, a bridge will be created on this network, allowing hosted servers to use this network.</key>
<key name="striker_0159">This is the host name for the target system.</key>
<key name="striker_0160">The network will use DHCP to attempt to get an IP address.</key>
<key name="striker_0161">The network will soon be reconfigured and then the target will reboot. In a couple minutes, it should be ready.</key>
<key name="striker_0162">Return</key>
<key name="striker_0163">How many network connections will exist for each network type.</key>
<key name="striker_0164">Email and alert configuration</key>
<key name="striker_0165">Alert email server and recipient configuration.</key>
<key name="striker_0166">Configure which server(s) can be used for forwarding email alerts to.</key>
<key name="striker_0167">Configure who will receive email alerts.</key>
<key name="striker_0168">Outgoing mail server</key>
<key name="striker_0169">This is the host name or IP address of the server that email alerts are forwarded to.</key>
<key name="striker_0170">Login Name</key>
<key name="striker_0171">This is the the user name used when authenticating with the outgoing mail server.</key>
<key name="striker_0172">Login Password</key>
<key name="striker_0173">This is the the password for the user name used when authenticating with the outgoing mail server.</key>
<key name="striker_0174">None</key> <!-- Email Connection Security - None -->
<key name="striker_0175">SSL/TLS</key> <!-- Email Connection Security - SSL/TLS -->
<key name="striker_0176">STARTTLS</key> <!-- Email Connection Security - STARTTLS -->
<key name="striker_0177">Normal Password</key> <!-- Email Authentication Method - Normal Password -->
<key name="striker_0178">Encrypted Password</key> <!-- Email Authentication Method - Encrypted Password -->
<key name="striker_0179">Kerberos / GSSAPI</key> <!-- Email Authentication Method - Kerneros / GSSAPI -->
<key name="striker_0180">NTLM</key> <!-- Email Authentication Method - NTLM -->
<key name="striker_0181">TLS Certificate</key> <!-- Email Authentication Method - TLS Certificate -->
<key name="striker_0182">OAuth2</key> <!-- Email Authentication Method - OAuth2 -->
<key name="striker_0183">Connection Security</key>
<key name="striker_0184">Authentication method</key>
<key name="striker_0185">host_or_ip[:port]</key>
<key name="striker_0186">Indicates when the last time the OUI file was parsed. This is done to translate MAC addresses (and IPs associated with those MAC addresses) to the company that owns them.</key>
<key name="striker_0187">Existing mail servers:</key>
<key name="striker_0188">Clear the form</key>
<key name="striker_0189">Are you sure that you want to delete:</key>
<key name="striker_0190">Alert Recipient</key>
<key name="striker_0191">Alert level</key>
<key name="striker_0192">Language</key>
<key name="striker_0193">Units</key>
<key name="striker_0194">Recipient's Name</key>
<key name="striker_0195">This is the name that will be displayed when sending an email to this user.</key>
<key name="striker_0196">Recipient's Email</key>
<key name="striker_0197">The email that alerts are sent to.</key>
<key name="striker_0198">The language the user will receive alerts in.</key>
<key name="striker_0199"></key> <!-- free -->
<key name="striker_0200">The alert level used for new (and existing) #!string!brand_0006!# systems.</key>
<key name="striker_0201">Existing alert recipients:</key>
<key name="striker_0202">This puts the host into network mapping mode. In this most, most functions are disabled and the link status of network interfaces are closely monitored.</key>
<key name="striker_0203">Create or Run an Install Manifest</key>
<key name="striker_0204">Create a new Install Manifest; The instructions used to assemble/repair a given #!string!brand_0006!# system.</key>
<key name="striker_0205">Existing Manifests:</key>
<key name="striker_0206">Run</key>
<key name="striker_0207">Edit</key>
<key name="striker_0208">Configure fence devices. These will be used when creating install manifests and are a critical safety mechanisms that will protect your data when a node misbehaves.</key>
<key name="striker_0209">Configure fence devices.</key>
<key name="striker_0210">Fence devices are used to force a node that has entered an unknown state into a known state. Recovery after a node fault can not proceed until this happens, so this step is critically important.</key>
<key name="striker_0211">Note: Any IPMI (iRMC, iLO, DRAC, etc) fence config will be handled in the host's config. This section configures shared devices, like PDUs. The ports/outlets a given node will use will be set in the install manifest later.</key>
<key name="striker_0212">How Many?</key>
<key name="striker_0213">Configure fence devices:</key>
<key name="striker_0214">List of fence agents installed on this system:</key>
<key name="striker_0215">Configuring '#!data!cgi::fence_agent::value!#'</key>
<key name="striker_0216">Configure device #!variable!number!#:</key>
<key name="striker_0217">Options description (from the agent's metadata):</key>
<key name="striker_0218">Note: Names and descriptions come from the fence agent itself. If you need more help, please run 'man #!variable!name!#' at the command line.</key>
<key name="striker_0219">Required field</key>
<key name="striker_0220">Device #!variable!number!#:</key>
<key name="striker_0221">Please confirm the fence devices are configured the way you like.</key>
<key name="striker_0222">Please confirm the fence device is configured the way you like.</key>
<key name="striker_0223">This is the unique name (often the host name) of this specific fence device.</key>
<key name="striker_0224">Existing fence devices:</key>
<key name="striker_0225">Confirm deleting '#!variable!name!#'</key>
<key name="striker_0226">Install Manifest; Step #!variable!number!#</key>
<key name="striker_0227">First step are some simple questions to know what kind of #!string!brand_0006!# this manifest will build.</key>
<key name="striker_0228">#!string!brand_0006!# prefix:</key>
<key name="striker_0229">#!string!brand_0006!# Sequence:</key>
<key name="striker_0230"><![CDATA[Number of <a href="https://www.alteeve.com/w/IFN" target="_new">IFNs</a>.]]></key>
<key name="striker_0231">Add UPSes.</key>
<key name="striker_0232">UPS #!variable!number!#:</key>
<key name="striker_0233">Please confirm the UPS is configured the way you like.</key>
<key name="striker_0234">Please confirm the UPSes are configured the way you like.</key>
<key name="striker_0235">This is the unique name (often the host name) of this specific UPS.</key>
<key name="striker_0236">Existing UPSes:</key>
<key name="striker_0237">These will be used when creating install manifests and are used to know when to shed load, full shut down and when to restore services.</key>
<key name="striker_0238">List of UPSes supported by ScanCore on this system:</key>
<key name="striker_0239">UPS #!variable!number!#:</key>
<key name="striker_0240">Configuring '#!data!cgi::ups_brand::value!#'</key>
<key name="striker_0241">This is the IP address of the UPS. This must be reachable by nodes powered by this UPS.</key>
<key name="striker_0242">The only time to change this is if a UPS has been replaced (using the same name/IP) by a UPS of a different brand.</key>
<key name="striker_0243">Saving UPS data</key>
<key name="striker_0244">This is the sequence number for this #!string!brand_0006!#. The first #!string!brand_0006!# will be '1', the second will be '2', etc. This is used to preset IP addresses, PDU outlet positions, etc.</key>
<key name="striker_0245"><![CDATA[In most cases, there is only one <a href="https://www.alteeve.com/w/IFN" target="_new">IFN</a> on an #!string!brand_0006!#. If you have separate networks and plan to restrict certain servers to certain networks, you can install extra network interfaces into the nodes (two per IFN). If this is your plan, set this value to the number of IFNs you plan to use.]]></key>
<key name="striker_0246">This is a one to five character prefix used to identify the department, organization, or company whose servers will run on this #!string!brand_0006!#. You can use letters and numbers and set whatever makes sense to you.</key>
<key name="striker_0247">This is the domain name you would like to use for this #!string!brand_0006!#. This will be used in the next step when setting default hostnames for various devices.</key>
<key name="striker_0248">The second step specified the networks (subnets) that will be used for each network. Generally, you only want to change the IFN(s). The BCN and SN are always '/16' subnets and should only be changed if they conflict with an existing IFN.</key>
<key name="striker_0249">Default</key>
<key name="striker_0250">The third step is where it all comes together!</key>
<key name="striker_0251"><![CDATA[<a href="https://en.wikipedia.org/wiki/Network_Time_Protocol" target="_new">NTP</a>]]></key>
<key name="striker_0252"><![CDATA[You can specify which network time servers to use, if necessary. You can use commas to specify two or more <a href="https://en.wikipedia.org/wiki/Network_Time_Protocol" target="_new">NTP</a> servers.]]></key>
<key name="striker_0253"><![CDATA[<a href="https://en.wikipedia.org/wiki/Maximum_transmission_unit" target="_new">MTU<a/>]]></key>
<key name="striker_0254"><![CDATA[If you network supports "Jumbo Frames" (maximum transmission unit size, <a href="https://en.wikipedia.org/wiki/Maximum_transmission_unit" target="_new">MTU<a/>, over 1500 bytes), you can specify the maximum size in bytes here. Be sure all equipment support your chosen MTU size! When in doubt, leave this set to 1500.]]></key>
<key name="striker_0255">Node 1</key>
<key name="striker_0256">Node 2</key>
<key name="striker_0257">DR Host</key>
<key name="striker_0258">IPMI IP</key>
<key name="striker_0259"><![CDATA[<span class="notice">Note</span>: The password to use for an #!string!brand_0006!# will be asked when the manifest is actually run. The password is not stored in the manifest.]]></key>
<key name="striker_0260">IPMI Details</key>
<key name="striker_0261"><![CDATA[<span class="notice">Note</span>: The IPMI information is set when a node is initialized if an IPMI BMC is found. Only the IP address is needed.]]></key>
<key name="striker_0262">Fence Port</key>
<key name="striker_0263">This is the "port" (outlet, name or other ID) that the associated fence device uses to terminate the target node. This could be the outlet number on a PDU, VM name on a hypervisor host, etc.</key>
<key name="striker_0264">Powered By UPS</key>
<key name="striker_0265">If the machine is powered by a given UPS, click to check the corresponding box. This information will be used in power loss events to decide what machine should host servers, which should be powered off during load-shed conditions and when to gracefully power off entirely.</key>
<key name="striker_0266">If your machine has an IPMI BMC, (iDRAC, iLO, iRMC, etc), then you can enter the IP to give it here. Further details will be collected when the manifest runs. Leave blank if the machine doesn't have IPMI.</key>
<key name="striker_0267"><![CDATA[Network: [<span class="code">#!variable!network!#</span>].]]></key>
<key name="striker_0268"><![CDATA[Please be sure that the details match how you want your #!string!brand_0006!# to be configured.]]></key>
<key name="striker_0269">Notes</key>
<key name="striker_0270">Run manifest: [#!variable!name!#]:</key>
<key name="striker_0271">Set all passwords to...</key>
<key name="striker_0272"><![CDATA[A node that is found to be running a server will <b>NOT</b> be changed, except to configure passwordless SSH to the peer node and/or DR host. As such, it is safe to run this manifest when adding a rebuilt node or adding a DR host to a live #!string!brand_0006!# system.]]></key>
<key name="striker_0273">Adding a disaster recovery (DR) host is optional. You can add one later if you don't have one now.</key>
<key name="striker_0274">If there are no servers on either node (as it a new #!string!brand_0006!# build), the OSes will be updated. Otherwise, they won't be updated. If the kernel is updated, or the network reconfigured, the node will be rebooted.</key>
<key name="striker_0275">Free-form description of this system.</key>
<key name="striker_0276">This tracks the last time a given mail server was configured for use. It allows for a round-robin switching of mail servers when one mail server stops working and two or more mail servers have been configured.</key>
<key name="striker_0277">No UPSes</key>
<key name="striker_0278">This is a condition record, used by programs like scan agents to track how long a condition has existed for.</key>
* Created Convert->fence_ipmilan_to_ipmitool() that takes a 'fence_ipmilan' call and converts it into a direct 'ipmitool' call. * Created Database->get_power() that loads data from the special 'power' table. * Fixed a bug in calls to Network->ping() where some weren't formatted properly for receiving two string variables. * Updated Database->get_anvils() to record the machine types when recording host information. * Updated Database->get_hosts_info() to also load the 'host_ipmi' column. * Updated Database->get_upses() to store the link to the 'power' -> 'power_uuid', when available. * Created ScanCore->call_scan_agents() that does the work of actually calling scan agents, moving the logic out from the scancore daemon. * Created ScanCore->check_power() that takes a host and the anvil it is in and returns if it's on batteries or not. If it is, the time on batteries and estimate hold-up time is returned. If not, the highest charge percentage is returned. * Created ScanCore->post_scan_analysis() that is a wrapper for calling the new ->post_scan_analysis_dr(), ->post_scan_analysis_node() and ->post_scan_analysis_striker(). Of which, _dr and _node are still empty, but _striker is complete. ** ->post_scan_analysis_striker() is complete. It now boots a node after a power loss if the UPSes powering it are OK (at least one has mains power, and the main-powered UPS(es) have reached the minimum charge percentage). If it's thermal, IPMI is called and so long as at least one thermal sensor is found and it/they are all OK, it is booted. For now, M2's thermal reboot delay logic hasn't been replicated, as it added a lot of complexity and didn't prove practically useful. * Created System->collect_ipmi_data() and moved 'scan_ipmitool's ipmitool call and parse into that method. This was done to allow ScanCore->post_scan_analysis_striker() to also call IPMI on a remote machine during thermal down events without reimplementing the logic. * Updated scan-ipmitool to only record temperature data for data collected locally. Also renamed 'machine' variables and hash keys to 'host_name' to clarify what is being stored. * Updated scancore to clear the 'system::stop_reason' variable. * Added missing packages to striker-manage-install-target. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="striker_0279">This indicated why a machine was powered off. This is used by ScanCore to decide if or when to power up the target host.</key>
<key name="striker_0280">Storage group #!variable!number!#</key> <!-- This is used for auto-generated VG groups -->
<key name="striker_0281">Manage this file.</key>
<key name="striker_0282">This will remove the file from all systems.</key>
<key name="striker_0283">There are no #!string!brand_0006!# configured yet. Existing files will automatically sync to new clusters.</key>
<key name="striker_0284">Cancel</key>
<key name="striker_0285">Close</key>
<key name="striker_0286">This controls if 'anvil-safe-start' is enabled on a node.</key>
<key name="striker_0287">The virtio NAT bridge: [#!variable!bridge!#] exists. Removing it...</key>
<key name="striker_0288">Manage existing Anvil! systems.</key>
<key name="striker_0289">Control when the database is locked for use by any system except the lock holder.</key>
<!-- These are generally units and appended to numbers -->
<key name="suffix_0001">#!variable!number!#/sec</key>
<key name="suffix_0002">s</key> <!-- Short suffix for 'seconds'. -->
<key name="suffix_0003">m</key> <!-- Short suffix for 'minutes'. -->
<key name="suffix_0004">h</key> <!-- Short suffix for 'hours'. -->
<key name="suffix_0005">d</key> <!-- Short suffix for 'days'. -->
<key name="suffix_0006">w</key> <!-- Short suffix for 'weeks'. -->
<key name="suffix_0007">Seconds</key> <!-- Long suffix for 'seconds'. -->
<key name="suffix_0008">Minutes</key> <!-- Long suffix for 'minutes'. -->
<key name="suffix_0009">Hours</key> <!-- Long suffix for 'hours'. -->
<key name="suffix_0010">Days</key> <!-- Long suffix for 'days'. -->
<key name="suffix_0011">Weeks</key> <!-- Long suffix for 'days'. -->
<key name="suffix_0012">ms</key> <!-- Short suffix for 'milliseconds'. -->
<key name="suffix_0013">milliseconds</key> <!-- Long suffix for 'seconds'. -->
<key name="suffix_0014">B</key> <!-- Short suffix for 'bytes'. -->
<key name="suffix_0015">KB</key> <!-- Short suffix for 'kilobytes' (1,000 bytes). -->
<key name="suffix_0016">MB</key> <!-- Short suffix for 'megabyte' (1,000,000 bytes). -->
<key name="suffix_0017">GB</key> <!-- Short suffix for 'gigabyte' (1,000,000,000 bytes). -->
<key name="suffix_0018">TB</key> <!-- Short suffix for 'terabyte' (1,000,000,000,000 bytes). -->
<key name="suffix_0019">PB</key> <!-- Short suffix for 'petabyte' (1,000,000,000,000,000 bytes). -->
<key name="suffix_0020">EB</key> <!-- Short suffix for 'exabyte' (1,000,000,000,000,000,000 bytes). -->
<key name="suffix_0021">ZB</key> <!-- Short suffix for 'zettabyte' (1,000,000,000,000,000,000,000 bytes). -->
<key name="suffix_0022">YB</key> <!-- Short suffix for 'yotabyte' (1,000,000,000,000,000,000,000,000 bytes). -->
<key name="suffix_0023">KiB</key> <!-- Short suffix for 'kibibyte' (1,024 bytes). -->
<key name="suffix_0024">MiB</key> <!-- Short suffix for 'mebibyte' (1,048,576 bytes). -->
<key name="suffix_0025">GiB</key> <!-- Short suffix for 'gibibyte' (1,073,741,824 bytes). -->
<key name="suffix_0026">TiB</key> <!-- Short suffix for 'tebibyte' (1,099,511,627,776 bytes). -->
<key name="suffix_0027">PiB</key> <!-- Short suffix for 'pebibyte' (1,125,899,906,842,624 bytes). -->
<key name="suffix_0028">EiB</key> <!-- Short suffix for 'exbibyte' (1,152,921,504,606,846,976 bytes). -->
<key name="suffix_0029">ZiB</key> <!-- Short suffix for 'zebibyte' (1,180,591,620,717,411,303,424 bytes). -->
<key name="suffix_0030">YiB</key> <!-- Short suffix for 'yobibyte' (1,208,925,819,614,629,174,706,176 bytes). -->
<key name="suffix_0031">B</key> <!-- Long suffix for 'bytes'. -->
<key name="suffix_0032">Kilobyes</key> <!-- Long suffix for 'kilobytes' (1,000 bytes). -->
<key name="suffix_0033">Megabytes</key> <!-- Long suffix for 'megabyte' (1,000,000 bytes). -->
<key name="suffix_0034">Gigabytes</key> <!-- Long suffix for 'gigabyte' (1,000,000,000 bytes). -->
<key name="suffix_0035">Terabytes</key> <!-- Long suffix for 'terabyte' (1,000,000,000,000 bytes). -->
<key name="suffix_0036">Petabytes</key> <!-- Long suffix for 'petabyte' (1,000,000,000,000,000 bytes). -->
<key name="suffix_0037">Exabytes</key> <!-- Long suffix for 'exabyte' (1,000,000,000,000,000,000 bytes). -->
<key name="suffix_0038">Zettabytes</key> <!-- Long suffix for 'zettabyte' (1,000,000,000,000,000,000,000 bytes). -->
<key name="suffix_0039">Yotabytes</key> <!-- Long suffix for 'yotabyte' (1,000,000,000,000,000,000,000,000 bytes). -->
<key name="suffix_0040">Kibibytes</key> <!-- Long suffix for 'kibibyte' (1,024 bytes). -->
<key name="suffix_0041">Mebibytes</key> <!-- Long suffix for 'mebibyte' (1,048,576 bytes). -->
<key name="suffix_0042">Gibibytes</key> <!-- Long suffix for 'gibibyte' (1,073,741,824 bytes). -->
<key name="suffix_0043">Tebibyes</key> <!-- Long suffix for 'tebibyte' (1,099,511,627,776 bytes). -->
<key name="suffix_0044">Pebibytes</key> <!-- Long suffix for 'pebibyte' (1,125,899,906,842,624 bytes). -->
<key name="suffix_0045">Exbibytes</key> <!-- Long suffix for 'exbibyte' (1,152,921,504,606,846,976 bytes). -->
<key name="suffix_0046">Zebibytes</key> <!-- Long suffix for 'zebibyte' (1,180,591,620,717,411,303,424 bytes). -->
<key name="suffix_0047">Yobibytes</key> <!-- Long suffix for 'yobibyte' (1,208,925,819,614,629,174,706,176 bytes). -->
<key name="suffix_0048">bps</key> <!-- Short suffix for 'bits per second'. -->
<key name="suffix_0049">Kbps</key> <!-- Short suffix for 'kilobits per second' (1,000 bits per second). -->
<key name="suffix_0050">Mbps</key> <!-- Short suffix for 'megabits per second' (1,000,000 bits per second). -->
<key name="suffix_0051">Gbps</key> <!-- Short suffix for 'gigabits per second' (1,000,000,000 bits per second). -->
<key name="suffix_0052">Tbps</key> <!-- Short suffix for 'terabits per second' (1,000,000,000,000 bits per second). -->
<key name="suffix_0053">Pbps</key> <!-- Short suffix for 'petabits per second' (1,000,000,000,000,000 bits per second). -->
<key name="suffix_0054">Ebps</key> <!-- Short suffix for 'exabits per second' (1,000,000,000,000,000,000 bits per second). -->
<key name="suffix_0055">Zbps</key> <!-- Short suffix for 'zettabits per second' (1,000,000,000,000,000,000,000 bits per second). -->
<key name="suffix_0056">Ybps</key> <!-- Short suffix for 'yotabits per second' (1,000,000,000,000,000,000,000,000 bits per second). -->
<!-- Test words. Do NOT change unless you update 't/Words.t' or tests will needlessly fail. -->
<key name="t_0000">Test</key>
<key name="t_0001">Test replace: [#!variable!test!#].</key>
<key name="t_0002">Test Out of order: [#!variable!second!#] replace: [#!variable!first!#].</key>
<!-- Do not use 't_0003'. It is used to test failures caused by calling a non-existent key. -->
<key name="t_0004">#!FREE!#</key>
<key name="t_0005">
This is a multi-line test string with various items to insert.
It also has some #!invalid!# replacement #!keys!# to test the escaping and restoring.
Here is the default output language: [#!data!defaults::language::output!#]
Here we will inject 't_0000': [#!string!t_0001!#]
Here we will inject 't_0002' with its embedded variables: [#!string!t_0002!#]
Here we will inject 't_0006', which injects 't_0001' which has a variable: [#!string!t_0006!#].
</key>
<key name="t_0006">This string embeds 't_0001': [#!string!t_0001!#]</key>
<!-- Titles, usually for alerts -->
<key name="title_0001">- Critical</key>
<key name="title_0002">- Warning</key>
<key name="title_0003">- Notice</key>
<key name="title_0004">- Info</key>
<key name="title_0005">- Critical Cleared!</key>
<key name="title_0006">- Warning Cleared!</key>
<key name="title_0007">- Notice Cleared!</key>
<key name="title_0008">- Info Cleared!</key>
<!-- These are used for descriptions of things -->
<key name="type_0001">ISO (optical disc)</key>
<key name="type_0002">Script (program)</key>
<key name="type_0003">Other file type</key>
<!-- These are units, words and so on used when displaying information. -->
<key name="unit_0001">Yes</key>
<key name="unit_0002">No</key>
<key name="unit_0003">None</key>
<key name="unit_0004">Unknown</key>
<key name="unit_0005"><![CDATA[<none>]]></key>
<key name="unit_0006">Balance Round-Robin</key> <!-- Bonding mode 0 (balance-rr) - See: /usr/share/doc/iputils/README.bonding -->
<key name="unit_0007">Active/Backup</key> <!-- Bonding mode 1 (active-backup) -->
<key name="unit_0008">Balanced Exclusive OR</key> <!-- Bonding mode 2 (balanced-xor) -->
<key name="unit_0009">Broadcast</key> <!-- Bonding mode 3 (broadcast) -->
<key name="unit_0010">Dynamic Link Aggregation (802.3ad)</key> <!-- Bonding mode 4 (802.3ad) -->
<key name="unit_0011">Balanced Transmit Load balancing</key> <!-- Bonding mode 5 (balanced-tlb) -->
<key name="unit_0012">Balanced Adaptive Load balancing</key> <!-- Bonding mode 6 (balanced-alb) -->
<key name="unit_0013">Up</key> <!-- Network Link State up -->
<key name="unit_0014">Down</key> <!-- Network Link State down -->
<key name="unit_0015">Full</key> <!-- Full Duplex -->
<key name="unit_0016">Half</key> <!-- Half Duplex -->
<key name="unit_0017">Always Use Primary</key> <!-- Bonding always reselect primary interface - See: bonding.txt as provided by 'kernel-doc' -->
<key name="unit_0018">Select Better</key> <!-- Bonding reselect primary interface if better -->
<key name="unit_0019">On Failure</key> <!-- Bonding reselect primary interface if peer fails -->
<key name="unit_0020">STP Disabled</key> <!-- Bridge STP state disabled - See: https://github.com/mstpd/mstpd/issues/17#issuecomment-245395763 -->
<key name="unit_0021">STP Enabled in Kernel</key> <!-- Bridge STP state kernel -->
<key name="unit_0022">STP Enabled in User land</key> <!-- Bridge STP state user -->
<key name="unit_0023">Ignore</key> <!-- Alert level for Anvil! systems added in the future -->
<key name="unit_0024">Critical</key> <!-- Alert level 1 -->
<key name="unit_0025">Warning</key> <!-- Alert level 2 -->
<key name="unit_0026">Notice</key> <!-- Alert level 3 -->
<key name="unit_0027">Info</key> <!-- Alert level 4 -->
<key name="unit_0028">Lit</key> <!-- LED State On -->
<key name="unit_0029">Up</key>
<key name="unit_0030">Down</key>
<key name="unit_0031">Mbps</key>
<key name="unit_0032">waiting for job output...</key>
* Created Database->get_bridges() that, surprise, loads data from the 'bridges' table. * Started work on Get->available_resources() that will take an 'anvil_uuid' and figure out what resources are still available for use by new servers or that can be added to existing servers. * Fixed a bug in ScanCore->agent_startup() where tables weren't being generated properly from the agent's SQL file. * Made Storage->change_mode() return silently if it's called without a mode being passed. This happens frequently and is harmless so it's not worth filling the logs with errors. * Renamed the 'start_time' key to 'at_start' when recording files' MD5 sums in Storage->record_md5sums and ->check_md5sums. * When we moved the directory scan logic out of the 'scancore' daemon and into 'Storage->scan_directory', the logic to record scan agent names in 'scancore::agent::<file>' was removed. This broke a few things and, so, it was restored when it was found that a file starts with 'scan-' and the directory matches the scancore agent directory. * Moved the 'scancore' daemon's 'load_agent_strings' to 'Words' * Updated Words->parse_banged_string() to look for variables in the format 'value=X:units=Y' and translate it properly. * Fixed a bug in scan-ipmitool where discovered sensor INSERT SQL queries were queued, but not committed. * Fixed a bug in scan-storcli where a while loop was broken, preventing execution. * Fixed a bug in the 'scancore' daemon where it wouldn't exit if sums changed. Fixed a bug where alerts weren't being sent between loops. Fixed a bug where command-line log level wasn't surviving inside the main loop. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="unit_0033">Volts</key>
<key name="unit_0034">Watts</key>
<key name="unit_0035">RPM</key>
<key name="unit_0036">Celsius</key>
<key name="unit_0037">Fahrenheit</key>
<key name="unit_0038">%</key>
<key name="unit_0039">Amps</key>
<key name="unit_0040">Going Back</key> <!-- Bond state -->
<!-- These are special. These are used to describe the UPSes that ScanCore supports. These
are used when adding UPSes to the system for use in Install Manifests.
NOTE: These are recorded here instead of the database to simplify localization and
expansion of the list. Please do NOT remove any entries as they are linked by the
database. When translating, DO NOT CHANGE 'name' or 'agent'! The 'brand' key can
be changed just fine though. -->
<key name="ups_0001" agent="scan-apc-ups" brand="APC"><![CDATA[APC (by Schneider) Networked UPS - <a href="https://www.apc.com/shop/ca/en/categories/power/uninterruptible-power-supply-ups-/network-and-server/N-15e4jmd" target="_new">Link</a>.]]></key>
<key name="ups_0002" agent="scan-eaton-ups" brand="Eaton"><![CDATA[Eaton Networked UPS - <a href="https://powerquality.eaton.com/Products-services/Backup-Power-UPS/default.asp" target="_new">Link</a>.]]></key>
<key name="ups_0003" agent="scan-tripplite-ups" brand="TrippLite"><![CDATA[TrippLite Networked UPS - <a href="https://www.tripplite.com/products/ups-battery-backup~11" target="_new">Link</a>.]]></key>
<key name="ups_0004" agent="scan-cyberpower-ups" brand="Cyberpower"><![CDATA[Cyberpower Networked UPS - <a href="https://www.cyberpowersystems.com/products/ups/" target="_new">Link</a>.]]></key>
<!-- Warnings -->
<key name="warning_0001">[ Warning ] - The IP address will change. You will need to reconnect after applying these changes.</key>
<key name="warning_0002">[ Warning ] - The access information appears to not be valid.</key>
<key name="warning_0003">[ Warning ] - Test access to the peer (using SSH) failed. There may be details in the log file.</key>
<key name="warning_0004">[ Warning ] - Accessing the peer over SSH worked, but a test connection to the database failed.</key>
<key name="warning_0005">[ Warning ] - There was a problem reading the peer's UUID. Read: [#!variable!uuid!#], which appears to be invalid.</key>
<key name="warning_0006">[ Warning ] - An SSH connection was established to: [#!variable!target!#], but we failed to establish a channel. The last error was: [#!variable!error!#].</key>
<key name="warning_0007">[ Warning ] - The job: [#!variable!command!#] was picked up by: [#!variable!pid!#], but that process is not running and it appears to only be: [#!variable!percent!# %] complete. Restarting the job.</key>
<key name="warning_0008">[ Warning ] - Unable to find a local IP on the same subnet as the IP/host: [#!variable!host!#] given for the target. Bi-directional setup not currently possible.</key>
<key name="warning_0009">[ Warning ] - The subtask request for manipulating the 'Install Target' feature is not valid. It should be 'enabled' or 'disabled'</key> <!-- NOTE: 'enabled' and 'disabled' are variable values, don't translate them. -->
<key name="warning_0010">[ Warning ] - The IP address: [#!variable!ip_address!#] is not a valid IPv4 address</key>
<key name="warning_0011">[ Warning ] - The SSH port is not a valid (usually it is 22, but it has to be between 1 ~ 65536)</key>
<key name="warning_0012">[ Warning ] - Failed to log into the host. Is the IP or root user's password right?</key>
<key name="warning_0013"><![CDATA[[ Warning ] - The target's host key has changed. If the target has been rebuilt, or the target IP reused, the old key will need to be removed. <a href="?striker=true&task=keys" target="_new">Click here</a> to resolve.]]></key>
<key name="warning_0014">[ Warning ] - The host UUID: [#!variable!host_uuid!#] was not found in the #!data!path::json::all_status!# file on the local dashboard.</key>
<key name="warning_0015">[ Warning ] - To configure a host as either an #!string!brand_0002!# node or a disaster recovery host, there must be at least 6 network interfaces. This machine only has: [#!variable!interface_count!#] interfaces.</key>
<key name="warning_0016">[ Warning ] - No databases are available. Changes to the network interfaces will be cached.</key>
<key name="warning_0017">[ Warning ] - The subnet mask is not valid</key>
<key name="warning_0018">[ Warning ] - The IP address was specified, but the subnet mask was not</key>
<key name="warning_0019">[ Warning ] - The passed in parameter '#!variable!parameter!#': [#!variable!ip_address!#] is not a valid IPv4 address.</key>
<key name="warning_0020">[ Warning ] - The passed in parameter '#!variable!parameter!#': [#!variable!subnet_mask!#] is not a valid IPv4 subnet mask.</key>
<key name="warning_0021">[ Warning ] - All three networks require the first network pair to be defined.</key>
<key name="warning_0022">[ Warning ] - Only one network interface selected for a network pair.</key>
<key name="warning_0023">[ Warning ] - The outgoing mail server appear to not be a valid domain name or IP address.</key>
<key name="warning_0024">[ Warning ] - The outgoing mail server port is not valid. Must be 'mail_server:x' where x is 1 ~ 65535.</key>
<key name="warning_0025">[ Warning ] - There was a problem saving the mail server data. Please check the logs for more information.</key>
<key name="warning_0026">[ Warning ] - The recipient's email address appears to not be valid.</key>
<key name="warning_0027">[ Warning ] - There was a problem saving the alert recipient data. Please check the logs for more information.</key>
<key name="warning_0028">[ Warning ] - Failed to read the fence agent: [#!variable!agent!#] metadata. Ignoring it.</key>
<key name="warning_0029">[ Warning ] - While resync'ing the table: [#!variable!table!#] on: [#!variable!host_name!# (#!variable!host_uuid!#)], there was an entry found in the public schema (#!variable!column!# = #!variable!uuid!#) but not in the history schema. This shouldn't happen, and it probably a bug. Switching the query's schema from public to history for the query: [#!variable!query!#] is being dropped.</key>
<key name="warning_0030">[ Warning ] - Databse->insert_or_update_variables() was called with 'update_value_only' set, but the 'variable_uuid' wasn't passed or the 'variable_uuid' wasn't found given the 'variable_name'. Unable to update. Passed in values are logged below this message</key>
<key name="warning_0031">[ Warning ] - No internet detected (couldn't ping: [#!variable!domain!#]). Skipping attempt to download RPMs.</key>
<key name="warning_0032">[ Warning ] - The fence device: [#!variable!name!#] appears to have not been saved.</key>
<key name="warning_0033">[ Warning ] - The fence device: [#!variable!name!#] with the UUID: [#!variable!uuid!#] has already been deleted.</key>
<key name="warning_0034">[ Warning ] - The fence device with the UUID: [#!variable!uuid!#] was not found.</key>
<key name="warning_0035">[ Warning ] - The fence device: [#!variable!name!#] with the UUID: [#!variable!uuid!#] was NOT deleted. The reason may be in the: [#!data!path::log::main!#] log file on this host.</key>
<key name="warning_0036">[ Warning ] - The UPS with the UUID: [#!variable!uuid!#] was not found.</key>
<key name="warning_0037">[ Warning ] - The UPS: [#!variable!name!#] with the UUID: [#!variable!uuid!#] has already been deleted.</key>
<key name="warning_0038">[ Warning ] - The UPS: [#!variable!name!#] appears to have not been saved.</key>
<key name="warning_0039">[ Warning ] - There's a problem with the form.</key>
<key name="warning_0040">[ Warning ] - The UPS: [#!variable!name!#] with the UUID: [#!variable!uuid!#] was NOT deleted. The reason may be in the: [#!data!path::log::main!#] log file on this host.</key>
<key name="warning_0041">[ Warning ] - There was a problem saving the install manifest. The reason may be in the: [#!data!path::log::main!#] log file on this host.</key>
<key name="warning_0042">[ Warning ] - No record found for the table/columns: [#!variable!table!# -> #!variable!column!#] for the value: [#!variable!value!#].</key>
<key name="warning_0043">[ Warning ] - The install manifest with the UUID: [#!variable!uuid!#] was not found.</key>
<key name="warning_0044">[ Warning ] - The install manifest: [#!variable!name!#] with the UUID: [#!variable!uuid!#] has already been deleted.</key>
<key name="warning_0045">[ Warning ] - The install manifest: [#!variable!name!#] with the UUID: [#!variable!uuid!#] was NOT deleted. The reason may be in the: [#!data!path::log::main!#] log file on this host.</key>
<key name="warning_0046">[ Warning ] - The Install Manifest with the UUID: [#!variable!uuid!#] was not found.</key>
<key name="warning_0047">[ Warning ] - The password to set for this #!string!brand_0006!# was not set.</key>
<key name="warning_0048">[ Warning ] - The password verification was not set.</key>
<key name="warning_0049">[ Warning ] - The passwords do not match.</key>
<key name="warning_0050">[ Warning ] - The host: [#!variable!host!#] now belongs to the #!string!brand_0006!#, it can't be used here anymore.</key>
<key name="warning_0051">[ Warning ] - The IP address: [#!variable!ip!#] is not valid. Ignoring associated hosts: [#!variable!hosts!#].</key>
<key name="warning_0052">[ Warning ] - Failed to read the CIB. Is 'pcsd' running and is the cluster started?</key>
<key name="warning_0053">[ Warning ] - Failed to parse the CIB. The CIB read was:
========
#!variable!cib!#
========
The error was:
========
#!variable!error!#
========
</key>
<key name="warning_0054">[ Warning ] - Node 1 and Node 2 are set to the same machine.</key>
<key name="warning_0055">[ Warning ] - The DR Host is set to the same machine as Node 1.</key>
<key name="warning_0056">[ Warning ] - The DR Host is set to the same machine as Node 2.</key>
<key name="warning_0057">[ Warning ] - The 'libvirtd' daemon is not running. Checking to see if the server is running by looking for its PID (server state won't be available). Please start 'libvirtd'!</key>
<key name="warning_0058">[ Warning ] - The server: [#!variable!server!#] is in a crashed state!</key>
<key name="warning_0059">[ Warning ] - The server: [#!variable!server!#] was asked to be booted on: [#!variable!requested_node!#], but it is is already running on: [#!variable!current_host!#].</key>
<key name="warning_0060">[ Warning ] - The server: [#!variable!server!#] was asked to be shutdown, but it's in an unexpected state: [#!variable!state!#] on the host: [#!variable!current_host!#]. Aborting.</key>
<key name="warning_0061">[ Warning ] - The server: [#!variable!server!#] was asked to be migrated to: [#!variable!requested_node!#], but the server is off. Aborting.</key>
<key name="warning_0062">[ Warning ] - Failed to read the 'crm_mon' output. Is the cluster started?</key>
<key name="warning_0063">[ Warning ] - Failed to parse the XML output from 'crm_mon'. The XML read was:
========
#!variable!xml!#
========
The error was:
========
#!variable!error!#
========
</key>
<key name="warning_0064">[ Warning ] - The server: [#!variable!server!#] was asked to be migrated to: [#!variable!requested_node!#], but the server is shutting down. Aborting.</key>
<key name="warning_0065">[ Warning ] - The server: [#!variable!server!#] was asked to be migrated to: [#!variable!requested_node!#], but the server is already in the middle of a migration. Aborting.</key>
<key name="warning_0066">[ Warning ] - Failed to parse the XML:
========
#!variable!xml!#
========
The error was:
========
#!variable!error!#
========
</key>
<key name="warning_0067">[ Warning ] - Failed to find the server's UUID from the definition XML:
========
#!variable!xml!#
========
</key>
<key name="warning_0068">[ Warning ] - The server UUID read: from the definition XML doesn't match the passed-in server UUID.
Passed in UUID: [#!variable!passed_uuid!#]
Read UUID: .... [#!variable!read_uuid!#]
========
#!variable!xml!#
========
</key>
<key name="warning_0069">[ Warning ] - Checking the mail queue appears to have failed. Output received was: [#!variable!output!#].</key>
<key name="warning_0070">[ Warning ] - Unable to report the available resources for the Anvil! [#!variable!anvil_name!#] as it looks like ScanCore has not yet run. Please try again after starting the 'scancore' daemon on the nodes.</key>
<key name="warning_0071">[ Warning ] - We were asked to create a new storage group called: [#!variable!name!#] but that name is already used by the group with UUID: [#!variable!uuid!#].</key>
<key name="warning_0072">[ Warning ] - The file: [#!variable!file_path!#] was not found on any accessible Striker dashboard (or it isn't the same size as recorded in the database). Will sleep for a minute and exit, then we'll try again.</key>
<key name="warning_0073">[ Warning ] - No databases are available. Some functions of this resource agent will not be available.</key>
<key name="warning_0074">[ Warning ] - Our disk state for the peer: [#!variable!peer_name!#] on resource: [#!variable!resource!#], volume: [#!variable!volume!#] is: [#!variable!disk_state!#].</key>
<key name="warning_0075">[ Warning ] - We were asked to insert or update a host with the name: [#!variable!host_name!#]. Another host: [#!variable!host_uuid!#] has the same name, which could be a failed node that is being replaced. We're going to set it's 'host_key' to 'DELETED'. If this warning is logged only once, and after a machine is replaced, it's safe to ignore. If this warning is repeatedly being logged, then there are two active machines with the same host name, and that needs to be fixed.</key>
<key name="warning_0076">[ Warning ] - It looks like the postfix daemon is not running. Enabling and starting it now.</key>
<key name="warning_0077">[ Warning ] - Checking the mail queue after attempting to start postgres appears to have still failed. Output received was: [#!variable!output!#].</key>
<key name="warning_0078">[ Warning ] - Not installing the Alteeve repo! The package: [#!variable!anvil_role_rpm!#] is already installed. This is OK, but be aware that updates from Alteeve will not be available. To change this, please install: [#!variable!alteeve_repo!#].</key>
<key name="warning_0079">[ Warning ] - Failed to read the JSON formatted output of 'lsblk'. Expected the return code '0' but received: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="warning_0080">[ Warning ] - Failed to read the XML formatted output of 'lshw'. Expected the return code '0' but received: [#!variable!return_code!#]. The output, if any, was: [#!variable!output!#].</key>
<key name="warning_0081">[ Warning ] - The temporary file: [#!variable!temp_file!#] vanished (or failed to be created) before it could be copied to: [#!variable!target!#].</key>
The core logic is done!!!! Still need to finish end-points for the WebUI to hook into, but the core of M3 is complete! Many, many bugs are expected, of course. :) * Created DRBD->check_if_syncsource() and ->check_if_synctarget() that return '1' if the target host is currently SyncSource or SyncTarget for any resource, respectively. * Updated DRBD->update_global_common() to return the unified-format diff if any changes were made to global-common.conf. * Created ScanCore->check_health() that returns the health score for a host. Created ->count_servers() that returns the number of servers on a host, how much RAM is used by those servers and, if available, the estimated migration time of the servers. Updated ->check_temperature() to set/clear/return the time that a host has been in a warning or critical temperature state. * Finished ScanCore->post_scan_analysis_node()!!! It certainly has bugs, and much testing is needed, but the logic is all in place! Oh what a slog that was... It should be far more intelligent than M2 though, once flushed out and tested. * Created Server->active_migrations() that returns '1' if any servers are in a migration on an Anvil! system. Updated ->migrate_virsh() to record how long a migration took in the "server::migration_duration" variable, which is averaged by ScanCore->count_servers() to estimate migration times. * Updated scan-drbd to check/update the global-common.conf file's config at the end of a scan. * Updated ScanCore itself to not scan when in maintenance mode. Also updated it to call 'anvil-safe-start' when ScanCore starts, so long as it is within ten minutes of the host booting. Signed-off-by: Digimer <digimer@alteeve.ca>
4 years ago
<key name="warning_0082">[ Warning ] - This host is not in the cluster, and all UPSes are running on batteries, and have been for at least: [#!variable!time_on_batteries!#]. Shutting down to conserve power.</key>
<key name="warning_0083">[ Warning ] - This host is not in the cluster, and the temperatures is anomalous. Shutting down to limit thermal loading.</key>
<key name="warning_0084">[ Warning ] - We are healthier than our peer: [#!variable!peer_name!#]! Scores (local/peer): [#!variable!local_health!# / #!variable!peer_health!#]. This has been the case for: [#!variable!age!# seconds]. After 120 seconds, preventative migration will be triggered.</key>
<key name="warning_0085">[ Warning ] - Initiating preventative live migration, taking the servers from our peer: [#!variable!peer_name!#]! Scores (local/peer): [#!variable!local_health!# / #!variable!peer_health!#]. This has been so for over two minutes, so we will not perform a preventative migration of server.</key>
<key name="warning_0086">[ Warning ] - We're not a cluster member, but the server: [#!variable!server_name!#] is in the status: [#!variable!status!#]. ScanCore will take no action on this node.</key>
<key name="warning_0087">[ Warning ] - We're alone in the cluster, and our temperature is now critical. Gracefully stopping servers and then shutting down.</key>
<key name="warning_0088">[ Warning ] - We're alone in the cluster, we've been running on batteries for more than 2 minutes, and the strongest UPS shows less than ten minutes hold up time left. Gracefully stopping servers and then shutting down.</key>
<key name="warning_0089">[ Warning ] - This host is not in the cluster, and all UPSes are running on batteries. The most recent UPS to lose power was roughly: [#!variable!time_on_batteries!#] seconds ago. After 120 seconds, this node will power down to conserve battery power.</key>
<key name="warning_0090">[ Warning ] - This host is not in the cluster, and the temperatures is anomalous. This has been the case for roughly: [#!variable!age!#] seconds. After 120 seconds, this node will shut down to reduce thermal loading.</key>
<key name="warning_0091">[ Warning ] - Both nodes have been running on batteries for more than two minutes, and both show the strongest UPS as having less than 10 minutes runtime left. Full power loss is highly likely, and imminent. Gracefully shutting down servers and powering off.</key>
<key name="warning_0092">[ Warning ] - Both nodes have been running on batteries for more than two minutes. To conserve battery power, load shedding will begin. A node will be selected for shutdown momentarily.</key>
<key name="warning_0093">[ Warning ] - Both nodes are running on batteries, but this has been so for less than two minutes. Will take no action yet in the hopes that this is a transient issue.</key>
<key name="warning_0094">[ Warning ] - Our peer node: [#!variable!host_name!#] has been running on batteries for more than two minutes. We've still got power, so we will pull the servers off of our peer and on to this machine.</key>
<key name="warning_0095">[ Warning ] - Our peer node: [#!variable!host_name!#] is running on batteries, but it has been less than two minutes. Not doing anything, yet.</key>
<key name="warning_0096">[ Warning ] - We're running on batteries, have been so for more than two minutes, and the strongest UPS has an estimated hold up time below ten minutes. Power loss is innevitable, so we will start a graceful shutdown now.</key>
<key name="warning_0097">[ Warning ] - We're running on batteries, and have been for more than two minutes. We'll shut down to conserve battery power now.</key>
<key name="warning_0098">[ Warning ] - We're running on batteries, but it's been less than two minutes. We'll wait to see if this is a transient event before taking any action.</key>
<key name="warning_0099">[ Warning ] - Both node's temperatures have been anomolous for more than two minutes. We'll shut down to reduce thermal loading of the room we're in.</key>
<key name="warning_0100">[ Warning ] - Both node's temperatures are anomolous, and we've been critically anomolous for more than two minutes. Hardware shutdown is very likely, so we'll gracefully shutdown now.</key>
<key name="warning_0101">[ Warning ] - Both node's temperatures are anomolous, but this has been the case for less than two minutes. We'll wait to see if the temperatures clear before taking action.</key>
<key name="warning_0102">[ Warning ] - Our peer node: [#!variable!host_name!#]'s temperature has been anomolous for more than two minutes. We're still thermally nominal, so we will pull the servers off of our peer and on to this machine.</key>
<key name="warning_0103">[ Warning ] - Our peer node: [#!variable!host_name!#]'s is anomolous, but it hasn't been so for two minutes yet. Not doing anything, yet.</key>
<key name="warning_0104">[ Warning ] - Our temperature is anomolous, and have been so for more than two minutes. We'll shut down to reduce thermal loading in the room.</key>
<key name="warning_0105">[ Warning ] - We are "SyncSource" for at least one resource, meaning that a peer is copying data from our storage in order to synchronize. As such, all shut down options are disabled until the sync ends or the peer goes offline.</key>
<key name="warning_0106">[ Warning ] - Our temperature is critically anomolous, and has been so for more than two minutes. Hardware shutdown is highly likely, so will gracefully shut down now.</key>
<key name="warning_0107">[ Warning ] - We're doing a load shed to conserve UPS power, and we're SyncSource (meaning our data is more complete than our peer's data). We will stay up and pull the servers to us.</key>
<key name="warning_0108">[ Warning ] - We're doing a load shed to reduce thermal loading, and we're SyncSource (meaning our data is more complete than our peer's data). We will stay up and pull the servers to us.</key>
<key name="warning_0109">[ Warning ] - We're doing a load shed to conserve UPS power, and we have no servers running locally. We will shut down now.</key>
<key name="warning_0110">[ Warning ] - We're doing a load shed to reduce thermal loading, and we have no servers running locally. We will shut down now.</key>
<key name="warning_0111">[ Warning ] - We're doing a load shed to conserve UPS power, and the amount of RAM allocated to servers on our peer is less than the amount of RAM allocated to servers running locally. As such, we'll pull the peer's servers to here.</key>
<key name="warning_0112">[ Warning ] - We're doing a load shed to reduce thermal loading, and the amount of RAM allocated to servers on our peer is less than the amount of RAM allocated to servers running locally. As such, we'll pull the peer's servers to here.</key>
<key name="warning_0113">[ Warning ] - We're doing a load shed to conserve UPS power, and the estimated migration time to pull the servers to us from our peer is shorter than the reverse. As such, we'll pull the peer's servers to here.</key>
<key name="warning_0114">[ Warning ] - We're doing a load shed to reduce thermal loading, and the estimated migration time to pull the servers to us from our peer is shorter than the reverse. As such, we'll pull the peer's servers to here.</key>
<key name="warning_0115">[ Warning ] - We're doing a load shed to conserve UPS power, and by all measures, the time to migrate off either node is equal. We're node 1, so we will pull the servers to us now.</key>
<key name="warning_0116">[ Warning ] - We're doing a load shed to reduce thermal loading, and by all measures, the time to migrate off either node is equal. We're node 1, so we will pull the servers to us now.</key>
<key name="warning_0117">[ Warning ] - The core Anvil! configuration file: [#!variable!file!#] was missing! It's been recreated using default values. It is possible that the database connection information will need to be restored manually.</key>
<key name="warning_0118">[ Warning ] - The 'admin' group was created as a system group with the group ID: [#!variable!gid!#].</key>
<key name="warning_0119">[ Warning ] - The 'admin' user was created with the user ID: [#!variable!uid!#].</key>
<key name="warning_0120">[ Warning ] - Timed out waiting for the database: [#!variable!uuid!#] to become available.</key>
<!-- The entries below here are not sequential, but use a key to find the entry. -->
<!-- Run 'striker-parse-os-list to find new entries. -->
<key name="os_list_alpinelinux3.5"><![CDATA[Alpine Linux 3.5]]></key>
<key name="os_list_alpinelinux3.6"><![CDATA[Alpine Linux 3.6]]></key>
<key name="os_list_alpinelinux3.7"><![CDATA[Alpine Linux 3.7]]></key>
<key name="os_list_alpinelinux3.8"><![CDATA[Alpine Linux 3.8]]></key>
<key name="os_list_alt.p8"><![CDATA[ALT p8 StarterKits]]></key>
<key name="os_list_alt.p9"><![CDATA[ALT p9 StarterKits]]></key>
<key name="os_list_alt.sisyphus"><![CDATA[ALT regular]]></key>
<key name="os_list_alt8.0"><![CDATA[ALT 8 Education]]></key>
<key name="os_list_alt8.1"><![CDATA[ALT 8.1]]></key>
<key name="os_list_alt8.2"><![CDATA[ALT 8.2]]></key>
<key name="os_list_alt9.0"><![CDATA[ALT 9.0]]></key>
<key name="os_list_altlinux1.0"><![CDATA[Mandrake RE Spring 2001]]></key>
<key name="os_list_altlinux2.0"><![CDATA[ALT Linux 2.0]]></key>
<key name="os_list_altlinux2.2"><![CDATA[ALT Linux 2.2]]></key>
<key name="os_list_altlinux2.4"><![CDATA[ALT Linux 2.4]]></key>
<key name="os_list_altlinux3.0"><![CDATA[ALT Linux 3.0]]></key>
<key name="os_list_altlinux4.0"><![CDATA[ALT Linux 4.0]]></key>
<key name="os_list_altlinux4.1"><![CDATA[ALT Linux 4.1]]></key>
<key name="os_list_altlinux5.0"><![CDATA[ALT Linux 5.0]]></key>
<key name="os_list_altlinux6.0"><![CDATA[ALT Linux 6.0]]></key>
<key name="os_list_altlinux7.0"><![CDATA[ALT Linux 7.0]]></key>
<key name="os_list_android-x86-8.1"><![CDATA[Android-x86 8.1]]></key>
<key name="os_list_android-x86-9.0"><![CDATA[Android-x86 9.0]]></key>
<key name="os_list_archlinux"><![CDATA[Arch Linux]]></key>
<key name="os_list_asianux-unknown"><![CDATA[Asianux unknown]]></key>
<key name="os_list_asianux4.6"><![CDATA[Asianux Server 4 SP6]]></key>
<key name="os_list_asianux4.7"><![CDATA[Asianux Server 4 SP7]]></key>
<key name="os_list_asianux7.0"><![CDATA[Asianux Server 7]]></key>
<key name="os_list_asianux7.1"><![CDATA[Asianux Server 7 SP1]]></key>
<key name="os_list_asianux7.2"><![CDATA[Asianux Server 7 SP2]]></key>
<key name="os_list_asianux7.3"><![CDATA[Asianux Server 7 SP3]]></key>
<key name="os_list_asianux8.0"><![CDATA[Asianux Server 8]]></key>
<key name="os_list_caasp-unknown"><![CDATA[SUSE CaaS Platform Unknown]]></key>
<key name="os_list_caasp1.0"><![CDATA[SUSE CaaS Platform 1.0]]></key>
<key name="os_list_caasp2.0"><![CDATA[SUSE CaaS Platform 2.0]]></key>
<key name="os_list_caasp3.0"><![CDATA[SUSE CaaS Platform 3.0]]></key>
<key name="os_list_centos-stream8"><![CDATA[CentOS Stream 8]]></key>
<key name="os_list_centos5.0"><![CDATA[CentOS 5.0]]></key>
<key name="os_list_centos5.1"><![CDATA[CentOS 5.1]]></key>
<key name="os_list_centos5.10"><![CDATA[CentOS 5.10]]></key>
<key name="os_list_centos5.11"><![CDATA[CentOS 5.11]]></key>
<key name="os_list_centos5.2"><![CDATA[CentOS 5.2]]></key>
<key name="os_list_centos5.3"><![CDATA[CentOS 5.3]]></key>
<key name="os_list_centos5.4"><![CDATA[CentOS 5.4]]></key>
<key name="os_list_centos5.5"><![CDATA[CentOS 5.5]]></key>
<key name="os_list_centos5.6"><![CDATA[CentOS 5.6]]></key>
<key name="os_list_centos5.7"><![CDATA[CentOS 5.7]]></key>
<key name="os_list_centos5.8"><![CDATA[CentOS 5.8]]></key>
<key name="os_list_centos5.9"><![CDATA[CentOS 5.9]]></key>
<key name="os_list_centos6.0"><![CDATA[CentOS 6.0]]></key>
<key name="os_list_centos6.1"><![CDATA[CentOS 6.1]]></key>
<key name="os_list_centos6.10"><![CDATA[CentOS 6.10]]></key>
<key name="os_list_centos6.2"><![CDATA[CentOS 6.2]]></key>
<key name="os_list_centos6.3"><![CDATA[CentOS 6.3]]></key>
<key name="os_list_centos6.4"><![CDATA[CentOS 6.4]]></key>
<key name="os_list_centos6.5"><![CDATA[CentOS 6.5]]></key>
<key name="os_list_centos6.6"><![CDATA[CentOS 6.6]]></key>
<key name="os_list_centos6.7"><![CDATA[CentOS 6.7]]></key>
<key name="os_list_centos6.8"><![CDATA[CentOS 6.8]]></key>
<key name="os_list_centos6.9"><![CDATA[CentOS 6.9]]></key>
<key name="os_list_centos7.0"><![CDATA[CentOS 7]]></key>
<key name="os_list_centos8"><![CDATA[CentOS 8]]></key>
<key name="os_list_cirros0.3.0"><![CDATA[CirrOS 0.3.0]]></key>
<key name="os_list_cirros0.3.1"><![CDATA[CirrOS 0.3.1]]></key>
<key name="os_list_cirros0.3.2"><![CDATA[CirrOS 0.3.2]]></key>
<key name="os_list_cirros0.3.3"><![CDATA[CirrOS 0.3.3]]></key>
<key name="os_list_cirros0.3.4"><![CDATA[CirrOS 0.3.4]]></key>
<key name="os_list_cirros0.3.5"><![CDATA[CirrOS 0.3.5]]></key>
<key name="os_list_cirros0.4.0"><![CDATA[CirrOS 0.4.0]]></key>
<key name="os_list_clearlinux"><![CDATA[Clear Linux OS]]></key>
<key name="os_list_debian1.1"><![CDATA[Debian GNU/Linux 1.1]]></key>
<key name="os_list_debian1.2"><![CDATA[Debian GNU/Linux 1.2]]></key>
<key name="os_list_debian1.3"><![CDATA[Debian GNU/Linux 1.3]]></key>
<key name="os_list_debian10"><![CDATA[Debian 10]]></key>
<key name="os_list_debian2.0"><![CDATA[Debian GNU/Linux 2.0]]></key>
<key name="os_list_debian2.1"><![CDATA[Debian GNU/Linux 2.1]]></key>
<key name="os_list_debian2.2"><![CDATA[Debian GNU/Linux 2.2]]></key>
<key name="os_list_debian3"><![CDATA[Debian GNU/Linux 3.0]]></key>
<key name="os_list_debian3.1"><![CDATA[Debian GNU/Linux 3.1]]></key>
<key name="os_list_debian4"><![CDATA[Debian GNU/Linux 4.0]]></key>
<key name="os_list_debian5"><![CDATA[Debian GNU/Linux 5.0]]></key>
<key name="os_list_debian6"><![CDATA[Debian 6.0]]></key>
<key name="os_list_debian7"><![CDATA[Debian 7]]></key>
<key name="os_list_debian8"><![CDATA[Debian 8]]></key>
<key name="os_list_debian9"><![CDATA[Debian 9]]></key>
<key name="os_list_debiantesting"><![CDATA[Debian testing]]></key>
<key name="os_list_dragonflybsd1.0"><![CDATA[DragonFlyBSD 1.0]]></key>
<key name="os_list_dragonflybsd1.0A"><![CDATA[DragonFlyBSD 1.0A]]></key>
<key name="os_list_dragonflybsd1.10.0"><![CDATA[DragonFlyBSD 1.10.0]]></key>
<key name="os_list_dragonflybsd1.10.1"><![CDATA[DragonFlyBSD 1.10.1]]></key>
<key name="os_list_dragonflybsd1.12.0"><![CDATA[DragonFlyBSD 1.12.0]]></key>
<key name="os_list_dragonflybsd1.12.1"><![CDATA[DragonFlyBSD 1.12.1]]></key>
<key name="os_list_dragonflybsd1.12.2"><![CDATA[DragonFlyBSD 1.12.2]]></key>
<key name="os_list_dragonflybsd1.2.0"><![CDATA[DragonFlyBSD 1.2.0]]></key>
<key name="os_list_dragonflybsd1.2.1"><![CDATA[DragonFlyBSD 1.2.1]]></key>
<key name="os_list_dragonflybsd1.2.2"><![CDATA[DragonFlyBSD 1.2.2]]></key>
<key name="os_list_dragonflybsd1.2.3"><![CDATA[DragonFlyBSD 1.2.3]]></key>
<key name="os_list_dragonflybsd1.2.4"><![CDATA[DragonFlyBSD 1.2.4]]></key>
<key name="os_list_dragonflybsd1.2.5"><![CDATA[DragonFlyBSD 1.2.5]]></key>
<key name="os_list_dragonflybsd1.2.6"><![CDATA[DragonFlyBSD 1.2.6]]></key>
<key name="os_list_dragonflybsd1.4.0"><![CDATA[DragonFlyBSD 1.4.0]]></key>
<key name="os_list_dragonflybsd1.4.4"><![CDATA[DragonFlyBSD 1.4.4]]></key>
<key name="os_list_dragonflybsd1.6.0"><![CDATA[DragonFlyBSD 1.6.0]]></key>
<key name="os_list_dragonflybsd1.8.0"><![CDATA[DragonFlyBSD 1.8.0]]></key>
<key name="os_list_dragonflybsd1.8.1"><![CDATA[DragonFlyBSD 1.8.1]]></key>
<key name="os_list_dragonflybsd2.0.0"><![CDATA[DragonFlyBSD 2.0.0]]></key>
<key name="os_list_dragonflybsd2.0.1"><![CDATA[DragonFlyBSD 2.0.1]]></key>
<key name="os_list_dragonflybsd2.10.1"><![CDATA[DragonFlyBSD 2.10.1]]></key>
<key name="os_list_dragonflybsd2.2.0"><![CDATA[DragonFlyBSD 2.2.0]]></key>
<key name="os_list_dragonflybsd2.2.1"><![CDATA[DragonFlyBSD 2.2.1]]></key>
<key name="os_list_dragonflybsd2.4.0"><![CDATA[DragonFlyBSD 2.4.0]]></key>
<key name="os_list_dragonflybsd2.4.1"><![CDATA[DragonFlyBSD 2.4.1]]></key>
<key name="os_list_dragonflybsd2.6.1"><![CDATA[DragonFlyBSD 2.6.1]]></key>
<key name="os_list_dragonflybsd2.6.2"><![CDATA[DragonFlyBSD 2.6.2]]></key>
<key name="os_list_dragonflybsd2.6.3"><![CDATA[DragonFlyBSD 2.6.3]]></key>
<key name="os_list_dragonflybsd2.8.2"><![CDATA[DragonFlyBSD 2.8.2]]></key>
<key name="os_list_dragonflybsd3.0.1"><![CDATA[DragonFlyBSD 3.0.1]]></key>
<key name="os_list_dragonflybsd3.2.1"><![CDATA[DragonFlyBSD 3.2.1]]></key>
<key name="os_list_dragonflybsd3.4.1"><![CDATA[DragonFlyBSD 3.4.1]]></key>
<key name="os_list_dragonflybsd3.4.2"><![CDATA[DragonFlyBSD 3.4.2]]></key>
<key name="os_list_dragonflybsd3.4.3"><![CDATA[DragonFlyBSD 3.4.3]]></key>
<key name="os_list_dragonflybsd3.6.0"><![CDATA[DragonFlyBSD 3.6.0]]></key>
<key name="os_list_dragonflybsd3.6.1"><![CDATA[DragonFlyBSD 3.6.1]]></key>
<key name="os_list_dragonflybsd3.6.2"><![CDATA[DragonFlyBSD 3.6.2]]></key>
<key name="os_list_dragonflybsd3.8.0"><![CDATA[DragonFlyBSD 3.8.0]]></key>
<key name="os_list_dragonflybsd3.8.1"><![CDATA[DragonFlyBSD 3.8.1]]></key>
<key name="os_list_dragonflybsd3.8.2"><![CDATA[DragonFlyBSD 3.8.2]]></key>
<key name="os_list_dragonflybsd4.0.0"><![CDATA[DragonFlyBSD 4.0.0]]></key>
<key name="os_list_dragonflybsd4.0.1"><![CDATA[DragonFlyBSD 4.0.1]]></key>
<key name="os_list_dragonflybsd4.2.0"><![CDATA[DragonFlyBSD 4.2.0]]></key>
<key name="os_list_dragonflybsd4.2.1"><![CDATA[DragonFlyBSD 4.2.1]]></key>
<key name="os_list_dragonflybsd4.2.3"><![CDATA[DragonFlyBSD 4.2.3]]></key>
<key name="os_list_dragonflybsd4.2.4"><![CDATA[DragonFlyBSD 4.2.4]]></key>
<key name="os_list_dragonflybsd4.4.1"><![CDATA[DragonFlyBSD 4.4.1]]></key>
<key name="os_list_dragonflybsd4.4.2"><![CDATA[DragonFlyBSD 4.4.2]]></key>
<key name="os_list_dragonflybsd4.4.3"><![CDATA[DragonFlyBSD 4.4.3]]></key>
<key name="os_list_dragonflybsd4.6.0"><![CDATA[DragonFlyBSD 4.6.0]]></key>
<key name="os_list_dragonflybsd4.6.1"><![CDATA[DragonFlyBSD 4.6.1]]></key>
<key name="os_list_dragonflybsd4.6.2"><![CDATA[DragonFlyBSD 4.6.2]]></key>
<key name="os_list_dragonflybsd4.8.0"><![CDATA[DragonFlyBSD 4.8.0]]></key>
<key name="os_list_dragonflybsd4.8.1"><![CDATA[DragonFlyBSD 4.8.1]]></key>
<key name="os_list_dragonflybsd5.0.0"><![CDATA[DragonFlyBSD 5.0.0]]></key>
<key name="os_list_dragonflybsd5.0.1"><![CDATA[DragonFlyBSD 5.0.1]]></key>
<key name="os_list_dragonflybsd5.0.2"><![CDATA[DragonFlyBSD 5.0.2]]></key>
<key name="os_list_dragonflybsd5.2.0"><![CDATA[DragonFlyBSD 5.2.0]]></key>
<key name="os_list_dragonflybsd5.2.1"><![CDATA[DragonFlyBSD 5.2.1]]></key>
<key name="os_list_dragonflybsd5.2.2"><![CDATA[DragonFlyBSD 5.2.2]]></key>
<key name="os_list_dragonflybsd5.4.0"><![CDATA[DragonFlyBSD 5.4.0]]></key>
<key name="os_list_dragonflybsd5.4.1"><![CDATA[DragonFlyBSD 5.4.1]]></key>
<key name="os_list_dragonflybsd5.4.2"><![CDATA[DragonFlyBSD 5.4.2]]></key>
<key name="os_list_dragonflybsd5.4.3"><![CDATA[DragonFlyBSD 5.4.3]]></key>
<key name="os_list_dragonflybsd5.6"><![CDATA[DragonFlyBSD 5.6]]></key>
<key name="os_list_elementary5.0"><![CDATA[Elementary OS 5.0 Juno]]></key>
<key name="os_list_eos3.1"><![CDATA[Endless OS 3.1]]></key>
<key name="os_list_eos3.2"><![CDATA[Endless OS 3.2]]></key>
<key name="os_list_eos3.3"><![CDATA[Endless OS 3.3]]></key>
<key name="os_list_eos3.4"><![CDATA[Endless OS 3.4]]></key>
<key name="os_list_eos3.5"><![CDATA[Endless OS 3.5]]></key>
<key name="os_list_eos3.6"><![CDATA[Endless OS 3.6]]></key>
<key name="os_list_eos3.7"><![CDATA[Endless OS 3.7]]></key>
<key name="os_list_eos3.8"><![CDATA[Endless OS 3.8]]></key>
<key name="os_list_fedora-rawhide"><![CDATA[Fedora Rawhide]]></key>
<key name="os_list_fedora-unknown"><![CDATA[Fedora]]></key>
<key name="os_list_fedora1"><![CDATA[Fedora Core 1]]></key>
<key name="os_list_fedora10"><![CDATA[Fedora 10]]></key>
<key name="os_list_fedora11"><![CDATA[Fedora 11]]></key>
<key name="os_list_fedora12"><![CDATA[Fedora 12]]></key>
<key name="os_list_fedora13"><![CDATA[Fedora 13]]></key>
<key name="os_list_fedora14"><![CDATA[Fedora 14]]></key>
<key name="os_list_fedora15"><![CDATA[Fedora 15]]></key>
<key name="os_list_fedora16"><![CDATA[Fedora 16]]></key>
<key name="os_list_fedora17"><![CDATA[Fedora 17]]></key>
<key name="os_list_fedora18"><![CDATA[Fedora 18]]></key>
<key name="os_list_fedora19"><![CDATA[Fedora 19]]></key>
<key name="os_list_fedora2"><![CDATA[Fedora Core 2]]></key>
<key name="os_list_fedora20"><![CDATA[Fedora 20]]></key>
<key name="os_list_fedora21"><![CDATA[Fedora 21]]></key>
<key name="os_list_fedora22"><![CDATA[Fedora 22]]></key>
<key name="os_list_fedora23"><![CDATA[Fedora 23]]></key>
<key name="os_list_fedora24"><![CDATA[Fedora 24]]></key>
<key name="os_list_fedora25"><![CDATA[Fedora 25]]></key>
<key name="os_list_fedora26"><![CDATA[Fedora 26]]></key>
<key name="os_list_fedora27"><![CDATA[Fedora 27]]></key>
<key name="os_list_fedora28"><![CDATA[Fedora 28]]></key>
<key name="os_list_fedora29"><![CDATA[Fedora 29]]></key>
<key name="os_list_fedora3"><![CDATA[Fedora Core 3]]></key>
<key name="os_list_fedora30"><![CDATA[Fedora 30]]></key>
<key name="os_list_fedora31"><![CDATA[Fedora 31]]></key>
<key name="os_list_fedora32"><![CDATA[Fedora 32]]></key>
<key name="os_list_fedora4"><![CDATA[Fedora Core 4]]></key>
<key name="os_list_fedora5"><![CDATA[Fedora Core 5]]></key>
<key name="os_list_fedora6"><![CDATA[Fedora Core 6]]></key>
<key name="os_list_fedora7"><![CDATA[Fedora 7]]></key>
<key name="os_list_fedora8"><![CDATA[Fedora 8]]></key>
<key name="os_list_fedora9"><![CDATA[Fedora 9]]></key>
<key name="os_list_freebsd1.0"><![CDATA[FreeBSD 1.0]]></key>
<key name="os_list_freebsd10.0"><![CDATA[FreeBSD 10.0]]></key>
<key name="os_list_freebsd10.1"><![CDATA[FreeBSD 10.1]]></key>
<key name="os_list_freebsd10.2"><![CDATA[FreeBSD 10.2]]></key>
<key name="os_list_freebsd10.3"><![CDATA[FreeBSD 10.3]]></key>
<key name="os_list_freebsd10.4"><![CDATA[FreeBSD 10.4]]></key>
<key name="os_list_freebsd11.0"><![CDATA[FreeBSD 11.0]]></key>
<key name="os_list_freebsd11.1"><![CDATA[FreeBSD 11.1]]></key>
<key name="os_list_freebsd11.2"><![CDATA[FreeBSD 11.2]]></key>
<key name="os_list_freebsd11.3"><![CDATA[FreeBSD 11.3]]></key>
<key name="os_list_freebsd11.4"><![CDATA[FreeBSD 11.4]]></key>
<key name="os_list_freebsd12.0"><![CDATA[FreeBSD 12.0]]></key>
<key name="os_list_freebsd12.1"><![CDATA[FreeBSD 12.1]]></key>
<key name="os_list_freebsd2.0"><![CDATA[FreeBSD 2.0]]></key>
<key name="os_list_freebsd2.0.5"><![CDATA[FreeBSD 2.0.5]]></key>
<key name="os_list_freebsd2.2.8"><![CDATA[FreeBSD 2.2.8]]></key>
<key name="os_list_freebsd2.2.9"><![CDATA[FreeBSD 2.2.9]]></key>
<key name="os_list_freebsd3.0"><![CDATA[FreeBSD 3.0]]></key>
<key name="os_list_freebsd3.2"><![CDATA[FreeBSD 3.2]]></key>
<key name="os_list_freebsd4.0"><![CDATA[FreeBSD 4.0]]></key>
<key name="os_list_freebsd4.1"><![CDATA[FreeBSD 4.1]]></key>
<key name="os_list_freebsd4.10"><![CDATA[FreeBSD 4.10]]></key>
<key name="os_list_freebsd4.11"><![CDATA[FreeBSD 4.11]]></key>
<key name="os_list_freebsd4.2"><![CDATA[FreeBSD 4.2]]></key>
<key name="os_list_freebsd4.3"><![CDATA[FreeBSD 4.3]]></key>
<key name="os_list_freebsd4.4"><![CDATA[FreeBSD 4.4]]></key>
<key name="os_list_freebsd4.5"><![CDATA[FreeBSD 4.5]]></key>
<key name="os_list_freebsd4.6"><![CDATA[FreeBSD 4.6]]></key>
<key name="os_list_freebsd4.7"><![CDATA[FreeBSD 4.7]]></key>
<key name="os_list_freebsd4.8"><![CDATA[FreeBSD 4.8]]></key>
<key name="os_list_freebsd4.9"><![CDATA[FreeBSD 4.9]]></key>
<key name="os_list_freebsd5.0"><![CDATA[FreeBSD 5.0]]></key>
<key name="os_list_freebsd5.1"><![CDATA[FreeBSD 5.1]]></key>
<key name="os_list_freebsd5.2"><![CDATA[FreeBSD 5.2]]></key>
<key name="os_list_freebsd5.2.1"><![CDATA[FreeBSD 5.2.1]]></key>
<key name="os_list_freebsd5.3"><![CDATA[FreeBSD 5.3]]></key>
<key name="os_list_freebsd5.4"><![CDATA[FreeBSD 5.4]]></key>
<key name="os_list_freebsd5.5"><![CDATA[FreeBSD 5.5]]></key>
<key name="os_list_freebsd6.0"><![CDATA[FreeBSD 6.0]]></key>
<key name="os_list_freebsd6.1"><![CDATA[FreeBSD 6.1]]></key>
<key name="os_list_freebsd6.2"><![CDATA[FreeBSD 6.2]]></key>
<key name="os_list_freebsd6.3"><![CDATA[FreeBSD 6.3]]></key>
<key name="os_list_freebsd6.4"><![CDATA[FreeBSD 6.4]]></key>
<key name="os_list_freebsd7.0"><![CDATA[FreeBSD 7.0]]></key>
<key name="os_list_freebsd7.1"><![CDATA[FreeBSD 7.1]]></key>
<key name="os_list_freebsd7.2"><![CDATA[FreeBSD 7.2]]></key>
<key name="os_list_freebsd7.3"><![CDATA[FreeBSD 7.3]]></key>
<key name="os_list_freebsd7.4"><![CDATA[FreeBSD 7.4]]></key>
<key name="os_list_freebsd8.0"><![CDATA[FreeBSD 8.0]]></key>
<key name="os_list_freebsd8.1"><![CDATA[FreeBSD 8.1]]></key>
<key name="os_list_freebsd8.2"><![CDATA[FreeBSD 8.2]]></key>
<key name="os_list_freebsd8.3"><![CDATA[FreeBSD 8.3]]></key>
<key name="os_list_freebsd8.4"><![CDATA[FreeBSD 8.4]]></key>
<key name="os_list_freebsd9.0"><![CDATA[FreeBSD 9.0]]></key>
<key name="os_list_freebsd9.1"><![CDATA[FreeBSD 9.1]]></key>
<key name="os_list_freebsd9.2"><![CDATA[FreeBSD 9.2]]></key>
<key name="os_list_freebsd9.3"><![CDATA[FreeBSD 9.3]]></key>
<key name="os_list_freedos1.2"><![CDATA[FreeDOS 1.2]]></key>
<key name="os_list_gentoo"><![CDATA[Gentoo Linux]]></key>
<key name="os_list_gnome-continuous-3.10"><![CDATA[GNOME 3.10]]></key>
<key name="os_list_gnome-continuous-3.12"><![CDATA[GNOME 3.12]]></key>
<key name="os_list_gnome-continuous-3.14"><![CDATA[GNOME 3.14]]></key>
<key name="os_list_gnome3.6"><![CDATA[GNOME 3.6]]></key>
<key name="os_list_gnome3.8"><![CDATA[GNOME 3.8]]></key>
<key name="os_list_haikunightly"><![CDATA[Haiku Nightly]]></key>
<key name="os_list_haikur1alpha1"><![CDATA[Haiku R1/Alpha1]]></key>
<key name="os_list_haikur1alpha2"><![CDATA[Haiku R1/Alpha2]]></key>
<key name="os_list_haikur1alpha3"><![CDATA[Haiku R1/Alpha3]]></key>
<key name="os_list_haikur1alpha4.1"><![CDATA[Haiku R1/Alpha4.1]]></key>
<key name="os_list_haikur1beta1"><![CDATA[Haiku R1/Beta1]]></key>
<key name="os_list_macosx10.0"><![CDATA[MacOS X Cheetah]]></key>
<key name="os_list_macosx10.1"><![CDATA[MacOS X Puma]]></key>
<key name="os_list_macosx10.2"><![CDATA[MacOS X Jaguar]]></key>
<key name="os_list_macosx10.3"><![CDATA[MacOS X Panther]]></key>
<key name="os_list_macosx10.4"><![CDATA[MacOS X Tiger]]></key>
<key name="os_list_macosx10.5"><![CDATA[MacOS X Leopard]]></key>
<key name="os_list_macosx10.6"><![CDATA[MacOS X Snow Leopard]]></key>
<key name="os_list_macosx10.7"><![CDATA[MacOS X Lion]]></key>
<key name="os_list_mageia1"><![CDATA[Mageia 1]]></key>
<key name="os_list_mageia2"><![CDATA[Mageia 2]]></key>
<key name="os_list_mageia3"><![CDATA[Mageia 3]]></key>
<key name="os_list_mageia4"><![CDATA[Mageia 4]]></key>
<key name="os_list_mageia5"><![CDATA[Mageia 5]]></key>
<key name="os_list_mageia6"><![CDATA[Mageia 6]]></key>
<key name="os_list_mageia7"><![CDATA[Mageia 7]]></key>
<key name="os_list_mandrake10.0"><![CDATA[Mandrake Linux 10.0]]></key>
<key name="os_list_mandrake10.1"><![CDATA[Mandrake Linux 10.1]]></key>
<key name="os_list_mandrake10.2"><![CDATA[Mandrake Linux 10.2]]></key>
<key name="os_list_mandrake5.1"><![CDATA[Mandrake Linux 5.1]]></key>
<key name="os_list_mandrake5.2"><![CDATA[Mandrake Linux 5.2]]></key>
<key name="os_list_mandrake5.3"><![CDATA[Mandrake Linux 5.3]]></key>
<key name="os_list_mandrake6.0"><![CDATA[Mandrake Linux 6.0]]></key>
<key name="os_list_mandrake6.1"><![CDATA[Mandrake Linux 6.1]]></key>
<key name="os_list_mandrake7.0"><![CDATA[Mandrake Linux 7.0]]></key>
<key name="os_list_mandrake7.1"><![CDATA[Mandrake Linux 7.1]]></key>
<key name="os_list_mandrake7.2"><![CDATA[Mandrake Linux 7.2]]></key>
<key name="os_list_mandrake8.0"><![CDATA[Mandrake Linux 8.0]]></key>
<key name="os_list_mandrake8.1"><![CDATA[Mandrake Linux 8.1]]></key>
<key name="os_list_mandrake8.2"><![CDATA[Mandrake Linux 8.2]]></key>
<key name="os_list_mandrake9.0"><![CDATA[Mandrake Linux 9.0]]></key>
<key name="os_list_mandrake9.1"><![CDATA[Mandrake Linux 9.1]]></key>
<key name="os_list_mandrake9.2"><![CDATA[Mandrake Linux 9.2]]></key>
<key name="os_list_mandriva2006.0"><![CDATA[Mandriva Linux 2006.0]]></key>
<key name="os_list_mandriva2007"><![CDATA[Mandriva Linux 2007]]></key>
<key name="os_list_mandriva2007.1"><![CDATA[Mandriva Linux 2007 Spring]]></key>
<key name="os_list_mandriva2008.0"><![CDATA[Mandriva Linux 2008]]></key>
<key name="os_list_mandriva2008.1"><![CDATA[Mandriva Linux 2008 Spring]]></key>
<key name="os_list_mandriva2009.0"><![CDATA[Mandriva Linux 2009]]></key>
<key name="os_list_mandriva2009.1"><![CDATA[Mandriva Linux 2009 Spring]]></key>
<key name="os_list_mandriva2010.0"><![CDATA[Mandriva Linux 2010]]></key>
<key name="os_list_mandriva2010.1"><![CDATA[Mandriva Linux 2010 Spring]]></key>
<key name="os_list_mandriva2010.2"><![CDATA[Mandriva Linux 2010.2]]></key>
<key name="os_list_mandriva2011"><![CDATA[Mandriva Linux 2011]]></key>
<key name="os_list_manjaro"><![CDATA[Manjaro]]></key>
<key name="os_list_mbs1.0"><![CDATA[Mandriva Business Server 1.0]]></key>
<key name="os_list_mes5"><![CDATA[Mandriva Enterprise Server 5.0]]></key>
<key name="os_list_mes5.1"><![CDATA[Mandriva Enterprise Server 5.1]]></key>
<key name="os_list_msdos6.22"><![CDATA[Microsoft MS-DOS 6.22]]></key>
<key name="os_list_netbsd0.8"><![CDATA[NetBSD 0.8]]></key>
<key name="os_list_netbsd0.9"><![CDATA[NetBSD 0.9]]></key>
<key name="os_list_netbsd1.0"><![CDATA[NetBSD 1.0]]></key>
<key name="os_list_netbsd1.1"><![CDATA[NetBSD 1.1]]></key>
<key name="os_list_netbsd1.2"><![CDATA[NetBSD 1.2]]></key>
<key name="os_list_netbsd1.3"><![CDATA[NetBSD 1.3]]></key>
<key name="os_list_netbsd1.4"><![CDATA[NetBSD 1.4]]></key>
<key name="os_list_netbsd1.5"><![CDATA[NetBSD 1.5]]></key>
<key name="os_list_netbsd1.6"><![CDATA[NetBSD 1.6]]></key>
<key name="os_list_netbsd2.0"><![CDATA[NetBSD 2.0]]></key>
<key name="os_list_netbsd3.0"><![CDATA[NetBSD 3.0]]></key>
<key name="os_list_netbsd4.0"><![CDATA[NetBSD 4.0]]></key>
<key name="os_list_netbsd5.0"><![CDATA[NetBSD 5.0]]></key>
<key name="os_list_netbsd5.1"><![CDATA[NetBSD 5.1]]></key>
<key name="os_list_netbsd6.0"><![CDATA[NetBSD 6.0]]></key>
<key name="os_list_netbsd6.1"><![CDATA[NetBSD 6.1]]></key>
<key name="os_list_netbsd7.0"><![CDATA[NetBSD 7.0]]></key>
<key name="os_list_netbsd7.1"><![CDATA[NetBSD 7.1]]></key>
<key name="os_list_netbsd7.1.1"><![CDATA[NetBSD 7.1.1]]></key>
<key name="os_list_netbsd7.1.2"><![CDATA[NetBSD 7.1.2]]></key>
<key name="os_list_netbsd7.2"><![CDATA[NetBSD 7.2]]></key>
<key name="os_list_netbsd8.0"><![CDATA[NetBSD 8.0]]></key>
<key name="os_list_netbsd8.1"><![CDATA[NetBSD 8.1]]></key>
<key name="os_list_netbsd8.2"><![CDATA[NetBSD 8.2]]></key>
<key name="os_list_netbsd9.0"><![CDATA[NetBSD 9.0]]></key>
<key name="os_list_netware4"><![CDATA[Novell Netware 4]]></key>
<key name="os_list_netware5"><![CDATA[Novell Netware 5]]></key>
<key name="os_list_netware6"><![CDATA[Novell Netware 6]]></key>
<key name="os_list_nixos-20.03"><![CDATA[NixOS 20.03]]></key>
<key name="os_list_nixos-unknown"><![CDATA[NixOS]]></key>
<key name="os_list_nixos-unstable"><![CDATA[NixOS Unstable]]></key>
<key name="os_list_oel4.4"><![CDATA[Oracle Enterprise Linux 4.4]]></key>
<key name="os_list_oel4.5"><![CDATA[Oracle Enterprise Linux 4.5]]></key>
<key name="os_list_oel4.6"><![CDATA[Oracle Enterprise Linux 4.6]]></key>
<key name="os_list_oel4.7"><![CDATA[Oracle Enterprise Linux 4.7]]></key>
<key name="os_list_oel4.8"><![CDATA[Oracle Enterprise Linux 4.8]]></key>
<key name="os_list_oel4.9"><![CDATA[Oracle Enterprise Linux 4.9]]></key>
<key name="os_list_oel5.0"><![CDATA[Oracle Enterprise Linux 5.0]]></key>
<key name="os_list_oel5.1"><![CDATA[Oracle Enterprise Linux 5.1]]></key>
<key name="os_list_oel5.2"><![CDATA[Oracle Enterprise Linux 5.2]]></key>
<key name="os_list_oel5.3"><![CDATA[Oracle Enterprise Linux 5.3]]></key>
<key name="os_list_oel5.4"><![CDATA[Oracle Enterprise Linux 5.4]]></key>
<key name="os_list_ol5.10"><![CDATA[Oracle Linux 5.10]]></key>
<key name="os_list_ol5.11"><![CDATA[Oracle Linux 5.11]]></key>
<key name="os_list_ol5.5"><![CDATA[Oracle Linux 5.5]]></key>
<key name="os_list_ol5.6"><![CDATA[Oracle Linux 5.6]]></key>
<key name="os_list_ol5.7"><![CDATA[Oracle Linux 5.7]]></key>
<key name="os_list_ol5.8"><![CDATA[Oracle Linux 5.8]]></key>
<key name="os_list_ol5.9"><![CDATA[Oracle Linux 5.9]]></key>
<key name="os_list_ol6.0"><![CDATA[Oracle Linux 6.0]]></key>
<key name="os_list_ol6.1"><![CDATA[Oracle Linux 6.1]]></key>
<key name="os_list_ol6.10"><![CDATA[Oracle Linux 6.10]]></key>
<key name="os_list_ol6.2"><![CDATA[Oracle Linux 6.2]]></key>
<key name="os_list_ol6.3"><![CDATA[Oracle Linux 6.3]]></key>
<key name="os_list_ol6.4"><![CDATA[Oracle Linux 6.4]]></key>
<key name="os_list_ol6.5"><![CDATA[Oracle Linux 6.5]]></key>
<key name="os_list_ol6.6"><![CDATA[Oracle Linux 6.6]]></key>
<key name="os_list_ol6.7"><![CDATA[Oracle Linux 6.7]]></key>
<key name="os_list_ol6.8"><![CDATA[Oracle Linux 6.8]]></key>
<key name="os_list_ol6.9"><![CDATA[Oracle Linux 6.9]]></key>
<key name="os_list_ol7.0"><![CDATA[Oracle Linux 7.0]]></key>
<key name="os_list_ol7.1"><![CDATA[Oracle Linux 7.1]]></key>
<key name="os_list_ol7.2"><![CDATA[Oracle Linux 7.2]]></key>
<key name="os_list_ol7.3"><![CDATA[Oracle Linux 7.3]]></key>
<key name="os_list_ol7.4"><![CDATA[Oracle Linux 7.4]]></key>
<key name="os_list_ol7.5"><![CDATA[Oracle Linux 7.5]]></key>
<key name="os_list_ol7.6"><![CDATA[Oracle Linux 7.6]]></key>
<key name="os_list_ol7.7"><![CDATA[Oracle Linux 7.7]]></key>
<key name="os_list_ol7.8"><![CDATA[Oracle Linux 7.8]]></key>
<key name="os_list_ol8.0"><![CDATA[Oracle Linux 8.0]]></key>
<key name="os_list_ol8.1"><![CDATA[Oracle Linux 8.1]]></key>
<key name="os_list_ol8.2"><![CDATA[Oracle Linux 8.2]]></key>
<key name="os_list_openbsd4.2"><![CDATA[OpenBSD 4.2]]></key>
<key name="os_list_openbsd4.3"><![CDATA[OpenBSD 4.3]]></key>
<key name="os_list_openbsd4.4"><![CDATA[OpenBSD 4.4]]></key>
<key name="os_list_openbsd4.5"><![CDATA[OpenBSD 4.5]]></key>
<key name="os_list_openbsd4.8"><![CDATA[OpenBSD 4.8]]></key>
<key name="os_list_openbsd4.9"><![CDATA[OpenBSD 4.9]]></key>
<key name="os_list_openbsd5.0"><![CDATA[OpenBSD 5.0]]></key>
<key name="os_list_openbsd5.1"><![CDATA[OpenBSD 5.1]]></key>
<key name="os_list_openbsd5.2"><![CDATA[OpenBSD 5.2]]></key>
<key name="os_list_openbsd5.3"><![CDATA[OpenBSD 5.3]]></key>
<key name="os_list_openbsd5.4"><![CDATA[OpenBSD 5.4]]></key>
<key name="os_list_openbsd5.5"><![CDATA[OpenBSD 5.5]]></key>
<key name="os_list_openbsd5.6"><![CDATA[OpenBSD 5.6]]></key>
<key name="os_list_openbsd5.7"><![CDATA[OpenBSD 5.7]]></key>
<key name="os_list_openbsd5.8"><![CDATA[OpenBSD 5.8]]></key>
<key name="os_list_openbsd5.9"><![CDATA[OpenBSD 5.9]]></key>
<key name="os_list_openbsd6.0"><![CDATA[OpenBSD 6.0]]></key>
<key name="os_list_openbsd6.1"><![CDATA[OpenBSD 6.1]]></key>
<key name="os_list_openbsd6.2"><![CDATA[OpenBSD 6.2]]></key>
<key name="os_list_openbsd6.3"><![CDATA[OpenBSD 6.3]]></key>
<key name="os_list_openbsd6.4"><![CDATA[OpenBSD 6.4]]></key>
<key name="os_list_openbsd6.5"><![CDATA[OpenBSD 6.5]]></key>
<key name="os_list_openbsd6.6"><![CDATA[OpenBSD 6.6]]></key>
<key name="os_list_openbsd6.7"><![CDATA[OpenBSD 6.7]]></key>
<key name="os_list_opensolaris2009.06"><![CDATA[OpenSolaris 2009.06]]></key>
<key name="os_list_opensuse-factory"><![CDATA[openSUSE]]></key>
<key name="os_list_opensuse-unknown"><![CDATA[openSUSE]]></key>
<key name="os_list_opensuse10.2"><![CDATA[openSUSE 10.2]]></key>
<key name="os_list_opensuse10.3"><![CDATA[openSUSE 10.3]]></key>
<key name="os_list_opensuse11.0"><![CDATA[openSUSE 11.0]]></key>
<key name="os_list_opensuse11.1"><![CDATA[openSUSE 11.1]]></key>
<key name="os_list_opensuse11.2"><![CDATA[openSUSE 11.2]]></key>
<key name="os_list_opensuse11.3"><![CDATA[openSUSE 11.3]]></key>
<key name="os_list_opensuse11.4"><![CDATA[openSUSE 11.4]]></key>
<key name="os_list_opensuse12.1"><![CDATA[openSUSE 12.1]]></key>
<key name="os_list_opensuse12.2"><![CDATA[openSUSE 12.2]]></key>
<key name="os_list_opensuse12.3"><![CDATA[openSUSE 12.3]]></key>
<key name="os_list_opensuse13.1"><![CDATA[openSUSE 13.1]]></key>
<key name="os_list_opensuse13.2"><![CDATA[openSUSE 13.2]]></key>
<key name="os_list_opensuse15.0"><![CDATA[openSUSE Leap 15.0]]></key>
<key name="os_list_opensuse15.1"><![CDATA[openSUSE Leap 15.1]]></key>
<key name="os_list_opensuse15.2"><![CDATA[openSUSE Leap 15.2]]></key>
<key name="os_list_opensuse42.1"><![CDATA[openSUSE Leap 42.1]]></key>
<key name="os_list_opensuse42.2"><![CDATA[openSUSE Leap 42.2]]></key>
<key name="os_list_opensuse42.3"><![CDATA[openSUSE Leap 42.3]]></key>
<key name="os_list_opensusetumbleweed"><![CDATA[openSUSE Tumbleweed]]></key>
<key name="os_list_popos17.10"><![CDATA[Pop!_OS 17.10]]></key>
<key name="os_list_popos18.04"><![CDATA[Pop!_OS 18.04]]></key>
<key name="os_list_popos18.10"><![CDATA[Pop!_OS 18.10]]></key>
<key name="os_list_popos19.04"><![CDATA[Pop!_OS 19.04]]></key>
<key name="os_list_popos19.10"><![CDATA[Pop!_OS 19.10]]></key>
<key name="os_list_pureos8"><![CDATA[PureOS]]></key>
<key name="os_list_rhel-atomic-7.0"><![CDATA[Red Hat Enterprise Linux Atomic Host 7.0]]></key>
<key name="os_list_rhel-atomic-7.1"><![CDATA[Red Hat Enterprise Linux Atomic Host 7.1]]></key>
<key name="os_list_rhel-atomic-7.2"><![CDATA[Red Hat Enterprise Linux Atomic Host 7.2]]></key>
<key name="os_list_rhel-atomic-7.3"><![CDATA[Red Hat Enterprise Linux Atomic Host 7.3]]></key>
<key name="os_list_rhel-atomic-7.4"><![CDATA[Red Hat Enterprise Linux Atomic Host 7.4]]></key>
<key name="os_list_rhel-unknown"><![CDATA[Red Hat Enterprise Linux Unknown]]></key>
<key name="os_list_rhel2.1"><![CDATA[Red Hat Enterprise Linux 2.1]]></key>
<key name="os_list_rhel2.1.1"><![CDATA[Red Hat Enterprise Linux 2.1 Update 1]]></key>
<key name="os_list_rhel2.1.2"><![CDATA[Red Hat Enterprise Linux 2.1 Update 2]]></key>
<key name="os_list_rhel2.1.3"><![CDATA[Red Hat Enterprise Linux 2.1 Update 3]]></key>
<key name="os_list_rhel2.1.4"><![CDATA[Red Hat Enterprise Linux 2.1 Update 4]]></key>
<key name="os_list_rhel2.1.5"><![CDATA[Red Hat Enterprise Linux 2.1 Update 5]]></key>
<key name="os_list_rhel2.1.6"><![CDATA[Red Hat Enterprise Linux 2.1 Update 6]]></key>
<key name="os_list_rhel2.1.7"><![CDATA[Red Hat Enterprise Linux 2.1 Update 7]]></key>
<key name="os_list_rhel3"><![CDATA[Red Hat Enterprise Linux 3]]></key>
<key name="os_list_rhel3.1"><![CDATA[Red Hat Enterprise Linux 3 Update 1]]></key>
<key name="os_list_rhel3.2"><![CDATA[Red Hat Enterprise Linux 3 Update 2]]></key>
<key name="os_list_rhel3.3"><![CDATA[Red Hat Enterprise Linux 3 Update 3]]></key>
<key name="os_list_rhel3.4"><![CDATA[Red Hat Enterprise Linux 3 Update 4]]></key>
<key name="os_list_rhel3.5"><![CDATA[Red Hat Enterprise Linux 3 Update 5]]></key>
<key name="os_list_rhel3.6"><![CDATA[Red Hat Enterprise Linux 3 Update 6]]></key>
<key name="os_list_rhel3.7"><![CDATA[Red Hat Enterprise Linux 3 Update 7]]></key>
<key name="os_list_rhel3.8"><![CDATA[Red Hat Enterprise Linux 3 Update 8]]></key>
<key name="os_list_rhel3.9"><![CDATA[Red Hat Enterprise Linux 3 Update 9]]></key>
<key name="os_list_rhel4.0"><![CDATA[Red Hat Enterprise Linux 4.0]]></key>
<key name="os_list_rhel4.1"><![CDATA[Red Hat Enterprise Linux 4.1]]></key>
<key name="os_list_rhel4.2"><![CDATA[Red Hat Enterprise Linux 4.2]]></key>
<key name="os_list_rhel4.3"><![CDATA[Red Hat Enterprise Linux 4.3]]></key>
<key name="os_list_rhel4.4"><![CDATA[Red Hat Enterprise Linux 4.4]]></key>
<key name="os_list_rhel4.5"><![CDATA[Red Hat Enterprise Linux 4.5]]></key>
<key name="os_list_rhel4.6"><![CDATA[Red Hat Enterprise Linux 4.6]]></key>
<key name="os_list_rhel4.7"><![CDATA[Red Hat Enterprise Linux 4.7]]></key>
<key name="os_list_rhel4.8"><![CDATA[Red Hat Enterprise Linux 4.8]]></key>
<key name="os_list_rhel4.9"><![CDATA[Red Hat Enterprise Linux 4.9]]></key>
<key name="os_list_rhel5.0"><![CDATA[Red Hat Enterprise Linux 5.0]]></key>
<key name="os_list_rhel5.1"><![CDATA[Red Hat Enterprise Linux 5.1]]></key>
<key name="os_list_rhel5.10"><![CDATA[Red Hat Enterprise Linux 5.10]]></key>
<key name="os_list_rhel5.11"><![CDATA[Red Hat Enterprise Linux 5.11]]></key>
<key name="os_list_rhel5.2"><![CDATA[Red Hat Enterprise Linux 5.2]]></key>
<key name="os_list_rhel5.3"><![CDATA[Red Hat Enterprise Linux 5.3]]></key>
<key name="os_list_rhel5.4"><![CDATA[Red Hat Enterprise Linux 5.4]]></key>
<key name="os_list_rhel5.5"><![CDATA[Red Hat Enterprise Linux 5.5]]></key>
<key name="os_list_rhel5.6"><![CDATA[Red Hat Enterprise Linux 5.6]]></key>
<key name="os_list_rhel5.7"><![CDATA[Red Hat Enterprise Linux 5.7]]></key>
<key name="os_list_rhel5.8"><![CDATA[Red Hat Enterprise Linux 5.8]]></key>
<key name="os_list_rhel5.9"><![CDATA[Red Hat Enterprise Linux 5.9]]></key>
<key name="os_list_rhel6-unknown"><![CDATA[Red Hat Enterprise Linux 6 Unknown]]></key>
<key name="os_list_rhel6.0"><![CDATA[Red Hat Enterprise Linux 6.0]]></key>
<key name="os_list_rhel6.1"><![CDATA[Red Hat Enterprise Linux 6.1]]></key>
<key name="os_list_rhel6.10"><![CDATA[Red Hat Enterprise Linux 6.10]]></key>
<key name="os_list_rhel6.2"><![CDATA[Red Hat Enterprise Linux 6.2]]></key>
<key name="os_list_rhel6.3"><![CDATA[Red Hat Enterprise Linux 6.3]]></key>
<key name="os_list_rhel6.4"><![CDATA[Red Hat Enterprise Linux 6.4]]></key>
<key name="os_list_rhel6.5"><![CDATA[Red Hat Enterprise Linux 6.5]]></key>
<key name="os_list_rhel6.6"><![CDATA[Red Hat Enterprise Linux 6.6]]></key>
<key name="os_list_rhel6.7"><![CDATA[Red Hat Enterprise Linux 6.7]]></key>
<key name="os_list_rhel6.8"><![CDATA[Red Hat Enterprise Linux 6.8]]></key>
<key name="os_list_rhel6.9"><![CDATA[Red Hat Enterprise Linux 6.9]]></key>
<key name="os_list_rhel7-unknown"><![CDATA[Red Hat Enterprise Linux 7 Unknown]]></key>
<key name="os_list_rhel7.0"><![CDATA[Red Hat Enterprise Linux 7.0]]></key>
<key name="os_list_rhel7.1"><![CDATA[Red Hat Enterprise Linux 7.1]]></key>
<key name="os_list_rhel7.2"><![CDATA[Red Hat Enterprise Linux 7.2]]></key>
<key name="os_list_rhel7.3"><![CDATA[Red Hat Enterprise Linux 7.3]]></key>
<key name="os_list_rhel7.4"><![CDATA[Red Hat Enterprise Linux 7.4]]></key>
<key name="os_list_rhel7.5"><![CDATA[Red Hat Enterprise Linux 7.5]]></key>
<key name="os_list_rhel7.6"><![CDATA[Red Hat Enterprise Linux 7.6]]></key>
<key name="os_list_rhel7.7"><![CDATA[Red Hat Enterprise Linux 7.7]]></key>
<key name="os_list_rhel7.8"><![CDATA[Red Hat Enterprise Linux 7.8]]></key>
<key name="os_list_rhel7.9"><![CDATA[Red Hat Enterprise Linux 7.9]]></key>
<key name="os_list_rhel8-unknown"><![CDATA[Red Hat Enterprise Linux 8 Unknown]]></key>
<key name="os_list_rhel8.0"><![CDATA[Red Hat Enterprise Linux 8.0]]></key>
<key name="os_list_rhel8.1"><![CDATA[Red Hat Enterprise Linux 8.1]]></key>
<key name="os_list_rhel8.2"><![CDATA[Red Hat Enterprise Linux 8.2]]></key>
<key name="os_list_rhel8.3"><![CDATA[Red Hat Enterprise Linux 8.3]]></key>
<key name="os_list_rhl1.0"><![CDATA[Red Hat Linux 1.0]]></key>
<key name="os_list_rhl1.1"><![CDATA[Red Hat Linux 1.1]]></key>
<key name="os_list_rhl2.0"><![CDATA[Red Hat Linux 2.0]]></key>
<key name="os_list_rhl2.1"><![CDATA[Red Hat Linux 2.1]]></key>
<key name="os_list_rhl3.0.3"><![CDATA[Red Hat Linux 3.0.3]]></key>
<key name="os_list_rhl4.0"><![CDATA[Red Hat Linux 4.0]]></key>
<key name="os_list_rhl4.1"><![CDATA[Red Hat Linux 4.1]]></key>
<key name="os_list_rhl4.2"><![CDATA[Red Hat Linux 4.2]]></key>
<key name="os_list_rhl5.0"><![CDATA[Red Hat Linux 5.0]]></key>
<key name="os_list_rhl5.1"><![CDATA[Red Hat Linux 5.1]]></key>
<key name="os_list_rhl5.2"><![CDATA[Red Hat Linux 5.2]]></key>
<key name="os_list_rhl6.0"><![CDATA[Red Hat Linux 6.0]]></key>
<key name="os_list_rhl6.1"><![CDATA[Red Hat Linux 6.1]]></key>
<key name="os_list_rhl6.2"><![CDATA[Red Hat Linux 6.2]]></key>
<key name="os_list_rhl7"><![CDATA[Red Hat Linux 7]]></key>
<key name="os_list_rhl7.1"><![CDATA[Red Hat Linux 7.1]]></key>
<key name="os_list_rhl7.2"><![CDATA[Red Hat Linux 7.2]]></key>
<key name="os_list_rhl7.3"><![CDATA[Red Hat Linux 7.3]]></key>
<key name="os_list_rhl8.0"><![CDATA[Red Hat Linux 8.0]]></key>
<key name="os_list_rhl9"><![CDATA[Red Hat Linux 9]]></key>
<key name="os_list_scientificlinux5.0"><![CDATA[Scientific Linux 5.0]]></key>
<key name="os_list_scientificlinux5.1"><![CDATA[Scientific Linux 5.1]]></key>
<key name="os_list_scientificlinux5.10"><![CDATA[Scientific Linux 5.10]]></key>
<key name="os_list_scientificlinux5.11"><![CDATA[Scientific Linux 5.11]]></key>
<key name="os_list_scientificlinux5.2"><![CDATA[Scientific Linux 5.2]]></key>
<key name="os_list_scientificlinux5.3"><![CDATA[Scientific Linux 5.3]]></key>
<key name="os_list_scientificlinux5.4"><![CDATA[Scientific Linux 5.4]]></key>
<key name="os_list_scientificlinux5.5"><![CDATA[Scientific Linux 5.5]]></key>
<key name="os_list_scientificlinux5.6"><![CDATA[Scientific Linux 5.6]]></key>
<key name="os_list_scientificlinux5.7"><![CDATA[Scientific Linux 5.7]]></key>
<key name="os_list_scientificlinux5.8"><![CDATA[Scientific Linux 5.8]]></key>
<key name="os_list_scientificlinux5.9"><![CDATA[Scientific Linux 5.9]]></key>
<key name="os_list_scientificlinux6.0"><![CDATA[Scientific Linux 6.0]]></key>
<key name="os_list_scientificlinux6.1"><![CDATA[Scientific Linux 6.1]]></key>
<key name="os_list_scientificlinux6.10"><![CDATA[Scientific Linux 6.10]]></key>
<key name="os_list_scientificlinux6.2"><![CDATA[Scientific Linux 6.2]]></key>
<key name="os_list_scientificlinux6.3"><![CDATA[Scientific Linux 6.3]]></key>
<key name="os_list_scientificlinux6.4"><![CDATA[Scientific Linux 6.4]]></key>
<key name="os_list_scientificlinux6.5"><![CDATA[Scientific Linux 6.5]]></key>
<key name="os_list_scientificlinux6.6"><![CDATA[Scientific Linux 6.6]]></key>
<key name="os_list_scientificlinux6.7"><![CDATA[Scientific Linux 6.7]]></key>
<key name="os_list_scientificlinux6.8"><![CDATA[Scientific Linux 6.8]]></key>
<key name="os_list_scientificlinux6.9"><![CDATA[Scientific Linux 6.9]]></key>
<key name="os_list_scientificlinux7-unknown"><![CDATA[Scientific Linux 7 Unknown]]></key>
<key name="os_list_scientificlinux7.0"><![CDATA[Scientific Linux 7.0]]></key>
<key name="os_list_scientificlinux7.1"><![CDATA[Scientific Linux 7.1]]></key>
<key name="os_list_scientificlinux7.2"><![CDATA[Scientific Linux 7.2]]></key>
<key name="os_list_scientificlinux7.3"><![CDATA[Scientific Linux 7.3]]></key>
<key name="os_list_scientificlinux7.4"><![CDATA[Scientific Linux 7.4]]></key>
<key name="os_list_scientificlinux7.5"><![CDATA[Scientific Linux 7.5]]></key>
<key name="os_list_scientificlinux7.6"><![CDATA[Scientific Linux 7.6]]></key>
<key name="os_list_silverblue28"><![CDATA[Fedora Silverblue 28]]></key>
<key name="os_list_silverblue29"><![CDATA[Fedora Silverblue 29]]></key>
<key name="os_list_silverblue30"><![CDATA[Fedora Silverblue 30]]></key>
<key name="os_list_silverblue31"><![CDATA[Fedora Silverblue 31]]></key>
<key name="os_list_silverblue32"><![CDATA[Fedora Silverblue 32]]></key>
<key name="os_list_sle-unknown"><![CDATA[SUSE Linux Enterprise Unknown]]></key>
<key name="os_list_sle15"><![CDATA[SUSE Linux Enterprise 15]]></key>
<key name="os_list_sle15-unknown"><![CDATA[SUSE Linux Enterprise 15 Unknown]]></key>
<key name="os_list_sle15sp1"><![CDATA[SUSE Linux Enterprise 15 SP1]]></key>
<key name="os_list_sle15sp2"><![CDATA[SUSE Linux Enterprise 15 SP2]]></key>
<key name="os_list_sled10"><![CDATA[SUSE Linux Enterprise Desktop 10]]></key>
<key name="os_list_sled10sp1"><![CDATA[SUSE Linux Enterprise Desktop 10 SP1]]></key>
<key name="os_list_sled10sp2"><![CDATA[SUSE Linux Enterprise Desktop 10 SP2]]></key>
<key name="os_list_sled10sp3"><![CDATA[SUSE Linux Enterprise Desktop 10 SP3]]></key>
<key name="os_list_sled10sp4"><![CDATA[SUSE Linux Enterprise Desktop 10 SP4]]></key>
<key name="os_list_sled11"><![CDATA[SUSE Linux Enterprise Desktop 11]]></key>
<key name="os_list_sled11sp1"><![CDATA[SUSE Linux Enterprise Desktop 11 SP1]]></key>
<key name="os_list_sled11sp2"><![CDATA[SUSE Linux Enterprise Desktop 11 SP2]]></key>
<key name="os_list_sled11sp3"><![CDATA[SUSE Linux Enterprise Desktop 11 SP3]]></key>
<key name="os_list_sled11sp4"><![CDATA[SUSE Linux Enterprise Desktop 11 SP4]]></key>
<key name="os_list_sled12"><![CDATA[SUSE Linux Enterprise Desktop 12]]></key>
<key name="os_list_sled12-unknown"><![CDATA[SUSE Linux Enterprise Desktop 12 Unknown]]></key>
<key name="os_list_sled12sp1"><![CDATA[SUSE Linux Enterprise Desktop 12 SP1]]></key>
<key name="os_list_sled12sp2"><![CDATA[SUSE Linux Enterprise Desktop 12 SP2]]></key>
<key name="os_list_sled12sp3"><![CDATA[SUSE Linux Enterprise Desktop 12 SP3]]></key>
<key name="os_list_sled12sp4"><![CDATA[SUSE Linux Enterprise Desktop 12 SP4]]></key>
<key name="os_list_sled12sp5"><![CDATA[SUSE Linux Enterprise Desktop 12 SP5]]></key>
<key name="os_list_sled9"><![CDATA[SUSE Linux Enterprise Desktop 9]]></key>
<key name="os_list_sles10"><![CDATA[SUSE Linux Enterprise Server 10]]></key>
<key name="os_list_sles10sp1"><![CDATA[SUSE Linux Enterprise Server 10 SP1]]></key>
<key name="os_list_sles10sp2"><![CDATA[SUSE Linux Enterprise Server 10 SP2]]></key>
<key name="os_list_sles10sp3"><![CDATA[SUSE Linux Enterprise Server 10 SP3]]></key>
<key name="os_list_sles10sp4"><![CDATA[SUSE Linux Enterprise Server 10 SP4]]></key>
<key name="os_list_sles11"><![CDATA[SUSE Linux Enterprise Server 11]]></key>
<key name="os_list_sles11sp1"><![CDATA[SUSE Linux Enterprise Server 11 SP1]]></key>
<key name="os_list_sles11sp2"><![CDATA[SUSE Linux Enterprise Server 11 SP2]]></key>
<key name="os_list_sles11sp3"><![CDATA[SUSE Linux Enterprise Server 11 SP3]]></key>
<key name="os_list_sles11sp4"><![CDATA[SUSE Linux Enterprise Server 11 SP4]]></key>
<key name="os_list_sles12"><![CDATA[SUSE Linux Enterprise Server 12]]></key>
<key name="os_list_sles12-unknown"><![CDATA[SUSE Linux Enterprise Server 12 Unknown]]></key>
<key name="os_list_sles12sp1"><![CDATA[SUSE Linux Enterprise Server 12 SP1]]></key>
<key name="os_list_sles12sp2"><![CDATA[SUSE Linux Enterprise Server 12 SP2]]></key>
<key name="os_list_sles12sp3"><![CDATA[SUSE Linux Enterprise Server 12 SP3]]></key>
<key name="os_list_sles12sp4"><![CDATA[SUSE Linux Enterprise Server 12 SP4]]></key>
<key name="os_list_sles12sp5"><![CDATA[SUSE Linux Enterprise Server 12 SP5]]></key>
<key name="os_list_sles9"><![CDATA[SUSE Linux Enterprise Server 9]]></key>
<key name="os_list_solaris10"><![CDATA[Solaris 10]]></key>
<key name="os_list_solaris11"><![CDATA[Oracle Solaris 11]]></key>
<key name="os_list_solaris9"><![CDATA[Solaris 9]]></key>
<key name="os_list_ubuntu10.04"><![CDATA[Ubuntu 10.04 LTS]]></key>
<key name="os_list_ubuntu10.10"><![CDATA[Ubuntu 10.10]]></key>
<key name="os_list_ubuntu11.04"><![CDATA[Ubuntu 11.04]]></key>
<key name="os_list_ubuntu11.10"><![CDATA[Ubuntu 11.10]]></key>
<key name="os_list_ubuntu12.04"><![CDATA[Ubuntu 12.04 LTS]]></key>
<key name="os_list_ubuntu12.10"><![CDATA[Ubuntu 12.10]]></key>
<key name="os_list_ubuntu13.04"><![CDATA[Ubuntu 13.04]]></key>
<key name="os_list_ubuntu13.10"><![CDATA[Ubuntu 13.10]]></key>
<key name="os_list_ubuntu14.04"><![CDATA[Ubuntu 14.04 LTS]]></key>
<key name="os_list_ubuntu14.10"><![CDATA[Ubuntu 14.10]]></key>
<key name="os_list_ubuntu15.04"><![CDATA[Ubuntu 15.04]]></key>
<key name="os_list_ubuntu15.10"><![CDATA[Ubuntu 15.10]]></key>
<key name="os_list_ubuntu16.04"><![CDATA[Ubuntu 16.04]]></key>
<key name="os_list_ubuntu16.10"><![CDATA[Ubuntu 16.10]]></key>
<key name="os_list_ubuntu17.04"><![CDATA[Ubuntu 17.04]]></key>
<key name="os_list_ubuntu17.10"><![CDATA[Ubuntu 17.10]]></key>
<key name="os_list_ubuntu18.04"><![CDATA[Ubuntu 18.04 LTS]]></key>
<key name="os_list_ubuntu18.10"><![CDATA[Ubuntu 18.10]]></key>
<key name="os_list_ubuntu19.04"><![CDATA[Ubuntu 19.04]]></key>
<key name="os_list_ubuntu19.10"><![CDATA[Ubuntu 19.10]]></key>
<key name="os_list_ubuntu20.04"><![CDATA[Ubuntu 20.04]]></key>
<key name="os_list_ubuntu4.10"><![CDATA[Ubuntu 4.10]]></key>
<key name="os_list_ubuntu5.04"><![CDATA[Ubuntu 5.04]]></key>
<key name="os_list_ubuntu5.10"><![CDATA[Ubuntu 5.10]]></key>
<key name="os_list_ubuntu6.06"><![CDATA[Ubuntu 6.06 LTS]]></key>
<key name="os_list_ubuntu6.10"><![CDATA[Ubuntu 6.10]]></key>
<key name="os_list_ubuntu7.04"><![CDATA[Ubuntu 7.04]]></key>
<key name="os_list_ubuntu7.10"><![CDATA[Ubuntu 7.10]]></key>
<key name="os_list_ubuntu8.04"><![CDATA[Ubuntu 8.04 LTS]]></key>
<key name="os_list_ubuntu8.10"><![CDATA[Ubuntu 8.10]]></key>
<key name="os_list_ubuntu9.04"><![CDATA[Ubuntu 9.04]]></key>
<key name="os_list_ubuntu9.10"><![CDATA[Ubuntu 9.10]]></key>
<key name="os_list_voidlinux"><![CDATA[Void Linux]]></key>
<key name="os_list_win1.0"><![CDATA[Microsoft Windows 1.0]]></key>
<key name="os_list_win10"><![CDATA[Microsoft Windows 10]]></key>
<key name="os_list_win2.0"><![CDATA[Microsoft Windows 2.0]]></key>
<key name="os_list_win2.1"><![CDATA[Microsoft Windows 2.1]]></key>
<key name="os_list_win2k"><![CDATA[Microsoft Windows 2000]]></key>
<key name="os_list_win2k12"><![CDATA[Microsoft Windows Server 2012]]></key>
<key name="os_list_win2k12r2"><![CDATA[Microsoft Windows Server 2012 R2]]></key>
<key name="os_list_win2k16"><![CDATA[Microsoft Windows Server 2016]]></key>
<key name="os_list_win2k19"><![CDATA[Microsoft Windows Server 2019]]></key>
<key name="os_list_win2k3"><![CDATA[Microsoft Windows Server 2003]]></key>
<key name="os_list_win2k3r2"><![CDATA[Microsoft Windows Server 2003 R2]]></key>
<key name="os_list_win2k8"><![CDATA[Microsoft Windows Server 2008]]></key>
<key name="os_list_win2k8r2"><![CDATA[Microsoft Windows Server 2008 R2]]></key>
<key name="os_list_win3.1"><![CDATA[Microsoft Windows 3.1]]></key>
<key name="os_list_win7"><![CDATA[Microsoft Windows 7]]></key>
<key name="os_list_win8"><![CDATA[Microsoft Windows 8]]></key>
<key name="os_list_win8.1"><![CDATA[Microsoft Windows 8.1]]></key>
<key name="os_list_win95"><![CDATA[Microsoft Windows 95]]></key>
<key name="os_list_win98"><![CDATA[Microsoft Windows 98]]></key>
<key name="os_list_winme"><![CDATA[Microsoft Windows Millennium Edition]]></key>
<key name="os_list_winnt3.1"><![CDATA[Microsoft Windows NT Server 3.1]]></key>
<key name="os_list_winnt3.5"><![CDATA[Microsoft Windows NT Server 3.5]]></key>
<key name="os_list_winnt3.51"><![CDATA[Microsoft Windows NT Server 3.51]]></key>
<key name="os_list_winnt4.0"><![CDATA[Microsoft Windows NT Server 4.0]]></key>
<key name="os_list_winvista"><![CDATA[Microsoft Windows Vista]]></key>
<key name="os_list_winxp"><![CDATA[Microsoft Windows XP]]></key>
</language>
<!-- 日本語 -->
<language name="jp" long_name="日本語" description="Anvil! language file.">
<!-- Test words. Do NOT change unless you update 't/Words.t' or tests will needlessly fail. -->
<key name="t_0000">テスト</key>
<key name="t_0001">テスト いれかえる: [#!variable!test!#]。</key>
<key name="t_0002">テスト、 整理: [#!variable!second!#]/[#!variable!first!#]。</key>
<!-- Do not use 't_0003'. It is used to test failures caused by calling a non-existent key. -->
<key name="t_0004">#!FREE!#</key>
<key name="t_0005">
これは、挿入するさまざまな項目を含む複数行のテスト文字列です。
#!無効!#な置換#!キー!#を使ってエスケープとリストアをテストすることもできます。
デフォルトの出力言語は次のとおりです:「#!data!defaults::language::output!#」
ここで、「t_0000」を挿入します:[#!string!t_0001!#]
ここでは、 「t_0002」に埋め込み変数を挿入します:「#!string!t_0002!#」
ここでは変数 「#!string!t_0006!#」を持つ 「t_0001」を注入する 「t_0006」を注入します。
</key>
<key name="t_0006">この文字列には「t_0001」が埋め込まれています:「#!string!t_0001!#」</key>
<key name="brand_0001">アルティーブ</key>
<key name="brand_0002">Anvil!</key>
<key name="brand_0003">ストライカ</key>
<key name="brand_0004">スカンコア</key>
<key name="brand_0005"><![CDATA[&copy; 1997 - 2018 <a href="https://alteeve.com/" target="_new">Alteeve's Niche! Inc.</a>, トロント、オンタリオ、カナダ]]></key>
</language>
</words>