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(); }
/// <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(); } } }
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; }
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; }
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(); }
private static string GetServiceDescription(InfrastructureDto dc) { return(dc.IsRemote ? string.Empty : CdcDcStateHelper.GetActiveServiceDesc(dc)); }
/// <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); }