예제 #1
0
        //*********************************************************************
        ///
        /// <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)
            { }
        }
예제 #2
0
        //*********************************************************************
        ///
        /// <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);
        }
예제 #3
0
        //*********************************************************************
        ///
        ///  <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);
        }
예제 #4
0
        //*********************************************************************
        ///
        ///  <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));
        }
예제 #5
0
        //*********************************************************************
        ///
        // 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;
            }
        }