From 322ba8be06674b3b3fa2752d8c8fd725bafc5581 Mon Sep 17 00:00:00 2001 From: soulseen Date: Wed, 15 May 2019 15:52:34 +0800 Subject: [PATCH 01/28] update jenkins log Signed-off-by: soulseen --- pkg/models/devops/devops.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/models/devops/devops.go b/pkg/models/devops/devops.go index 461d469a7..f91c5ef10 100644 --- a/pkg/models/devops/devops.go +++ b/pkg/models/devops/devops.go @@ -683,7 +683,6 @@ func sendJenkinsRequest(baseUrl string, req *http.Request) ([]byte, error) { defer resp.Body.Close() resBody, _ := getRespBody(resp) - log.Info(string(resBody)) if resp.StatusCode >= http.StatusBadRequest { jkerr := new(JkError) jkerr.Code = resp.StatusCode From 5c32225613d9ce39324ba9e41c61d9ff65c49bed Mon Sep 17 00:00:00 2001 From: Jeff Date: Wed, 15 May 2019 15:53:28 +0800 Subject: [PATCH 02/28] add quota left to namespace quota --- pkg/apis/resources/v1alpha2/register.go | 1 + pkg/models/quotas/quotas.go | 83 ++++++++++++++++++------- 2 files changed, 62 insertions(+), 22 deletions(-) diff --git a/pkg/apis/resources/v1alpha2/register.go b/pkg/apis/resources/v1alpha2/register.go index 729fc2a42..0f0445917 100644 --- a/pkg/apis/resources/v1alpha2/register.go +++ b/pkg/apis/resources/v1alpha2/register.go @@ -180,6 +180,7 @@ func addWebService(c *restful.Container) error { webservice.Route(webservice.GET("/quotas"). To(quotas.GetClusterQuotas). + Deprecate(). Doc("get whole cluster's resource usage"). Writes(models.ResourceQuota{}). Metadata(restfulspec.KeyOpenAPITags, tags)) diff --git a/pkg/models/quotas/quotas.go b/pkg/models/quotas/quotas.go index b1cc20087..d85686a33 100644 --- a/pkg/models/quotas/quotas.go +++ b/pkg/models/quotas/quotas.go @@ -37,18 +37,33 @@ const ( servicesKey = "count/services" statefulsetsKey = "count/statefulsets.apps" persistentvolumeclaimsKey = "persistentvolumeclaims" - storageClassesKey = "count/storageClass" - namespaceKey = "count/namespace" jobsKey = "count/jobs.batch" cronJobsKey = "count/cronjobs.batch" ) +type NamespacedResourceQuota struct { + Namespace string `json:"namespace,omitempty"` + + Data struct { + v1.ResourceQuotaStatus + + // quota left status, do the math on the side, cause it's + // a lot easier with go-client library + Left v1.ResourceList `json:"left,omitempty"` + } `json:"data,omitempty"` +} + var ( - resourceMap = map[string]string{daemonsetsKey: resources.DaemonSets, deploymentsKey: resources.Deployments, - ingressKey: resources.Ingresses, servicesKey: resources.Services, - statefulsetsKey: resources.StatefulSets, persistentvolumeclaimsKey: resources.PersistentVolumeClaims, podsKey: resources.Pods, - namespaceKey: resources.Namespaces, storageClassesKey: resources.StorageClasses, - jobsKey: resources.Jobs, cronJobsKey: resources.CronJobs} + resourceMap = map[string]string{ + daemonsetsKey: resources.DaemonSets, + deploymentsKey: resources.Deployments, + ingressKey: resources.Ingresses, + servicesKey: resources.Services, + statefulsetsKey: resources.StatefulSets, + persistentvolumeclaimsKey: resources.PersistentVolumeClaims, + podsKey: resources.Pods, + jobsKey: resources.Jobs, + cronJobsKey: resources.CronJobs} ) func getUsage(namespace, resource string) (int, error) { @@ -61,12 +76,14 @@ func getUsage(namespace, resource string) (int, error) { } if err != nil { + glog.Error(err) return 0, err } return result.TotalCount, nil } +// no one use this api anymore, marked as deprecated func GetClusterQuotas() (*models.ResourceQuota, error) { quota := v1.ResourceQuotaStatus{Hard: make(v1.ResourceList), Used: make(v1.ResourceList)} @@ -85,7 +102,7 @@ func GetClusterQuotas() (*models.ResourceQuota, error) { } -func GetNamespaceQuotas(namespace string) (*models.ResourceQuota, error) { +func GetNamespaceQuotas(namespace string) (*NamespacedResourceQuota, error) { quota, err := getNamespaceResourceQuota(namespace) if err != nil { glog.Error(err) @@ -95,23 +112,43 @@ func GetNamespaceQuotas(namespace string) (*models.ResourceQuota, error) { quota = &v1.ResourceQuotaStatus{Hard: make(v1.ResourceList), Used: make(v1.ResourceList)} } - for k, v := range resourceMap { - if _, exist := quota.Used[v1.ResourceName(k)]; !exist { - if k == namespaceKey || k == storageClassesKey { - continue + var resourceQuotaLeft = v1.ResourceList{} + + for key, hardLimit := range quota.Hard { + if used, ok := quota.Used[key]; ok { + left := hardLimit.DeepCopy() + left.Sub(used) + if hardLimit.Cmp(used) < 0 { + left = resource.MustParse("0") } - used, err := getUsage(namespace, v) - if err != nil { - return nil, err - } - var quantity resource.Quantity - quantity.Set(int64(used)) - quota.Used[v1.ResourceName(k)] = quantity + resourceQuotaLeft[key] = left } } - return &models.ResourceQuota{Namespace: namespace, Data: *quota}, nil + // add extra quota usage, cause user may not specify them + for key, val := range resourceMap { + // only add them when they don't exist in quotastatus + if _, ok := quota.Used[v1.ResourceName(key)]; !ok { + used, err := getUsage(namespace, val) + if err != nil { + glog.Error(err) + return nil, err + } + + quota.Used[v1.ResourceName(key)] = *(resource.NewQuantity(int64(used), resource.DecimalSI)) + } + } + + var result = NamespacedResourceQuota{ + Namespace: namespace, + } + result.Data.Hard = quota.Hard + result.Data.Used = quota.Used + result.Data.Left = resourceQuotaLeft + + return &result, nil + } func updateNamespaceQuota(tmpResourceList, resourceList v1.ResourceList) { @@ -127,14 +164,16 @@ func updateNamespaceQuota(tmpResourceList, resourceList v1.ResourceList) { tmpResourceList[res] = usage } } - } func getNamespaceResourceQuota(namespace string) (*v1.ResourceQuotaStatus, error) { resourceQuotaLister := informers.SharedInformerFactory().Core().V1().ResourceQuotas().Lister() quotaList, err := resourceQuotaLister.ResourceQuotas(namespace).List(labels.Everything()) - if err != nil || len(quotaList) == 0 { + if err != nil { + glog.Error(err) return nil, err + } else if len(quotaList) == 0 { + return nil, nil } quotaStatus := v1.ResourceQuotaStatus{Hard: make(v1.ResourceList), Used: make(v1.ResourceList)} From 3d11687d2ae64b6ec2d56efe8ef85600b256a015 Mon Sep 17 00:00:00 2001 From: runzexia Date: Mon, 13 May 2019 17:56:39 +0800 Subject: [PATCH 03/28] delete all devops project when delete ws Signed-off-by: runzexia --- .../workspace/workspace_controller.go | 39 ++++++++++ pkg/models/devops/project.go | 5 ++ .../client/kubesphere/kubesphereclient.go | 72 ++++++++++++++++++- 3 files changed, 115 insertions(+), 1 deletion(-) diff --git a/pkg/controller/workspace/workspace_controller.go b/pkg/controller/workspace/workspace_controller.go index 72d3a5ee0..b1f6dff19 100644 --- a/pkg/controller/workspace/workspace_controller.go +++ b/pkg/controller/workspace/workspace_controller.go @@ -43,6 +43,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/reconcile" logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" "sigs.k8s.io/controller-runtime/pkg/source" + "sync" ) const ( @@ -137,6 +138,10 @@ func (r *ReconcileWorkspace) Reconcile(request reconcile.Request) (reconcile.Res return reconcile.Result{}, err } + if err := r.deleteDevOpsProjects(instance); err != nil { + return reconcile.Result{}, err + } + // remove our finalizer from the list and update it. instance.ObjectMeta.Finalizers = sliceutil.RemoveString(instance.ObjectMeta.Finalizers, func(item string) bool { return item == finalizer @@ -327,6 +332,40 @@ func (r *ReconcileWorkspace) deleteGroup(instance *tenantv1alpha1.Workspace) err return nil } +func (r *ReconcileWorkspace) deleteDevOpsProjects(instance *tenantv1alpha1.Workspace) error { + var wg sync.WaitGroup + + log.Info("Delete DevOps Projects") + for { + errChan := make(chan error, 10) + projects, err := r.ksclient.ListWorkspaceDevOpsProjects(instance.Name) + if err != nil { + log.Error(err, "Failed to Get Workspace's DevOps Projects", "ws", instance.Name) + return err + } + if projects.TotalCount == 0 { + return nil + } + for _, project := range projects.Items { + wg.Add(1) + go func(workspace, devops string) { + err := r.ksclient.DeleteWorkspaceDevOpsProjects(workspace, devops) + errChan <- err + wg.Done() + }(instance.Name, project.ProjectId) + } + wg.Wait() + close(errChan) + for err := range errChan { + if err != nil { + log.Error(err, "delete devops project error") + return err + } + } + + } +} + func (r *ReconcileWorkspace) createWorkspaceRoleBindings(instance *tenantv1alpha1.Workspace) error { adminRoleBinding := &rbac.ClusterRoleBinding{} diff --git a/pkg/models/devops/project.go b/pkg/models/devops/project.go index e62271499..37111f3e5 100644 --- a/pkg/models/devops/project.go +++ b/pkg/models/devops/project.go @@ -31,6 +31,11 @@ const ( DevOpsProjectCreateTimeColumn = "project.create_time" ) +type PageableDevOpsProject struct { + Items []*DevOpsProject `json:"items"` + TotalCount int `json:"total_count"` +} + type DevOpsProject struct { ProjectId string `json:"project_id" db:"project_id"` Name string `json:"name"` diff --git a/pkg/simple/client/kubesphere/kubesphereclient.go b/pkg/simple/client/kubesphere/kubesphereclient.go index f7040e2da..f5880525a 100644 --- a/pkg/simple/client/kubesphere/kubesphereclient.go +++ b/pkg/simple/client/kubesphere/kubesphereclient.go @@ -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 { From 3c72d0881588977ffd71efabf79534f1702658e2 Mon Sep 17 00:00:00 2001 From: runzexia Date: Wed, 15 May 2019 17:09:07 +0800 Subject: [PATCH 04/28] update Signed-off-by: runzexia --- .../client/kubesphere/kubesphereclient.go | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/pkg/simple/client/kubesphere/kubesphereclient.go b/pkg/simple/client/kubesphere/kubesphereclient.go index f5880525a..e5e6c9867 100644 --- a/pkg/simple/client/kubesphere/kubesphereclient.go +++ b/pkg/simple/client/kubesphere/kubesphereclient.go @@ -22,6 +22,7 @@ import ( "encoding/json" "flag" "fmt" + "github.com/golang/glog" "io/ioutil" "kubesphere.io/kubesphere/pkg/constants" "kubesphere.io/kubesphere/pkg/models" @@ -257,25 +258,28 @@ func (c client) ListWorkspaceDevOpsProjects(workspace string) (*devops.PageableD req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/kapis/tenant.kubesphere.io/v1alpha2/workspaces/%s/devops", ksAPIServer, workspace), nil) if err != nil { + glog.Error(err) return nil, err } + req.Header.Add(constants.UserNameHeader, constants.AdminUserName) - if err != nil { - return nil, err - } - log.Println(req.Method, req.URL) + + glog.Info(req.Method, req.URL) resp, err := c.client.Do(req) if err != nil { + glog.Error(err) return nil, err } defer resp.Body.Close() data, err := ioutil.ReadAll(resp.Body) if err != nil { + glog.Error(err) return nil, err } if resp.StatusCode > http.StatusOK { + glog.Error(req.Method, req.URL, resp.StatusCode, string(data)) return nil, Error{resp.StatusCode, string(data)} } @@ -283,6 +287,7 @@ func (c client) ListWorkspaceDevOpsProjects(workspace string) (*devops.PageableD err = json.Unmarshal(data, &result) if err != nil { + glog.Error(err) return nil, err } return &result, nil @@ -293,25 +298,27 @@ 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 { + glog.Error(err) return err } req.Header.Add(constants.UserNameHeader, constants.AdminUserName) - if err != nil { - return err - } - log.Println(req.Method, req.URL) + + glog.Info(req.Method, req.URL) resp, err := c.client.Do(req) if err != nil { + glog.Error(err) return err } defer resp.Body.Close() data, err := ioutil.ReadAll(resp.Body) if err != nil { + glog.Error(err) return err } if resp.StatusCode > http.StatusOK { + glog.Error(req.Method, req.URL, resp.StatusCode, string(data)) return Error{resp.StatusCode, string(data)} } From 502a7d33e697860c36982a62135915a164bff36e Mon Sep 17 00:00:00 2001 From: huanggze Date: Wed, 15 May 2019 21:20:45 +0800 Subject: [PATCH 05/28] logging: remove redundant code Signed-off-by: huanggze --- pkg/simple/client/elasticsearch/esclient.go | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/pkg/simple/client/elasticsearch/esclient.go b/pkg/simple/client/elasticsearch/esclient.go index 896b1a2da..73b9c5301 100644 --- a/pkg/simple/client/elasticsearch/esclient.go +++ b/pkg/simple/client/elasticsearch/esclient.go @@ -158,16 +158,8 @@ type StartTimeAgg struct { } type TopHits struct { - Sort []TopHitsSort `json:"sort"` - Size int `json:"size"` -} - -type TopHitsSort struct { - Order TopHitsSortOrder `json:"time"` -} - -type TopHitsSortOrder struct { - Type string `json:"order"` + Sort []Sort `json:"sort"` + Size int `json:"size"` } type HistogramAggs struct { @@ -263,7 +255,7 @@ func createQueryRequest(param QueryParameters) (int, []byte, error) { if param.Operation == "statistics" { operation = OperationStatistics containerAgg := AggField{"kubernetes.docker_id.keyword"} - startTimeAgg := TopHits{[]TopHitsSort{{TopHitsSortOrder{"asc"}}}, 1} + startTimeAgg := TopHits{[]Sort{{Order{"asc"}}}, 1} statisticAggs := StatisticsAggs{ContainerAgg{containerAgg}, StartTimeAgg{startTimeAgg}} request.Aggs = statisticAggs request.Size = 0 From 273aa0102aeb657e3e2597c6746f1d943ddd9d0f Mon Sep 17 00:00:00 2001 From: Jeff Date: Thu, 16 May 2019 00:59:56 +0800 Subject: [PATCH 06/28] remove useless logs --- Gopkg.lock | 1 - .../destinationrule_controller.go | 4 +-- .../virtualservice_controller.go | 4 +-- pkg/simple/client/elasticsearch/esclient.go | 4 --- .../client/kubesphere/kubesphereclient.go | 30 +++++++++++-------- .../client/openpitrix/openpitrixclient.go | 16 ++++++---- .../genericreconciler/genericreconciler.go | 29 ++++-------------- 7 files changed, 36 insertions(+), 52 deletions(-) diff --git a/Gopkg.lock b/Gopkg.lock index 117f41b7a..2410d4bda 100644 --- a/Gopkg.lock +++ b/Gopkg.lock @@ -568,7 +568,6 @@ "pkg/kbcontroller", "pkg/resource" ] - revision = "1be8f5eada07fe5b17804e4b91fc2f4c4fc4ecb9" source = "https://github.com/kubesphere/application" [[projects]] diff --git a/pkg/controller/destinationrule/destinationrule_controller.go b/pkg/controller/destinationrule/destinationrule_controller.go index 798834b81..688ec08c5 100644 --- a/pkg/controller/destinationrule/destinationrule_controller.go +++ b/pkg/controller/destinationrule/destinationrule_controller.go @@ -211,9 +211,9 @@ func (v *DestinationRuleController) syncService(key string) error { service, err := v.serviceLister.Services(namespace).Get(name) if err != nil { - // Delete the corresponding destinationrule, as the service has been deleted. + // Delete the corresponding destinationrule if there is any, as the service has been deleted. err = v.destinationRuleClient.NetworkingV1alpha3().DestinationRules(namespace).Delete(name, nil) - if !errors.IsNotFound(err) { + if err != nil && !errors.IsNotFound(err) { log.Error(err, "delete destination rule failed", "namespace", namespace, "name", name) return err } diff --git a/pkg/controller/virtualservice/virtualservice_controller.go b/pkg/controller/virtualservice/virtualservice_controller.go index d3513c22f..42e2cbb5b 100644 --- a/pkg/controller/virtualservice/virtualservice_controller.go +++ b/pkg/controller/virtualservice/virtualservice_controller.go @@ -264,9 +264,7 @@ func (v *VirtualServiceController) syncService(key string) error { subsets := destinationRule.Spec.Subsets if len(subsets) == 0 { // destination rule with no subsets, not possibly - err = fmt.Errorf("found destinationrule with no subsets for service %s", name) - log.Error(err, "found destinationrule with no subsets", "namespace", namespace, "name", appName) - return err + return nil } // fetch all strategies applied to service diff --git a/pkg/simple/client/elasticsearch/esclient.go b/pkg/simple/client/elasticsearch/esclient.go index 73b9c5301..b78900b32 100644 --- a/pkg/simple/client/elasticsearch/esclient.go +++ b/pkg/simple/client/elasticsearch/esclient.go @@ -566,14 +566,10 @@ func stubResult() *QueryResult { func Query(param QueryParameters) *QueryResult { var queryResult *QueryResult - //queryResult = stubResult() - //return queryResult - client := &http.Client{} operation, query, err := createQueryRequest(param) if err != nil { - //fmt.Println("Create query error ", err.Error()) queryResult = new(QueryResult) queryResult.Status = http.StatusNotFound return queryResult diff --git a/pkg/simple/client/kubesphere/kubesphereclient.go b/pkg/simple/client/kubesphere/kubesphereclient.go index e5e6c9867..f116f3201 100644 --- a/pkg/simple/client/kubesphere/kubesphereclient.go +++ b/pkg/simple/client/kubesphere/kubesphereclient.go @@ -27,7 +27,6 @@ import ( "kubesphere.io/kubesphere/pkg/constants" "kubesphere.io/kubesphere/pkg/models" "kubesphere.io/kubesphere/pkg/models/devops" - "log" "net/http" "strings" "sync" @@ -84,20 +83,22 @@ func (c client) CreateGroup(group *models.Group) (*models.Group, error) { req, err := http.NewRequest(http.MethodPost, fmt.Sprintf("%s/kapis/iam.kubesphere.io/v1alpha2/groups", accountAPIServer), bytes.NewReader(data)) if err != nil { + glog.Error(err) return nil, err } req.Header.Add("Content-Type", "application/json") - log.Println(req.Method, req.URL, string(data)) resp, err := c.client.Do(req) if err != nil { + glog.Error(err) return nil, err } defer resp.Body.Close() data, err = ioutil.ReadAll(resp.Body) if err != nil { + glog.Error(err) return nil, err } @@ -108,6 +109,7 @@ func (c client) CreateGroup(group *models.Group) (*models.Group, error) { err = json.Unmarshal(data, group) if err != nil { + glog.Error(err) return nil, err } @@ -118,20 +120,18 @@ func (c client) UpdateGroup(group *models.Group) (*models.Group, error) { data, err := json.Marshal(group) if err != nil { + glog.Error(err) return nil, err } req, err := http.NewRequest(http.MethodPut, fmt.Sprintf("%s/kapis/iam.kubesphere.io/v1alpha2/groups/%s", accountAPIServer, group.Name), bytes.NewReader(data)) if err != nil { + glog.Error(err) return nil, err } req.Header.Add("Content-Type", "application/json") - if err != nil { - return nil, err - } - log.Println(req.Method, req.URL, string(data)) resp, err := c.client.Do(req) if err != nil { @@ -141,6 +141,7 @@ func (c client) UpdateGroup(group *models.Group) (*models.Group, error) { data, err = ioutil.ReadAll(resp.Body) if err != nil { + glog.Error(err) return nil, err } @@ -151,6 +152,7 @@ func (c client) UpdateGroup(group *models.Group) (*models.Group, error) { err = json.Unmarshal(data, group) if err != nil { + glog.Error(err) return nil, err } @@ -161,19 +163,21 @@ func (c client) DeleteGroup(name string) error { req, err := http.NewRequest(http.MethodDelete, fmt.Sprintf("%s/kapis/iam.kubesphere.io/v1alpha2/groups/%s", accountAPIServer, name), nil) if err != nil { + glog.Error(err) return err } - log.Println(req.Method, req.URL) resp, err := c.client.Do(req) if err != nil { + glog.Error(err) return err } defer resp.Body.Close() data, err := ioutil.ReadAll(resp.Body) if err != nil { + glog.Error(err) return err } @@ -188,18 +192,20 @@ func (c client) DescribeGroup(name string) (*models.Group, error) { req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/kapis/iam.kubesphere.io/v1alpha2/groups/%s", accountAPIServer, name), nil) if err != nil { + glog.Error(err) return nil, err } - log.Println(req.Method, req.URL) resp, err := c.client.Do(req) if err != nil { + glog.Error(err) return nil, err } defer resp.Body.Close() data, err := ioutil.ReadAll(resp.Body) if err != nil { + glog.Error(err) return nil, err } @@ -211,6 +217,7 @@ func (c client) DescribeGroup(name string) (*models.Group, error) { err = json.Unmarshal(data, &group) if err != nil { + glog.Error(err) return nil, err } @@ -224,19 +231,17 @@ func (c client) ListUsers() (*models.PageableResponse, error) { return nil, err } req.Header.Add("Authorization", accountAPIServer) - if err != nil { - return nil, err - } - log.Println(req.Method, req.URL) resp, err := c.client.Do(req) if err != nil { + glog.Error(err) return nil, err } defer resp.Body.Close() data, err := ioutil.ReadAll(resp.Body) if err != nil { + glog.Error(err) return nil, err } @@ -248,6 +253,7 @@ func (c client) ListUsers() (*models.PageableResponse, error) { err = json.Unmarshal(data, &result) if err != nil { + glog.Error(err) return nil, err } diff --git a/pkg/simple/client/openpitrix/openpitrixclient.go b/pkg/simple/client/openpitrix/openpitrixclient.go index 6d97b3df0..b9844d96b 100644 --- a/pkg/simple/client/openpitrix/openpitrixclient.go +++ b/pkg/simple/client/openpitrix/openpitrixclient.go @@ -22,8 +22,8 @@ import ( "encoding/json" "flag" "fmt" + "github.com/golang/glog" "io/ioutil" - "log" "net/http" "sync" ) @@ -78,27 +78,30 @@ func (c client) CreateRuntime(runtime *RunTime) error { data, err := json.Marshal(runtime) if err != nil { + glog.Error(err) return err } req, err := http.NewRequest(http.MethodPost, fmt.Sprintf("%s/v1/runtimes", openpitrixAPIServer), bytes.NewReader(data)) if err != nil { + glog.Error(err) return err } req.Header.Add("Content-Type", "application/json") req.Header.Add("Authorization", openpitrixProxyToken) - log.Println(req.Method, req.URL, openpitrixProxyToken, string(data)) resp, err := c.client.Do(req) if err != nil { + glog.Error(err) return err } defer resp.Body.Close() data, err = ioutil.ReadAll(resp.Body) if err != nil { + glog.Error(err) return err } @@ -114,23 +117,24 @@ func (c client) DeleteRuntime(runtimeId string) error { req, err := http.NewRequest(http.MethodDelete, fmt.Sprintf("%s/v1/runtimes", openpitrixAPIServer), bytes.NewReader(data)) if err != nil { + glog.Error(err) + return err } req.Header.Add("Authorization", openpitrixProxyToken) - if err != nil { - return err - } - log.Println(req.Method, req.URL) + resp, err := c.client.Do(req) if err != nil { + glog.Error(err) return err } defer resp.Body.Close() data, err = ioutil.ReadAll(resp.Body) if err != nil { + glog.Error(err) return err } diff --git a/vendor/github.com/kubernetes-sigs/application/pkg/genericreconciler/genericreconciler.go b/vendor/github.com/kubernetes-sigs/application/pkg/genericreconciler/genericreconciler.go index c143c03bd..894754cba 100644 --- a/vendor/github.com/kubernetes-sigs/application/pkg/genericreconciler/genericreconciler.go +++ b/vendor/github.com/kubernetes-sigs/application/pkg/genericreconciler/genericreconciler.go @@ -71,7 +71,6 @@ func (gr *Reconciler) observe(observables ...resource.Observable) (*resource.Obj types.NamespacedName{Name: name, Namespace: namespace}, obs.Obj.(runtime.Object)) if err == nil { - log.Printf(" >>get: %s", otype+"/"+namespace+"/"+name) resources = append(resources, resource.Object{Obj: obs.Obj}) } else { log.Printf(" >>>ERR get: %s", otype+"/"+namespace+"/"+name) @@ -147,11 +146,9 @@ func (gr *Reconciler) ReconcileCR(namespacedname types.NamespacedName, handle cr err := gr.Get(context.TODO(), namespacedname, rsrc.(runtime.Object)) if err == nil { o := rsrc.(metav1.Object) - log.Printf("%s Validating spec\n", name) err = rsrc.Validate() status = rsrc.NewStatus() if err == nil { - log.Printf("%s Applying defaults\n", name) rsrc.ApplyDefaults() components := rsrc.Components() for _, component := range components { @@ -230,8 +227,8 @@ func (gr *Reconciler) ObserveAndMutate(crname string, c component.Component, sta // FinalizeComponent is a function that finalizes component func (gr *Reconciler) FinalizeComponent(crname string, c component.Component, status interface{}, aggregated *resource.ObjectBag) error { cname := crname + "(cmpnt:" + c.Name + ")" - log.Printf("%s { finalizing component\n", cname) - defer log.Printf("%s } finalizing component\n", cname) + log.Printf("%s finalizing component\n", cname) + defer log.Printf("%s finalizing component completed", cname) expected, observed, err := gr.ObserveAndMutate(crname, c, status, false, aggregated) @@ -249,8 +246,8 @@ func (gr *Reconciler) ReconcileComponent(crname string, c component.Component, s var reconciled *resource.ObjectBag = new(resource.ObjectBag) cname := crname + "(cmpnt:" + c.Name + ")" - log.Printf("%s { reconciling component\n", cname) - defer log.Printf("%s } reconciling component\n", cname) + log.Printf("%s reconciling component\n", cname) + defer log.Printf("%s reconciling component completed\n", cname) expected, observed, err := gr.ObserveAndMutate(crname, c, status, true, aggregated) @@ -270,17 +267,8 @@ func (gr *Reconciler) ReconcileComponent(crname string, c component.Component, s errs = handleErrorArr("", crname, err, errs) } else { aggregated.Add(expected.Items()...) - log.Printf("%s Expected Resources:\n", cname) - for _, e := range expected.Items() { - log.Printf("%s exp: %s/%s/%s\n", cname, e.Obj.GetNamespace(), reflect.TypeOf(e.Obj).String(), e.Obj.GetName()) - } - log.Printf("%s Observed Resources:\n", cname) - for _, e := range observed.Items() { - log.Printf("%s obs: %s/%s/%s\n", cname, e.Obj.GetNamespace(), reflect.TypeOf(e.Obj).String(), e.Obj.GetName()) - } - - log.Printf("%s Reconciling Resources:\n", cname) } + for _, e := range expected.Items() { seen := false eNamespace := e.Obj.GetNamespace() @@ -298,11 +286,7 @@ func (gr *Reconciler) ReconcileComponent(crname string, c component.Component, s if e.Lifecycle == resource.LifecycleManaged && (specDiffers(e.Obj, o.Obj) && c.Differs(e.Obj, o.Obj) || injectOwnerRefs(e.Obj, c.OwnerRef)) { if err := gr.Update(context.TODO(), e.Obj.(runtime.Object).DeepCopyObject()); err != nil { errs = handleErrorArr("update", eRsrcInfo, err, errs) - } else { - log.Printf("%s update: %s\n", cname, eRsrcInfo) } - } else { - log.Printf("%s nochange: %s\n", cname, eRsrcInfo) } reconciled.Add(o) seen = true @@ -315,7 +299,6 @@ func (gr *Reconciler) ReconcileComponent(crname string, c component.Component, s if err := gr.Create(context.TODO(), e.Obj.(runtime.Object)); err != nil { errs = handleErrorArr("Create", cname, err, errs) } else { - log.Printf("%s +create: %s\n", cname, eRsrcInfo) reconciled.Add(e) } } else { @@ -344,8 +327,6 @@ func (gr *Reconciler) ReconcileComponent(crname string, c component.Component, s if !seen { if err := gr.Delete(context.TODO(), o.Obj.(runtime.Object)); err != nil { errs = handleErrorArr("delete", oRsrcInfo, err, errs) - } else { - log.Printf("%s -delete: %s\n", cname, oRsrcInfo) } } } From 40ebeccfaad8e36e584daf4e91b29ed7622dd42c Mon Sep 17 00:00:00 2001 From: Jeff Date: Thu, 16 May 2019 15:28:43 +0800 Subject: [PATCH 07/28] delete orphan resources where service deleted --- cmd/controller-manager/app/controllers.go | 3 ++- .../application/application_controller.go | 2 +- .../destinationrule_controller.go | 20 +++++++++++++++---- .../virtualservice_controller.go | 12 +++++++++-- 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/cmd/controller-manager/app/controllers.go b/cmd/controller-manager/app/controllers.go index d23f76e64..0bd907f0b 100644 --- a/cmd/controller-manager/app/controllers.go +++ b/cmd/controller-manager/app/controllers.go @@ -88,7 +88,8 @@ func AddControllers(mgr manager.Manager, cfg *rest.Config, stopCh <-chan struct{ informerFactory.Core().V1().Services(), servicemeshInformer.Servicemesh().V1alpha2().ServicePolicies(), kubeClient, - istioclient) + istioclient, + servicemeshclient) apController := application.NewApplicationController(informerFactory.Core().V1().Services(), informerFactory.Apps().V1().Deployments(), diff --git a/pkg/controller/application/application_controller.go b/pkg/controller/application/application_controller.go index bebd16e5e..208f28d85 100644 --- a/pkg/controller/application/application_controller.go +++ b/pkg/controller/application/application_controller.go @@ -149,7 +149,7 @@ func NewApplicationController(serviceInformer coreinformers.ServiceInformer, } func (v *ApplicationController) Start(stopCh <-chan struct{}) error { - v.Run(5, stopCh) + v.Run(2, stopCh) return nil } diff --git a/pkg/controller/destinationrule/destinationrule_controller.go b/pkg/controller/destinationrule/destinationrule_controller.go index 688ec08c5..f83be2b94 100644 --- a/pkg/controller/destinationrule/destinationrule_controller.go +++ b/pkg/controller/destinationrule/destinationrule_controller.go @@ -34,6 +34,7 @@ import ( "k8s.io/client-go/util/workqueue" "time" + servicemeshclient "kubesphere.io/kubesphere/pkg/client/clientset/versioned" servicemeshinformers "kubesphere.io/kubesphere/pkg/client/informers/externalversions/servicemesh/v1alpha2" servicemeshlisters "kubesphere.io/kubesphere/pkg/client/listers/servicemesh/v1alpha2" ) @@ -53,6 +54,7 @@ type DestinationRuleController struct { client clientset.Interface destinationRuleClient istioclientset.Interface + servicemeshClient servicemeshclient.Interface eventBroadcaster record.EventBroadcaster eventRecorder record.EventRecorder @@ -79,7 +81,8 @@ func NewDestinationRuleController(deploymentInformer informersv1.DeploymentInfor serviceInformer coreinformers.ServiceInformer, servicePolicyInformer servicemeshinformers.ServicePolicyInformer, client clientset.Interface, - destinationRuleClient istioclientset.Interface) *DestinationRuleController { + destinationRuleClient istioclientset.Interface, + servicemeshClient servicemeshclient.Interface) *DestinationRuleController { broadcaster := record.NewBroadcaster() broadcaster.StartLogging(func(format string, args ...interface{}) { @@ -95,6 +98,7 @@ func NewDestinationRuleController(deploymentInformer informersv1.DeploymentInfor v := &DestinationRuleController{ client: client, destinationRuleClient: destinationRuleClient, + servicemeshClient: servicemeshClient, queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), "destinationrule"), workerLoopPeriod: time.Second, } @@ -211,12 +215,20 @@ func (v *DestinationRuleController) syncService(key string) error { service, err := v.serviceLister.Services(namespace).Get(name) if err != nil { - // Delete the corresponding destinationrule if there is any, as the service has been deleted. + // delete the corresponding destinationrule if there is any, as the service has been deleted. err = v.destinationRuleClient.NetworkingV1alpha3().DestinationRules(namespace).Delete(name, nil) if err != nil && !errors.IsNotFound(err) { log.Error(err, "delete destination rule failed", "namespace", namespace, "name", name) return err } + + // delete orphan service policy if there is any + err = v.servicemeshClient.ServicemeshV1alpha2().ServicePolicies(namespace).Delete(name, nil) + if err != nil && !errors.IsNotFound(err) { + log.Error(err, "delete orphan service policy failed", "namespace", namespace, "name", name) + return err + } + return nil } @@ -332,9 +344,9 @@ func (v *DestinationRuleController) syncService(key string) error { } if createDestinationRule { - newDestinationRule, err = v.destinationRuleClient.NetworkingV1alpha3().DestinationRules(namespace).Create(newDestinationRule) + _, err = v.destinationRuleClient.NetworkingV1alpha3().DestinationRules(namespace).Create(newDestinationRule) } else { - newDestinationRule, err = v.destinationRuleClient.NetworkingV1alpha3().DestinationRules(namespace).Update(newDestinationRule) + _, err = v.destinationRuleClient.NetworkingV1alpha3().DestinationRules(namespace).Update(newDestinationRule) } if err != nil { diff --git a/pkg/controller/virtualservice/virtualservice_controller.go b/pkg/controller/virtualservice/virtualservice_controller.go index 42e2cbb5b..ba81de932 100644 --- a/pkg/controller/virtualservice/virtualservice_controller.go +++ b/pkg/controller/virtualservice/virtualservice_controller.go @@ -231,6 +231,14 @@ func (v *VirtualServiceController) syncService(key string) error { log.Error(err, "delete orphan virtualservice failed", "namespace", namespace, "name", service.Name) return err } + + // delete the orphan strategy if there is any + err = v.servicemeshClient.ServicemeshV1alpha2().Strategies(namespace).Delete(name, nil) + if err != nil && !errors.IsNotFound(err) { + log.Error(err, "delete orphan strategy failed", "namespace", namespace, "name", service.Name) + return err + } + return nil } log.Error(err, "get service failed", "namespace", namespace, "name", name) @@ -385,9 +393,9 @@ func (v *VirtualServiceController) syncService(key string) error { } if createVirtualService { - newVirtualService, err = v.virtualServiceClient.NetworkingV1alpha3().VirtualServices(namespace).Create(newVirtualService) + _, err = v.virtualServiceClient.NetworkingV1alpha3().VirtualServices(namespace).Create(newVirtualService) } else { - newVirtualService, err = v.virtualServiceClient.NetworkingV1alpha3().VirtualServices(namespace).Update(newVirtualService) + _, err = v.virtualServiceClient.NetworkingV1alpha3().VirtualServices(namespace).Update(newVirtualService) } if err != nil { From 157c1c37a74a9b74af9d621c89d19f195e491dfa Mon Sep 17 00:00:00 2001 From: soulseen Date: Thu, 16 May 2019 16:10:34 +0800 Subject: [PATCH 08/28] fix jenkins header Signed-off-by: soulseen --- pkg/apiserver/devops/devops.go | 11 +++++++++-- pkg/models/devops/devops.go | 34 +++++++++++++++++++++------------- pkg/models/devops/urlconfig.go | 34 ++++++++++++++++++---------------- 3 files changed, 48 insertions(+), 31 deletions(-) diff --git a/pkg/apiserver/devops/devops.go b/pkg/apiserver/devops/devops.go index 5245e3529..13314add0 100644 --- a/pkg/apiserver/devops/devops.go +++ b/pkg/apiserver/devops/devops.go @@ -104,11 +104,15 @@ func GetBranchStepLog(req *restful.Request, resp *restful.Response) { nodeId := req.PathParameter("nodeId") stepId := req.PathParameter("stepId") - res, err := devops.GetBranchStepLog(projectName, pipelineName, branchName, runId, nodeId, stepId, req.Request) + res, header, err := devops.GetBranchStepLog(projectName, pipelineName, branchName, runId, nodeId, stepId, req.Request) + if err != nil { parseErr(err, resp) return } + for k, v := range header { + resp.AddHeader(k, v[0]) + } resp.Write(res) } @@ -119,11 +123,14 @@ func GetStepLog(req *restful.Request, resp *restful.Response) { nodeId := req.PathParameter("nodeId") stepId := req.PathParameter("stepId") - res, err := devops.GetStepLog(projectName, pipelineName, runId, nodeId, stepId, req.Request) + res, header, err := devops.GetStepLog(projectName, pipelineName, runId, nodeId, stepId, req.Request) if err != nil { parseErr(err, resp) return } + for k, v := range header { + resp.AddHeader(k, v[0]) + } resp.Write(res) } diff --git a/pkg/models/devops/devops.go b/pkg/models/devops/devops.go index f91c5ef10..7cea449af 100644 --- a/pkg/models/devops/devops.go +++ b/pkg/models/devops/devops.go @@ -106,30 +106,31 @@ func GetPipelineRunNodesbyBranch(projectName, pipelineName, branchName, runId st return res, err } -func GetBranchStepLog(projectName, pipelineName, branchName, runId, nodeId, stepId string, req *http.Request) ([]byte, error) { +func GetBranchStepLog(projectName, pipelineName, branchName, runId, nodeId, stepId string, req *http.Request) ([]byte, http.Header, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetBranchStepLogUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId, nodeId, stepId) log.Infof("Jenkins-url: " + baseUrl) - resBody, err := sendJenkinsRequest(baseUrl, req) + resBody, header, err := jenkinsClient(baseUrl, req) if err != nil { log.Error(err) - return nil, err + return nil, nil, err } - return resBody, err + return resBody, header, err } -func GetStepLog(projectName, pipelineName, runId, nodeId, stepId string, req *http.Request) ([]byte, error) { +func GetStepLog(projectName, pipelineName, runId, nodeId, stepId string, req *http.Request) ([]byte, http.Header, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetStepLogUrl+req.URL.RawQuery, projectName, pipelineName, runId, nodeId, stepId) log.Infof("Jenkins-url: " + baseUrl) - resBody, err := sendJenkinsRequest(baseUrl, req) + resBody, header, err := jenkinsClient(baseUrl, req) if err != nil { log.Error(err) - return nil, err + return nil, nil, err } - return resBody, err + return resBody, header, err + } func Validate(scmId string, req *http.Request) ([]byte, error) { @@ -658,10 +659,15 @@ func GetNodesDetail(projectName, pipelineName, runId string, req *http.Request) // create jenkins request func sendJenkinsRequest(baseUrl string, req *http.Request) ([]byte, error) { + resBody, _, err := jenkinsClient(baseUrl, req) + return resBody, err +} + +func jenkinsClient(baseUrl string, req *http.Request) ([]byte, http.Header, error) { newReqUrl, err := url.Parse(baseUrl) if err != nil { log.Error(err) - return nil, err + return nil, nil, err } client := &http.Client{Timeout: 30 * time.Second} @@ -678,19 +684,21 @@ func sendJenkinsRequest(baseUrl string, req *http.Request) ([]byte, error) { resp, err := client.Do(newRequest) if err != nil { log.Error(err) - return nil, err + return nil, nil, err } - defer resp.Body.Close() resBody, _ := getRespBody(resp) + defer resp.Body.Close() + if resp.StatusCode >= http.StatusBadRequest { jkerr := new(JkError) jkerr.Code = resp.StatusCode jkerr.Message = http.StatusText(resp.StatusCode) - return nil, jkerr + return nil, nil, jkerr } - return resBody, err + return resBody, resp.Header, nil + } // Decompress response.body of JenkinsAPIResponse diff --git a/pkg/models/devops/urlconfig.go b/pkg/models/devops/urlconfig.go index a6df50c5f..fda36eb9e 100644 --- a/pkg/models/devops/urlconfig.go +++ b/pkg/models/devops/urlconfig.go @@ -19,29 +19,31 @@ package devops // Some apis for Jenkins. const ( - GetPipeBranchUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/?" + GetPipeBranchUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/?" GetBranchPipeUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/" - GetPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/" + GetPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/" SearchPipelineUrl = "/blue/rest/search/?" - RunBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/" - RunPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/" - GetPipelineRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/" - GetPipeBranchRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/" - SearchPipelineRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/?" - GetBranchPipeRunNodesUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/?" - GetPipeRunNodesUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/?" - GetBranchRunLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/log/?" - GetRunLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/log/?" - GetBranchStepLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/%s/steps/%s/log/?" - GetStepLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/%s/steps/%s/log/?" + RunBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/" + RunPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/" + GetPipelineRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/" + GetPipeBranchRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/" + SearchPipelineRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/?" + GetBranchPipeRunNodesUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/?" + GetPipeRunNodesUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/nodes/?" + GetBranchRunLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/log/?" + GetRunLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/log/?" + GetBranchStepLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/%s/log/?" + GetStepLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/nodes/%s/steps/%s/log/?" StopBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/stop/?" StopPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/stop/?" ReplayBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/replay/" ReplayPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/replay/" - GetBranchArtifactsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/artifacts/?" - GetArtifactsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/artifacts/?" - GetBranchStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/%s/steps/?" + GetBranchArtifactsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/artifacts/?" + GetArtifactsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/artifacts/?" + GetBranchStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/?" + GetStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/%s/steps/?" + CheckBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/%s/" CheckPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/nodes/%s/steps/%s/" GetBranchNodeStepsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/%s/steps/?" From 35be922922949e8f0446963fe4b58166dcab306b Mon Sep 17 00:00:00 2001 From: soulseen Date: Thu, 16 May 2019 16:10:34 +0800 Subject: [PATCH 09/28] fix jenkins header Signed-off-by: soulseen --- pkg/apiserver/devops/devops.go | 11 +++++++++-- pkg/models/devops/devops.go | 34 +++++++++++++++++++++------------- pkg/models/devops/urlconfig.go | 34 ++++++++++++++++++---------------- 3 files changed, 48 insertions(+), 31 deletions(-) diff --git a/pkg/apiserver/devops/devops.go b/pkg/apiserver/devops/devops.go index 5245e3529..13314add0 100644 --- a/pkg/apiserver/devops/devops.go +++ b/pkg/apiserver/devops/devops.go @@ -104,11 +104,15 @@ func GetBranchStepLog(req *restful.Request, resp *restful.Response) { nodeId := req.PathParameter("nodeId") stepId := req.PathParameter("stepId") - res, err := devops.GetBranchStepLog(projectName, pipelineName, branchName, runId, nodeId, stepId, req.Request) + res, header, err := devops.GetBranchStepLog(projectName, pipelineName, branchName, runId, nodeId, stepId, req.Request) + if err != nil { parseErr(err, resp) return } + for k, v := range header { + resp.AddHeader(k, v[0]) + } resp.Write(res) } @@ -119,11 +123,14 @@ func GetStepLog(req *restful.Request, resp *restful.Response) { nodeId := req.PathParameter("nodeId") stepId := req.PathParameter("stepId") - res, err := devops.GetStepLog(projectName, pipelineName, runId, nodeId, stepId, req.Request) + res, header, err := devops.GetStepLog(projectName, pipelineName, runId, nodeId, stepId, req.Request) if err != nil { parseErr(err, resp) return } + for k, v := range header { + resp.AddHeader(k, v[0]) + } resp.Write(res) } diff --git a/pkg/models/devops/devops.go b/pkg/models/devops/devops.go index f91c5ef10..7cea449af 100644 --- a/pkg/models/devops/devops.go +++ b/pkg/models/devops/devops.go @@ -106,30 +106,31 @@ func GetPipelineRunNodesbyBranch(projectName, pipelineName, branchName, runId st return res, err } -func GetBranchStepLog(projectName, pipelineName, branchName, runId, nodeId, stepId string, req *http.Request) ([]byte, error) { +func GetBranchStepLog(projectName, pipelineName, branchName, runId, nodeId, stepId string, req *http.Request) ([]byte, http.Header, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetBranchStepLogUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId, nodeId, stepId) log.Infof("Jenkins-url: " + baseUrl) - resBody, err := sendJenkinsRequest(baseUrl, req) + resBody, header, err := jenkinsClient(baseUrl, req) if err != nil { log.Error(err) - return nil, err + return nil, nil, err } - return resBody, err + return resBody, header, err } -func GetStepLog(projectName, pipelineName, runId, nodeId, stepId string, req *http.Request) ([]byte, error) { +func GetStepLog(projectName, pipelineName, runId, nodeId, stepId string, req *http.Request) ([]byte, http.Header, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetStepLogUrl+req.URL.RawQuery, projectName, pipelineName, runId, nodeId, stepId) log.Infof("Jenkins-url: " + baseUrl) - resBody, err := sendJenkinsRequest(baseUrl, req) + resBody, header, err := jenkinsClient(baseUrl, req) if err != nil { log.Error(err) - return nil, err + return nil, nil, err } - return resBody, err + return resBody, header, err + } func Validate(scmId string, req *http.Request) ([]byte, error) { @@ -658,10 +659,15 @@ func GetNodesDetail(projectName, pipelineName, runId string, req *http.Request) // create jenkins request func sendJenkinsRequest(baseUrl string, req *http.Request) ([]byte, error) { + resBody, _, err := jenkinsClient(baseUrl, req) + return resBody, err +} + +func jenkinsClient(baseUrl string, req *http.Request) ([]byte, http.Header, error) { newReqUrl, err := url.Parse(baseUrl) if err != nil { log.Error(err) - return nil, err + return nil, nil, err } client := &http.Client{Timeout: 30 * time.Second} @@ -678,19 +684,21 @@ func sendJenkinsRequest(baseUrl string, req *http.Request) ([]byte, error) { resp, err := client.Do(newRequest) if err != nil { log.Error(err) - return nil, err + return nil, nil, err } - defer resp.Body.Close() resBody, _ := getRespBody(resp) + defer resp.Body.Close() + if resp.StatusCode >= http.StatusBadRequest { jkerr := new(JkError) jkerr.Code = resp.StatusCode jkerr.Message = http.StatusText(resp.StatusCode) - return nil, jkerr + return nil, nil, jkerr } - return resBody, err + return resBody, resp.Header, nil + } // Decompress response.body of JenkinsAPIResponse diff --git a/pkg/models/devops/urlconfig.go b/pkg/models/devops/urlconfig.go index a6df50c5f..fda36eb9e 100644 --- a/pkg/models/devops/urlconfig.go +++ b/pkg/models/devops/urlconfig.go @@ -19,29 +19,31 @@ package devops // Some apis for Jenkins. const ( - GetPipeBranchUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/?" + GetPipeBranchUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/?" GetBranchPipeUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/" - GetPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/" + GetPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/" SearchPipelineUrl = "/blue/rest/search/?" - RunBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/" - RunPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/" - GetPipelineRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/" - GetPipeBranchRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/" - SearchPipelineRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/?" - GetBranchPipeRunNodesUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/?" - GetPipeRunNodesUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/?" - GetBranchRunLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/log/?" - GetRunLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/log/?" - GetBranchStepLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/%s/steps/%s/log/?" - GetStepLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/%s/steps/%s/log/?" + RunBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/" + RunPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/" + GetPipelineRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/" + GetPipeBranchRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/" + SearchPipelineRunUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/?" + GetBranchPipeRunNodesUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/?" + GetPipeRunNodesUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/nodes/?" + GetBranchRunLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/log/?" + GetRunLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/log/?" + GetBranchStepLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/%s/log/?" + GetStepLogUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/nodes/%s/steps/%s/log/?" StopBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/stop/?" StopPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/stop/?" ReplayBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/replay/" ReplayPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/replay/" - GetBranchArtifactsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/artifacts/?" - GetArtifactsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/artifacts/?" - GetBranchStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/%s/steps/?" + GetBranchArtifactsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/artifacts/?" + GetArtifactsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/artifacts/?" + GetBranchStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/?" + GetStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/%s/steps/?" + CheckBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/%s/" CheckPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/nodes/%s/steps/%s/" GetBranchNodeStepsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/%s/steps/?" From 8e50b9e31f3d32f359502aff4f1d3cbcd684599d Mon Sep 17 00:00:00 2001 From: soulseen Date: Thu, 16 May 2019 20:30:31 +0800 Subject: [PATCH 10/28] fix cron check Signed-off-by: soulseen --- pkg/models/devops/devops.go | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/pkg/models/devops/devops.go b/pkg/models/devops/devops.go index 7cea449af..98e5ca6b1 100644 --- a/pkg/models/devops/devops.go +++ b/pkg/models/devops/devops.go @@ -421,18 +421,26 @@ func CheckScriptCompile(req *http.Request) ([]byte, error) { } func CheckCron(req *http.Request) (*CheckCronRes, error) { - baseUrl := jenkins.Server + CheckCronUrl + req.URL.RawQuery - log.Infof("Jenkins-url: " + baseUrl) - req.SetBasicAuth(jenkins.Requester.BasicAuth.Username, jenkins.Requester.BasicAuth.Password) - var res = new(CheckCronRes) + newurl, err := url.Parse(jenkins.Server + CheckCronUrl + req.URL.RawQuery) - resp, err := http.Get(baseUrl) + reqJenkins := &http.Request{ + Method: http.MethodGet, + URL: newurl, + Header: http.Header{}, + } + var res = new(CheckCronRes) + client := &http.Client{Timeout: 30 * time.Second} + + reqJenkins.SetBasicAuth(jenkins.Requester.BasicAuth.Username, jenkins.Requester.BasicAuth.Password) + + resp, err := client.Do(reqJenkins) if err != nil { log.Error(err) return res, err } defer resp.Body.Close() + doc, err := goquery.NewDocumentFromReader(resp.Body) if err != nil { log.Error(err) From 41b85a7534bf3561df0b1f563596e5995394c844 Mon Sep 17 00:00:00 2001 From: huanggze Date: Thu, 16 May 2019 23:29:52 +0800 Subject: [PATCH 11/28] fix: update disk metrics Signed-off-by: huanggze --- pkg/models/metrics/metricsruleconst.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/models/metrics/metricsruleconst.go b/pkg/models/metrics/metricsruleconst.go index e3d103a4d..449d2f2bc 100644 --- a/pkg/models/metrics/metricsruleconst.go +++ b/pkg/models/metrics/metricsruleconst.go @@ -400,10 +400,10 @@ var RulePromQLTmplMap = MetricMap{ "cluster_disk_read_throughput": "sum(node:data_volume_throughput_bytes_read:sum)", "cluster_disk_write_throughput": "sum(node:data_volume_throughput_bytes_written:sum)", - "cluster_disk_size_usage": `sum(max((node_filesystem_size_bytes{device=~"/dev/.+", job="node-exporter"} - node_filesystem_avail_bytes{device=~"/dev/.+", job="node-exporter"}) * on (namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:) by (node))`, + "cluster_disk_size_usage": `sum(max(node_filesystem_size_bytes{device=~"/dev/[vsh]d.+", job="node-exporter"} - node_filesystem_avail_bytes{device=~"/dev/[vsh]d.+", job="node-exporter"}) by (device, instance))`, "cluster_disk_size_utilisation": `cluster:disk_utilization:ratio`, - "cluster_disk_size_capacity": `sum(max(node_filesystem_size_bytes{device=~"/dev/.+", job="node-exporter"} * on (namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:) by (node))`, - "cluster_disk_size_available": `sum(max(node_filesystem_avail_bytes{device=~"/dev/.+", job="node-exporter"} * on (namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:) by (node))`, + "cluster_disk_size_capacity": `sum(max(node_filesystem_size_bytes{device=~"/dev/[vsh]d.+", job="node-exporter"}) by (device, instance))`, + "cluster_disk_size_available": `sum(max(node_filesystem_avail_bytes{device=~"/dev/[vsh]d.+", job="node-exporter"}) by (device, instance))`, "cluster_disk_inode_total": `sum(node:node_inodes_total:)`, "cluster_disk_inode_usage": `sum(node:node_inodes_total:) - sum(node:node_inodes_free:)`, @@ -481,9 +481,9 @@ var RulePromQLTmplMap = MetricMap{ "node_disk_read_throughput": "node:data_volume_throughput_bytes_read:sum", "node_disk_write_throughput": "node:data_volume_throughput_bytes_written:sum", - "node_disk_size_capacity": `max(node_filesystem_size_bytes{device=~"/dev/.+", job="node-exporter"} * on (namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:$1) by (node)`, + "node_disk_size_capacity": `sum(max(node_filesystem_size_bytes{device=~"/dev/[vsh]d.+", job="node-exporter"} * on (namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:$1) by (device, node)) by (node)`, "node_disk_size_available": `node:disk_space_available:$1`, - "node_disk_size_usage": `max((node_filesystem_size_bytes{device=~"/dev/.+", job="node-exporter"} - node_filesystem_avail_bytes{device=~"/dev/.+", job="node-exporter"}) * on (namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:$1) by (node)`, + "node_disk_size_usage": `sum(max((node_filesystem_size_bytes{device=~"/dev/[vsh]d.+", job="node-exporter"} - node_filesystem_avail_bytes{device=~"/dev/[vsh]d.+", job="node-exporter"}) * on (namespace, pod) group_left(node) node_namespace_pod:kube_pod_info:$1) by (device, node)) by (node)`, "node_disk_size_utilisation": `node:disk_space_utilization:ratio$1`, "node_disk_inode_total": `node:node_inodes_total:$1`, From d310e635f272ae046f387bfd73df2aa86a5e4647 Mon Sep 17 00:00:00 2001 From: Jeff Date: Fri, 17 May 2019 00:55:45 +0800 Subject: [PATCH 12/28] fix service policy deletion bug --- .../destinationrule_controller.go | 1 + pkg/models/devops/devops.go | 1 - pkg/models/devops/urlconfig.go | 34 +++++++++---------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/pkg/controller/destinationrule/destinationrule_controller.go b/pkg/controller/destinationrule/destinationrule_controller.go index f83be2b94..3b9f5f588 100644 --- a/pkg/controller/destinationrule/destinationrule_controller.go +++ b/pkg/controller/destinationrule/destinationrule_controller.go @@ -305,6 +305,7 @@ func (v *DestinationRuleController) syncService(key string) error { } dr := currentDestinationRule.DeepCopy() + dr.Spec.TrafficPolicy = nil dr.Spec.Subsets = subsets // if len(servicePolicies) > 0 { diff --git a/pkg/models/devops/devops.go b/pkg/models/devops/devops.go index 98e5ca6b1..69c4d37a5 100644 --- a/pkg/models/devops/devops.go +++ b/pkg/models/devops/devops.go @@ -440,7 +440,6 @@ func CheckCron(req *http.Request) (*CheckCronRes, error) { } defer resp.Body.Close() - doc, err := goquery.NewDocumentFromReader(resp.Body) if err != nil { log.Error(err) diff --git a/pkg/models/devops/urlconfig.go b/pkg/models/devops/urlconfig.go index fda36eb9e..ab75474ad 100644 --- a/pkg/models/devops/urlconfig.go +++ b/pkg/models/devops/urlconfig.go @@ -42,22 +42,22 @@ const ( GetArtifactsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/artifacts/?" GetBranchStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/?" - GetStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/%s/steps/?" + GetStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/%s/steps/?" - CheckBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/%s/" - CheckPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/nodes/%s/steps/%s/" - GetBranchNodeStepsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/%s/steps/?" - GetNodeStepsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/%s/steps/?" - ValidateUrl = "/blue/rest/organizations/jenkins/scm/%s/validate" - GetSCMOrgUrl = "/blue/rest/organizations/jenkins/scm/%s/organizations/?" - GetOrgRepoUrl = "/blue/rest/organizations/jenkins/scm/%s/organizations/%s/repositories/?" - GetConsoleLogUrl = "/job/%s/job/%s/indexing/consoleText" - ScanBranchUrl = "/job/%s/job/%s/build?" - GetCrumbUrl = "/crumbIssuer/api/json/" - CheckScriptCompileUrl = "/job/init-job/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile" - CheckCronUrl = "/job/init-job/descriptorByName/hudson.triggers.TimerTrigger/checkSpec?" - ToJenkinsfileUrl = "/pipeline-model-converter/toJenkinsfile" - ToJsonUrl = "/pipeline-model-converter/toJson" - GetNotifyCommitUrl = "/git/notifyCommit/?" - GithubWebhookUrl = "/github-webhook/" + CheckBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/%s/" + CheckPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/nodes/%s/steps/%s/" + GetBranchNodeStepsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/%s/steps/?" + GetNodeStepsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/%s/steps/?" + ValidateUrl = "/blue/rest/organizations/jenkins/scm/%s/validate" + GetSCMOrgUrl = "/blue/rest/organizations/jenkins/scm/%s/organizations/?" + GetOrgRepoUrl = "/blue/rest/organizations/jenkins/scm/%s/organizations/%s/repositories/?" + GetConsoleLogUrl = "/job/%s/job/%s/indexing/consoleText" + ScanBranchUrl = "/job/%s/job/%s/build?" + GetCrumbUrl = "/crumbIssuer/api/json/" + CheckScriptCompileUrl = "/job/init-job/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile" + CheckCronUrl = "/job/init-job/descriptorByName/hudson.triggers.TimerTrigger/checkSpec?" + ToJenkinsfileUrl = "/pipeline-model-converter/toJenkinsfile" + ToJsonUrl = "/pipeline-model-converter/toJson" + GetNotifyCommitUrl = "/git/notifyCommit/?" + GithubWebhookUrl = "/github-webhook/" ) From 3c2aa60a72dac25b361bea206de163183a86e384 Mon Sep 17 00:00:00 2001 From: runzexia Date: Fri, 17 May 2019 10:59:18 +0800 Subject: [PATCH 13/28] fix devops req url Signed-off-by: runzexia --- pkg/models/devops/urlconfig.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/models/devops/urlconfig.go b/pkg/models/devops/urlconfig.go index ab75474ad..05a9355eb 100644 --- a/pkg/models/devops/urlconfig.go +++ b/pkg/models/devops/urlconfig.go @@ -42,12 +42,12 @@ const ( GetArtifactsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/artifacts/?" GetBranchStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/?" - GetStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/%s/steps/?" + GetStepsStatusUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/nodes/%s/steps/?" CheckBranchPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/%s/" CheckPipelineUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/nodes/%s/steps/%s/" - GetBranchNodeStepsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/branches/%s/runs/%s/nodes/%s/steps/?" - GetNodeStepsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/%s/runs/%s/nodes/%s/steps/?" + GetBranchNodeStepsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/branches/%s/runs/%s/nodes/%s/steps/?" + GetNodeStepsUrl = "/blue/rest/organizations/jenkins/pipelines/%s/pipelines/%s/runs/%s/nodes/%s/steps/?" ValidateUrl = "/blue/rest/organizations/jenkins/scm/%s/validate" GetSCMOrgUrl = "/blue/rest/organizations/jenkins/scm/%s/organizations/?" GetOrgRepoUrl = "/blue/rest/organizations/jenkins/scm/%s/organizations/%s/repositories/?" From ed224612bc107d5d5ad81460897a2c3dddafeb07 Mon Sep 17 00:00:00 2001 From: hongming Date: Fri, 17 May 2019 11:56:10 +0800 Subject: [PATCH 14/28] fix: runtime release Signed-off-by: hongming --- pkg/apis/iam/v1alpha2/register.go | 224 +++++++++++------- pkg/apiserver/iam/am.go | 4 +- .../namespace/namespace_controller.go | 57 ++++- pkg/models/iam/im.go | 2 +- pkg/models/iam/policy/policy.go | 6 +- .../client/openpitrix/openpitrixclient.go | 146 +++++++++++- 6 files changed, 318 insertions(+), 121 deletions(-) diff --git a/pkg/apis/iam/v1alpha2/register.go b/pkg/apis/iam/v1alpha2/register.go index d2e8e9406..bb3ff2460 100644 --- a/pkg/apis/iam/v1alpha2/register.go +++ b/pkg/apis/iam/v1alpha2/register.go @@ -20,11 +20,14 @@ package v1alpha2 import ( "github.com/emicklei/go-restful" "github.com/emicklei/go-restful-openapi" + rbacv1 "k8s.io/api/rbac/v1" "k8s.io/apimachinery/pkg/runtime/schema" "kubesphere.io/kubesphere/pkg/apiserver/iam" "kubesphere.io/kubesphere/pkg/apiserver/runtime" "kubesphere.io/kubesphere/pkg/errors" "kubesphere.io/kubesphere/pkg/models" + "kubesphere.io/kubesphere/pkg/models/iam/policy" + "net/http" ) const GroupName = "iam.kubesphere.io" @@ -40,181 +43,220 @@ func addWebService(c *restful.Container) error { tags := []string{"IAM"} ws := runtime.NewWebService(GroupVersion) + ok := "ok" + pageableUserList := struct { + Items []models.User `json:"items"` + TotalCount int `json:"total_count"` + }{} + ws.Route(ws.POST("/authenticate"). To(iam.TokenReviewHandler). - Doc("Token review"). + Doc("TokenReview attempts to authenticate a token to a known user. Note: TokenReview requests may be cached by the webhook token authenticator plugin in the kube-apiserver."). Reads(iam.TokenReview{}). - Writes(iam.TokenReview{}). - Doc("k8s token review"). + Returns(http.StatusOK, ok, iam.TokenReview{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.POST("/login"). To(iam.LoginHandler). - Doc("User login"). + Doc("KubeSphere APIs support token-based authentication via the Authtoken request header. The POST Login API is used to retrieve the authentication token. After the authentication token is obtained, it must be inserted into the Authtoken header for all requests."). Reads(iam.LoginRequest{}). - Writes(models.Token{}). + Returns(http.StatusOK, ok, models.Token{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/users/{username}"). To(iam.DescribeUser). - Doc("User detail"). + Doc("Describes the specified user."). Param(ws.PathParameter("username", "username")). - Writes(models.User{}). + Returns(http.StatusOK, ok, models.User{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.POST("/users"). To(iam.CreateUser). + Doc("Create a user account."). Reads(models.User{}). - Writes(errors.Error{}). - Doc("Create user"). + Returns(http.StatusOK, ok, errors.Error{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.DELETE("/users/{name}"). To(iam.DeleteUser). + Doc("Remove a specified user."). Param(ws.PathParameter("name", "username")). - Doc("Delete user"). - Writes(errors.Error{}). + Returns(http.StatusOK, ok, errors.Error{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.PUT("/users/{name}"). To(iam.UpdateUser). + Doc("Updates information about the specified user."). Param(ws.PathParameter("name", "username")). Reads(models.User{}). - Writes(errors.Error{}). - Doc("Update user"). + Returns(http.StatusOK, ok, errors.Error{}). Metadata(restfulspec.KeyOpenAPITags, tags)) - ws.Route(ws.GET("/users/{name}/log"). To(iam.UserLoginLog). + Doc("This method is used to retrieve the \"login logs\" for the specified user."). Param(ws.PathParameter("name", "username")). - Doc("User login log"). - Writes([]map[string]string{}). + Returns(http.StatusOK, ok, struct { + LoginTime string `json:"login_time"` + LoginIP string `json:"login_ip"` + }{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/users"). To(iam.ListUsers). - Doc("User list"). - Writes(models.PageableResponse{}). + Doc("List all users."). + Returns(http.StatusOK, ok, pageableUserList). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/groups"). To(iam.ListGroups). - Writes([]models.Group{}). - Doc("User group list"). + Doc("List all user groups."). + Returns(http.StatusOK, ok, []models.Group{}). Metadata(restfulspec.KeyOpenAPITags, tags)) - ws.Route(ws.GET("/groups/{path}"). To(iam.DescribeGroup). - Param(ws.PathParameter("path", "group path")). - Doc("User group detail"). + Doc("Describes the specified user group."). + Param(ws.PathParameter("path", "user group path separated by colon.")). + Returns(http.StatusOK, ok, models.Group{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/groups/{path}/users"). To(iam.ListGroupUsers). - Param(ws.PathParameter("path", "group path")). - Doc("Group user list"). + Doc("List all users in the specified user group."). + Param(ws.PathParameter("path", "user group path separated by colon.")). + Returns(http.StatusOK, ok, []models.User{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.POST("/groups"). To(iam.CreateGroup). + Doc("Create a user group."). Reads(models.Group{}). - Doc("Create user group"). + Returns(http.StatusOK, ok, models.Group{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.DELETE("/groups/{path}"). To(iam.DeleteGroup). - Param(ws.PathParameter("path", "group path")). - Doc("Delete user group"). + Doc("Delete a user group."). + Param(ws.PathParameter("path", "user group path separated by colon.")). + Returns(http.StatusOK, ok, errors.Error{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.PUT("/groups/{path}"). To(iam.UpdateGroup). - Param(ws.PathParameter("path", "group path")). - Doc("Update user group"). + Doc("Updates information about the user group."). + Param(ws.PathParameter("path", "user group path separated by colon.")). + Reads(models.Group{}). + Returns(http.StatusOK, ok, models.Group{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/users/{username}/roles"). To(iam.ListUserRoles). + Doc("This method is used to retrieve all the roles that are assigned to the user."). Param(ws.PathParameter("username", "username")). - Doc("Get user role list"). + Returns(http.StatusOK, ok, iam.RoleList{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/namespaces/{namespace}/roles"). To(iam.ListRoles). - Param(ws.PathParameter("namespace", "namespace")). - Doc("Get role list"). + 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")). + Returns(http.StatusOK, ok, struct { + Items []rbacv1.Role `json:"items"` + TotalCount int `json:"total_count"` + }{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/clusterroles"). To(iam.ListClusterRoles). - Doc("Get cluster role list"). + Doc("List all cluster roles."). + Returns(http.StatusOK, ok, struct { + Items []rbacv1.ClusterRole `json:"items"` + TotalCount int `json:"total_count"` + }{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/namespaces/{namespace}/roles/{role}/users"). To(iam.ListRoleUsers). - Param(ws.PathParameter("namespace", "namespace")). + Doc("This method is used to retrieve the users that are bind the role in the specified namespace."). + Param(ws.PathParameter("namespace", "kubernetes namespace")). Param(ws.PathParameter("role", "role name")). - Doc("Get user list by role"). + Returns(http.StatusOK, ok, []models.User{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/namespaces/{namespace}/users"). To(iam.ListNamespaceUsers). - Param(ws.PathParameter("namespace", "namespace")). - Doc("Get user list by namespace"). + Doc("List all users in the specified namespace"). + Param(ws.PathParameter("namespace", "kubernetes namespace")). + Returns(http.StatusOK, ok, []models.User{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/clusterroles/{clusterrole}/users"). To(iam.ListClusterRoleUsers). + Doc("List all users that are bind the cluster role."). Param(ws.PathParameter("clusterrole", "cluster role name")). - Doc("Get user list by cluster role"). + Returns(http.StatusOK, ok, pageableUserList). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/clusterroles/{clusterrole}/rules"). To(iam.ListClusterRoleRules). + Doc("List all policy rules of the specified cluster role."). Param(ws.PathParameter("clusterrole", "cluster role name")). - Doc("Get cluster role detail"). - Metadata(restfulspec.KeyOpenAPITags, tags)) - ws.Route(ws.GET("/rulesmapping/clusterroles"). - To(iam.ClusterRulesMapping). - Doc("Get cluster role policy rules mapping"). - Metadata(restfulspec.KeyOpenAPITags, tags)) - ws.Route(ws.GET("/rulesmapping/roles"). - To(iam.RulesMapping). - Doc("Get role policy rules mapping"). - Metadata(restfulspec.KeyOpenAPITags, tags)) - - ws.Route(ws.GET("/workspaces/{workspace}/roles"). - To(iam.ListWorkspaceRoles). - Param(ws.PathParameter("workspace", "workspace name")). - Doc("List workspace role"). - Metadata(restfulspec.KeyOpenAPITags, tags)) - ws.Route(ws.GET("/workspaces/{workspace}/roles/{role}"). - To(iam.DescribeWorkspaceRole). - Param(ws.PathParameter("workspace", "workspace name")). - Param(ws.PathParameter("role", "workspace role name")). - Doc("Describe workspace role"). - Metadata(restfulspec.KeyOpenAPITags, tags)) - ws.Route(ws.GET("/workspaces/{workspace}/roles/{role}/rules"). - To(iam.ListWorkspaceRoleRules). - Param(ws.PathParameter("workspace", "workspace name")). - Param(ws.PathParameter("role", "workspace role name")). - Doc("Get workspace role policy rules"). - Metadata(restfulspec.KeyOpenAPITags, tags)) - ws.Route(ws.GET("/workspaces/{workspace}/members"). - To(iam.ListWorkspaceUsers). - Param(ws.PathParameter("workspace", "workspace name")). - Doc("Get workspace member list"). - Metadata(restfulspec.KeyOpenAPITags, tags)) - ws.Route(ws.POST("/workspaces/{workspace}/members"). - To(iam.InviteUser). - Param(ws.PathParameter("workspace", "workspace name")). - Doc("Add user to workspace"). - Metadata(restfulspec.KeyOpenAPITags, tags)) - ws.Route(ws.DELETE("/workspaces/{workspace}/members/{username}"). - To(iam.RemoveUser). - Param(ws.PathParameter("workspace", "workspace name")). - Param(ws.PathParameter("name", "username")). - Doc("Remove user from workspace"). - Metadata(restfulspec.KeyOpenAPITags, tags)) - ws.Route(ws.GET("/workspaces/{workspace}/members/{username}"). - To(iam.DescribeWorkspaceUser). - Param(ws.PathParameter("workspace", "workspace name")). - Param(ws.PathParameter("username", "username")). - Doc("Describe user in workspace"). + Returns(http.StatusOK, ok, []models.SimpleRule{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/namespaces/{namespace}/roles/{role}/rules"). To(iam.ListRoleRules). - Param(ws.PathParameter("namespace", "namespace")). + Doc("List all policy rules of the specified role."). + Param(ws.PathParameter("namespace", "kubernetes namespace")). Param(ws.PathParameter("role", "role name")). - Doc("Get namespace role policy rules"). + Returns(http.StatusOK, ok, []models.SimpleRule{}). Metadata(restfulspec.KeyOpenAPITags, tags)) ws.Route(ws.GET("/devops/{devops}/roles/{role}/rules"). To(iam.ListDevopsRoleRules). + Doc("List all policy rules of the specified role."). Param(ws.PathParameter("devops", "devops project id")). Param(ws.PathParameter("role", "devops role name")). - Doc("Get devops role policy rules"). + Returns(http.StatusOK, ok, []models.SimpleRule{}). + Metadata(restfulspec.KeyOpenAPITags, tags)) + ws.Route(ws.GET("/rulesmapping/clusterroles"). + To(iam.ClusterRulesMapping). + Doc("Get the mapping relationships between cluster roles and policy rules."). + Returns(http.StatusOK, ok, policy.ClusterRoleRuleMapping). + Metadata(restfulspec.KeyOpenAPITags, tags)) + ws.Route(ws.GET("/rulesmapping/roles"). + To(iam.RulesMapping). + Doc("Get the mapping relationships between namespaced roles and policy rules."). + Returns(http.StatusOK, ok, policy.RoleRuleMapping). + Metadata(restfulspec.KeyOpenAPITags, tags)) + ws.Route(ws.GET("/workspaces/{workspace}/roles"). + To(iam.ListWorkspaceRoles). + Doc("List all workspace roles."). + Param(ws.PathParameter("workspace", "workspace name")). + Returns(http.StatusOK, ok, struct { + Items []rbacv1.ClusterRole `json:"items"` + TotalCount int `json:"total_count"` + }{}). + Metadata(restfulspec.KeyOpenAPITags, tags)) + ws.Route(ws.GET("/workspaces/{workspace}/roles/{role}"). + To(iam.DescribeWorkspaceRole). + Doc("Describes the workspace role."). + Param(ws.PathParameter("workspace", "workspace name")). + Param(ws.PathParameter("role", "workspace role name")). + Returns(http.StatusOK, ok, rbacv1.ClusterRole{}). + Metadata(restfulspec.KeyOpenAPITags, tags)) + ws.Route(ws.GET("/workspaces/{workspace}/roles/{role}/rules"). + To(iam.ListWorkspaceRoleRules). + Doc("List all policy rules of the specified workspace role."). + Param(ws.PathParameter("workspace", "workspace name")). + Param(ws.PathParameter("role", "workspace role name")). + Returns(http.StatusOK, ok, []models.SimpleRule{}). + Metadata(restfulspec.KeyOpenAPITags, tags)) + ws.Route(ws.GET("/workspaces/{workspace}/members"). + To(iam.ListWorkspaceUsers). + Doc("List all members in the specified workspace."). + Param(ws.PathParameter("workspace", "workspace name")). + Returns(http.StatusOK, ok, pageableUserList). + Metadata(restfulspec.KeyOpenAPITags, tags)) + ws.Route(ws.POST("/workspaces/{workspace}/members"). + To(iam.InviteUser). + Doc("Invite members to a workspace."). + Param(ws.PathParameter("workspace", "workspace name")). + Reads(models.User{}). + Returns(http.StatusOK, ok, errors.Error{}). + Metadata(restfulspec.KeyOpenAPITags, tags)) + ws.Route(ws.DELETE("/workspaces/{workspace}/members/{username}"). + To(iam.RemoveUser). + Doc("Remove members from workspace."). + Param(ws.PathParameter("workspace", "workspace name")). + Param(ws.PathParameter("name", "username")). + Returns(http.StatusOK, ok, errors.Error{}). + Metadata(restfulspec.KeyOpenAPITags, tags)) + ws.Route(ws.GET("/workspaces/{workspace}/members/{username}"). + To(iam.DescribeWorkspaceUser). + Doc("Describes the specified user."). + Param(ws.PathParameter("workspace", "workspace name")). + Param(ws.PathParameter("username", "username")). + Returns(http.StatusOK, ok, models.User{}). Metadata(restfulspec.KeyOpenAPITags, tags)) c.Add(ws) return nil diff --git a/pkg/apiserver/iam/am.go b/pkg/apiserver/iam/am.go index 59175a22a..a86966593 100644 --- a/pkg/apiserver/iam/am.go +++ b/pkg/apiserver/iam/am.go @@ -30,7 +30,7 @@ import ( "kubesphere.io/kubesphere/pkg/models/iam/policy" ) -type roleList struct { +type RoleList struct { ClusterRoles []*v1.ClusterRole `json:"clusterRole" protobuf:"bytes,2,rep,name=clusterRoles"` Roles []*v1.Role `json:"roles" protobuf:"bytes,2,rep,name=roles"` } @@ -132,7 +132,7 @@ func ListUserRoles(req *restful.Request, resp *restful.Response) { return } - roleList := roleList{} + roleList := RoleList{} roleList.Roles = roles roleList.ClusterRoles = clusterRoles diff --git a/pkg/controller/namespace/namespace_controller.go b/pkg/controller/namespace/namespace_controller.go index 8e0bee9e5..81917aa44 100644 --- a/pkg/controller/namespace/namespace_controller.go +++ b/pkg/controller/namespace/namespace_controller.go @@ -35,6 +35,8 @@ import ( "kubesphere.io/kubesphere/pkg/constants" "kubesphere.io/kubesphere/pkg/simple/client/openpitrix" "kubesphere.io/kubesphere/pkg/utils/k8sutil" + "kubesphere.io/kubesphere/pkg/utils/sliceutil" + "math" "reflect" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/controller" @@ -44,6 +46,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/reconcile" logf "sigs.k8s.io/controller-runtime/pkg/runtime/log" "sigs.k8s.io/controller-runtime/pkg/source" + "time" ) const ( @@ -115,25 +118,47 @@ func (r *ReconcileNamespace) Reconcile(request reconcile.Request) (reconcile.Res if errors.IsNotFound(err) { // Object not found, return. Created objects are automatically garbage collected. // For additional cleanup logic use finalizers. + // The object is being deleted + // our finalizer is present, so lets handle our external dependency return reconcile.Result{}, nil } // Error reading the object - requeue the request. return reconcile.Result{}, err } - if !instance.ObjectMeta.DeletionTimestamp.IsZero() { + // name of your custom finalizer + finalizer := "finalizers.kubesphere.io/namespaces" + + if instance.ObjectMeta.DeletionTimestamp.IsZero() { + // The object is not being deleted, so if it does not have our finalizer, + // then lets add the finalizer and update the object. + if !sliceutil.HasString(instance.ObjectMeta.Finalizers, finalizer) { + instance.ObjectMeta.Finalizers = append(instance.ObjectMeta.Finalizers, finalizer) + if err := r.Update(context.Background(), instance); err != nil { + return reconcile.Result{}, err + } + } + } else { // The object is being deleted + if sliceutil.HasString(instance.ObjectMeta.Finalizers, finalizer) { + if err := r.deleteRouter(instance.Name); err != nil { + return reconcile.Result{}, err + } - if err := r.deleteRouter(instance.Name); err != nil { - return reconcile.Result{}, err - } - - if err := r.deleteRuntime(instance); err != nil { - // if fail to delete the external dependency here, return with error - // so that it can be retried - return reconcile.Result{}, err + // delete runtime in the background, retry 3 times + go r.deleteRuntime(instance) + + // remove our finalizer from the list and update it. + instance.ObjectMeta.Finalizers = sliceutil.RemoveString(instance.ObjectMeta.Finalizers, func(item string) bool { + return item == finalizer + }) + + if err := r.Update(context.Background(), instance); err != nil { + return reconcile.Result{}, err + } } + // Our finalizer has finished, so the reconciler can do nothing. return reconcile.Result{}, nil } @@ -347,9 +372,17 @@ func (r *ReconcileNamespace) checkAndCreateRuntime(namespace *corev1.Namespace) func (r *ReconcileNamespace) deleteRuntime(namespace *corev1.Namespace) error { if runtimeId := namespace.Annotations[constants.OpenPitrixRuntimeAnnotationKey]; runtimeId != "" { - log.Info("Deleting openpitrix runtime", "namespace", namespace.Name, "runtime", runtimeId) - if err := openpitrix.Client().DeleteRuntime(runtimeId); err != nil { - return err + maxRetries := float64(3) + for i := float64(0); i < maxRetries; i++ { + time.Sleep(time.Duration(i*math.Pow(2, i)) * time.Second) + log.Info("Deleting openpitrix runtime", "namespace", namespace.Name, "runtime", runtimeId) + err := openpitrix.Client().DeleteRuntime(runtimeId) + + if err == nil || openpitrix.IsNotFound(err) || openpitrix.IsDeleted(err) { + return nil + } + + log.Error(err, fmt.Sprintf("Deleteing openpitrix runtime failed: %v times left", maxRetries-i-1)) } } diff --git a/pkg/models/iam/im.go b/pkg/models/iam/im.go index ea8757214..0ab9cae4e 100644 --- a/pkg/models/iam/im.go +++ b/pkg/models/iam/im.go @@ -284,7 +284,7 @@ func ListUsers(conditions *params.Conditions, orderBy string, reverse bool, limi defer conn.Close() - pageControl := ldap.NewControlPaging(80) + pageControl := ldap.NewControlPaging(1000) users := make([]models.User, 0) diff --git a/pkg/models/iam/policy/policy.go b/pkg/models/iam/policy/policy.go index 109bb6f23..bce92c8f6 100644 --- a/pkg/models/iam/policy/policy.go +++ b/pkg/models/iam/policy/policy.go @@ -905,7 +905,7 @@ var ( Rules: []v1.PolicyRule{ { Verbs: []string{"get", "list"}, - APIGroups: []string{"resources.kubesphere.io"}, + APIGroups: []string{"resources.kubesphere.io", "app.k8s.io"}, Resources: []string{"applications"}, }, { Verbs: []string{"get", "list"}, @@ -927,7 +927,7 @@ var ( Rules: []v1.PolicyRule{ { Verbs: []string{"create", "update", "patch"}, - APIGroups: []string{"resources.kubesphere.io"}, + APIGroups: []string{"resources.kubesphere.io", "app.k8s.io"}, Resources: []string{"applications"}, }, { Verbs: []string{"create", "update", "patch"}, @@ -940,7 +940,7 @@ var ( Rules: []v1.PolicyRule{ { Verbs: []string{"delete"}, - APIGroups: []string{"resources.kubesphere.io"}, + APIGroups: []string{"resources.kubesphere.io", "app.k8s.io"}, Resources: []string{"applications"}, }, { diff --git a/pkg/simple/client/openpitrix/openpitrixclient.go b/pkg/simple/client/openpitrix/openpitrixclient.go index b9844d96b..5456f22de 100644 --- a/pkg/simple/client/openpitrix/openpitrixclient.go +++ b/pkg/simple/client/openpitrix/openpitrixclient.go @@ -24,7 +24,9 @@ import ( "fmt" "github.com/golang/glog" "io/ioutil" + "kubesphere.io/kubesphere/pkg/utils/sliceutil" "net/http" + "strings" "sync" ) @@ -48,6 +50,10 @@ type Interface interface { CreateRuntime(runtime *RunTime) error DeleteRuntime(runtimeId string) error } +type cluster struct { + Status string `json:"status"` + ClusterId string `json:"cluster_id"` +} type Error struct { status int @@ -78,14 +84,12 @@ func (c client) CreateRuntime(runtime *RunTime) error { data, err := json.Marshal(runtime) if err != nil { - glog.Error(err) return err } req, err := http.NewRequest(http.MethodPost, fmt.Sprintf("%s/v1/runtimes", openpitrixAPIServer), bytes.NewReader(data)) if err != nil { - glog.Error(err) return err } req.Header.Add("Content-Type", "application/json") @@ -106,30 +110,46 @@ func (c client) CreateRuntime(runtime *RunTime) error { } if resp.StatusCode > http.StatusOK { - return Error{resp.StatusCode, string(data)} + err = Error{resp.StatusCode, string(data)} + glog.Error(err) + return err } return nil } -func (c client) DeleteRuntime(runtimeId string) error { - data := []byte(fmt.Sprintf(`{"runtime_id":"%s"}`, runtimeId)) - req, err := http.NewRequest(http.MethodDelete, fmt.Sprintf("%s/v1/runtimes", openpitrixAPIServer), bytes.NewReader(data)) +func (c client) deleteClusters(clusters []cluster) error { + clusterId := make([]string, 0) - if err != nil { - glog.Error(err) - - return err + for _, cluster := range clusters { + if cluster.Status != "deleted" && cluster.Status != "deleting" && !sliceutil.HasString(clusterId, cluster.ClusterId) { + clusterId = append(clusterId, cluster.ClusterId) + } } + if len(clusterId) == 0 { + return nil + } + + deleteRequest := struct { + ClusterId []string `json:"cluster_id"` + }{ + ClusterId: clusterId, + } + data, _ := json.Marshal(deleteRequest) + req, err := http.NewRequest(http.MethodPost, fmt.Sprintf("%s/v1/clusters/delete", openpitrixAPIServer), bytes.NewReader(data)) + + if err != nil { + return err + } req.Header.Add("Authorization", openpitrixProxyToken) resp, err := c.client.Do(req) - if err != nil { glog.Error(err) return err } + defer resp.Body.Close() data, err = ioutil.ReadAll(resp.Body) @@ -139,8 +159,110 @@ func (c client) DeleteRuntime(runtimeId string) error { } if resp.StatusCode > http.StatusOK { - return Error{resp.StatusCode, string(data)} + err = Error{resp.StatusCode, string(data)} + glog.Error(err) + return err } return nil } + +func (c client) listClusters(runtimeId string) ([]cluster, error) { + limit := 200 + offset := 0 + clusters := make([]cluster, 0) + for { + req, err := http.NewRequest(http.MethodGet, fmt.Sprintf("%s/v1/clusters?runtime_id=%s&limit=%d&offset=%d", openpitrixAPIServer, runtimeId, limit, offset), nil) + + if err != nil { + glog.Error(err) + return nil, err + } + + req.Header.Add("Authorization", openpitrixProxyToken) + + resp, err := c.client.Do(req) + + if err != nil { + glog.Error(err) + return nil, err + } + + data, err := ioutil.ReadAll(resp.Body) + + if err != nil { + glog.Error(err) + return nil, err + } + + resp.Body.Close() + + if resp.StatusCode > http.StatusOK { + err = Error{resp.StatusCode, string(data)} + glog.Error(err) + return nil, err + } + listClusterResponse := struct { + TotalCount int `json:"total_count"` + ClusterSet []cluster `json:"cluster_set"` + }{} + err = json.Unmarshal(data, &listClusterResponse) + + if err != nil { + glog.Error(err) + return nil, err + } + + clusters = append(clusters, listClusterResponse.ClusterSet...) + + if listClusterResponse.TotalCount <= limit+offset { + break + } + + offset += limit + } + + return clusters, nil +} + +func (c client) DeleteRuntime(runtimeId string) error { + clusters, err := c.listClusters(runtimeId) + + if err != nil { + glog.Error(err) + return err + } + + err = c.deleteClusters(clusters) + + if err != nil { + glog.Error(err) + return err + } + + return nil +} + +func IsNotFound(err error) bool { + if e, ok := err.(Error); ok { + if e.status == http.StatusNotFound { + return true + } + if strings.Contains(e.message, "not exist") { + return true + } + if strings.Contains(e.message, "not found") { + return true + } + } + return false +} + +func IsDeleted(err error) bool { + if e, ok := err.(Error); ok { + if strings.Contains(e.message, "is [deleted]") { + return true + } + } + return false +} From 1a1bcfebd061d20b3ff7f75f25a9cff0e6dac31b Mon Sep 17 00:00:00 2001 From: Jeff Date: Sat, 18 May 2019 09:23:16 +0800 Subject: [PATCH 15/28] fix router nil bug --- pkg/models/routers/routers.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/models/routers/routers.go b/pkg/models/routers/routers.go index 2c93ef139..4cf156170 100644 --- a/pkg/models/routers/routers.go +++ b/pkg/models/routers/routers.go @@ -112,6 +112,10 @@ func getMasterNodeIp() string { func addLoadBalancerIp(service *corev1.Service) { + if service == nil { + return + } + // append selected node ip as loadbalancer ingress ip if service.Spec.Type != corev1.ServiceTypeLoadBalancer && len(service.Status.LoadBalancer.Ingress) == 0 { rip := getMasterNodeIp() From ef83b540b533f832172ce9c967da469d16d9115d Mon Sep 17 00:00:00 2001 From: pengfeizhou Date: Sat, 18 May 2019 19:15:28 +0800 Subject: [PATCH 16/28] update README for 2.0.0 Signed-off-by: pengfeizhou --- README.md | 56 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index a3ba55bee..355a72b5e 100644 --- a/README.md +++ b/README.md @@ -8,23 +8,52 @@ [KubeSphere](https://kubesphere.io/) is an enterprise-grade multi-tenant container management platform that built on [Kubernetes](https://kubernetes.io). It provides an easy-to-use UI enables creation of computing resources with a few clicks and one-click deployment, which reduces the learning curve and empower the DevOps teams. It greatly reduces the complexity of the daily work of development, testing, operation and maintenance, aiming to solve the pain spots of Kubernetes' storage, network, security and ease of use, etc. -> See this [document](https://docs.kubesphere.io/advanced-v1.0/en/introduction/intro/) that describes the KubeSphere landscape and details. +> See this [document](https://docs.kubesphere.io/advanced-v2.0/zh-CN/introduction/intro/) that describes the KubeSphere landscape and details. ## Features -KubeSphere provides an easy-to-use console with the awesome user experience that allows you to quickly get started with a container management platform. KubeSphere provides and integrates workload management, DevOps Delivery, multi-tenant management, multi-dimensional monitoring, service and network management, application scheduling, infrastructure management, image registry management, etc. It also supports multiple open source storage and high-performance cloud storage as the persistent storage services. +KubeSphere Advanced Edition 2.0.0 provides an easy-to-use console with the awesome user experience that allows you to quickly get started with a container management platform. KubeSphere provides and supports following core features: -> See this [document](https://docs.kubesphere.io/advanced-v1.0/en/introduction/features/) that elaborates on the KubeSphere features and services from a professional point of view. + +- Workload management +- Microservice governance +- DevOps Delivery +- Source to Image +- Multi-tenant management +- Multi-dimensional monitoring, Logging, Alerting, +- Service and network management +- Application template +- Infrastructure management, image registry management +- Interate Harbor and GitLab +- LB controller for Kubernetes on bare metal ([Porter](https://github.com/kubesphere/porter)), [cloud LB plugin](https://github.com/yunify/qingcloud-cloud-controller-manager) +- Support GPU node + + +It also supports multiple open source storage and high-performance cloud storage as the persistent storage services, as well as support multiple open source network plugins. + +> See this [document](https://docs.kubesphere.io/advanced-v2.0/zh-CN/introduction/features/) that elaborates on the KubeSphere features and services from a professional point of view. ---- +## Latest Release + +KubeSphere Advanced Edition 2.0.0 was released on **May 18th, 2019**. See the [Release Notes For 2.0.0](https://docs.kubesphere.io/advanced-v2.0/release/release-v200/) to preview the updates. + ## Installation -KubeSphere installation supports following 2 kinds of installation: +### Download + +```shell +curl +``` + +### Install + +KubeSphere installation supports following 2 kinds of installation, please reference the following guides on how to get KubeSphere up and running. + +- [All-in-One](https://docs.kubesphere.io/advanced-v2.0/zh-CN/installation/all-in-one/): For those who are new to KubeSphere and looking for the fastest way to install and experience the dashboard, the all-in-one installation must be your best choice since it supports one-click installation. +- [Multi-Node](https://docs.kubesphere.io/advanced-v2.0/zh-CN/installation/multi-node/): Multi-node is used for installing KubeSphere on multiple instances, supports for installing a highly available cluster which is able to use in a formal environment. -- [All-in-One](https://docs.kubesphere.io/advanced-v1.0/en/installation/all-in-one/): For those who are new to KubeSphere and looking for the fastest way to install and experience the dashboard, the all-in-one installation must be your best choice since it supports one-click installation. -- [Multi-Node](../https://docs.kubesphere.io/advanced-v1.0/en/installation/multi-node/): Multi-node is used for installing KubeSphere on multiple instances, supports for installing a highly available master and etcd cluster which is able to use in a formal environment. -- For Chinese version, see [KubeSphere Installation Guide (安装指南) ](https://docs.kubesphere.io/advanced-v1.0/zh-CN/installation/intro/). ### Minimum Requirements @@ -34,28 +63,25 @@ KubeSphere installation supports following 2 kinds of installation: - Red Hat Enterprise Linux Server 7.4 (64 bit) - Debian Stretch 9.5 (64 bit) - Hardware - - CPU:4 Core, Memory:8 G, Disk Space:100 G + - CPU:8 Core, Memory:16 G, Disk Space:100 G ## Quick Start -The [Quick Start Guide](https://docs.kubesphere.io/advanced-v1.0/en/quick-start/admin-quick-start/) provides 7 quick-start examples to walk you through the process and common manipulation in KubeSphere, with a quick overview of the basic features of KubeSphere that helps you to get familiar with it. +The [Quick Start Guide](https://docs.kubesphere.io/advanced-v2.0/quick-start/admin-quick-start/) provides 12 quick-start examples to walk you through the process and common manipulation in KubeSphere, with a quick overview of the core features of KubeSphere that helps you to get familiar with it. -## Latest Release - -KubeSphere Advanced Edition 1.0.1 was released on **January 28th, 2019**. See the [Release Notes For 1.0.1](https://docs.kubesphere.io/advanced-v1.0/en/release/release-v101/) to preview the updates. ## RoadMap -Currently, KubeSphere has released the following three major editions. Advanced Edition 2.0.0 will be released on April 18, 2019. The 2.0.0 release will include microservice governance, log query and collection, alerting, S2i, code continuous inspection (SonarQube), quota management for workspace, improve security performance, GPU support, as well as providing [Porter](https://github.com/kubesphere/porter), which is a load balancer for bare metal Kubernetes clusters. +Currently, KubeSphere has released the following 4 major editions. Advanced Edition 2.0.0 was released on May 18, 2019. The future releases will include Big data, AI, Multicluster, QingCloud SDN, etc. -**Community Edition** => **Express Edition** => **Advanced Edition** +**Community Edition** => **Express Edition** => **Advanced Edition 1.0.0** => **Advanced Edition 2.0.0** ![Roadmap](docs/images/roadmap-en.png) ## Documentation - [KubeSphere Documentation (En/中) ](https://docs.kubesphere.io/) -- [KubeSphere Docementation (PDF)](https://docs.kubesphere.io/KubeSphere-advanced-v1.0.pdf) +- [KubeSphere Docementation (PDF)](https://docs.kubesphere.io/KubeSphere-advanced-v2.0.pdf) ## Support, Discussion, and Community From ebcf5bed6f351b774b6b316a130476e942a8bcf2 Mon Sep 17 00:00:00 2001 From: Jeff Date: Sat, 18 May 2019 21:34:32 +0800 Subject: [PATCH 17/28] update application vendor --- .../genericreconciler/genericreconciler.go | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/vendor/github.com/kubernetes-sigs/application/pkg/genericreconciler/genericreconciler.go b/vendor/github.com/kubernetes-sigs/application/pkg/genericreconciler/genericreconciler.go index 894754cba..7cf7f5bea 100644 --- a/vendor/github.com/kubernetes-sigs/application/pkg/genericreconciler/genericreconciler.go +++ b/vendor/github.com/kubernetes-sigs/application/pkg/genericreconciler/genericreconciler.go @@ -308,29 +308,6 @@ func (gr *Reconciler) ReconcileComponent(crname string, c component.Component, s } } - // delete(observed - expected) - for _, o := range observed.Items() { - seen := false - oNamespace := o.Obj.GetNamespace() - oName := o.Obj.GetName() - oKind := reflect.TypeOf(o.Obj).String() - oRsrcInfo := oKind + "/" + oNamespace + "/" + oName - for _, e := range expected.Items() { - if (e.Obj.GetName() == oName) && - (e.Obj.GetNamespace() == oNamespace) && - (reflect.TypeOf(o.Obj).String() == oKind) { - seen = true - break - } - } - // rsrc is in observed but not in expected - delete - if !seen { - if err := gr.Delete(context.TODO(), o.Obj.(runtime.Object)); err != nil { - errs = handleErrorArr("delete", oRsrcInfo, err, errs) - } - } - } - err = utilerrors.NewAggregate(errs) c.UpdateComponentStatus(c.CR, status, reconciled, err) return err From 63a07566c270e3bb09573cca65a69d969a5f283d Mon Sep 17 00:00:00 2001 From: pengfeizhou Date: Sun, 19 May 2019 02:10:01 +0800 Subject: [PATCH 18/28] update README to 2.0.0 Signed-off-by: pengfeizhou --- README.md | 28 ++++++++++++++++------------ docs/images/roadmap-en.png | Bin 225375 -> 220302 bytes 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 355a72b5e..cad04e28d 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,9 @@ KubeSphere Advanced Edition 2.0.0 provides an easy-to-use console with the aweso - DevOps Delivery - Source to Image - Multi-tenant management -- Multi-dimensional monitoring, Logging, Alerting, +- Multi-dimensional and Multi-tenant monitoring, Logging, Alerting, Notification - Service and network management -- Application template +- Application template and repository - Infrastructure management, image registry management - Interate Harbor and GitLab - LB controller for Kubernetes on bare metal ([Porter](https://github.com/kubesphere/porter)), [cloud LB plugin](https://github.com/yunify/qingcloud-cloud-controller-manager) @@ -41,18 +41,22 @@ KubeSphere Advanced Edition 2.0.0 was released on **May 18th, 2019**. See the [R ## Installation -### Download - -```shell -curl -``` - -### Install - KubeSphere installation supports following 2 kinds of installation, please reference the following guides on how to get KubeSphere up and running. -- [All-in-One](https://docs.kubesphere.io/advanced-v2.0/zh-CN/installation/all-in-one/): For those who are new to KubeSphere and looking for the fastest way to install and experience the dashboard, the all-in-one installation must be your best choice since it supports one-click installation. -- [Multi-Node](https://docs.kubesphere.io/advanced-v2.0/zh-CN/installation/multi-node/): Multi-node is used for installing KubeSphere on multiple instances, supports for installing a highly available cluster which is able to use in a formal environment. +### All-in-One + +[All-in-One](https://docs.kubesphere.io/advanced-v2.0/zh-CN/installation/all-in-one/): For those who are new to KubeSphere and looking for the fastest way to install and experience the dashboard. + +Just download the installer and execute the `install.sh` under `/scripts` folder, choose `"1) All-in-one"` to trigger the installation. Generally, you can install it directly without any modification, for details please reference [All-in-One](https://docs.kubesphere.io/advanced-v2.0/zh-CN/installation/all-in-one/). + +```bash +$ curl -L https://kubesphere.io/download/stable/advanced-2.0.0 > advanced-2.0.0.tar.gz +$ tar -zxf advanced-2.0.0.tar.gz +``` + +### Multi-Node + +[Multi-Node](https://docs.kubesphere.io/advanced-v2.0/zh-CN/installation/multi-node/) is used for installing KubeSphere on multiple instances, supports for installing a highly available cluster which is able to use in a formal environment. ### Minimum Requirements diff --git a/docs/images/roadmap-en.png b/docs/images/roadmap-en.png index 5fe3630a1cd1e3bd82eb3d60167f7703324f9a8a..af82f5f13cbb52635d70bd293d33b1abdb0f80e2 100644 GIT binary patch literal 220302 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 literal 225375 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%0ANFp;(yiyb;<`*lh9gecl1cvIhSiLcOX)XN8 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

Tj7tI%|9mYK^E#;75#E#taEH|t zH>;JcX~met_TV6F32(XlZBA$4T%q;D#Ri}vqxRM6v=yRha&}Qm`6>>(d>=BVjUf=v z*^QRIqJ?9%VYlQYm>?$yGXXEg`A8}c#nUBt2~B<7+t6a1sR))Eoia-eRt*PuJBB=r zfCu=)=Hgr{!`UHgsD1UB%IWICE-2G737>~29ATl!m$JPrbIt&+q|i}xjq0O==Vp=o z2gx@_OkZ{MEbehx57#lo14tz|V$P~LSU|W%dQ?U&l~P9QgT~}@{$2cceed6gZy#%r zS3AAw?|ec%FMK{W7!O3=3ougsKt|&>QSpW3GAVt2YV4 zJMJV{tR$9{DR6(P#|}R(_!(@#^P92cMv#QuVI{CjB@S>b0|c0-b!+Ag|}d&+R8J3KiyMBB0*@Nj+8®h6_QCDG{ONAk{kNiDge_{%()DCml9Q-f|w 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�U++NiyvOI<7Ihfm&15w*z-D}%d>&fb75Z|O_ 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 From 851193622db94e3956c98045f0bc66c7728e8a0b Mon Sep 17 00:00:00 2001 From: rayzhou2017 Date: Sun, 19 May 2019 09:40:37 +0800 Subject: [PATCH 19/28] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cad04e28d..9961918ec 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,8 @@ KubeSphere Advanced Edition 2.0.0 provides an easy-to-use console with the aweso - Workload management -- Microservice governance -- DevOps Delivery +- Service mesh +- DevOps - Source to Image - Multi-tenant management - Multi-dimensional and Multi-tenant monitoring, Logging, Alerting, Notification From 55bb8da037ba2ae266c190d7e34cae2f8c34c191 Mon Sep 17 00:00:00 2001 From: rayzhou2017 Date: Sun, 19 May 2019 09:41:19 +0800 Subject: [PATCH 20/28] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9961918ec..c307aabd8 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ KubeSphere Advanced Edition 2.0.0 provides an easy-to-use console with the aweso - Support GPU node -It also supports multiple open source storage and high-performance cloud storage as the persistent storage services, as well as support multiple open source network plugins. +It also supports multiple open source storage and high-performance cloud storage as the persistent storage services, as well as supports multiple open source network plugins. > See this [document](https://docs.kubesphere.io/advanced-v2.0/zh-CN/introduction/features/) that elaborates on the KubeSphere features and services from a professional point of view. From a74905f5c4cf2ebe5adf9945c6b529e6cfe3540f Mon Sep 17 00:00:00 2001 From: pengfeizhou Date: Sun, 19 May 2019 09:44:20 +0800 Subject: [PATCH 21/28] fix typo, update feature description Signed-off-by: pengfeizhou --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cad04e28d..abf6958d8 100644 --- a/README.md +++ b/README.md @@ -16,15 +16,15 @@ KubeSphere Advanced Edition 2.0.0 provides an easy-to-use console with the aweso - Workload management -- Microservice governance +- Service mesh (Istio-based) - DevOps Delivery - Source to Image - Multi-tenant management -- Multi-dimensional and Multi-tenant monitoring, Logging, Alerting, Notification +- Multi-dimensional and Multi-tenant Monitoring, Logging, Alerting, Notification - Service and network management - Application template and repository - Infrastructure management, image registry management -- Interate Harbor and GitLab +- Integrate Harbor and GitLab - LB controller for Kubernetes on bare metal ([Porter](https://github.com/kubesphere/porter)), [cloud LB plugin](https://github.com/yunify/qingcloud-cloud-controller-manager) - Support GPU node From 96e32cc00368da5029ce73b47029999f16b1a644 Mon Sep 17 00:00:00 2001 From: rayzhou2017 Date: Sun, 19 May 2019 11:10:52 +0800 Subject: [PATCH 22/28] Update README.md --- README.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/README.md b/README.md index e3856726f..bd6944773 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,8 @@ KubeSphere Advanced Edition 2.0.0 provides an easy-to-use console with the aweso - Workload management -<<<<<<< HEAD - Service mesh (Istio-based) -- DevOps Delivery -======= -- Service mesh - DevOps ->>>>>>> 55bb8da037ba2ae266c190d7e34cae2f8c34c191 - Source to Image - Multi-tenant management - Multi-dimensional and Multi-tenant Monitoring, Logging, Alerting, Notification From 8979d3a67ddd903f64313e907e14e01be6957241 Mon Sep 17 00:00:00 2001 From: soulseen Date: Wed, 22 May 2019 11:58:19 +0800 Subject: [PATCH 23/28] filter jenkins header Signed-off-by: soulseen --- pkg/apiserver/devops/devops.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/pkg/apiserver/devops/devops.go b/pkg/apiserver/devops/devops.go index 13314add0..3fe06266c 100644 --- a/pkg/apiserver/devops/devops.go +++ b/pkg/apiserver/devops/devops.go @@ -23,8 +23,11 @@ import ( log "github.com/golang/glog" "kubesphere.io/kubesphere/pkg/models/devops" "net/http" + "strings" ) +const jenkinsHeaderPre = "X-" + func GetPipeline(req *restful.Request, resp *restful.Response) { projectName := req.PathParameter("projectName") pipelineName := req.PathParameter("pipelineName") @@ -111,7 +114,9 @@ func GetBranchStepLog(req *restful.Request, resp *restful.Response) { return } for k, v := range header { - resp.AddHeader(k, v[0]) + if strings.HasPrefix(k, jenkinsHeaderPre) { + resp.AddHeader(k, v[0]) + } } resp.Write(res) } @@ -129,7 +134,9 @@ func GetStepLog(req *restful.Request, resp *restful.Response) { return } for k, v := range header { - resp.AddHeader(k, v[0]) + if strings.HasPrefix(k, jenkinsHeaderPre) { + resp.AddHeader(k, v[0]) + } } resp.Write(res) } From 01b79df455bc0a0fe2af737568ed42da09bef813 Mon Sep 17 00:00:00 2001 From: soulseen Date: Mon, 27 May 2019 17:19:11 +0800 Subject: [PATCH 24/28] add log err Signed-off-by: soulseen --- pkg/models/devops/devops.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/models/devops/devops.go b/pkg/models/devops/devops.go index 69c4d37a5..4b2a1d152 100644 --- a/pkg/models/devops/devops.go +++ b/pkg/models/devops/devops.go @@ -698,6 +698,7 @@ func jenkinsClient(baseUrl string, req *http.Request) ([]byte, http.Header, erro defer resp.Body.Close() if resp.StatusCode >= http.StatusBadRequest { + log.Errorf("%+v", string(resBody)) jkerr := new(JkError) jkerr.Code = resp.StatusCode jkerr.Message = http.StatusText(resp.StatusCode) From 7e1774eb069659ab9ffd491c12c76dbecf19893f Mon Sep 17 00:00:00 2001 From: soulseen Date: Tue, 4 Jun 2019 11:05:08 +0800 Subject: [PATCH 25/28] fix url format Signed-off-by: soulseen --- pkg/models/devops/devops.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pkg/models/devops/devops.go b/pkg/models/devops/devops.go index 4b2a1d152..cc07aa469 100644 --- a/pkg/models/devops/devops.go +++ b/pkg/models/devops/devops.go @@ -68,10 +68,11 @@ func SearchPipelines(req *http.Request) ([]byte, error) { } func SearchPipelineRuns(projectName, pipelineName string, req *http.Request) ([]byte, error) { - baseUrl := fmt.Sprintf(jenkins.Server+SearchPipelineRunUrl+req.URL.RawQuery, projectName, pipelineName) + baseUrl := fmt.Sprintf(jenkins.Server+SearchPipelineRunUrl, projectName, pipelineName) + log.Infof("Jenkins-url: " + baseUrl) - res, err := sendJenkinsRequest(baseUrl, req) + res, err := sendJenkinsRequest(baseUrl + req.URL.RawQuery, req) if err != nil { log.Error(err) return nil, err @@ -277,10 +278,10 @@ func GetArtifacts(projectName, pipelineName, runId string, req *http.Request) ([ } func GetPipeBranch(projectName, pipelineName string, req *http.Request) ([]byte, error) { - baseUrl := fmt.Sprintf(jenkins.Server+GetPipeBranchUrl+req.URL.RawQuery, projectName, pipelineName) + baseUrl := fmt.Sprintf(jenkins.Server+GetPipeBranchUrl, projectName, pipelineName) log.Infof("Jenkins-url: " + baseUrl) - res, err := sendJenkinsRequest(baseUrl, req) + res, err := sendJenkinsRequest(baseUrl + req.URL.RawQuery, req) if err != nil { log.Error(err) return nil, err @@ -544,7 +545,7 @@ func ToJson(req *http.Request) ([]byte, error) { } func GetNotifyCommit(req *http.Request) ([]byte, error) { - baseUrl := fmt.Sprintf(jenkins.Server + GetNotifyCommitUrl + req.URL.RawQuery) + baseUrl := fmt.Sprint(jenkins.Server + GetNotifyCommitUrl + req.URL.RawQuery) log.Infof("Jenkins-url: " + baseUrl) req.Method = "GET" From 2f02aa55cca10b5babb6e9a809ce60dd765c4769 Mon Sep 17 00:00:00 2001 From: soulseen Date: Tue, 4 Jun 2019 11:08:11 +0800 Subject: [PATCH 26/28] format log Signed-off-by: soulseen --- pkg/apiserver/devops/devops.go | 2 +- pkg/models/devops/devops.go | 84 +++++++++++++++++----------------- 2 files changed, 43 insertions(+), 43 deletions(-) diff --git a/pkg/apiserver/devops/devops.go b/pkg/apiserver/devops/devops.go index 3fe06266c..275635b4f 100644 --- a/pkg/apiserver/devops/devops.go +++ b/pkg/apiserver/devops/devops.go @@ -26,7 +26,7 @@ import ( "strings" ) -const jenkinsHeaderPre = "X-" +const jenkinsHeaderPre = "X-" func GetPipeline(req *restful.Request, resp *restful.Response) { projectName := req.PathParameter("projectName") diff --git a/pkg/models/devops/devops.go b/pkg/models/devops/devops.go index cc07aa469..bad0c3f87 100644 --- a/pkg/models/devops/devops.go +++ b/pkg/models/devops/devops.go @@ -70,9 +70,9 @@ func SearchPipelines(req *http.Request) ([]byte, error) { func SearchPipelineRuns(projectName, pipelineName string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+SearchPipelineRunUrl, projectName, pipelineName) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) - res, err := sendJenkinsRequest(baseUrl + req.URL.RawQuery, req) + res, err := sendJenkinsRequest(baseUrl+req.URL.RawQuery, req) if err != nil { log.Error(err) return nil, err @@ -83,7 +83,7 @@ func SearchPipelineRuns(projectName, pipelineName string, req *http.Request) ([] func GetBranchPipelineRun(projectName, pipelineName, branchName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetPipeBranchRunUrl, projectName, pipelineName, branchName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -96,7 +96,7 @@ func GetBranchPipelineRun(projectName, pipelineName, branchName, runId string, r func GetPipelineRunNodesbyBranch(projectName, pipelineName, branchName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetBranchPipeRunNodesUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -109,7 +109,7 @@ func GetPipelineRunNodesbyBranch(projectName, pipelineName, branchName, runId st func GetBranchStepLog(projectName, pipelineName, branchName, runId, nodeId, stepId string, req *http.Request) ([]byte, http.Header, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetBranchStepLogUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId, nodeId, stepId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) resBody, header, err := jenkinsClient(baseUrl, req) if err != nil { @@ -122,7 +122,7 @@ func GetBranchStepLog(projectName, pipelineName, branchName, runId, nodeId, step func GetStepLog(projectName, pipelineName, runId, nodeId, stepId string, req *http.Request) ([]byte, http.Header, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetStepLogUrl+req.URL.RawQuery, projectName, pipelineName, runId, nodeId, stepId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) resBody, header, err := jenkinsClient(baseUrl, req) if err != nil { @@ -136,7 +136,7 @@ func GetStepLog(projectName, pipelineName, runId, nodeId, stepId string, req *ht func Validate(scmId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+ValidateUrl, scmId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) resBody, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -149,7 +149,7 @@ func Validate(scmId string, req *http.Request) ([]byte, error) { func GetSCMOrg(scmId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetSCMOrgUrl+req.URL.RawQuery, scmId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -162,7 +162,7 @@ func GetSCMOrg(scmId string, req *http.Request) ([]byte, error) { func GetOrgRepo(scmId, organizationId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetOrgRepoUrl+req.URL.RawQuery, scmId, organizationId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -175,7 +175,7 @@ func GetOrgRepo(scmId, organizationId string, req *http.Request) ([]byte, error) func StopBranchPipeline(projectName, pipelineName, branchName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+StopBranchPipelineUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -188,7 +188,7 @@ func StopBranchPipeline(projectName, pipelineName, branchName, runId string, req func StopPipeline(projectName, pipelineName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+StopPipelineUrl+req.URL.RawQuery, projectName, pipelineName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -201,7 +201,7 @@ func StopPipeline(projectName, pipelineName, runId string, req *http.Request) ([ func ReplayBranchPipeline(projectName, pipelineName, branchName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+ReplayBranchPipelineUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -214,7 +214,7 @@ func ReplayBranchPipeline(projectName, pipelineName, branchName, runId string, r func ReplayPipeline(projectName, pipelineName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+ReplayPipelineUrl+req.URL.RawQuery, projectName, pipelineName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -227,7 +227,7 @@ func ReplayPipeline(projectName, pipelineName, runId string, req *http.Request) func GetBranchRunLog(projectName, pipelineName, branchName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetBranchRunLogUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -240,7 +240,7 @@ func GetBranchRunLog(projectName, pipelineName, branchName, runId string, req *h func GetRunLog(projectName, pipelineName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetRunLogUrl+req.URL.RawQuery, projectName, pipelineName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -253,7 +253,7 @@ func GetRunLog(projectName, pipelineName, runId string, req *http.Request) ([]by func GetBranchArtifacts(projectName, pipelineName, branchName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetBranchArtifactsUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -266,7 +266,7 @@ func GetBranchArtifacts(projectName, pipelineName, branchName, runId string, req func GetArtifacts(projectName, pipelineName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetArtifactsUrl+req.URL.RawQuery, projectName, pipelineName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -279,9 +279,9 @@ func GetArtifacts(projectName, pipelineName, runId string, req *http.Request) ([ func GetPipeBranch(projectName, pipelineName string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetPipeBranchUrl, projectName, pipelineName) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) - res, err := sendJenkinsRequest(baseUrl + req.URL.RawQuery, req) + res, err := sendJenkinsRequest(baseUrl+req.URL.RawQuery, req) if err != nil { log.Error(err) return nil, err @@ -292,7 +292,7 @@ func GetPipeBranch(projectName, pipelineName string, req *http.Request) ([]byte, func CheckBranchPipeline(projectName, pipelineName, branchName, runId, nodeId, stepId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+CheckBranchPipelineUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId, nodeId, stepId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) resBody, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -305,7 +305,7 @@ func CheckBranchPipeline(projectName, pipelineName, branchName, runId, nodeId, s func CheckPipeline(projectName, pipelineName, runId, nodeId, stepId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+CheckPipelineUrl+req.URL.RawQuery, projectName, pipelineName, runId, nodeId, stepId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) resBody, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -318,7 +318,7 @@ func CheckPipeline(projectName, pipelineName, runId, nodeId, stepId string, req func GetConsoleLog(projectName, pipelineName string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetConsoleLogUrl+req.URL.RawQuery, projectName, pipelineName) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) resBody, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -331,7 +331,7 @@ func GetConsoleLog(projectName, pipelineName string, req *http.Request) ([]byte, func ScanBranch(projectName, pipelineName string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+ScanBranchUrl+req.URL.RawQuery, projectName, pipelineName) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) resBody, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -344,7 +344,7 @@ func ScanBranch(projectName, pipelineName string, req *http.Request) ([]byte, er func RunBranchPipeline(projectName, pipelineName, branchName string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+RunBranchPipelineUrl+req.URL.RawQuery, projectName, pipelineName, branchName) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -357,7 +357,7 @@ func RunBranchPipeline(projectName, pipelineName, branchName string, req *http.R func RunPipeline(projectName, pipelineName string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+RunPipelineUrl+req.URL.RawQuery, projectName, pipelineName) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -370,7 +370,7 @@ func RunPipeline(projectName, pipelineName string, req *http.Request) ([]byte, e func GetBranchStepsStatus(projectName, pipelineName, branchName, runId, nodeId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetBranchStepsStatusUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId, nodeId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -383,7 +383,7 @@ func GetBranchStepsStatus(projectName, pipelineName, branchName, runId, nodeId s func GetStepsStatus(projectName, pipelineName, runId, nodeId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetStepsStatusUrl+req.URL.RawQuery, projectName, pipelineName, runId, nodeId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -396,7 +396,7 @@ func GetStepsStatus(projectName, pipelineName, runId, nodeId string, req *http.R func GetCrumb(req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server + GetCrumbUrl) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -409,7 +409,7 @@ func GetCrumb(req *http.Request) ([]byte, error) { func CheckScriptCompile(req *http.Request) ([]byte, error) { baseUrl := jenkins.Server + CheckScriptCompileUrl - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) req.SetBasicAuth(jenkins.Requester.BasicAuth.Username, jenkins.Requester.BasicAuth.Password) resBody, err := sendJenkinsRequest(baseUrl, req) @@ -455,7 +455,7 @@ func CheckCron(req *http.Request) (*CheckCronRes, error) { func GetPipelineRun(projectName, pipelineName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetPipelineRunUrl, projectName, pipelineName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -468,7 +468,7 @@ func GetPipelineRun(projectName, pipelineName, runId string, req *http.Request) func GetBranchPipeline(projectName, pipelineName, branchName string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetBranchPipeUrl, projectName, pipelineName, branchName) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -481,7 +481,7 @@ func GetBranchPipeline(projectName, pipelineName, branchName string, req *http.R func GetPipelineRunNodes(projectName, pipelineName, runId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetPipeRunNodesUrl+req.URL.RawQuery, projectName, pipelineName, runId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -494,7 +494,7 @@ func GetPipelineRunNodes(projectName, pipelineName, runId string, req *http.Requ func GetBranchNodeSteps(projectName, pipelineName, branchName, runId, nodeId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetBranchNodeStepsUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId, nodeId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -507,7 +507,7 @@ func GetBranchNodeSteps(projectName, pipelineName, branchName, runId, nodeId str func GetNodeSteps(projectName, pipelineName, runId, nodeId string, req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server+GetNodeStepsUrl+req.URL.RawQuery, projectName, pipelineName, runId, nodeId) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -520,7 +520,7 @@ func GetNodeSteps(projectName, pipelineName, runId, nodeId string, req *http.Req func ToJenkinsfile(req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server + ToJenkinsfileUrl) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -533,7 +533,7 @@ func ToJenkinsfile(req *http.Request) ([]byte, error) { func ToJson(req *http.Request) ([]byte, error) { baseUrl := fmt.Sprintf(jenkins.Server + ToJsonUrl) - log.Infof("Jenkins-url: " + baseUrl) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -545,8 +545,8 @@ func ToJson(req *http.Request) ([]byte, error) { } func GetNotifyCommit(req *http.Request) ([]byte, error) { - baseUrl := fmt.Sprint(jenkins.Server + GetNotifyCommitUrl + req.URL.RawQuery) - log.Infof("Jenkins-url: " + baseUrl) + baseUrl := fmt.Sprint(jenkins.Server, GetNotifyCommitUrl, req.URL.RawQuery) + log.Info("Jenkins-url: " + baseUrl) req.Method = "GET" res, err := sendJenkinsRequest(baseUrl, req) @@ -559,8 +559,8 @@ func GetNotifyCommit(req *http.Request) ([]byte, error) { } func GithubWebhook(req *http.Request) ([]byte, error) { - baseUrl := fmt.Sprintf(jenkins.Server + GithubWebhookUrl + req.URL.RawQuery) - log.Infof("Jenkins-url: " + baseUrl) + baseUrl := fmt.Sprint(jenkins.Server, GithubWebhookUrl, req.URL.RawQuery) + log.Info("Jenkins-url: " + baseUrl) res, err := sendJenkinsRequest(baseUrl, req) if err != nil { @@ -573,7 +573,7 @@ func GithubWebhook(req *http.Request) ([]byte, error) { func GetBranchNodesDetail(projectName, pipelineName, branchName, runId string, req *http.Request) ([]NodesDetail, error) { getNodesUrl := fmt.Sprintf(jenkins.Server+GetBranchPipeRunNodesUrl+req.URL.RawQuery, projectName, pipelineName, branchName, runId) - log.Infof("getNodesUrl: " + getNodesUrl) + log.Info("getNodesUrl: " + getNodesUrl) var wg sync.WaitGroup var nodesDetails []NodesDetail stepChan := make(chan *NodesStepsIndex, channelMaxCapacity) @@ -620,7 +620,7 @@ func GetBranchNodesDetail(projectName, pipelineName, branchName, runId string, r func GetNodesDetail(projectName, pipelineName, runId string, req *http.Request) ([]NodesDetail, error) { getNodesUrl := fmt.Sprintf(jenkins.Server+GetPipeRunNodesUrl+req.URL.RawQuery, projectName, pipelineName, runId) - log.Infof("getNodesUrl: " + getNodesUrl) + log.Info("getNodesUrl: " + getNodesUrl) var wg sync.WaitGroup var nodesDetails []NodesDetail stepChan := make(chan *NodesStepsIndex, channelMaxCapacity) From 6f941dce91ac6b89f562a48d3380d929967b2959 Mon Sep 17 00:00:00 2001 From: huanggze Date: Tue, 4 Jun 2019 13:53:56 +0800 Subject: [PATCH 27/28] fix: update log statistics response, remove sorting by time Signed-off-by: huanggze --- pkg/simple/client/elasticsearch/esclient.go | 36 ++++++--------------- 1 file changed, 9 insertions(+), 27 deletions(-) diff --git a/pkg/simple/client/elasticsearch/esclient.go b/pkg/simple/client/elasticsearch/esclient.go index b78900b32..0e44fbac5 100644 --- a/pkg/simple/client/elasticsearch/esclient.go +++ b/pkg/simple/client/elasticsearch/esclient.go @@ -137,12 +137,9 @@ type ContainerHighLightField struct { type EmptyField struct { } -// The aggs object holds two aggregations to be computed by Elasticsearch -// ContainterAgg is a cardinality aggregation to calculate the count of distinct containers -// StartTimeAgg is a top hits aggregation to retrieve the first record +// StatisticsAggs, the struct for `aggs` of type Request, holds a cardinality aggregation for distinct container counting type StatisticsAggs struct { ContainerAgg ContainerAgg `json:"containers"` - StartTimeAgg StartTimeAgg `json:"starttime"` } type ContainerAgg struct { @@ -153,15 +150,6 @@ type AggField struct { Field string `json:"field"` } -type StartTimeAgg struct { - TopHits TopHits `json:"top_hits"` -} - -type TopHits struct { - Sort []Sort `json:"sort"` - Size int `json:"size"` -} - type HistogramAggs struct { HistogramAgg HistogramAgg `json:"histogram"` } @@ -255,8 +243,7 @@ func createQueryRequest(param QueryParameters) (int, []byte, error) { if param.Operation == "statistics" { operation = OperationStatistics containerAgg := AggField{"kubernetes.docker_id.keyword"} - startTimeAgg := TopHits{[]Sort{{Order{"asc"}}}, 1} - statisticAggs := StatisticsAggs{ContainerAgg{containerAgg}, StartTimeAgg{startTimeAgg}} + statisticAggs := StatisticsAggs{ContainerAgg{containerAgg}} request.Aggs = statisticAggs request.Size = 0 } else if param.Operation == "histogram" { @@ -361,20 +348,15 @@ type ReadResult struct { Records []LogRecord `json:"records,omitempty"` } -// The aggregations object represents the return from an aggregation (see StatisticsAggs type) +// StatisticsResponseAggregations, the struct for `aggregations` of type Reponse, holds return results from the aggregation StatisticsAggs type StatisticsResponseAggregations struct { - ContainerCount ContainerCount `json:"containers"` - StartTime StartTimeTopHit `json:"starttime"` + ContainerCount ContainerCount `json:"containers"` } type ContainerCount struct { Value int64 `json:"value"` } -type StartTimeTopHit struct { - Hits Hits `json:"hits"` -} - type HistogramAggregations struct { HistogramAggregation HistogramAggregation `json:"histogram"` } @@ -396,7 +378,6 @@ type HistogramRecord struct { type StatisticsResult struct { Containers int64 `json:"containers"` Logs int64 `json:"logs"` - StartTime int64 `json:"starttime"` } type HistogramResult struct { @@ -460,13 +441,14 @@ func parseQueryResult(operation int, param QueryParameters, body []byte, query [ if response.Status != 0 { //Elastic error, eg, es_rejected_execute_exception queryResult.Status = response.Status + glog.Errorln("The query failed with no response") return &queryResult } if response.Shards.Successful != response.Shards.Total { //Elastic some shards error - queryResult.Status = http.StatusInternalServerError - return &queryResult + glog.Warningf("Not all shards succeed, successful shards: %d, skipped shards: %d, failed shards: %d", + response.Shards.Successful, response.Shards.Skipped, response.Shards.Failed) } switch operation { @@ -496,8 +478,7 @@ func parseQueryResult(operation int, param QueryParameters, body []byte, query [ queryResult.Status = http.StatusInternalServerError return &queryResult } - queryResult.Statistics = &StatisticsResult{Containers: statisticsResponse.ContainerCount.Value, - Logs: statisticsResponse.StartTime.Hits.Total, StartTime: statisticsResponse.StartTime.Hits.Hits[0].Sort[0]} + queryResult.Statistics = &StatisticsResult{Containers: statisticsResponse.ContainerCount.Value, Logs: response.Hits.Total} case OperationHistogram: var histogramResult HistogramResult @@ -583,6 +564,7 @@ func Query(param QueryParameters) *QueryResult { } url := fmt.Sprintf("http://%s:%s/%s*/_search", es.Host, es.Port, es.Index) + request, err := http.NewRequest("GET", url, bytes.NewBuffer(query)) if err != nil { glog.Errorln(err) From 22dca0ad55f29ec12f2e4ad6494cb9fb037cfbb3 Mon Sep 17 00:00:00 2001 From: hongming Date: Tue, 4 Jun 2019 16:43:11 +0800 Subject: [PATCH 28/28] fix: enable clusterrolebinding controller Signed-off-by: hongming --- pkg/controller/add_clusterrolebinding.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/controller/add_clusterrolebinding.go b/pkg/controller/add_clusterrolebinding.go index 81f328438..2fc0def5d 100644 --- a/pkg/controller/add_clusterrolebinding.go +++ b/pkg/controller/add_clusterrolebinding.go @@ -18,7 +18,9 @@ package controller +import "kubesphere.io/kubesphere/pkg/controller/clusterrolebinding" + func init() { // AddToManagerFuncs is a list of functions to create controllers and add them to a manager. - //AddToManagerFuncs = append(AddToManagerFuncs, clusterrolebinding.Add) + AddToManagerFuncs = append(AddToManagerFuncs, clusterrolebinding.Add) }