An Actionable is something that can be "acted" upon in the context of a datacenter and namespace.
An Actionable is something that can be "acted" upon in the context of a datacenter and namespace. In Nelson this typically means deploying into a datacenter using a scheduler such as Nomad, or interacting with Aws to launch some infrastructure.
Configuration for banning/allowing various clients.
Basic cache API providing get/put operations
Basic CacheBuilder API for constructing cache instances.
Basic CacheBuilder API for constructing cache instances. API is subset of what Google's Guava libraries is providing
configuration options for the docker cli controller.
************** Specific Guava based cache implementation *****************
Represents the webhook added to the Github repository.
A bare bones Kubernetes client used for impelementing a Kubernetes nelson.scheduler.SchedulerOp and nelson.loadbalancers.LoadBalancerOp.
A bare bones Kubernetes client used for impelementing a Kubernetes nelson.scheduler.SchedulerOp and nelson.loadbalancers.LoadBalancerOp.
This should really be a proper library.. at some point.
See: https://kubernetes.io/docs/api-reference/v1.8/
Global configuration for all the various external inputs that Nelson actually cares about.
specify the settings for the network configuration of nelson: what ports and addresses are bound, versus which are used for remote callers.
controls how the workflow pipeline executes, and what concurrency limits are in place.
Configuration for auto-generated Vault policies
Meant to represent a released version of a unit.
Meant to represent a released version of a unit. These are fixed in time, and immutable after creation.
Denotes the access aforded to this repository for nelson.
Denotes the access aforded to this repository for nelson. Avalible options are (in order of access level, descending): - admin - push - pull
this is the data that we store (encrypted) into the cookie stored on users browsers.
Typed representation of the owner / repo string that is used to canonically reference a repo within nelson.
Configuration for servicing the user interface
Configuration for servicing the user interface
Location of the UI static files on the filesystem.
represents the current user who's logged into the system.
Workflows must be defined in terms of a particular type of UnitDef they target, and an output of the workflow.
Workflows must be defined in terms of a particular type of UnitDef
they target, and an output of the workflow. By having a workflow
specilized to a particular type of unit, we avoid having to have
'uber workflows' that need to handle every possible type of unit,
which reduces the implementation complexity of a given workflow quite
considerably. In addition, the output type O
is intended to provide
an opertunity for the workflow to output something more than just
effects. For example, a workflow could accumulate a set of logs, or
some reporting state - whatever - it doesnt matter.
Workflows define both setup (deploy) and teardown (detroy) workflow
This object was generated by sbt-buildinfo.
Main public entry point for creating in-memory cache.
Main public entry point for creating in-memory cache.
Default cache has no means to remove anything. It keeps entries forever (but they can be overriden)
Behavior can be customized with following options:
ConcurrencyLevel hint is Guava-specific hint to guide the allowed concurrency among update operations. Default value is 4 (for guava 13.0)
From Guava docs: Used as a hint for internal sizing. The table is internally partitioned to try to permit the indicated number of concurrent updates without contention. Because assignment of entries to these partitions is not necessarily uniform, the actual concurrency observed may vary. Ideally, you should choose a value to accommodate as many threads as will ever concurrently modify the table. Using a significantly higher value than you need can waste space and time, and a significantly lower value can lead to thread contention. But overestimates and underestimates within an order of magnitude do not usually have much noticeable impact. A value of one permits only one thread to modify the cache at a time, but since read operations and cache loading computations can proceed concurrently, this still yields higher concurrency than full synchronization.
Kubernetes deployment workflow that just deploys and deletes units.
Kubernetes deployment workflow that just deploys and deletes units. No Vault policy or traffic shifting (yet!).
This workflow is named after the Canopus star which represents King Menelaus's helmsman in Greek mythology. Canopus is a star in the Carina constellation, which in turn was once part of the Argo constellation, named after the ship used by Jason and the Argonauts.
The name here is inspired by the existing use of astronomical names (see the Magnetar workflow), "kubernetes" which is Greek for helmsman, and Nelson's usage of the Argonaut library for J(a)SON parsing.
Kubernetes deployment workflow that deploys and deletes units, whilst provisioning authentication roles in Vault so that Kubernetes pods can talk to Vault.
Copied, adapted, and minimized from Scalaz's Tag implementation.
Copied, adapted, and minimized from Scalaz's Tag implementation. https://github.com/scalaz/scalaz/blob/v7.1.17/core/src/main/scala/scalaz/Tag.scala
Contains code related to validating alerts and storing their configuration in Consul.
Contains code related to validating alerts and storing their configuration in Consul.
In theory, we can support multiple alerting systems. In current practice, we only support Prometheus.
Given we're mostly parsing string results to task, make a simple decoder utility function for it.
Whenever one needs to refernce another location on the Nelson service, and we expect it to be referenced by an external caller (e.g.
Whenever one needs to refernce another location on the Nelson service,
and we expect it to be referenced by an external caller (e.g. Github or browser)
then we need to use the linkTo
function which will generate a valid
URL with all the external configuration settings needed for the link to
work properly (i.e. accounting for HTTP(S) and such)