delete all devops project when delete ws
Signed-off-by: runzexia <runzexia@yunify.com>
This commit is contained in:
@@ -23,7 +23,9 @@ import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"kubesphere.io/kubesphere/pkg/constants"
|
||||
"kubesphere.io/kubesphere/pkg/models"
|
||||
"kubesphere.io/kubesphere/pkg/models/devops"
|
||||
"log"
|
||||
"net/http"
|
||||
"strings"
|
||||
@@ -32,7 +34,7 @@ import (
|
||||
|
||||
var (
|
||||
accountAPIServer string
|
||||
devopsAPIServer string
|
||||
ksAPIServer string
|
||||
once sync.Once
|
||||
c client
|
||||
)
|
||||
@@ -43,6 +45,8 @@ type Interface interface {
|
||||
DescribeGroup(name string) (*models.Group, error)
|
||||
DeleteGroup(name string) error
|
||||
ListUsers() (*models.PageableResponse, error)
|
||||
ListWorkspaceDevOpsProjects(workspace string) (*devops.PageableDevOpsProject, error)
|
||||
DeleteWorkspaceDevOpsProjects(workspace, devops string) error
|
||||
}
|
||||
|
||||
type client struct {
|
||||
@@ -51,6 +55,7 @@ type client struct {
|
||||
|
||||
func init() {
|
||||
flag.StringVar(&accountAPIServer, "ks-account-api-server", "http://ks-account.kubesphere-system.svc", "kubesphere account api server")
|
||||
flag.StringVar(&ksAPIServer, "ks-api-server", "http://ks-apiserver.kubesphere-system.svc", "kubesphere api server")
|
||||
}
|
||||
|
||||
func Client() Interface {
|
||||
@@ -248,6 +253,71 @@ func (c client) ListUsers() (*models.PageableResponse, error) {
|
||||
return &result, nil
|
||||
}
|
||||
|
||||
func (c client) ListWorkspaceDevOpsProjects(workspace string) (*devops.PageableDevOpsProject, error) {
|
||||
req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/kapis/tenant.kubesphere.io/v1alpha2/workspaces/%s/devops", ksAPIServer, workspace), nil)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
req.Header.Add(constants.UserNameHeader, constants.AdminUserName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
log.Println(req.Method, req.URL)
|
||||
resp, err := c.client.Do(req)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
data, err := ioutil.ReadAll(resp.Body)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if resp.StatusCode > http.StatusOK {
|
||||
return nil, Error{resp.StatusCode, string(data)}
|
||||
}
|
||||
|
||||
var result devops.PageableDevOpsProject
|
||||
err = json.Unmarshal(data, &result)
|
||||
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &result, nil
|
||||
|
||||
}
|
||||
|
||||
func (c client) DeleteWorkspaceDevOpsProjects(workspace, devops string) error {
|
||||
req, err := http.NewRequest(http.MethodDelete, fmt.Sprintf("%s/kapis/tenant.kubesphere.io/v1alpha2/workspaces/%s/devops/%s", ksAPIServer, workspace, devops), nil)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
req.Header.Add(constants.UserNameHeader, constants.AdminUserName)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
log.Println(req.Method, req.URL)
|
||||
resp, err := c.client.Do(req)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
data, err := ioutil.ReadAll(resp.Body)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if resp.StatusCode > http.StatusOK {
|
||||
return Error{resp.StatusCode, string(data)}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func IsNotFound(err error) bool {
|
||||
if e, ok := err.(Error); ok {
|
||||
if e.status == http.StatusNotFound {
|
||||
|
||||
Reference in New Issue
Block a user