/// <summary> /// Create a job manager instance. /// </summary> /// <param name="options">User options.</param> /// <param name="clientGenerator">Kubernetes client generator.</param> public RelayServer(RelayServerOptions options) : base() { this.options = (GlobalServerOptions)options; WriteToLog("Job manager started"); this.relayOptions = options; jobID = Guid.NewGuid(); IKubernetesClientGenerator clientGenerator; if (options.InPod) { instanceName = "job-manager"; if (string.IsNullOrWhiteSpace(options.Namespace)) { throw new ArgumentNullException("When running relay server in a kubernetes pod, namespace must be set."); } podNamespace = options.Namespace; clientGenerator = new InPodClientGenerator(); } else { instanceName = $"apsim-cluster-{jobID}"; podNamespace = $"apsim-cluster-{jobID}"; clientGenerator = new LocalhostClientGenerator(); } client = clientGenerator.CreateClient(); }
/// <summary> /// Start the server with the given options. /// </summary> /// <param name="options">Options specified by the user (via CLI).</param> private static void Run(RelayServerOptions options) { try { using (ApsimServer server = new RelayServer(options)) server.Run(); } catch (Exception error) { Console.Error.WriteLine(error.ToString()); exitCode = 1; } }