public async Task <ActionResult> Index(string slug) { IApplication application = _applicationService.GetApplication(slug); if (application == null) { return(HttpNotFound()); } ICredentials credentials = _credentialProvider.GetCredentials(); RemoteDeploymentManager deploymentManager = application.GetDeploymentManager(credentials); Task <IEnumerable <DeployResult> > deployResults = deploymentManager.GetResultsAsync(); Task <RepositoryInfo> repositoryInfo = application.GetRepositoryInfo(credentials); await Task.WhenAll(deployResults, repositoryInfo); var appViewModel = new ApplicationViewModel(application, _settingsResolver) { RepositoryInfo = repositoryInfo.Result, Deployments = deployResults.Result.ToList() }; ViewBag.slug = slug; ViewBag.appName = appViewModel.Name; return(View(appViewModel)); }
internal ApplicationManager(ISiteManager siteManager, Site site, string appName, ISettingsResolver settingsResolver) { _siteManager = siteManager; _site = site; _appName = appName; _settingsResolver = settingsResolver; SiteUrl = site.SiteUrl; ServiceUrl = site.ServiceUrl; DeploymentManager = new RemoteDeploymentManager(site.ServiceUrl + "deployments"); SettingsManager = new RemoteDeploymentSettingsManager(site.ServiceUrl + "settings"); LogStreamManager = new RemoteLogStreamManager(site.ServiceUrl + "logstream"); SSHKeyManager = new RemoteSSHKeyManager(site.ServiceUrl + "sshkey"); VfsManager = new RemoteVfsManager(site.ServiceUrl + "vfs"); VfsWebRootManager = new RemoteVfsManager(site.ServiceUrl + "vfs/site/wwwroot"); LiveScmVfsManager = new RemoteVfsManager(site.ServiceUrl + "scmvfs"); ZipManager = new RemoteZipManager(site.ServiceUrl + "zip"); CommandExecutor = new RemoteCommandExecutor(site.ServiceUrl + "command"); ProcessManager = new RemoteProcessManager(site.ServiceUrl + "diagnostics/processes"); WebHooksManager = new RemoteWebHooksManager(site.ServiceUrl + "hooks"); RepositoryManager = new RemoteRepositoryManager(site.ServiceUrl + "scm"); var repositoryInfo = RepositoryManager.GetRepositoryInfo().Result; GitUrl = repositoryInfo.GitUrl.OriginalString; }
internal ApplicationManager(ISiteManager siteManager, Site site, string appName, ISettingsResolver settingsResolver) { _siteManager = siteManager; _site = site; _appName = appName; _settingsResolver = settingsResolver; // Always null in public Kudu, but makes the code more similar to private Kudu NetworkCredential credentials = null; SiteUrl = site.SiteUrl.ToString(); ServiceUrl = site.ServiceUrl.ToString(); DeploymentManager = new RemoteDeploymentManager(site.ServiceUrl + "api", credentials); SettingsManager = new RemoteDeploymentSettingsManager(site.ServiceUrl + "api/settings", credentials); LegacySettingsManager = new RemoteDeploymentLegacySettingsManager(site.ServiceUrl + "settings", credentials); LogStreamManager = new RemoteLogStreamManager(site.ServiceUrl + "api/logstream", credentials); SSHKeyManager = new RemoteSSHKeyManager(site.ServiceUrl + "api/sshkey", credentials); VfsManager = new RemoteVfsManager(site.ServiceUrl + "api/vfs", credentials); VfsWebRootManager = new RemoteVfsManager(site.ServiceUrl + "api/vfs/site/wwwroot", credentials); LiveScmVfsManager = new RemoteVfsManager(site.ServiceUrl + "api/scmvfs", credentials); ZipManager = new RemoteZipManager(site.ServiceUrl + "api/zip", credentials); RuntimeManager = new RemoteRuntimeManager(site.ServiceUrl + "api/diagnostics/runtime", credentials); CommandExecutor = new RemoteCommandExecutor(site.ServiceUrl + "api/command", credentials); ProcessManager = new RemoteProcessManager(site.ServiceUrl + "api/processes", credentials); WebHooksManager = new RemoteWebHooksManager(site.ServiceUrl + "api/hooks", credentials); RepositoryManager = new RemoteRepositoryManager(site.ServiceUrl + "api/scm", credentials); JobsManager = new RemoteJobsManager(site.ServiceUrl + "api", credentials); LogFilesManager = new RemoteLogFilesManager(site.ServiceUrl + "api/logs", credentials); SiteExtensionManager = new RemoteSiteExtensionManager(site.ServiceUrl + "api", credentials); var repositoryInfo = RepositoryManager.GetRepositoryInfo().Result; GitUrl = repositoryInfo.GitUrl.OriginalString; }
public static RemoteDeploymentManager GetDeploymentManager(this IApplication application, ICredentials credentials) { var deploymentManager = new RemoteDeploymentManager(application.ServiceUrl + "/deployments"); deploymentManager.Credentials = credentials; return(deploymentManager); }
public Task <ActionResult> Index(string slug) { IApplication application = _applicationService.GetApplication(slug); if (application == null) { return(HttpNotFoundAsync()); } ICredentials credentials = _credentialProvider.GetCredentials(); RemoteDeploymentManager deploymentManager = application.GetDeploymentManager(credentials); // TODO: Do this in parallel return(deploymentManager.GetResultsAsync().Then(results => { return application.GetRepositoryInfo(credentials).Then(repositoryInfo => { var appViewModel = new ApplicationViewModel(application); appViewModel.RepositoryInfo = repositoryInfo; appViewModel.Deployments = results.ToList(); ViewBag.slug = slug; ViewBag.appName = appViewModel.Name; return (ActionResult)View(appViewModel); }); })); }
/// <summary> /// Load your modules or register your services here! /// </summary> /// <param name="kernel">The kernel.</param> private static void RegisterServices(IKernel kernel) { kernel.Bind <IFileSystem>().ToConstant(new RemoteFileSystem(FilesService)); kernel.Bind <IRepository>().ToConstant(new RemoteRepository(ScmService)); kernel.Bind <IRepositoryManager>().ToConstant(new RemoteRepositoryManager(ScmService)); var deploymentManager = new RemoteDeploymentManager(DeploymentService); kernel.Bind <IDeploymentManager>().ToConstant(deploymentManager); }
public static GitDeploymentResult GitDeploy(RemoteDeploymentManager deploymentManager, string kuduServiceUrl, string localRepoPath, string remoteRepoUrl, string localBranchName, string remoteBranchName) { HttpUtils.WaitForSite(kuduServiceUrl); Stopwatch sw = Stopwatch.StartNew(); string trace = Git.Push(localRepoPath, remoteRepoUrl, localBranchName, remoteBranchName); sw.Stop(); return(new GitDeploymentResult { GitTrace = trace, TotalResponseTime = sw.Elapsed }); }
public async Task <ActionResult> Deploy(string slug, string id, bool?clean) { IApplication application = _applicationService.GetApplication(slug); if (application == null) { return(HttpNotFound()); } ICredentials credentials = _credentialProvider.GetCredentials(); RemoteDeploymentManager deploymentManager = application.GetDeploymentManager(credentials); await deploymentManager.DeployAsync(id, clean : clean ?? false); return(RedirectToAction("Index", new { slug })); }
public async Task <ActionResult> Log(string slug, string id) { IApplication application = _applicationService.GetApplication(slug); if (application == null) { return(HttpNotFound()); } ICredentials credentials = _credentialProvider.GetCredentials(); RemoteDeploymentManager deploymentManager = application.GetDeploymentManager(credentials); IEnumerable <LogEntry> entries = await deploymentManager.GetLogEntriesAsync(id); ViewBag.slug = slug; ViewBag.appName = application.Name; ViewBag.id = id; return(View(entries)); }
public Task <ActionResult> Log(string slug, string id) { IApplication application = _applicationService.GetApplication(slug); if (application == null) { return(HttpNotFoundAsync()); } ICredentials credentials = _credentialProvider.GetCredentials(); RemoteDeploymentManager deploymentManager = application.GetDeploymentManager(credentials); return(deploymentManager.GetLogEntriesAsync(id).Then(entries => { ViewBag.slug = slug; ViewBag.appName = application.Name; ViewBag.id = id; return (ActionResult)View(entries); })); }
public void DeploymentManagerExtensibility() { // Arrange string repositoryName = "Mvc3Application"; string appName = KuduUtils.GetRandomWebsiteName("DeploymentApis"); using (var repo = Git.CreateLocalRepository(repositoryName)) { ApplicationManager.Run(appName, appManager => { var handler = new FakeMessageHandler() { InnerHandler = new HttpClientHandler() }; var manager = new RemoteDeploymentManager(appManager.DeploymentManager.ServiceUrl, handler); manager.Credentials = appManager.DeploymentManager.Credentials; var results = manager.GetResultsAsync().Result.ToList(); Assert.Equal(0, results.Count); Assert.NotNull(handler.Url); }); } }
public async Task DeploymentManagerExtensibility() { // Arrange string repositoryName = "Mvc3Application"; string appName = "DeploymentApis"; using (var repo = Git.Clone(repositoryName)) { await ApplicationManager.RunAsync(appName, async appManager => { var handler = new FakeMessageHandler() { InnerHandler = HttpClientHelper.CreateClientHandler(appManager.DeploymentManager.ServiceUrl, appManager.DeploymentManager.Credentials) }; var manager = new RemoteDeploymentManager(appManager.DeploymentManager.ServiceUrl, appManager.DeploymentManager.Credentials, handler); var results = (await manager.GetResultsAsync()).ToList(); Assert.Equal(0, results.Count); Assert.NotNull(handler.Url); }); } }
public void DeploymentManagerExtensibility() { // Arrange string repositoryName = "Mvc3Application"; string appName = KuduUtils.GetRandomWebsiteName("DeploymentApis"); using (var repo = Git.CreateLocalRepository(repositoryName)) { ApplicationManager.Run(appName, appManager => { var handler = new FakeMessageHandler() { InnerHandler = new HttpClientHandler() }; var manager = new RemoteDeploymentManager(appManager.DeploymentManager.ServiceUrl, handler); manager.Credentials = appManager.DeploymentManager.Credentials; var results = manager.GetResultsAsync().Result.ToList(); Assert.Equal(0, results.Count); Assert.NotNull(handler.Url); }); } }
public static RemoteDeploymentManager GetDeploymentManager(this IApplication application, ICredentials credentials) { var deploymentManager = new RemoteDeploymentManager(application.PrimaryServiceBinding + "api", credentials); return(deploymentManager); }
public static GitDeploymentResult GitDeploy(string kuduServiceUrl, string localRepoPath, string remoteRepoUrl, string localBranchName, string remoteBranchName) { var deploymentManager = new RemoteDeploymentManager(kuduServiceUrl); return(GitDeploy(deploymentManager, kuduServiceUrl, localRepoPath, remoteRepoUrl, localBranchName, remoteBranchName)); }
private void SubscribeToEvents(ICredentialProvider credentialProvider) { var deploymentManager = new RemoteDeploymentManager(ServiceUrl + "deploy"); deploymentManager.Credentials = credentialProvider.GetCredentials(); DeploymentManager = deploymentManager; DeploymentManager.StatusChanged += OnDeploymentStatusChanged; var commandExecutor = new RemoteCommandExecutor(ServiceUrl + "live/command"); commandExecutor.Credentials = credentialProvider.GetCredentials(); CommandExecutor = commandExecutor; CommandExecutor.CommandEvent += OnCommandEvent; var devCommandExecutor = new RemoteCommandExecutor(ServiceUrl + "dev/command"); devCommandExecutor.Credentials = credentialProvider.GetCredentials(); DevCommandExecutor = devCommandExecutor; DevCommandExecutor.CommandEvent += OnCommandEvent; //try //{ // // Start the connections // deploymentManager.Start(); // commandExecutor.Start(); // devCommandExecutor.Start(); //} //catch(Exception ex) //{ // Debug.WriteLine("Failed to subcribe for updates => " + ex.Message); //} }