public async Task <IActionResult> Assign([FromBody] EncryptedHostAssignmentContext encryptedAssignmentContext) { _logger.LogDebug($"Starting container assignment for host : {Request?.Host}. ContextLength is: {encryptedAssignmentContext.EncryptedContext?.Length}"); var containerKey = _environment.GetEnvironmentVariable(EnvironmentSettingNames.ContainerEncryptionKey); var assignmentContext = encryptedAssignmentContext.IsWarmup ? null : encryptedAssignmentContext.Decrypt(containerKey); // before starting the assignment we want to perform as much // up front validation on the context as possible string error = await _instanceManager.ValidateContext(assignmentContext, encryptedAssignmentContext.IsWarmup); if (error != null) { return(StatusCode(StatusCodes.Status400BadRequest, error)); } // Wait for Sidecar specialization to complete before returning ok. // This shouldn't take too long so ok to do this sequentially. error = await _instanceManager.SpecializeMSISidecar(assignmentContext, encryptedAssignmentContext.IsWarmup); if (error != null) { return(StatusCode(StatusCodes.Status500InternalServerError, error)); } var result = _instanceManager.StartAssignment(assignmentContext, encryptedAssignmentContext.IsWarmup); return(result || encryptedAssignmentContext.IsWarmup ? Accepted() : StatusCode(StatusCodes.Status409Conflict, "Instance already assigned")); }
public async Task <IActionResult> Assign([FromBody] EncryptedHostAssignmentContext encryptedAssignmentContext) { _logger.LogDebug($"Starting container assignment for host : {Request?.Host}"); var assignmentContext = _startupContextProvider.SetContext(encryptedAssignmentContext); string error = await _instanceManager.ValidateContext(assignmentContext); if (error != null) { return(StatusCode(StatusCodes.Status400BadRequest, error)); } var succeeded = _instanceManager.StartAssignment(assignmentContext); return(succeeded ? Accepted() : StatusCode(StatusCodes.Status409Conflict, "Instance already assigned")); }
public async Task <IActionResult> Assign([FromBody] EncryptedHostAssignmentContext encryptedAssignmentContext) { var containerKey = _environment.GetEnvironmentVariable(EnvironmentSettingNames.ContainerEncryptionKey); var assignmentContext = encryptedAssignmentContext.Decrypt(containerKey); // before starting the assignment we want to perform as much // up front validation on the context as possible string error = await _instanceManager.ValidateContext(assignmentContext); if (error != null) { return(StatusCode(StatusCodes.Status400BadRequest, error)); } var result = _instanceManager.StartAssignment(assignmentContext); return(result ? Accepted() : StatusCode(StatusCodes.Status409Conflict, "Instance already assigned")); }
public async Task <IActionResult> Assign([FromBody] EncryptedHostAssignmentContext encryptedAssignmentContext) { _logger.LogDebug($"Starting container assignment for host : {Request?.Host}. ContextLength is: {encryptedAssignmentContext.EncryptedContext?.Length}"); bool succeeded = false; if (!encryptedAssignmentContext.IsWarmup) { var assignmentContext = _startupContextProvider.SetContext(encryptedAssignmentContext); // before starting the assignment we want to perform as much // up front validation on the context as possible string error = await _instanceManager.ValidateContext(assignmentContext, encryptedAssignmentContext.IsWarmup); if (error != null) { return(StatusCode(StatusCodes.Status400BadRequest, error)); } // Wait for Sidecar specialization to complete before returning ok. // This shouldn't take too long so ok to do this sequentially. error = await _instanceManager.SpecializeMSISidecar(assignmentContext, encryptedAssignmentContext.IsWarmup); if (error != null) { return(StatusCode(StatusCodes.Status500InternalServerError, error)); } succeeded = _instanceManager.StartAssignment(assignmentContext, encryptedAssignmentContext.IsWarmup); } else { succeeded = true; } return(succeeded ? Accepted() : StatusCode(StatusCodes.Status409Conflict, "Instance already assigned")); }