Exemple #1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FusionDirectorSyncInstance"/> class.
        /// </summary>
        /// <param name="fusionDirector">
        /// The e sight.
        /// </param>
        public FusionDirectorSyncInstance(FusionDirector fusionDirector)
        {
            this.IsRunning      = true;
            this.FusionDirector = fusionDirector;
            logger = new FusionDirectorLogger(fusionDirector.HostIP);
            this.enclosureService      = new EnclosureService(fusionDirector);
            this.fusionDirectorService = new FusionDirectorService(fusionDirector);
            this.nodePoolService       = new NodePoolService(fusionDirector);
            this.eventService          = new EventService(fusionDirector);
            this.metricsService        = new MetricsService(fusionDirector);
            this.pluginConfig          = ConfigHelper.GetPluginConfig();
            this.AlarmDatas            = new Queue <AlarmData>();
            this.AlarmQueue            = new Queue <AlarmData>();
            this.StartAlarmEventProcessor();
            // this.RunInsertEventTask();

            this.UpdateServerTasks    = new List <UpdateTask <Server> >();
            this.UpdateEnclosureTasks = new List <UpdateTask <Enclosure> >();
            this.RunPerformanceCollectTask();
            this.RunKeepEventTask();

            var scheduler = new LimitedConcurrencyLevelTaskScheduler(pluginConfig.ThreadCount);

            taskFactory = new TaskFactory(cts.Token, TaskCreationOptions.HideScheduler, TaskContinuationOptions.HideScheduler, scheduler);
        }
        /// <summary>
        /// Runs when update fusion director.
        /// </summary>
        /// <param name="fusionDirector">The fusion director.</param>
        private void RunUpdateFusionDirector(FusionDirector fusionDirector)
        {
            HWLogger.GetFdNotifyLogger(fusionDirector.HostIP).Info($"Recieve: update FusionDirector");
            var instance = this.FindInstance(fusionDirector);

            instance.Sync();
        }
Exemple #3
0
 public void UpdateFusionDirector(FusionDirector fusionDirector)
 {
     this.FusionDirector        = fusionDirector;
     this.enclosureService      = new EnclosureService(fusionDirector);
     this.fusionDirectorService = new FusionDirectorService(fusionDirector);
     this.nodePoolService       = new NodePoolService(fusionDirector);
     this.eventService          = new EventService(fusionDirector);
     this.metricsService        = new MetricsService(fusionDirector);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="BaseService" /> class.
 /// </summary>
 /// <param name="fusionDirector">The fusion director.</param>
 public BaseService(FusionDirector fusionDirector)
 {
     this.FusionDirector = fusionDirector;
     this.ApiLogger      = new FusionDirectorLogger(fusionDirector.HostIP).Api;
     this.httpClient     = new HttpClient {
         Timeout = TimeSpan.FromSeconds(120)
     };
     this.httpClient.DefaultRequestHeaders.Add("Connection", "close");
     this.httpClient.DefaultRequestHeaders.Add("Authorization", this.BaseAuthStr);
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="BaseService" /> class.
 /// </summary>
 /// <param name="fusionDirector">The fusion director.</param>
 public BaseService(FusionDirector fusionDirector)
 {
     //this.LocalCerts = CertDal.Instance.GetCerts();
     this.FusionDirector = fusionDirector;
     this.ApiLogger      = new FusionDirectorLogger(fusionDirector.HostIP).Api;
     this.httpClient     = new HttpClient {
         Timeout = TimeSpan.FromSeconds(120)
     };
     this.httpClient.DefaultRequestHeaders.Add("Authorization", this.BaseAuthStr);
 }
Exemple #6
0
        public void UpdateFusionDirector(FusionDirector fusionDirector)
        {
            // TODO(qianbiao.ng) can we dispose clients directly here? what if it's used by other threads?
            // this.DisposeFusionDirectorClients();

            this.FusionDirector        = fusionDirector;
            this.enclosureService      = new EnclosureService(fusionDirector);
            this.fusionDirectorService = new FusionDirectorService(fusionDirector);
            this.nodePoolService       = new NodePoolService(fusionDirector);
            this.eventService          = new EventService(fusionDirector);
            this.metricsService        = new MetricsService(fusionDirector);
        }
        /// <summary>
        /// Finds the instance.
        /// </summary>
        /// <param name="fusionDirector">The fusion director.</param>
        /// <returns>FusionDirectorSyncInstance.</returns>
        private FusionDirectorSyncInstance FindInstance(FusionDirector fusionDirector)
        {
            var syncInstance = this.SyncInstances.FirstOrDefault(y => y.FusionDirectorIp == fusionDirector.HostIP);

            if (syncInstance == null)
            {
                syncInstance = new FusionDirectorSyncInstance(fusionDirector);
                this.SyncInstances.Add(syncInstance);
            }
            else
            {
                syncInstance.UpdateFusionDirector(fusionDirector);
            }
            return(syncInstance);
        }
Exemple #8
0
        /// <summary>
        /// Gets the model from mp object.
        /// </summary>
        /// <param name="managementObject">The management object.</param>
        /// <returns>FdAppliance.</returns>
        private FusionDirector GetModelFromMpObject(EnterpriseManagementObject managementObject)
        {
            var props = FdApplianceConnector.Instance.FdApplianceClass.PropertyCollection;
            var model = new FusionDirector();

            model.HostIP              = managementObject[props["HostIP"]].Value.ToString();
            model.AliasName           = managementObject[props["AliasName"]].Value.ToString();
            model.LoginAccount        = managementObject[props["LoginAccount"]].Value.ToString();
            model.LoginPd             = RijndaelManagedCrypto.Instance.DecryptFromCs(managementObject[props["LoginPd"]].Value.ToString());
            model.Port                = managementObject[props["Port"]].Value.ToString();
            model.EventUserName       = managementObject[props["EventUserName"]].Value.ToString();
            model.EventPd             = RijndaelManagedCrypto.Instance.DecryptFromCs(managementObject[props["EventPd"]].Value.ToString());
            model.SubscribeId         = managementObject[props["SubscribeId"]].Value.ToString();
            model.SubscribeStatus     = managementObject[props["SubscribeStatus"]].Value.ToString();
            model.LatestSubscribeInfo = managementObject[props["LatestSubscribeInfo"]].Value.ToString();
            model.LastModifyTime      = Convert.ToDateTime(managementObject[props["LastModifyTime"]].Value.ToString());
            model.CreateTime          = Convert.ToDateTime(managementObject[props["CreateTime"]].Value.ToString());

            return(model);
        }
        /// <summary>
        /// Runs the recive new alarm.
        /// </summary>
        /// <param name="json">The json.</param>
        private void RunReciveNewAlarm(FusionDirector fusionDirector, string json)
        {
            var tcpMessage = JsonConvert.DeserializeObject <TcpMessage <AlarmData> >(json);

            HWLogger.GetFdNotifyLogger(fusionDirector.HostIP).Info($"Recieve new alarm:{JsonConvert.SerializeObject(tcpMessage)}");
            var syncInstance = this.SyncInstances.FirstOrDefault(y => y.FusionDirectorIp == fusionDirector.HostIP);

            if (syncInstance != null)
            {
                var data = tcpMessage.Data;
                if (data != null)
                {
                    syncInstance.DealNewAlarm(data);
                }
                else
                {
                    HWLogger.GetFdNotifyLogger(fusionDirector.HostIP).Error($"Recieve new alarm:message analysis faild");
                }
            }
            else
            {
                HWLogger.GetFdNotifyLogger(fusionDirector.HostIP).Info($"Recieve new alarm:can not find the syncInstance");
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="EnclosureService" /> class.
 /// </summary>
 /// <param name="fusionDirector">The fusion director.</param>
 public EnclosureService(FusionDirector fusionDirector) : base(fusionDirector)
 {
 }
Exemple #11
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FusionDirectorService"/> class.
 /// </summary>
 /// <param name="fusionDirector">The fusion director.</param>
 public FusionDirectorService(FusionDirector fusionDirector) : base(fusionDirector)
 {
 }
Exemple #12
0
 /// <summary>
 /// Initializes a new instance of the <see cref="NodePoolService"/> class.
 /// </summary>
 /// <param name="fusionDirector">The fusion director.</param>
 public NodePoolService(FusionDirector fusionDirector) : base(fusionDirector)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="NodePoolService"/> class.
 /// </summary>
 /// <param name="fusionDirector">The fusion director.</param>
 public EventService(FusionDirector fusionDirector) : base(fusionDirector)
 {
 }
 /// <summary>
 /// Initializes a new instance of the <see cref="EnclosureService" /> class.
 /// </summary>
 /// <param name="fusionDirector">The fusion director.</param>
 public MetricsService(FusionDirector fusionDirector) : base(fusionDirector)
 {
 }