Papiea, pronounced like the fruit, is an Intent engine based on perscriptions or recipes for handling differences between intended state and real world state.
Managing system state, especially when state is comprised of multiple seperated individual parts is a complex
task. Papiea allows entites to be in two states: desired and real, named "spec" and "status" respectively. Providers
are the mechanism which help Papiea transition an entity from its real state (or its "status") to its desired state (or
its "spec"). Three mechanisms are involved in such process:
Add
- an entity has onlyspec
but nostatus
. The entity must be created in the real world which will be reflected in its statusDel
- an entity has onlystatus
but nospec
. The entity must be removed from the real worldChange
- an entity has a bothspec
andstatus
, but they differ. The entity must be changed in the real world.
For now the system relies on MongoDB to be
set up. The simplest way to use it is through docker
. Directions
taken from here:
Set up a new docker instance and run it
docker run -d --name papiea-mongo -p 27017:27017 -v ~/work/mongodb-docker/data:/data/db mvertes/alpine-mongo
Stop it
docker kill papiea-mongo
Access it:
docker exec -ti papiea-mongo sh # regular shell
docker exec -ti papiea-mongo mongo # the mongo shell
This is a library, so it will be used through an application. Stay tuned for some sample applications!
lein test
Copyright (C) 2018 Nutanix
The code in the public repositories is licensed under the Apache license.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.