private void LoadCachedDetails() { var node = _formView.ScopeNode as ManagementNode; lblName.Text = node.DisplayName; var serverNode = node.GetServerNode(); var siteName = node.GetSiteName(); lblSitename.Text = siteName; //_infraDtos = serverNode.Hosts.Where(x => x.NodeType == NodeType.Infrastructure && x.Sitename == siteName); _serverDto = new ServerDto { Server = node.DisplayName, Upn = node.ServerDto.Upn, Password = node.ServerDto.Password, DomainName = node.ServerDto.DomainName }; _dto = serverNode.Hosts.First(x => x.Name == node.DisplayName) as ManagementDto; _dto.DomainControllers = GetInfraNodesForTheSite(_dto.DomainControllers, siteName); _infraDtos = _dto.DomainControllers; txtIpAddress.Text = _dto.Ip; if (_dto.State == null) { _dto = PscHighAvailabilityAppEnvironment.Instance.Service.GetManagementNodeDetails(_serverDto); } UpdateState(); foreach (InfrastructureDto dc in _infraDtos) { AddNewDomainController(dc); } lblLastRefreshed.Text = DateTime.Now.ToString(Constants.DateFormat); if (lstdcs.Items.Count > 0) { lstdcs.Items[node.SelectedInfrastructureItem].Selected = true; } UpdateServices(); }
/// <summary> /// Raises the server tool bar item activated event. /// </summary> /// <param name="sender">Sender.</param> /// <param name="e">E.</param> void OnServerToolBarItem_Activated(object sender, EventArgs e) { if (_serverState == ServerState.Connected) { _serverState = ServerState.Disconnected; _isLoggedIn = false; if (_rootNode != null) { _rootNode.OnCacheRefresh -= OnCacheRefresh; } _rootNode = null; _managementDto = null; ServerToolBarItem.Image = NSImage.ImageNamed(Constants.ConnectIcon); ServerToolBarItem.Label = Constants.ConnectLabel; _serverDto = null; RefreshToolBarItem.Active = false; for (int index = 0; index < this.ContainerView.Subviews.Length; index++) { this.ContainerView.Subviews[index].RemoveFromSuperview(); } LoggedInLabel.StringValue = (NSString)string.Empty; } else { ConnectToServer(); } }
public IActionResult Update([FromBody] ManagementDto managementDto, [FromRoute] Guid laboratoryManagementEntityId) { var result = _managementLogic.Update(managementDto, laboratoryManagementEntityId); if (result == null) { return(NotFound()); } return(Ok(result)); }
public IActionResult Create([FromBody] ManagementDto managementDto) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var newLaboratoryManagement = _managementLogic.Create(managementDto); return(CreatedAtAction(nameof(GetById), new { LaboratoryManagementEntityId = newLaboratoryManagement.EntityId }, managementDto)); }
public void Load(ManagementDto dto) { _dto = dto; RefreshTopology(dto); UpdateNodes(); StartBackgroundRefresh(); if (this.UserControl != null) { this.UserControl.LoadData(); } }
/// <summary> /// Posts refresh updates the state of the UI elements. /// </summary> private void RefreshState() { var mgmtDto = (ManagementDto)RootNode.Hosts.FirstOrDefault(x => x.Name == ServerDto.Server); if (mgmtDto != null) { _mgmtDto = mgmtDto; LastRefreshTextField.StringValue = DateTime.Now.ToString(Constants.DateFormat); SetHostStateAndStatusControls(); SetAutoRefreshControls(); RefreshPscTableView(); } }
public LaboratoryManagement Create(ManagementDto laboratoryDto) { var newLaboratory = new LaboratoryManagement() { ClassId = laboratoryDto.ClassId, EntityId = Guid.NewGuid(), AuthorId = Guid.NewGuid(), UserId = laboratoryDto.UserId, UserPosition = (UserPosition)Enum.Parse(typeof(UserPosition), laboratoryDto.UserPosition) // load managed course when read is done }; _repository.Insert(newLaboratory); _repository.Save(); return(newLaboratory); }
public GlobalTopologyNode(IPscHighAvailabilityService service, ServerDto serverDto, ManagementDto managementDto) { DisplayName = serverDto.DomainName; _managementDto = managementDto; _serverDto = serverDto; _service = service; Hosts = new List <NodeDto> (); IsConnected = true; NetworkChange.NetworkAvailabilityChanged += (object sender, NetworkAvailabilityEventArgs e) => { IsConnected = e.IsAvailable; }; RefreshTopology(); UpdateNodes(); var interval = Constants.CacheCycleRefreshInterval * Constants.MilliSecsMultiplier; timer = new Timer(timerAutoRefresh_Tick, null, 0, interval); }
/// <summary> /// Checks connectivity of the server /// </summary> /// <param name="serverDto">Server with credentials i.e. UPN and password</param> /// <returns>True on success false otherwise</returns> public ManagementDto Connect(ServerDto serverDto) { var dto = new ManagementDto { Name = serverDto.Server }; try { var message = string.Format("Method: Connect - new Client API call for Server: {0}", serverDto.Server); _logger.Log(message, LogLevel.Info); using (Client client = new Client(serverDto.Server, serverDto.Upn, serverDto.Password)) { message = string.Format("Method: Connect - new Client API call for Server: {0} complete", serverDto.Server); _logger.Log(message, LogLevel.Info); message = string.Format("Method: Connect - VmAfdGetSiteName API call for Server: {0}", serverDto.Server); _logger.Log(message, LogLevel.Info); dto.Sitename = client.VmAfdGetSiteName(); message = string.Format("Method: Connect - VmAfdGetSiteName API call for Server: {0} Sitename: {1}", serverDto.Server, dto.Sitename); _logger.Log(message, LogLevel.Info); message = string.Format("Method: Connect - CdcGetDCName API call for Server: {0}", serverDto.Server); _logger.Log(message, LogLevel.Info); var domainController = client.CdcGetDCName(serverDto.DomainName, dto.Sitename, 0); message = string.Format("Method: Connect - CdcGetDCName API call for Server: {0} complete", serverDto.Server); _logger.Log(message, LogLevel.Info); dto.DomainController = new InfrastructureDto { Name = domainController.pszDCName }; } } catch (Exception exc) { var custom = new CustomExceptionExtractor().GetCustomMessage(exc); _logger.LogException(exc, custom); dto = null; } return(dto); }
public ManagementDto GetById(Guid courseManagementEntityId) { var courseManagement = _repository.GetLastByFilter <CourseManagement>(c => c.EntityId == courseManagementEntityId); if (courseManagement == null || courseManagement.DeletedDate != null) { return(null); } var courseManagementDto = new ManagementDto { ClassId = courseManagement.ClassId, UserId = courseManagement.UserId, UserPosition = courseManagement.UserPosition.ToString() }; return(courseManagementDto); }
public ManagementDto GetById(Guid laboratoryManagementEntityId) { var laboratoryManagement = _repository.GetLastByFilter <LaboratoryManagement>(c => c.EntityId == laboratoryManagementEntityId); if (laboratoryManagement == null || laboratoryManagement.DeletedDate != null) { return(null); } var laboratoryManagementDto = new ManagementDto { ClassId = laboratoryManagement.ClassId, UserId = laboratoryManagement.UserId, UserPosition = laboratoryManagement.UserPosition.ToString() }; return(laboratoryManagementDto); }
/// <summary> /// Refreshs the topology. /// </summary> /// <param name="refresh">If set to <c>true</c> refresh.</param> public void RefreshTopology(ManagementDto dto, bool refresh = false) { var service = PscHighAvailabilityAppEnvironment.Instance.Service; // 0. For subsequent refresh fetch the affinitized dc for the management dto from the cache if (Hosts != null) { var mgmtDto = Hosts.FirstOrDefault(x => x.Name == dto.Name || x.Ip == dto.Name) as ManagementDto; if (mgmtDto != null) { dto.DomainController = mgmtDto.DomainController; } } // 1. Fetech all the nodes var nodes = service.GetTopology(dto, ServerDto); if (nodes == null) { Hosts = new List <NodeDto>(); return; } // 2. Update cached hosts list Hosts = new List <NodeDto>(nodes); // 3. Set infrastructure node status foreach (var host in nodes.Where(x => x.NodeType == VMPSCHighAvailability.Common.NodeType.Infrastructure)) { host.Active = true; var task = new Task(() => { UpdateInfraNode(host, ServerDto); }); task.Start(); } // 4. Set management nodes to Active foreach (var host in nodes.Where(x => x.NodeType == VMPSCHighAvailability.Common.NodeType.Management)) { host.Active = true; var task = new Task(() => { UpdateManagementNode(host, ServerDto); }); task.Start(); } }
public LaboratoryManagement Update(ManagementDto laboratoryManagementDto, Guid laboratoryManagementEntityId) { var laboratoryManagement = _repository.GetLastByFilter <LaboratoryManagement>(c => c.EntityId == laboratoryManagementEntityId); if (laboratoryManagement == null || laboratoryManagement.DeletedDate != null) { return(null); } laboratoryManagement.Id = Guid.NewGuid(); laboratoryManagement.AuthorId = Guid.NewGuid(); laboratoryManagement.ClassId = laboratoryManagementDto.ClassId; laboratoryManagement.UserId = laboratoryManagementDto.UserId; laboratoryManagement.UserPosition = (UserPosition)Enum.Parse(typeof(UserPosition), laboratoryManagementDto.UserPosition); _repository.Insert(laboratoryManagement); _repository.Save(); return(laboratoryManagement); }
public CourseManagement Update(ManagementDto courseManagementDto, Guid courseManagementEntityId) { var courseManagement = _repository.GetLastByFilter <CourseManagement>(c => c.EntityId == courseManagementEntityId); if (courseManagement == null || courseManagement.DeletedDate != null) { return(null); } courseManagement.Id = Guid.NewGuid(); courseManagement.AuthorId = Guid.NewGuid(); courseManagement.ClassId = courseManagementDto.ClassId; courseManagement.UserId = courseManagementDto.UserId; courseManagement.UserPosition = (UserPosition)Enum.Parse(typeof(UserPosition), courseManagementDto.UserPosition); _repository.Insert(courseManagement); _repository.Save(); return(courseManagement); }
public ICollection <ManagementDto> GetAll() { List <ManagementDto> courseManagementDtos = new List <ManagementDto>(); var courseManagements = _repository.GetAll <CourseManagement>(); foreach (var courseManagement in courseManagements) { var courseManagementDto = new ManagementDto { ClassId = courseManagement.ClassId, UserId = courseManagement.UserId, UserPosition = courseManagement.UserPosition.ToString() }; courseManagementDtos.Add(courseManagementDto); } return(courseManagementDtos); }
public ICollection <ManagementDto> GetAll() { List <ManagementDto> laboratoryManagementDtos = new List <ManagementDto>(); var laboratoryManagements = _repository.GetAll <LaboratoryManagement>(); foreach (var laboratoryManagement in laboratoryManagements) { var laboratoryManagementDto = new ManagementDto { ClassId = laboratoryManagement.ClassId, UserId = laboratoryManagement.UserId, UserPosition = laboratoryManagement.UserPosition.ToString() }; laboratoryManagementDtos.Add(laboratoryManagementDto); } return(laboratoryManagementDtos); }
/// <summary> /// Logins to server. /// </summary> /// <returns>The to server.</returns> private void LoginToServer() { _managementDto = _service.Connect(_serverDto); _isLoggedIn = _managementDto != null; }
/// <summary> /// Get the topology of the HA setup /// </summary> /// <returns>List of the nodes</returns> public List <NodeDto> GetTopology(ManagementDto dto, ServerDto serverDto) { var nodes = GetNodes(serverDto, dto.DomainController.Name, dto.Sitename); return(nodes); }
/// <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); }
/// <summary> /// Gets the management nodes. /// </summary> /// <returns>The management nodes.</returns> /// <param name="serverDto">Server dto.</param> /// <param name="dcName">Dc name.</param> /// <param name="siteName">Site name.</param> private List <NodeDto> GetManagementNodes(ServerDto serverDto, string dcName, string site) { var message = "GetManagementNodes method for Server: " + serverDto.Server; _logger.Log(message, LogLevel.Info); var nodes = new ConcurrentBag <NodeDto>(); try { message = "VmDirGetComputers method for Server: " + serverDto.Server; _logger.Log(message, LogLevel.Info); // Get Management nodes var mgmtNodes = vmdirClient.Client.VmDirGetComputers(dcName, serverDto.UserName, serverDto.Password); message = string.Format("VmDirGetComputers method for Server: {0} VC nodes: {1}", serverDto.Server, mgmtNodes.Count); _logger.Log(message, LogLevel.Info); if (mgmtNodes != null && mgmtNodes.Count > 0) { var tasks = new Task[mgmtNodes.Count]; var index = 0; // Update management nodes with site name foreach (var mgmt in mgmtNodes) { tasks[index++] = Task.Factory.StartNew(() => { var siteName = string.Empty; var s = new ServerDto { Server = mgmt, Upn = serverDto.Upn, Password = serverDto.Password, UserName = serverDto.UserName }; try { message = string.Format("VmAfdGetSiteName API call for Server: {0} ", s.Server); _logger.Log(message, LogLevel.Info); using (Client client = new Client(s.Server, s.Upn, s.Password)) { siteName = client.VmAfdGetSiteName(); } message = string.Format("VmAfdGetSiteName API call for Server: {0} succeeded.", s.Server); _logger.Log(message, LogLevel.Info); var mgmtNode = new ManagementDto() { Name = mgmt, Sitename = siteName, NodeType = NodeType.Management, Ip = Network.GetIpAddress(mgmt) }; nodes.Add(mgmtNode); } catch (Exception exc) { message = string.Format("VmAfdGetSiteName returned error for Server: {0} ", s.Server); _logger.Log(message, LogLevel.Info); _logger.LogException(exc); } }); } Task.WaitAll(tasks); } } catch (Exception exc) { _logger.LogException(exc); } return(nodes.ToList()); }
private void RefreshView() { var node = _formView.ScopeNode as ManagementNode; var serverNode = node.GetServerNode(); var siteName = node.GetSiteName(); if (serverNode != null && serverNode.Hosts != null) { var host = serverNode.Hosts.FirstOrDefault(x => x.Name == node.DisplayName); if (host != null) { _dto = host as ManagementDto; _dto.DomainControllers = GetInfraNodesForTheSite(_dto.DomainControllers, siteName); _infraDtos = _dto.DomainControllers; UpdateState(); foreach (InfrastructureDto dto in _infraDtos) { bool found = false; for (var i = lstdcs.Items.Count - 1; i >= 0; i--) { ListViewItem item = lstdcs.Items[i]; var infDto = item.Tag as InfrastructureDto; if (infDto.Name == dto.Name) { found = true; item.Tag = dto; item.BackColor = GetRowColor(dto); var status = GetStatus(dto); var services = GetServiceDescription(dto); var location = GetLocation(dto); item.SubItems[3].Text = services; item.SubItems[4].Text = status; item.SubItems[2].Text = location; item.SubItems[1].Text = (item.SubItems[0].Text == _dto.DomainController.Name) ? "Yes" : string.Empty; item.Tag = dto; } } if (!found) { AddNewDomainController(dto); } } for (var i = lstdcs.Items.Count - 1; i >= 0; i--) { if (_infraDtos.Count(x => x.Name == lstdcs.Items[i].SubItems[0].Text) == 0) { lstdcs.Items.RemoveAt(i); } } if (lstdcs.Items.Count > 0) { if (node.SelectedInfrastructureItem < lstdcs.Items.Count) { lstdcs.Items[node.SelectedInfrastructureItem].Selected = true; } else { lstdcs.Items[0].Selected = true; } } UpdateServices(); } } }