This is an automated email from the ASF dual-hosted git repository.

liujun pushed a commit to branch refactor-with-go
in repository https://gitbox.apache.org/repos/asf/dubbo-admin.git


The following commit(s) were added to refs/heads/refactor-with-go by this push:
     new c4ac6db4 Fix traffic backend, get and delete api methods (#1159)
c4ac6db4 is described below

commit c4ac6db410e3dd9dd2e72db7202807ca0655a49d
Author: Ken Liu <[email protected]>
AuthorDate: Sun Jun 4 18:59:28 2023 +0800

    Fix traffic backend, get and delete api methods (#1159)
---
 Makefile                                |   4 +-
 README.md                               |   2 +-
 hack/swagger/swagger.json               | 598 +++++++++++++++++++++++---------
 pkg/admin/handlers/traffic/accesslog.go |  18 +-
 pkg/admin/handlers/traffic/argument.go  |  24 +-
 pkg/admin/handlers/traffic/gray.go      |  18 +-
 pkg/admin/handlers/traffic/mock.go      |  23 +-
 pkg/admin/handlers/traffic/region.go    |  23 +-
 pkg/admin/handlers/traffic/retry.go     |  30 +-
 pkg/admin/handlers/traffic/timeout.go   |  24 +-
 pkg/admin/handlers/traffic/weight.go    |  24 +-
 11 files changed, 569 insertions(+), 219 deletions(-)

diff --git a/Makefile b/Makefile
index c0f6157d..5d86b211 100644
--- a/Makefile
+++ b/Makefile
@@ -100,8 +100,8 @@ manifests: controller-gen ## Generate WebhookConfiguration, 
ClusterRole and Cust
 generate: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, 
and DeepCopyObject method implementations.
        #$(CONTROLLER_GEN) object:headerFile="./hack/boilerplate.go.txt"  
crd:allowDangerousTypes=true paths="./..."
 
-.PHONY: dubbo-admin-swagger
-dubbo-admin-swagger: swagger-install ## Generate dubbo-admin swagger docs.
+.PHONY: swagger
+swagger: swagger-install ## Generate dubbo-admin swagger docs.
        $(SWAGGER) init --parseDependency -d cmd/admin,pkg/admin -o hack/swagger
        @rm -f hack/swagger/docs.go hack/swagger/swagger.yaml
 
diff --git a/README.md b/README.md
index e58c3e70..c9c27373 100644
--- a/README.md
+++ b/README.md
@@ -73,7 +73,7 @@ make test-authority   #Run tests for authority
 
 ### Swagger API
 ```shell
-make  dubbo-admin-swagger  #Generate dubbo-admin swagger docs in hack/swagger
+make swagger  #Generate dubbo-admin swagger docs in hack/swagger
 ```
 
 ### 打包
diff --git a/hack/swagger/swagger.json b/hack/swagger/swagger.json
index a8b52ead..51b50008 100644
--- a/hack/swagger/swagger.json
+++ b/hack/swagger/swagger.json
@@ -95,6 +95,93 @@
                 }
             }
         },
+        "/api/{env}/metrics/cluster": {
+            "get": {
+                "description": "show cluster overview",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "metrics"
+                ],
+                "summary": "show cluster overview",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/model.ClusterMetricsRes"
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/model.HTTPError"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/{env}/metrics/flow": {
+            "get": {
+                "description": "show Prometheus collected metrics",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "metrics"
+                ],
+                "summary": "show Prometheus collected metrics",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/model.FlowMetricsRes"
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/model.HTTPError"
+                        }
+                    }
+                }
+            }
+        },
+        "/api/{env}/metrics/metadata": {
+            "get": {
+                "description": "show metadata of the cluster, like dubbo 
versions, protocols, etc.",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "metrics"
+                ],
+                "summary": "show metadata of the cluster, like dubbo versions, 
protocols, etc.",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/model.Metadata"
+                        }
+                    },
+                    "500": {
+                        "description": "Internal Server Error",
+                        "schema": {
+                            "$ref": "#/definitions/model.HTTPError"
+                        }
+                    }
+                }
+            }
+        },
         "/api/{env}/mock/rule": {
             "post": {
                 "description": "Create or update MockRule",
@@ -1488,13 +1575,11 @@
                 "summary": "get rule list",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "accesslog",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Accesslog"
-                        }
+                        "type": "string",
+                        "description": "application name",
+                        "name": "application",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -1617,13 +1702,11 @@
                 "summary": "delete rule",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "accesslog",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Accesslog"
-                        }
+                        "type": "string",
+                        "description": "application name",
+                        "name": "application",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -1633,12 +1716,6 @@
                             "type": "bool"
                         }
                     },
-                    "400": {
-                        "description": "Bad Request",
-                        "schema": {
-                            "$ref": "#/definitions/model.HTTPError"
-                        }
-                    },
                     "500": {
                         "description": "Internal Server Error",
                         "schema": {
@@ -1663,13 +1740,25 @@
                 "summary": "get rule list",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "argument",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Argument"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -1792,13 +1881,25 @@
                 "summary": "delete rule",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "argument",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Argument"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -1808,12 +1909,6 @@
                             "type": "bool"
                         }
                     },
-                    "400": {
-                        "description": "Bad Request",
-                        "schema": {
-                            "$ref": "#/definitions/model.HTTPError"
-                        }
-                    },
                     "500": {
                         "description": "Internal Server Error",
                         "schema": {
@@ -1838,13 +1933,11 @@
                 "summary": "get rule list",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "gray",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Gray"
-                        }
+                        "type": "string",
+                        "description": "application name",
+                        "name": "application",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -1967,13 +2060,11 @@
                 "summary": "delete rule",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "gray",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Gray"
-                        }
+                        "type": "string",
+                        "description": "application name",
+                        "name": "application",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -1983,12 +2074,6 @@
                             "type": "bool"
                         }
                     },
-                    "400": {
-                        "description": "Bad Request",
-                        "schema": {
-                            "$ref": "#/definitions/model.HTTPError"
-                        }
-                    },
                     "500": {
                         "description": "Internal Server Error",
                         "schema": {
@@ -2013,13 +2098,25 @@
                 "summary": "get rule list",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "mock",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Mock"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2142,13 +2239,25 @@
                 "summary": "delete rule",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "mock",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Mock"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2188,13 +2297,25 @@
                 "summary": "get rule list",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "region",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Region"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2317,13 +2438,25 @@
                 "summary": "delete rule",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "region",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Region"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2363,13 +2496,25 @@
                 "summary": "get rule list",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "retry",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Retry"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2382,12 +2527,6 @@
                             }
                         }
                     },
-                    "400": {
-                        "description": "Bad Request",
-                        "schema": {
-                            "$ref": "#/definitions/model.HTTPError"
-                        }
-                    },
                     "500": {
                         "description": "Internal Server Error",
                         "schema": {
@@ -2498,13 +2637,25 @@
                 "summary": "delete rule",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "retry",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Retry"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2514,12 +2665,6 @@
                             "type": "bool"
                         }
                     },
-                    "400": {
-                        "description": "Bad Request",
-                        "schema": {
-                            "$ref": "#/definitions/model.HTTPError"
-                        }
-                    },
                     "500": {
                         "description": "Internal Server Error",
                         "schema": {
@@ -2544,13 +2689,25 @@
                 "summary": "get timeout rule list",
                 "parameters": [
                     {
-                        "description": "timeout rule",
-                        "name": "timeout",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Timeout"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2673,13 +2830,25 @@
                 "summary": "delete a new timeout rule",
                 "parameters": [
                     {
-                        "description": "timeout rule",
-                        "name": "timeout",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Timeout"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2689,12 +2858,6 @@
                             "type": "boolean"
                         }
                     },
-                    "400": {
-                        "description": "Bad Request",
-                        "schema": {
-                            "$ref": "#/definitions/model.HTTPError"
-                        }
-                    },
                     "500": {
                         "description": "Internal Server Error",
                         "schema": {
@@ -2719,13 +2882,25 @@
                 "summary": "get rule list",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "weight",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Weight"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2848,13 +3023,25 @@
                 "summary": "delete rule",
                 "parameters": [
                     {
-                        "description": "rule",
-                        "name": "weight",
-                        "in": "body",
-                        "required": true,
-                        "schema": {
-                            "$ref": "#/definitions/model.Weight"
-                        }
+                        "type": "string",
+                        "description": "service name",
+                        "name": "service",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service version",
+                        "name": "version",
+                        "in": "query",
+                        "required": true
+                    },
+                    {
+                        "type": "string",
+                        "description": "service group",
+                        "name": "group",
+                        "in": "query",
+                        "required": true
                     }
                 ],
                 "responses": {
@@ -2864,12 +3051,6 @@
                             "type": "bool"
                         }
                     },
-                    "400": {
-                        "description": "Bad Request",
-                        "schema": {
-                            "$ref": "#/definitions/model.HTTPError"
-                        }
-                    },
                     "500": {
                         "description": "Internal Server Error",
                         "schema": {
@@ -2878,6 +3059,29 @@
                     }
                 }
             }
+        },
+        "/api/{env}/version": {
+            "get": {
+                "description": "show basic information of the Admin process",
+                "consumes": [
+                    "application/json"
+                ],
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "metrics"
+                ],
+                "summary": "show basic information of the Admin process",
+                "responses": {
+                    "200": {
+                        "description": "OK",
+                        "schema": {
+                            "$ref": "#/definitions/version.Version"
+                        }
+                    }
+                }
+            }
         }
     },
     "definitions": {
@@ -2931,6 +3135,17 @@
                 }
             }
         },
+        "model.ClusterMetricsRes": {
+            "type": "object",
+            "properties": {
+                "data": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "integer"
+                    }
+                }
+            }
+        },
         "model.ConditionMatch": {
             "type": "object",
             "properties": {
@@ -3097,6 +3312,17 @@
                 }
             }
         },
+        "model.FlowMetricsRes": {
+            "type": "object",
+            "properties": {
+                "data": {
+                    "type": "object",
+                    "additionalProperties": {
+                        "type": "number"
+                    }
+                }
+            }
+        },
         "model.Gray": {
             "type": "object",
             "required": [
@@ -3181,6 +3407,34 @@
                 }
             }
         },
+        "model.Metadata": {
+            "type": "object",
+            "properties": {
+                "configCenter": {
+                    "type": "string"
+                },
+                "metadataCenter": {
+                    "type": "string"
+                },
+                "protocols": {
+                    "type": "array",
+                    "items": {}
+                },
+                "registry": {
+                    "type": "string"
+                },
+                "rules": {
+                    "type": "array",
+                    "items": {
+                        "type": "string"
+                    }
+                },
+                "versions": {
+                    "type": "array",
+                    "items": {}
+                }
+            }
+        },
         "model.Mock": {
             "type": "object",
             "required": [
@@ -3585,11 +3839,6 @@
         "time.Duration": {
             "type": "integer",
             "enum": [
-                1,
-                1000,
-                1000000,
-                1000000000,
-                60000000000,
                 1,
                 1000,
                 1000000,
@@ -3604,11 +3853,6 @@
                 3600000000000
             ],
             "x-enum-varnames": [
-                "Nanosecond",
-                "Microsecond",
-                "Millisecond",
-                "Second",
-                "Minute",
                 "Nanosecond",
                 "Microsecond",
                 "Millisecond",
@@ -3622,6 +3866,32 @@
                 "Minute",
                 "Hour"
             ]
+        },
+        "version.Version": {
+            "type": "object",
+            "properties": {
+                "buildDate": {
+                    "type": "string"
+                },
+                "compiler": {
+                    "type": "string"
+                },
+                "gitCommit": {
+                    "type": "string"
+                },
+                "gitTreeState": {
+                    "type": "string"
+                },
+                "gitVersion": {
+                    "type": "string"
+                },
+                "goVersion": {
+                    "type": "string"
+                },
+                "platform": {
+                    "type": "string"
+                }
+            }
         }
     }
 }
\ No newline at end of file
diff --git a/pkg/admin/handlers/traffic/accesslog.go 
b/pkg/admin/handlers/traffic/accesslog.go
index 3fc7e48f..56682da2 100644
--- a/pkg/admin/handlers/traffic/accesslog.go
+++ b/pkg/admin/handlers/traffic/accesslog.go
@@ -68,15 +68,21 @@ func UpdateAccesslog(c *gin.Context) {
 // @Tags         TrafficAccesslog
 // @Accept       json
 // @Produce      json
-// @Param        accesslog  body  model.Accesslog      true   "rule"
+// @Param        application  query  string  true   "application name"
 // @Success      200  {bool}    true
-// @Failure      400  {object}  model.HTTPError
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/accesslog [delete]
 func DeleteAccesslog(c *gin.Context) {
-       doAccesslogUpdate(c, func(a *model.Accesslog) error {
-               return accesslogSvc.Delete(a)
-       })
+       a := &model.Accesslog{
+               Application: c.Query("application"),
+       }
+
+       err := accesslogSvc.Delete(a)
+       if err != nil {
+               c.JSON(http.StatusInternalServerError, model.HTTPError{Error: 
err.Error()})
+       }
+
+       c.JSON(http.StatusOK, true)
 }
 
 // SearchAccesslog   get rule list
@@ -85,7 +91,7 @@ func DeleteAccesslog(c *gin.Context) {
 // @Tags         TrafficAccesslog
 // @Accept       json
 // @Produce      json
-// @Param        accesslog  body  model.Accesslog      true   "rule"
+// @Param        application  query  string  true   "application name"
 // @Success      200  {object}  []model.Accesslog
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/accesslog [get]
diff --git a/pkg/admin/handlers/traffic/argument.go 
b/pkg/admin/handlers/traffic/argument.go
index c643b860..ada51940 100644
--- a/pkg/admin/handlers/traffic/argument.go
+++ b/pkg/admin/handlers/traffic/argument.go
@@ -68,15 +68,25 @@ func UpdateArgument(c *gin.Context) {
 // @Tags         TrafficArgument
 // @Accept       json
 // @Produce      json
-// @Param        argument  body  model.Argument      true   "rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {bool}    true
-// @Failure      400  {object}  model.HTTPError
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/argument [delete]
 func DeleteArgument(c *gin.Context) {
-       doArgumentUpdate(c, func(a *model.Argument) error {
-               return argumentSvc.Delete(a)
-       })
+       a := &model.Argument{
+               Service: c.Query("service"),
+               Group:   c.Query("group"),
+               Version: c.Query("version"),
+       }
+
+       err := argumentSvc.Delete(a)
+       if err != nil {
+               c.JSON(http.StatusInternalServerError, model.HTTPError{Error: 
err.Error()})
+       }
+
+       c.JSON(http.StatusOK, true)
 }
 
 // SearchArgument   get rule list
@@ -85,7 +95,9 @@ func DeleteArgument(c *gin.Context) {
 // @Tags         TrafficArgument
 // @Accept       json
 // @Produce      json
-// @Param        argument  body  model.Argument      true   "rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {object}  []model.Argument
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/argument [get]
diff --git a/pkg/admin/handlers/traffic/gray.go 
b/pkg/admin/handlers/traffic/gray.go
index dc7150b7..c0c4a17a 100644
--- a/pkg/admin/handlers/traffic/gray.go
+++ b/pkg/admin/handlers/traffic/gray.go
@@ -68,15 +68,21 @@ func UpdateGray(c *gin.Context) {
 // @Tags         TrafficGray
 // @Accept       json
 // @Produce      json
-// @Param        gray  body  model.Gray      true   "rule"
+// @Param        application  query  string  true   "application name"
 // @Success      200  {bool}    true
-// @Failure      400  {object}  model.HTTPError
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/gray [delete]
 func DeleteGray(c *gin.Context) {
-       doGrayUpdate(c, func(g *model.Gray) error {
-               return graySVC.Delete(g)
-       })
+       g := &model.Gray{
+               Application: c.Query("application"),
+       }
+
+       err := graySVC.Delete(g)
+       if err != nil {
+               c.JSON(http.StatusInternalServerError, model.HTTPError{Error: 
err.Error()})
+       }
+
+       c.JSON(http.StatusOK, true)
 }
 
 // SearchGray   get rule list
@@ -85,7 +91,7 @@ func DeleteGray(c *gin.Context) {
 // @Tags         TrafficGray
 // @Accept       json
 // @Produce      json
-// @Param        gray  body  model.Gray      true   "rule"
+// @Param        application  query  string  true   "application name"
 // @Success      200  {object}  []model.Gray
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/gray [get]
diff --git a/pkg/admin/handlers/traffic/mock.go 
b/pkg/admin/handlers/traffic/mock.go
index bf80a788..b452fb77 100644
--- a/pkg/admin/handlers/traffic/mock.go
+++ b/pkg/admin/handlers/traffic/mock.go
@@ -68,15 +68,26 @@ func UpdateMock(c *gin.Context) {
 // @Tags         TrafficMock
 // @Accept       json
 // @Produce      json
-// @Param        mock  body  model.Mock      true   "rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {bool}    true
 // @Failure      400  {object}  model.HTTPError
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/mock [delete]
 func DeleteMock(c *gin.Context) {
-       doMockUpdate(c, func(m *model.Mock) error {
-               return mockSvc.Delete(m)
-       })
+       m := &model.Mock{
+               Service: c.Query("service"),
+               Group:   c.Query("group"),
+               Version: c.Query("version"),
+       }
+
+       err := mockSvc.Delete(m)
+       if err != nil {
+               c.JSON(http.StatusInternalServerError, model.HTTPError{Error: 
err.Error()})
+       }
+
+       c.JSON(http.StatusOK, true)
 }
 
 // SearchMock   get rule list
@@ -85,7 +96,9 @@ func DeleteMock(c *gin.Context) {
 // @Tags         TrafficMock
 // @Accept       json
 // @Produce      json
-// @Param        mock  body  model.Mock      true   "rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {object}  []model.Mock
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/mock [get]
diff --git a/pkg/admin/handlers/traffic/region.go 
b/pkg/admin/handlers/traffic/region.go
index 616b2520..e07504d7 100644
--- a/pkg/admin/handlers/traffic/region.go
+++ b/pkg/admin/handlers/traffic/region.go
@@ -68,15 +68,26 @@ func UpdateRegion(c *gin.Context) {
 // @Tags         TrafficRegion
 // @Accept       json
 // @Produce      json
-// @Param        region  body  model.Region      true   "rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {bool}    true
 // @Failure      400  {object}  model.HTTPError
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/region [delete]
 func DeleteRegion(c *gin.Context) {
-       doRegionUpdate(c, func(r *model.Region) error {
-               return regionSVC.Delete(r)
-       })
+       r := &model.Region{
+               Service: c.Query("service"),
+               Group:   c.Query("group"),
+               Version: c.Query("version"),
+       }
+
+       err := regionSVC.Delete(r)
+       if err != nil {
+               c.JSON(http.StatusInternalServerError, model.HTTPError{Error: 
err.Error()})
+       }
+
+       c.JSON(http.StatusOK, true)
 }
 
 // SearchRegion   get rule list
@@ -85,7 +96,9 @@ func DeleteRegion(c *gin.Context) {
 // @Tags         TrafficRegion
 // @Accept       json
 // @Produce      json
-// @Param        region  body  model.Region      true   "rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {object}  []model.Region
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/region [get]
diff --git a/pkg/admin/handlers/traffic/retry.go 
b/pkg/admin/handlers/traffic/retry.go
index 0c7c158a..71cbba3f 100644
--- a/pkg/admin/handlers/traffic/retry.go
+++ b/pkg/admin/handlers/traffic/retry.go
@@ -68,15 +68,25 @@ func UpdateRetry(c *gin.Context) {
 // @Tags         TrafficRetry
 // @Accept       json
 // @Produce      json
-// @Param        retry  body  model.Retry      true   "rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {bool}    true
-// @Failure      400  {object}  model.HTTPError
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/retry [delete]
 func DeleteRetry(c *gin.Context) {
-       doRetryUpdate(c, func(r *model.Retry) error {
-               return retrySvc.Delete(r)
-       })
+       r := &model.Retry{
+               Service: c.Query("service"),
+               Group:   c.Query("group"),
+               Version: c.Query("version"),
+       }
+
+       err := retrySvc.Delete(r)
+       if err != nil {
+               c.JSON(http.StatusInternalServerError, model.HTTPError{Error: 
err.Error()})
+       }
+
+       c.JSON(http.StatusOK, true)
 }
 
 // SearchRetry   get rule list
@@ -85,9 +95,10 @@ func DeleteRetry(c *gin.Context) {
 // @Tags         TrafficRetry
 // @Accept       json
 // @Produce      json
-// @Param        retry  body  model.Retry      true   "rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {object}  []model.Retry
-// @Failure      400  {object}  model.HTTPError
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/retry [get]
 func SearchRetry(c *gin.Context) {
@@ -96,11 +107,6 @@ func SearchRetry(c *gin.Context) {
                Group:   c.Query("group"),
                Version: c.Query("version"),
        }
-       if err := c.ShouldBindJSON(&r); err != nil {
-               logger.Errorf("Error parsing rule input when trying to create 
override rule, err msg is %s.", err.Error())
-               c.JSON(http.StatusBadRequest, model.HTTPError{Error: 
err.Error()})
-               return
-       }
 
        result, err := retrySvc.Search(r)
        if err != nil {
diff --git a/pkg/admin/handlers/traffic/timeout.go 
b/pkg/admin/handlers/traffic/timeout.go
index 9b8ec23a..48adc85b 100644
--- a/pkg/admin/handlers/traffic/timeout.go
+++ b/pkg/admin/handlers/traffic/timeout.go
@@ -68,15 +68,25 @@ func UpdateTimeout(c *gin.Context) {
 // @Tags         TrafficTimeout
 // @Accept       json
 // @Produce      json
-// @Param        timeout  body  model.Timeout      true   "timeout rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {boolean} true
-// @Failure      400  {object}  model.HTTPError
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/timeout [delete]
 func DeleteTimeout(c *gin.Context) {
-       doTimeoutUpdate(c, func(t *model.Timeout) error {
-               return timeoutSvc.Delete(t)
-       })
+       t := &model.Timeout{
+               Service: c.Query("service"),
+               Group:   c.Query("group"),
+               Version: c.Query("version"),
+       }
+
+       err := timeoutSvc.Delete(t)
+       if err != nil {
+               c.JSON(http.StatusInternalServerError, model.HTTPError{Error: 
err.Error()})
+       }
+
+       c.JSON(http.StatusOK, true)
 }
 
 // SearchTimeout get timeout rule list
@@ -85,7 +95,9 @@ func DeleteTimeout(c *gin.Context) {
 // @Tags         TrafficTimeout
 // @Accept       json
 // @Produce      json
-// @Param        timeout  body  model.Timeout      true   "timeout rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {object}  []model.Timeout
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/timeout [get]
diff --git a/pkg/admin/handlers/traffic/weight.go 
b/pkg/admin/handlers/traffic/weight.go
index 4afae5bf..ad12b360 100644
--- a/pkg/admin/handlers/traffic/weight.go
+++ b/pkg/admin/handlers/traffic/weight.go
@@ -68,15 +68,25 @@ func UpdateWeight(c *gin.Context) {
 // @Tags         TrafficWeight
 // @Accept       json
 // @Produce      json
-// @Param        weight  body  model.Weight      true   "rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {bool}    true
-// @Failure      400  {object}  model.HTTPError
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/weight [delete]
 func DeleteWeight(c *gin.Context) {
-       doWeightUpdate(c, func(p *model.Percentage) error {
-               return weightSvc.Delete(p)
-       })
+       p := &model.Percentage{
+               Service: c.Query("service"),
+               Group:   c.Query("group"),
+               Version: c.Query("version"),
+       }
+
+       err := weightSvc.Delete(p)
+       if err != nil {
+               c.JSON(http.StatusInternalServerError, model.HTTPError{Error: 
err.Error()})
+       }
+
+       c.JSON(http.StatusOK, true)
 }
 
 // SearchWeight get rule list
@@ -85,7 +95,9 @@ func DeleteWeight(c *gin.Context) {
 // @Tags         TrafficWeight
 // @Accept       json
 // @Produce      json
-// @Param        weight  body  model.Weight      true   "rule"
+// @Param        service  query  string  true   "service name"
+// @Param        version  query  string  true   "service version"
+// @Param        group    query  string  true   "service group"
 // @Success      200  {object}  []model.Weight
 // @Failure      500  {object}  model.HTTPError
 // @Router       /api/{env}/traffic/weight [get]


Reply via email to