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