public IActionResult RequestVm([FromBody] VmProvisioningRequest requestDetails) { if (requestDetails == null) { return(BadRequest()); } using (var httpClient = new HttpClient()) { var request = new { VmSize = requestDetails.Inputs.VmSize, Requestor = requestDetails.Inputs.Requestor }; var jsonRequest = JsonConvert.SerializeObject(request); var requestContent = new StringContent(jsonRequest, Encoding.UTF8, "application/json"); var response = httpClient.PostAsync("http://provisioningportal:5000/api/requestvm", requestContent).Result; var responseContent = response.Content.ReadAsStringAsync().Result; dynamic deserializedReponse = JsonConvert.DeserializeObject(responseContent); var provisioningResult = new VmProvisioningResponse((Guid)deserializedReponse.requestId); return(new ObjectResult(provisioningResult)); } }
public IActionResult RequestVm([FromBody] Models.VmProvisioningRequest requestDetails) { if (requestDetails == null) { return(BadRequest()); } var provisioningRequest = new Persistence.VmProvisioningRequest(requestDetails.Requestor, requestDetails.VmSize); _store.Register(provisioningRequest); IJobDetail requestFulfillmentJob = JobBuilder.Create <FulfillRequestJob>() .WithIdentity("vmrequest_" + provisioningRequest.RequestId.ToString(), "vmprovisioning") .UsingJobData("requestId", provisioningRequest.RequestId.ToString()) .Build(); ITrigger requestFulfillmentJobTrigger = TriggerBuilder.Create() .WithIdentity("requestFulFillmentJobTrigger_" + provisioningRequest.RequestId.ToString(), "vmprovisioning") .StartNow() .Build(); _scheduler.ScheduleJob(requestFulfillmentJob, requestFulfillmentJobTrigger); var provisioningResult = new VmProvisioningResponse { RequestId = provisioningRequest.RequestId, Status = provisioningRequest.Status }; return(new ObjectResult(provisioningResult)); }