* Related to https://issues.redhat.com/browse/RHEL-29680
* Updated Storage->manage_lvm_conf() to be stricter about when to add
the filter to lvm.conf
Signed-off-by: digimer <mkelly@alteeve.ca>
* Created Database->get_mac_to_ip()
* Updated Database->insert_or_update_mac_to_ip() to find an entry using
both the IP and MAC address.
* Updated Network->get_ips() to store only the first IP it finds on an
interface as the main IP (for use in /etc/hosts, etc) and to store it
and any other IPs in a new hash.
* Updated scan-network to use the new hash above to record them in the
'mac_to_ip' table. Similarly, before marking an IP as removed, it
checks to see if it's an alternate IP.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Renamed the old ->wait_for_networks() to be ->wait_for_nm_online().
* The new ->wait_for_networks() waits for all interfaces we manage to be
'activated' before returning.
Signed-off-by: digimer <mkelly@alteeve.ca>
Added the call to Network->wait_for_network to pause scancore and
anvil-daemon startups until NetworkManager says it's up and running.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Added a default timeout of 180 seconds, and updated
anvil-configure-host to reduce this to 60 seconds while configuring
the host.
* Added a check for interfaces configured under a bond. If none are
found, the bond is ignored.
* Updated Storage->update_config() to take the new 'append' attribute to
allow adding a variable if it wasn't found already in the config.
* Added the new 'network::wait_for_bonds::timeout' variable to enable
changing the default timeout for Network->wait_for_bonds().
Signed-off-by: digimer <mkelly@alteeve.ca>
booting an unexpectedly off host and only update it's power state if the
boot actually succeeded.
* Started work on a new anvil-manage-daemons tool and
anvil-monitor-daemons systemd unit.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated anvil-provision-server to only call add_server_to_cluster() if
it's NOT the peer.
* Added the new 'ok_if_exists' parameter to Cluster->add_server() to
return 0 if the server already existed in pacemaker as a resource.
Signed-off-by: digimer <mkelly@alteeve.ca>
This is required as we need to be able to ssh into peer strikers and
into nodes and DR hosts during initialization.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated Job->update_progress() to log and return if there are not DB
connections.
* Bumped some logging in Database->connect().
* Deleted ifcfg code from anvil-configure-host.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Network->find_matches() was trying to compare two IPs when the second
IP wasn't actually defined.
* Disabled scancore's blocking of running before the host is configured.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Database->get_ip_addresses() was marking IPs that weren't on a network
we managed, the IP would be marked as DELETEd, which caused problems
with initializing targets, and it generated a lot of repeat alerts.
* Updated logging in Network.pm to help with debugging.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Network->collect_data() wasn't deleting old data before rescans.
* anvil-configure-host wasn't checking links that should be in a bond if
the bond already existed.
Signed-off-by: digimer <mkelly@alteeve.ca>
* It's technically done, but I know bugs remain.
* Updated Jobs->update_progress() to take 'file' and 'line' to make it
easier in the logs to see the origin of the message, when logging the
update.
* Created Network->modify_connection() to update network manager
variables. Created ->reset_connection() to take an interface down and
bring it back up again.
* Fixed a bug in scan-network where the device_to_uuid hash wasn't being
stored.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Also fixed problems with scan-network related to the new network
naming / NM system.
* Updated Database->insert_or_update_network_interfaces() to better
search for a network_interface_uuid when not specified.
* Updated Network->collect_data() to take the new 'start' parameter
which, when set, brings up unconfigured connections/devices.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated Network->collect_data() to find the GENERAL.DEVICES and
GENERAL.IP-IFACE from match.interface-name when the link is down.
* More work done on anvil-configure-host.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Created new anvil-monitor-network daemon to trigger scan-server via
anvil-monitor-network on network events.
* Moved functionality into scan-network
Signed-off-by: digimer <mkelly@alteeve.ca>
* Added the 'hostname' and 'hostnamectl --transient' to
Get->host_name().
* Updated Database->insert_or_update_hosts() to log when no host_name,
host_type or host_uuid is not passed.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated Cluster->parse_cib() to store DRBD fence node restrictions by
server/node. Also updated to make it easier to get the server's
preferred node.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated System->maintenance_mode() to take 'host_uuid' so that the
maintenance mode of remote machines can be checked/set.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated Get->available_resources() to record the maximum cores that
can be allocated to a server. This is N-1 for hosts with 4 or less
cores, or N-2 cores otherwise.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated Database->insert_or_update_servers() to error if the RAM being
recorded is less than 640 KiB. This is because, somewhere yet
undiscovered, the RAM is being recorded in KiB which breaks things.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated Database->get_hosts() to store hosts in a host_type hash.
* Updated Database->get_servers() to store servers by name, regardless
of host Anvil! node.
Signed-off-by: digimer <mkelly@alteeve.ca>
This branch resolves issue #462; Auto growing PVs. Specifically, it looks at the LVM PVs on the host and checks to see if there is unused free space after the backing partition. If there is, it auto-grows the partition and then resizes the PV. This featu
re is designed to make life easier for users who deleted the auto-created '/home' partition during the anaconda disk partitioning tool.
* Created Storage->auto_grow_pv() that does the above.
* Added the missing hidden method name _create_rsync_wrapper in the Storage module POD.
* Added a call to Storage->auto_grow_pv() in anvil-configure-host and anvil-version-changes for nodes and DR.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated Server->connect_to_libvirt() to check that the target URI's
SSH fingerprint is recorded before connecting. Also added an alarm
wrapper around the Sys::Virt->new() call.
* Continued work on anvil-manage-server-system, working on the boot
order section now.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated Server->locate() to take the new 'anvil' parameter to speed up
searches.
* Updated Server->update_definition() to use Server->locate() to find
where updates are needed. It now also defines the server with the new
config.
Signed-off-by: digimer <mkelly@alteeve.ca>
* If the call to Remote-call() set the target that was actually the
local short hostname, it would fail to make the call at all. Now if
the 'target' is local, the shell call is instead passed to
System->call() instead.
* Cleaned up logging.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated Get->host_name() to accept the new 'refresh' parameter. This
forces a reread of the hostname, instead of using the cached value.
* Updated System->host_name() so that, when it's updating the hostname,
it updates the database and cached variables.
* Updated Words->center_text() to avoid undefinied parameter issues.
* Updated anvil-join-anvil to ensure the 'sys::host_name' variable.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated Striker->generate_manifest() to add pod and make the prefix,
sequence and domain parameters required.
* Created the check_for_broken_manifests() function for anvil-daemon to
detect/remove broken manifests.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Added a called to Database->_check_for_duplicates to Database->resync_databases
* Added 'check_for_resync => 1' to anvil-configure-host.
Signed-off-by: digimer <mkelly@alteeve.ca>
Moved the logic to a new private method, and call it now from the active
Striker in the once per minute loop. The duplicate variable issue seems
to be not entirely uncommon.
Signed-off-by: digimer <mkelly@alteeve.ca>
With this new system, a 'primary_db' is chosen (first connected DB UUID when sorted) and only it does resyncs. Further, resyncs have been pulled from all tools except anvil-daemon. So with this new system, the chances of duplicate, simultaneous resyncs should be removed (hopefully for real this time).
* Database->check_agent_data() no longer calls a resync after loading a
schema.
* Removed the Database->coonnect() 'all' parameter
* The database used to read from is now always the same as the primary,
even if there is a local DB.
* Database->connect() 'check_for_resync' parameter can now be set to
'2', which means "check for resync _if_ I am primary", where '1' still
checks for resync no matter what.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated Database->get_jobs() to take 'job_host_uuid = all' to allow
loading jobs from all cluster machines. Also updated it to record the
'job_host_uuid' and the unix timestamp version of 'modified_date'.
Signed-off-by: digimer <mkelly@alteeve.ca>
Added DB connections to ocf:alteeve:server when starting or stopping
servers. This is to ensure that the servers -> server_state are updated
properly.
Signed-off-by: digimer <mkelly@alteeve.ca>
* Updated anvil-delete-server to use the new Server->locate method. This
was done as the old Server->locate() was failing to find the server
running on the peer when anvil-delete-server was running on the backup
subnode.
* Updated Server->locate() to search hosts for XML definition and DRBD
configs so that it can record where the server is recorded to run,
even if the server isn't running or defined at the time the locate ran.
Signed-off-by: digimer <mkelly@alteeve.ca>
This updates the /opt/alteeve/screenshot directories and the screenshots
in them to be readible by the WebUI.
Signed-off-by: digimer <mkelly@alteeve.ca>
* This takes a server and new definition XML and updated the database and any available hosts. Does not yet update defined or running servers.
Signed-off-by: digimer <mkelly@alteeve.ca>
* This adds the new 'networks' and 'test_access' parameters to allow
restricting/ordering matched networks, and adds 'test_access' to
validate the link is working.
* Continued work on anvil-manage-server-system
Signed-off-by: digimer <mkelly@alteeve.ca>
* On subnodes and DR hosts, a check is made now in Storage->check_files() for files not linked in file_locations. Any found are added, with a check to see if the file already exists locally and, if so, that the md5sum is accurate or not (to set if the file is ready for use or not).
Signed-off-by: digimer <mkelly@alteeve.ca>
* Switched all calls to virsh to use Sys::Virt to deal with contention of simultaneous virsh calls.
* Removed collecting screenshots from scan-server.
* Fixed a bad variable substitution in an alert.
* Fixed a bug where a server's boot time wasn't being recorded properly.
* Reworked how we determine which server definition was most recently updated and propogated.
Signed-off-by: digimer <mkelly@alteeve.ca>