Merge branch 'main' of https://cloud.o-forge.io/core/oc-catalog
This commit is contained in:
commit
26a53efca3
23
Makefile
23
Makefile
@ -3,14 +3,14 @@
|
|||||||
build: clean
|
build: clean
|
||||||
bee pack
|
bee pack
|
||||||
|
|
||||||
base:
|
|
||||||
docker compose -f docker-compose.base.yml up -d
|
|
||||||
|
|
||||||
run:
|
run:
|
||||||
bee run -gendoc=true -downdoc=true
|
bee run -gendoc=true -downdoc=true
|
||||||
|
|
||||||
|
purge:
|
||||||
|
lsof -t -i:8087 | xargs kill | true
|
||||||
|
|
||||||
run-dev:
|
run-dev:
|
||||||
bee generate routers && HTTPPORT=8087 bee run -gendoc=true -downdoc=true
|
bee generate routers && bee run -gendoc=true -downdoc=true
|
||||||
|
|
||||||
debug:
|
debug:
|
||||||
bee run -downdebug -gendebug
|
bee run -downdebug -gendebug
|
||||||
@ -19,17 +19,22 @@ clean:
|
|||||||
rm -rf oc-catalog.tar.gz
|
rm -rf oc-catalog.tar.gz
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
DOCKER_BUILDKIT=1 docker build -t oc/oc-catalog:0.0.1 -f Dockerfile .
|
DOCKER_BUILDKIT=1 docker build -t oc-catalog -f Dockerfile . --build-arg=HOST=$(HOST)
|
||||||
docker tag oc/oc-catalog:0.0.1 oc/oc-catalog:latest
|
docker tag oc-catalog:latest oc/oc-catalog:0.0.1
|
||||||
|
|
||||||
publish-kind:
|
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:
|
publish-registry:
|
||||||
@echo "TODO"
|
@echo "TODO"
|
||||||
|
|
||||||
|
docker-deploy:
|
||||||
|
docker compose up -d
|
||||||
|
|
||||||
|
run-docker: docker publish-kind publish-registry docker-deploy
|
||||||
|
|
||||||
all: docker publish-kind publish-registry
|
all: docker publish-kind publish-registry
|
||||||
|
|
||||||
dev: base run-dev
|
dev: purge run-dev
|
||||||
|
|
||||||
.PHONY: build run clean docker publish-kind publish-registry
|
.PHONY: build run clean docker publish-kind publish-registry
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"port": 8080,
|
"port": 8087,
|
||||||
"MONGO_URL":"mongodb://localhost:27017/",
|
"MONGO_URL":"mongodb://localhost:27017/",
|
||||||
"MONGO_DATABASE":"DC_myDC"
|
"MONGO_DATABASE":"DC_myDC"
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
appname = oc-catalog
|
appname = oc-catalog
|
||||||
httpport = 8080
|
httpport = 8087
|
||||||
runmode = dev
|
runmode = dev
|
||||||
autorender = false
|
autorender = false
|
||||||
copyrequestbody = true
|
copyrequestbody = true
|
||||||
|
72
controllers/purchase.go
Executable file
72
controllers/purchase.go
Executable file
@ -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()
|
||||||
|
}
|
@ -15,7 +15,10 @@ type VersionController struct {
|
|||||||
// @Success 200
|
// @Success 200
|
||||||
// @router / [get]
|
// @router / [get]
|
||||||
func (c *VersionController) GetAll() {
|
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()
|
c.ServeJSON()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
|
4
go.mod
4
go.mod
@ -5,8 +5,8 @@ go 1.23.0
|
|||||||
toolchain go1.24.0
|
toolchain go1.24.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250704084459-443546027b27
|
cloud.o-forge.io/core/oc-lib v0.0.0-20250624102227-e600fedcab06
|
||||||
github.com/beego/beego/v2 v2.3.8
|
github.com/beego/beego/v2 v2.3.4
|
||||||
github.com/smartystreets/goconvey v1.7.2
|
github.com/smartystreets/goconvey v1.7.2
|
||||||
)
|
)
|
||||||
|
|
||||||
|
32
go.sum
32
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-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 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-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-20250619061111-938f9f1326ff h1:CB4WNMeqOSJKOLi8pa5F2lpTRAFykueODRdjVJ5Ecfc=
|
||||||
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-20250619061111-938f9f1326ff/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI=
|
||||||
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-20250620055332-4c2ecd3f4179 h1:nNxQEozE9W6ZeZCwdhB8vR7sZJ4h1Y0ARxfX/aOGv4k=
|
||||||
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-20250620055332-4c2ecd3f4179/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI=
|
||||||
cloud.o-forge.io/core/oc-lib v0.0.0-20250630120603-3971d5ca5d7b h1:ld3dxfjFcquqMiq9Exm8kiNg9WNWPOaCyzUly4pi4sc=
|
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-20250630120603-3971d5ca5d7b/go.mod h1:vHWauJsS6ryf7UDqq8hRXoYD5RsONxcFTxeZPOztEuI=
|
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-20250704084459-443546027b27 h1:iogk6pV3gybzQDBXMI6Qd/jvSA1h+3oRE+vLl1MRjew=
|
cloud.o-forge.io/core/oc-lib v0.0.0-20250620063433-8d5ba6a5e4c9 h1:5kZUCjFSxRndgNX3qWcI9ygeJNdTSR8VqV2XqEbRKlY=
|
||||||
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-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/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 h1:HurQEOGIEhLlPFCTR6ZDuQkybrUl2Ag2i6CdVD2rGiI=
|
||||||
github.com/beego/beego/v2 v2.3.4/go.mod h1:5cqHsOHJIxkq44tBpRvtDe59GuVRVv/9/tyVDxd5ce4=
|
github.com/beego/beego/v2 v2.3.4/go.mod h1:5cqHsOHJIxkq44tBpRvtDe59GuVRVv/9/tyVDxd5ce4=
|
||||||
|
BIN
oc-catalog
Executable file
BIN
oc-catalog
Executable file
Binary file not shown.
@ -15,6 +15,11 @@ import (
|
|||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
ns := beego.NewNamespace("/oc/",
|
ns := beego.NewNamespace("/oc/",
|
||||||
|
beego.NSNamespace("/purchase",
|
||||||
|
beego.NSInclude(
|
||||||
|
&controllers.PurchaseController{},
|
||||||
|
),
|
||||||
|
),
|
||||||
beego.NSNamespace("/resource",
|
beego.NSNamespace("/resource",
|
||||||
beego.NSInclude(
|
beego.NSInclude(
|
||||||
&controllers.ResourceController{},
|
&controllers.ResourceController{},
|
||||||
|
0
swagger/favicon-16x16.png
Executable file → Normal file
0
swagger/favicon-16x16.png
Executable file → Normal file
Before Width: | Height: | Size: 665 B After Width: | Height: | Size: 665 B |
0
swagger/favicon-32x32.png
Executable file → Normal file
0
swagger/favicon-32x32.png
Executable file → Normal file
Before Width: | Height: | Size: 628 B After Width: | Height: | Size: 628 B |
2
swagger/index.html
Executable file → Normal file
2
swagger/index.html
Executable file → Normal file
@ -39,7 +39,7 @@
|
|||||||
window.onload = function() {
|
window.onload = function() {
|
||||||
// Begin Swagger UI call region
|
// Begin Swagger UI call region
|
||||||
const ui = SwaggerUIBundle({
|
const ui = SwaggerUIBundle({
|
||||||
url: "swagger.json",
|
url: "https://petstore.swagger.io/v2/swagger.json",
|
||||||
dom_id: '#swagger-ui',
|
dom_id: '#swagger-ui',
|
||||||
deepLinking: true,
|
deepLinking: true,
|
||||||
presets: [
|
presets: [
|
||||||
|
0
swagger/oauth2-redirect.html
Executable file → Normal file
0
swagger/oauth2-redirect.html
Executable file → Normal file
0
swagger/swagger-ui-bundle.js
Executable file → Normal file
0
swagger/swagger-ui-bundle.js
Executable file → Normal file
0
swagger/swagger-ui-bundle.js.map
Executable file → Normal file
0
swagger/swagger-ui-bundle.js.map
Executable file → Normal file
0
swagger/swagger-ui-es-bundle-core.js
Executable file → Normal file
0
swagger/swagger-ui-es-bundle-core.js
Executable file → Normal file
0
swagger/swagger-ui-es-bundle.js
Executable file → Normal file
0
swagger/swagger-ui-es-bundle.js
Executable file → Normal file
0
swagger/swagger-ui-standalone-preset.js
Executable file → Normal file
0
swagger/swagger-ui-standalone-preset.js
Executable file → Normal file
0
swagger/swagger-ui-standalone-preset.js.map
Executable file → Normal file
0
swagger/swagger-ui-standalone-preset.js.map
Executable file → Normal file
0
swagger/swagger-ui.css
Executable file → Normal file
0
swagger/swagger-ui.css
Executable file → Normal file
0
swagger/swagger-ui.css.map
Executable file → Normal file
0
swagger/swagger-ui.css.map
Executable file → Normal file
0
swagger/swagger-ui.js
Executable file → Normal file
0
swagger/swagger-ui.js
Executable file → Normal file
0
swagger/swagger-ui.js.map
Executable file → Normal file
0
swagger/swagger-ui.js.map
Executable file → Normal file
0
swagger/swagger.json
Executable file → Normal file
0
swagger/swagger.json
Executable file → Normal file
0
swagger/swagger.yml
Executable file → Normal file
0
swagger/swagger.yml
Executable file → Normal file
Loading…
Reference in New Issue
Block a user