提交 468ef322 编写于 作者: H hongming 提交者: zryfish

update api doc

Signed-off-by: Nhongming <talonwan@yunify.com>
上级 dd87197d
...@@ -28,6 +28,7 @@ import ( ...@@ -28,6 +28,7 @@ import (
"kubesphere.io/kubesphere/pkg/models" "kubesphere.io/kubesphere/pkg/models"
"kubesphere.io/kubesphere/pkg/models/iam/policy" "kubesphere.io/kubesphere/pkg/models/iam/policy"
"net/http" "net/http"
"time"
) )
const GroupName = "iam.kubesphere.io" const GroupName = "iam.kubesphere.io"
...@@ -39,15 +40,74 @@ var ( ...@@ -39,15 +40,74 @@ var (
AddToContainer = WebServiceBuilder.AddToContainer AddToContainer = WebServiceBuilder.AddToContainer
) )
type UserUpdateRequest struct {
Username string `json:"username" description:"username"`
Email string `json:"email" description:"email address"`
Lang string `json:"lang" description:"user's language setting, default is zh-CN"`
Description string `json:"description" description:"user's description"`
Password string `json:"password,omitempty" description:"this is necessary if you need to change your password"`
CurrentPassword string `json:"current_password,omitempty" description:"this is necessary if you need to change your password"`
ClusterRole string `json:"cluster_role" description:"user's cluster role"`
}
type CreateUserRequest struct {
Username string `json:"username" description:"username"`
Email string `json:"email" description:"email address"`
Lang string `json:"lang,omitempty" description:"user's language setting, default is zh-CN"`
Description string `json:"description" description:"user's description"`
Password string `json:"password" description:"password'"`
ClusterRole string `json:"cluster_role" description:"user's cluster role"`
}
type UserList struct {
Items []struct {
Username string `json:"username" description:"username"`
Email string `json:"email" description:"email address"`
Lang string `json:"lang,omitempty" description:"user's language setting, default is zh-CN"`
Description string `json:"description" description:"user's description"`
ClusterRole string `json:"cluster_role" description:"user's cluster role"`
CreateTime time.Time `json:"create_time" description:"user creation time"`
LastLoginTime time.Time `json:"last_login_time" description:"last login time"`
} `json:"items" description:"paging data"`
TotalCount int `json:"total_count" description:"total count"`
}
type ClusterRoleList struct {
Items []rbacv1.ClusterRole `json:"items" description:"paging data"`
TotalCount int `json:"total_count" description:"total count"`
}
type LoginLog struct {
LoginTime string `json:"login_time" description:"last login time"`
LoginIP string `json:"login_ip" description:"last login ip"`
}
type RoleList struct {
Items []rbacv1.Role `json:"items" description:"paging data"`
TotalCount int `json:"total_count" description:"total count"`
}
type InviteUserRequest struct {
Username string `json:"username" description:"username"`
WorkspaceRole string `json:"workspace_role" description:"user's workspace role'"`
}
type DescribeWorkspaceUserResponse struct {
Username string `json:"username" description:"username"`
Email string `json:"email" description:"email address"`
Lang string `json:"lang" description:"user's language setting, default is zh-CN"`
Description string `json:"description" description:"user's description"`
ClusterRole string `json:"cluster_role" description:"user's cluster role"`
WorkspaceRole string `json:"workspace_role" description:"user's workspace role"`
CreateTime time.Time `json:"create_time" description:"user creation time"`
LastLoginTime time.Time `json:"last_login_time" description:"last login time"`
}
func addWebService(c *restful.Container) error { func addWebService(c *restful.Container) error {
tags := []string{"IAM"} tags := []string{"IAM"}
ws := runtime.NewWebService(GroupVersion) ws := runtime.NewWebService(GroupVersion)
ok := "ok" ok := "ok"
pageableUserList := struct {
Items []models.User `json:"items"`
TotalCount int `json:"total_count"`
}{}
ws.Route(ws.POST("/authenticate"). ws.Route(ws.POST("/authenticate").
To(iam.TokenReviewHandler). To(iam.TokenReviewHandler).
...@@ -70,7 +130,7 @@ func addWebService(c *restful.Container) error { ...@@ -70,7 +130,7 @@ func addWebService(c *restful.Container) error {
ws.Route(ws.POST("/users"). ws.Route(ws.POST("/users").
To(iam.CreateUser). To(iam.CreateUser).
Doc("Create a user account."). Doc("Create a user account.").
Reads(models.User{}). Reads(CreateUserRequest{}).
Returns(http.StatusOK, ok, errors.Error{}). Returns(http.StatusOK, ok, errors.Error{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.DELETE("/users/{name}"). ws.Route(ws.DELETE("/users/{name}").
...@@ -83,22 +143,19 @@ func addWebService(c *restful.Container) error { ...@@ -83,22 +143,19 @@ func addWebService(c *restful.Container) error {
To(iam.UpdateUser). To(iam.UpdateUser).
Doc("Updates information about the specified user."). Doc("Updates information about the specified user.").
Param(ws.PathParameter("name", "username")). Param(ws.PathParameter("name", "username")).
Reads(models.User{}). Reads(UserUpdateRequest{}).
Returns(http.StatusOK, ok, errors.Error{}). Returns(http.StatusOK, ok, errors.Error{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/users/{name}/log"). ws.Route(ws.GET("/users/{name}/log").
To(iam.UserLoginLog). To(iam.UserLoginLog).
Doc("This method is used to retrieve the \"login logs\" for the specified user."). Doc("This method is used to retrieve the \"login logs\" for the specified user.").
Param(ws.PathParameter("name", "username")). Param(ws.PathParameter("name", "username")).
Returns(http.StatusOK, ok, struct { Returns(http.StatusOK, ok, LoginLog{}).
LoginTime string `json:"login_time"`
LoginIP string `json:"login_ip"`
}{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/users"). ws.Route(ws.GET("/users").
To(iam.ListUsers). To(iam.ListUsers).
Doc("List all users."). Doc("List all users.").
Returns(http.StatusOK, ok, pageableUserList). Returns(http.StatusOK, ok, UserList{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/groups"). ws.Route(ws.GET("/groups").
To(iam.ListGroups). To(iam.ListGroups).
...@@ -146,18 +203,12 @@ func addWebService(c *restful.Container) error { ...@@ -146,18 +203,12 @@ func addWebService(c *restful.Container) error {
To(iam.ListRoles). To(iam.ListRoles).
Doc("This method is used to retrieve the roles that are assigned to the user in the specified namespace."). Doc("This method is used to retrieve the roles that are assigned to the user in the specified namespace.").
Param(ws.PathParameter("namespace", "kubernetes namespace")). Param(ws.PathParameter("namespace", "kubernetes namespace")).
Returns(http.StatusOK, ok, struct { Returns(http.StatusOK, ok, RoleList{}).
Items []rbacv1.Role `json:"items"`
TotalCount int `json:"total_count"`
}{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/clusterroles"). ws.Route(ws.GET("/clusterroles").
To(iam.ListClusterRoles). To(iam.ListClusterRoles).
Doc("List all cluster roles."). Doc("List all cluster roles.").
Returns(http.StatusOK, ok, struct { Returns(http.StatusOK, ok, ClusterRoleList{}).
Items []rbacv1.ClusterRole `json:"items"`
TotalCount int `json:"total_count"`
}{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/namespaces/{namespace}/roles/{role}/users"). ws.Route(ws.GET("/namespaces/{namespace}/roles/{role}/users").
To(iam.ListRoleUsers). To(iam.ListRoleUsers).
...@@ -176,7 +227,7 @@ func addWebService(c *restful.Container) error { ...@@ -176,7 +227,7 @@ func addWebService(c *restful.Container) error {
To(iam.ListClusterRoleUsers). To(iam.ListClusterRoleUsers).
Doc("List all users that are bind the cluster role."). Doc("List all users that are bind the cluster role.").
Param(ws.PathParameter("clusterrole", "cluster role name")). Param(ws.PathParameter("clusterrole", "cluster role name")).
Returns(http.StatusOK, ok, pageableUserList). Returns(http.StatusOK, ok, UserList{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/clusterroles/{clusterrole}/rules"). ws.Route(ws.GET("/clusterroles/{clusterrole}/rules").
To(iam.ListClusterRoleRules). To(iam.ListClusterRoleRules).
...@@ -212,10 +263,7 @@ func addWebService(c *restful.Container) error { ...@@ -212,10 +263,7 @@ func addWebService(c *restful.Container) error {
To(iam.ListWorkspaceRoles). To(iam.ListWorkspaceRoles).
Doc("List all workspace roles."). Doc("List all workspace roles.").
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Returns(http.StatusOK, ok, struct { Returns(http.StatusOK, ok, ClusterRoleList{}).
Items []rbacv1.ClusterRole `json:"items"`
TotalCount int `json:"total_count"`
}{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/workspaces/{workspace}/roles/{role}"). ws.Route(ws.GET("/workspaces/{workspace}/roles/{role}").
To(iam.DescribeWorkspaceRole). To(iam.DescribeWorkspaceRole).
...@@ -235,13 +283,13 @@ func addWebService(c *restful.Container) error { ...@@ -235,13 +283,13 @@ func addWebService(c *restful.Container) error {
To(iam.ListWorkspaceUsers). To(iam.ListWorkspaceUsers).
Doc("List all members in the specified workspace."). Doc("List all members in the specified workspace.").
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Returns(http.StatusOK, ok, pageableUserList). Returns(http.StatusOK, ok, UserList{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.POST("/workspaces/{workspace}/members"). ws.Route(ws.POST("/workspaces/{workspace}/members").
To(iam.InviteUser). To(iam.InviteUser).
Doc("Invite members to a workspace."). Doc("Invite members to a workspace.").
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Reads(models.User{}). Reads(InviteUserRequest{}).
Returns(http.StatusOK, ok, errors.Error{}). Returns(http.StatusOK, ok, errors.Error{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.DELETE("/workspaces/{workspace}/members/{username}"). ws.Route(ws.DELETE("/workspaces/{workspace}/members/{username}").
...@@ -256,7 +304,7 @@ func addWebService(c *restful.Container) error { ...@@ -256,7 +304,7 @@ func addWebService(c *restful.Container) error {
Doc("Describes the specified user."). Doc("Describes the specified user.").
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Param(ws.PathParameter("username", "username")). Param(ws.PathParameter("username", "username")).
Returns(http.StatusOK, ok, models.User{}). Returns(http.StatusOK, ok, DescribeWorkspaceUserResponse{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
c.Add(ws) c.Add(ws)
return nil return nil
......
...@@ -24,6 +24,7 @@ import ( ...@@ -24,6 +24,7 @@ import (
"kubesphere.io/kubesphere/pkg/apiserver/operations" "kubesphere.io/kubesphere/pkg/apiserver/operations"
"kubesphere.io/kubesphere/pkg/apiserver/runtime" "kubesphere.io/kubesphere/pkg/apiserver/runtime"
"kubesphere.io/kubesphere/pkg/errors" "kubesphere.io/kubesphere/pkg/errors"
"net/http"
) )
const GroupName = "operations.kubesphere.io" const GroupName = "operations.kubesphere.io"
...@@ -38,24 +39,24 @@ var ( ...@@ -38,24 +39,24 @@ var (
func addWebService(c *restful.Container) error { func addWebService(c *restful.Container) error {
tags := []string{"Operations"} tags := []string{"Operations"}
ok := "ok"
webservice := runtime.NewWebService(GroupVersion) webservice := runtime.NewWebService(GroupVersion)
webservice.Route(webservice.POST("/nodes/{node}/drainage"). webservice.Route(webservice.POST("/nodes/{node}/drainage").
To(operations.DrainNode). To(operations.DrainNode).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Doc(""). Doc("Drain node").
Param(webservice.PathParameter("node", "node name")). Param(webservice.PathParameter("node", "node name")).
Writes(errors.Error{})) Returns(http.StatusOK, ok, errors.Error{}))
webservice.Route(webservice.POST("/namespaces/{namespace}/jobs/{job}"). webservice.Route(webservice.POST("/namespaces/{namespace}/jobs/{job}").
To(operations.RerunJob). To(operations.RerunJob).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Doc("Handle job operation"). Doc("Job rerun").
Param(webservice.PathParameter("job", "job name")). Param(webservice.PathParameter("job", "job name")).
Param(webservice.PathParameter("namespace", "job's namespace")). Param(webservice.PathParameter("namespace", "job's namespace")).
Param(webservice.QueryParameter("a", "action")). Param(webservice.QueryParameter("a", "action")).
Writes("")) Returns(http.StatusOK, ok, errors.Error{}))
c.Add(webservice) c.Add(webservice)
......
...@@ -36,8 +36,11 @@ import ( ...@@ -36,8 +36,11 @@ import (
"kubesphere.io/kubesphere/pkg/models" "kubesphere.io/kubesphere/pkg/models"
"kubesphere.io/kubesphere/pkg/models/applications" "kubesphere.io/kubesphere/pkg/models/applications"
gitmodel "kubesphere.io/kubesphere/pkg/models/git" gitmodel "kubesphere.io/kubesphere/pkg/models/git"
registriesmodel "kubesphere.io/kubesphere/pkg/models/registries"
"kubesphere.io/kubesphere/pkg/models/status"
"kubesphere.io/kubesphere/pkg/params" "kubesphere.io/kubesphere/pkg/params"
"kubesphere.io/kubesphere/pkg/simple/client/openpitrix" "kubesphere.io/kubesphere/pkg/simple/client/openpitrix"
"net/http"
) )
const GroupName = "resources.kubesphere.io" const GroupName = "resources.kubesphere.io"
...@@ -54,6 +57,7 @@ func addWebService(c *restful.Container) error { ...@@ -54,6 +57,7 @@ func addWebService(c *restful.Container) error {
webservice := runtime.NewWebService(GroupVersion) webservice := runtime.NewWebService(GroupVersion)
tags := []string{"Namespace resources"} tags := []string{"Namespace resources"}
ok := "ok"
webservice.Route(webservice.GET("/namespaces/{namespace}/{resources}"). webservice.Route(webservice.GET("/namespaces/{namespace}/{resources}").
To(resources.ListResources). To(resources.ListResources).
...@@ -68,13 +72,13 @@ func addWebService(c *restful.Container) error { ...@@ -68,13 +72,13 @@ func addWebService(c *restful.Container) error {
Required(false). Required(false).
DataFormat("limit=%d,page=%d"). DataFormat("limit=%d,page=%d").
DefaultValue("limit=10,page=1")). DefaultValue("limit=10,page=1")).
Writes(models.PageableResponse{})) Returns(http.StatusOK, ok, models.PageableResponse{}))
tags = []string{"Cluster resources"} tags = []string{"Cluster resources"}
webservice.Route(webservice.GET("/{resources}"). webservice.Route(webservice.GET("/{resources}").
To(resources.ListResources). To(resources.ListResources).
Writes(models.PageableResponse{}). Returns(http.StatusOK, ok, models.PageableResponse{}).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Doc("Cluster level resource query"). Doc("Cluster level resource query").
Param(webservice.PathParameter("resources", "cluster level resource type"))). Param(webservice.PathParameter("resources", "cluster level resource type"))).
...@@ -91,7 +95,7 @@ func addWebService(c *restful.Container) error { ...@@ -91,7 +95,7 @@ func addWebService(c *restful.Container) error {
webservice.Route(webservice.GET("/applications"). webservice.Route(webservice.GET("/applications").
To(resources.ListApplication). To(resources.ListApplication).
Writes(models.PageableResponse{}). Returns(http.StatusOK, ok, models.PageableResponse{}).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Doc("List applications in cluster"). Doc("List applications in cluster").
Param(webservice.QueryParameter(params.ConditionsParam, "query conditions"). Param(webservice.QueryParameter(params.ConditionsParam, "query conditions").
...@@ -107,7 +111,7 @@ func addWebService(c *restful.Container) error { ...@@ -107,7 +111,7 @@ func addWebService(c *restful.Container) error {
webservice.Route(webservice.GET("/namespaces/{namespace}/applications"). webservice.Route(webservice.GET("/namespaces/{namespace}/applications").
To(resources.ListNamespacedApplication). To(resources.ListNamespacedApplication).
Writes(models.PageableResponse{}). Returns(http.StatusOK, ok, models.PageableResponse{}).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Doc("List applications"). Doc("List applications").
Param(webservice.QueryParameter(params.ConditionsParam, "query conditions"). Param(webservice.QueryParameter(params.ConditionsParam, "query conditions").
...@@ -122,24 +126,27 @@ func addWebService(c *restful.Container) error { ...@@ -122,24 +126,27 @@ func addWebService(c *restful.Container) error {
webservice.Route(webservice.GET("/namespaces/{namespace}/applications/{cluster_id}"). webservice.Route(webservice.GET("/namespaces/{namespace}/applications/{cluster_id}").
To(resources.DescribeApplication). To(resources.DescribeApplication).
Writes(applications.Application{}). Returns(http.StatusOK, ok, applications.Application{}).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Doc("Describe application"). Doc("Describe application").
Param(webservice.PathParameter("namespace", "namespace name")). Param(webservice.PathParameter("namespace", "namespace name")).
Param(webservice.PathParameter("cluster_id", "openpitrix cluster id"))) Param(webservice.PathParameter("cluster_id", "application id")))
webservice.Route(webservice.POST("/namespaces/{namespace}/applications"). webservice.Route(webservice.POST("/namespaces/{namespace}/applications").
To(resources.DeployApplication). To(resources.DeployApplication).
Doc("Deploy application"). Doc("Deploy application").
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Reads(openpitrix.CreateClusterRequest{}). Reads(openpitrix.CreateClusterRequest{}).
Returns(http.StatusOK, ok, errors.Error{}).
Param(webservice.PathParameter("namespace", "namespace name"))) Param(webservice.PathParameter("namespace", "namespace name")))
webservice.Route(webservice.DELETE("/namespaces/{namespace}/applications/{cluster_id}"). webservice.Route(webservice.DELETE("/namespaces/{namespace}/applications/{cluster_id}").
To(resources.DeleteApplication). To(resources.DeleteApplication).
Doc("Delete application"). Doc("Delete application").
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Param(webservice.PathParameter("namespace", "namespace name"))) Returns(http.StatusOK, ok, errors.Error{}).
Param(webservice.PathParameter("namespace", "namespace name")).
Param(webservice.PathParameter("cluster_id", "application id")))
tags = []string{"User resources"} tags = []string{"User resources"}
...@@ -148,13 +155,14 @@ func addWebService(c *restful.Container) error { ...@@ -148,13 +155,14 @@ func addWebService(c *restful.Container) error {
Doc("get user's kubectl pod"). Doc("get user's kubectl pod").
Param(webservice.PathParameter("username", "username")). Param(webservice.PathParameter("username", "username")).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Writes(models.PodInfo{})) Returns(http.StatusOK, ok, models.PodInfo{}))
webservice.Route(webservice.GET("/users/{username}/kubeconfig"). webservice.Route(webservice.GET("/users/{username}/kubeconfig").
Produces("text/plain"). Produces("text/plain").
To(resources.GetKubeconfig). To(resources.GetKubeconfig).
Doc("get users' kubeconfig"). Doc("get users' kubeconfig").
Param(webservice.PathParameter("username", "username")). Param(webservice.PathParameter("username", "username")).
Returns(http.StatusOK, ok, "").
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
tags = []string{"Components"} tags = []string{"Components"}
...@@ -163,18 +171,18 @@ func addWebService(c *restful.Container) error { ...@@ -163,18 +171,18 @@ func addWebService(c *restful.Container) error {
To(components.GetComponents). To(components.GetComponents).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Doc(""). Doc("").
Writes(map[string]models.Component{})) Returns(http.StatusOK, ok, map[string]models.Component{}))
webservice.Route(webservice.GET("/components/{component}"). webservice.Route(webservice.GET("/components/{component}").
To(components.GetComponentStatus). To(components.GetComponentStatus).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Doc(""). Doc("").
Param(webservice.PathParameter("component", "component name")). Param(webservice.PathParameter("component", "component name")).
Writes(models.Component{})) Returns(http.StatusOK, ok, models.Component{}))
webservice.Route(webservice.GET("/health"). webservice.Route(webservice.GET("/health").
To(components.GetSystemHealthStatus). To(components.GetSystemHealthStatus).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Doc(""). Doc("").
Writes(map[string]int{})) Returns(http.StatusOK, ok, map[string]int{}))
tags = []string{"Quotas"} tags = []string{"Quotas"}
...@@ -182,13 +190,13 @@ func addWebService(c *restful.Container) error { ...@@ -182,13 +190,13 @@ func addWebService(c *restful.Container) error {
To(quotas.GetClusterQuotas). To(quotas.GetClusterQuotas).
Deprecate(). Deprecate().
Doc("get whole cluster's resource usage"). Doc("get whole cluster's resource usage").
Writes(models.ResourceQuota{}). Returns(http.StatusOK, ok, models.ResourceQuota{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
webservice.Route(webservice.GET("/namespaces/{namespace}/quotas"). webservice.Route(webservice.GET("/namespaces/{namespace}/quotas").
Doc("get specified namespace's resource quota and usage"). Doc("get specified namespace's resource quota and usage").
Param(webservice.PathParameter("namespace", "namespace's name")). Param(webservice.PathParameter("namespace", "namespace's name")).
Writes(models.ResourceQuota{}). Returns(http.StatusOK, ok, models.ResourceQuota{}).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
To(quotas.GetNamespaceQuotas)) To(quotas.GetNamespaceQuotas))
...@@ -198,7 +206,8 @@ func addWebService(c *restful.Container) error { ...@@ -198,7 +206,8 @@ func addWebService(c *restful.Container) error {
To(registries.RegistryVerify). To(registries.RegistryVerify).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Doc("docker registry verify"). Doc("docker registry verify").
Writes(errors.Error{})) Reads(registriesmodel.AuthInfo{}).
Returns(http.StatusOK, ok, errors.Error{}))
tags = []string{"Git"} tags = []string{"Git"}
webservice.Route(webservice.POST("/git/readverify"). webservice.Route(webservice.POST("/git/readverify").
...@@ -207,7 +216,7 @@ func addWebService(c *restful.Container) error { ...@@ -207,7 +216,7 @@ func addWebService(c *restful.Container) error {
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Doc("secret git read verify"). Doc("secret git read verify").
Reads(gitmodel.AuthInfo{}). Reads(gitmodel.AuthInfo{}).
Writes(errors.Error{}), Returns(http.StatusOK, ok, errors.Error{}),
) )
tags = []string{"Revision"} tags = []string{"Revision"}
...@@ -218,7 +227,7 @@ func addWebService(c *restful.Container) error { ...@@ -218,7 +227,7 @@ func addWebService(c *restful.Container) error {
Param(webservice.PathParameter("daemonset", "daemonset's name")). Param(webservice.PathParameter("daemonset", "daemonset's name")).
Param(webservice.PathParameter("namespace", "daemonset's namespace")). Param(webservice.PathParameter("namespace", "daemonset's namespace")).
Param(webservice.PathParameter("revision", "daemonset's revision")). Param(webservice.PathParameter("revision", "daemonset's revision")).
Writes(appsv1.DaemonSet{})) Returns(http.StatusOK, ok, appsv1.DaemonSet{}))
webservice.Route(webservice.GET("/namespaces/{namespace}/deployments/{deployment}/revisions/{revision}"). webservice.Route(webservice.GET("/namespaces/{namespace}/deployments/{deployment}/revisions/{revision}").
To(revisions.GetDeployRevision). To(revisions.GetDeployRevision).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
...@@ -226,7 +235,7 @@ func addWebService(c *restful.Container) error { ...@@ -226,7 +235,7 @@ func addWebService(c *restful.Container) error {
Param(webservice.PathParameter("deployment", "deployment's name")). Param(webservice.PathParameter("deployment", "deployment's name")).
Param(webservice.PathParameter("namespace", "deployment's namespace")). Param(webservice.PathParameter("namespace", "deployment's namespace")).
Param(webservice.PathParameter("revision", "deployment's revision")). Param(webservice.PathParameter("revision", "deployment's revision")).
Writes(appsv1.ReplicaSet{})) Returns(http.StatusOK, ok, appsv1.ReplicaSet{}))
webservice.Route(webservice.GET("/namespaces/{namespace}/statefulsets/{statefulset}/revisions/{revision}"). webservice.Route(webservice.GET("/namespaces/{namespace}/statefulsets/{statefulset}/revisions/{revision}").
To(revisions.GetStatefulSetRevision). To(revisions.GetStatefulSetRevision).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
...@@ -234,7 +243,7 @@ func addWebService(c *restful.Container) error { ...@@ -234,7 +243,7 @@ func addWebService(c *restful.Container) error {
Param(webservice.PathParameter("statefulset", "statefulset's name")). Param(webservice.PathParameter("statefulset", "statefulset's name")).
Param(webservice.PathParameter("namespace", "statefulset's namespace")). Param(webservice.PathParameter("namespace", "statefulset's namespace")).
Param(webservice.PathParameter("revision", "statefulset's revision")). Param(webservice.PathParameter("revision", "statefulset's revision")).
Writes(appsv1.StatefulSet{})) Returns(http.StatusOK, ok, appsv1.StatefulSet{}))
tags = []string{"Router"} tags = []string{"Router"}
...@@ -242,7 +251,7 @@ func addWebService(c *restful.Container) error { ...@@ -242,7 +251,7 @@ func addWebService(c *restful.Container) error {
To(routers.GetAllRouters). To(routers.GetAllRouters).
Doc("List all routers"). Doc("List all routers").
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Writes(corev1.Service{})) Returns(http.StatusOK, ok, corev1.Service{}))
webservice.Route(webservice.GET("/namespaces/{namespace}/router"). webservice.Route(webservice.GET("/namespaces/{namespace}/router").
To(routers.GetRouter). To(routers.GetRouter).
...@@ -273,11 +282,13 @@ func addWebService(c *restful.Container) error { ...@@ -273,11 +282,13 @@ func addWebService(c *restful.Container) error {
webservice.Route(webservice.GET("/workloadstatuses"). webservice.Route(webservice.GET("/workloadstatuses").
Doc("get abnormal workloads' count of whole cluster"). Doc("get abnormal workloads' count of whole cluster").
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Returns(http.StatusOK, ok, status.WorkLoadStatus{}).
To(workloadstatuses.GetClusterResourceStatus)) To(workloadstatuses.GetClusterResourceStatus))
webservice.Route(webservice.GET("/namespaces/{namespace}/workloadstatuses"). webservice.Route(webservice.GET("/namespaces/{namespace}/workloadstatuses").
Doc("get abnormal workloads' count of specified namespace"). Doc("get abnormal workloads' count of specified namespace").
Param(webservice.PathParameter("namespace", "the name of namespace")). Param(webservice.PathParameter("namespace", "the name of namespace")).
Metadata(restfulspec.KeyOpenAPITags, tags). Metadata(restfulspec.KeyOpenAPITags, tags).
Returns(http.StatusOK, ok, status.WorkLoadStatus{}).
To(workloadstatuses.GetNamespacesResourceStatus)) To(workloadstatuses.GetNamespacesResourceStatus))
c.Add(webservice) c.Add(webservice)
......
...@@ -20,9 +20,15 @@ package v1alpha2 ...@@ -20,9 +20,15 @@ package v1alpha2
import ( import (
"github.com/emicklei/go-restful" "github.com/emicklei/go-restful"
"github.com/emicklei/go-restful-openapi" "github.com/emicklei/go-restful-openapi"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"kubesphere.io/kubesphere/pkg/apis/tenant/v1alpha1"
"kubesphere.io/kubesphere/pkg/apiserver/runtime" "kubesphere.io/kubesphere/pkg/apiserver/runtime"
"kubesphere.io/kubesphere/pkg/apiserver/tenant" "kubesphere.io/kubesphere/pkg/apiserver/tenant"
"kubesphere.io/kubesphere/pkg/errors"
"kubesphere.io/kubesphere/pkg/models"
"kubesphere.io/kubesphere/pkg/models/devops"
"net/http"
) )
const GroupName = "tenant.kubesphere.io" const GroupName = "tenant.kubesphere.io"
...@@ -36,74 +42,88 @@ var ( ...@@ -36,74 +42,88 @@ var (
func addWebService(c *restful.Container) error { func addWebService(c *restful.Container) error {
tags := []string{"Tenant"} tags := []string{"Tenant"}
ok := "ok"
ws := runtime.NewWebService(GroupVersion) ws := runtime.NewWebService(GroupVersion)
ws.Route(ws.GET("/workspaces"). ws.Route(ws.GET("/workspaces").
To(tenant.ListWorkspaces). To(tenant.ListWorkspaces).
Returns(http.StatusOK, ok, models.PageableResponse{}).
Doc("List workspace by user"). Doc("List workspace by user").
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/workspaces/{workspace}"). ws.Route(ws.GET("/workspaces/{workspace}").
To(tenant.DescribeWorkspace). To(tenant.DescribeWorkspace).
Doc("Get workspace detail"). Doc("Get workspace detail").
Returns(http.StatusOK, ok, v1alpha1.Workspace{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/workspaces/{workspace}/rules"). ws.Route(ws.GET("/workspaces/{workspace}/rules").
To(tenant.ListWorkspaceRules). To(tenant.ListWorkspaceRules).
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Doc("List the rules for the current user"). Doc("List the rules for the current user").
Returns(http.StatusOK, ok, models.SimpleRule{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/namespaces/{namespace}/rules"). ws.Route(ws.GET("/namespaces/{namespace}/rules").
To(tenant.ListNamespaceRules). To(tenant.ListNamespaceRules).
Param(ws.PathParameter("namespace", "namespace")). Param(ws.PathParameter("namespace", "namespace")).
Doc("List the rules for the current user"). Doc("List the rules for the current user").
Returns(http.StatusOK, ok, models.SimpleRule{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/devops/{devops}/rules"). ws.Route(ws.GET("/devops/{devops}/rules").
To(tenant.ListDevopsRules). To(tenant.ListDevopsRules).
Param(ws.PathParameter("devops", "devops project id")). Param(ws.PathParameter("devops", "devops project id")).
Doc("List the rules for the current user"). Doc("List the rules for the current user").
Returns(http.StatusOK, ok, models.SimpleRule{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/workspaces/{workspace}/namespaces"). ws.Route(ws.GET("/workspaces/{workspace}/namespaces").
To(tenant.ListNamespaces). To(tenant.ListNamespaces).
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Doc("List the namespaces for the current user"). Doc("List the namespaces for the current user").
Returns(http.StatusOK, ok, []v1.Namespace{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/workspaces/{workspace}/members/{username}/namespaces"). ws.Route(ws.GET("/workspaces/{workspace}/members/{username}/namespaces").
To(tenant.ListNamespaces). To(tenant.ListNamespaces).
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Param(ws.PathParameter("username", "workspace member's username")). Param(ws.PathParameter("username", "workspace member's username")).
Doc("List the namespaces for the workspace member"). Doc("List the namespaces for the workspace member").
Returns(http.StatusOK, ok, []v1.Namespace{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.POST("/workspaces/{workspace}/namespaces"). ws.Route(ws.POST("/workspaces/{workspace}/namespaces").
To(tenant.CreateNamespace). To(tenant.CreateNamespace).
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Doc("Create namespace"). Doc("Create namespace").
Returns(http.StatusOK, ok, []v1.Namespace{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.DELETE("/workspaces/{workspace}/namespaces/{namespace}"). ws.Route(ws.DELETE("/workspaces/{workspace}/namespaces/{namespace}").
To(tenant.DeleteNamespace). To(tenant.DeleteNamespace).
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Param(ws.PathParameter("namespace", "namespace")). Param(ws.PathParameter("namespace", "namespace")).
Doc("Delete namespace"). Doc("Delete namespace").
Returns(http.StatusOK, ok, errors.Error{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/workspaces/{workspace}/devops"). ws.Route(ws.GET("/workspaces/{workspace}/devops").
To(tenant.ListDevopsProjects). To(tenant.ListDevopsProjects).
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Doc("List devops projects for the current user"). Doc("List devops projects for the current user").
Returns(http.StatusOK, ok, models.PageableResponse{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/workspaces/{workspace}/members/{username}/devops"). ws.Route(ws.GET("/workspaces/{workspace}/members/{username}/devops").
To(tenant.ListDevopsProjects). To(tenant.ListDevopsProjects).
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Param(ws.PathParameter("username", "workspace member's username")). Param(ws.PathParameter("username", "workspace member's username")).
Returns(http.StatusOK, ok, models.PageableResponse{}).
Doc("List the devops projects for the workspace member"). Doc("List the devops projects for the workspace member").
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.POST("/workspaces/{workspace}/devops"). ws.Route(ws.POST("/workspaces/{workspace}/devops").
To(tenant.CreateDevopsProject). To(tenant.CreateDevopsProject).
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Doc("Create devops project"). Doc("Create devops project").
Returns(http.StatusOK, ok, devops.DevOpsProject{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.DELETE("/workspaces/{workspace}/devops/{id}"). ws.Route(ws.DELETE("/workspaces/{workspace}/devops/{id}").
To(tenant.DeleteDevopsProject). To(tenant.DeleteDevopsProject).
Param(ws.PathParameter("workspace", "workspace name")). Param(ws.PathParameter("workspace", "workspace name")).
Doc("Delete devops project"). Doc("Delete devops project").
Returns(http.StatusOK, ok, errors.Error{}).
Metadata(restfulspec.KeyOpenAPITags, tags)) Metadata(restfulspec.KeyOpenAPITags, tags))
ws.Route(ws.GET("/logging"). ws.Route(ws.GET("/logging").
To(tenant.LogQuery). To(tenant.LogQuery).
......
...@@ -31,8 +31,8 @@ import ( ...@@ -31,8 +31,8 @@ import (
) )
type RoleList struct { type RoleList struct {
ClusterRoles []*v1.ClusterRole `json:"clusterRole" protobuf:"bytes,2,rep,name=clusterRoles"` ClusterRoles []*v1.ClusterRole `json:"clusterRole" description:"cluster role list"`
Roles []*v1.Role `json:"roles" protobuf:"bytes,2,rep,name=roles"` Roles []*v1.Role `json:"roles" description:"role list"`
} }
func ListRoleUsers(req *restful.Request, resp *restful.Response) { func ListRoleUsers(req *restful.Request, resp *restful.Response) {
......
...@@ -30,24 +30,24 @@ import ( ...@@ -30,24 +30,24 @@ import (
) )
type Spec struct { type Spec struct {
Token string `json:"token"` Token string `json:"token" description:"access token"`
} }
type Status struct { type Status struct {
Authenticated bool `json:"authenticated"` Authenticated bool `json:"authenticated" description:"is authenticated"`
User map[string]interface{} `json:"user,omitempty"` User map[string]interface{} `json:"user,omitempty" description:"user info"`
} }
type TokenReview struct { type TokenReview struct {
APIVersion string `json:"apiVersion"` APIVersion string `json:"apiVersion" description:"Kubernetes API version"`
Kind string `json:"kind"` Kind string `json:"kind" description:"kind of the API object"`
Spec *Spec `json:"spec,omitempty"` Spec *Spec `json:"spec,omitempty"`
Status *Status `json:"status,omitempty"` Status *Status `json:"status,omitempty" description:"token review status"`
} }
type LoginRequest struct { type LoginRequest struct {
Username string `json:"username"` Username string `json:"username" description:"username"`
Password string `json:"password"` Password string `json:"password" description:"password"`
} }
const ( const (
......
...@@ -25,7 +25,7 @@ import ( ...@@ -25,7 +25,7 @@ import (
) )
type Error struct { type Error struct {
Message string `json:"message"` Message string `json:"message" description:"error message"`
} }
var None = Error{Message: "success"} var None = Error{Message: "success"}
......
...@@ -38,28 +38,28 @@ import ( ...@@ -38,28 +38,28 @@ import (
) )
type Application struct { type Application struct {
Name string `json:"name"` Name string `json:"name" description:"application name"`
RepoName string `json:"repoName"` RepoName string `json:"repoName" description:"repo name"`
Runtime string `json:"namespace"` Runtime string `json:"namespace" description:"namespace"`
RuntimeId string `json:"runtime_id"` RuntimeId string `json:"runtime_id" description:"runtime id"`
Version string `json:"version"` Version string `json:"version" description:"application version"`
VersionId string `json:"version_id"` VersionId string `json:"version_id" description:"application version id"`
Status string `json:"status"` Status string `json:"status" description:"application status"`
UpdateTime time.Time `json:"updateTime"` UpdateTime time.Time `json:"updateTime" description:"update time"`
CreateTime time.Time `json:"createTime"` CreateTime time.Time `json:"createTime" description:"create name"`
App string `json:"app"` App string `json:"app" description:"application template name"`
AppId string `json:"app_id"` AppId string `json:"app_id" description:"application template id"`
Description string `json:"description,omitempty"` Description string `json:"description,omitempty" description:"application description"`
WorkLoads *workLoads `json:"workloads,omitempty"` WorkLoads *workLoads `json:"workloads,omitempty" description:"application workloads"`
Services []v1.Service `json:"services,omitempty"` Services []v1.Service `json:"services,omitempty" description:"application services"`
Ingresses []v1beta1.Ingress `json:"ingresses,omitempty"` Ingresses []v1beta1.Ingress `json:"ingresses,omitempty" description:"application ingresses"`
ClusterID string `json:"cluster_id"` ClusterID string `json:"cluster_id" description:"application id"`
} }
type workLoads struct { type workLoads struct {
Deployments []appsv1.Deployment `json:"deployments,omitempty"` Deployments []appsv1.Deployment `json:"deployments,omitempty" description:"deployment list"`
Statefulsets []appsv1.StatefulSet `json:"statefulsets,omitempty"` Statefulsets []appsv1.StatefulSet `json:"statefulsets,omitempty" description:"statefulset list"`
Daemonsets []appsv1.DaemonSet `json:"daemonsets,omitempty"` Daemonsets []appsv1.DaemonSet `json:"daemonsets,omitempty" description:"daemonset list"`
} }
func ListApplication(runtimeId string, conditions *params.Conditions, limit, offset int) (*models.PageableResponse, error) { func ListApplication(runtimeId string, conditions *params.Conditions, limit, offset int) (*models.PageableResponse, error) {
......
...@@ -11,8 +11,8 @@ import ( ...@@ -11,8 +11,8 @@ import (
) )
type AuthInfo struct { type AuthInfo struct {
RemoteUrl string `json:"remoteUrl"` RemoteUrl string `json:"remoteUrl" description:"git server url"`
SecretRef *corev1.SecretReference `json:"secretRef,omitempty"` SecretRef *corev1.SecretReference `json:"secretRef,omitempty" description:"auth secret reference"`
} }
func GitReadVerify(namespace string, authInfo AuthInfo) error { func GitReadVerify(namespace string, authInfo AuthInfo) error {
......
...@@ -28,9 +28,9 @@ import ( ...@@ -28,9 +28,9 @@ import (
) )
type AuthInfo struct { type AuthInfo struct {
Username string `json:"username"` Username string `json:"username" description:"username"`
Password string `json:"password"` Password string `json:"password" description:"password"`
ServerHost string `json:"serverhost"` ServerHost string `json:"serverhost" description:"registry server host"`
} }
const loginSuccess = "Login Succeeded" const loginSuccess = "Login Succeeded"
......
...@@ -26,14 +26,14 @@ import ( ...@@ -26,14 +26,14 @@ import (
"kubesphere.io/kubesphere/pkg/models/resources" "kubesphere.io/kubesphere/pkg/models/resources"
) )
type workLoadStatus struct { type WorkLoadStatus struct {
Namespace string `json:"namespace"` Namespace string `json:"namespace" description:"namespace"`
Count map[string]int `json:"data"` Count map[string]int `json:"data" description:"unhealthy workload count"`
Items map[string]interface{} `json:"items,omitempty"` Items map[string]interface{} `json:"items,omitempty" description:"unhealthy workloads"`
} }
func GetNamespacesResourceStatus(namespace string) (*workLoadStatus, error) { func GetNamespacesResourceStatus(namespace string) (*WorkLoadStatus, error) {
res := workLoadStatus{Count: make(map[string]int), Namespace: namespace, Items: make(map[string]interface{})} res := WorkLoadStatus{Count: make(map[string]int), Namespace: namespace, Items: make(map[string]interface{})}
var notReadyList *models.PageableResponse var notReadyList *models.PageableResponse
var err error var err error
for _, resource := range []string{resources.Deployments, resources.StatefulSets, resources.DaemonSets, resources.PersistentVolumeClaims, resources.Jobs} { for _, resource := range []string{resources.Deployments, resources.StatefulSets, resources.DaemonSets, resources.PersistentVolumeClaims, resources.Jobs} {
...@@ -61,7 +61,7 @@ func GetNamespacesResourceStatus(namespace string) (*workLoadStatus, error) { ...@@ -61,7 +61,7 @@ func GetNamespacesResourceStatus(namespace string) (*workLoadStatus, error) {
return &res, nil return &res, nil
} }
func GetClusterResourceStatus() (*workLoadStatus, error) { func GetClusterResourceStatus() (*WorkLoadStatus, error) {
return GetNamespacesResourceStatus("") return GetNamespacesResourceStatus("")
} }
...@@ -25,8 +25,8 @@ import ( ...@@ -25,8 +25,8 @@ import (
) )
type PageableResponse struct { type PageableResponse struct {
Items []interface{} `json:"items"` Items []interface{} `json:"items" description:"paging data"`
TotalCount int `json:"total_count"` TotalCount int `json:"total_count" description:"total count"`
} }
type Workspace struct { type Workspace struct {
...@@ -47,8 +47,8 @@ type Rule struct { ...@@ -47,8 +47,8 @@ type Rule struct {
} }
type SimpleRule struct { type SimpleRule struct {
Name string `json:"name"` Name string `json:"name" description:"rule name"`
Actions []string `json:"actions"` Actions []string `json:"actions" description:"actions"`
} }
type User struct { type User struct {
...@@ -82,26 +82,26 @@ type Group struct { ...@@ -82,26 +82,26 @@ type Group struct {
} }
type Component struct { type Component struct {
Name string `json:"name"` Name string `json:"name" description:"component name"`
Namespace string `json:"namespace"` Namespace string `json:"namespace" description:"namespace"`
SelfLink string `json:"selfLink"` SelfLink string `json:"selfLink" description:"self link"`
Label interface{} `json:"label"` Label interface{} `json:"label" description:"labels"`
StartedAt time.Time `json:"startedAt"` StartedAt time.Time `json:"startedAt" description:"started time"`
TotalBackends int `json:"totalBackends"` TotalBackends int `json:"totalBackends" description:"total backends"`
HealthyBackends int `json:"healthyBackends"` HealthyBackends int `json:"healthyBackends" description:"healthy backends"`
} }
type PodInfo struct { type PodInfo struct {
Namespace string `json:"namespace"` Namespace string `json:"namespace" description:"namespace"`
Pod string `json:"pod"` Pod string `json:"pod" description:"pod name"`
Container string `json:"container"` Container string `json:"container" description:"container name"`
} }
type Token struct { type Token struct {
Token string `json:"access_token"` Token string `json:"access_token" description:"access token"`
} }
type ResourceQuota struct { type ResourceQuota struct {
Namespace string `json:"namespace"` Namespace string `json:"namespace" description:"namespace"`
Data corev1.ResourceQuotaStatus `json:"data"` Data corev1.ResourceQuotaStatus `json:"data" description:"resource quota status"`
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册