private void PushApp()
        {
            Messenger.Default.Send(new NotificationMessageAction <bool>(Messages.PushApp,
                                                                        (confirmed) =>
            {
                if (confirmed)
                {
                    PushViewModel viewModel = null;
                    Messenger.Default.Send(new NotificationMessageAction <PushViewModel>(Messages.GetPushAppData, vm => viewModel = vm));

                    var worker = new BackgroundWorker {
                        WorkerReportsProgress = true
                    };
                    SetProgressTitle("Push Application");
                    worker.ProgressChanged += WorkerProgressChanged;
                    worker.DoWork          += (s, e) =>
                    {
                        worker.ReportProgress(10, "Pushing Application: " + viewModel.Name);

                        ProviderResponse <bool> result =
                            provider.Push(viewModel.SelectedCloud, viewModel.Name, viewModel.Url,
                                          Convert.ToUInt16(viewModel.Instances), viewModel.PushFromDirectory,
                                          Convert.ToUInt32(viewModel.SelectedMemory),
                                          viewModel.ApplicationServices.Select(provisionedService => provisionedService.Name).ToArray());

                        if (false == result.Response)
                        {
                            worker.ReportProgress(-1, result.Message);
                            return;
                        }

                        ProviderResponse <Application> appResult = provider.GetApplication(
                            new Application {
                            Name = viewModel.Name
                        }, viewModel.SelectedCloud);
                        if (appResult.Response == null)
                        {
                            worker.ReportProgress(-1, appResult.Message);
                            return;
                        }
                        e.Result = appResult.Response;
                    };

                    worker.RunWorkerCompleted += (s, e) =>
                    {
                        var result  = e.Result as Application;
                        Cloud cloud = provider.Clouds.SingleOrDefault((c) => c.ID == viewModel.SelectedCloud.ID);
                        if (result != null)
                        {
                            cloud.Applications.Add(result);
                        }
                        Messenger.Default.Send(new ProgressMessage(100, "Application Pushed."));
                    };
                    worker.RunWorkerAsync();
                    Messenger.Default.Send(new NotificationMessageAction <bool>(Messages.Progress, c => { }));
                }
            }));
        }
Exemplo n.º 2
0
        private void PushApplication(object sender, EventArgs e)
        {
            Project project = vsMonitorSelection.GetActiveProject();

            if (project != null)
            {
                var cloudGuid          = GetCurrentCloudGuid(project);
                var projectDirectories = GetProjectDirectories(project);

                Messenger.Default.Register <NotificationMessageAction <Guid> >(this,
                                                                               message =>
                {
                    if (message.Notification.Equals(Messages.SetPushAppData))
                    {
                        message.Execute(cloudGuid);
                    }
                });

                Messenger.Default.Register <NotificationMessageAction <string> >(this,
                                                                                 message =>
                {
                    if (message.Notification.Equals(Messages.SetPushAppDirectory))
                    {
                        message.Execute(projectDirectories.DeployFromPath);
                    }
                });

                var window = new Push();
                var helper = new WindowInteropHelper(window);
                helper.Owner = (IntPtr)(dte.MainWindow.HWnd);
                var result = window.ShowDialog();

                if (result.GetValueOrDefault())
                {
                    PushViewModel modelData = null;
                    Messenger.Default.Send(new NotificationMessageAction <PushViewModel>(Messages.GetPushAppData, model => modelData = model));
                    SetCurrentCloudGuid(project, modelData.SelectedCloud.ID);

                    List <string> services = new List <string>();
                    foreach (var provisionedService in modelData.ApplicationServices)
                    {
                        services.Add(provisionedService.Name);
                    }
                    PerformAction("Push Application", project, modelData.SelectedCloud, projectDirectories, (c, d) =>
                                  c.Push(modelData.Name, modelData.Url, Convert.ToUInt16(modelData.Instances), d, Convert.ToUInt32(modelData.SelectedMemory), services.ToArray()));
                }
            }
        }