/// <summary> /// Deletes the specified appliance. /// </summary> /// <param name="appliance">The appliance.</param> /// <returns>Task<Result>.</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); } })); }
/// <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); } })); }