コード例 #1
0
        /// <summary>
        /// Deletes the specified appliance.
        /// </summary>
        /// <param name="appliance">The appliance.</param>
        /// <returns>Task&lt;Result&gt;.</returns>
        public async Task <Result> Delete(FdAppliance appliance)
        {
            return(await Task.Run(async() =>
            {
                try
                {
                    var obj = await this.FindByHost(appliance.HostIP);
                    var exsitObj = obj.Data;
                    if (exsitObj == null)
                    {
                        return Result.Failed(104, $"{appliance.HostIP} does not exists, delete failed.");
                    }
                    var client = new FdClient(appliance);
                    var res = await client.DeleteGivenSubscriptions(appliance.SubscribeId);
                    LogHelper.Info($"Delete Fd:DeleteGivenSubscriptions:{res.Code} {res.Message}");

                    var incrementalDiscoveryData = new IncrementalDiscoveryData();
                    incrementalDiscoveryData.Remove(exsitObj);
                    incrementalDiscoveryData.Commit(MGroup.Instance);
                    return Result.Done();
                }
                catch (Exception e)
                {
                    return Result.Failed(100, $"Internal error caused by {e.Message}", e);
                }
            }));
        }
コード例 #2
0
        /// <summary>
        /// Updates the specified appliance.
        /// </summary>
        /// <param name="appliance">The appliance.</param>
        /// <param name="isUpdateCredential">是否修改了密码</param>
        /// <returns>Result.</returns>
        public async Task <Result> Update(FdAppliance appliance, bool isUpdateCredential)
        {
            return(await Task.Run(async() =>
            {
                try
                {
                    var obj = await this.FindByHost(appliance.HostIP);
                    var exsitObj = obj.Data;
                    if (exsitObj == null)
                    {
                        return Result.Failed(104, $"Fd {appliance.HostIP} can not find.");
                    }
                    var incrementalDiscoveryData = new IncrementalDiscoveryData();

                    var props = this.FdApplianceClass.PropertyCollection;
                    exsitObj[props["AliasName"]].Value = appliance.AliasName;
                    exsitObj[props["Port"]].Value = appliance.Port;
                    exsitObj[props["LastModifyTime"]].Value = appliance.LastModifyTime;

                    if (isUpdateCredential)
                    {
                        try
                        {
                            var eventAccount = exsitObj[props["EventUserName"]].Value as string;
                            var eventPd = exsitObj[props["EventPd"]].Value as string;
                            if (eventAccount != appliance.EventUserName || eventPd != appliance.EventPd)
                            {
                                using (var client = new FdClient(appliance))
                                {
                                    var res = await client.DeleteGivenSubscriptions(appliance.SubscribeId);
                                    LogHelper.Info($"Update Fd:DeleteGivenSubscriptions:{res.Code} {res.Message}");
                                    // 取消订阅后重置订阅状态
                                    exsitObj[props["SubscribeId"]].Value = string.Empty;
                                    exsitObj[props["SubscribeStatus"]].Value = string.Empty;
                                    exsitObj[props["LatestSubscribeInfo"]].Value = string.Empty;
                                }
                            }
                        }
                        catch (Exception ex)
                        {
                            LogHelper.Error("DeleteSubscriptions Faild", ex);
                        }
                        exsitObj[props["LoginAccount"]].Value = appliance.LoginAccount;
                        exsitObj[props["LoginPd"]].Value = RijndaelManagedCrypto.Instance.EncryptForCs(appliance.LoginPd);
                        exsitObj[props["EventUserName"]].Value = appliance.EventUserName;
                        exsitObj[props["EventPd"]].Value = RijndaelManagedCrypto.Instance.EncryptForCs(appliance.EventPd);
                    }

                    incrementalDiscoveryData.Add(exsitObj);
                    incrementalDiscoveryData.Overwrite(MGroup.Instance);

                    return Result.Done();
                }
                catch (Exception e)
                {
                    return Result.Failed(100, $"Internal error caused by {e.Message}", e);
                }
            }));
        }