60 lines
1.7 KiB
C#
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) ;
|
|
|
|
}
|
|
}
|
|
}
|