- driver_manager: fix reload_driver to return proper status code (#278)
- PPT-1635 stale driver cleanup task (#277)
- PPT-1701 added extra endpoints for recompile and reload (#276)
- module_manager: PPT-1636 refactor to use empty settings when merge settin… (#275)
- Dockerfile: minimal core
- Dockerfile: owner user must exist on the filesystem
- Dockerfile: ensure tmp folder has the correct permissions (#274)
- Dockerfile: edge tmp folder permissions
- shard.lock: ConnectProxy::HTTPClient class methods ignore proxy
- driver_manager: should be truncating when recomp driver is retrieved (#273)
- logging: PPT-1368 - logging to use placeos-log-backend (#271)
- shard.yml: specify driver version
- migrate to redis for service discovery (#268)
- driver_manager: interacting with private repo (#267)
- integrate build service (#266)
- healthcheck: usename can be null causing errors
- module_manager: update to a lazy model loading method
- resource: replaced change feed iterator with async closure
- resource: replaced change feed iterator with async closure
- local: error message may not be present
- resource: missing change events
- module_manager: treat load as a stabilization event
- eventbus: handle read replica race conditions
- eventbus: handle read replica race conditions
- process_check: kill unresponsive processes cleanly (#263)
- shard.lock: bump opentelemetry-instrumentation.cr
- edge/protocol: add support for crystal 1.8 (#260)
- migrate to postgres (#248)
- process_check: resolve possible hang condition
- process_check: ensure consistent state after recovery (#259)
- process_manager/common: prevent potential for deadlock (#257)
- process_manager: don't lock managers when querying (#256)
- improve cluster stabilisation under adverse conditions (#254)
- edge/transport: restart service after a period of downtime (#253)
- edge/transport: possible reconnection issue (#251)
- process_manager/local: add edge node awareness (#250)
- api/drivers: allow branch selection (#249)
- edge: improve driver launch reliability (#247)
- Dockerfile: use
placeos/crystal
base images
- edge/protocol: start modules as part of the handshake (#240)
- manager/edge: start modules after registration (#238)
- edge/transport: ensure reconnect is not missed (#237)
- Dockerfile: requires make
- Dockerfile: ensure exec_from included in release
- edge/transport: reconnect on graceful api disconnect (#234)
- Dockerfile: revert static build (#233)
- update action controller and support ARM64 (#232)
- handle driver
module_name
changes in module mappings (#230)
- api/command: extract attaching debugger (#224)
- remove Dead state
- process_check: use
reject!
- use Tasker instead of Timeout shard (#229)
- process_check: fix a race condition (#226)
- module_manager: periodically check that processes are alive (#225)
- control_system_modules: ensure correct totals when refreshing (#222)
- control_system_modules: update system references in modules (#215)
- edge: use correct api-key param and update key validation (#181)
- cloning: use deployed_commit_hash to indicate current commit (#179)
- edge: resolve
crystal not found
error (#178)
- telemetry: ensure
Instrument
in scope
- update
placeos-log-backend
- telemetry: seperate telemetry file
- logging: configure OpenTelemetry
- logging: add configuration by LOG_LEVEL env var
- process_manager/common: should propagate RemoteExceptions (#175)
- api: add error codes to coming from RemoteExceptions (#172)
- possible race condition in spawn (#171)
- edge: update require
- module_manager: move process manager lookup by path to ModuleManager
- use
Log.with_context
with args
- module_manager: remove
ext
,require "uri/json"
- better module stopped errors (#163)
- CVE-2022-23990 and CVE-2022-23852
- add support for custom response codes (#161)
- api/command: propagate
user_id
(#153) - drivers: persist driver bins and repos across container recreation (#142)
- api command: ensure debug writes are serialised (#146)
- api command: obtain latest process manager to ignore (#144)
- edge: handle proxied PUBLISH events
- api:drivers: account for branch in commit listing
- bump placeos-compiler
- process_manager/local: reduce severity of missing mod manager log
- driver compilation from non-default branches
- resource:cloning: decrypt password on use
- edge/client: update secret, remove
edge_id
(#162) - central build ci (#159)
- process_manager: load errors messages (#154)
- client: add debug method returning websocket (#119)
- client: improve client for use with driver (#118)
- core client: wait for response to complete
- shard.yml: bump version
- core client: ensure body has completely downloaded
- client/core: allow empty initializer for DriverStatus
- embed curl in CLI
- module_manager: pass repository to compiled check
- Dockerfile: add yaml-static
- move controllers to an api folder
- client: tidy up
- clean up Log contexts
- managers: less noise in handlers
- core/client:branches: add branches to client
- controller/drivers: add branch listing
- logging: set progname
- remove a set of NamedTuples from code base
- controller/drivers: use a more explicit id param
- config: extract logging to logging.cr
- support branch switching
- controllers:command: trace log when adding a debug session
- add verbose signalling
- add cause to raised Resource::ProcessingError
- controller:root: better healthcheck
- resource:compilation: add failed compilation output to the driver
- settings_update: ensure non-erroring settings updates complete
- drop excess libssh2 libs
- logging: fix logstash logging, ensure consistent logs at startup
- spec: stop using a global ResourceManager instance
- root: pull readiness check out of controller
- module_manager: allocate an array of batch size
- module_manager: parallel load of modules during stabilization
- module_manager: prevent multiple stabilisations via lock
- use driver binary name rather than path
- process_manager: add system_model callback
- config: report logs in milliseconds only
- use placeos log backend
- add logstash support
- process_manager:local: make manager lock reentrant
- module_manager: reload module while preserving debug callbacks
- controller:command: remove callback on socket close
- edge:protocol: account for new serializer descriminator semantics
- edge (#47)
- dev builds
- launch webserver as core boots
- allow --watch exec to run test on filesystem changes (#49)
- ensure module manager starts in resource manager callback
- test: remove container names from docker-compose
- log: bind to correct log namespace
- add environment variable list behind
-e/--env
- module_manager:
refresh_module
consistently returned false - update logic modules on all system changes
- chomp build timestamp
- start/update control system logic modules on change
- compilation: serialize compilation
- remove reimport of Resource
- lazy getters
- Dockerfile: add commit level to logs
- app: add commit level and build time to logs
- Dockerfile: ensure certificates up to date
- resource: retry changefeed
- models refresh (#41)
- update tasker
- command spec: response is not double serialized
- command controller: don't double serialize JSON
- add secrets and clean up config
- resource: log the resource loaded count
- fixed size error buffer
- resource: use same thread and avoid not_nil requirement
- nilable resource
- use
.all
- hang on core load with > 64 resources
- app controller: requires a local logger
- app controller: requires a local logger
- log setup on 0.35
- Log: use
Log#setup
- module_manager: convert to a Resource
- module_manager: restart iff node is responsible for module
- rename to
placeos-core
- client: correct
terminate
path
- resource: handle Resource::Result::Error
- resource:compilation: use HEAD
- resource:cloning: ignore Interface Repositories
- config: set log level for all libraries through environment
- client: correct
load
path - config: hounddog no longer needs a logger
- migrate to Log
- client: initialize for default response
- client: ensure connection closed
- client:
#loaded
shows the modules on a driver
- client: correct path for driver status, have defaults in case of error
- client: correct typing of response objects
- client: add
load
anddriver_compiled?
- module_manager: load modules on start up
- move
load
from Api::Status to Api::Command
- user core master
- resource:compilation: react to forced recompile data events
- resource:settings_update: implement Module reloads on Settings changes
- mappings:module_names: resource event handler for module renames
- improve values returned from load
- module manager: optimise settings unescaping
- status controller: add loaded module introspection
- use environment variables to expose host details
- client: include host and port in errors
- client.cr: provide more context in error messages
- Docker: use alpine for smaller images
- add clustering module
- core module manager: implement module save setting request
- core module manager: add support for logic execute
- client: add method for obtaining driver metadata
- drivers controller: add route to obtain driver metadata
- startup: implement indirect module mapping management, refactor of Resource
- controllers: logging, default driver repository path
- client: better typing on exec method
- module_manager: load_module
- logging: use action-controller logger
- startup:cloning: update repository commit hash iff id maps to node or in startup
- startup:compilation: prevent multiple writers on driver commit
- handle 'head' logic in Cloning and Compilation
- config: update logging
- startup:cloning: pull if repository exists on startup
- logging: update to action-controller 2.0
- client: bindings for the core api
- startup: compilation specs, collect processed resources in Core::Resource
- startup: start ModuleManager
- startup: singleton resource manager
- status: add compilation and cloning errors
- config: configure service discovery from environment
- startup: moduleManager listens for Model::Module changes
- startup: module manager
- startup: compilation
- startup: cloning
- api: add drivers and chaos APIs
- resource:compilation: set commit in
compile_driver
- controller:drivers: correct Time::Span usage
- correctly load modules
- controller:drivers: fix name clash
- add driver id to compiled binaries
- controller:drivers: use
exit_code
- resource:cloning: implement
rmdir_r
to recursively delete a directory - controller:status: delete temporary driver binaries
- resource:compilation: reload modules if the binary exists
- resource:cloning: prioritise repository user/pass
- module_manager: start/stop modules
- mappings: ensure system indexes are updated
- module_manager: simplify payload generation
- mappings.cr: ignore empty name strings
- mappings: indexes were not being created properly
- mappings: refactor system lookup hash creation
- compilation: repository should use folder_name
- status: all types to be float64s
- resource:mappings: fire 'lookup-change' event when System Module ordering is set/updated
- controller:status: set NaNs to -1
- spec:helper: remove reference to removed
version
field of driver model - resource:mappings: fix off by 1 error, and potential for misaligned keys in redis
- client: ensure route components are encoded
- client.cr: remove explicit return type
- client.cr: properly parse the commit response
- expose core host and core port seperately
- resource:cloning: set
@startup = true
in initializer - segfault diagnosed and treated
- wip, tracing a segfault
- constants: improved version extraction
- cloning: should be using folder name
- Docker: requires libssh2-dev
- remove exec_from target, correct setting of logger
- resource: loop processing of resources, catch errors in fibers
- spec:module_manager: correct signature for ModuleManager
- resource manager: startup logging format
- client: rename driver_metadata to driver_details
- core client: driver file name needs to be URI encoded
- core client: URI#host can be nil
- client: hash#compact yields NoReturn type values
- command controller: remove contextual information on error
- command controller: error responses to contain more info
- client: correct captured block semantics
- startup:mappings: controlSystems processed on startup
- resource_manager: fix singleton instantiation
- controllers: hack around action-controller matching all prefixes for a controller
- resource: accumulate a fixed-sized buffer of processed resources
- client: engine -> ACAEngine
- top-level module naming, port type
- mappings:control_system_modules: minor rewrite to use collection apis
- resource:mappings: factor out mapping creation
ACAEngine
->PlaceOS
,engine-core
->core
- move resource initialization to Core module method
start_managers
- module_manager: use class based clustering, create mocked
Clustering
class - use Application logger in ResourceManager
- spawn: set same_thread in anticipation of multi-threading support
- compilation: compilation as a class method
- models: use separated engine-models library
- Engine -> ACAEngine
- controller:details: cache details requests