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));
        }
Exemplo n.º 5
0
        public void Load(ManagementDto dto)
        {
            _dto = dto;
            RefreshTopology(dto);
            UpdateNodes();
            StartBackgroundRefresh();

            if (this.UserControl != null)
            {
                this.UserControl.LoadData();
            }
        }
Exemplo n.º 6
0
        /// <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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        /// <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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 12
0
        /// <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);
        }
Exemplo n.º 14
0
        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);
        }
Exemplo n.º 15
0
        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());
        }
Exemplo n.º 21
0
        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();
                }
            }
        }