edge-home-orchestration-go

module
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 28, 2022 License: Apache-2.0

README

Edge Orchestration

Goreport Build Total alerts CodeQL Analysis Quality Gate Status CII Best Practices OpenSSF Scorecard RepoSize Release LICENSE

Introduction

The main purpose of Edge Orchestration project is to implement distributed computing between Docker Container enabled devices.

image

All the devices (TVs, fridges, washing machines, etc.) connected into Home Edge Network are considered Home Edge Devices. Some of the devices, possessing significant H/W resources and capable of running containerized applications, are called Home Edge Nodes. Tasks performed on devices of Home Edge Network are managed by Home Edge Orchestrator software. These tasks are called Home Edge Applications. They are assigned to specific Home Edge Nodes. As of now, Home Edge Orchestrator incessantly scans the Home Edge Network, forming lists of attached devices, and forms ratings of performance for them. Performance ratings are basis for deciding on which devices Home Edge Applications are to be run. If Home Edge Orchestrator cannot find device with rating higher than its own device rating, it will start the Home Edge Application locally. Home Edge Networks support distributed applications consisting of interacting Docker container instances. Docker containers offer quick deployment, easy management, safety and hardware independence. Applications that can run on Home Edge Network are deployed from cloud-based centralized storage as needed. Assortment of applications is determined by tasks that must be solved by Home Edge Network.

A description of all terms and abbreviations (italic) used in the Edge Orchestratiopn project can be found in the Home Edge Glossary


Roadmap and Release Notes

You can see our project roadmap and details about release notes since our project launch in 2019 from our official Wiki.

Platforms supported

x86-64 Linux Raspberry Pi3 HiKey960 Raspberry Pi3 Cluster
Orange Pi3 Add a new Platform

Quick start of the Edge Orchestration (w/ and w/o build)

Prerequisites
  • At least one device (see Platforms supported) that can be a Home Edge Device (preferably more than one)
  • Same network connected among the Home Edge Devices.
  • Same Authentication key in /var/edge-orchestration/user/orchestration_userID.txt
  • Edge Orchestration Docker image

The quick start guide contains instructions on where to find Edge Orchestration Docker image and how to create Authentication key

The Edge Orchestration workflow is as follows:
  1. Run the Edge Orchestration container at Home Edge Nodes.
  2. Home Edge Device generates and sends a Service Execution request via the REST API to a host machine (currently itself).
  3. Then the host machine becomes an Home Edge Orchestrator.
  4. Other Home Edge Nodes receive the Service Execution request from Home Edge Orchestrator via REST API.
  5. The Home Edge Node gets and compares the scores from the other Home Edge Nodes.
  6. The Service Execution on the Home Edge Node that has the highest score.

Home Edge Orchestrator also gets and compares scores and if it has the highest score, the service is executed on Home Edge Orchestrator.

Quick start guides for supported platforms

Please select the target platform in the table below and follow the link.

Platform Maintained Maintainer Remarks
x86_64 Linux dewberries @lf-edge/edge-home-orchestration-go-committers
Raspberry Pi3 dewberries @t25kim
HiKey960 dewberries @tdrozdovsky
Raspberry Pi3 Cluster dewberries @tdrozdovsky
Orange Pi3 dewberries @Vitalii55

Documentation

The Edge Orchestration documentation for the project is located in the docs folder. You can also familiarize yourself with other materials and plans by visiting the wiki.


License

The Edge Orchestration source code is distributed under the Apache License, Version 2.0 open source license.


Contributing

If you want to contribute to the Edge Orchestration project and make it better, your help is very welcome. Contributing is also a great way to learn more about social coding on Github, new technologies and and their ecosystems.
How to contribute code
How to report a security vulnerability


Directories

Path Synopsis
cmd
edge-orchestration
Package main provides REST interface for edge-orchestration
Package main provides REST interface for edge-orchestration
edge-orchestration/capi
Package main provides C interface for orchestration
Package main provides C interface for orchestration
edge-orchestration/javaapi
Package javaapi provides Java interface for orchestration
Package javaapi provides Java interface for orchestration
internal
common/errormsg
Package errormsg implements error messages for orchestration
Package errormsg implements error messages for orchestration
common/errors
Package errors defines error cases of edge-orchestration.
Package errors defines error cases of edge-orchestration.
common/logmgr
Package logmgr implements to handle log files and log format
Package logmgr implements to handle log files and log format
common/mqtt
Package mqtt provides functionalities to handle the client connection to the broker using MQTT
Package mqtt provides functionalities to handle the client connection to the broker using MQTT
common/networkhelper
Package networkhelper checks the status of network interfaces and let subscribers know if it is updated
Package networkhelper checks the status of network interfaces and let subscribers know if it is updated
common/networkhelper/detector
Package detector implements wrapper of netlink package
Package detector implements wrapper of netlink package
common/networkhelper/detector/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
common/networkhelper/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
common/resourceutil
Package resourceutil provides the information of resource usage of local device
Package resourceutil provides the information of resource usage of local device
common/resourceutil/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
common/types/servicemgrtypes
Package servicemgrtypes defines types for servicemgr
Package servicemgrtypes defines types for servicemgr
controller/cloudsyncmgr
Package cloudsyncmgr provides functionalities to handle the cloud synchronization
Package cloudsyncmgr provides functionalities to handle the cloud synchronization
controller/configuremgr
Package configuremgr provides interfaces between orchestrationapi and configuremgr
Package configuremgr provides interfaces between orchestrationapi and configuremgr
controller/configuremgr/description
Package confdescription defines the configuration informantion of service application
Package confdescription defines the configuration informantion of service application
controller/configuremgr/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/discoverymgr
Package discoverymgr provides functions to register local device to network and find other orchestration devices
Package discoverymgr provides functions to register local device to network and find other orchestration devices
controller/discoverymgr/mnedc/client/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/discoverymgr/mnedc/connectionutil/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/discoverymgr/mnedc/server/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/discoverymgr/mnedc/tunmgr/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/discoverymgr/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/discoverymgr/wrapper
Package wrapper serves wrapper functions of zeroconf for orchestration
Package wrapper serves wrapper functions of zeroconf for orchestration
controller/discoverymgr/wrapper/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/scoringmgr
Package scoringmgr provides the way to apply specific scoring method for each service application
Package scoringmgr provides the way to apply specific scoring method for each service application
controller/scoringmgr/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/securemgr/authenticator
Package authenticator package provides access to resources only to authenticated users
Package authenticator package provides access to resources only to authenticated users
controller/securemgr/authorizer
Package authorizer provides Role Based Access Control (RBAC)
Package authorizer provides Role Based Access Control (RBAC)
controller/securemgr/verifier
Package verifier ensures that only allowed containers (images) are launched
Package verifier ensures that only allowed containers (images) are launched
controller/securemgr/verifier/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/servicemgr
Package servicemgr manages service application execution
Package servicemgr manages service application execution
controller/servicemgr/executor
Package executor provides struct and interface for multi-platform execution
Package executor provides struct and interface for multi-platform execution
controller/servicemgr/executor/androidexecutor
Package androidexecutor provides functions to execute service application in android native
Package androidexecutor provides functions to execute service application in android native
controller/servicemgr/executor/containerexecutor
Package containerexecutor provides functions to execute service application in container environment
Package containerexecutor provides functions to execute service application in container environment
controller/servicemgr/executor/containerexecutor/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/servicemgr/executor/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/servicemgr/executor/nativeexecutor
Package nativeexecutor provides functions to execute service application in Linux native
Package nativeexecutor provides functions to execute service application in Linux native
controller/servicemgr/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
controller/servicemgr/notification
Package notification provides functions to manage notification after running service application
Package notification provides functions to manage notification after running service application
controller/servicemgr/notification/mocks
Package mock_notification is a generated GoMock package.
Package mock_notification is a generated GoMock package.
db/bolt/application/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
db/bolt/configuration/mocks
Package mock_configuration is a generated GoMock package.
Package mock_configuration is a generated GoMock package.
db/bolt/network/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
db/bolt/resource/mocks
Package mock_resource is a generated GoMock package.
Package mock_resource is a generated GoMock package.
db/bolt/service/mocks
Package mock_service is a generated GoMock package.
Package mock_service is a generated GoMock package.
db/bolt/system/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
db/bolt/wrapper/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
db/helper/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
orchestrationapi
Package orchestrationapi provides orchestration functionalities to handle distributed service in multi-device environment
Package orchestrationapi provides orchestration functionalities to handle distributed service in multi-device environment
orchestrationapi/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
restinterface
Package restinterface implements internal/external REST API
Package restinterface implements internal/external REST API
restinterface/cipher
Package cipher implements simple encrypting and decrypting message
Package cipher implements simple encrypting and decrypting message
restinterface/cipher/dummy
Package dummy provides the mocking functions
Package dummy provides the mocking functions
restinterface/cipher/mocks
Package mock_cipher is a generated GoMock package.
Package mock_cipher is a generated GoMock package.
restinterface/cipher/sha256
Package sha256 implements encryption/decryption functions by sha256
Package sha256 implements encryption/decryption functions by sha256
restinterface/client
Package client implements REST client management functions
Package client implements REST client management functions
restinterface/client/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
restinterface/client/restclient
Package restclient implements REST client functions to send request to remote orchestration
Package restclient implements REST client functions to send request to remote orchestration
restinterface/externalhandler
Package externalhandler implements REST server functions to communication between orchestration and service applications
Package externalhandler implements REST server functions to communication between orchestration and service applications
restinterface/internalhandler
Package internalhandler implements REST server functions to communication between orchestrations
Package internalhandler implements REST server functions to communication between orchestrations
restinterface/mocks
Package mock_restinterface is a generated GoMock package.
Package mock_restinterface is a generated GoMock package.
restinterface/resthelper
Package resthelper implements rest helper functions
Package resthelper implements rest helper functions
restinterface/resthelper/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
restinterface/route
Package route implements management functions of REST Router
Package route implements management functions of REST Router

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL