public async Task <ApiResult> GetCodeGen([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());

                await Task.Yield();

                return(ApiResult.CreateSuccess(codeGen.Code));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
        public async Task <ApiResult> SaveFlow([FromBody] JObject config)
        {
            try
            {
                RolesCheck.EnsureWriter(Request, _isLocal);
                Ensure.NotNull(config, "config");

                var inputJson = JsonConfig.From(config.ToString());
                var result    = await _flowOperation.SaveFlowConfig(FlowGuiConfig.From(inputJson));

                Ensure.IsSuccessResult(result);

                if (result.Properties != null && result.Properties.TryGetValue(FlowOperation.FlowConfigPropertyName, out object flowConfig))
                {
                    return(ApiResult.CreateSuccess(JToken.FromObject(flowConfig)));
                }
                else
                {
                    return(ApiResult.CreateSuccess(JToken.FromObject(string.Empty)));
                }
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
Esempio n. 3
0
 [Route("inputdata/refreshsample")]  // schema inf
 public async Task <ApiResult> RefreshSample([FromBody] JObject jObject)
 {
     try
     {
         RolesCheck.EnsureWriter(Request);
         SchemaInferenceManager sim = new SchemaInferenceManager(_logger);
         return(await sim.RefreshSample(jObject));
     }
     catch (Exception e)
     {
         _logger.LogError(e, e.Message);
         return(ApiResult.CreateError(e.Message));
     }
 }
Esempio n. 4
0
 [Route("inputdata/refreshsampleandkernel")] // diag
 public async Task <ApiResult> RefreshInputDataAndKernel([FromBody] JObject jObject)
 {
     try
     {
         RolesCheck.EnsureWriter(Request);
         LiveDataManager ldm = new LiveDataManager(_logger, _configuration);
         return(await ldm.RefreshInputDataAndKernel(jObject));
     }
     catch (Exception e)
     {
         _logger.LogError(e, e.Message);
         return(ApiResult.CreateError(e.Message));
     }
 }
Esempio n. 5
0
 [Route("kernel/executequery")] // diag
 public async Task <ApiResult> ExecuteCode([FromBody] JObject jObject)
 {
     try
     {
         RolesCheck.EnsureWriter(Request);
         InteractiveQueryManager iqm = new InteractiveQueryManager(_logger);
         return(await iqm.ExecuteQuery(jObject));
     }
     catch (Exception e)
     {
         _logger.LogError(e, e.Message);
         return(ApiResult.CreateError(e.Message));
     }
 }
Esempio n. 6
0
        [Route("flow/schedulebatch")] // schedule batch jobs
        public async Task <ApiResult> ScheduleBatch()
        {
            try
            {
                RolesCheck.EnsureWriter(Request, _isLocal);
                var result = await _flowOperation.ScheduleBatch(this._runtimeConfigGenerator).ConfigureAwait(false);

                return(ApiResult.CreateSuccess(JToken.FromObject(result)));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
Esempio n. 7
0
        [Route("kernel/refresh")] // diag
        public async Task <ApiResult> RefreshKernel([FromBody] JObject jObject)
        {
            try
            {
                RolesCheck.EnsureWriter(Request);

                InteractiveQueryManager iqm = new InteractiveQueryManager(_logger, _configuration);
                return(await iqm.RecycleKernel(jObject));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
Esempio n. 8
0
        [Route("inputdata/inferschema")] // schemainf
        public async Task<ApiResult> GetInputSchema([FromBody]JObject jObject)
        {
            try
            {
                RolesCheck.EnsureWriter(Request);
                SchemaInferenceManager sim = new SchemaInferenceManager(_logger, _configuration);
                return await sim.GetInputSchema(jObject);

            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return ApiResult.CreateError(e.Message);
            }
        }
Esempio n. 9
0
        public async Task <ApiResult> DeleteAllKernels()
        {
            try
            {
                RolesCheck.EnsureWriter(Request);

                InteractiveQueryManager iqm = new InteractiveQueryManager(_logger);
                return(await iqm.DeleteAllKernels().ConfigureAwait(false));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
        [Route("flow/delete")] // Flow delete
        public async Task <ApiResult> DeleteFlow([FromBody] JObject queryObject)
        {
            try
            {
                RolesCheck.EnsureWriter(Request);
                Ensure.NotNull(queryObject, "queryObject");

                ConfigDeleter c = new ConfigDeleter(_logger, _configuration);
                return(await c.DeleteFlow(queryObject));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
Esempio n. 11
0
        [Route("kernel/delete")] // diag
        public async Task <ApiResult> DeleteKernel([FromBody] string kernelId)
        {
            try
            {
                RolesCheck.EnsureWriter(Request);


                InteractiveQueryManager iqm = new InteractiveQueryManager(_logger, _configuration);
                return(await iqm.DeleteKernel(kernelId).ConfigureAwait(false));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
Esempio n. 12
0
        [Route("kernel/delete")] // diag
        public async Task <ApiResult> DeleteKernel([FromBody] JObject jObject)
        {
            try
            {
                RolesCheck.EnsureWriter(Request);

                var diag = jObject.ToObject <InteractiveQueryObject>();
                InteractiveQueryManager iqm = new InteractiveQueryManager(_logger, _configuration);
                return(await iqm.DeleteKernel(diag.KernelId, diag.Name).ConfigureAwait(false));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
Esempio n. 13
0
        public async Task <ApiResult> DeleteKernelList([FromBody] System.Collections.Generic.List <string> kernels)
        {
            try
            {
                RolesCheck.EnsureWriter(Request);


                InteractiveQueryManager iqm = new InteractiveQueryManager(_logger);
                return(await iqm.DeleteKernelList(kernels).ConfigureAwait(false));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
        public async Task <ApiResult> GenerateConfigs([FromBody] string flowName)
        {
            try
            {
                RolesCheck.EnsureWriter(Request, _isLocal);
                Ensure.NotNull(flowName, "flowName");

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

                return(ApiResult.CreateSuccess(JToken.FromObject(result)));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
        public async Task <ApiResult> SyncAllJobs()
        {
            try
            {
                RolesCheck.EnsureWriter(Request, _isLocal);

                // Sync all jobs
                var jobOpResult = await _jobOperation.SyncAllJobState();

                return(ApiResult.CreateSuccess(JToken.FromObject(jobOpResult)));
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message);
                return(ApiResult.CreateError(e.Message));
            }
        }
        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));
            }
        }
        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. 18
0
        [Route("kernel")] // diag
        public async Task <ApiResult> CreateAndInitializeKernel([FromBody] JObject jObject)
        {
            try
            {
                RolesCheck.EnsureWriter(Request);
                InteractiveQueryManager iqm = new InteractiveQueryManager(_logger);
                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));
            }
        }
Esempio n. 19
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));
            }
        }
        [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));
            }
        }