//********************************************************************* /// /// <summary> /// /// </summary> /// <param name="vmReq"></param> /// <param name="exceptionType"></param> /// //********************************************************************* public static void SetVmReqExceptionType(CmpServiceLib.Models.VmDeploymentRequest vmReq, CmpInterfaceModel.Constants.RequestExceptionTypeCodeEnum exceptionType) { try { if (null != vmReq) { vmReq.ExceptionTypeCode = exceptionType.ToString(); } } catch (Exception) { } }
//********************************************************************* /// /// <summary> /// /// </summary> /// <param name="vmdeploymentrequest"></param> /// <returns></returns> /// //********************************************************************* CmpInterfaceModel.Models.VmDeploymentRequest ServToInt( CmpServiceLib.Models.VmDeploymentRequest vmdeploymentrequest) { if (null == vmdeploymentrequest) { return(null); } var ret = new CmpInterfaceModel.Models.VmDeploymentRequest { ID = vmdeploymentrequest.ID, ExceptionMessage = vmdeploymentrequest.ExceptionMessage, LastStatusUpdate = CmpServiceLib.Utilities.GetDbDateTime(vmdeploymentrequest.LastStatusUpdate), ParentAppName = vmdeploymentrequest.ParentAppName, RequestDescription = vmdeploymentrequest.RequestDescription, RequestName = vmdeploymentrequest.RequestName, SourceServerName = vmdeploymentrequest.SourceServerName, SourceVhdFilesCSV = vmdeploymentrequest.SourceVhdFilesCSV, Status = vmdeploymentrequest.StatusCode, TagData = vmdeploymentrequest.TagData, TargetLocation = vmdeploymentrequest.TargetLocation, TargetLocationType = vmdeploymentrequest.TargetLocationType, TargetVmName = vmdeploymentrequest.TargetVmName, TargetServiceName = vmdeploymentrequest.TargetServicename, VmSize = vmdeploymentrequest.VmSize, WhenRequested = CmpServiceLib.Utilities.GetDbDateTime(vmdeploymentrequest.WhenRequested), WhoRequested = vmdeploymentrequest.WhoRequested, Active = CmpServiceLib.Utilities.GetDbBool(vmdeploymentrequest.Active), AftsID = CmpServiceLib.Utilities.GetDbInt(vmdeploymentrequest.AftsID), Config = vmdeploymentrequest.Config, ParentAppID = vmdeploymentrequest.ParentAppID, RequestType = vmdeploymentrequest.RequestType, StatusMessage = vmdeploymentrequest.StatusMessage, TargetAccount = vmdeploymentrequest.TargetAccount, TargetAccountCreds = vmdeploymentrequest.TargetAccountCreds, TargetAccountType = vmdeploymentrequest.TargetAccountType, TargetServiceProviderType = vmdeploymentrequest.TargetServiceProviderType, TagID = CmpServiceLib.Utilities.GetDbInt(vmdeploymentrequest.TagID), ExceptionTypeCode = vmdeploymentrequest.ExceptionTypeCode, SourceServerRegion = vmdeploymentrequest.SourceServerRegion, ValidationResults = vmdeploymentrequest.ValidationResults, TargetServiceProviderAccountID = NonNull(vmdeploymentrequest.ServiceProviderAccountID) }; return(ret); }
//********************************************************************* /// /// <summary> /// Updates a CMP VM deployment request in the CMP database /// </summary> /// <param name="vmRequest">The CMP VM deployment request to update /// </param> /// <param name="warningList">A list of any warnings associated with /// the CMP VM deployment request</param> /// //********************************************************************* public void UpdateVmDepRequest(CmpServiceLib.Models.VmDeploymentRequest vmRequest, List <string> warningList) { var cdb = new CmpServiceLib.CmpDb(_CmpDbConnectionString); cdb.SetVmDepRequestStatus(vmRequest, warningList); }
//********************************************************************* /// /// <summary> /// Creates a new CMP VM deployment request in the CMP databse /// </summary> /// <param name="vmDepRequest">The CMP VM deployment request to add to /// the CMP database</param> /// <returns>The CMP VM deployment request to added to the CMP database /// </returns> /// //********************************************************************* public CmpServiceLib.Models.VmDeploymentRequest InsertVmDepRequest(CmpServiceLib.Models.VmDeploymentRequest vmDepRequest) { var cdb = new CmpServiceLib.CmpDb(_CmpDbConnectionString); return(cdb.InsertVmDepRequest(vmDepRequest)); }
//********************************************************************* /// // POST odata/VmDeployments /// <summary> /// /// </summary> /// <param name="vmdeploymentrequest"></param> /// <returns></returns> /// //********************************************************************* //[Authorize] public async Task <IHttpActionResult> Post( CmpInterfaceModel.Models.VmDeploymentRequest vmdeploymentrequest) { try { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var checkForExistingVm = true; var newRequest = true; CmpServiceLib.Models.VmDeploymentRequest response = null; var cmp = new CmpServiceLib.CmpService(_EventLog, _CmpDbConnectionString, _AftsDbConnectionString); vmdeploymentrequest.LastStatusUpdate = DateTime.Now; if (0 == vmdeploymentrequest.ID) { if (cmp.IsVmDepRequestInProcess(vmdeploymentrequest.TargetVmName)) { throw new Exception(string.Format( "A request for deployment for a server with name '{0}' is currently in process. Duplicates not allowed.", vmdeploymentrequest.TargetVmName)); } var vmCfg = CmpInterfaceModel.Models.VmConfig.Deserialize(vmdeploymentrequest.Config); if (null != vmCfg) { if (null != vmCfg.Placement) { if (vmCfg.Placement.RebuildRequest) { checkForExistingVm = false; } } } if (checkForExistingVm) { if (DoesNameResolve(vmdeploymentrequest.TargetVmName)) { throw new Exception(string.Format( "A DNS record for a server with name '{0}' already exists. Duplicates not allowed.", vmdeploymentrequest.TargetVmName)); } } if (vmdeploymentrequest.WhenRequested.Year < 2013) { vmdeploymentrequest.WhenRequested = DateTime.Now; } vmdeploymentrequest.Status = CmpInterfaceModel.Constants.StatusEnum.Submitted.ToString(); } else { newRequest = false; } var vmDepReq = new CmpServiceLib.Models.VmDeploymentRequest { ID = vmdeploymentrequest.ID, ExceptionMessage = vmdeploymentrequest.ExceptionMessage, LastStatusUpdate = vmdeploymentrequest.LastStatusUpdate, ParentAppName = vmdeploymentrequest.ParentAppName, RequestDescription = vmdeploymentrequest.RequestDescription, RequestName = vmdeploymentrequest.RequestName, SourceServerName = vmdeploymentrequest.SourceServerName, SourceVhdFilesCSV = vmdeploymentrequest.SourceVhdFilesCSV, SourceServerRegion = vmdeploymentrequest.SourceServerRegion, StatusCode = vmdeploymentrequest.Status, TagData = vmdeploymentrequest.TagData, TargetLocation = vmdeploymentrequest.TargetLocation, TargetLocationType = vmdeploymentrequest.TargetLocationType, TargetVmName = vmdeploymentrequest.TargetVmName, TargetServicename = vmdeploymentrequest.TargetServiceName, VmSize = vmdeploymentrequest.VmSize, WhenRequested = vmdeploymentrequest.WhenRequested, WhoRequested = vmdeploymentrequest.WhoRequested, Active = vmdeploymentrequest.Active, AftsID = vmdeploymentrequest.AftsID, Config = vmdeploymentrequest.Config, ConfigOriginal = vmdeploymentrequest.Config, ParentAppID = vmdeploymentrequest.ParentAppID, RequestType = vmdeploymentrequest.RequestType, StatusMessage = vmdeploymentrequest.StatusMessage, TargetAccount = vmdeploymentrequest.TargetAccount, TargetAccountCreds = vmdeploymentrequest.TargetAccountCreds, TargetAccountType = vmdeploymentrequest.TargetAccountType, TargetServiceProviderType = vmdeploymentrequest.TargetServiceProviderType, ServiceProviderAccountID = 1, ServiceProviderStatusCheckTag = null, TagID = vmdeploymentrequest.TagID, OverwriteExisting = false, ValidationResults = vmdeploymentrequest.ValidationResults, ExceptionTypeCode = vmdeploymentrequest.ExceptionTypeCode, //CurrentStateStartTime = Now, //CurrentStateTryCount = 0, //LastState = null, //ServiceProviderResourceGroup = null, //Warnings = null }; if (newRequest) { response = cmp.InsertVmDepRequest(vmDepReq); } else { cmp.ResubmitVmDepRequest(vmDepReq); } if (response != null) { vmdeploymentrequest.ID = response.ID; } return(Created(vmdeploymentrequest)); } catch (Exception ex) { LogThis(ex, EventLogEntryType.Error, "Exception in Post()", 100, 100); throw; } }