1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using AIPlatform.Protocol.Entities;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Net.NetworkInformation;
- using System.Net.Sockets;
- using System.Xml;
- namespace aipagnt
- {
- class AgentConfig
- {
- /// <summary>
- /// Gets the working folder of this agent.
- /// </summary>
- public static readonly string WorkingFolder;
- /// <summary>
- /// Gets the hardware code of this agent.
- /// </summary>
- public static readonly string HardwareCode;
- /// <summary>
- /// Gets the ip address of this agent.
- /// </summary>
- public static readonly string IpAddress;
- public static readonly Dictionary<TrainScriptPackageFramework, string> PythonEnvs;
- static AgentConfig()
- {
- PythonEnvs = new Dictionary<TrainScriptPackageFramework, string>();
- InitializePythonExeFolder();
- WorkingFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "WorkingFolder");
- if (!Directory.Exists(WorkingFolder))
- {
- Directory.CreateDirectory(WorkingFolder);
- }
- var adapter = NetworkInterface.GetAllNetworkInterfaces().FirstOrDefault();
- if (adapter == null)
- {
- throw new InvalidOperationException("No network adapter");
- }
- HardwareCode = adapter.GetPhysicalAddress().ToString();
- var address = Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(x => x.AddressFamily == AddressFamily.InterNetwork);
- IpAddress = address != null ? address.ToString() : string.Empty;
- }
- private static void InitializePythonExeFolder()
- {
- var configFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Config.xml");
- if (File.Exists(configFilePath))
- {
- var xmlDoucment = new XmlDataDocument();
- xmlDoucment.Load(configFilePath);
- if (xmlDoucment.DocumentElement == null || xmlDoucment.ChildNodes.Count < 0)
- {
- return;
- }
- var pythonEnvsElement = xmlDoucment.ChildNodes.OfType<XmlElement>().FirstOrDefault(x => x.Name == "PythonEnvs");
- if (pythonEnvsElement == null)
- {
- return;
- }
- foreach (var childNode in pythonEnvsElement.ChildNodes.OfType<XmlElement>())
- {
- var env = childNode.GetAttribute("env");
- var name = childNode.GetAttribute("name");
- if (!string.IsNullOrEmpty(name))
- {
- switch (env.ToLower())
- {
- case "tensorflow":
- PythonEnvs.Add(TrainScriptPackageFramework.Tensorflow, name);
- break;
- case "vinno_torch":
- PythonEnvs.Add(TrainScriptPackageFramework.vinno_torch, name);
- break;
- case "cntk":
- PythonEnvs.Add(TrainScriptPackageFramework.CNTK, name);
- break;
- case "vinno_torch_plus":
- PythonEnvs.Add(TrainScriptPackageFramework.vinno_torch_plus, name);
- break;
- case "vinno_torch_premium":
- PythonEnvs.Add(TrainScriptPackageFramework.vinno_torch_premium, name);
- break;
- }
- }
- }
- }
- }
- }
- }
|