Esempio n. 1
0
        public async Task <ApiResult> GetJobsByNames([FromBody] string[] jobNames)
        {
            try
            {
                RolesCheck.EnsureReader(Request, _isLocal);
                Ensure.NotNull(jobNames, "jobNames");

                // Get jobs for the names given
                var jobOpResult = await _jobOperation.GetJobsByNames(jobNames);

                return(ApiResult.CreateSuccess(JToken.FromObject(jobOpResult)));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
Esempio n. 2
0
        public async Task <ApiResult> GetJob(string jobName)
        {
            try
            {
                RolesCheck.EnsureReader(Request, _isLocal);
                Ensure.NotNull(jobName, "jobName");

                // Get a job
                var jobOpResult = await _jobOperation.GetJobsByNames(new string[] { jobName });

                return(ApiResult.CreateSuccess(JToken.FromObject(jobOpResult)));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
Esempio n. 3
0
        public async Task <ApiResult> StopJobsForFlow([FromBody] string flowName)
        {
            try
            {
                RolesCheck.EnsureWriter(Request, _isLocal);
                Ensure.NotNull(flowName, "flowName");

                // stop all jobs for flow
                var result = await _flowOperation.StopJobsForFlow(flowName);

                return(ApiResult.CreateSuccess(JToken.FromObject(result)));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
Esempio n. 4
0
        public async Task <ApiResult> RestartJob([FromBody] string jobName)
        {
            try
            {
                RolesCheck.EnsureWriter(Request, _isLocal);
                Ensure.NotNull(jobName, "jobName");

                // Restart job
                var jobOpResult = await _jobOperation.RestartJob(jobName);

                return(ApiResult.CreateSuccess(JToken.FromObject(jobOpResult)));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
Esempio n. 5
0
        [Route("kernel")] // diag
        public async Task <ApiResult> CreateAndInitializeKernel([FromBody] JObject jObject)
        {
            try
            {
                RolesCheck.EnsureWriter(Request);
                InteractiveQueryManager iqm = new InteractiveQueryManager(_logger, _configuration);
                ApiResult response          = await iqm.CreateAndInitializeKernel(jObject);

                //Logging information / success
                _logger.LogInformation("Successful Kernel Initialization!");
                return(response);
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
        [Route("flow/delete")] // delete flow configs
        public async Task <ApiResult> DeleteConfigs([FromBody] JObject queryObject)
        {
            try
            {
                RolesCheck.EnsureWriter(Request, _isLocal);
                Ensure.NotNull(queryObject, "queryObject");

                var flowName = queryObject.GetValue("name").ToString();

                var result = await this._runtimeConfigGenerator.DeleteConfigs(flowName);

                return(ApiResult.CreateSuccess(JToken.FromObject(result)));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
Esempio n. 7
0
        public async Task <ApiResult> RestatAllWithRetries([FromBody] JObject request)
        {
            try
            {
                RolesCheck.EnsureWriter(Request, _isLocal);
                Ensure.NotNull(request, "request");

                var jobNames              = request.Value <JArray>("JobNames")?.Value <string[]>() ?? Array.Empty <string>();
                var maxRetryTimes         = request.GetValue("MaxRetryTimes", StringComparison.OrdinalIgnoreCase)?.Value <int>() ?? 2;
                var waitIntervalInSeconds = request.GetValue("WaitIntervalInSeconds", StringComparison.OrdinalIgnoreCase)?.Value <int>() ?? 2;
                var maxWaitTimeInSeconds  = request.GetValue("MaxWaitTimeInSeconds", StringComparison.OrdinalIgnoreCase)?.Value <int>() ?? 60;
                int retryTimes            = 0;
                IEnumerable <SparkJobFrontEnd> notReadyJobs = Enumerable.Empty <SparkJobFrontEnd>();
                do
                {
                    await _jobOperation.RestartAllJobs(jobNames);

                    var startTime = DateTime.Now;
                    do
                    {
                        SparkJobFrontEnd[] jobOpResult = jobNames != null && jobNames.Any() ?
                                                         await _jobOperation.SyncJobStateByNames(jobNames)
                                : await _jobOperation.SyncAllJobState();

                        notReadyJobs = jobOpResult.Where(r => r.JobState == JobState.Starting || r.JobState == JobState.Idle || r.JobState == JobState.Error);
                        jobNames     = notReadyJobs.Select(j => j.Name).ToArray();
                        if (!notReadyJobs.Any())
                        {
                            break;
                        }

                        System.Threading.Thread.Sleep(waitIntervalInSeconds * 1000);
                    } while ((DateTime.Now - startTime).TotalSeconds < maxWaitTimeInSeconds);
                } while (retryTimes++ < maxRetryTimes && notReadyJobs.Any());

                return(ApiResult.CreateSuccess(JToken.FromObject(notReadyJobs)));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
        public async Task <ApiResult> GetSchema([FromBody] JObject config)
        {
            try
            {
                RolesCheck.EnsureWriter(Request, _isLocal);
                Ensure.NotNull(config, "config");
                string queries = string.Join("\n", config.GetValue("query").ToString());

                var       ruleDefinitionRaw  = config.Value <JArray>("rules");
                var       ruleDefinitionList = ruleDefinitionRaw.ToObject <List <FlowGuiRule> >();
                var       ruleDefinitions    = RuleDefinitionGenerator.GenerateRuleDefinitions(ruleDefinitionList, config.GetValue("name").ToString());
                RulesCode codeGen            = CodeGen.GenerateCode(queries, ruleDefinitions, config.GetValue("name").ToString());
                var       result             = Analyzer.Analyze(queries, codeGen.Code, config.GetValue("inputSchema").ToString());

                await Task.Yield();

                return(ApiResult.CreateSuccess(result));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }