diff --git a/Makefile b/Makefile index e591cba..f1d8001 100755 --- a/Makefile +++ b/Makefile @@ -3,14 +3,14 @@ build: clean bee pack -base: - docker compose -f docker-compose.base.yml up -d - run: bee run -gendoc=true -downdoc=true +purge: + lsof -t -i:8087 | xargs kill | true + run-dev: - bee generate routers && HTTPPORT=8087 bee run -gendoc=true -downdoc=true + bee generate routers && bee run -gendoc=true -downdoc=true debug: bee run -downdebug -gendebug @@ -19,17 +19,22 @@ clean: rm -rf oc-catalog.tar.gz docker: - DOCKER_BUILDKIT=1 docker build -t oc/oc-catalog:0.0.1 -f Dockerfile . - docker tag oc/oc-catalog:0.0.1 oc/oc-catalog:latest + DOCKER_BUILDKIT=1 docker build -t oc-catalog -f Dockerfile . --build-arg=HOST=$(HOST) + docker tag oc-catalog:latest oc/oc-catalog:0.0.1 publish-kind: - kind load docker-image oc/oc-catalog:0.0.1 --name opencloud + kind load docker-image oc/oc-catalog:0.0.1 --name opencloud | true publish-registry: @echo "TODO" +docker-deploy: + docker compose up -d + +run-docker: docker publish-kind publish-registry docker-deploy + all: docker publish-kind publish-registry -dev: base run-dev +dev: purge run-dev -.PHONY: build run clean docker publish-kind publish-registry \ No newline at end of file +.PHONY: build run clean docker publish-kind publish-registry diff --git a/catalog.json b/catalog.json index f3ebfe5..cf1b187 100755 --- a/catalog.json +++ b/catalog.json @@ -1,5 +1,5 @@ { - "port": 8080, + "port": 8087, "MONGO_URL":"mongodb://localhost:27017/", "MONGO_DATABASE":"DC_myDC" } \ No newline at end of file diff --git a/conf/app.conf b/conf/app.conf index 34105f7..d242abc 100755 --- a/conf/app.conf +++ b/conf/app.conf @@ -1,5 +1,5 @@ appname = oc-catalog -httpport = 8080 +httpport = 8087 runmode = dev autorender = false copyrequestbody = true diff --git a/controllers/purchase.go b/controllers/purchase.go new file mode 100755 index 0000000..341c8c3 --- /dev/null +++ b/controllers/purchase.go @@ -0,0 +1,72 @@ +package controllers + +import ( + "encoding/json" + + oclib "cloud.o-forge.io/core/oc-lib" + beego "github.com/beego/beego/v2/server/web" +) + +// Operations about compute +type PurchaseController struct { + beego.Controller +} + +var order_collection = oclib.LibDataEnum(oclib.ORDER) +var purchase_collection = oclib.LibDataEnum(oclib.PURCHASE_RESOURCE) + +// @Title Create +// @Description create compute +// @Param compute body json true "body for compute content (Json format)" +// @Success 200 {compute} models.compute +// @router / [post] +func (o *PurchaseController) Post() { + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + var res map[string]interface{} + json.Unmarshal(o.Ctx.Input.CopyBody(10000), &res) + stored := oclib.NewRequest(purchase_collection, user, peerID, groups, nil).StoreOne(res) + if stored.Err != "" { + o.Data["json"] = stored + o.ServeJSON() + return + } + o.ServeJSON() +} + +// @Title GetAll +// @Description find compute by id +// @Param is_draft query string false "draft wished" +// @Success 200 {compute} models.compute +// @router / [get] +func (o *PurchaseController) GetAll() { + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + isDraft := o.Ctx.Input.Query("is_draft") + o.Data["json"] = oclib.NewRequest(purchase_collection, user, peerID, groups, nil).LoadAll(isDraft == "true") + o.ServeJSON() +} + +// @Title Get +// @Description find compute by key word +// @Param search path string true "the search you want to get" +// @Param is_draft query string false "draft wished" +// @Success 200 {compute} models.compute +// @router /search/:search [get] +func (o *PurchaseController) Search() { + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + isDraft := o.Ctx.Input.Query("is_draft") + search := o.Ctx.Input.Param(":search") + o.Data["json"] = oclib.NewRequest(purchase_collection, user, peerID, groups, nil).Search(nil, search, isDraft == "true") + o.ServeJSON() +} + +// @Title Get +// @Description find compute by id +// @Param id path string true "the id you want to get" +// @Success 200 {compute} models.compute +// @router /:id [get] +func (o *PurchaseController) Get() { + user, peerID, groups := oclib.ExtractTokenInfo(*o.Ctx.Request) + id := o.Ctx.Input.Param(":id") + o.Data["json"] = oclib.NewRequest(purchase_collection, user, peerID, groups, nil).LoadOne(id) + o.ServeJSON() +} diff --git a/controllers/version.go b/controllers/version.go index 6e18c67..1a40348 100755 --- a/controllers/version.go +++ b/controllers/version.go @@ -15,7 +15,10 @@ type VersionController struct { // @Success 200 // @router / [get] func (c *VersionController) GetAll() { - c.Data["json"] = map[string]string{"version": "1"} + c.Data["json"] = map[string]string{ + "service": "oc-catalog", + "version": "1", + } c.ServeJSON() } diff --git a/docker-compose.base.yml b/docker-compose.base.yml deleted file mode 100755 index 558cbb5..0000000 --- a/docker-compose.base.yml +++ /dev/null @@ -1,33 +0,0 @@ -version: '3.4' - -services: - mongo: - image: 'mongo:latest' - networks: - - catalog - ports: - - 27017:27017 - container_name: mongo - volumes: - - oc-catalog-data:/data/db - - oc-catalog-data:/data/configdb - - mongo-express: - image: "mongo-express:latest" - restart: always - depends_on: - - mongo - networks: - - catalog - ports: - - 8081:8081 - environment: - - ME_CONFIG_BASICAUTH_USERNAME=test - - ME_CONFIG_BASICAUTH_PASSWORD=test - -volumes: - oc-catalog-data: - -networks: - catalog: - external: true diff --git a/go.mod b/go.mod index a198632..8749936 100755 --- a/go.mod +++ b/go.mod @@ -5,8 +5,8 @@ go 1.23.0 toolchain go1.24.0 require ( - cloud.o-forge.io/core/oc-lib v0.0.0-20250704084459-443546027b27 - github.com/beego/beego/v2 v2.3.8 + cloud.o-forge.io/core/oc-lib v0.0.0-20250624102227-e600fedcab06 + github.com/beego/beego/v2 v2.3.4 github.com/smartystreets/goconvey v1.7.2 ) diff --git a/go.sum b/go.sum index d5bf99f..e88f5ba 100755 --- a/go.sum +++ b/go.sum @@ -26,14 +26,30 @@ cloud.o-forge.io/core/oc-lib v0.0.0-20250219104152-3ecb0e9d960b h1:DhRqJdw2VePaY cloud.o-forge.io/core/oc-lib v0.0.0-20250219104152-3ecb0e9d960b/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= cloud.o-forge.io/core/oc-lib v0.0.0-20250219142942-5111c9c8bec7 h1:fh6SzBPenzIxufIIzExtx4jEE4OhFposqn3EbHFr92Q= cloud.o-forge.io/core/oc-lib v0.0.0-20250219142942-5111c9c8bec7/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= -cloud.o-forge.io/core/oc-lib v0.0.0-20250603080047-03dea551315b h1:yfXDZ0Pw5xTWstsbZWS+MV7G3ZTSvOCTwWQJWRn4Z5k= -cloud.o-forge.io/core/oc-lib v0.0.0-20250603080047-03dea551315b/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= -cloud.o-forge.io/core/oc-lib v0.0.0-20250604083300-387785b40cb0 h1:iEm/Rf9I0OSCcncuFy61YOSZ3jdRlhJ/oLD97Pc2pCQ= -cloud.o-forge.io/core/oc-lib v0.0.0-20250604083300-387785b40cb0/go.mod h1:2roQbUpv3a6mTIr5oU1ux31WbN8YucyyQvCQ0FqwbcE= -cloud.o-forge.io/core/oc-lib v0.0.0-20250630120603-3971d5ca5d7b h1:ld3dxfjFcquqMiq9Exm8kiNg9WNWPOaCyzUly4pi4sc= -cloud.o-forge.io/core/oc-lib v0.0.0-20250630120603-3971d5ca5d7b/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= -cloud.o-forge.io/core/oc-lib v0.0.0-20250704084459-443546027b27 h1:iogk6pV3gybzQDBXMI6Qd/jvSA1h+3oRE+vLl1MRjew= -cloud.o-forge.io/core/oc-lib v0.0.0-20250704084459-443546027b27/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250619061111-938f9f1326ff h1:CB4WNMeqOSJKOLi8pa5F2lpTRAFykueODRdjVJ5Ecfc= +cloud.o-forge.io/core/oc-lib v0.0.0-20250619061111-938f9f1326ff/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620055332-4c2ecd3f4179 h1:nNxQEozE9W6ZeZCwdhB8vR7sZJ4h1Y0ARxfX/aOGv4k= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620055332-4c2ecd3f4179/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620061052-d3cfe019e3a3 h1:rUmQoH3TBMq73A6gP9tWVbD7EyWeC9VI+YcXy2ITcso= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620061052-d3cfe019e3a3/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620063433-8d5ba6a5e4c9 h1:5kZUCjFSxRndgNX3qWcI9ygeJNdTSR8VqV2XqEbRKlY= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620063433-8d5ba6a5e4c9/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620072209-01af8237dbbd h1:YUd2qOfPO3wHiKfSf+uIt5+TyA9LTLuKsqVXGuusjA4= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620072209-01af8237dbbd/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620072755-8b38249df7f2 h1:prLu7mZOHK3wUTEtFul8wnsIaLIssZRRv2cJDue9LB4= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620072755-8b38249df7f2/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620085001-583ca2fbacd5 h1:FEBwueVOOWKYf0tJuE0EKNIbjxmTyCMgkT4qATYsfbo= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620085001-583ca2fbacd5/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620101113-e84d262f380b h1:wGDMS97ns+7QR0mQREF640PjG/2mUmEIB0qbxkDc/dg= +cloud.o-forge.io/core/oc-lib v0.0.0-20250620101113-e84d262f380b/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250624064953-2c8dcbe93d14 h1:iCTrYc2+W2BFLOupRK1sD6sOgsK4NIs6WMC+4LiWCaY= +cloud.o-forge.io/core/oc-lib v0.0.0-20250624064953-2c8dcbe93d14/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250624093207-3fdf5c3ebf29 h1:JitS1izRltTyOaWnvXnmYywHj0napsL6y0nBYiWUCNo= +cloud.o-forge.io/core/oc-lib v0.0.0-20250624093207-3fdf5c3ebf29/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI= +cloud.o-forge.io/core/oc-lib v0.0.0-20250624095852-147c7bc3a1d5 h1:0eV0E3kBZkOyoAurRmP9h4eHmFrZajOxSqoBgM3l3dk= +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= 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 new file mode 100755 index 0000000..94761f9 Binary files /dev/null and b/oc-catalog differ diff --git a/routers/router.go b/routers/router.go index c1cf181..b4cbc08 100755 --- a/routers/router.go +++ b/routers/router.go @@ -15,6 +15,11 @@ import ( func init() { ns := beego.NewNamespace("/oc/", + beego.NSNamespace("/purchase", + beego.NSInclude( + &controllers.PurchaseController{}, + ), + ), beego.NSNamespace("/resource", beego.NSInclude( &controllers.ResourceController{}, diff --git a/swagger/favicon-16x16.png b/swagger/favicon-16x16.png old mode 100755 new mode 100644 diff --git a/swagger/favicon-32x32.png b/swagger/favicon-32x32.png old mode 100755 new mode 100644 diff --git a/swagger/index.html b/swagger/index.html old mode 100755 new mode 100644 index 9df41b1..2a9d4e2 --- a/swagger/index.html +++ b/swagger/index.html @@ -39,7 +39,7 @@ window.onload = function() { // Begin Swagger UI call region const ui = SwaggerUIBundle({ - url: "swagger.json", + url: "https://petstore.swagger.io/v2/swagger.json", dom_id: '#swagger-ui', deepLinking: true, presets: [ diff --git a/swagger/oauth2-redirect.html b/swagger/oauth2-redirect.html old mode 100755 new mode 100644 diff --git a/swagger/swagger-ui-bundle.js b/swagger/swagger-ui-bundle.js old mode 100755 new mode 100644 diff --git a/swagger/swagger-ui-bundle.js.map b/swagger/swagger-ui-bundle.js.map old mode 100755 new mode 100644 diff --git a/swagger/swagger-ui-es-bundle-core.js b/swagger/swagger-ui-es-bundle-core.js old mode 100755 new mode 100644 diff --git a/swagger/swagger-ui-es-bundle.js b/swagger/swagger-ui-es-bundle.js old mode 100755 new mode 100644 diff --git a/swagger/swagger-ui-standalone-preset.js b/swagger/swagger-ui-standalone-preset.js old mode 100755 new mode 100644 diff --git a/swagger/swagger-ui-standalone-preset.js.map b/swagger/swagger-ui-standalone-preset.js.map old mode 100755 new mode 100644 diff --git a/swagger/swagger-ui.css b/swagger/swagger-ui.css old mode 100755 new mode 100644 diff --git a/swagger/swagger-ui.css.map b/swagger/swagger-ui.css.map old mode 100755 new mode 100644 diff --git a/swagger/swagger-ui.js b/swagger/swagger-ui.js old mode 100755 new mode 100644 diff --git a/swagger/swagger-ui.js.map b/swagger/swagger-ui.js.map old mode 100755 new mode 100644 diff --git a/swagger/swagger.json b/swagger/swagger.json old mode 100755 new mode 100644 diff --git a/swagger/swagger.yml b/swagger/swagger.yml old mode 100755 new mode 100644