コード例 #1
0
    public IActionResult DownloadPackage([FromHeader] string authorization, string packageFileName)
    {
        if (string.IsNullOrWhiteSpace(packageFileName))
        {
            return(BadRequest());
        }

        EnsureGoodAuthorization(authorization);

        var list        = Collector.GetAvailablePackageList();
        var serviceInfo = list.FirstOrDefault(i => i.PackageFileName.Equals(packageFileName, StringComparison.InvariantCultureIgnoreCase));

        if (serviceInfo == null)
        {
            return(NotFound($"this service name {packageFileName} does not exist"));
        }

        var palaceInfo = PalaceInfoManager.GetOrCreatePalaceInfo(HttpContext.GetUserAgent(), HttpContext.GetUserHostAddress());

        if (serviceInfo.LockedBy != null &&
            serviceInfo.LockedBy != palaceInfo.Key)
        {
            return(NoContent());
        }

        var fileName = System.IO.Path.Combine(PalaceServerSettings.MicroServiceRepositoryFolder, packageFileName);

        var stream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);

        return(File(stream, "application/zip", packageFileName));
    }
コード例 #2
0
    public IActionResult GetAction([FromHeader] string authorization, string serviceName)
    {
        EnsureGoodAuthorization(authorization);

        var palaceInfo = PalaceInfoManager.GetOrCreatePalaceInfo(HttpContext.GetUserAgent(), HttpContext.GetUserHostAddress());
        var key        = $"{palaceInfo.MachineName}.{palaceInfo.HostName}.{serviceName}".ToLower();
        var svc        = Collector.GetRunningList().FirstOrDefault(i => i.Key == key);

        if (svc == null)
        {
            return(Ok(new Models.NextActionResult
            {
                Action = Models.ServiceAction.DoNothing
            }));
        }
        var nextAction = svc.NextAction;

        if (nextAction != Models.ServiceAction.DoNothing)
        {
            Logger.LogInformation($"Action {nextAction} required for running service {serviceName} on {svc.Key}");
        }
        var result = new Models.NextActionResult
        {
            Action = nextAction
        };

        svc.NextAction = Models.ServiceAction.DoNothing;
        return(Ok(result));
    }
コード例 #3
0
    string GetHostNameByIp(string ip)
    {
        var hostList = PalaceInfoManager.GetPalaceInfoList();
        var host     = hostList.FirstOrDefault(i => i.Ip == ip);

        return(host.HostName);
    }
コード例 #4
0
 public MicroServiceCollectorManager(
     IMemoryCache memoryCache,
     ILogger <MicroServiceCollectorManager> logger,
     Configuration.PalaceServerSettings settings,
     PalaceInfoManager palaceInfoManager
     )
 {
     this.Cache             = memoryCache;
     this.Logger            = logger;
     this.Settings          = settings;
     this.PalaceInfoManager = palaceInfoManager;
 }
コード例 #5
0
    public IActionResult GetConfiguration([FromHeader] string authorization)
    {
        EnsureGoodAuthorization(authorization);

        var palaceInfo = PalaceInfoManager.GetOrCreatePalaceInfo(HttpContext.GetUserAgent(), HttpContext.GetUserHostAddress());

        if (palaceInfo == null)
        {
            return(NoContent());
        }

        return(Ok(palaceInfo.MicroServiceSettingsList));
    }
コード例 #6
0
    public IActionResult AddService([FromHeader] string authorization, Models.MicroServiceSettings serviceSettings)
    {
        EnsureGoodAuthorization(authorization);

        var palaceInfo = PalaceInfoManager.GetOrCreatePalaceInfo(HttpContext.GetUserAgent(), HttpContext.GetUserHostAddress());

        if (palaceInfo == null)
        {
            return(NoContent());
        }

        var result = PalaceInfoManager.SaveMicroServiceSettings(palaceInfo, serviceSettings);

        if (result.Count > 0)
        {
            BadRequest(result);
        }
        return(Ok());
    }
コード例 #7
0
ファイル: Hosts.razor.cs プロジェクト: chouteau/Palace
 void UpdateLists()
 {
     PalaceInfoList = PalaceInfoManager.GetPalaceInfoList();
 }