public async Task <IActionResult> ExecuteQuery(string subscriptionId, string resourceGroupName, string hostingEnvironmentName, string[] hostNames, string stampName, [FromBody] CompilationBostBody <DiagnosticStampData> jsonBody, string startTime = null, string endTime = null, string timeGrain = null) { if (jsonBody == null) { return(BadRequest("Missing body")); } if (jsonBody.Resource == null) { jsonBody.Resource = await GetHostingEnvironmentPostBody(hostingEnvironmentName); } if (!DateTimeHelper.PrepareStartEndTimeWithTimeGrain(startTime, endTime, timeGrain, out DateTime startTimeUtc, out DateTime endTimeUtc, out TimeSpan timeGrainTimeSpan, out string errorMessage)) { return(BadRequest(errorMessage)); } HostingEnvironment ase = await GetHostingEnvironment(subscriptionId, resourceGroupName, hostingEnvironmentName, jsonBody.Resource, startTimeUtc, endTimeUtc); return(await base.ExecuteQuery(ase, jsonBody, startTime, endTime, timeGrain)); }
public async Task <IActionResult> ExecuteSystemQuery(string subscriptionId, string resourceGroupName, string hostingEnvironmentName, string[] hostNames, string stampName, [FromBody] CompilationBostBody <DiagnosticStampData> jsonBody, string detectorId, string dataSource = null, string timeRange = null) { HostingEnvironment ase = new HostingEnvironment(subscriptionId, resourceGroupName, hostingEnvironmentName); return(await base.ExecuteQuery(ase, jsonBody, null, null, null, detectorId, dataSource, timeRange)); }
protected async Task <IActionResult> ExecuteQuery <TPostBodyResource>(TResource resource, CompilationBostBody <TPostBodyResource> jsonBody, string startTime, string endTime, string timeGrain) { if (jsonBody == null) { return(BadRequest("Missing body")); } if (string.IsNullOrWhiteSpace(jsonBody.Script)) { return(BadRequest("Missing script in body")); } if (!DateTimeHelper.PrepareStartEndTimeWithTimeGrain(startTime, endTime, timeGrain, out DateTime startTimeUtc, out DateTime endTimeUtc, out TimeSpan timeGrainTimeSpan, out string errorMessage)) { return(BadRequest(errorMessage)); } await this._sourceWatcherService.Watcher.WaitForFirstCompletion(); EntityMetadata metaData = new EntityMetadata(jsonBody.Script); var dataProviders = new DataProviders.DataProviders(_dataSourcesConfigService.Config); QueryResponse <DiagnosticApiResponse> queryRes = new QueryResponse <DiagnosticApiResponse> { InvocationOutput = new DiagnosticApiResponse() }; Assembly tempAsm = null; this.Request.Headers.TryGetValue(HeaderConstants.RequestIdHeaderName, out StringValues requestIds); var compilerResponse = await _compilerHostClient.GetCompilationResponse(jsonBody.Script, requestIds.FirstOrDefault() ?? string.Empty); queryRes.CompilationOutput = compilerResponse; if (queryRes.CompilationOutput.CompilationSucceeded) { byte[] asmData = Convert.FromBase64String(compilerResponse.AssemblyBytes); byte[] pdbData = Convert.FromBase64String(compilerResponse.PdbBytes); tempAsm = Assembly.Load(asmData, pdbData); using (var invoker = new EntityInvoker(metaData, ScriptHelper.GetFrameworkReferences(), ScriptHelper.GetFrameworkImports())) { invoker.InitializeEntryPoint(tempAsm); // Verify Detector with other detectors in the system in case of conflicts if (!VerifyEntity(invoker, ref queryRes)) { return(Ok(queryRes)); } OperationContext <TResource> cxt = PrepareContext(resource, startTimeUtc, endTimeUtc); List <DataProviderMetadata> dataProvidersMetadata = null; try { var responseInput = new Response() { Metadata = RemovePIIFromDefinition(invoker.EntryPointDefinitionAttribute, cxt.IsInternalCall) }; var invocationResponse = (Response)await invoker.Invoke(new object[] { dataProviders, cxt, responseInput }); invocationResponse.UpdateDetectorStatusFromInsights(); if (cxt.IsInternalCall) { dataProvidersMetadata = GetDataProvidersMetadata(dataProviders); } queryRes.RuntimeSucceeded = true; queryRes.InvocationOutput = DiagnosticApiResponse.FromCsxResponse(invocationResponse, dataProvidersMetadata); } catch (Exception ex) { if (cxt.IsInternalCall) { queryRes.RuntimeSucceeded = false; queryRes.InvocationOutput = CreateQueryExceptionResponse(ex, invoker.EntryPointDefinitionAttribute, cxt.IsInternalCall, GetDataProvidersMetadata(dataProviders)); } else { throw; } } } } return(Ok(queryRes)); }
public async Task <IActionResult> ExecuteSystemQuery(string subscriptionId, string resourceGroupName, string serviceName, [FromBody] CompilationBostBody <dynamic> jsonBody, string detectorId, string dataSource = null, string timeRange = null) { return(await base.ExecuteQuery(GetResource(subscriptionId, resourceGroupName, serviceName), jsonBody, null, null, null, detectorId, dataSource, timeRange)); }
public async Task <IActionResult> ExecuteQuery(string subscriptionId, string resourceGroupName, string serviceName, [FromBody] CompilationBostBody <dynamic> jsonBody, string startTime = null, string endTime = null, string timeGrain = null) { return(await base.ExecuteQuery(GetResource(subscriptionId, resourceGroupName, serviceName), jsonBody, startTime, endTime, timeGrain)); }
public async Task <IActionResult> ExecuteSystemQuery(string subscriptionId, string resourceGroupName, string siteName, [FromBody] CompilationBostBody <DiagnosticSiteData> jsonBody, string detectorId, string dataSource = null, string timeRange = null) { App app = new App(subscriptionId, resourceGroupName, siteName); return(await base.ExecuteQuery(app, jsonBody, null, null, null, detectorId, dataSource, timeRange)); }
public async Task <IActionResult> Post(string subscriptionId, string resourceGroupName, string siteName, [FromBody] CompilationBostBody <DiagnosticSiteData> jsonBody, string startTime = null, string endTime = null, string timeGrain = null) { if (jsonBody == null) { return(BadRequest("Missing body")); } if (jsonBody.Resource == null) { return(BadRequest("Missing Site data in body")); } if (!DateTimeHelper.PrepareStartEndTimeWithTimeGrain(startTime, endTime, timeGrain, out DateTime startTimeUtc, out DateTime endTimeUtc, out TimeSpan timeGrainTimeSpan, out string errorMessage)) { return(BadRequest(errorMessage)); } App app = await GetAppResource(subscriptionId, resourceGroupName, siteName, jsonBody.Resource, startTimeUtc, endTimeUtc); return(await base.ExecuteQuery(app, jsonBody, startTime, endTime, timeGrain)); }