Exemple #1
0
        private void PrintInformationFiles(string path, APIConnectionInformation connectionInformation)
        {
            string lines = $"Configuration on the file '{path}'";

            CLILogs.Info(lines);
            CLILogs.Info(connectionInformation.ToString());
        }
Exemple #2
0
        public virtual async Task <CommandValues.GenericInfoCommandValue> ExecuteAsync(QTask task, IConfiguration iconfig = null, CancellationToken ct = default(CancellationToken))
        {
            CLILogs.Debug("Command Task : Wait");
            var  config = iconfig as StdConfiguration;
            bool end    = false;

            while (end == false)
            {
                if (config.Stdout)
                {
                    var stdmessage = await task.FreshStdoutAsync(ct);

                    if (!string.IsNullOrEmpty(stdmessage))
                    {
                        CLILogs.Info("Stdout:" + Environment.NewLine + stdmessage.Replace("\\n", Environment.NewLine));
                    }
                }
                if (config.Stderr)
                {
                    var stdmessage = await task.FreshStderrAsync(ct);

                    if (!string.IsNullOrEmpty(stdmessage))
                    {
                        CLILogs.Info("Stderr:" + Environment.NewLine + stdmessage.Replace("\\n", Environment.NewLine));
                    }
                }
                end = await task.WaitAsync(taskTimeoutSeconds : 2, ct : ct);
            }

            var info = new CommandValues.GenericInfoCommandValue();

            info.Uuid    = task.Uuid.ToString();
            info.Message = "Task Wait end status : " + task.State;
            return(info);
        }
        public Connection CreateConnection(IConfiguration config)
        {
            if (config == null)
            {
                throw new ArgumentNullException();
            }
            string            apiUri = config?.ApiConnection?.ApiUri == null ? "https://api.qarnot.com" : config?.ApiConnection?.ApiUri;
            HttpClientHandler client = getClientHandler(config);

            var enableSanitization = !(config?.ApiConnection?.DisableBucketPathsSanitization ?? false);

            if (enableSanitization)
            {
                CLILogs.Info("Bucket path sanitization is enabled (default). Use --no-sanitize-bucket-paths argument to disable.");
            }

            return(new Connection(
                       apiUri,
                       config?.ApiConnection?.StorageUri,
                       config?.ApiConnection?.Token,
                       client,
                       forceStoragePathStyle: config?.ApiConnection?.ForcePathStyle ?? false,
                       sanitizeBucketPaths: enableSanitization,
                       showBucketWarnings: false) // the cli will display custom warnings
            {
                StorageAccessKey = config?.ApiConnection?.AccountEmail,
                S3HttpClientFactory = config?.ApiConnection?.StorageUnsafeSsl ?? false ? new UnsafeS3HttpClientFactory() : null
            });
        }
Exemple #4
0
            private QPool CreatePool(CreateConfiguration config, QarnotSDK.Connection connect, CancellationToken ct)
            {
                QarnotSDK.QPool pool = new QarnotSDK.QPool(connect, config.Name, config.Profile, config.InstanceCount, config.Shortname, config.TasksDefaultWaitForPoolResourcesSynchronization);

                pool.SetTags(config.Tags.ToArray());

                pool.Resources = this.Tools.CreateResources(config.Resources, connect, ct);

                foreach (var item in this.Tools.CreateConstants(config.Constants))
                {
                    pool.SetConstant(item.Key, item.Value);
                }

                foreach (var item in this.Tools.CreateConstraints(config.Constraints))
                {
                    pool.SetConstraint(item.Key, item.Value);
                }

                foreach (var item in this.Tools.CreateLabels(config.Labels))
                {
                    pool.SetLabel(item.Key, item.Value);
                }

                pool.IsElastic = config.IsElastic;
                pool.ElasticMinimumTotalNodes  = config.ElasticMinimumTotalNodes == default(int) ? pool.ElasticMinimumTotalNodes : config.ElasticMinimumTotalNodes;
                pool.ElasticMaximumTotalNodes  = config.ElasticMaximumTotalNodes == default(int) ? pool.ElasticMaximumTotalNodes : config.ElasticMaximumTotalNodes;
                pool.ElasticMinimumIdlingNodes = config.ElasticMinimumIdlingNodes == default(int) ? pool.ElasticMinimumIdlingNodes : config.ElasticMinimumIdlingNodes;
                pool.ElasticResizePeriod       = config.ElasticResizePeriod == default(int) ? pool.ElasticResizePeriod : config.ElasticResizePeriod;
                pool.ElasticResizeFactor       = config.ElasticResizeFactor == default(int) ? pool.ElasticResizeFactor : config.ElasticResizeFactor;
                pool.ElasticMinimumIdlingTime  = config.ElasticMinimumIdlingTime == default(int) ? pool.ElasticMinimumIdlingTime : config.ElasticMinimumIdlingTime;

                CLILogs.Info("create pool");
                return(pool);
            }
Exemple #5
0
            private async Task <QTask> CreateTask(CreateConfiguration config, QarnotSDK.Connection connect, CancellationToken ct)
            {
                QarnotSDK.QTask task = null;
                if (config.InstanceCount > 0)
                {
                    task = await this.CreateInstanceTaskAsync(config, connect);
                }
                else
                {
                    task = await this.CreateRangeTaskAsync(config, connect);
                }

                task.SetTags(config.Tags.ToArray());

                task.Resources = this.Tools.CreateResources(config.Resources, connect, ct);

                task.Results = this.Tools.CreateResult(config.Result, connect, ct);

                this.Tools.CreateConstants(config.Constants).ToList().ForEach(item => task.SetConstant(item.Key, item.Value));

                foreach (var item in this.Tools.CreateConstraints(config.Constraints))
                {
                    task.SetConstraint(item.Key, item.Value);
                }

                foreach (var item in this.Tools.CreateLabels(config.Labels))
                {
                    task.SetLabel(item.Key, item.Value);
                }

                task.SetTaskDependencies(config.Dependents.Select(id => new Guid(id)).ToArray());

                task.ResultsWhitelist = config.Whitelist;
                task.ResultsBlacklist = config.Blacklist;

                if (config.MaxRetriesPerInstance.HasValue)
                {
                    task.MaxRetriesPerInstance = config.MaxRetriesPerInstance.Value;
                }

                if (config.ExportApiAndStorageCredentialsInEnvironment.HasValue)
                {
                    task.Privileges.ExportApiAndStorageCredentialsInEnvironment = config.ExportApiAndStorageCredentialsInEnvironment.Value;
                }

                if (config.DefaultResourcesCacheTTLSec.HasValue)
                {
                    task.DefaultResourcesCacheTTLSec = config.DefaultResourcesCacheTTLSec.Value;
                }


                CLILogs.Info("create task");
                return(task);
            }
Exemple #6
0
            private QPool CreatePool(CreateConfiguration config, QarnotSDK.Connection connect, CancellationToken ct)
            {
                QarnotSDK.QPool pool = new QarnotSDK.QPool(connect, config.Name, config.Profile, config.InstanceCount, config.Shortname, config.TasksDefaultWaitForPoolResourcesSynchronization);

                pool.SetTags(config.Tags.ToArray());

                pool.Resources = this.Tools.CreateResources(config.Resources, connect, ct);

                foreach (var item in this.Tools.CreateConstants(config.Constants))
                {
                    pool.SetConstant(item.Key, item.Value);
                }

                foreach (var item in this.Tools.CreateConstraints(config.Constraints))
                {
                    pool.SetConstraint(item.Key, item.Value);
                }

                foreach (var item in this.Tools.CreateLabels(config.Labels))
                {
                    pool.SetLabel(item.Key, item.Value);
                }

                pool.IsElastic = config.IsElastic;
                pool.ElasticMinimumTotalSlots  = config.ElasticMinimumTotalSlots == default(int) ? pool.ElasticMinimumTotalSlots : config.ElasticMinimumTotalSlots;
                pool.ElasticMaximumTotalSlots  = config.ElasticMaximumTotalSlots == default(int) ? pool.ElasticMaximumTotalSlots : config.ElasticMaximumTotalSlots;
                pool.ElasticMinimumIdlingSlots = config.ElasticMinimumIdlingSlots == default(int) ? pool.ElasticMinimumIdlingSlots : config.ElasticMinimumIdlingSlots;
                pool.ElasticResizePeriod       = config.ElasticResizePeriod == default(int) ? pool.ElasticResizePeriod : config.ElasticResizePeriod;
                pool.ElasticResizeFactor       = config.ElasticResizeFactor == default(int) ? pool.ElasticResizeFactor : config.ElasticResizeFactor;
                pool.ElasticMinimumIdlingTime  = config.ElasticMinimumIdlingTime == default(int) ? pool.ElasticMinimumIdlingTime : config.ElasticMinimumIdlingTime;

                if (config.ExportApiAndStorageCredentialsInEnvironment.HasValue)
                {
                    pool.Privileges.ExportApiAndStorageCredentialsInEnvironment = config.ExportApiAndStorageCredentialsInEnvironment.Value;
                }

                if (config.DefaultResourcesCacheTTLSec.HasValue)
                {
                    pool.DefaultResourcesCacheTTLSec = config.DefaultResourcesCacheTTLSec.Value;
                }

                CLILogs.Info("create pool");
                return(pool);
            }
Exemple #7
0
            private async Task <QJob> CreateJobAsync(CreateConfiguration config, QarnotSDK.Connection connect, CancellationToken ct)
            {
                CLILogs.Info("create job");
                QPool pool = null;

                if (!string.IsNullOrEmpty(config.PoolUuidOrShortname))
                {
                    pool = await connect.RetrievePoolByUuidAsync(config.PoolUuidOrShortname, ct);
                }

                QJob job = new QJob(connect, config.Name, pool, config.Shortname, config.IsDependents);

                if (config.MaximumWallTime.HasValue && config.MaximumWallTime.Value != default(TimeSpan))
                {
                    job.MaximumWallTime = config.MaximumWallTime.Value;
                }

                return(job);
            }
Exemple #8
0
            private async Task <QTask> CreateTask(CreateConfiguration config, QarnotSDK.Connection connect, CancellationToken ct)
            {
                QarnotSDK.QTask task = null;
                if (config.InstanceCount > 0)
                {
                    task = await this.CreateInstanceTaskAsync(config, connect);
                }
                else
                {
                    task = await this.CreateRangeTaskAsync(config, connect);
                }

                task.SetTags(config.Tags.ToArray());

                task.Resources = this.Tools.CreateResources(config.Resources, connect, ct);

                task.Results = this.Tools.CreateResult(config.Result, connect, ct);

                this.Tools.CreateConstants(config.Constants).ToList().ForEach(item => task.SetConstant(item.Key, item.Value));

                foreach (var item in this.Tools.CreateConstraints(config.Constraints))
                {
                    task.SetConstraint(item.Key, item.Value);
                }

                foreach (var item in this.Tools.CreateLabels(config.Labels))
                {
                    task.SetLabel(item.Key, item.Value);
                }

                task.SetTaskDependencies(config.Dependents.Select(id => new Guid(id)).ToArray());

                task.ResultsWhitelist = config.Whitelist;
                task.ResultsBlacklist = config.Blacklist;

                CLILogs.Info("create task");
                return(task);
            }
Exemple #9
0
        private void ShowConfiguration(APIConnectionInformation info)
        {
            string information = "connection information:" + Environment.NewLine;

            CLILogs.Info(information + info.ToString());
        }