Files
AZ.Compute/AZ.Compute/Service.cs
2024-07-06 18:54:38 +03:00

60 lines
1.7 KiB
C#

using AZ.Compute.Agent;
using Esiur.Resource;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AZ.Compute
{
[Resource]
public partial class Service
{
[Export]
Node[] agents = new Node[0];
[Export]
public async void AddAgent(string ip)
{
var agent = await Warehouse.Get<Node>($"iip://{ip}:10001/sys/agent", new { AutoReconnect = true });
Agents = agents.Append(agent).ToArray();
}
[Export]
public void Compute(string fileName, string arguments)
{
if (fileName.Contains(" "))
{
var sc = fileName.Split(' ', 2);
fileName = sc[0];
arguments = sc[1];
}
// هنا ينحط الكود مال الغورثمية الي تستنكي افضل ايجينت حتى تشغل التاسك عليه
//Agents.First().Compute(fileName, arguments);
//مثلا اقل لود على السي بي يوم
var agent = agents.OrderBy(x => x.Cpu).First();
Console.WriteLine($"Agent {agent.Id} was selected for the new task");
agent.Compute(fileName, arguments);
// اقل نتورك
//agents.OrderBy(x=>x.Network).First().Compute(fileName, arguments);
// largest avaialble RAM
//agents.OrderByDescending(x=>x.Ram).First().Compute(fileName, arguments);
// least jitter
//agents.OrderBy(x => x.DistributedResourceConnection.Jitter).First().Compute(fileName, arguments) ;
}
}
}