public virtual void AddContainer(int containerId, Container container) { lock (_lock) { ContainersTable.Add(containerId, container); } }
public List <Container> GetAllContainers() { lock (_lock) { return(ContainersTable.Select(x => x.Value).ToList()); } }
public void UnLockContainer() { lock (_lock) { ContainersTable.Add(MigratedContainer.ContainerId, MigratedContainer); MigratedContainer = null; throw new NotImplementedException("Should Never be called"); } }
public override void AddContainer(int containerId, Container container) { lock (_lock) { var dockerCon = container as DockerContainer; if (!ImageManager.ContainsImage(dockerCon.ImageId)) { throw new Exception("How Come"); } ContainersTable.Add(containerId, container); } }
public void LockContainer(int conId) { lock (_lock) { var container = ContainersTable[conId]; ContainersTable.Remove(conId); if (container == null) { throw new ArgumentException("No SUch con"); } MigratedContainer = container; } }
/// <summary> /// Update to different conditions /// </summary> /// <returns></returns> public Container SelectContainerByCondition() { lock (_lock) { if (!ContainersTable.Any()) { return(null); } if (ContainersTable.Count == _hashSet.Count) { _hashSet.Clear(); } Container container = ContainersTable.Values.OrderByDescending( x => x.GetContainerPredictedLoadInfo().VolumeToSizeRatioToMigrationsCount) .SkipWhile(x => _hashSet.Contains(x.ContainerId)) .First(); _hashSet.Add(container.ContainerId); return(container); } }