/// <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); } })); }
public async Task <Result> Update(FdAppliance appliance, bool isUpdateCredential) { try { var validateResult = Validate(appliance, true, isUpdateCredential); if (!validateResult.Success) { return(validateResult); } if (isUpdateCredential)//修改了密码 { using (var client = new FdClient(appliance)) { var result = await client.TestCredential(); if (!result.Success) { return(result); } } } else { var oldFdObj = await FdApplianceConnector.Instance.FindByHost(appliance.HostIP); if (oldFdObj.Data == null) { return(Result.Failed(104, $"FusionDirector {appliance.HostIP} can not find.")); } var oldFd = GetModelFromMpObject(oldFdObj.Data); if (oldFd.Port != appliance.Port) //修改了端口 { appliance.LoginPd = oldFd.LoginPd; using (var client = new FdClient(appliance)) { var result = await client.TestCredential(); if (!result.Success) { return(result); } } } } var updateResult = await FdApplianceConnector.Instance.Update(appliance, isUpdateCredential); if (updateResult.Success) { await this.LoadAll(); } return(updateResult); } catch (Exception ex) { LogHelper.Error(ex, "Update"); return(Result.Failed(100, "Update", ex)); } }
internal async Task <Result> Add(FdAppliance appliance) { try { var validateResult = Validate(appliance, false, false); if (!validateResult.Success) { return(validateResult); } using (var client = new FdClient(appliance)) { var result = await client.TestCredential(); if (!result.Success) { return(result); } var addResult = await FdApplianceConnector.Instance.Add(appliance); if (addResult.Success) { await this.LoadAll(); } return(addResult); } } catch (Exception ex) { LogHelper.Error(ex, "Add"); return(Result.Failed(100, "Add", ex)); } }
/// <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); } })); }
public async Task <Result <List <FdAppliance> > > LoadAll() { try { var getListResult = await FdApplianceConnector.Instance.All(); if (!getListResult.Success) { LogHelper.Error(getListResult.Cause, getListResult.Message); return(Result <List <FdAppliance> > .Failed(getListResult.Code, getListResult.Message, getListResult.Cause)); } this.AllItems = getListResult.Data.Select(x => GetModelFromMpObject(x)).ToList(); OnFilteredItemsChanged(this.AllItems); foreach (var appliance in this.AllItems) { if (PingFd(appliance.HostIP)) { appliance.LatestConnectInfo = "success"; appliance.LatestStatus = Constants.FdConnectionStatus.ONLINE; } else { appliance.DirectorVersion = string.Empty; appliance.LatestConnectInfo = "Can not connect the remote server."; appliance.LatestStatus = Constants.FdConnectionStatus.FAILED; LogHelper.Info("Can not connect the remote server.", $"PingFd Error:"); } try { using (var client = new FdClient(appliance)) { var result = await client.GetApplianceVersion(); appliance.DirectorVersion = result.CurrentVersion; } } catch (Exception e) { appliance.DirectorVersion = string.Empty; LogHelper.Error(e, $"GetApplianceVersion Error:"); } } OnFilteredItemsChanged(this.AllItems); return(Result <List <FdAppliance> > .Done(this.AllItems)); } catch (Exception ex) { LogHelper.Error(ex, "LoadAll"); return(Result <List <FdAppliance> > .Failed("LoadAll", ex)); } }
internal async Task <Result> Test(FdAppliance appliance, bool isUpdate, bool isUpdateCredential) { try { var validateResult = Validate(appliance, isUpdate, isUpdateCredential); if (!validateResult.Success) { return(validateResult); } var client = new FdClient(appliance); return(await client.TestCredential()); } catch (Exception ex) { LogHelper.Error(ex, "Test"); return(Result.Failed(100, "Test", ex)); } }