コード例 #1
0
        private void UpdateServices(InfrastructureDto dto)
        {
            lblStatus.Text      = dto.Active ? Constants.Active : Constants.InActive;
            lblStatus.ForeColor = HealthHelper.GetHealthColor(dto.Active);
            var description = CdcDcStateHelper.GetActiveServiceDesc(dto);

            toolTip1.SetToolTip(lblStatus, description);
            lstServices.Items.Clear();
            foreach (ServiceDto service in dto.Services)
            {
                var status  = service.Alive ? Constants.Active : Constants.InActive;
                var message = string.Format("Last Heartbeat for server {0} service {1} is {2}, UTC: {3}", dto.Name, service.ServiceName, service.LastHeartbeat.ToString("dd-MMM-yyyy HH:mm:ss"), DateTime.UtcNow.ToString("dd-MMM-yyyy HH:mm:ss"));
                PscHighAvailabilityAppEnvironment.Instance.Logger.Log(message, LogLevel.Info);
                var hb = DateTimeConverter.ToDurationAgo(service.LastHeartbeat);
                message = string.Format("Last Heartbeat shown on UI for server {0} service {1} is {2}", dto.Name, service.ServiceName, hb);
                PscHighAvailabilityAppEnvironment.Instance.Logger.Log(message, LogLevel.Info);
                var          port   = service.Port == 0 ? string.Empty : service.Port.ToString();
                var          values = new string[] { service.ServiceName, service.Description, port, status, hb };
                ListViewItem item   = new ListViewItem(values)
                {
                    ImageIndex = (int)ImageIndex.Service
                };
                item.BackColor = service.Alive ? Color.LightGreen : Color.Pink;
                lstServices.Items.Add(item);
            }
            lstServices.Refresh();
        }
コード例 #2
0
        /// <summary>
        /// Refreshes the psc table view.
        /// </summary>
        void RefreshPscTableView()
        {
            var serverDto = new ServerDto {
                Server   = _mgmtDto.Name,
                UserName = ServerDto.UserName,
                Upn      = ServerDto.Upn,
                Password = ServerDto.Password
            };

            if (_isConnected)
            {
                //var mgmtDto = _service.GetManagementNodeDetails (serverDto);
                var mgmtDto = RootNode.Hosts.FirstOrDefault(x => x.Sitename == _mgmtDto.Sitename && x.Name == _mgmtDto.Name) as ManagementDto;

                if (mgmtDto != null)
                {
                    var infraNodes = FilterBySiteName(mgmtDto.DomainControllers);
                    if (_mgmtDto.DomainController != null)
                    {
                        DomainControllerTextField.StringValue = _mgmtDto.DomainController.Name;

                        foreach (var node in infraNodes)
                        {
                            node.IsAffinitized = (node.Name == _mgmtDto.DomainController.Name || node.Ip == _mgmtDto.DomainController.Ip);
                        }
                    }
                    PscTableView.Delegate   = new MonitorTableViewDelegate(this);
                    PscDataSource           = new PscDataSource(infraNodes);
                    PscTableView.DataSource = PscDataSource;
                    PscTableView.ReloadData();

                    if (infraNodes != null && infraNodes.Count > 0 && PscTableView.SelectedRowCount <= 0)
                    {
                        PscTableView.SelectRow(0, true);
                    }

                    if (_mgmtDto.State != null)
                    {
                        Health health     = CdcDcStateHelper.GetHealth(_mgmtDto.State, infraNodes);
                        var    healthText = health.ToString().ToUpper();
                        CurrentStatusTextField.StringValue = healthText;
                        CurrentStatusTextField.TextColor   = GetHealthColor(health);
                        var healthDesc = CdcDcStateHelper.GetHealthDescription(health);
                        CurrentStatusTextField.ToolTip = healthDesc;
                    }
                    SiteAffinityButton.Title = "Enable " + (_mgmtDto.Legacy ? Constants.HA : Constants.Legacy);
                    LegacyModeWarning.Hidden = !_mgmtDto.Legacy;
                    LoadServices();
                }
            }
        }
コード例 #3
0
        private void UpdateState()
        {
            SetLegacyControlStatus();
            lblState.Text = _dto.State.Description;
            var health = CdcDcStateHelper.GetHealth(_dto.State, _infraDtos);

            lblStatus.Text = health.ToString().ToUpper();
            var description = CdcDcStateHelper.GetHealthDescription(health);

            toolTip1.SetToolTip(lblStatus, description);
            lblStatus.ForeColor          = HealthHelper.GetHealthColor(health);
            lblLastRefreshed.Text        = DateTime.Now.ToString(Constants.DateFormat);
            btnHA.Text                   = _dto.Legacy ? Constants.EnableDefaultHA : Constants.EnableLegacy;
            legacyMode                   = _dto.Legacy;
            txtDomainControllerName.Text = _dto.DomainController.Name;
        }
コード例 #4
0
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
            Dock = DockStyle.Fill;
            var il    = new ImageList();
            var image = ResourceHelper.GetToolbarImage();

            il.Images.AddStrip(image);
            lstdcs.SmallImageList      = il;
            lstServices.SmallImageList = il;
            _autoRefresh    = false;
            _timer          = new Timer();
            _timer.Interval = Constants.DefaultTimerRefreshInterval * Constants.MilliSecsMultiplier;
            _timer.Tick    += timer_Tick;
            LoadCachedDetails();
            var description = CdcDcStateHelper.GetHealthDescription();

            toolTip1.SetToolTip(pcHealth, description);
            cbInterval.SelectedIndex = 0;
        }
コード例 #5
0
 private void ChangeMode()
 {
     try
     {
         var node      = _formView.ScopeNode as ManagementNode;
         var serverDto = new ServerDto {
             Server = node.DisplayName, Upn = node.ServerDto.Upn, Password = node.ServerDto.Password
         };
         PscHighAvailabilityAppEnvironment.Instance.Service.SetLegacyMode(!legacyMode, serverDto);
         _dto.Legacy = !legacyMode;
         btnHA.Text  = _dto.Legacy ? Constants.EnableDefaultHA : Constants.EnableLegacy;
         legacyMode  = _dto.Legacy;
         var state = _dto.Legacy ? CDC_DC_STATE.CDC_DC_STATE_LEGACY : CDC_DC_STATE.CDC_DC_STATE_NO_DC_LIST;
         _dto.State = CdcDcStateHelper.GetStateDescription(state);
     }
     catch (Exception exc)
     {
         PscHighAvailabilityAppEnvironment.Instance.Logger.LogException(exc);
         MiscUtilsService.ShowError(exc);
     }
     UpdateState();
 }
コード例 #6
0
 private static string GetServiceDescription(InfrastructureDto dc)
 {
     return(dc.IsRemote ? string.Empty : CdcDcStateHelper.GetActiveServiceDesc(dc));
 }
コード例 #7
0
        /// <summary>
        /// Gets the management node details.
        /// </summary>
        /// <returns>The management node details.</returns>
        /// <param name="serverDto">Server dto.</param>
        public ManagementDto GetManagementNodeDetails(ServerDto serverDto)
        {
            var dto = new ManagementDto()
            {
                State = new StateDescriptionDto(), Name = serverDto.Server, Domain = serverDto.DomainName
            };

            using (Client client = new Client(serverDto.Server, serverDto.Upn, serverDto.Password))
            {
                var message = string.Format("Method: GetManagementNodeDetails - CdcGetCurrentState API call for Server: {0}", serverDto.Server);
                _logger.Log(message, LogLevel.Info);

                try
                {
                    var state = client.CdcGetCurrentState();
                    dto.Legacy = (state == CDC_DC_STATE.CDC_DC_STATE_LEGACY);
                    dto.State  = CdcDcStateHelper.GetStateDescription(state);
                    message    = string.Format("Method: GetManagementNodeDetails - CdcGetCurrentState API call for Server: {0} complete", serverDto.Server);
                    _logger.Log(message, LogLevel.Info);
                }
                catch (Exception exc)
                {
                    message = string.Format("Method: GetManagementNodeDetails - CdcGetCurrentState API call for Server: {0} failed", serverDto.Server);
                    _logger.Log(message, LogLevel.Error);
                    _logger.LogException(exc);
                }

                try
                {
                    message = string.Format("Method: GetManagementNodeDetails - VmAfdGetSiteName API call for Server: {0}", serverDto.Server);
                    _logger.Log(message, LogLevel.Info);

                    dto.Sitename = client.VmAfdGetSiteName();

                    message = string.Format("Method: GetManagementNodeDetails - VmAfdGetSiteName API call for Server: {0} complete", serverDto.Server);
                    _logger.Log(message, LogLevel.Info);
                }
                catch (Exception exc)
                {
                    message = string.Format("Method: GetManagementNodeDetails - VmAfdGetSiteName API call for Server: {0} failed", serverDto.Server);
                    _logger.Log(message, LogLevel.Error);
                    _logger.LogException(exc);
                }
                dto.Active = true;
                dto.Ip     = Network.GetIpAddress(dto.Name);

                message = string.Format("Method: GetManagementNodeDetails - CdcGetDCName API call for Server: {0}", serverDto.Server);
                _logger.Log(message, LogLevel.Info);

                try
                {
                    var dcInfo = client.CdcGetDCName(serverDto.DomainName, dto.Sitename, 0);

                    message = string.Format("Method: GetManagementNodeDetails - CdcGetDCName API call for Server: {0} complete", serverDto.Server);
                    _logger.Log(message, LogLevel.Info);

                    dto.DomainController = new InfrastructureDto
                    {
                        Name     = dcInfo.pszDCName,
                        NodeType = NodeType.Infrastructure,
                        Domain   = dcInfo.pszDomainName
                    };
                }
                catch (Exception exc)
                {
                    message = string.Format("Method: GetManagementNodeDetails - CdcGetDCName API call for Server: {0} failed", serverDto.Server);
                    _logger.Log(message, LogLevel.Error);
                    _logger.LogException(exc);
                    dto.DomainController = new InfrastructureDto
                    {
                        Name     = string.Empty,
                        NodeType = NodeType.Infrastructure,
                        Domain   = string.Empty
                    };
                }
                dto.DomainControllers = new List <InfrastructureDto>();

                try
                {
                    message = string.Format("Method: GetManagementNodeDetails - CdcEnumDCEntries API call for Server: {0}", serverDto.Server);
                    _logger.Log(message, LogLevel.Info);
                    IList <string> entries = client.CdcEnumDCEntries();
                    message = string.Format("Method: GetManagementNodeDetails - CdcEnumDCEntries API call for Server: {0} complete. DCs returned: {1}", serverDto.Server, entries.Count());
                    _logger.Log(message, LogLevel.Info);
                    foreach (var entry in entries)
                    {
                        CDC_DC_STATUS_INFO     info;
                        VMAFD_HEARTBEAT_STATUS hbStatus;

                        try
                        {
                            message = string.Format("Method: GetManagementNodeDetails - CdcGetDCStatus API call for Server: {0}", serverDto.Server);
                            _logger.Log(message, LogLevel.Info);

                            client.CdcGetDCStatus(entry, string.Empty, out info, out hbStatus);
                            message = string.Format("Method: GetManagementNodeDetails - CdcGetDCStatus API call for Server: {0} complete", serverDto.Server);
                            _logger.Log(message, LogLevel.Info);

                            var infraDto = new InfrastructureDto()
                            {
                                Name     = entry,
                                Active   = info.bIsAlive == 1,
                                Sitename = info.pszSiteName,
                                LastPing = DateTimeConverter.FromUnixToDateTime(info.dwLastPing),
                                Services = new List <ServiceDto>()
                            };

                            if (hbStatus.info != null)
                            {
                                foreach (var serviceInfo in hbStatus.info)
                                {
                                    var service = new ServiceDto
                                    {
                                        ServiceName   = ServiceHelper.GetServiceName(serviceInfo.pszServiceName),
                                        Description   = ServiceHelper.GetServiceDescription(serviceInfo.pszServiceName),
                                        Alive         = serviceInfo.bIsAlive == 1,
                                        LastHeartbeat = DateTimeConverter.FromUnixToDateTime(serviceInfo.dwLastHeartbeat),
                                        Port          = serviceInfo.dwPort,
                                    };
                                    infraDto.Services.Add(service);
                                }
                            }
                            dto.DomainControllers.Add(infraDto);
                        }
                        catch (Exception exc)
                        {
                            message = string.Format("Method: GetManagementNodeDetails - CdcGetDCStatus API call for Server: {0} failed", serverDto.Server);
                            _logger.Log(message, LogLevel.Error);
                            _logger.LogException(exc);
                            dto.DomainController = new InfrastructureDto
                            {
                                Name     = string.Empty,
                                NodeType = NodeType.Infrastructure,
                                Domain   = string.Empty
                            };
                        }
                    }
                }
                catch (Exception exc)
                {
                    message = string.Format("Method: GetManagementNodeDetails - CdcEnumDCEntries API call for Server: {0} failed", serverDto.Server);
                    _logger.Log(message, LogLevel.Error);
                    _logger.LogException(exc);
                    dto.DomainController = new InfrastructureDto
                    {
                        Name     = string.Empty,
                        NodeType = NodeType.Infrastructure,
                        Domain   = string.Empty
                    };
                }
            }
            return(dto);
        }