+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ There is no default SSH key associated to this current workspace. A new key can be generated.
+ Note: Workspace is currently in RUNNING state. It will require a restart of the workspace in order to be taken into account.
+
+
+
+
+
diff --git a/dashboard/src/app/workspaces/workspace-details/workspace-ssh/workspace-details-ssh.styl b/dashboard/src/app/workspaces/workspace-details/workspace-ssh/workspace-details-ssh.styl
new file mode 100644
index 00000000000..b61bc8e4b97
--- /dev/null
+++ b/dashboard/src/app/workspaces/workspace-details/workspace-ssh/workspace-details-ssh.styl
@@ -0,0 +1,26 @@
+.workspace-ssh-content
+ margin 0
+ button
+ margin 0
+
+
+.workspace-ssh-content
+ .che-text-info-mobile span, .che-text-info-desktop span
+ border-width 0
+ padding-bottom 20px
+
+ .che-text-info-mobile span label, .che-text-info-desktop span label
+ max-width 500px
+ word-wrap break-word
+ font-family Fixed, monospace
+ color $disabled-color
+
+ .che-text-info .copy-clipboard
+ margin-top 50px
+ margin-left 20px
+
+ .workspace-ssh-content-notice
+ padding-top 20px
+
+.workspace-ssh-content .workspace-ssh-content-private .che-text-info-desktop span label
+ white-space pre
diff --git a/dashboard/src/app/workspaces/workspaces-config.ts b/dashboard/src/app/workspaces/workspaces-config.ts
index 8a363da4bab..7fe526ac172 100644
--- a/dashboard/src/app/workspaces/workspaces-config.ts
+++ b/dashboard/src/app/workspaces/workspaces-config.ts
@@ -21,6 +21,8 @@ import {UsageChart} from './list-workspaces/workspace-item/usage-chart.directive
import {WorkspaceItemCtrl} from './list-workspaces/workspace-item/workspace-item.controller';
import {WorkspaceEditModeOverlay} from './workspace-edit-mode/workspace-edit-mode-overlay.directive';
import {WorkspaceEditModeToolbarButton} from './workspace-edit-mode/workspace-edit-mode-toolbar-button.directive';
+import {WorkspaceDetailsSsh} from './workspace-details/workspace-ssh/workspace-details-ssh.directive';
+import {WorkspaceDetailsSshCtrl} from './workspace-details/workspace-ssh/workspace-details-ssh.controller';
import {WorkspaceDetailsProjectsCtrl} from './workspace-details/workspace-projects/workspace-details-projects.controller';
import {WorkspaceDetailsService} from './workspace-details/workspace-details.service';
import {ExportWorkspaceController} from './workspace-details/export-workspace/export-workspace.controller';
@@ -83,6 +85,9 @@ export class WorkspacesConfig {
new CreateProjectStackLibrarySelectedStackFilter(register);
+ register.controller('WorkspaceDetailsSshCtrl', WorkspaceDetailsSshCtrl);
+ register.directive('workspaceDetailsSsh', WorkspaceDetailsSsh);
+
register.controller('ListWorkspacesCtrl', ListWorkspacesCtrl);
register.controller('WorkspaceDetailsController', WorkspaceDetailsController);
register.controller('WorkspaceStacksController', WorkspaceStacksController);
diff --git a/dashboard/src/components/api/che-api-config.ts b/dashboard/src/components/api/che-api-config.ts
index e6bde6c75b3..8a1a69d9117 100644
--- a/dashboard/src/components/api/che-api-config.ts
+++ b/dashboard/src/components/api/che-api-config.ts
@@ -30,6 +30,7 @@ import {CheRemote} from './remote/che-remote.factory';
import {CheOAuthProvider} from './che-o-auth-provider.factory';
import {CheEnvironmentRegistry} from './environment/che-environment-registry.factory';
import {CheAgent} from './che-agent.factory';
+import {CheSsh} from './che-ssh.factory';
import {CheNamespaceRegistry} from './namespace/che-namespace-registry.factory';
export class ApiConfig {
@@ -54,6 +55,7 @@ export class ApiConfig {
register.factory('cheOAuthProvider', CheOAuthProvider);
register.factory('cheEnvironmentRegistry', CheEnvironmentRegistry);
register.factory('cheAgent', CheAgent);
+ register.factory('cheSsh', CheSsh);
register.factory('cheNamespaceRegistry', CheNamespaceRegistry);
}
}
diff --git a/dashboard/src/components/api/che-api.factory.ts b/dashboard/src/components/api/che-api.factory.ts
index 5dd504d41ae..29054bc3f63 100644
--- a/dashboard/src/components/api/che-api.factory.ts
+++ b/dashboard/src/components/api/che-api.factory.ts
@@ -8,6 +8,8 @@
* Contributors:
* Codenvy, S.A. - initial API and implementation
*/
+
+import {CheSsh} from "./che-ssh.factory";
'use strict';
@@ -18,12 +20,15 @@
*/
export class CheAPI {
+
+ private cheSsh : CheSsh;
+
/**
* Default constructor that is using resource
* @ngInject for Dependency injection
*/
constructor(cheWorkspace, cheProfile, chePreferences, cheProjectTemplate, cheWebsocket, cheService,
- cheAdminPlugins, cheAdminService, cheRecipe, cheRecipeTemplate, cheStack, cheOAuthProvider, cheAgent) {
+ cheAdminPlugins, cheAdminService, cheRecipe, cheRecipeTemplate, cheStack, cheOAuthProvider, cheAgent, cheSsh : CheSsh) {
this.cheWorkspace = cheWorkspace;
this.cheProfile = cheProfile;
this.chePreferences = chePreferences;
@@ -37,6 +42,7 @@ export class CheAPI {
this.cheStack = cheStack;
this.cheOAuthProvider = cheOAuthProvider;
this.cheAgent = cheAgent;
+ this.cheSsh = cheSsh;
}
@@ -145,4 +151,12 @@ export class CheAPI {
return this.cheAgent;
}
+ /**
+ * Gets Che ssh API
+ * @returns {CheSsh}
+ */
+ getSsh() {
+ return this.cheSsh;
+ }
+
}
diff --git a/dashboard/src/components/api/che-ssh.factory.ts b/dashboard/src/components/api/che-ssh.factory.ts
new file mode 100644
index 00000000000..ef237d1fe42
--- /dev/null
+++ b/dashboard/src/components/api/che-ssh.factory.ts
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2015-2016 Codenvy, S.A.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Codenvy, S.A. - initial API and implementation
+ */
+'use strict';
+
+/**
+ * This class is handling the ssh keys
+ * @author Florent Benoit
+ */
+export class CheSsh {
+
+ /**
+ * Angular Resource service.
+ */
+ private $resource: ng.resource.IResourceService;
+
+ /**
+ * Angular Promise service.
+ */
+ private $q: ng.IQService;
+
+ /**
+ * Remote API for SSH.
+ */
+ private remoteSshAPI: ng.resource.IResourceClass