Exemplo n.º 1
0
        private void InstallSendResults(Operations.SavedOpData updateData, RvSofOperation operation, List <RVsofResult.AppsToAdd2> appsToAdd = null, List <RVsofResult.AppsToDelete2> appsToDelete = null)
        {
            try
            {
                var results = new RVsofResult();

                results.AppsToAdd    = results.AppsToAdd != null ? appsToAdd : new List <RVsofResult.AppsToAdd2>();
                results.AppsToDelete = results.AppsToDelete != null ? appsToDelete : new List <RVsofResult.AppsToDelete2>();

                results.AppId          = updateData.filedata_app_id;
                results.Operation      = updateData.operation;
                results.OperationId    = updateData.operation_id;
                results.Error          = updateData.error;
                results.RebootRequired = updateData.reboot_required;
                results.Success        = updateData.success;

                switch (updateData.operation)
                {
                case OperationValue.InstallWindowsUpdate:
                    results             = WindowsUpdates.AddAppDetailsToResults(results);
                    operation.RawResult = RvFormatter.Install(results);
                    break;

                case OperationValue.InstallCustomApp:
                    results             = CustomAppsManager.AddAppDetailsToResults(results);
                    operation.RawResult = RvFormatter.Install(results);
                    break;

                case OperationValue.InstallSupportedApp:
                    results             = SupportedAppsManager.AddAppDetailsToResults(results);
                    operation.RawResult = RvFormatter.Install(results);
                    break;

                case OperationValue.InstallAgentUpdate:
                    results             = AgentUpdateManager.AddAppDetailsToResults(results);
                    operation.RawResult = RvFormatter.AgentUpdate(results);
                    break;

                case OperationValue.Uninstall:
                    operation.RawResult = RvFormatter.Install(results);
                    break;
                }

                operation.Id     = updateData.operation_id;
                operation.Plugin = "rv";

                Operations.UpdateStatus(updateData, Operations.OperationStatus.ResultsPending);

                Logger.Log("Sending back results for {0}.", LogLevel.Info, updateData.filedata_app_name);
                if (SendResults(operation))
                {
                    Operations.CleanAllOperationData(updateData);
                }
            }
            catch (Exception e)
            {
                Logger.Log("Failed when attempting to send back results, Exception inside InstallSendResults().");
                Logger.LogException(e);
            }
        }
Exemplo n.º 2
0
        private void InstallAgentUpdate(RvSofOperation operation)
        {
            var submittedInstall = false;
            var counter          = 30;
            var savedOperations  = Operations.LoadOpDirectory().Where(p => p.operation == OperationValue.InstallAgentUpdate).ToList();

            if (!savedOperations.Any())
            {
                Logger.Log("There are no operations remaining, Unable to update RV Agent: {0}", LogLevel.Warning, operation.Type);
                return;
            }

            Operations.SavedOpData updateDownloadResults = AgentUpdateManager.DownloadUpdate(savedOperations.First());

            if (String.IsNullOrEmpty(updateDownloadResults.error))
            {
                do
                {
                    switch (updateDownloadResults.operation_status)
                    {
                    case Operations.OperationStatus.Pending:
                        if (submittedInstall)
                        {
                            break;
                        }

                        Logger.Log("Agent Updater Application, preparing to upgrade RV Agent to the most recent version.");
                        var startInfo = new ProcessStartInfo();
                        var fileName  = String.Empty;

                        foreach (var item in updateDownloadResults.filedata_app_uris)
                        {
                            var splitted = item.file_name.Split(new[] { '.' });
                            if (splitted[0] == "UpdateInstaller")
                            {
                                fileName = item.file_name;
                            }
                        }

                        if (String.IsNullOrEmpty(fileName))
                        {
                            fileName = "UpdateInstaller.exe";
                        }

                        var filePath = Path.Combine(AgentUpdateManager.AgentUpdateDirectory, fileName);

                        startInfo.FileName               = filePath;
                        startInfo.Arguments              = updateDownloadResults.filedata_app_clioptions;
                        startInfo.UseShellExecute        = false;
                        startInfo.RedirectStandardOutput = false;

                        Operations.UpdateStatus(updateDownloadResults, Operations.OperationStatus.Processing);
                        Process.Start(startInfo);
                        submittedInstall = true;
                        break;
                    }
                    Thread.Sleep(5000);
                    counter--;
                } while (counter >= 0);
            }
            else
            if (!String.IsNullOrEmpty(updateDownloadResults.error))
            {
                InstallSendResults(updateDownloadResults, operation);
            }
        }