Refactor workspace API and introduced tenant v1alpha3 version
This commit is contained in:
@@ -56,7 +56,7 @@ type tenantHandler struct {
|
||||
meteringOptions *meteringclient.Options
|
||||
}
|
||||
|
||||
func newTenantHandler(factory informers.InformerFactory, k8sclient kubernetes.Interface, ksclient kubesphere.Interface,
|
||||
func NewTenantHandler(factory informers.InformerFactory, k8sclient kubernetes.Interface, ksclient kubesphere.Interface,
|
||||
evtsClient events.Client, loggingClient logging.Client, auditingclient auditing.Client,
|
||||
am am.AccessManagementInterface, authorizer authorizer.Authorizer,
|
||||
monitoringclient monitoringclient.Interface, resourceGetter *resourcev1alpha3.ResourceGetter,
|
||||
@@ -72,7 +72,7 @@ func newTenantHandler(factory informers.InformerFactory, k8sclient kubernetes.In
|
||||
}
|
||||
}
|
||||
|
||||
func (h *tenantHandler) ListWorkspaces(req *restful.Request, resp *restful.Response) {
|
||||
func (h *tenantHandler) ListWorkspaceTemplates(req *restful.Request, resp *restful.Response) {
|
||||
user, ok := request.UserFrom(req.Request.Context())
|
||||
queryParam := query.ParseQueryParameter(req)
|
||||
|
||||
@@ -83,7 +83,7 @@ func (h *tenantHandler) ListWorkspaces(req *restful.Request, resp *restful.Respo
|
||||
return
|
||||
}
|
||||
|
||||
result, err := h.tenant.ListWorkspaces(user, queryParam)
|
||||
result, err := h.tenant.ListWorkspaceTemplates(user, queryParam)
|
||||
|
||||
if err != nil {
|
||||
api.HandleInternalError(resp, nil, err)
|
||||
@@ -200,7 +200,7 @@ func (h *tenantHandler) CreateNamespace(request *restful.Request, response *rest
|
||||
response.WriteEntity(created)
|
||||
}
|
||||
|
||||
func (h *tenantHandler) CreateWorkspace(request *restful.Request, response *restful.Response) {
|
||||
func (h *tenantHandler) CreateWorkspaceTemplate(request *restful.Request, response *restful.Response) {
|
||||
var workspace tenantv1alpha2.WorkspaceTemplate
|
||||
|
||||
err := request.ReadEntity(&workspace)
|
||||
@@ -211,7 +211,7 @@ func (h *tenantHandler) CreateWorkspace(request *restful.Request, response *rest
|
||||
return
|
||||
}
|
||||
|
||||
created, err := h.tenant.CreateWorkspace(&workspace)
|
||||
created, err := h.tenant.CreateWorkspaceTemplate(&workspace)
|
||||
|
||||
if err != nil {
|
||||
klog.Error(err)
|
||||
@@ -226,7 +226,7 @@ func (h *tenantHandler) CreateWorkspace(request *restful.Request, response *rest
|
||||
response.WriteEntity(created)
|
||||
}
|
||||
|
||||
func (h *tenantHandler) DeleteWorkspace(request *restful.Request, response *restful.Response) {
|
||||
func (h *tenantHandler) DeleteWorkspaceTemplate(request *restful.Request, response *restful.Response) {
|
||||
workspace := request.PathParameter("workspace")
|
||||
|
||||
opts := metav1.DeleteOptions{}
|
||||
@@ -236,7 +236,7 @@ func (h *tenantHandler) DeleteWorkspace(request *restful.Request, response *rest
|
||||
opts = *metav1.NewDeleteOptions(0)
|
||||
}
|
||||
|
||||
err = h.tenant.DeleteWorkspace(workspace, opts)
|
||||
err = h.tenant.DeleteWorkspaceTemplate(workspace, opts)
|
||||
|
||||
if err != nil {
|
||||
klog.Error(err)
|
||||
@@ -251,7 +251,7 @@ func (h *tenantHandler) DeleteWorkspace(request *restful.Request, response *rest
|
||||
response.WriteEntity(servererr.None)
|
||||
}
|
||||
|
||||
func (h *tenantHandler) UpdateWorkspace(request *restful.Request, response *restful.Response) {
|
||||
func (h *tenantHandler) UpdateWorkspaceTemplate(request *restful.Request, response *restful.Response) {
|
||||
workspaceName := request.PathParameter("workspace")
|
||||
var workspace tenantv1alpha2.WorkspaceTemplate
|
||||
|
||||
@@ -270,7 +270,7 @@ func (h *tenantHandler) UpdateWorkspace(request *restful.Request, response *rest
|
||||
return
|
||||
}
|
||||
|
||||
updated, err := h.tenant.UpdateWorkspace(&workspace)
|
||||
updated, err := h.tenant.UpdateWorkspaceTemplate(&workspace)
|
||||
|
||||
if err != nil {
|
||||
klog.Error(err)
|
||||
@@ -289,10 +289,10 @@ func (h *tenantHandler) UpdateWorkspace(request *restful.Request, response *rest
|
||||
response.WriteEntity(updated)
|
||||
}
|
||||
|
||||
func (h *tenantHandler) DescribeWorkspace(request *restful.Request, response *restful.Response) {
|
||||
func (h *tenantHandler) DescribeWorkspaceTemplate(request *restful.Request, response *restful.Response) {
|
||||
workspaceName := request.PathParameter("workspace")
|
||||
|
||||
workspace, err := h.tenant.DescribeWorkspace(workspaceName)
|
||||
workspace, err := h.tenant.DescribeWorkspaceTemplate(workspaceName)
|
||||
|
||||
if err != nil {
|
||||
klog.Error(err)
|
||||
@@ -518,7 +518,7 @@ func (h *tenantHandler) PatchNamespace(request *restful.Request, response *restf
|
||||
response.WriteEntity(patched)
|
||||
}
|
||||
|
||||
func (h *tenantHandler) PatchWorkspace(request *restful.Request, response *restful.Response) {
|
||||
func (h *tenantHandler) PatchWorkspaceTemplate(request *restful.Request, response *restful.Response) {
|
||||
workspaceName := request.PathParameter("workspace")
|
||||
var data json.RawMessage
|
||||
err := request.ReadEntity(&data)
|
||||
@@ -528,7 +528,7 @@ func (h *tenantHandler) PatchWorkspace(request *restful.Request, response *restf
|
||||
return
|
||||
}
|
||||
|
||||
patched, err := h.tenant.PatchWorkspace(workspaceName, data)
|
||||
patched, err := h.tenant.PatchWorkspaceTemplate(workspaceName, data)
|
||||
|
||||
if err != nil {
|
||||
klog.Error(err)
|
||||
|
||||
@@ -19,15 +19,12 @@ package v1alpha2
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"sigs.k8s.io/controller-runtime/pkg/cache"
|
||||
|
||||
"kubesphere.io/kubesphere/pkg/models/metering"
|
||||
|
||||
"github.com/emicklei/go-restful"
|
||||
restfulspec "github.com/emicklei/go-restful-openapi"
|
||||
corev1 "k8s.io/api/core/v1"
|
||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||
"k8s.io/client-go/kubernetes"
|
||||
"sigs.k8s.io/controller-runtime/pkg/cache"
|
||||
|
||||
quotav1alpha2 "kubesphere.io/api/quota/v1alpha2"
|
||||
tenantv1alpha2 "kubesphere.io/api/tenant/v1alpha2"
|
||||
@@ -43,6 +40,7 @@ import (
|
||||
"kubesphere.io/kubesphere/pkg/informers"
|
||||
"kubesphere.io/kubesphere/pkg/models"
|
||||
"kubesphere.io/kubesphere/pkg/models/iam/am"
|
||||
"kubesphere.io/kubesphere/pkg/models/metering"
|
||||
"kubesphere.io/kubesphere/pkg/models/monitoring"
|
||||
resourcev1alpha3 "kubesphere.io/kubesphere/pkg/models/resources/v1alpha3/resource"
|
||||
"kubesphere.io/kubesphere/pkg/server/errors"
|
||||
@@ -70,7 +68,7 @@ func AddToContainer(c *restful.Container, factory informers.InformerFactory, k8s
|
||||
mimePatch := []string{restful.MIME_JSON, runtime.MimeMergePatchJson, runtime.MimeJsonPatchJson}
|
||||
|
||||
ws := runtime.NewWebService(GroupVersion)
|
||||
handler := newTenantHandler(factory, k8sclient, ksclient, evtsClient, loggingClient, auditingclient, am, authorizer, monitoringclient, resourcev1alpha3.NewResourceGetter(factory, cache), meteringOptions, stopCh)
|
||||
handler := NewTenantHandler(factory, k8sclient, ksclient, evtsClient, loggingClient, auditingclient, am, authorizer, monitoringclient, resourcev1alpha3.NewResourceGetter(factory, cache), meteringOptions, stopCh)
|
||||
|
||||
ws.Route(ws.GET("/clusters").
|
||||
To(handler.ListClusters).
|
||||
@@ -79,21 +77,21 @@ func AddToContainer(c *restful.Container, factory informers.InformerFactory, k8s
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.UserResourceTag}))
|
||||
|
||||
ws.Route(ws.POST("/workspaces").
|
||||
To(handler.CreateWorkspace).
|
||||
To(handler.CreateWorkspaceTemplate).
|
||||
Reads(tenantv1alpha2.WorkspaceTemplate{}).
|
||||
Returns(http.StatusOK, api.StatusOK, tenantv1alpha2.WorkspaceTemplate{}).
|
||||
Doc("Create workspace.").
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
||||
|
||||
ws.Route(ws.DELETE("/workspaces/{workspace}").
|
||||
To(handler.DeleteWorkspace).
|
||||
To(handler.DeleteWorkspaceTemplate).
|
||||
Param(ws.PathParameter("workspace", "workspace name")).
|
||||
Returns(http.StatusOK, api.StatusOK, errors.None).
|
||||
Doc("Delete workspace.").
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
||||
|
||||
ws.Route(ws.PUT("/workspaces/{workspace}").
|
||||
To(handler.UpdateWorkspace).
|
||||
To(handler.UpdateWorkspaceTemplate).
|
||||
Param(ws.PathParameter("workspace", "workspace name")).
|
||||
Reads(tenantv1alpha2.WorkspaceTemplate{}).
|
||||
Returns(http.StatusOK, api.StatusOK, tenantv1alpha2.WorkspaceTemplate{}).
|
||||
@@ -101,7 +99,7 @@ func AddToContainer(c *restful.Container, factory informers.InformerFactory, k8s
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
||||
|
||||
ws.Route(ws.PATCH("/workspaces/{workspace}").
|
||||
To(handler.PatchWorkspace).
|
||||
To(handler.PatchWorkspaceTemplate).
|
||||
Param(ws.PathParameter("workspace", "workspace name")).
|
||||
Consumes(mimePatch...).
|
||||
Reads(tenantv1alpha2.WorkspaceTemplate{}).
|
||||
@@ -110,13 +108,13 @@ func AddToContainer(c *restful.Container, factory informers.InformerFactory, k8s
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
||||
|
||||
ws.Route(ws.GET("/workspaces").
|
||||
To(handler.ListWorkspaces).
|
||||
To(handler.ListWorkspaceTemplates).
|
||||
Returns(http.StatusOK, api.StatusOK, models.PageableResponse{}).
|
||||
Doc("List all workspaces that belongs to the current user").
|
||||
Metadata(restfulspec.KeyOpenAPITags, []string{constants.WorkspaceTag}))
|
||||
|
||||
ws.Route(ws.GET("/workspaces/{workspace}").
|
||||
To(handler.DescribeWorkspace).
|
||||
To(handler.DescribeWorkspaceTemplate).
|
||||
Param(ws.PathParameter("workspace", "workspace name")).
|
||||
Returns(http.StatusOK, api.StatusOK, tenantv1alpha2.WorkspaceTemplate{}).
|
||||
Doc("Describe workspace.").
|
||||
|
||||
Reference in New Issue
Block a user