Пример #1
0
        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();
            }
        }
Пример #2
0
        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();
                    }
                });
        }
Пример #3
0
        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;
            }
        }
Пример #4
0
        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>();
                        }
                    }
                });
        }