Example #1
0
        //*********************************************************************
        ///
        /// <summary>
        ///     This method is used to add VM to VM list.
        /// </summary>
        /// <param name="cmpReq"></param>
        ///
        //*********************************************************************

        private void AddVmToList(Models.CmpRequest cmpReq)
        {
            if (!cmpReq.StatusCode.Equals(CmpInterfaceModel.Constants.StatusEnum.Complete.ToString()))
            {
                _havePendingStatus = true;
            }

            VmList.Add(item: new CreateVm
            {
                Id = cmpReq.Id,
                //Id = VmList.Count,
                CmpRequestId     = Convert.ToInt32(cmpReq.CmpRequestID),
                Name             = cmpReq.TargetVmName,
                SubscriptionId   = cmpReq.WapSubscriptionID,
                StatusCode       = cmpReq.StatusCode,
                StatusMessage    = cmpReq.StatusMessage,
                ExceptionMessage = cmpReq.ExceptionMessage,
                VmAppName        = cmpReq.ParentAppName,
                VmDomain         = cmpReq.Domain,
                VmAdminName      = "",
                //VmAdminPassword = "",
                VmSourceImage = cmpReq.SourceImageName,
                VmSize        = cmpReq.VmSize,
                VmRegion      = cmpReq.TargetLocation,
                VmRole        = "",
                VmDiskSpec    = "",
                VmConfig      = cmpReq.Config,
                VmTagData     = cmpReq.TagData,
                AddressFromVm = cmpReq.AddressFromVm
                                //ExtensionData = ""
            });
        }
Example #2
0
        //********************************************************************
        ///
        /// <summary>
        /// Ugly code, does not belong here. Belongs in a lib. Should remove
        /// this when we solve the big 'method not returning' bug
        /// </summary>
        /// <param name="cmpReq"></param>
        /// <returns></returns>
        ///
        //********************************************************************

        private VmDashboardInfo GetLocalvmDBI(Models.CmpRequest cmpReq)
        {
            string cmpDbConnectionString = GetCmpContextConnectionStringFromConfig();

            CmpServiceLib.CmpService cmps = new CmpServiceLib.CmpService(eventLog, cmpDbConnectionString, null);
            var vmg = cmps.VmGet((int)cmpReq.CmpRequestID, CmpInterfaceModel.Constants.FetchType.AzureFull);

            VmDashboardInfo vmDBI = new VmDashboardInfo()
            {
                //Cores = "",
                DataVirtualHardDisks = ConvertDisk(vmg.DataVirtualHardDisks),
                DeploymentID         = vmg.DeploymentID,
                DNSName           = vmg.DNSName,
                InternalIP        = vmg.InternalIP,
                MediaLocation     = vmg.MediaLocation,
                OSVersion         = vmg.OSVersion,
                OSVirtualHardDisk = new OsVirtualHardDisk()
                {
                    DiskLabel             = vmg.OSVirtualHardDisk.DiskLabel,
                    DiskName              = vmg.OSVirtualHardDisk.DiskName,
                    HostCaching           = vmg.OSVirtualHardDisk.HostCaching,
                    MediaLink             = vmg.OSVirtualHardDisk.MediaLink,
                    OS                    = vmg.OSVirtualHardDisk.OS,
                    RemoteSourceImageLink = vmg.OSVirtualHardDisk.RemoteSourceImageLink,
                    SourceImageName       = vmg.OSVirtualHardDisk.SourceImageName
                },
                QueueStatus = "",
                RDPCertificateThumbprint = "",
                RoleName     = vmg.RoleName,
                RoleSize     = cmpReq.VmSize,
                Status       = vmg.Status,
                Subscription = new SubscriptionInfo()
                {
                    CurrentCoreCount = vmg.Subscription.CurrentCoreCount,
                    MaximumCoreCount = vmg.Subscription.MaximumCoreCount,
                    SubscriptionID   = vmg.Subscription.SubscriptionID,
                    SubscriptionName = vmg.Subscription.SubscriptionName
                }
            };

            return(vmDBI);
        }
Example #3
0
        //********************************************************************
        ///
        /// <summary>
        /// Ugly code, does not belong here. Belongs in a lib. Should remove
        /// this when we solve the big 'method not returning' bug
        /// </summary>
        /// <param name="cmpReq"></param>
        /// <returns></returns>
        ///
        //********************************************************************

        private VmDashboardInfo GetLocalvmDBI2(Models.CmpRequest cmpReq)
        {
            VmDashboardInfo vmDBI = new VmDashboardInfo()
            {
                //Cores = "",
                DataVirtualHardDisks = new List <ApiClient.DataContracts.DataVirtualHardDisk>(),
                DeploymentID         = "",
                DNSName           = cmpReq.TargetVmName + "." + cmpReq.TargetLocation.ToLower().Replace(" ", "") + ".cloudapp.azure.com",
                InternalIP        = cmpReq.AddressFromVm,
                MediaLocation     = null,
                OSVersion         = cmpReq.SourceImageName,
                OSVirtualHardDisk = new OsVirtualHardDisk()
                {
                    DiskLabel   = "C",
                    DiskName    = "osdisk",
                    HostCaching = "ReadWrite",
                    MediaLink   = string.Format("http://{0}.blob.core.windows.net/{1}/{2}.vhd",
                                                Utilities.GetXmlInnerText(cmpReq.Config, "newStorageAccountName"),
                                                Utilities.GetXmlInnerText(cmpReq.Config, "vmStorageAccountContainerName"),
                                                Utilities.GetXmlInnerText(cmpReq.Config, "OSDiskName")),
                    OS = "Windows",
                    RemoteSourceImageLink = null,
                    SourceImageName       = null
                },
                QueueStatus = "",
                RDPCertificateThumbprint = "",
                RoleName     = cmpReq.TargetVmName,
                RoleSize     = cmpReq.VmSize,
                Status       = "Running", //*** TODO * MW * This is not good
                Subscription = new SubscriptionInfo()
                {
                    CurrentCoreCount = "0",
                    MaximumCoreCount = "0",
                    SubscriptionID   = "",
                    SubscriptionName = ""
                }
            };

            return(vmDBI);
        }
Example #4
0
        //*********************************************************************
        ///
        /// <summary>
        ///     This method is used to Sync VM Object with CMP.
        /// </summary>
        ///
        //*********************************************************************

        void SyncWithCmp()
        {
            var cmpi = new VMServiceRepository(_eventLog);
            var cwdb = new CmpWapDb();

            foreach (CreateVm vM in VmList.ToList())
            {
                //*** If status is complete or exception then don't process ***
                //if (vM.StatusCode.Equals(CmpInterfaceModel.Constants.StatusEnum.Complete.ToString()) ||
                //    vM.StatusCode.Equals(CmpInterfaceModel.Constants.StatusEnum.Exception.ToString()))

                if (vM.StatusCode.Equals(CmpInterfaceModel.Constants.StatusEnum.Complete.ToString()))
                {
                    continue;
                }

                try
                {
                    //*** Access the CMP service ***
                    var fetchedVm = cmpi.FetchCmpRequest(vM.CmpRequestId);

                    //*** update CmpWapDb if status has changed ***
                    //if (!vM.StatusCode.Equals(fetchedVm.Status))

                    if (true)

                    {
                        vM.StatusCode    = fetchedVm.Status;
                        vM.StatusMessage = fetchedVm.StatusMessage;



                        var cmpWapReq = new Models.CmpRequest
                        {
                            StatusCode       = fetchedVm.Status,
                            StatusMessage    = GetStatusMessage(fetchedVm),
                            ExceptionMessage = fetchedVm.ExceptionMessage,
                            Id     = vM.Id,
                            Config = fetchedVm.Config
                        };

                        if (null != fetchedVm.Config)
                        {
                            var vmc = CmpInterfaceModel.Models.VmConfig.Deserialize(fetchedVm.Config);
                            if (null != vmc)
                            {
                                if (null != vmc.InfoFromVM)
                                {
                                    cmpWapReq.AddressFromVm = vmc.InfoFromVM.VmAddress;
                                }
                            }
                        }

                        cwdb.SetVmDepRequestStatus(cmpWapReq, null);
                    }
                }
                catch (Exception)
                {
                    vM.StatusCode    = "NoCmpContact";
                    vM.StatusMessage = "Temporarily unable to contact CMP for status";
                }
            }
        }
Example #5
0
        //*********************************************************************
        ///
        /// <summary>
        ///     This method is used to build a disk object.
        /// </summary>
        /// <param name="jsonDisks"></param>
        /// <param name="vmReq"></param>
        /// <returns>VHD object</returns>
        ///
        //*********************************************************************

        private static IEnumerable <VhdInfo> BuildDiskObject(IEnumerable <object> jsonDisks, Models.CmpRequest vmReq)
        {
            var config = new XmlDocument();

            config.LoadXml(vmReq.Config);
            XmlNodeList nodes = config.SelectNodes(@"/VmConfig/Placement/StorageContainerUrl");

            foreach (var jsonDisk in jsonDisks)
            {
                var disks = JsonConvert.DeserializeObject <IEnumerable <VhdInfo> >(jsonDisk.ToString());
                foreach (var disk in disks)
                {
                    disk.MediaLink = nodes[0].InnerText;
                    yield return(disk);
                }
            }
        }