Skip to content

Commit fc51579

Browse files
committed
backend: add kubernetes clusterrole resource support
1 parent 7888b88 commit fc51579

File tree

8 files changed

+197
-1
lines changed

8 files changed

+197
-1
lines changed

src/frontend/src/app/admin/admin-routing.module.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ import { KubeHpaComponent } from './kubernetes/hpa/kube-hpa.component';
8585
import { KubeRoleComponent } from './kubernetes/role/kube-role.component';
8686
import { KubeRolebindingComponent } from './kubernetes/rolebinding/kube-rolebinding.component';
8787
import { KubeServiceaccountComponent } from './kubernetes/serviceaccount/kube-serviceaccount.component';
88+
import { KubeClusterroleComponent } from './kubernetes/clusterrole/kube-clusterrole.component';
8889

8990

9091
const routes: Routes = [
@@ -199,6 +200,8 @@ const routes: Routes = [
199200
{path: 'kubernetes/rolebinding/:cluster', component: KubeRolebindingComponent},
200201
{path: 'kubernetes/serviceaccount', component: KubeServiceaccountComponent},
201202
{path: 'kubernetes/serviceaccount/:cluster', component: KubeServiceaccountComponent},
203+
{path: 'kubernetes/clusterrole', component: KubeClusterroleComponent},
204+
{path: 'kubernetes/clusterrole/:cluster', component: KubeClusterroleComponent},
202205
...ADMINROUTES
203206
]
204207
}

src/frontend/src/app/admin/admin.module.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ import { KubeHpaModule } from './kubernetes/hpa/kube-hpa.module';
6565
import { KubeRoleModule } from './kubernetes/role/kube-role.module';
6666
import { KubeRolebindingModule } from './kubernetes/rolebinding/kube-rolebinding.module';
6767
import { KubeServiceaccountModule } from './kubernetes/serviceaccount/kube-serviceaccount.module';
68+
import { KubeClusterroleModule } from './kubernetes/clusterrole/kube-clusterrole.module';
6869

6970
@NgModule({
7071
imports: [
@@ -123,7 +124,8 @@ import { KubeServiceaccountModule } from './kubernetes/serviceaccount/kube-servi
123124
KubeHpaModule,
124125
KubeRoleModule,
125126
KubeRolebindingModule,
126-
KubeServiceaccountModule
127+
KubeServiceaccountModule,
128+
KubeClusterroleModule
127129
],
128130
providers: [
129131
AdminAuthCheckGuard,
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<div class="clr-row">
2+
<div class="clr-col-lg-12 clr-col-md-12 clr-col-sm-12 clr-col-xs-12">
3+
<div class="table-search">
4+
<div class="table-search-left">
5+
<button class="wayne-button normal" (click)="createResource()">
6+
{{'ADMIN.KUBERNETES.CLUSTERROLE.CREATE' | translate}}
7+
</button>
8+
<button class="wayne-button normal" (click)="retrieveResource()">
9+
{{'ADMIN.KUBERNETES.ACTION.REFRESH' | translate}}
10+
</button>
11+
<wayne-filter-box (confirm)="onConfirmEvent()" (cancel)="onCancelEvent()">
12+
<wayne-checkbox-group [(ngModel)]="showList">
13+
<wayne-checkbox value="name">{{'ADMIN.KUBERNETES.CLUSTERROLE.LIST.NAME' | translate}}</wayne-checkbox>
14+
<wayne-checkbox value="label">{{'ADMIN.KUBERNETES.CLUSTERROLE.LIST.LABEL' | translate}}</wayne-checkbox>
15+
<wayne-checkbox value="age">{{'ADMIN.KUBERNETES.CLUSTERROLE.LIST.AGE' | translate}}</wayne-checkbox>
16+
</wayne-checkbox-group>
17+
</wayne-filter-box>
18+
</div>
19+
</div>
20+
21+
<wayne-list-clusterrole
22+
[resources]="resources"
23+
[showState]="showState"
24+
(delete)="onDeleteResourceEvent($event)"
25+
(edit)="onEditResourceEvent($event)"
26+
[page]="pageState.page"
27+
[cluster]="cluster"
28+
(paginate)="retrieveResource($event)">
29+
</wayne-list-clusterrole>
30+
</div>
31+
</div>
32+
<deletion-dialog (outputObj)="confirmDeleteEvent($event)"></deletion-dialog>
33+
<wayne-ace-editor (createOutputObj)="onCreateResourceEvent($event)" (outputObj)="onSaveResourceEvent($event)"></wayne-ace-editor>
34+
<wayne-float-window value="{{ cluster }}">
35+
<wayne-float-window-item *ngFor="let cluster of clusters" [value]="cluster"
36+
(click)="jumpToHref(cluster)"></wayne-float-window-item>
37+
</wayne-float-window>
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';
2+
import { ActivatedRoute, Router } from '@angular/router';
3+
import { MessageHandlerService } from '../../../shared/message-handler/message-handler.service';
4+
import { ClusterService } from '../../../shared/client/v1/cluster.service';
5+
import { AuthService } from '../../../shared/auth/auth.service';
6+
import { AceEditorComponent } from '../../../shared/ace-editor/ace-editor.component';
7+
import { KubernetesClient } from '../../../shared/client/v1/kubernetes/kubernetes';
8+
import { KubeResourceClusterRole } from '../../../shared/shared.const';
9+
import { DeletionDialogComponent } from '../../../shared/deletion-dialog/deletion-dialog.component';
10+
import { KubernetesUnNamespacedResource } from '../../../shared/base/kubernetes-namespaced/kubernetes-unnamespaced-resource';
11+
import { ListClusterroleComponent } from './list-clusterrole/list-clusterrole.component';
12+
13+
const showState = {
14+
'name': {hidden: false},
15+
'label': {hidden: false},
16+
'age': {hidden: false},
17+
};
18+
19+
@Component({
20+
selector: 'wayne-kube-clusterrole',
21+
templateUrl: './kube-clusterrole.component.html'
22+
})
23+
24+
export class KubeClusterroleComponent extends KubernetesUnNamespacedResource implements OnInit, OnDestroy {
25+
@ViewChild(ListClusterroleComponent)
26+
listResourceComponent: ListClusterroleComponent;
27+
28+
@ViewChild(AceEditorComponent)
29+
aceEditorModal: AceEditorComponent;
30+
31+
@ViewChild(DeletionDialogComponent)
32+
deletionDialogComponent: DeletionDialogComponent;
33+
34+
constructor(public kubernetesClient: KubernetesClient,
35+
public route: ActivatedRoute,
36+
public router: Router,
37+
public clusterService: ClusterService,
38+
public authService: AuthService,
39+
public messageHandlerService: MessageHandlerService) {
40+
super(kubernetesClient, route, router, clusterService, authService, messageHandlerService);
41+
super.registResourceType('clusterrole');
42+
super.registKubeResource(KubeResourceClusterRole);
43+
super.registShowSate(showState);
44+
}
45+
46+
ngOnInit() {
47+
super.ngOnInit();
48+
}
49+
50+
ngOnDestroy(): void {
51+
super.ngOnDestroy();
52+
}
53+
54+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { NgModule } from '@angular/core';
2+
import { SharedModule } from '../../../shared/shared.module';
3+
import { ReactiveFormsModule } from '@angular/forms';
4+
import { KubeClusterroleComponent } from './kube-clusterrole.component';
5+
import { KubernetesClient } from '../../../shared/client/v1/kubernetes/kubernetes';
6+
import { DeletionDialogModule } from '../../../shared/deletion-dialog/deletion-dialog.module';
7+
import { ListClusterroleComponent } from './list-clusterrole/list-clusterrole.component';
8+
9+
@NgModule({
10+
imports: [
11+
SharedModule,
12+
ReactiveFormsModule,
13+
DeletionDialogModule
14+
],
15+
providers: [
16+
KubernetesClient
17+
],
18+
exports: [],
19+
declarations: [
20+
KubeClusterroleComponent,
21+
ListClusterroleComponent
22+
]
23+
})
24+
25+
export class KubeClusterroleModule {
26+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<clr-datagrid (clrDgRefresh)="refresh($event)">
2+
<clr-dg-column class="col-app-name" [clrDgField]="'name'">
3+
<ng-container *clrDgHideableColumn="showState['name']">
4+
{{'ADMIN.KUBERNETES.CLUSTERROLE.LIST.NAME' | translate}}
5+
</ng-container>
6+
</clr-dg-column>
7+
<clr-dg-column>
8+
<ng-container *clrDgHideableColumn="showState['label']">
9+
{{'ADMIN.KUBERNETES.CLUSTERROLE.LIST.LABEL' | translate}}
10+
</ng-container>
11+
</clr-dg-column>
12+
<clr-dg-column [clrDgField]="'creationTimestamp'">
13+
<ng-container *clrDgHideableColumn="showState['age']">
14+
{{'ADMIN.KUBERNETES.CLUSTERROLE.LIST.AGE' | translate}}
15+
</ng-container>
16+
</clr-dg-column>
17+
18+
19+
<clr-dg-row *ngFor="let obj of resources" [clrDgItem]="obj">
20+
<clr-dg-action-overflow>
21+
<button class="action-item" (click)="onEditEvent(obj)">{{'ADMIN.KUBERNETES.ACTION.EDIT' | translate}}</button>
22+
<button class="action-item" (click)="onDeleteEvent(obj)">{{'ADMIN.KUBERNETES.ACTION.DELETE' | translate}}</button>
23+
</clr-dg-action-overflow>
24+
<clr-dg-cell class="col-app-name"> {{ obj.metadata.name }} </clr-dg-cell>
25+
<clr-dg-cell>
26+
<div *ngFor="let label of obj.metadata.labels | keyvalue" class="version-text">
27+
<a href="javascript:" (click)="versionDetail(label.key + ': ' + label.value)">{{label.key}}: {{label.value}}</a>
28+
</div>
29+
</clr-dg-cell>
30+
<clr-dg-cell> {{ obj.metadata.creationTimestamp | relativeTime}} </clr-dg-cell>
31+
</clr-dg-row>
32+
<clr-dg-footer>
33+
<wayne-paginate
34+
[(currentPage)]="currentPage"
35+
[total]="page.totalCount"
36+
[pageSizes]="[10, 20, 50]"
37+
(sizeChange)="pageSizeChange($event)">
38+
</wayne-paginate>
39+
</clr-dg-footer>
40+
</clr-datagrid>
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { Component, Input } from '@angular/core';
2+
import { KubernetesListResource } from '../../../../shared/base/kubernetes-namespaced/kubernetes-list-resource';
3+
import { TplDetailService } from '../../../../shared/tpl-detail/tpl-detail.service';
4+
5+
@Component({
6+
selector: 'wayne-list-clusterrole',
7+
templateUrl: './list-clusterrole.component.html'
8+
})
9+
10+
export class ListClusterroleComponent extends KubernetesListResource {
11+
@Input() resources: any[];
12+
@Input() showState: object;
13+
14+
constructor(public tplDetailService: TplDetailService) {
15+
super(tplDetailService);
16+
}
17+
18+
}

src/frontend/src/assets/i18n/zh-Hans.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -790,6 +790,22 @@
790790
"AGE": "启动时间",
791791
"SECRET": "秘钥列表"
792792
}
793+
},
794+
"CLUSTERROLE": {
795+
"CREATE": "创建 ClusterRole",
796+
"LIST": {
797+
"NAME": "名称",
798+
"LABEL": "标签",
799+
"AGE": "启动时间"
800+
}
801+
},
802+
"CLUSTERROLEBINDING": {
803+
"CREATE": "创建 ClusterRoleBinding",
804+
"LIST": {
805+
"NAME": "名称",
806+
"LABEL": "标签",
807+
"AGE": "启动时间"
808+
}
793809
}
794810
}
795811
}

0 commit comments

Comments
 (0)