diff --git a/Dockerfile b/Dockerfile
index c889443..8bf0414 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -12,7 +12,7 @@ RUN timeout 15 bee run -gendoc=true -downdoc=true -runmode=dev || :
RUN sed -i 's/http:\/\/127.0.0.1:8080\/swagger\/swagger.json/swagger.json/g' swagger/index.html
-RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" .
+RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-w -s" -o setup .
RUN ls /app
@@ -20,11 +20,11 @@ FROM scratch
WORKDIR /app
-COPY --from=builder /app/oc-peers /usr/bin/
+COPY --from=builder /app/setup /usr/bin/
COPY --from=builder /app/swagger /app/swagger
-COPY docker_peers.json /etc/oc/peers.json
+COPY docker_conf.json /etc/oc/conf.json
-EXPOSE 8080
+EXPOSE $PORT
-ENTRYPOINT ["oc-peers"]
+ENTRYPOINT ["setup"]
diff --git a/controllers/status.go b/controllers/status.go
index 6287f69..2e1252c 100644
--- a/controllers/status.go
+++ b/controllers/status.go
@@ -2,8 +2,8 @@ package controllers
import (
"encoding/json"
+ "fmt"
- oclib "cloud.o-forge.io/core/oc-lib"
"cloud.o-forge.io/core/oc-lib/tools"
beego "github.com/beego/beego/v2/server/web"
)
@@ -32,21 +32,28 @@ type StatusController struct {
// @Success 200 {status} models.status
// @router / [post]
func (o *StatusController) Status() {
- var address []string
+ var address map[string]string
json.Unmarshal(o.Ctx.Input.CopyBody(10000), &address)
+ fmt.Println(len(address))
if len(address) == 0 { // default if nothing is send in body
- for k, v := range oclib.GetPaths() {
- address = append(address, "http://"+k.API()+v+"/oc")
+ for _, host := range []string{"oc-datacenter", "oc-workflow", "oc-workspace", "oc-shared"} {
+ address[host] = "http://" + host + ":8080/oc"
}
}
api := tools.API{}
- state, code, err := api.CheckRemoteAPIs(address)
+ state, services, err := api.CheckRemoteAPIs(address)
+ errSTR := ""
+ if err != nil {
+ errSTR = err.Error()
+ }
o.Data["json"] = map[string]interface{}{
- "data": map[string]string{
- "state": state.String(),
+ "data": map[string]interface{}{
+ "state": state.String(),
+ "code": state.EnumIndex(),
+ "services": services,
},
- "code": code,
- "error": err.Error(),
+ "code": 200,
+ "error": errSTR,
}
o.ServeJSON()
}
diff --git a/docker_conf.json b/docker_conf.json
new file mode 100644
index 0000000..1f0b88e
--- /dev/null
+++ b/docker_conf.json
@@ -0,0 +1,7 @@
+{
+ "MONGO_URL":"mongodb://mongo:27017/",
+ "MONGO_DATABASE":"DC_myDC",
+ "NATS_URL": "nats://nats:4222",
+ "HOSTNAME": "oc-peers",
+ "PORT" : 8080
+}
\ No newline at end of file
diff --git a/docker_peers.json b/docker_peers.json
deleted file mode 100644
index 5bf4004..0000000
--- a/docker_peers.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "MONGO_URL":"mongodb://mongo:27017/",
- "MONGO_DATABASE":"DC_myDC"
-}
\ No newline at end of file
diff --git a/go.mod b/go.mod
index d48ec86..b3fe08f 100644
--- a/go.mod
+++ b/go.mod
@@ -11,7 +11,7 @@ require (
)
require (
- cloud.o-forge.io/core/oc-lib v0.0.0-20240821140757-39030a0a80e8 // indirect
+ cloud.o-forge.io/core/oc-lib v0.0.0-20240823091301-5b3779e4cb21 // indirect
filippo.io/edwards25519 v1.1.0 // indirect
github.com/beego/bee/v2 v2.1.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
diff --git a/go.sum b/go.sum
index ba7559d..69cccac 100644
--- a/go.sum
+++ b/go.sum
@@ -160,6 +160,20 @@ cloud.o-forge.io/core/oc-lib v0.0.0-20240821121228-c14e06744938 h1:gMl7U5D+tZ4ui
cloud.o-forge.io/core/oc-lib v0.0.0-20240821121228-c14e06744938/go.mod h1:1hhYh5QWAbYw9cKplQ0ZD9PMgU8t6gPqiYF8sldv1HU=
cloud.o-forge.io/core/oc-lib v0.0.0-20240821140757-39030a0a80e8 h1:y4hngS1bedPKYXecTCcZk2WkuQNFazD11rMng9dmIzI=
cloud.o-forge.io/core/oc-lib v0.0.0-20240821140757-39030a0a80e8/go.mod h1:1hhYh5QWAbYw9cKplQ0ZD9PMgU8t6gPqiYF8sldv1HU=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240821143829-498ec3e9d8b5 h1:xgB9hmFg6kQfk0Hpb/yjdVK6Q3IzDihSPSbQfnOJQEY=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240821143829-498ec3e9d8b5/go.mod h1:1hhYh5QWAbYw9cKplQ0ZD9PMgU8t6gPqiYF8sldv1HU=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240821151922-b8b62dc2c8bf h1:s+Ow2r6UPXRbxAEHalPx7+89M3f99Fpl1HMMpMFIcTI=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240821151922-b8b62dc2c8bf/go.mod h1:1hhYh5QWAbYw9cKplQ0ZD9PMgU8t6gPqiYF8sldv1HU=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240822081914-4abf59a10d97 h1:6tbeTQvRnD0vDUl+5SLMgAh9ukjGxQ9WKjNcvvxN7cQ=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240822081914-4abf59a10d97/go.mod h1:1hhYh5QWAbYw9cKplQ0ZD9PMgU8t6gPqiYF8sldv1HU=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240822083903-bfa176a7c5ce h1:nJqBNioYDdki6O6N8m6AKChbBjpzcSwt1ixvpkIg+so=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240822083903-bfa176a7c5ce/go.mod h1:1hhYh5QWAbYw9cKplQ0ZD9PMgU8t6gPqiYF8sldv1HU=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240822112243-e69e13d8daf8 h1:35Hrl4lwqUom5Rbfi9wLRg2yMou3bTeL2ZAaDY0N79Y=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240822112243-e69e13d8daf8/go.mod h1:1hhYh5QWAbYw9cKplQ0ZD9PMgU8t6gPqiYF8sldv1HU=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240823082553-98fa1f6ca807 h1:BqqCAnV2pbrX09IoE3EaVgrKIJPTvzqPeMnt2nYhCs4=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240823082553-98fa1f6ca807/go.mod h1:1hhYh5QWAbYw9cKplQ0ZD9PMgU8t6gPqiYF8sldv1HU=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240823091301-5b3779e4cb21 h1:OzsSJVL2jaLewUWfW4C30SVrY4y20+mxI3rbOGLCPyo=
+cloud.o-forge.io/core/oc-lib v0.0.0-20240823091301-5b3779e4cb21/go.mod h1:1hhYh5QWAbYw9cKplQ0ZD9PMgU8t6gPqiYF8sldv1HU=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
diff --git a/main.go b/main.go
index 36bdfe4..1540c26 100644
--- a/main.go
+++ b/main.go
@@ -9,7 +9,7 @@ import (
"github.com/goraz/onion"
)
-const defaultConfigFile = "/etc/oc/peers.json"
+const defaultConfigFile = "/etc/oc/conf.json"
func main() {
configFile := ""
@@ -27,21 +27,15 @@ func main() {
tools.SetConfig(
o.GetStringDefault("MONGO_URL", "mongodb://127.0.0.1:27017"),
o.GetStringDefault("MONGO_DATABASE", "DC_myDC"),
- "",
+ o.GetStringDefault("NATS_URL", "nats://localhost:4222"),
)
- oclib.Init("oc-peers")
+
+ oclib.Init("oc-peers", o.GetStringDefault("HOSTNAME", "localhost"), o.GetStringDefault("PORT", "8093"))
oclib.AddPath(oclib.LibDataEnum(oclib.BOOKING), o.GetStringDefault("BOOKING_URL", ":8092"))
oclib.AddPath(oclib.LibDataEnum(oclib.WORKFLOW), o.GetStringDefault("WORKFLOW_URL", ":8088"))
- oclib.AddPath(oclib.LibDataEnum(oclib.WORKFLOW), o.GetStringDefault("WORKSPACE_URL", ":8089"))
+ oclib.AddPath(oclib.LibDataEnum(oclib.WORKSPACE), o.GetStringDefault("WORKSPACE_URL", ":8089"))
oclib.AddPath(oclib.LibDataEnum(oclib.SHARED_WORKSPACE), o.GetStringDefault("SHARED_WORKSPACE_URL", ":8091"))
-
- oclib.AddPath(oclib.LibDataEnum(oclib.DATACENTER_RESOURCE), o.GetStringDefault("CATALOG_URL", ":8087"))
- oclib.AddPath(oclib.LibDataEnum(oclib.DATA_RESOURCE), o.GetStringDefault("CATALOG_URL", ":8087"))
- oclib.AddPath(oclib.LibDataEnum(oclib.STORAGE_RESOURCE), o.GetStringDefault("CATALOG_URL", ":8087"))
- oclib.AddPath(oclib.LibDataEnum(oclib.WORKFLOW_RESOURCE), o.GetStringDefault("CATALOG_URL", ":8087"))
- oclib.AddPath(oclib.LibDataEnum(oclib.PROCESSING_RESOURCE), o.GetStringDefault("CATALOG_URL", ":8087"))
-
// Normal beego init
beego.BConfig.WebConfig.DirectoryIndex = true
beego.BConfig.WebConfig.StaticDir["/swagger"] = "swagger"
diff --git a/oc-scheduler b/oc-peer
similarity index 72%
rename from oc-scheduler
rename to oc-peer
index 5813007..c3fc86b 100755
Binary files a/oc-scheduler and b/oc-peer differ
diff --git a/routers/commentsRouter.go b/routers/commentsRouter.go
index f3479f1..a332862 100644
--- a/routers/commentsRouter.go
+++ b/routers/commentsRouter.go
@@ -45,7 +45,7 @@ func init() {
beego.GlobalControllerRouter["oc-peers/controllers:StatusController"] = append(beego.GlobalControllerRouter["oc-peers/controllers:StatusController"],
beego.ControllerComments{
- Method: "Get",
+ Method: "Status",
Router: `/`,
AllowHTTPMethods: []string{"post"},
MethodParams: param.Make(),
diff --git a/routers/router.go b/routers/router.go
index 18be1c4..2015c18 100644
--- a/routers/router.go
+++ b/routers/router.go
@@ -15,7 +15,7 @@ import (
func init() {
ns := beego.NewNamespace("/oc/",
- beego.NSNamespace("/peer/status",
+ beego.NSNamespace("/status",
beego.NSInclude(
&controllers.StatusController{},
),
@@ -31,6 +31,5 @@ func init() {
),
),
)
-
beego.AddNamespace(ns)
}
diff --git a/swagger/swagger.json b/swagger/swagger.json
index e56acf9..2a11a83 100644
--- a/swagger/swagger.json
+++ b/swagger/swagger.json
@@ -15,6 +15,123 @@
},
"basePath": "/oc/",
"paths": {
+ "/peer/": {
+ "get": {
+ "tags": [
+ "peer"
+ ],
+ "description": "find all peer\n\u003cbr\u003e",
+ "operationId": "PeerController.GetAll",
+ "responses": {
+ "200": {
+ "description": "{peer} models.peer"
+ }
+ }
+ }
+ },
+ "/peer/search/{search}": {
+ "get": {
+ "tags": [
+ "peer"
+ ],
+ "description": "search workspace\n\u003cbr\u003e",
+ "operationId": "PeerController.Search",
+ "parameters": [
+ {
+ "in": "path",
+ "name": "search",
+ "description": "the word search you want to get",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "{workspace} models.workspace"
+ }
+ }
+ }
+ },
+ "/peer/{id}": {
+ "get": {
+ "tags": [
+ "peer"
+ ],
+ "description": "find peer by peerid\n\u003cbr\u003e",
+ "operationId": "PeerController.Get",
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "description": "the peer id you want to get",
+ "required": true,
+ "type": "string"
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "{peer} models.peer"
+ }
+ }
+ },
+ "put": {
+ "tags": [
+ "peer"
+ ],
+ "description": "create peers\n\u003cbr\u003e",
+ "operationId": "PeerController.Update",
+ "parameters": [
+ {
+ "in": "path",
+ "name": "id",
+ "description": "the peer id you want to get",
+ "required": true,
+ "type": "string"
+ },
+ {
+ "in": "body",
+ "name": "body",
+ "description": "The peer content",
+ "required": true,
+ "schema": {
+ "$ref": "#/definitions/models.peer"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "",
+ "schema": {
+ "$ref": "#/definitions/models.peer"
+ }
+ }
+ }
+ }
+ },
+ "/status/": {
+ "post": {
+ "tags": [
+ "status"
+ ],
+ "description": "get peer status if it's alive\n\u003cbr\u003e",
+ "operationId": "StatusController.Status",
+ "parameters": [
+ {
+ "in": "body",
+ "name": "body",
+ "description": "of",
+ "schema": {
+ "$ref": "#/definitions/list"
+ }
+ }
+ ],
+ "responses": {
+ "200": {
+ "description": "{status} models.status"
+ }
+ }
+ }
+ },
"/version/": {
"get": {
"tags": [
@@ -28,78 +145,25 @@
}
}
}
+ }
+ },
+ "definitions": {
+ "list": {
+ "title": "list",
+ "type": "object"
},
- "/workflow_execution/": {
- "get": {
- "tags": [
- "workflow_execution"
- ],
- "description": "find workflow by workflowid\n\u003cbr\u003e",
- "operationId": "WorkflowExecutionController.GetAll",
- "responses": {
- "200": {
- "description": "{workflow} models.workflow"
- }
- }
- }
- },
- "/workflow_execution/search/{start_date}/{end_date}": {
- "get": {
- "tags": [
- "workflow_execution"
- ],
- "description": "search workspace\n\u003cbr\u003e",
- "operationId": "WorkflowExecutionController.Search",
- "parameters": [
- {
- "in": "path",
- "name": "start_date",
- "description": "the word search you want to get",
- "required": true,
- "type": "string"
- },
- {
- "in": "path",
- "name": "end_date",
- "description": "the word search you want to get",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "{workspace} models.workspace"
- }
- }
- }
- },
- "/workflow_execution/{id}": {
- "get": {
- "tags": [
- "workflow_execution"
- ],
- "description": "find workflow by workflowid\n\u003cbr\u003e",
- "operationId": "WorkflowExecutionController.Get",
- "parameters": [
- {
- "in": "path",
- "name": "id",
- "description": "the workflowid you want to get",
- "required": true,
- "type": "string"
- }
- ],
- "responses": {
- "200": {
- "description": "{workflow} models.workflow"
- }
- }
- }
+ "models.peer": {
+ "title": "peer",
+ "type": "object"
}
},
"tags": [
{
- "name": "workflow_execution",
+ "name": "status",
+ "description": "Operations about workflow\n"
+ },
+ {
+ "name": "peer",
"description": "Operations about workflow\n"
},
{
diff --git a/swagger/swagger.yml b/swagger/swagger.yml
index e98593c..19392ba 100644
--- a/swagger/swagger.yml
+++ b/swagger/swagger.yml
@@ -12,6 +12,92 @@ info:
url: http://www.apache.org/licenses/LICENSE-2.0.html
basePath: /oc/
paths:
+ /peer/:
+ get:
+ tags:
+ - peer
+ description: |-
+ find all peer
+
+ operationId: PeerController.GetAll
+ responses:
+ "200":
+ description: '{peer} models.peer'
+ /peer/{id}:
+ get:
+ tags:
+ - peer
+ description: |-
+ find peer by peerid
+
+ operationId: PeerController.Get
+ parameters:
+ - in: path
+ name: id
+ description: the peer id you want to get
+ required: true
+ type: string
+ responses:
+ "200":
+ description: '{peer} models.peer'
+ put:
+ tags:
+ - peer
+ description: |-
+ create peers
+
+ operationId: PeerController.Update
+ parameters:
+ - in: path
+ name: id
+ description: the peer id you want to get
+ required: true
+ type: string
+ - in: body
+ name: body
+ description: The peer content
+ required: true
+ schema:
+ $ref: '#/definitions/models.peer'
+ responses:
+ "200":
+ description: ""
+ schema:
+ $ref: '#/definitions/models.peer'
+ /peer/search/{search}:
+ get:
+ tags:
+ - peer
+ description: |-
+ search workspace
+
+ operationId: PeerController.Search
+ parameters:
+ - in: path
+ name: search
+ description: the word search you want to get
+ required: true
+ type: string
+ responses:
+ "200":
+ description: '{workspace} models.workspace'
+ /status/:
+ post:
+ tags:
+ - status
+ description: |-
+ get peer status if it's alive
+
+ operationId: StatusController.Status
+ parameters:
+ - in: body
+ name: body
+ description: of
+ schema:
+ $ref: '#/definitions/list'
+ responses:
+ "200":
+ description: '{status} models.status'
/version/:
get:
tags:
@@ -23,58 +109,18 @@ paths:
responses:
"200":
description: ""
- /workflow_execution/:
- get:
- tags:
- - workflow_execution
- description: |-
- find workflow by workflowid
-
- operationId: WorkflowExecutionController.GetAll
- responses:
- "200":
- description: '{workflow} models.workflow'
- /workflow_execution/{id}:
- get:
- tags:
- - workflow_execution
- description: |-
- find workflow by workflowid
-
- operationId: WorkflowExecutionController.Get
- parameters:
- - in: path
- name: id
- description: the workflowid you want to get
- required: true
- type: string
- responses:
- "200":
- description: '{workflow} models.workflow'
- /workflow_execution/search/{start_date}/{end_date}:
- get:
- tags:
- - workflow_execution
- description: |-
- search workspace
-
- operationId: WorkflowExecutionController.Search
- parameters:
- - in: path
- name: start_date
- description: the word search you want to get
- required: true
- type: string
- - in: path
- name: end_date
- description: the word search you want to get
- required: true
- type: string
- responses:
- "200":
- description: '{workspace} models.workspace'
+definitions:
+ list:
+ title: list
+ type: object
+ models.peer:
+ title: peer
+ type: object
tags:
-- name: workflow_execution
+- name: status
+ description: |
+ Operations about workflow
+- name: peer
description: |
Operations about workflow
- name: version