Exemplo n.º 1
0
        private async Task UpdateFirmwareAsync(string path, string option)
        {
            foreach (Server server in ServersListBox.Items)
            {
                if (!await NetworkHelper.CheckConnectionAsync(server.Host))
                {
                    OutputTextBox.AppendText(string.Format("O servidor {0} não está acessivel, verifique a conexão e tente novamente\n", server.Host));
                    continue;
                }
                try
                {
                    UpdateController idrac = new UpdateController(server);

                    if (!await idrac.CheckRedfishSupportAsync(UpdateController.FirmwareInventory))
                    {
                        OutputTextBox.AppendText(string.Format("A versão da Idrac do {0} servidor não possui suporte a função de update de firmware\n", server.Host));
                        continue;
                    }
                    OutputTextBox.AppendText(string.Format("Iniciando upload do firmware para {0}...\n", server.Host));
                    ChassisController chassisIdrac = new ChassisController(server);
                    IdracJob          job          = await idrac.UpdateFirmwareAsync(path, option);

                    Chassis chassis = await chassisIdrac.GetChassisAsync();

                    currentJobs.TryAdd(job.Id, new ServerJob()
                    {
                        Job = job, Server = server, SerialNumber = chassis.SKU
                    });
                    OutputTextBox.AppendText(string.Format("Upload concluido, criado Job {0} para update\n", job.Id));
                }
                catch (Exception ex)
                {
                    OutputTextBox.AppendText(string.Format("Erro ao atualizar {0} {1}\n", server.Host, ex.Message));
                }
            }
            UpdateButton.IsEnabled = true;
        }