aggregation-platform/plugins/kubernetes/ts/kubernetesPlugin.js

237 lines
15 KiB
JavaScript

/// <reference path="../../includes.ts"/>
/// <reference path="kubernetesHelpers.ts"/>
var Kubernetes;
(function (Kubernetes) {
Kubernetes._module = angular.module(Kubernetes.pluginName, ['hawtio-core', 'hawtio-ui', 'ui.codemirror', 'ui.validate', 'kubernetesUI']);
Kubernetes.controller = PluginHelpers.createControllerFunction(Kubernetes._module, Kubernetes.pluginName);
Kubernetes.route = PluginHelpers.createRoutingFunction(Kubernetes.templatePath);
Kubernetes._module.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when(UrlHelpers.join(Kubernetes.context, '/pods'), Kubernetes.route('pods.html', false))
.when(UrlHelpers.join(Kubernetes.context, 'replicationControllers'), Kubernetes.route('replicationControllers.html', false))
.when(UrlHelpers.join(Kubernetes.context, 'services'), Kubernetes.route('services.html', false))
.when(UrlHelpers.join(Kubernetes.context, 'events'), Kubernetes.route('events.html', false))
.when(UrlHelpers.join(Kubernetes.context, 'apps'), Kubernetes.route('apps.html', false))
.when(UrlHelpers.join(Kubernetes.context, 'apps/:namespace'), Kubernetes.route('apps.html', false))
.when(UrlHelpers.join(Kubernetes.context, 'templates'), Kubernetes.route('templates.html', false))
.when(UrlHelpers.join(Kubernetes.context, 'hosts'), Kubernetes.route('hosts.html', false))
.when(UrlHelpers.join(Kubernetes.context, 'hosts/:id'), Kubernetes.route('host.html', true))
.when(UrlHelpers.join(Kubernetes.context, 'pipelines'), Kubernetes.route('pipelines.html', false))
.when(UrlHelpers.join(Kubernetes.context, 'overview'), Kubernetes.route('overview.html', true))
.when(Kubernetes.context, { redirectTo: UrlHelpers.join(Kubernetes.context, 'replicationControllers') });
angular.forEach([Kubernetes.context, "/workspaces/:workspace/projects/:project"], function (context) {
$routeProvider
.when(UrlHelpers.join(context, '/namespace/:namespace/podCreate'), Kubernetes.route('podCreate.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/podEdit/:id'), Kubernetes.route('podEdit.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/pods'), Kubernetes.route('pods.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/pods/:id'), Kubernetes.route('pod.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/replicationControllers'), Kubernetes.route('replicationControllers.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/replicationControllers/:id'), Kubernetes.route('replicationController.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/replicationControllerCreate'), Kubernetes.route('replicationControllerCreate.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/replicationControllerEdit/:id'), Kubernetes.route('replicationControllerEdit.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/secrets'), Kubernetes.route('secrets.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/secrets/:id'), Kubernetes.route('secret.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/secretCreate'), Kubernetes.route('secret.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/services'), Kubernetes.route('services.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/services/:id'), Kubernetes.route('service.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/serviceCreate'), Kubernetes.route('serviceCreate.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/serviceEdit/:id'), Kubernetes.route('serviceEdit.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/events'), Kubernetes.route('events.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/apps'), Kubernetes.route('apps.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace/overview'), Kubernetes.route('overview.html', true))
.when(UrlHelpers.join(context, '/namespace/:namespace/templates/:targetNamespace'), Kubernetes.route('templates.html', false))
.when(UrlHelpers.join(context, '/namespace/:namespace'), Kubernetes.route('apps.html', false))
.when(UrlHelpers.join(context, 'builds'), Kubernetes.route('builds.html', false))
.when(UrlHelpers.join(context, 'builds/:id'), Kubernetes.route('build.html', true))
.when(UrlHelpers.join(context, 'buildLogs/:id'), Kubernetes.route('buildLogs.html', true))
.when(UrlHelpers.join(context, 'buildConfigs'), Kubernetes.route('buildConfigs.html', false))
.when(UrlHelpers.join(context, 'buildConfigs/:id'), Kubernetes.route('buildConfig.html', true))
.when(UrlHelpers.join(context, 'buildConfigEdit/:id'), Kubernetes.route('buildConfigEdit.html', true))
.when(UrlHelpers.join(context, 'deploymentConfigs'), Kubernetes.route('deploymentConfigs.html', false))
.when(UrlHelpers.join(context, 'deploymentConfigs/:id'), Kubernetes.route('deploymentConfig.html', true))
.when(UrlHelpers.join(context, 'imageRepositories'), Kubernetes.route('imageRepositories.html', false));
});
angular.forEach([Kubernetes.context, "/workspaces/:workspace", "/workspaces/:workspace/projects/:project"], function (context) {
$routeProvider
.when(UrlHelpers.join(context, 'buildConfigEdit'), Kubernetes.route('buildConfigEdit.html', true))
.when(UrlHelpers.join(context, 'buildConfigEdit/:id'), Kubernetes.route('buildConfigEdit.html', true))
.when(UrlHelpers.join(context, 'importProject'), Kubernetes.route('importProject.html', true));
});
}]);
Kubernetes._module.factory('AppLibraryURL', ['$rootScope', function ($rootScope) {
return UrlHelpers.join(Kubernetes.kubernetesApiUrl(), "/proxy", Kubernetes.kubernetesNamespacePath(), "/services/app-library");
}]);
Kubernetes._module.factory('WikiGitUrlPrefix', function () {
return UrlHelpers.join(Kubernetes.kubernetesApiUrl(), "/proxy", Kubernetes.kubernetesNamespacePath(), "services/app-library");
});
Kubernetes._module.factory('wikiRepository', ["$location", "localStorage", function ($location, localStorage) {
return false;
}]);
Kubernetes._module.factory('ConnectDialogService', ['$rootScope', function ($rootScope) {
return {
dialog: new UI.Dialog(),
saveCredentials: false,
userName: null,
password: null,
jolokiaUrl: null,
containerName: null,
view: null
};
}]);
Kubernetes._module.filter('kubernetesPageLink', function () { return Kubernetes.entityPageLink; });
Kubernetes._module.filter('relativeTime', function () {
return function (date) {
return humandate.relativeTime(date);
};
});
Kubernetes._module.run(['viewRegistry', 'ServiceRegistry', 'HawtioNav', 'KubernetesModel', '$templateCache', function (viewRegistry, ServiceRegistry, HawtioNav, KubernetesModel, $templateCache) {
Kubernetes.log.debug("Running");
viewRegistry['kubernetes'] = Kubernetes.templatePath + 'layoutKubernetes.html';
//viewRegistry['kubernetes'] = Configs.templatePath + 'shareLayout.html';
var builder = HawtioNav.builder();
var apps = builder.id('kube-apps')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'apps'); })
.title(function () { return 'Apps'; })
.build();
var services = builder.id('kube-services')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'services'); })
.title(function () { return 'Services'; })
.build();
var controllers = builder.id('kube-controllers')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'replicationControllers'); })
.title(function () { return 'oracle服务'; })
.build();
var pods = builder.id('kube-pods')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'pods'); })
.title(function () { return '测试页面'; })
.build();
var events = builder.id('kube-events')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'events'); })
.title(function () { return '服务启动日志'; })
.build();
var hosts = builder.id('kube-hosts')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'hosts'); })
.title(function () { return '集群节点'; })
.build();
var overview = builder.id('kube-overview')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'overview'); })
.title(function () { return 'Diagram'; })
.build();
var builds = builder.id('kube-builds')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'builds'); })
.title(function () { return 'Builds'; })
.build();
var buildConfigs = builder.id('kube-buildConfigs')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'buildConfigs'); })
.title(function () { return 'Build Configs'; })
.build();
var deploys = builder.id('kube-deploys')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'deploymentConfigs'); })
.title(function () { return 'Deploys'; })
.build();
var imageRepositories = builder.id('kube-imageRepositories')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'imageRepositories'); })
.title(function () { return 'Registries'; })
.build();
var pipelines = builder.id('kube-pipelines')
.href(function () { return UrlHelpers.join(Kubernetes.context, 'pipelines'); })
.title(function () { return 'Pipelines'; })
.build();
var repos = builder.id('kube-repos')
.href(function () { return "/forge/repos"; })
.isValid(function () { return ServiceRegistry.hasService(Kubernetes.fabric8ForgeServiceName) && ServiceRegistry.hasService(Kubernetes.gogsServiceName); })
.title(function () { return 'Repositories'; })
.build();
var mainTab = builder.id('kubernetes')
.rank(100)
.defaultPage({
rank: 20,
isValid: function (yes, no) {
yes();
}
})
.href(function () { return UrlHelpers.join(Kubernetes.context, "/namespace/default/replicationControllers"); })
.title(function () { return '服务集群'; })
.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(function () { return UrlHelpers.join(Kubernetes.context, 'buildConfigs') + '?sub-tab=kube-buildConfigs'; })
.title(function () { return 'Projects'; })
.tabs(repos, buildConfigs, builds, deploys, imageRepositories)
.build();
//HawtioNav.add(projectsTab);
}]);
hawtioPluginLoader.registerPreBootstrapTask({
name: 'KubernetesInit',
task: function (next) {
$.getScript('osconsole/config.js')
.done(function (script, textStatus) {
var config = Kubernetes.osConfig = window['OPENSHIFT_CONFIG'];
Kubernetes.log.debug("Fetched OAuth config: ", config);
var master = 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(function (response) {
Kubernetes.log.debug("Error fetching OAUTH config: ", response);
})
.always(function () {
next();
});
}
}, true);
hawtioPluginLoader.addModule('ngResource');
hawtioPluginLoader.addModule(Kubernetes.pluginName);
})(Kubernetes || (Kubernetes = {}));
//# sourceMappingURL=kubernetesPlugin.js.map