mirror of
https://github.com/portainer/portainer.git
synced 2025-08-01 20:05:23 +02:00
fix cluster setup page route (#6020)
This commit is contained in:
parent
ebfabe6c47
commit
af0d637414
9 changed files with 403 additions and 389 deletions
|
@ -28,7 +28,13 @@
|
||||||
Namespaces
|
Namespaces
|
||||||
</sidebar-menu-item>
|
</sidebar-menu-item>
|
||||||
|
|
||||||
<sidebar-menu-item path="kubernetes.templates.helm" path-params="{ endpointId: $ctrl.endpointId }" icon-class="fa-dharmachakra fa-fw" class-name="sidebar-list" data-cy="k8sSidebar-helm">
|
<sidebar-menu-item
|
||||||
|
path="kubernetes.templates.helm"
|
||||||
|
path-params="{ endpointId: $ctrl.endpointId }"
|
||||||
|
icon-class="fa-dharmachakra fa-fw"
|
||||||
|
class-name="sidebar-list"
|
||||||
|
data-cy="k8sSidebar-helm"
|
||||||
|
>
|
||||||
Helm
|
Helm
|
||||||
</sidebar-menu-item>
|
</sidebar-menu-item>
|
||||||
|
|
||||||
|
@ -62,12 +68,12 @@
|
||||||
path="kubernetes.cluster"
|
path="kubernetes.cluster"
|
||||||
path-params="{ endpointId: $ctrl.endpointId }"
|
path-params="{ endpointId: $ctrl.endpointId }"
|
||||||
is-sidebar-open="$ctrl.isSidebarOpen"
|
is-sidebar-open="$ctrl.isSidebarOpen"
|
||||||
children-paths="['kubernetes.cluster', 'portainer.endpoints.endpoint.kubernetesConfig', 'kubernetes.registries', 'kubernetes.registries.access']"
|
children-paths="['kubernetes.cluster', 'portainer.k8sendpoint.kubernetesConfig', 'kubernetes.registries', 'kubernetes.registries.access']"
|
||||||
>
|
>
|
||||||
<div ng-if="$ctrl.adminAccess">
|
<div ng-if="$ctrl.adminAccess">
|
||||||
<sidebar-menu-item
|
<sidebar-menu-item
|
||||||
authorization="K8sClusterSetupRW"
|
authorization="K8sClusterSetupRW"
|
||||||
path="portainer.endpoints.endpoint.kubernetesConfig"
|
path="portainer.k8sendpoint.kubernetesConfig"
|
||||||
path-params="{ id: $ctrl.endpointId }"
|
path-params="{ id: $ctrl.endpointId }"
|
||||||
class-name="sidebar-sublist"
|
class-name="sidebar-sublist"
|
||||||
data-cy="k8sSidebar-setup"
|
data-cy="k8sSidebar-setup"
|
||||||
|
|
|
@ -1007,7 +1007,7 @@
|
||||||
</p>
|
</p>
|
||||||
<p ng-if="ctrl.isAdmin">
|
<p ng-if="ctrl.isAdmin">
|
||||||
Server metrics features must be enabled in the
|
Server metrics features must be enabled in the
|
||||||
<a ui-sref="portainer.endpoints.endpoint.kubernetesConfig({id: ctrl.endpoint.Id})" class="ctrl.isAdmin">environment configuration view</a>.
|
<a ui-sref="portainer.k8sendpoint.kubernetesConfig({id: ctrl.endpoint.Id})" class="ctrl.isAdmin">environment configuration view</a>.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
<kubernetes-view-header title="Kubernetes features configuration" state="portainer.endpoints.endpoint.kubernetesConfig" view-ready="ctrl.state.viewReady">
|
<kubernetes-view-header title="Kubernetes features configuration" state="portainer.k8sendpoint.kubernetesConfig" view-ready="ctrl.state.viewReady">
|
||||||
<a ui-sref="portainer.endpoints">Environment</a> > <a ui-sref="portainer.endpoints.endpoint({id: ctrl.endpoint.Id})">{{ ctrl.endpoint.Name }}</a> > Kubernetes configuration
|
<a ui-sref="portainer.endpoints">Environment</a> > <a ui-sref="portainer.endpoints.endpoint({id: ctrl.endpoint.Id})">{{ ctrl.endpoint.Name }}</a> > Kubernetes configuration
|
||||||
</kubernetes-view-header>
|
</kubernetes-view-header>
|
||||||
|
|
||||||
|
|
|
@ -210,8 +210,8 @@
|
||||||
<div class="form-group" ng-if="$ctrl.formValues.IngressClasses.length === 0">
|
<div class="form-group" ng-if="$ctrl.formValues.IngressClasses.length === 0">
|
||||||
<div class="col-sm-12 small text-muted">
|
<div class="col-sm-12 small text-muted">
|
||||||
The ingress feature must be enabled in the
|
The ingress feature must be enabled in the
|
||||||
<a ui-sref="portainer.endpoints.endpoint.kubernetesConfig({id: $ctrl.endpoint.Id})">environment configuration view</a> to be able to register ingresses inside
|
<a ui-sref="portainer.k8sendpoint.kubernetesConfig({id: $ctrl.endpoint.Id})">environment configuration view</a> to be able to register ingresses inside this
|
||||||
this namespace.
|
namespace.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -164,8 +164,8 @@
|
||||||
<div class="form-group" ng-if="ctrl.formValues.IngressClasses.length === 0">
|
<div class="form-group" ng-if="ctrl.formValues.IngressClasses.length === 0">
|
||||||
<div class="col-sm-12 small text-muted">
|
<div class="col-sm-12 small text-muted">
|
||||||
The ingress feature must be enabled in the
|
The ingress feature must be enabled in the
|
||||||
<a ui-sref="portainer.endpoints.endpoint.kubernetesConfig({id: ctrl.endpoint.Id})">environment configuration view</a> to be able to register ingresses inside
|
<a ui-sref="portainer.k8sendpoint.kubernetesConfig({id: ctrl.endpoint.Id})">environment configuration view</a> to be able to register ingresses inside this
|
||||||
this namespace.
|
namespace.
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
@ -21,436 +21,444 @@ async function initAuthentication(authManager, Authentication, $rootScope, $stat
|
||||||
return await Authentication.init();
|
return await Authentication.init();
|
||||||
}
|
}
|
||||||
|
|
||||||
angular.module('portainer.app', ['portainer.oauth', 'portainer.rbac', componentsModule, settingsModule, featureFlagModule, userActivityModule, 'portainer.shared.datatable']).config([
|
angular
|
||||||
'$stateRegistryProvider',
|
.module('portainer.app', ['portainer.oauth', 'portainer.rbac', componentsModule, settingsModule, featureFlagModule, userActivityModule, 'portainer.shared.datatable'])
|
||||||
function ($stateRegistryProvider) {
|
.config([
|
||||||
'use strict';
|
'$stateRegistryProvider',
|
||||||
|
function ($stateRegistryProvider) {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
var root = {
|
var root = {
|
||||||
name: 'root',
|
name: 'root',
|
||||||
abstract: true,
|
abstract: true,
|
||||||
onEnter: /* @ngInject */ function onEnter($async, StateManager, Authentication, Notifications, authManager, $rootScope, $state) {
|
onEnter: /* @ngInject */ function onEnter($async, StateManager, Authentication, Notifications, authManager, $rootScope, $state) {
|
||||||
return $async(async () => {
|
|
||||||
const appState = StateManager.getState();
|
|
||||||
if (!appState.loading) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
const loggedIn = await initAuthentication(authManager, Authentication, $rootScope, $state);
|
|
||||||
await StateManager.initialize();
|
|
||||||
if (!loggedIn && isTransitionRequiresAuthentication($state.transition)) {
|
|
||||||
$state.go('portainer.logout');
|
|
||||||
return Promise.reject('Unauthenticated');
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
Notifications.error('Failure', err, 'Unable to retrieve application settings');
|
|
||||||
throw err;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
views: {
|
|
||||||
'sidebar@': {
|
|
||||||
templateUrl: './views/sidebar/sidebar.html',
|
|
||||||
controller: 'SidebarController',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
resolve: {
|
|
||||||
featuresServiceInitialized: /* @ngInject */ function featuresServiceInitialized($async, featureService, Notifications) {
|
|
||||||
return $async(async () => {
|
return $async(async () => {
|
||||||
try {
|
const appState = StateManager.getState();
|
||||||
await featureService.init();
|
if (!appState.loading) {
|
||||||
} catch (e) {
|
|
||||||
Notifications.error('Failed initializing features service', e);
|
|
||||||
throw e;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
var endpointRoot = {
|
|
||||||
name: 'endpoint',
|
|
||||||
url: '/:endpointId',
|
|
||||||
parent: 'root',
|
|
||||||
abstract: true,
|
|
||||||
resolve: {
|
|
||||||
endpoint: /* @ngInject */ function endpoint($async, $state, $transition$, EndpointService, Notifications) {
|
|
||||||
return $async(async () => {
|
|
||||||
try {
|
|
||||||
const endpointId = +$transition$.params().endpointId;
|
|
||||||
|
|
||||||
const endpoint = await EndpointService.endpoint(endpointId);
|
|
||||||
if ((endpoint.Type === 4 || endpoint.Type === 7) && !endpoint.EdgeID) {
|
|
||||||
$state.go('portainer.endpoints.endpoint', { id: endpoint.Id });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
return endpoint;
|
|
||||||
} catch (e) {
|
|
||||||
Notifications.error('Failed loading environment', e);
|
|
||||||
$state.go('portainer.home', {}, { reload: true });
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
|
const loggedIn = await initAuthentication(authManager, Authentication, $rootScope, $state);
|
||||||
|
await StateManager.initialize();
|
||||||
|
if (!loggedIn && isTransitionRequiresAuthentication($state.transition)) {
|
||||||
|
$state.go('portainer.logout');
|
||||||
|
return Promise.reject('Unauthenticated');
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
Notifications.error('Failure', err, 'Unable to retrieve application settings');
|
||||||
|
throw err;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
views: {
|
||||||
};
|
'sidebar@': {
|
||||||
|
templateUrl: './views/sidebar/sidebar.html',
|
||||||
var portainer = {
|
controller: 'SidebarController',
|
||||||
name: 'portainer',
|
},
|
||||||
parent: 'root',
|
|
||||||
abstract: true,
|
|
||||||
};
|
|
||||||
|
|
||||||
var account = {
|
|
||||||
name: 'portainer.account',
|
|
||||||
url: '/account',
|
|
||||||
views: {
|
|
||||||
'content@': {
|
|
||||||
templateUrl: './views/account/account.html',
|
|
||||||
controller: 'AccountController',
|
|
||||||
},
|
},
|
||||||
},
|
resolve: {
|
||||||
};
|
featuresServiceInitialized: /* @ngInject */ function featuresServiceInitialized($async, featureService, Notifications) {
|
||||||
|
return $async(async () => {
|
||||||
var authentication = {
|
try {
|
||||||
name: 'portainer.auth',
|
await featureService.init();
|
||||||
url: '/auth',
|
} catch (e) {
|
||||||
params: {
|
Notifications.error('Failed initializing features service', e);
|
||||||
reload: false,
|
throw e;
|
||||||
},
|
}
|
||||||
views: {
|
});
|
||||||
'content@': {
|
},
|
||||||
templateUrl: './views/auth/auth.html',
|
|
||||||
controller: 'AuthenticationController',
|
|
||||||
controllerAs: 'ctrl',
|
|
||||||
},
|
},
|
||||||
'sidebar@': {},
|
};
|
||||||
},
|
|
||||||
};
|
var endpointRoot = {
|
||||||
const logout = {
|
name: 'endpoint',
|
||||||
name: 'portainer.logout',
|
url: '/:endpointId',
|
||||||
url: '/logout',
|
parent: 'root',
|
||||||
params: {
|
abstract: true,
|
||||||
error: '',
|
resolve: {
|
||||||
performApiLogout: false,
|
endpoint: /* @ngInject */ function endpoint($async, $state, $transition$, EndpointService, Notifications) {
|
||||||
},
|
return $async(async () => {
|
||||||
views: {
|
try {
|
||||||
'content@': {
|
const endpointId = +$transition$.params().endpointId;
|
||||||
templateUrl: './views/logout/logout.html',
|
|
||||||
controller: 'LogoutController',
|
const endpoint = await EndpointService.endpoint(endpointId);
|
||||||
controllerAs: 'ctrl',
|
if ((endpoint.Type === 4 || endpoint.Type === 7) && !endpoint.EdgeID) {
|
||||||
|
$state.go('portainer.endpoints.endpoint', { id: endpoint.Id });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return endpoint;
|
||||||
|
} catch (e) {
|
||||||
|
Notifications.error('Failed loading environment', e);
|
||||||
|
$state.go('portainer.home', {}, { reload: true });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
},
|
},
|
||||||
'sidebar@': {},
|
};
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
var endpoints = {
|
var portainer = {
|
||||||
name: 'portainer.endpoints',
|
name: 'portainer',
|
||||||
url: '/endpoints',
|
parent: 'root',
|
||||||
views: {
|
abstract: true,
|
||||||
'content@': {
|
};
|
||||||
templateUrl: './views/endpoints/endpoints.html',
|
|
||||||
controller: 'EndpointsController',
|
var account = {
|
||||||
|
name: 'portainer.account',
|
||||||
|
url: '/account',
|
||||||
|
views: {
|
||||||
|
'content@': {
|
||||||
|
templateUrl: './views/account/account.html',
|
||||||
|
controller: 'AccountController',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var endpoint = {
|
var authentication = {
|
||||||
name: 'portainer.endpoints.endpoint',
|
name: 'portainer.auth',
|
||||||
url: '/:id',
|
url: '/auth',
|
||||||
views: {
|
params: {
|
||||||
'content@': {
|
reload: false,
|
||||||
templateUrl: './views/endpoints/edit/endpoint.html',
|
|
||||||
controller: 'EndpointController',
|
|
||||||
},
|
},
|
||||||
},
|
views: {
|
||||||
};
|
'content@': {
|
||||||
|
templateUrl: './views/auth/auth.html',
|
||||||
const endpointKubernetesConfiguration = {
|
controller: 'AuthenticationController',
|
||||||
name: 'portainer.endpoints.endpoint.kubernetesConfig',
|
controllerAs: 'ctrl',
|
||||||
url: '/configure',
|
},
|
||||||
views: {
|
'sidebar@': {},
|
||||||
'content@': {
|
|
||||||
templateUrl: '../kubernetes/views/configure/configure.html',
|
|
||||||
controller: 'KubernetesConfigureController',
|
|
||||||
controllerAs: 'ctrl',
|
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
const logout = {
|
||||||
|
name: 'portainer.logout',
|
||||||
var endpointCreation = {
|
url: '/logout',
|
||||||
name: 'portainer.endpoints.new',
|
params: {
|
||||||
url: '/new',
|
error: '',
|
||||||
views: {
|
performApiLogout: false,
|
||||||
'content@': {
|
|
||||||
templateUrl: './views/endpoints/create/createendpoint.html',
|
|
||||||
controller: 'CreateEndpointController',
|
|
||||||
},
|
},
|
||||||
},
|
views: {
|
||||||
};
|
'content@': {
|
||||||
|
templateUrl: './views/logout/logout.html',
|
||||||
var endpointAccess = {
|
controller: 'LogoutController',
|
||||||
name: 'portainer.endpoints.endpoint.access',
|
controllerAs: 'ctrl',
|
||||||
url: '/access',
|
},
|
||||||
views: {
|
'sidebar@': {},
|
||||||
'content@': {
|
|
||||||
templateUrl: './views/endpoints/access/endpointAccess.html',
|
|
||||||
controller: 'EndpointAccessController',
|
|
||||||
controllerAs: 'ctrl',
|
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var groups = {
|
var endpoints = {
|
||||||
name: 'portainer.groups',
|
name: 'portainer.endpoints',
|
||||||
url: '/groups',
|
url: '/endpoints',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/groups/groups.html',
|
templateUrl: './views/endpoints/endpoints.html',
|
||||||
controller: 'GroupsController',
|
controller: 'EndpointsController',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var group = {
|
var endpoint = {
|
||||||
name: 'portainer.groups.group',
|
name: 'portainer.endpoints.endpoint',
|
||||||
url: '/:id',
|
url: '/:id',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/groups/edit/group.html',
|
templateUrl: './views/endpoints/edit/endpoint.html',
|
||||||
controller: 'GroupController',
|
controller: 'EndpointController',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var groupCreation = {
|
var k8sendpoint = {
|
||||||
name: 'portainer.groups.new',
|
name: 'portainer.k8sendpoint',
|
||||||
url: '/new',
|
url: '/:id',
|
||||||
views: {
|
};
|
||||||
'content@': {
|
|
||||||
templateUrl: './views/groups/create/creategroup.html',
|
const endpointKubernetesConfiguration = {
|
||||||
controller: 'CreateGroupController',
|
name: 'portainer.k8sendpoint.kubernetesConfig',
|
||||||
|
url: '/configure',
|
||||||
|
views: {
|
||||||
|
'content@': {
|
||||||
|
templateUrl: '../kubernetes/views/configure/configure.html',
|
||||||
|
controller: 'KubernetesConfigureController',
|
||||||
|
controllerAs: 'ctrl',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var groupAccess = {
|
var endpointCreation = {
|
||||||
name: 'portainer.groups.group.access',
|
name: 'portainer.endpoints.new',
|
||||||
url: '/access',
|
url: '/new',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/groups/access/groupAccess.html',
|
templateUrl: './views/endpoints/create/createendpoint.html',
|
||||||
controller: 'GroupAccessController',
|
controller: 'CreateEndpointController',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var home = {
|
var endpointAccess = {
|
||||||
name: 'portainer.home',
|
name: 'portainer.endpoints.endpoint.access',
|
||||||
url: '/home',
|
url: '/access',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/home/home.html',
|
templateUrl: './views/endpoints/access/endpointAccess.html',
|
||||||
controller: 'HomeController',
|
controller: 'EndpointAccessController',
|
||||||
|
controllerAs: 'ctrl',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var init = {
|
var groups = {
|
||||||
name: 'portainer.init',
|
name: 'portainer.groups',
|
||||||
abstract: true,
|
url: '/groups',
|
||||||
url: '/init',
|
views: {
|
||||||
views: {
|
'content@': {
|
||||||
'sidebar@': {},
|
templateUrl: './views/groups/groups.html',
|
||||||
},
|
controller: 'GroupsController',
|
||||||
};
|
},
|
||||||
|
|
||||||
const wizard = {
|
|
||||||
name: 'portainer.wizard',
|
|
||||||
url: '/wizard',
|
|
||||||
views: {
|
|
||||||
'content@': {
|
|
||||||
component: 'wizardView',
|
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
const wizardEndpoints = {
|
var group = {
|
||||||
name: 'portainer.wizard.endpoints',
|
name: 'portainer.groups.group',
|
||||||
url: '/endpoints',
|
url: '/:id',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
component: 'wizardEndpoints',
|
templateUrl: './views/groups/edit/group.html',
|
||||||
|
controller: 'GroupController',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var initEndpoint = {
|
var groupCreation = {
|
||||||
name: 'portainer.init.endpoint',
|
name: 'portainer.groups.new',
|
||||||
url: '/endpoint',
|
url: '/new',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/init/endpoint/initEndpoint.html',
|
templateUrl: './views/groups/create/creategroup.html',
|
||||||
controller: 'InitEndpointController',
|
controller: 'CreateGroupController',
|
||||||
controllerAs: 'ctrl',
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var initAdmin = {
|
var groupAccess = {
|
||||||
name: 'portainer.init.admin',
|
name: 'portainer.groups.group.access',
|
||||||
url: '/admin',
|
url: '/access',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/init/admin/initAdmin.html',
|
templateUrl: './views/groups/access/groupAccess.html',
|
||||||
controller: 'InitAdminController',
|
controller: 'GroupAccessController',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var registries = {
|
var home = {
|
||||||
name: 'portainer.registries',
|
name: 'portainer.home',
|
||||||
url: '/registries',
|
url: '/home',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/registries/registries.html',
|
templateUrl: './views/home/home.html',
|
||||||
controller: 'RegistriesController',
|
controller: 'HomeController',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var registry = {
|
var init = {
|
||||||
name: 'portainer.registries.registry',
|
name: 'portainer.init',
|
||||||
url: '/:id',
|
abstract: true,
|
||||||
views: {
|
url: '/init',
|
||||||
'content@': {
|
views: {
|
||||||
templateUrl: './views/registries/edit/registry.html',
|
'sidebar@': {},
|
||||||
controller: 'RegistryController',
|
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
const registryCreation = {
|
const wizard = {
|
||||||
name: 'portainer.registries.new',
|
name: 'portainer.wizard',
|
||||||
url: '/new',
|
url: '/wizard',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
component: 'createRegistry',
|
component: 'wizardView',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var settings = {
|
const wizardEndpoints = {
|
||||||
name: 'portainer.settings',
|
name: 'portainer.wizard.endpoints',
|
||||||
url: '/settings',
|
url: '/endpoints',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/settings/settings.html',
|
component: 'wizardEndpoints',
|
||||||
controller: 'SettingsController',
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var settingsAuthentication = {
|
var initEndpoint = {
|
||||||
name: 'portainer.settings.authentication',
|
name: 'portainer.init.endpoint',
|
||||||
url: '/auth',
|
url: '/endpoint',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/settings/authentication/settingsAuthentication.html',
|
templateUrl: './views/init/endpoint/initEndpoint.html',
|
||||||
controller: 'SettingsAuthenticationController',
|
controller: 'InitEndpointController',
|
||||||
|
controllerAs: 'ctrl',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var tags = {
|
var initAdmin = {
|
||||||
name: 'portainer.tags',
|
name: 'portainer.init.admin',
|
||||||
url: '/tags',
|
url: '/admin',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/tags/tags.html',
|
templateUrl: './views/init/admin/initAdmin.html',
|
||||||
controller: 'TagsController',
|
controller: 'InitAdminController',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var users = {
|
var registries = {
|
||||||
name: 'portainer.users',
|
name: 'portainer.registries',
|
||||||
url: '/users',
|
url: '/registries',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/users/users.html',
|
templateUrl: './views/registries/registries.html',
|
||||||
controller: 'UsersController',
|
controller: 'RegistriesController',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var user = {
|
var registry = {
|
||||||
name: 'portainer.users.user',
|
name: 'portainer.registries.registry',
|
||||||
url: '/:id',
|
url: '/:id',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/users/edit/user.html',
|
templateUrl: './views/registries/edit/registry.html',
|
||||||
controller: 'UserController',
|
controller: 'RegistryController',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var teams = {
|
const registryCreation = {
|
||||||
name: 'portainer.teams',
|
name: 'portainer.registries.new',
|
||||||
url: '/teams',
|
url: '/new',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/teams/teams.html',
|
component: 'createRegistry',
|
||||||
controller: 'TeamsController',
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
var team = {
|
var settings = {
|
||||||
name: 'portainer.teams.team',
|
name: 'portainer.settings',
|
||||||
url: '/:id',
|
url: '/settings',
|
||||||
views: {
|
views: {
|
||||||
'content@': {
|
'content@': {
|
||||||
templateUrl: './views/teams/edit/team.html',
|
templateUrl: './views/settings/settings.html',
|
||||||
controller: 'TeamController',
|
controller: 'SettingsController',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
},
|
};
|
||||||
};
|
|
||||||
|
|
||||||
$stateRegistryProvider.register(root);
|
var settingsAuthentication = {
|
||||||
$stateRegistryProvider.register(endpointRoot);
|
name: 'portainer.settings.authentication',
|
||||||
$stateRegistryProvider.register(portainer);
|
url: '/auth',
|
||||||
$stateRegistryProvider.register(account);
|
views: {
|
||||||
$stateRegistryProvider.register(authentication);
|
'content@': {
|
||||||
$stateRegistryProvider.register(logout);
|
templateUrl: './views/settings/authentication/settingsAuthentication.html',
|
||||||
$stateRegistryProvider.register(endpoints);
|
controller: 'SettingsAuthenticationController',
|
||||||
$stateRegistryProvider.register(endpoint);
|
},
|
||||||
$stateRegistryProvider.register(endpointAccess);
|
},
|
||||||
$stateRegistryProvider.register(endpointCreation);
|
};
|
||||||
$stateRegistryProvider.register(endpointKubernetesConfiguration);
|
|
||||||
$stateRegistryProvider.register(groups);
|
var tags = {
|
||||||
$stateRegistryProvider.register(group);
|
name: 'portainer.tags',
|
||||||
$stateRegistryProvider.register(groupAccess);
|
url: '/tags',
|
||||||
$stateRegistryProvider.register(groupCreation);
|
views: {
|
||||||
$stateRegistryProvider.register(home);
|
'content@': {
|
||||||
$stateRegistryProvider.register(init);
|
templateUrl: './views/tags/tags.html',
|
||||||
$stateRegistryProvider.register(wizard);
|
controller: 'TagsController',
|
||||||
$stateRegistryProvider.register(wizardEndpoints);
|
},
|
||||||
$stateRegistryProvider.register(initEndpoint);
|
},
|
||||||
$stateRegistryProvider.register(initAdmin);
|
};
|
||||||
$stateRegistryProvider.register(registries);
|
|
||||||
$stateRegistryProvider.register(registry);
|
var users = {
|
||||||
$stateRegistryProvider.register(registryCreation);
|
name: 'portainer.users',
|
||||||
$stateRegistryProvider.register(settings);
|
url: '/users',
|
||||||
$stateRegistryProvider.register(settingsAuthentication);
|
views: {
|
||||||
$stateRegistryProvider.register(tags);
|
'content@': {
|
||||||
$stateRegistryProvider.register(users);
|
templateUrl: './views/users/users.html',
|
||||||
$stateRegistryProvider.register(user);
|
controller: 'UsersController',
|
||||||
$stateRegistryProvider.register(teams);
|
},
|
||||||
$stateRegistryProvider.register(team);
|
},
|
||||||
},
|
};
|
||||||
]);
|
|
||||||
|
var user = {
|
||||||
|
name: 'portainer.users.user',
|
||||||
|
url: '/:id',
|
||||||
|
views: {
|
||||||
|
'content@': {
|
||||||
|
templateUrl: './views/users/edit/user.html',
|
||||||
|
controller: 'UserController',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
var teams = {
|
||||||
|
name: 'portainer.teams',
|
||||||
|
url: '/teams',
|
||||||
|
views: {
|
||||||
|
'content@': {
|
||||||
|
templateUrl: './views/teams/teams.html',
|
||||||
|
controller: 'TeamsController',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
var team = {
|
||||||
|
name: 'portainer.teams.team',
|
||||||
|
url: '/:id',
|
||||||
|
views: {
|
||||||
|
'content@': {
|
||||||
|
templateUrl: './views/teams/edit/team.html',
|
||||||
|
controller: 'TeamController',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
$stateRegistryProvider.register(root);
|
||||||
|
$stateRegistryProvider.register(endpointRoot);
|
||||||
|
$stateRegistryProvider.register(portainer);
|
||||||
|
$stateRegistryProvider.register(account);
|
||||||
|
$stateRegistryProvider.register(authentication);
|
||||||
|
$stateRegistryProvider.register(logout);
|
||||||
|
$stateRegistryProvider.register(endpoints);
|
||||||
|
$stateRegistryProvider.register(endpoint);
|
||||||
|
$stateRegistryProvider.register(k8sendpoint);
|
||||||
|
$stateRegistryProvider.register(endpointAccess);
|
||||||
|
$stateRegistryProvider.register(endpointCreation);
|
||||||
|
$stateRegistryProvider.register(endpointKubernetesConfiguration);
|
||||||
|
$stateRegistryProvider.register(groups);
|
||||||
|
$stateRegistryProvider.register(group);
|
||||||
|
$stateRegistryProvider.register(groupAccess);
|
||||||
|
$stateRegistryProvider.register(groupCreation);
|
||||||
|
$stateRegistryProvider.register(home);
|
||||||
|
$stateRegistryProvider.register(init);
|
||||||
|
$stateRegistryProvider.register(wizard);
|
||||||
|
$stateRegistryProvider.register(wizardEndpoints);
|
||||||
|
$stateRegistryProvider.register(initEndpoint);
|
||||||
|
$stateRegistryProvider.register(initAdmin);
|
||||||
|
$stateRegistryProvider.register(registries);
|
||||||
|
$stateRegistryProvider.register(registry);
|
||||||
|
$stateRegistryProvider.register(registryCreation);
|
||||||
|
$stateRegistryProvider.register(settings);
|
||||||
|
$stateRegistryProvider.register(settingsAuthentication);
|
||||||
|
$stateRegistryProvider.register(tags);
|
||||||
|
$stateRegistryProvider.register(users);
|
||||||
|
$stateRegistryProvider.register(user);
|
||||||
|
$stateRegistryProvider.register(teams);
|
||||||
|
$stateRegistryProvider.register(team);
|
||||||
|
},
|
||||||
|
]);
|
||||||
|
|
||||||
function isTransitionRequiresAuthentication(transition) {
|
function isTransitionRequiresAuthentication(transition) {
|
||||||
const UNAUTHENTICATED_ROUTES = ['portainer.logout', 'portainer.auth'];
|
const UNAUTHENTICATED_ROUTES = ['portainer.logout', 'portainer.auth'];
|
||||||
|
|
|
@ -164,7 +164,7 @@ angular
|
||||||
EndpointService.createLocalKubernetesEndpoint(name, tagIds)
|
EndpointService.createLocalKubernetesEndpoint(name, tagIds)
|
||||||
.then(function success(result) {
|
.then(function success(result) {
|
||||||
Notifications.success('Environment created', name);
|
Notifications.success('Environment created', name);
|
||||||
$state.go('portainer.endpoints.endpoint.kubernetesConfig', { id: result.Id });
|
$state.go('portainer.k8sendpoint.kubernetesConfig', { id: result.Id });
|
||||||
})
|
})
|
||||||
.catch(function error(err) {
|
.catch(function error(err) {
|
||||||
Notifications.error('Failure', err, 'Unable to create environment');
|
Notifications.error('Failure', err, 'Unable to create environment');
|
||||||
|
@ -263,7 +263,7 @@ angular
|
||||||
$state.go('portainer.endpoints.endpoint', { id: endpoint.Id });
|
$state.go('portainer.endpoints.endpoint', { id: endpoint.Id });
|
||||||
break;
|
break;
|
||||||
case PortainerEndpointTypes.AgentOnKubernetesEnvironment:
|
case PortainerEndpointTypes.AgentOnKubernetesEnvironment:
|
||||||
$state.go('portainer.endpoints.endpoint.kubernetesConfig', { id: endpoint.Id });
|
$state.go('portainer.k8sendpoint.kubernetesConfig', { id: endpoint.Id });
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$state.go('portainer.endpoints', {}, { reload: true });
|
$state.go('portainer.endpoints', {}, { reload: true });
|
||||||
|
|
|
@ -104,7 +104,7 @@
|
||||||
<span class="small text-muted">
|
<span class="small text-muted">
|
||||||
<i class="fa fa-tools blue-icon" aria-hidden="true" style="margin-right: 2px;"></i>
|
<i class="fa fa-tools blue-icon" aria-hidden="true" style="margin-right: 2px;"></i>
|
||||||
You should configure the features available in this Kubernetes environment in the
|
You should configure the features available in this Kubernetes environment in the
|
||||||
<a ui-sref="portainer.endpoints.endpoint.kubernetesConfig({id: endpoint.Id})">Kubernetes configuration</a> view.
|
<a ui-sref="portainer.k8sendpoint.kubernetesConfig({id: endpoint.Id})">Kubernetes configuration</a> view.
|
||||||
</span>
|
</span>
|
||||||
</information-panel>
|
</information-panel>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -95,7 +95,7 @@ class InitEndpointController {
|
||||||
try {
|
try {
|
||||||
this.state.actionInProgress = true;
|
this.state.actionInProgress = true;
|
||||||
const endpoint = await this.EndpointService.createLocalKubernetesEndpoint();
|
const endpoint = await this.EndpointService.createLocalKubernetesEndpoint();
|
||||||
this.$state.go('portainer.endpoints.endpoint.kubernetesConfig', { id: endpoint.Id });
|
this.$state.go('portainer.k8sendpoint.kubernetesConfig', { id: endpoint.Id });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.Notifications.error('Failure', err, 'Unable to connect to the Kubernetes environment');
|
this.Notifications.error('Failure', err, 'Unable to connect to the Kubernetes environment');
|
||||||
} finally {
|
} finally {
|
||||||
|
@ -131,7 +131,7 @@ class InitEndpointController {
|
||||||
null,
|
null,
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
const routeName = endpoint.Type === PortainerEndpointTypes.AgentOnKubernetesEnvironment ? 'portainer.endpoints.endpoint.kubernetesConfig' : 'portainer.home';
|
const routeName = endpoint.Type === PortainerEndpointTypes.AgentOnKubernetesEnvironment ? 'portainer.k8sendpoint.kubernetesConfig' : 'portainer.home';
|
||||||
this.$state.go(routeName, { id: endpoint.Id });
|
this.$state.go(routeName, { id: endpoint.Id });
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
this.Notifications.error('Failure', err, 'Unable to connect to the Docker environment');
|
this.Notifications.error('Failure', err, 'Unable to connect to the Docker environment');
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue