Skip to content
This repository has been archived by the owner on Dec 31, 2021. It is now read-only.

Releases: owulveryck/gorchestrator

Certificates and Testing

29 Dec 13:53
Compare
Choose a tag to compare
Pre-release

Security

Mutual authentication of executor and orchestrator

Orchestrator and Executor now use x509 certificates to authenticate each-others.
A tool for generating self signed certificates has also been included in security/util

Orchestrator

Bug fix

A major rewrite has been done in the concurrency code. The sync.Broadcast function is no longer used. Instead a fanOut function which rely on channels has been implemented.

Testing

A lot of more testing case has been developed. 87.7% of the code is covered so far:

go test -coverprofile=/tmp/coverage.out github.com/owulveryck/gorchestrator/orchestrator
ok      github.com/owulveryck/gorchestrator/orchestrator        8.797s  coverage: 87.7% of statements

go tool cover -func=/tmp/coverage.out
github.com/owulveryck/gorchestrator/orchestrator/executor.go:21:        Init            90.9%
github.com/owulveryck/gorchestrator/orchestrator/graph.go:36:           getNodeFromName 0.0%
github.com/owulveryck/gorchestrator/orchestrator/graph.go:44:           Run             100.0%
github.com/owulveryck/gorchestrator/orchestrator/graph.go:114:          Check           100.0%
github.com/owulveryck/gorchestrator/orchestrator/node.go:46:            Execute         66.7%
github.com/owulveryck/gorchestrator/orchestrator/node.go:108:           Run             93.5%
github.com/owulveryck/gorchestrator/orchestrator/structure.go:38:       Error           100.0%
github.com/owulveryck/gorchestrator/orchestrator/util.go:22:            fanOut          100.0%
github.com/owulveryck/gorchestrator/orchestrator/util.go:34:            fanIn           100.0%
total:                                                                  (statements)    87.7%

Race conditions

The code has been tested against race conditions. 4 of them has been detected and eradicated:

go test -race .
ok      github.com/owulveryck/gorchestrator/orchestrator        9.374s

API enchancement

  • a GET /tasks is now listing all the tasks
  • a DELETE /tasks/{id} Now stops a tasks (actually sets its timeout to 0)

The changes has also been ported to the swagger "contract"

Executor

A basic shell engine has been hardcoded for testing purpose.

Misc

A Makefile has been included and is helpful to build the executables with tests certificates.

Clients

A TOSCA client is in progress. So far it is able to parse the examples files in the standard documentation (eg single_instance_wordpress).

TESTING the release

Download the binary or grab the source, install tmux and run make testing

Communication with the executor

14 Dec 08:43
Compare
Choose a tag to compare
Pre-release
  • Initiating the Executor interface that takes as parameter a "node"
      {
        "id": 4,
        "name": "le nom",
        "engine": "shell",
        "artifact": "example/script.sh",
        "args": null,
        "output": null
      },

POST and GET have been implemented

By now: no engine, but a ZMQ interface for communication between the drivers and the executor is in the pipe.

  • The orchestrator is effectively calling the executor in the Execute function of a node
  • The orchestrator now handle the corss node arguments:; for example, consider those nodes:
      {
        "id": 2,
        "name": "Node1",
        "engine": "shell",
        "artifact": "example/script.sh",
        "args": [
          "-e",
          "get_attribute Noeud1:output1"
        ],
        "output": null
      },
      {
        "id": 3,
        "name": " Node2",
        "engine": "shell",
        "artifact": "example/script.sh",
        "args": null,
        "output": [
        output1: "" 
  ]     
},

When Node2 is executed, depending of the engine, a result in placed in output1, then when Node1 is running, the orchestrator does substitute the get_attribute with the correct value from Node1 before sending it to the executor.

Featuring arguments

12 Dec 13:34
Compare
Choose a tag to compare
Featuring arguments Pre-release
Pre-release

The node's input arguments have been implemented

Orchestration engine OK

11 Dec 10:34
Compare
Choose a tag to compare
Pre-release
  • The orchestration engine seems to be bug free.
  • The API is nearly stable
  • A viewer client exists and is used mainly for development purpose by now
  • A TOSCA client is in progress

TODO:

  • Initiate the execution engine
  • Implement the DELETE method in the orchestrator
  • Use a Bearer Token to introduce the Authentication mechanism