support workspace resource quota
Signed-off-by: hongming <talonwan@yunify.com>
This commit is contained in:
@@ -29,6 +29,7 @@ import (
|
||||
auditingv1alpha1 "kubesphere.io/kubesphere/pkg/api/auditing/v1alpha1"
|
||||
eventsv1alpha1 "kubesphere.io/kubesphere/pkg/api/events/v1alpha1"
|
||||
loggingv1alpha2 "kubesphere.io/kubesphere/pkg/api/logging/v1alpha2"
|
||||
quotav1alpha2 "kubesphere.io/kubesphere/pkg/apis/quota/v1alpha2"
|
||||
tenantv1alpha2 "kubesphere.io/kubesphere/pkg/apis/tenant/v1alpha2"
|
||||
"kubesphere.io/kubesphere/pkg/apiserver/authorization/authorizer"
|
||||
"kubesphere.io/kubesphere/pkg/apiserver/query"
|
||||
@@ -546,3 +547,78 @@ func (h *tenantHandler) ListClusters(r *restful.Request, response *restful.Respo
|
||||
|
||||
response.WriteEntity(result)
|
||||
}
|
||||
|
||||
func (h *tenantHandler) CreateWorkspaceResourceQuota(r *restful.Request, response *restful.Response) {
|
||||
workspaceName := r.PathParameter("workspace")
|
||||
resourceQuota := "av1alpha2.ResourceQuota{}
|
||||
err := r.ReadEntity(resourceQuota)
|
||||
if err != nil {
|
||||
api.HandleBadRequest(response, r, err)
|
||||
return
|
||||
}
|
||||
result, err := h.tenant.CreateWorkspaceResourceQuota(workspaceName, resourceQuota)
|
||||
if err != nil {
|
||||
api.HandleInternalError(response, r, err)
|
||||
return
|
||||
}
|
||||
response.WriteEntity(result)
|
||||
}
|
||||
|
||||
func (h *tenantHandler) DeleteWorkspaceResourceQuota(r *restful.Request, response *restful.Response) {
|
||||
workspace := r.PathParameter("workspace")
|
||||
resourceQuota := r.PathParameter("resourcequota")
|
||||
|
||||
if err := h.tenant.DeleteWorkspaceResourceQuota(workspace, resourceQuota); err != nil {
|
||||
if errors.IsNotFound(err) {
|
||||
api.HandleNotFound(response, r, err)
|
||||
return
|
||||
}
|
||||
api.HandleInternalError(response, r, err)
|
||||
return
|
||||
}
|
||||
|
||||
response.WriteEntity(servererr.None)
|
||||
}
|
||||
|
||||
func (h *tenantHandler) UpdateWorkspaceResourceQuota(r *restful.Request, response *restful.Response) {
|
||||
workspaceName := r.PathParameter("workspace")
|
||||
resourceQuotaName := r.PathParameter("resourcequota")
|
||||
resourceQuota := "av1alpha2.ResourceQuota{}
|
||||
err := r.ReadEntity(resourceQuota)
|
||||
if err != nil {
|
||||
api.HandleBadRequest(response, r, err)
|
||||
return
|
||||
}
|
||||
|
||||
if resourceQuotaName != resourceQuota.Name {
|
||||
err := fmt.Errorf("the name of the object (%s) does not match the name on the URL (%s)", resourceQuota.Name, resourceQuotaName)
|
||||
klog.Errorf("%+v", err)
|
||||
api.HandleBadRequest(response, r, err)
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.tenant.UpdateWorkspaceResourceQuota(workspaceName, resourceQuota)
|
||||
if err != nil {
|
||||
api.HandleInternalError(response, r, err)
|
||||
return
|
||||
}
|
||||
|
||||
response.WriteEntity(result)
|
||||
}
|
||||
|
||||
func (h *tenantHandler) DescribeWorkspaceResourceQuota(r *restful.Request, response *restful.Response) {
|
||||
workspaceName := r.PathParameter("workspace")
|
||||
resourceQuotaName := r.PathParameter("resourcequota")
|
||||
|
||||
resourceQuota, err := h.tenant.DescribeWorkspaceResourceQuota(workspaceName, resourceQuotaName)
|
||||
if err != nil {
|
||||
if errors.IsNotFound(err) {
|
||||
api.HandleNotFound(response, r, err)
|
||||
return
|
||||
}
|
||||
api.HandleInternalError(response, r, err)
|
||||
return
|
||||
}
|
||||
|
||||
response.WriteEntity(resourceQuota)
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import (
|
||||
auditingv1alpha1 "kubesphere.io/kubesphere/pkg/api/auditing/v1alpha1"
|
||||
eventsv1alpha1 "kubesphere.io/kubesphere/pkg/api/events/v1alpha1"
|
||||
loggingv1alpha2 "kubesphere.io/kubesphere/pkg/api/logging/v1alpha2"
|
||||
quotav1alpha2 "kubesphere.io/kubesphere/pkg/apis/quota/v1alpha2"
|
||||
tenantv1alpha2 "kubesphere.io/kubesphere/pkg/apis/tenant/v1alpha2"
|
||||
"kubesphere.io/kubesphere/pkg/apiserver/authorization/authorizer"
|
||||
"kubesphere.io/kubesphere/pkg/apiserver/runtime"
|
||||
@@ -288,6 +289,38 @@ func AddToContainer(c *restful.Container, factory informers.InformerFactory, k8s
|
||||
Writes(auditingv1alpha1.APIResponse{}).
|
||||
Returns(http.StatusOK, api.StatusOK, auditingv1alpha1.APIResponse{}))
|
||||
|
||||
ws.Route(ws.POST("/workspaces/{workspace}/resourcequotas").
|
||||
To(handler.CreateWorkspaceResourceQuota).
|
||||
Reads(quotav1alpha2.ResourceQuota{}).
|
||||
Returns(http.StatusOK, api.StatusOK, quotav1alpha2.ResourceQuota{}).
|
||||
Doc("Create resource quota.").
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
||||
|
||||
ws.Route(ws.DELETE("/workspaces/{workspace}/resourcequotas/{resourcequota}").
|
||||
To(handler.DeleteWorkspaceResourceQuota).
|
||||
Param(ws.PathParameter("workspace", "workspace name")).
|
||||
Param(ws.PathParameter("resourcequota", "resource quota name")).
|
||||
Returns(http.StatusOK, api.StatusOK, errors.None).
|
||||
Doc("Delete resource quota.").
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
||||
|
||||
ws.Route(ws.PUT("/workspaces/{workspace}/resourcequotas/{resourcequota}").
|
||||
To(handler.UpdateWorkspaceResourceQuota).
|
||||
Param(ws.PathParameter("workspace", "workspace name")).
|
||||
Param(ws.PathParameter("resourcequota", "resource quota name")).
|
||||
Reads(quotav1alpha2.ResourceQuota{}).
|
||||
Returns(http.StatusOK, api.StatusOK, quotav1alpha2.ResourceQuota{}).
|
||||
Doc("Update resource quota.").
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
||||
|
||||
ws.Route(ws.GET("/workspaces/{workspace}/resourcequotas/{resourcequota}").
|
||||
To(handler.DescribeWorkspaceResourceQuota).
|
||||
Param(ws.PathParameter("workspace", "workspace name")).
|
||||
Param(ws.PathParameter("resourcequota", "resource quota name")).
|
||||
Returns(http.StatusOK, api.StatusOK, quotav1alpha2.ResourceQuota{}).
|
||||
Doc("Describe resource quota.").
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
||||
|
||||
c.Add(ws)
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user