private void RefreshFloatingIpDataGridBinding()
        {
            lkcode.hetznercloudapi.Api.Server server = (ServerDataGrid.SelectedItem as lkcode.hetznercloudapi.Api.Server);

            if (server == null)
            {
                return;
            }

            this.FloatingIpDataGrid.ItemsSource = null;
            this.FloatingIpDataGrid.ItemsSource = server.Network.FloatingIps;
        }
        private async void ServerResetContextMenu_Click(object sender, RoutedEventArgs e)
        {
            lkcode.hetznercloudapi.Api.Server server = this.ServerDataGrid.SelectedItem as lkcode.hetznercloudapi.Api.Server;

            try
            {
                this.AddLogMessage(string.Format("reset server '{0}'", server.Name));

                lkcode.hetznercloudapi.Api.ServerActionResponse actionResponse = await server.Reset();

                this.AddLogMessage(string.Format("success: reset server '{0}' - actionId '{1}' - actionId '{2}'", server.Name, actionResponse.Id, actionResponse.Command));
            }
            catch (Exception err)
            {
                this.AddLogMessage(string.Format("error: {0}", err.Message));
            }
        }
        private async void ServerNetworkMetricsContextMenu_Click(object sender, RoutedEventArgs e)
        {
            lkcode.hetznercloudapi.Api.Server server = this.ServerDataGrid.SelectedItem as lkcode.hetznercloudapi.Api.Server;

            ServerMetric serverMetric = null;

            try
            {
                this.AddLogMessage(string.Format("get network metrics for server '{0}'", server.Name));

                serverMetric = await server.GetMetrics(ServerMetricType.NETWORK, DateTimeHelper.GetAsIso8601String(DateTime.Now.AddDays(-30)), DateTimeHelper.GetAsIso8601String(DateTime.Now));

                this.AddLogMessage(string.Format("success: get network metrics for server '{0}'", server.Name));
            }
            catch (Exception err)
            {
                this.AddLogMessage(string.Format("error: {0}", err.Message));
            }

            ServerMetricNetworkValuesWindow win = new ServerMetricNetworkValuesWindow(serverMetric);

            win.Show();
        }
        private async void ServerDeleteContextMenu_Click(object sender, RoutedEventArgs e)
        {
            MessageDialogResult msgResult = await this.ShowMessageAsync(
                "Delete the Server",
                "Are you sure you want to delete the server?");

            if (msgResult == MessageDialogResult.Affirmative)
            {
                lkcode.hetznercloudapi.Api.Server server = this.ServerDataGrid.SelectedItem as lkcode.hetznercloudapi.Api.Server;

                try
                {
                    this.AddLogMessage(string.Format("delete server '{0}'", server.Name));

                    lkcode.hetznercloudapi.Api.ServerActionResponse actionResponse = await server.Delete();

                    this.AddLogMessage(string.Format("success: deleted server '{0}' - actionId '{1}' - actionId '{2}'", server.Name, actionResponse.Id, actionResponse.Command));
                }
                catch (Exception err)
                {
                    this.AddLogMessage(string.Format("error: {0}", err.Message));
                }
            }
        }
        private async void RebuildFromImageButton_Click(object sender, RoutedEventArgs e)
        {
            lkcode.hetznercloudapi.Api.Server server = this.ServerDataGrid.SelectedItem as lkcode.hetznercloudapi.Api.Server;

            try
            {
                this.AddLogMessage(string.Format("rebuild from image for server '{0}'", server.Name));

                lkcode.hetznercloudapi.Api.ServerActionResponse actionResponse = await server.RebuildImage("test-snapshot");

                if (actionResponse.Error != null)
                {
                    this.AddLogMessage(string.Format("error: {0} ({1})", actionResponse.Error.Message, actionResponse.Error.Code));
                }
                else
                {
                    this.AddLogMessage(string.Format("success: rebuild image for server '{0}' - actionId '{1}' - actionId '{2}'", server.Name, actionResponse.Id, actionResponse.Command));
                }
            }
            catch (Exception err)
            {
                this.AddLogMessage(string.Format("error: {0}", err.Message));
            }
        }