diff --git a/controllers/general.go b/controllers/general.go new file mode 100755 index 0000000..33f473b --- /dev/null +++ b/controllers/general.go @@ -0,0 +1,57 @@ +package controllers + +import ( + oclib "cloud.o-forge.io/core/oc-lib" + w "cloud.o-forge.io/core/oc-lib/models/workflow" + tools "cloud.o-forge.io/core/oc-lib/tools" + beego "github.com/beego/beego/v2/server/web" +) + +// Operations about compute +type GeneralController struct { + beego.Controller +} + +// @Title GetAll +// @Description find compute by id +// @Param file formData file true "File to upload" +// @Success 200 {compute} models.workflow +// @Failure 406 {string} string "Bad request" +// @router / [get] +func (o *GeneralController) GetAll() { + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + file, _, err := o.Ctx.Request.FormFile("file") + if err != nil { + o.Data["json"] = map[string]interface{}{ + "data": nil, + "code": 406, + "error": err.Error(), + } + o.ServeJSON() + return + } + newWorkflow := &w.Workflow{} + req := &tools.APIRequest{ + Username: user, + PeerID: peerID, + Groups: groups, + } + newWorkflow, err = newWorkflow.ExtractFromPlantUML(file, req) + if err != nil { + o.Data["json"] = map[string]interface{}{ + "data": nil, + "code": 406, + "error": err.Error(), + } + o.ServeJSON() + return + } + + o.Data["json"] = map[string]interface{}{ + "data": newWorkflow, + "code": 200, + "error": nil, + } + + o.ServeJSON() +} diff --git a/go.mod b/go.mod index 8749936..ba216e5 100755 --- a/go.mod +++ b/go.mod @@ -5,7 +5,7 @@ go 1.23.0 toolchain go1.24.0 require ( - cloud.o-forge.io/core/oc-lib v0.0.0-20250624102227-e600fedcab06 + cloud.o-forge.io/core/oc-lib v0.0.0-20260112132629-be770ec763b1 github.com/beego/beego/v2 v2.3.4 github.com/smartystreets/goconvey v1.7.2 ) diff --git a/go.sum b/go.sum index e88f5ba..d7043c2 100755 --- a/go.sum +++ b/go.sum @@ -50,6 +50,10 @@ cloud.o-forge.io/core/oc-lib v0.0.0-20250624095852-147c7bc3a1d5 h1:0eV0E3kBZkOyo cloud.o-forge.io/core/oc-lib v0.0.0-20250624095852-147c7bc3a1d5/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= cloud.o-forge.io/core/oc-lib v0.0.0-20250624102227-e600fedcab06 h1:+RSv62uIC7wsmibsp1XTanQMNznNeOGgPpfhb6ZHT4c= cloud.o-forge.io/core/oc-lib v0.0.0-20250624102227-e600fedcab06/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20260112110032-27f295f17e05 h1:3d/ulu/bVexfD2RgP8hdWFtZCByWmxWKc+cxP40nhh0= +cloud.o-forge.io/core/oc-lib v0.0.0-20260112110032-27f295f17e05/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20260112132629-be770ec763b1 h1:MOllR71ruHvBZK3nxeOAnHa9xjnotnlngMEGZqEBp2g= +cloud.o-forge.io/core/oc-lib v0.0.0-20260112132629-be770ec763b1/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/beego/beego/v2 v2.3.4 h1:HurQEOGIEhLlPFCTR6ZDuQkybrUl2Ag2i6CdVD2rGiI= github.com/beego/beego/v2 v2.3.4/go.mod h1:5cqHsOHJIxkq44tBpRvtDe59GuVRVv/9/tyVDxd5ce4= diff --git a/oc-catalog b/oc-catalog index 94761f9..3231d83 100755 Binary files a/oc-catalog and b/oc-catalog differ diff --git a/routers/commentsRouter.go b/routers/commentsRouter.go index ef70b01..8005cb4 100755 --- a/routers/commentsRouter.go +++ b/routers/commentsRouter.go @@ -232,6 +232,15 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["oc-catalog/controllers:GeneralController"] = append(beego.GlobalControllerRouter["oc-catalog/controllers:GeneralController"], + beego.ControllerComments{ + Method: "GetAll", + Router: `/`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["oc-catalog/controllers:ProcessingController"] = append(beego.GlobalControllerRouter["oc-catalog/controllers:ProcessingController"], beego.ControllerComments{ Method: "Post", @@ -286,6 +295,42 @@ func init() { Filters: nil, Params: nil}) + beego.GlobalControllerRouter["oc-catalog/controllers:PurchaseController"] = append(beego.GlobalControllerRouter["oc-catalog/controllers:PurchaseController"], + beego.ControllerComments{ + Method: "Post", + Router: `/`, + AllowHTTPMethods: []string{"post"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + + beego.GlobalControllerRouter["oc-catalog/controllers:PurchaseController"] = append(beego.GlobalControllerRouter["oc-catalog/controllers:PurchaseController"], + beego.ControllerComments{ + Method: "GetAll", + Router: `/`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + + beego.GlobalControllerRouter["oc-catalog/controllers:PurchaseController"] = append(beego.GlobalControllerRouter["oc-catalog/controllers:PurchaseController"], + beego.ControllerComments{ + Method: "Get", + Router: `/:id`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + + beego.GlobalControllerRouter["oc-catalog/controllers:PurchaseController"] = append(beego.GlobalControllerRouter["oc-catalog/controllers:PurchaseController"], + beego.ControllerComments{ + Method: "Search", + Router: `/search/:search`, + AllowHTTPMethods: []string{"get"}, + MethodParams: param.Make(), + Filters: nil, + Params: nil}) + beego.GlobalControllerRouter["oc-catalog/controllers:ResourceController"] = append(beego.GlobalControllerRouter["oc-catalog/controllers:ResourceController"], beego.ControllerComments{ Method: "GetAll", diff --git a/routers/router.go b/routers/router.go index b4cbc08..2b05056 100755 --- a/routers/router.go +++ b/routers/router.go @@ -15,6 +15,11 @@ import ( func init() { ns := beego.NewNamespace("/oc/", + beego.NSNamespace("/generic", + beego.NSInclude( + &controllers.GeneralController{}, + ), + ), beego.NSNamespace("/purchase", beego.NSInclude( &controllers.PurchaseController{}, diff --git a/swagger/swagger.json b/swagger/swagger.json index 126a115..d19c6b9 100644 --- a/swagger/swagger.json +++ b/swagger/swagger.json @@ -476,6 +476,32 @@ } } }, + "/generic/": { + "get": { + "tags": [ + "generic" + ], + "description": "find compute by id\n\u003cbr\u003e", + "operationId": "GeneralController.GetAll", + "parameters": [ + { + "in": "formData", + "name": "file", + "description": "File to upload", + "required": true, + "type": "file" + } + ], + "responses": { + "200": { + "description": "{compute} models.workflow" + }, + "406": { + "description": "{string} string \"Bad request\"" + } + } + } + }, "/processing/": { "get": { "tags": [ @@ -624,6 +650,103 @@ } } }, + "/purchase/": { + "get": { + "tags": [ + "purchase" + ], + "description": "find compute by id\n\u003cbr\u003e", + "operationId": "PurchaseController.GetAll", + "parameters": [ + { + "in": "query", + "name": "is_draft", + "description": "draft wished", + "type": "string" + } + ], + "responses": { + "200": { + "description": "{compute} models.compute" + } + } + }, + "post": { + "tags": [ + "purchase" + ], + "description": "create compute\n\u003cbr\u003e", + "operationId": "PurchaseController.Create", + "parameters": [ + { + "in": "body", + "name": "compute", + "description": "body for compute content (Json format)", + "required": true, + "schema": { + "$ref": "#/definitions/json" + } + } + ], + "responses": { + "200": { + "description": "{compute} models.compute" + } + } + } + }, + "/purchase/search/{search}": { + "get": { + "tags": [ + "purchase" + ], + "description": "find compute by key word\n\u003cbr\u003e", + "operationId": "PurchaseController.Get", + "parameters": [ + { + "in": "path", + "name": "search", + "description": "the search you want to get", + "required": true, + "type": "string" + }, + { + "in": "query", + "name": "is_draft", + "description": "draft wished", + "type": "string" + } + ], + "responses": { + "200": { + "description": "{compute} models.compute" + } + } + } + }, + "/purchase/{id}": { + "get": { + "tags": [ + "purchase" + ], + "description": "find compute by id\n\u003cbr\u003e", + "operationId": "PurchaseController.Get", + "parameters": [ + { + "in": "path", + "name": "id", + "description": "the id you want to get", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "{compute} models.compute" + } + } + } + }, "/resource/": { "get": { "tags": [ @@ -1071,6 +1194,14 @@ } }, "tags": [ + { + "name": "generic", + "description": "Operations about compute\n" + }, + { + "name": "purchase", + "description": "Operations about compute\n" + }, { "name": "resource", "description": "Operations about resource\n" diff --git a/swagger/swagger.yml b/swagger/swagger.yml index bbe29a1..e39496e 100644 --- a/swagger/swagger.yml +++ b/swagger/swagger.yml @@ -359,6 +359,25 @@ paths: responses: "200": description: '{resource} models.resource' + /generic/: + get: + tags: + - generic + description: |- + find compute by id +
+ operationId: GeneralController.GetAll + parameters: + - in: formData + name: file + description: File to upload + required: true + type: file + responses: + "200": + description: '{compute} models.workflow' + "406": + description: '{string} string "Bad request"' /processing/: get: tags: @@ -468,6 +487,77 @@ paths: responses: "200": description: '{processing} models.processing' + /purchase/: + get: + tags: + - purchase + description: |- + find compute by id +
+ operationId: PurchaseController.GetAll + parameters: + - in: query + name: is_draft + description: draft wished + type: string + responses: + "200": + description: '{compute} models.compute' + post: + tags: + - purchase + description: |- + create compute +
+ operationId: PurchaseController.Create + parameters: + - in: body + name: compute + description: body for compute content (Json format) + required: true + schema: + $ref: '#/definitions/json' + responses: + "200": + description: '{compute} models.compute' + /purchase/{id}: + get: + tags: + - purchase + description: |- + find compute by id +
+ operationId: PurchaseController.Get + parameters: + - in: path + name: id + description: the id you want to get + required: true + type: string + responses: + "200": + description: '{compute} models.compute' + /purchase/search/{search}: + get: + tags: + - purchase + description: |- + find compute by key word +
+ operationId: PurchaseController.Get + parameters: + - in: path + name: search + description: the search you want to get + required: true + type: string + - in: query + name: is_draft + description: draft wished + type: string + responses: + "200": + description: '{compute} models.compute' /resource/: get: tags: @@ -798,6 +888,12 @@ definitions: title: workflow type: object tags: +- name: generic + description: | + Operations about compute +- name: purchase + description: | + Operations about compute - name: resource description: | Operations about resource