Skip to content

Commit

Permalink
Merge pull request #347 from wilhelmguo/feature/update_namespace_mode…
Browse files Browse the repository at this point in the history
…l_add_kubenamespace_field

Update namespace model add kubenamespace field
  • Loading branch information
wilhelmguo authored Mar 12, 2019
2 parents a52fe84 + a91b1e1 commit ed9d32a
Show file tree
Hide file tree
Showing 18 changed files with 49 additions and 48 deletions.
4 changes: 2 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,5 @@ matrix:
- cd src/frontend && npm install
script:
- # npm run test Wayne 前端测试尚未编排
- npm run build
- npm run lint
- travis_wait 30 npm run build
- travis_wait 30 npm run lint
2 changes: 1 addition & 1 deletion src/backend/controllers/common/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ func DeploymentPreDeploy(kubeDeployment *v1beta1.Deployment, deploy *models.Depl
kubeDeployment.Spec.Template.Spec.Containers[i].SecurityContext.Privileged = privileged
}
// step 5 set namespace
kubeDeployment.Namespace = namespace.MetaDataObj.Namespace
kubeDeployment.Namespace = namespace.KubeNamespace

// step 6
if kubeDeployment.Spec.Template.Annotations == nil {
Expand Down
2 changes: 1 addition & 1 deletion src/backend/controllers/kubernetes/cronjob/cronjob.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ func (c *KubeCronjobController) Suspend() {
defer models.PublishHistoryModel.Add(publishHistory)

// 更新Suspend状态为挂起
err = cronjob.SuspendCronjob(cli, cronjobModel.Name, namespaceModel.MetaDataObj.Namespace)
err = cronjob.SuspendCronjob(cli, cronjobModel.Name, namespaceModel.KubeNamespace)

if err != nil {
publishHistory.Status = models.ReleaseFailure
Expand Down
2 changes: 1 addition & 1 deletion src/backend/controllers/kubernetes/cronjob/pre_deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ func cronjobPreDeploy(kubeCronJob *batchv1beta1.CronJob, cronjob *models.Cronjob
kubeCronJob.Spec.JobTemplate.Spec.Template.Spec.Containers[i].SecurityContext.Privileged = privileged
}
// step 5 set namespace
kubeCronJob.Namespace = namespace.MetaDataObj.Namespace
kubeCronJob.Namespace = namespace.KubeNamespace

// step 6
if kubeCronJob.Spec.JobTemplate.Spec.Template.Annotations == nil {
Expand Down
2 changes: 1 addition & 1 deletion src/backend/controllers/kubernetes/daemonset/pre_deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ func daemonSetPreDeploy(kubeDaemonSet *v1beta1.DaemonSet, daemonSet *models.Daem
kubeDaemonSet.Spec.Template.Spec.Containers[i].SecurityContext.Privileged = privileged
}
// step 5 set namespace
kubeDaemonSet.Namespace = namespace.MetaDataObj.Namespace
kubeDaemonSet.Namespace = namespace.KubeNamespace

// step 6
if kubeDaemonSet.Spec.Template.Annotations == nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ func checkResourceAvailable(ns *models.Namespace, cli client.ResourceHandler, ku
selector := labels.SelectorFromSet(map[string]string{
util.NamespaceLabelKey: ns.Name,
})
namespaceResourceUsed, err := namespace.ResourcesUsageByNamespace(cli, ns.MetaDataObj.Namespace, selector.String())
namespaceResourceUsed, err := namespace.ResourcesUsageByNamespace(cli, ns.KubeNamespace, selector.String())

requestResourceList, err := deployment.GetDeploymentResource(cli, kubeDeployment)
if err != nil {
Expand Down
4 changes: 2 additions & 2 deletions src/backend/controllers/kubernetes/namespace/namespace.go
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ func (c *KubeNamespaceController) Resources() {
selectorMap[util.AppLabelKey] = appName
}
selector := labels.SelectorFromSet(selectorMap)
resourceUsage, err := namespace.ResourcesUsageByNamespace(m.KubeClient, namespaceMetaData.Namespace, selector.String())
resourceUsage, err := namespace.ResourcesUsageByNamespace(m.KubeClient, ns.KubeNamespace, selector.String())
if err != nil {
logs.Error("get (%s) k8s resource usage error. %v", m.Cluster.Name, err.Error())
errs = append(errs, err)
Expand Down Expand Up @@ -274,7 +274,7 @@ func (c *KubeNamespaceController) Statistics() {
selectorMap[util.AppLabelKey] = appName
}
selector := labels.SelectorFromSet(selectorMap)
resourceUsage, err := namespace.ResourcesOfAppByNamespace(m.KubeClient, namespaceMetaData.Namespace, selector.String())
resourceUsage, err := namespace.ResourcesOfAppByNamespace(m.KubeClient, ns.KubeNamespace, selector.String())
if err != nil {
logs.Error("get (%s) k8s resource usage error. %v", m.Cluster.Name, err.Error())
errs = append(errs, err)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ func statefulsetPreDeploy(kubeStatefulSet *v1beta1.StatefulSet, statefulSet *mod
kubeStatefulSet.Spec.Template.Spec.Containers[i].SecurityContext.Privileged = privileged
}
// step 5 set namespace
kubeStatefulSet.Namespace = namespace.MetaDataObj.Namespace
kubeStatefulSet.Namespace = namespace.KubeNamespace

// step 6
if kubeStatefulSet.Spec.Template.Annotations == nil {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ func checkResourceAvailable(ns *models.Namespace, cli client.ResourceHandler, ku
selector := labels.SelectorFromSet(map[string]string{
util.NamespaceLabelKey: ns.Name,
})
namespaceResourceUsed, err := namespace.ResourcesUsageByNamespace(cli, ns.MetaDataObj.Namespace, selector.String())
namespaceResourceUsed, err := namespace.ResourcesUsageByNamespace(cli, ns.KubeNamespace, selector.String())

requestResourceList, err := statefulset.GetStatefulsetResource(cli, kubeStatefulset)
if err != nil {
Expand Down
10 changes: 5 additions & 5 deletions src/backend/controllers/openapi/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ func (c *OpenAPIController) GetDeploymentStatus() {
}
manager, err := client.Manager(param.Cluster)
if err == nil {
deployInfo, err := resdeployment.GetDeploymentDetail(manager.Client, manager.CacheFactory, param.Deployment, ns.MetaDataObj.Namespace)
deployInfo, err := resdeployment.GetDeploymentDetail(manager.Client, manager.CacheFactory, param.Deployment, ns.KubeNamespace)
if err != nil {
logs.Error("Failed to get k8s deployment state: %s", err.Error())
c.AddErrorAndResponse("", http.StatusInternalServerError)
Expand All @@ -186,7 +186,7 @@ func (c *OpenAPIController) GetDeploymentStatus() {
for _, e := range deployInfo.Pods.Warnings {
result.Body.DeploymentStatus.Deployment.PodsState.Warnings = append(result.Body.DeploymentStatus.Deployment.PodsState.Warnings, fmt.Sprint(e))
}
podInfo, err := pod.GetPodsByDeployment(manager.CacheFactory, ns.MetaDataObj.Namespace, param.Deployment)
podInfo, err := pod.GetPodsByDeployment(manager.CacheFactory, ns.KubeNamespace, param.Deployment)
if err != nil {
logs.Error("Failed to get k8s pod state: %s", err.Error())
c.AddErrorAndResponse("", http.StatusInternalServerError)
Expand Down Expand Up @@ -280,7 +280,7 @@ func (c *OpenAPIController) RestartDeployment() {
return
}

deployObj, err := resdeployment.GetDeployment(cli, param.Deployment, ns.MetaDataObj.Namespace)
deployObj, err := resdeployment.GetDeployment(cli, param.Deployment, ns.KubeNamespace)
if err != nil {
logs.Error("Failed to get deployment from k8s client", err.Error())
c.AddErrorAndResponse(fmt.Sprintf("Failed to get deployment from k8s client on %s!", param.Cluster), http.StatusInternalServerError)
Expand Down Expand Up @@ -549,7 +549,7 @@ func (c *OpenAPIController) ScaleDeployment() {
return
}

deployObj, err := resdeployment.GetDeployment(cli, param.Deployment, ns.MetaDataObj.Namespace)
deployObj, err := resdeployment.GetDeployment(cli, param.Deployment, ns.KubeNamespace)
if err != nil {
logs.Error("Failed to get deployment from k8s client", err.Error())
c.AddErrorAndResponse(fmt.Sprintf("Failed to get deployment from k8s client on %s!", param.Cluster), http.StatusInternalServerError)
Expand Down Expand Up @@ -625,7 +625,7 @@ func getOnlineDeploymenetInfo(deployment, namespace, cluster string, templateId
if namespace != app.Namespace.Name {
return nil, fmt.Errorf("Invalid namespace parameter(should be the namespace of the application)")
}
deployObj.Namespace = app.Namespace.MetaDataObj.Namespace
deployObj.Namespace = app.Namespace.KubeNamespace

// 拼凑副本数量参数
err = json.Unmarshal([]byte(deployResource.MetaData), &deployResource.MetaDataObj)
Expand Down
3 changes: 3 additions & 0 deletions src/backend/database/migrations/v1.5_v1.6/ddl.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
ALTER TABLE `namespace`
ADD COLUMN `kube_namespace` VARCHAR(128) NOT NULL DEFAULT '' AFTER `deleted`,
ADD INDEX `namespace_kube_namespace` (`kube_namespace` ASC);
21 changes: 9 additions & 12 deletions src/backend/models/namespace.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,16 +20,15 @@ const (
type namespaceModel struct{}

type Namespace struct {
Id int64 `orm:"auto" json:"id,omitempty"`
Name string `orm:"index;unique;size(128)" json:"name,omitempty"`
// 配置对应Kubernetes的namespace {"namespace":"default"}
// 配置对应namespace可使用的集群 {"clusters":"K8S"}
MetaData string `orm:"type(text)" json:"metaData,omitempty"`
MetaDataObj NamespaceMetaData `orm:"-" json:"-"`
CreateTime *time.Time `orm:"auto_now_add;type(datetime)" json:"createTime,omitempty"`
UpdateTime *time.Time `orm:"auto_now;type(datetime)" json:"updateTime,omitempty"`
User string `orm:"size(128)" json:"user,omitempty"`
Deleted bool `orm:"default(false)" json:"deleted,omitempty"`
Id int64 `orm:"auto" json:"id,omitempty"`
Name string `orm:"index;unique;size(128)" json:"name,omitempty"`
KubeNamespace string `orm:"index;size(128)" json:"kubeNamespace,omitempty"`
MetaData string `orm:"type(text)" json:"metaData,omitempty"`
MetaDataObj NamespaceMetaData `orm:"-" json:"-"`
CreateTime *time.Time `orm:"auto_now_add;type(datetime)" json:"createTime,omitempty"`
UpdateTime *time.Time `orm:"auto_now;type(datetime)" json:"updateTime,omitempty"`
User string `orm:"size(128)" json:"user,omitempty"`
Deleted bool `orm:"default(false)" json:"deleted,omitempty"`

// 用于权限的关联查询
NamespaceUsers []*NamespaceUser `orm:"reverse(many)" json:"-"`
Expand All @@ -44,8 +43,6 @@ func (*Namespace) TableName() string {
}

type NamespaceMetaData struct {
// kubernetes' namespace
Namespace string `json:"namespace,omitempty"`
// key is cluster name, if the key not exist on clusterMeta
// means this namespace could't use the cluster
ClusterMetas map[string]ClusterMeta `json:"clusterMeta,omitempty"`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ <h3 class="modal-title">{{nsTitle}}
<label for="kubernetes_namespace" class="clr-col-md-3 form-group-label-override required">K8S命名空间</label>
<input type="text"
id="kubernetes_namespace"
[(ngModel)]="ns.metaDataObj.namespace"
[(ngModel)]="ns.kubeNamespace"
name="kubernetes_namespace"
size="36"
required
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ export class CreateEditNamespaceComponent {
Object.getOwnPropertyNames(this.clusterMetas).map(cluster => {
const clusterMeta = this.clusterMetas[cluster];
if (clusterMeta && clusterMeta.checked) {
this.namespaceClient.create(this.ns.metaDataObj.namespace, cluster).subscribe(
this.namespaceClient.create(this.ns.kubeNamespace, cluster).subscribe(
next => {
if (next.data == null) {
this.messageHandlerService.showSuccess(`集群 ${cluster} 已存在对应的 kubernetes namespace!`);
Expand Down Expand Up @@ -292,7 +292,7 @@ export class CreateEditNamespaceComponent {
Object.getOwnPropertyNames(this.clusterMetas).map(cluster => {
const clusterMeta = this.clusterMetas[cluster];
if (clusterMeta && clusterMeta.checked) {
this.namespaceClient.create(this.ns.metaDataObj.namespace, cluster).subscribe(
this.namespaceClient.create(this.ns.kubeNamespace, cluster).subscribe(
next => {
if (next.data == null) {
this.messageHandlerService.showSuccess(`集群 ${cluster} 已存在对应的 kubernetes namespace!`);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
K8S命名空间
</ng-container>
</clr-dg-column>
<clr-dg-column>
<ng-container *clrDgHideableColumn="{hidden: true}">
<clr-dg-column class="col-metadata">
<ng-container *clrDgHideableColumn="{hidden: false}">
{{'TITLE.METADATA' | translate}}
</ng-container>
</clr-dg-column>
Expand All @@ -42,8 +42,11 @@
<clr-dg-cell class="col-id">{{ns.id}}</clr-dg-cell>
<clr-dg-cell class="col-app-name copy"><a href="javascript:void(0)" (click)="goToLink(ns, 'app')">{{ns.name}}</a>
</clr-dg-cell>
<clr-dg-cell class="copy">{{ns.metaDataObj.namespace}}</clr-dg-cell>
<clr-dg-cell>{{ns.metaData}}</clr-dg-cell>
<clr-dg-cell class="copy">{{ns.kubeNamespace}}</clr-dg-cell>
<clr-dg-cell class="col-metadata">
<div class="text-overflow">
<a href="javascript:;" (click)="detailMetaDataTpl(ns.metaData)">{{ns.metaData}}</a>
</div></clr-dg-cell>
<clr-dg-cell>{{ns.user}}</clr-dg-cell>
<clr-dg-cell class="col-time">{{ns.createTime | date:'yyyy-MM-dd HH:mm:ss'}}</clr-dg-cell>
<clr-dg-cell class="col-time">{{ns.updateTime | date:'yyyy-MM-dd HH:mm:ss'}}</clr-dg-cell>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ import { Router } from '@angular/router';
import { ClrDatagridStateInterface } from '@clr/angular';
import { Namespace } from '../../../shared/model/v1/namespace';
import { Page } from '../../../shared/page/page-state';
import { AceEditorMsg } from '../../../shared/ace-editor/ace-editor';
import { AceEditorService } from '../../../shared/ace-editor/ace-editor.service';

@Component({
selector: 'list-namespace',
Expand All @@ -20,7 +22,9 @@ export class ListNamespaceComponent {
@Output() delete = new EventEmitter<Namespace>();
@Output() edit = new EventEmitter<Namespace>();

constructor(private router: Router) {}
constructor(private router: Router,
private aceEditorService: AceEditorService) {
}

pageSizeChange(pageSize: number) {
this.state.page.to = pageSize - 1;
Expand Down Expand Up @@ -53,4 +57,8 @@ export class ListNamespaceComponent {
}
this.router.navigateByUrl(linkUrl);
}

detailMetaDataTpl(tpl: string) {
this.aceEditorService.announceMessage(AceEditorMsg.Instance(tpl, false, '元数据查看'));
}
}
12 changes: 1 addition & 11 deletions src/frontend/src/app/shared/auth/cache.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,7 @@ export class CacheService {
}

get kubeNamespace(): string {
const err = 'namespace元数据有误,请联系管理员!';
try {
if (this.namespace.metaData) {
const metaData = JSON.parse(this.namespace.metaData);
return metaData.namespace;
} else {
this.alertError(err);
}
} catch (e) {
this.alertError(err);
}
return this.namespace.kubeNamespace;
}

alertError(err: string) {
Expand Down
2 changes: 1 addition & 1 deletion src/frontend/src/app/shared/model/v1/namespace.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
export class NamespaceMetaData {
namespace: string;
clusterMeta: { [key: string]: ClusterMeta };
imagePullSecrets: LocalObjectReference[];
env: EnvVar[];
Expand All @@ -18,6 +17,7 @@ export class NamespaceMetaData {
export class Namespace {
id: number;
name: string;
kubeNamespace: string;
deleted: boolean;
metaData: string;
metaDataObj: NamespaceMetaData;
Expand Down

0 comments on commit ed9d32a

Please sign in to comment.