dashboard添加可编辑字段

本文介绍如何在Horizon仪表板中使用自定义的UpdateRow和UpdateCell类来实现项目的内联更新功能。通过覆盖get_data和update_cell方法,可以实现在不刷新页面的情况下更新项目信息。
在tables.py中添加如下代码:
class UpdateRow(tables.Row):
ajax = True

def get_data(self, request, instance_id):
project_info = api.nova.server_get(request, instance_id)

return project_info

class UpdateCell(tables.UpdateAction):
def allowed(self, request, instance, cell):
policy_rule = (("identity", "identity:update_project"),)
return True
def update_cell(self, request, datum, instance_id,cell_name, new_cell_value):
# inline update project info
instance_obj = datum
# updating changed value by new value
setattr(instance_obj, cell_name, new_cell_value)
api.nova.server_update(request,instance_id,name=instance_obj.name) //from openstack_dashboard import api
return True


在定义字段的部分做如下修改:
name = tables.Column("name", verbose_name=_("Name"),form_field=forms.CharField(max_length=64),update_action=UpdateCell)   //form_field也是新加的,同时要:from horizon import forms


class Meta:类中新加
row_class = UpdateRow  //引用上面的UpdateRow
### Kubernetes Dashboard 的安装与基本配置步骤 Kubernetes Dashboard 是一个基于 Web 的用户界面,允许通过图形化操作对集群进行管理和容器应用的部署。以下是详细的安装和基本配置流程: #### 1. 安装 Kubernetes Dashboard Kubernetes Dashboard 支持使用 Helm 进行安装,这种方式能够更高效地管理其依赖项。 - **添加官方 Helm 仓库**: ```bash helm repo add kubernetes-dashboard https://kubernetes.github.io/dashboard/ ``` - **更新 Helm 仓库信息**: ```bash helm repo update ``` - **创建命名空间**(可选): 为了更好地隔离资源,可以为 Dashboard 创建一个独立的命名空间,例如 `kubernetes-dashboard`。 ```bash kubectl create namespace kubernetes-dashboard ``` - **安装 Dashboard**: 使用以下命令在指定的命名空间中安装 Dashboard: ```bash helm install kubernetes-dashboard kubernetes-dashboard/kubernetes-dashboard --namespace kubernetes-dashboard ``` #### 2. 配置访问方式 安装完成后,需要配置访问方式以确保可以通过浏览器访问 Dashboard。 - **检查服务状态**: 安装完成后,确认 Dashboard 对应的服务是否已成功运行: ```bash kubectl get services -n kubernetes-dashboard ``` 默认情况下,Dashboard 会暴露为 ClusterIP 类型的服务,仅支持集群内部访问。 - **修改服务类型为 NodePort**(适用于单节点或测试环境): 编辑 Dashboard 的服务定义,将类型从 ClusterIP 修改为 NodePort: ```bash kubectl edit service kubernetes-dashboard -n kubernetes-dashboard ``` 找到 `type: ClusterIP` 并将其更改为 `type: NodePort`,保存并退出后,Kubernetes 会自动分配端口。 - **获取访问地址**: 再次运行 `kubectl get services -n kubernetes-dashboard` 查看分配的端口,然后通过任意节点的 IP 地址加上该端口访问 Dashboard。 #### 3. 认证与权限配置 由于 Dashboard 提供了对集群的管理功能,因此需要配置认证机制来确保安全性。 - **创建 ServiceAccount 和 RoleBinding**: 创建一个具有适当权限的 ServiceAccount,并绑定到相应的角色。例如: ```yaml apiVersion: v1 kind: ServiceAccount metadata: name: dashboard-admin namespace: kube-system --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: dashboard-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: dashboard-admin namespace: kube-system ``` 应用上述配置: ```bash kubectl apply -f dashboard-rbac.yaml ``` - **获取 Token**: 生成的 ServiceAccount Token 可用于登录 Dashboard。运行以下命令获取 Token: ```bash kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep dashboard-admin | awk '{print $1}') ``` 复制输出中的 `token` 字段值,在登录 Dashboard 时选择 "Token" 并粘贴此值。 #### 4. 使用 Ingress 暴露 Dashboard(可选) 如果希望使用域名访问 Dashboard,可以通过 Ingress 控制器实现。 - **创建 Ingress 资源**: 定义一个 Ingress 资源文件,例如 `dashboard-ingress.yaml`: ```yaml apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: dashboard-ingress namespace: kubernetes-dashboard annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - http: paths: - path: /dashboard pathType: Prefix backend: service: name: kubernetes-dashboard port: number: 80 ``` 应用此配置: ```bash kubectl apply -f dashboard-ingress.yaml ``` - **配置 DNS**: 确保你的域名解析指向 Ingress 控制器的外部 IP 地址,然后通过 `http://<your-domain>/dashboard` 访问 Dashboard。 #### 5. 常见问题排查 - **无法访问 Dashboard**:检查服务类型是否正确,以及防火墙规则是否允许相应端口通信。 - **Token 登录失败**:确认 Token 是否过期,或者尝试重新生成 Token。 - **RBAC 权限不足**:确保 ServiceAccount 具有适当的 ClusterRole 绑定,如 `cluster-admin`。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值