private async void OnEditDnsRecordClick(DnsRecordViewModel record) { IDnsRecordEditor editor; try { editor = container.Resolve<IDnsRecordEditor>(record.RecordType.ToString()); } catch (Exception) { logger.Log("Can't create editor for "+record.RecordType+" record.", Category.Exception, Priority.Medium); return; } editor.EditMode = true; editor.DnsZone = currentZone; editor.DnsRecord = record; editor.Owner = Application.Current.MainWindow; if (editor.ShowDialog() ?? false) { await LoadDnsRecordsAsync(); } }
public async Task RemoveRecordSetAsync(DnsZoneViewModel dnsZone, DnsRecordViewModel record) { await Task.Run( delegate { lock (runspace) { var pipe = runspace.CreatePipeline(); var rs = new Command("Remove-AzureDnsRecordSet"); rs.Parameters.Add("Name", record.Name); rs.Parameters.Add("RecordType", record.RecordType.ToString()); rs.Parameters.Add("ZoneName", dnsZone.Name); rs.Parameters.Add("ResourceGroupName", dnsZone.ResourceGroupName); rs.Parameters.Add("Force"); pipe.Commands.Add(rs); LogCommand(pipe.Commands); pipe.Invoke(); } }); }
private async void OnRemoveClick(DnsRecordViewModel record) { var message = "Do you want to remove record [" + record.RecordType + "] '" + record.Name + "'?"; if (MessageBox.Show(message, "Remove DNS record", MessageBoxButton.YesNo) != MessageBoxResult.Yes) return; try { IsEnabled = false; var ps = container.Resolve<AzurePowerShell>(); await ps.RemoveRecordSetAsync(currentZone, record); await LoadDnsRecordsAsync(); } catch (Exception ex) { MessageBox.Show(ex.Message); } finally { IsEnabled = true; } }
public async Task<IList<DnsRecordViewModel>> GetAzureDnsRecordsAsync(DnsZoneViewModel zone) { return await Task.Run( delegate { lock (runspace) { try { var ps = PowerShell.Create(); ps.Runspace = runspace; ps.AddCommand("Get-AzureDnsRecordSet") .AddParameter("ResourceGroupName", zone.ResourceGroupName) .AddParameter("ZoneName", zone.Name); LogCommand(ps.Commands.Commands); var items = ps.Invoke(); dynamic records = items[0].BaseObject; var result = new List<DnsRecordViewModel>(); foreach (var item in records) { string recordType = item.RecordType.ToString(); var record = new DnsRecordViewModel(); record.Name = item.Name; record.RecordType = (RecordType) Enum.Parse(typeof (RecordType), recordType); var reader = container.Resolve<IDnsRecordReader>(recordType); var list = new List<BaseDnsRecord>(); foreach (var r in item.Records) { list.Add(reader.Read(r)); } record.Records = list; result.Add(record); } return result; } catch (Exception) { return new List<DnsRecordViewModel>(); } } }); }