Horizon Runner The Horizon Runner is the component of Project Horizon that configures a computer to match an input HorizonScript.
Locate HorizonScript
Description / Priority The system needs to load the HorizonScript into memory. If the HorizonScript is a local file, the system needs to ensure it is present and readable. If the HorizonScript is remote, the system needs to proceed to Network Configuration before continuing.
Functional Requirements Runner.Locate.DetermineLocality The system shall determine if the HorizonScript is stored locally or remotely using the following algorithm: If the path to the HorizonScript is not provided, assume the HorizonScript is remote and end the calculation. Priority: Low. If the path to the HorizonScript begins with a single "/" followed by an alphanumeric character, the HorizonScript is local. If the path to the HorizonScript begins with a recognised valid protocol for downloading a HorizonScript followed by the characters "://", the HorizonScript is remote. If the path to the HorizonScript begins with an alphanumeric character, the HorizonScript is local and relative to the path /etc/horizon. If the path to the HorizonScript does not match any of the rules specified before this line, the path provided is invalid and the system shall return an error describing the specified path and the fact it is invalid. Runner.Locate.Local If the HorizonScript is local, the system shall ensure the HorizonScript specified exists at the specified path, is readable by the system, and is the correct format. Runner.Locate.Local.Failure If the HorizonScript fails the tests in Runner.Locate.Local, the system shall return an error describing the reason the HorizonScript could not be used. Runner.Locate.Remote If the HorizonScript is remote, the system shall configure the network and then ensure the HorizonScript specified is accessible, as described in the following requirements sections. Runner.Locate.Remote.Configure The system shall use the network settings configured by the Administrator on the command line, if they have been provided. Runner.Locate.Remote.Configure.Automatic If no network configuration was provided on the command line, the system shall initiate a DHCP request on each available network interface, waiting for a 15 second time out period before continuing to the next network interface. An "available network interface" is defined as a non-loopback network interface that currently has a carrier signal. Runner.Locate.Remote.Configure.AutoFailure If no network configuration can be found using DHCP, the system shall return an error describing the inability to configure a network connection. Runner.Locate.Remote.FullAuto If no HorizonScript path was provided, the system shall download the HorizonScript from a TFTP server using the filename MACADDRESS.installfile where MACADDRESS is the MAC address of the active network adaptor with colons (:) replaced by dashes (-). The system shall use the following algorithm to determine the TFTP server, using the first match. The TFTP server specified in the DHCP options, if the DHCP response provided one. The TFTP server specified on the command line, if one was provided. The DHCP server, if DHCP was used to configure the network. The default gateway IP. Runner.Locate.Remote.Verify The system shall ensure that the server where the HorizonScript is kept is reachable over the protocol specified and that the HorizonScript exists. Runner.Locate.Remote.Download The system shall download the HorizonScript from the remote server to /etc/horizon/.
Verify HorizonScript
Description / Priority The system needs to verify the validity of the supplied HorizonScript before executing it.
Functional Requirements Runner.Verify.Required The system shall verify the presence and validity of each required keyword in the HorizonScript.
Execute HorizonScript
Description / Priority
Functional Requirements <para/> </formalpara> </section> </section> </section>