|
|
|
/// <reference path="../../includes.ts"/>
|
|
|
|
/// <reference path="kubernetesHelpers.ts"/>
|
|
|
|
|
|
|
|
|
|
|
|
declare var OSOAuthConfig:any;
|
|
|
|
declare var GoogleOAuthConfig:any;
|
|
|
|
declare var KeycloakConfig:any;
|
|
|
|
|
|
|
|
module Kubernetes {
|
|
|
|
|
|
|
|
export var _module = angular.module(pluginName, ['hawtio-core', 'hawtio-ui', 'ui.codemirror', 'ui.validate','kubernetesUI']);
|
|
|
|
export var controller = PluginHelpers.createControllerFunction(_module, pluginName);
|
|
|
|
export var route = PluginHelpers.createRoutingFunction(templatePath);
|
|
|
|
|
|
|
|
_module.config(['$routeProvider', ($routeProvider:ng.route.IRouteProvider) => {
|
|
|
|
$routeProvider
|
|
|
|
.when(UrlHelpers.join(context, '/pods'), route('pods.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'replicationControllers'), route('replicationControllers.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'services'), route('services.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'events'), route('events.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'apps'), route('apps.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'apps/:namespace'), route('apps.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'templates'), route('templates.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'hosts'), route('hosts.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'hosts/:id'), route('host.html', true))
|
|
|
|
.when(UrlHelpers.join(context, 'pipelines'), route('pipelines.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'overview'), route('overview.html', true))
|
|
|
|
.when(context, {redirectTo: UrlHelpers.join(context, 'replicationControllers')});
|
|
|
|
|
|
|
|
angular.forEach([context, "/workspaces/:workspace/projects/:project"], (context) => {
|
|
|
|
$routeProvider
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/podCreate'), route('podCreate.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/podEdit/:id'), route('podEdit.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/pods'), route('pods.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/pods/:id'), route('pod.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/replicationControllers'), route('replicationControllers.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/replicationControllers/:id'), route('replicationController.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/replicationControllerCreate'), route('replicationControllerCreate.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/replicationControllerEdit/:id'), route('replicationControllerEdit.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/secrets'), route('secrets.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/secrets/:id'), route('secret.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/secretCreate'), route('secret.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/services'), route('services.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/services/:id'), route('service.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/serviceCreate'), route('serviceCreate.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/serviceEdit/:id'), route('serviceEdit.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/events'), route('events.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/apps'), route('apps.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/overview'), route('overview.html', true))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace/templates/:targetNamespace'), route('templates.html', false))
|
|
|
|
.when(UrlHelpers.join(context, '/namespace/:namespace'), route('apps.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'builds'), route('builds.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'builds/:id'), route('build.html', true))
|
|
|
|
.when(UrlHelpers.join(context, 'buildLogs/:id'), route('buildLogs.html', true))
|
|
|
|
.when(UrlHelpers.join(context, 'buildConfigs'), route('buildConfigs.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'buildConfigs/:id'), route('buildConfig.html', true))
|
|
|
|
.when(UrlHelpers.join(context, 'buildConfigEdit/:id'), route('buildConfigEdit.html', true))
|
|
|
|
.when(UrlHelpers.join(context, 'deploymentConfigs'), route('deploymentConfigs.html', false))
|
|
|
|
.when(UrlHelpers.join(context, 'deploymentConfigs/:id'), route('deploymentConfig.html', true))
|
|
|
|
.when(UrlHelpers.join(context, 'imageRepositories'), route('imageRepositories.html', false))
|
|
|
|
});
|
|
|
|
|
|
|
|
angular.forEach([context, "/workspaces/:workspace", "/workspaces/:workspace/projects/:project"], (context) => {
|
|
|
|
$routeProvider
|
|
|
|
.when(UrlHelpers.join(context, 'buildConfigEdit'), route('buildConfigEdit.html', true))
|
|
|
|
.when(UrlHelpers.join(context, 'buildConfigEdit/:id'), route('buildConfigEdit.html', true))
|
|
|
|
.when(UrlHelpers.join(context, 'importProject'), route('importProject.html', true))
|
|
|
|
});
|
|
|
|
}]);
|
|
|
|
|
|
|
|
|
|
|
|
_module.factory('AppLibraryURL', ['$rootScope', ($rootScope:ng.IRootScopeService) => {
|
|
|
|
return UrlHelpers.join(kubernetesApiUrl(), "/proxy", kubernetesNamespacePath(), "/services/app-library");
|
|
|
|
}]);
|
|
|
|
|
|
|
|
_module.factory('WikiGitUrlPrefix', () => {
|
|
|
|
return UrlHelpers.join(kubernetesApiUrl(), "/proxy", kubernetesNamespacePath(), "services/app-library");
|
|
|
|
});
|
|
|
|
|
|
|
|
_module.factory('wikiRepository', ["$location", "localStorage", ($location, localStorage) => {
|
|
|
|
return false;
|
|
|
|
}]);
|
|
|
|
|
|
|
|
_module.factory('ConnectDialogService', ['$rootScope', ($rootScope:ng.IRootScopeService) => {
|
|
|
|
return {
|
|
|
|
dialog: new UI.Dialog(),
|
|
|
|
saveCredentials: false,
|
|
|
|
userName: null,
|
|
|
|
password: null,
|
|
|
|
jolokiaUrl: null,
|
|
|
|
containerName: null,
|
|
|
|
view: null
|
|
|
|
};
|
|
|
|
}]);
|
|
|
|
|
|
|
|
_module.filter('kubernetesPageLink', () => entityPageLink);
|
|
|
|
|
|
|
|
_module.filter('relativeTime', () => {
|
|
|
|
return (date) => {
|
|
|
|
return humandate.relativeTime(date);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
_module.run(['viewRegistry', 'ServiceRegistry', 'HawtioNav', 'KubernetesModel', '$templateCache', (viewRegistry, ServiceRegistry, HawtioNav, KubernetesModel, $templateCache) => {
|
|
|
|
console.log("3");
|
|
|
|
log.debug("Running");
|
|
|
|
viewRegistry['kubernetes'] = templatePath + 'layoutKubernetes.html';
|
|
|
|
var builder = HawtioNav.builder();
|
|
|
|
var apps = builder.id('kube-apps')
|
|
|
|
.href(() => UrlHelpers.join(context, 'apps'))
|
|
|
|
.title(() => 'Apps')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var services = builder.id('kube-services')
|
|
|
|
.href(() => UrlHelpers.join(context, 'services'))
|
|
|
|
.title(() => 'Services')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var controllers = builder.id('kube-controllers')
|
|
|
|
.href(() => UrlHelpers.join(context, 'replicationControllers'))
|
|
|
|
.title(() => 'oracle服务')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var pods = builder.id('kube-pods')
|
|
|
|
.href(() => UrlHelpers.join(context, 'pods'))
|
|
|
|
.title(() => '测试页面')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var events = builder.id('kube-events')
|
|
|
|
.href(() => UrlHelpers.join(context, 'events'))
|
|
|
|
.title(() => '服务启动日志')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var hosts = builder.id('kube-hosts')
|
|
|
|
.href(() => UrlHelpers.join(context, 'hosts'))
|
|
|
|
.title(() => '集群节点')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var overview = builder.id('kube-overview')
|
|
|
|
.href(() => UrlHelpers.join(context, 'overview'))
|
|
|
|
.title(() => 'Diagram')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var builds = builder.id('kube-builds')
|
|
|
|
.href(() => UrlHelpers.join(context, 'builds'))
|
|
|
|
.title(() => 'Builds')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var buildConfigs = builder.id('kube-buildConfigs')
|
|
|
|
.href(() => UrlHelpers.join(context, 'buildConfigs'))
|
|
|
|
.title(() => 'Build Configs')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var deploys = builder.id('kube-deploys')
|
|
|
|
.href(() => UrlHelpers.join(context, 'deploymentConfigs'))
|
|
|
|
.title(() => 'Deploys')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var imageRepositories = builder.id('kube-imageRepositories')
|
|
|
|
.href(() => UrlHelpers.join(context, 'imageRepositories'))
|
|
|
|
.title(() => 'Registries')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var pipelines = builder.id('kube-pipelines')
|
|
|
|
.href(() => UrlHelpers.join(context, 'pipelines'))
|
|
|
|
.title(() => 'Pipelines')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var repos = builder.id('kube-repos')
|
|
|
|
.href(() => "/forge/repos")
|
|
|
|
.isValid(() => ServiceRegistry.hasService(fabric8ForgeServiceName) && ServiceRegistry.hasService(gogsServiceName))
|
|
|
|
.title(() => 'Repositories')
|
|
|
|
.build();
|
|
|
|
|
|
|
|
var mainTab = builder.id('kubernetes')
|
|
|
|
.rank(100)
|
|
|
|
.defaultPage({
|
|
|
|
rank: 20,
|
|
|
|
isValid: (yes, no) => {
|
|
|
|
yes();
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.href(() => context)
|
|
|
|
.title(() => '服务集群')
|
|
|
|
.tabs(controllers, pods, events)
|
|
|
|
.build();
|
|
|
|
HawtioNav.add(mainTab);
|
|
|
|
|
|
|
|
/* testKubernetesModel
|
|
|
|
HawtioNav.add({
|
|
|
|
id: 'k8sAppSwitcher',
|
|
|
|
title: () => '', // not used as 'template' below overrides this
|
|
|
|
isValid: () => KubernetesModel.serviceApps.length > 0,
|
|
|
|
context: true,
|
|
|
|
template: () => $templateCache.get(UrlHelpers.join(templatePath, 'serviceApps.html'))
|
|
|
|
});
|
|
|
|
*/
|
|
|
|
|
|
|
|
var projectsTab = builder.id('openshift')
|
|
|
|
.rank(100)
|
|
|
|
.href(() => UrlHelpers.join(context, 'buildConfigs') + '?sub-tab=kube-buildConfigs')
|
|
|
|
.title(() => 'Projects')
|
|
|
|
// lets disable the pipelines view for now
|
|
|
|
// pipelines,
|
|
|
|
.tabs(repos, buildConfigs, builds, deploys, imageRepositories)
|
|
|
|
.build();
|
|
|
|
|
|
|
|
//HawtioNav.add(projectsTab);
|
|
|
|
}]);
|
|
|
|
|
|
|
|
hawtioPluginLoader.registerPreBootstrapTask({
|
|
|
|
name: 'KubernetesInit',
|
|
|
|
task: (next) => {
|
|
|
|
$.getScript('osconsole/config.js')
|
|
|
|
.done((script, textStatus) => {
|
|
|
|
var config:KubernetesConfig = Kubernetes.osConfig = window['OPENSHIFT_CONFIG'];
|
|
|
|
log.debug("Fetched OAuth config: ", config);
|
|
|
|
var master:string = config.master_uri;
|
|
|
|
if (!master && config.api && config.api.k8s) {
|
|
|
|
var masterUri = new URI().host(config.api.k8s.hostPort).path("").query("");
|
|
|
|
if (config.api.k8s.proto) {
|
|
|
|
masterUri.protocol(config.api.k8s.proto);
|
|
|
|
}
|
|
|
|
master = masterUri.toString();
|
|
|
|
}
|
|
|
|
|
|
|
|
OSOAuthConfig = config.openshift;
|
|
|
|
GoogleOAuthConfig = config.google;
|
|
|
|
KeycloakConfig = config.keycloak;
|
|
|
|
|
|
|
|
if (OSOAuthConfig && !master) {
|
|
|
|
// TODO auth.master_uri no longer used right?
|
|
|
|
// master = OSOAuthConfig.master_uri;
|
|
|
|
if (!master) {
|
|
|
|
var oauth_authorize_uri = OSOAuthConfig.oauth_authorize_uri;
|
|
|
|
if (oauth_authorize_uri) {
|
|
|
|
var text = oauth_authorize_uri;
|
|
|
|
var idx = text.indexOf("://");
|
|
|
|
if (idx > 0) {
|
|
|
|
idx += 3;
|
|
|
|
idx = text.indexOf("/", idx);
|
|
|
|
if (idx > 0) {
|
|
|
|
master = text.substring(0, ++idx);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((!Kubernetes.masterUrl || Kubernetes.masterUrl === "/") && (!master || master === "/")) {
|
|
|
|
// lets default the master to the current protocol and host/port
|
|
|
|
// in case the master url is "/" and we are
|
|
|
|
// serving up static content from inside /api/v1/namespaces/default/services/fabric8 or something like that
|
|
|
|
var href = location.href;
|
|
|
|
if (href) {
|
|
|
|
master = new URI(href).query("").path("").toString();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (master) {
|
|
|
|
Kubernetes.masterUrl = master;
|
|
|
|
next();
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.fail((response) => {
|
|
|
|
log.debug("Error fetching OAUTH config: ", response);
|
|
|
|
})
|
|
|
|
.always(() => {
|
|
|
|
next();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}, true);
|
|
|
|
|
|
|
|
hawtioPluginLoader.addModule('ngResource');
|
|
|
|
hawtioPluginLoader.addModule(pluginName);
|
|
|
|
}
|