Exemplo n.º 1
0
        public RunInfo GetRunInfo(int runIndex)
        {
            if (_runInfoCache.ContainsKey(runIndex))
            {
                return(_runInfoCache[runIndex]);
            }

            var jobInfo = this;
            // only get the first run asset for now
            var job = jobInfo.CloudJob;

            //check run index if valid
            var page      = runIndex + 1;
            var totalRuns = job.Status.RunsCompleted + job.Status.RunsFailed + job.Status.RunsPending + job.Status.RunsRunning;

            if (totalRuns == 0)
            {
                throw new ArgumentException($"[Error] Job status: [{job.Status.Status}]. There is no run available in this job");
            }

            if (page > totalRuns)
            {
                throw new ArgumentException($"[Error] This job has {totalRuns} runs in total, a valid run index could from 0 to { totalRuns - 1};");
            }

            var api  = new PollinationSDK.Api.RunsApi();
            var runs = api.ListRuns(jobInfo.Project.Owner.Name, jobInfo.Project.Name, jobId: new List <string>()
            {
                job.Id
            }, page: page, perPage: 1).Resources;
            var firstRun = runs.FirstOrDefault();

            var isRunFinished = firstRun.Status.FinishedAt > firstRun.Status.StartedAt;

            if (!isRunFinished)
            {
                throw new ArgumentException($"[Warning] Run status: {firstRun.Status.Status}. If this run [{firstRun.Id.Substring(0, 5)}] is scheduled but not finished, please check it again in a few seconds;");
            }

            var runInfo = new RunInfo(jobInfo.Project, firstRun);

            _runInfoCache.Add(runIndex, runInfo);
            return(runInfo);
        }
Exemplo n.º 2
0
        private static void DownloadAssets(Project proj)
        {
            var runApi = new PollinationSDK.Api.RunsApi();

            var firstRun = runApi.ListRuns(proj.Owner.Name, proj.Name, page: 1, perPage: 1).Resources.First();
            var runInfo  = new RunInfo(proj, firstRun);

            // get all output assets to download

            var assets      = runInfo.GetOutputAssets("grasshopper").OfType <RunAssetBase>().ToList();
            var inputAssets = runInfo.GetInputAssets();

            assets = assets.Concat(inputAssets).ToList();

            var savedPath = System.IO.Path.GetTempPath();
            var task      = Task.Run(async() => await DownloadAsync(runInfo, assets, savedPath));
            var filePaths = task.GetAwaiter().GetResult();

            foreach (var item in filePaths)
            {
                Console.WriteLine($"Asset: {item.Name}\nSaved Path: {item.LocalPath}");
            }
        }