tools/boruta.git
6 years agoMake ListFilter an interface
Maciej Wereski [Wed, 20 Sep 2017 14:55:47 +0000 (16:55 +0200)]
Make ListFilter an interface

Currently ListFilter is defined as a structure. We don't know
how such structure should look like. Moreover it will be probably
changed to match new uses. We're not interested in the data provided,
but what functionality it provides. Thus change it to simple interface.

Change-Id: Ib297345d2f188fc941cf04794f03ec5250501474
Signed-off-by: Maciej Wereski <m.wereski@partner.samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49471

6 years agoFix types of request states
Maciej Wereski [Wed, 20 Sep 2017 11:16:13 +0000 (13:16 +0200)]
Fix types of request states

Change-Id: Ic8fa0bbe2f19d08deaf05a8f2e974fc45f368f6d
Signed-off-by: Maciej Wereski <m.wereski@partner.samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49470

6 years agoAdd tunnels to workers package
Aleksander Mistewicz [Tue, 5 Sep 2017 15:59:31 +0000 (17:59 +0200)]
Add tunnels to workers package

Tunnel forwards data between two hosts. It listens on the port,
on connection it opens a corresponding one to the worker, and copies
all data between them. Current implementation is not perfect
and hopefully will be changed soon.

Following library is being investigated:
    https://github.com/coreos/go-iptables

Change-Id: I610cf6aec17558f10ea26232a8ac9672a3a92cc0
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49438
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoAdd benchmark tests for WorkerList
Aleksander Mistewicz [Mon, 19 Jun 2017 10:56:47 +0000 (12:56 +0200)]
Add benchmark tests for WorkerList

Change-Id: Ic92c9d6e23a55971edd1c9ad2d15c939c8a4dba6
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49120
Reviewed-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Tested-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoImplement get information about the Worker
Aleksander Mistewicz [Thu, 8 Jun 2017 15:28:51 +0000 (17:28 +0200)]
Implement get information about the Worker

In order to avoid listing workers when information about only one is
needed, a convenience function has been added. It is faster and
guarantees that a single structure will be returned or an error.

workers/workers_test.go has been removed as all functions has been
implemented.

Change-Id: I0dfaccc4c55bdb30c5875de06db9d3b23b2345b2
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49062
Reviewed-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Tested-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoImplement filtered worker listing
Aleksander Mistewicz [Thu, 8 Jun 2017 15:22:02 +0000 (17:22 +0200)]
Implement filtered worker listing

WorkerList first applies Capabilities (Caps) and then Group filter.
Currently Caps require exact match, i.e. all keys must be found and
values must be equal. It is planned to support ranges and lists
of values.

Change-Id: I705c7b2f3e7a0be5506c5e6cfef5cd32af274fc9
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49061
Reviewed-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Tested-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoImplement setting groups for worker
Aleksander Mistewicz [Thu, 8 Jun 2017 13:29:10 +0000 (15:29 +0200)]
Implement setting groups for worker

One of the assumptions of Boruta system is that every user will have
access to the limited amount of resources. It is done by groups.
Initially Worker is not assigned to any. In order to add or remove
group from the list a new list should be created and SetGroups used
to replace it.

Change-Id: Id17eb5feab091dbaa90404d8a09bf4e52537fc61
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49060
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoImplement setting worker state
Aleksander Mistewicz [Thu, 8 Jun 2017 13:00:34 +0000 (15:00 +0200)]
Implement setting worker state

In order to perform maintenance, Worker should be in a proper state.
Administrator should set state to MAINTENANCE before taking action
and set it back to IDLE so it will return to the pool.

Change-Id: I44e2c64645e3643c16e8484c746ae4a233a6d232
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49059
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoImplement worker removal from the pool
Aleksander Mistewicz [Thu, 8 Jun 2017 12:51:47 +0000 (14:51 +0200)]
Implement worker removal from the pool

When Worker will not be used anymore, it should be removed in order
to free the resources. Administrator should first put Worker
in the MAINTENANCE state, using SetState, and then remove it,
using Deregister.

Change-Id: Ic9bb5e705418fae664857f3f541e9543ca7da9e2
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49058
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoImplement state update after failure
Aleksander Mistewicz [Thu, 8 Jun 2017 12:30:34 +0000 (14:30 +0200)]
Implement state update after failure

When Worker detects malfunction of Dryad it informs Boruta server
of failure and reason of it. Boruta will not dispatch any jobs to worker
in the FAIL state. Only administrator is able to change the state.

Change-Id: I7132193218974fa3b8eb7d97d07b98e4e45dced3
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49057
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoFix type of WorkerState constants
Aleksander Mistewicz [Mon, 4 Sep 2017 09:21:49 +0000 (11:21 +0200)]
Fix type of WorkerState constants

For unknown reason only the first value defined in the const block had
type WorkerState, all subsequent definitions had type string.

Change-Id: I1320a8a94525f08f37e14b79188bcfdac0048b0e
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49430
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoImplement Worker registration
Aleksander Mistewicz [Thu, 8 Jun 2017 11:46:35 +0000 (13:46 +0200)]
Implement Worker registration

When new Dyrad (MuxPi board + tested device) is attached to network it
has all information to join Boruta server. It should register
with the server by providing Capabilities which are provided
by MuxPi hardware. They include UUID which will be used to identify
Dryad. After successful registration worker is put in the MAINTENANCE
state, which means that it won't get any jobs until administrator
manually puts it in the IDLE state.

Tests use new library, which can be downloaded with:
    go get github.com/satori/go.uuid

Change-Id: I75a72cf446dd4ff5bc4540f600bc7840c8a189f4
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49056
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoAdd workers package
Aleksander Mistewicz [Thu, 8 Jun 2017 10:50:20 +0000 (12:50 +0200)]
Add workers package

Package workers is responsible for Workers list management. Moreover
it implements Superviser and Workers interfaces. It can be used either
directly from API handlers or indirectly through a decorator which can
add authentication layer. It can also be aggregated with implementation
of Requests interface to construct a implementation of Server.
Tests are added in order to achieve 100% coverage.

Change-Id: I268f9e61f7551993e279326a7bd33637248c453c
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49055
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoAdd Dryad interface
Aleksander Mistewicz [Thu, 17 Aug 2017 13:17:35 +0000 (15:17 +0200)]
Add Dryad interface

User, Admin and Worker communication to Boruta was designed, but an
interface in opposite direction, from Server to Worker, was missing.

Change-Id: I915c31e12b0b49d6863d1162734db7a324d709d1
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49405
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
6 years agoRework interfaces definitions
Maciej Wereski [Tue, 12 Sep 2017 10:56:20 +0000 (12:56 +0200)]
Rework interfaces definitions

Current methods division between interfaces is done in a way that causes
situation where no package implements full interface. This change fixes
this situation.

Change-Id: Ifcfba7d740c86e853410b71da954810ceaf813f3
Signed-off-by: Maciej Wereski <m.wereski@partner.samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49448
Reviewed-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Tested-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
6 years agoBase state types on string instead of byte
Maciej Wereski [Mon, 7 Aug 2017 15:09:51 +0000 (17:09 +0200)]
Base state types on string instead of byte

States may be frequently used in errors or other information messages.
Make them based on strings, so there's no need to implement String()
methods.

Change-Id: I1c4e0f0221b0e6ee9669cda9736fd3e7beceac51
Signed-off-by: Maciej Wereski <m.wereski@partner.samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49391
Reviewed-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
7 years agoAdd UserInfo argument to NewRequest
Maciej Wereski [Tue, 4 Jul 2017 09:53:13 +0000 (11:53 +0200)]
Add UserInfo argument to NewRequest

Change-Id: I8a47938f22e836a1b07af2f07811af8d4942f911
Signed-off-by: Maciej Wereski <m.wereski@partner.samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49200
Reviewed-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Tested-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Reviewed-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
7 years agoAdd missing license header
Maciej Wereski [Thu, 8 Jun 2017 07:58:23 +0000 (09:58 +0200)]
Add missing license header

Change-Id: I279647811b0a0399285441c46312e80e24747fc6
Signed-off-by: Maciej Wereski <m.wereski@partner.samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/49053
Reviewed-by: Pawel Wieczorek <p.wieczorek2@samsung.com>
Tested-by: Pawel Wieczorek <p.wieczorek2@samsung.com>
7 years agoAdd basic structures of the boruta
Aleksander Mistewicz [Thu, 25 May 2017 17:34:03 +0000 (19:34 +0200)]
Add basic structures of the boruta

Change-Id: I56ba1e2898e7b90029cbdefdd2b29f4d73b40372
Signed-off-by: Aleksander Mistewicz <a.mistewicz@samsung.com>
Reviewed-on: https://mcdsrvbld02.digital.local/review/48999
Reviewed-by: Pawel Wieczorek <p.wieczorek2@samsung.com>
Reviewed-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Reviewed-by: Maciej Wereski <m.wereski@partner.samsung.com>
Tested-by: Maciej Wereski <m.wereski@partner.samsung.com>
7 years agoInitial empty repository
Rafal Krypa [Tue, 2 May 2017 16:44:46 +0000 (18:44 +0200)]
Initial empty repository