Package

nelson

Permalink

package nelson

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. nelson
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Type Members

  1. final case class AccessToken(value: String) extends Product with Serializable

    Permalink
  2. trait Actionable[A] extends AnyRef

    Permalink

    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.

  3. final case class AuditConfig(concurrencyLimit: Int, bufferLimit: Int) extends Product with Serializable

    Permalink
  4. final case class BannedClientsConfig(httpUserAgents: List[HttpUserAgent]) extends Product with Serializable

    Permalink

    Configuration for banning/allowing various clients.

  5. final case class Base64(decoded: String) extends AnyVal with Product with Serializable

    Permalink
  6. implicit class BedazzledOpt[A] extends AnyRef

    Permalink
  7. implicit class BedazzledString extends AnyRef

    Permalink
  8. implicit class BedazzledTask[A] extends AnyRef

    Permalink
  9. trait Cache[K, V] extends AnyRef

    Permalink

    Basic cache API providing get/put operations

  10. trait CacheBuilder[K, V] extends AnyRef

    Permalink

    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

  11. final case class CacheConfig(stackStatusCache: Cache[(String, String, String), DeploymentStatus]) extends Product with Serializable

    Permalink
  12. final case class CleanupConfig(initialTTL: Duration, extendTTL: Duration, cleanupDelay: Duration, sweeperDelay: Duration) extends Product with Serializable

    Permalink
  13. final case class ConsulHealthStatus(name: String, status: String, node: String, checkID: String) extends Product with Serializable

    Permalink
  14. final case class CyclicDependency(message: String) extends NelsonError with Product with Serializable

    Permalink
  15. type DNSName = String

    Permalink
  16. final case class DatabaseConfig(driver: String, connection: String, username: Option[String], password: Option[String], maxConnections: Option[Int]) extends Product with Serializable

    Permalink
  17. final case class Datacenter(name: String, docker: Docker, domain: Domain, defaultTrafficShift: TrafficShift, proxyCredentials: Option[ProxyCredentials], interpreters: Infrastructure.Interpreters, loadbalancer: Option[~>[LoadbalancerOp, Task]], policy: PolicyConfig) extends Product with Serializable

    Permalink
  18. type DatacenterRef = String

    Permalink
  19. type DependencyEdge = (RoutingNode, RoutingNode)

    Permalink
  20. final case class DependencyGraph(gr: RoutingGraph) extends Product with Serializable

    Permalink
  21. final case class DeploymentCommitFailed(reason: String) extends NelsonError with Product with Serializable

    Permalink
  22. type DeploymentHash = String

    Permalink
  23. final case class DeploymentMonitorConfig(delay: Duration) extends Product with Serializable

    Permalink
  24. sealed abstract class DeploymentStatus extends Product with Serializable

    Permalink
  25. type DeploymentStatusString = String

    Permalink
  26. final case class DeprecatedDependency(unit: String, dc: String, ns: String, dependency: ServiceName) extends NelsonError with Product with Serializable

    Permalink
  27. final case class DockerConfig(connection: String, verifyTLS: Boolean) extends Product with Serializable

    Permalink

    configuration options for the docker cli controller.

  28. type EmailAddress = String

    Permalink
  29. final case class EmailConfig(host: String, port: Int, auth: Authenticator, from: EmailAddress, useSSL: Boolean = true) extends Product with Serializable

    Permalink
  30. final case class ExceededLimitRange(value: Int) extends NelsonError with Product with Serializable

    Permalink
  31. final case class ExpirationPolicyConfig(defaultPeriodic: ExpirationPolicy, defaultNonPeriodic: ExpirationPolicy) extends Product with Serializable

    Permalink
  32. type ExpirationPolicyRef = String

    Permalink
  33. final case class FailedDockerExtraction(err: String) extends NelsonError with Product with Serializable

    Permalink
  34. final case class FailedDockerOperation(err: String) extends NelsonError with Product with Serializable

    Permalink
  35. final case class FailedLoadbalancerDeploy(name: String, reason: String) extends NelsonError with Product with Serializable

    Permalink
  36. final case class FailedWorkflow(name: String, reason: String = "") extends NelsonError with Product with Serializable

    Permalink
  37. final case class FeatureVersion(major: Int, minor: Int) extends Product with Serializable

    Permalink
  38. type GUID = String

    Permalink
  39. final case class GithubConfig(domain: Option[String], clientId: String, clientSecret: String, redirectUri: String, scope: String, systemAccessToken: AccessToken, systemUsername: String, organizationBlacklist: List[String], organizationAdminList: List[String]) extends Product with Serializable

    Permalink

  40. implicit final class GithubFreeOps[A] extends AnyVal

    Permalink
  41. class GuavaCache[K, V] extends Cache[K, V]

    Permalink

    ************** Specific Guava based cache implementation *****************

  42. class GuavaCacheBuilder[K, V] extends CacheBuilder[K, V]

    Permalink
  43. final case class Hook(id: Long, isActive: Boolean) extends Product with Serializable

    Permalink

    Represents the webhook added to the Github repository.

  44. type ID = Long

    Permalink
  45. class InstrumentedDockerClient extends ~>[DockerOp, Task]

    Permalink
  46. class InstrumentedNomadClient extends ~>[SchedulerOp, Task]

    Permalink
  47. class InstrumentedVaultClient extends ~>[Vault, Task]

    Permalink
  48. final case class Interpreters(git: ~>[GithubOp, Task], storage: ~>[StoreOp, Task], slack: Option[~>[SlackOp, Task]], email: Option[~>[EmailOp, Task]]) extends Product with Serializable

    Permalink
  49. final case class InvalidDockerImage(name: String) extends NelsonError with Product with Serializable

    Permalink
  50. final case class InvalidGrant(unitName: UnitName, grant: String) extends NelsonError with Product with Serializable

    Permalink
  51. final case class InvalidLoadbalancer(rs: Vector[Route]) extends NelsonError with Product with Serializable

    Permalink
  52. final case class InvalidLoadbalancerNameLength(name: String) extends NelsonError with Product with Serializable

    Permalink
  53. final case class InvalidLoadbalancerPort(port: Int, allowed: List[Int]) extends NelsonError with Product with Serializable

    Permalink
  54. final case class InvalidNamespaceName(name: String) extends NelsonError with Product with Serializable

    Permalink
  55. final case class InvalidPrometheusRules(msg: String) extends NelsonError with Product with Serializable

    Permalink
  56. final case class InvalidRepoAccess(s: String) extends NelsonError with Product with Serializable

    Permalink
  57. final case class InvalidRouteDefinition(name: String) extends NelsonError with Product with Serializable

    Permalink
  58. final case class InvalidSlug(s: String) extends NelsonError with Product with Serializable

    Permalink
  59. final case class InvalidTrafficShiftReverse(reason: String) extends NelsonError with Product with Serializable

    Permalink
  60. final case class InvalidUnitNameChars(name: String) extends NelsonError with Product with Serializable

    Permalink
  61. final case class InvalidUnitNameLength(name: String) extends NelsonError with Product with Serializable

    Permalink
  62. final case class LoadbalancerNotFound(guid: GUID) extends NelsonError with Product with Serializable

    Permalink
  63. type LoadbalancerRef = String

    Permalink
  64. final case class MajorVersion(major: Int) extends Product with Serializable

    Permalink
  65. final case class Manifest(units: List[UnitDef], plans: List[Plan], loadbalancers: List[Loadbalancer], namespaces: List[Namespace], targets: DeploymentTarget, notifications: NotificationSubscriptions) extends Product with Serializable

    Permalink
  66. final case class ManifestConfig(filename: String) extends Product with Serializable

    Permalink
  67. final case class ManifestUnitKindMismatch(unitKind: String, unitNames: List[String]) extends NelsonError with Product with Serializable

    Permalink
  68. final case class ManualDeployFailed(reason: String) extends NelsonError with Product with Serializable

    Permalink
  69. class Metrics extends AnyRef

    Permalink
  70. final case class MisconfiguredDatacenter(name: String, problem: String) extends NelsonError with Product with Serializable

    Permalink
  71. final case class MissingDefaultNamespaceReference(ns: NamespaceName) extends NelsonError with Product with Serializable

    Permalink
  72. final case class MissingDependency(unit: String, dc: String, ns: String, dependency: ServiceName) extends NelsonError with Product with Serializable

    Permalink
  73. final case class MissingDeployment(guid: String) extends NelsonError with Product with Serializable

    Permalink
  74. final case class MissingHealthCheckPath(protocol: String) extends NelsonError with Product with Serializable

    Permalink
  75. final case class MissingIndividualDefaultNamespaceReference(ns: NamespaceName) extends NelsonError with Product with Serializable

    Permalink
  76. final case class MissingReleaseAssets(r: ReleaseEvent) extends NelsonError with Product with Serializable

    Permalink
  77. final case class MissingReleaseForDeployment(guid: String) extends NelsonError with Product with Serializable

    Permalink
  78. final case class MissingResourceReference(ref: String, p: Plan) extends NelsonError with Product with Serializable

    Permalink
  79. final case class MultipleErrors(errors: NonEmptyList[NelsonError]) extends NelsonError with Product with Serializable

    Permalink
  80. final case class MultipleValidationErrors(errors: NonEmptyList[NelsonError]) extends NelsonError with Product with Serializable

    Permalink
  81. final case class NamespaceCreateFailed(reason: String) extends NelsonError with Product with Serializable

    Permalink
  82. final case class NamespaceName(nel: NonEmptyList[String]) extends Product with Serializable

    Permalink
  83. final case class NelsonConfig(git: GithubConfig, network: NetworkConfig, security: SecurityConfig, database: DatabaseConfig, dockercfg: DockerConfig, nomadcfg: NomadConfig, manifest: ManifestConfig, timeout: Duration, cleanup: CleanupConfig, reconciliation: ReconciliationConfig, deploymentMonitor: DeploymentMonitorConfig, datacenters: List[Datacenter], pipeline: PipelineConfig, audit: AuditConfig, template: TemplateConfig, http: Http, pools: Pools, interpreters: Interpreters, workflowLogger: WorkflowLogger, bannedClients: Option[BannedClientsConfig], ui: UIConfig, proxyPortWhitelist: Option[ProxyPortWhitelist], defaultNamespace: NamespaceName, expirationPolicy: ExpirationPolicyConfig, discoveryDelay: Duration) extends Product with Serializable

    Permalink

    Global configuration for all the various external inputs that Nelson actually cares about.

  84. abstract class NelsonError extends RuntimeException

    Permalink
  85. final case class NetworkConfig(bindHost: String, bindPort: Int, externalHost: String, externalPort: Int, tls: Boolean, monitoringPort: Int) extends Product with Serializable

    Permalink

    specify the settings for the network configuration of nelson: what ports and addresses are bound, versus which are used for remote callers.

  86. final case class NomadConfig(applicationPrefix: Option[String], requiredServiceTags: Option[List[String]]) extends Product with Serializable

    Permalink
  87. final case class Organization(id: Long, _name: Option[String], slug: String, avatar: URI) extends Product with Serializable

    Permalink
  88. final case class PeriodicUnitWithTrafficShift(name: String) extends NelsonError with Product with Serializable

    Permalink
  89. final case class PipelineConfig(concurrencyLimit: Int, bufferLimit: Int) extends Product with Serializable

    Permalink

    controls how the workflow pipeline executes, and what concurrency limits are in place.

  90. type PlanRef = String

    Permalink
  91. final case class PolicyConfig(resourceCredsPath: String, pkiPath: Option[String]) extends Product with Serializable

    Permalink

    Configuration for auto-generated Vault policies

  92. final case class Pools(defaultPool: ExecutorService, serverPool: ExecutorService, schedulingPool: ScheduledExecutorService) extends Product with Serializable

    Permalink
  93. final case class ProblematicDeployable(str: String, url: String) extends NelsonError with Product with Serializable

    Permalink
  94. final case class ProblematicRepoManifest(slug: Slug) extends NelsonError with Product with Serializable

    Permalink
  95. class PrometheusConsul extends ~>[ConsulOp, Task]

    Permalink
  96. final case class ProxyPortWhitelist(ports: List[Int]) extends Product with Serializable

    Permalink
  97. final case class ReconciliationConfig(cadence: Duration) extends Product with Serializable

    Permalink
  98. final case class Released(slug: Slug, version: Version, timestamp: Instant, releaseId: Long, releaseHtmlUrl: URI) extends Product with Serializable

    Permalink

    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.

  99. final case class ReleasedDeployment(id: Long, unit: DCUnit, namespace: String, hash: String, timestamp: Instant, state: DeploymentStatus, guid: GUID) extends Product with Serializable

    Permalink
  100. final case class Repo(id: Long, slug: Slug, access: RepoAccess, hook: Option[Hook] = None) extends Product with Serializable

    Permalink
  101. sealed trait RepoAccess extends AnyRef

    Permalink

    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

  102. final case class RepoNotFound(slug: Slug) extends NelsonError with Product with Serializable

    Permalink
  103. final case class Schedule(interval: Interval) extends Product with Serializable

    Permalink
  104. final case class SecurityConfig(encryptionKeyBase64: String, signingKeyBase64: String, expireLoginAfter: Duration, useEnvironmentSession: Boolean) extends Product with Serializable

    Permalink
  105. final case class Session(expiry: Instant, github: AccessToken, user: User) extends Product with Serializable

    Permalink

    this is the data that we store (encrypted) into the cookie stored on users browsers.

  106. final case class SlackConfig(webhook: String, username: String) extends Product with Serializable

    Permalink
  107. final case class Slug(owner: String, repository: String) extends Product with Serializable

    Permalink

    Typed representation of the owner / repo string that is used to canonically reference a repo within nelson.

  108. type StatusMessage = String

    Permalink
  109. type TagName = String

    Permalink
  110. final case class TaskEvent(message: String, driverMessage: String) extends Product with Serializable

    Permalink
  111. final case class TaskEvents(taskStatus: TaskStatus, taskEvents: List[TaskEvent]) extends Product with Serializable

    Permalink
  112. final case class TaskGroupAllocation(id: String, name: String, jobId: String, taskGroup: String, tasks: Map[@@[String, TaskName], (TaskStatus, List[TaskEvent])]) extends Product with Serializable

    Permalink
  113. trait TaskName extends AnyRef

    Permalink
  114. sealed abstract class TaskStatus extends Product with Serializable

    Permalink
  115. final case class TemplateConfig(tempDir: Path, memoryMegabytes: Int, cpuPeriod: Int, cpuQuota: Int, timeout: FiniteDuration, consulTemplateImage: String, vaultAddress: Option[String]) extends Product with Serializable

    Permalink
  116. type TempoaryAccessCode = String

    Permalink
  117. sealed trait TrafficShiftPolicy extends AnyRef

    Permalink
  118. final case class UIConfig(enabled: Boolean, filePath: Option[String]) extends Product with Serializable

    Permalink

    Configuration for servicing the user interface

    Configuration for servicing the user interface

    filePath

    Location of the UI static files on the filesystem.

  119. final case class UnexpectedConsulResponse(resp: String) extends NelsonError with Product with Serializable

    Permalink
  120. final case class UnexpectedMissingHook(slug: Slug) extends NelsonError with Product with Serializable

    Permalink
  121. type UnitName = String

    Permalink
  122. type UnitRef = String

    Permalink
  123. final case class UnknownBackendDestination(r: Route, unames: List[String]) extends NelsonError with Product with Serializable

    Permalink
  124. final case class UnknownDatacenter(name: String) extends NelsonError with Product with Serializable

    Permalink
  125. final case class UnknownNamespace(dcName: String, nsName: String) extends NelsonError with Product with Serializable

    Permalink
  126. final case class UnknownPortRef(ref: String, unit: UnitName) extends NelsonError with Product with Serializable

    Permalink
  127. final case class UnparsableReleaseVersion(version: String) extends NelsonError with Product with Serializable

    Permalink
  128. final case class UnsatisfiedDeploymentRequirements(u: UnitDef) extends NelsonError with Product with Serializable

    Permalink
  129. final case class User(login: String, avatar: URI, name: String, email: Option[String], orgs: List[Organization]) extends Product with Serializable

    Permalink

    represents the current user who's logged into the system.

  130. final case class Version(major: Int, minor: Int, patch: Int) extends Product with Serializable

    Permalink
  131. trait Versionable[A] extends Serializable

    Permalink
  132. trait Workflow[O] extends AnyRef

    Permalink

    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

  133. sealed abstract class WorkflowControlOp[+A] extends AnyRef

    Permalink
  134. final case class WorkflowLoggerConfig(bufferLimit: Int, filePath: Path) extends Product with Serializable

    Permalink
  135. type WorkflowRef = String

    Permalink
  136. abstract class YamlError extends NelsonError

    Permalink
  137. abstract class YamlParser[A] extends AnyRef

    Permalink

Value Members

  1. object Actionable

    Permalink
  2. object AtomicShiftPolicy extends TrafficShiftPolicy

    Permalink
  3. object BannedClientsConfig extends Serializable

    Permalink
  4. object Banner

    Permalink
  5. object Base64 extends Serializable

    Permalink
  6. object BiggerApplies

    Permalink
  7. object BuildInfo extends Product with Serializable

    Permalink

    This object was generated by sbt-buildinfo.

  8. object Cache

    Permalink

    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:

    • limit maximum number of elements to cache once limit is reached older elements will be removed, typically using "last recently used" strategy
    • "ttl since update" for object in cache Prevents from keeping stale objects in the cache
    • "ttl since last use" Prevents from wasting memory on unused objects

    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.

  9. object Config

    Permalink
  10. object CycleDetection

    Permalink
  11. object Datacenter extends Serializable

    Permalink
  12. object DeploymentStatus extends Serializable

    Permalink
  13. object FeatureVersion extends Serializable

    Permalink
  14. object Github

    Permalink
  15. object Http4sConsul

    Permalink
  16. object Infrastructure

    Permalink
  17. object InstrumentedDockerClient

    Permalink
  18. object InstrumentedNomadClient

    Permalink
  19. object InstrumentedVaultClient

    Permalink
  20. object Json

    Permalink
  21. object LinearShiftPolicy extends TrafficShiftPolicy

    Permalink
  22. object Magnetar extends Workflow[Unit]

    Permalink
  23. object Manifest extends Serializable

    Permalink
  24. object ManifestValidator

    Permalink
  25. object Metrics

    Permalink
  26. object NamespaceName extends Serializable

    Permalink
  27. object Nelson

    Permalink
  28. object NoTargetDatacenters extends NelsonError with Product with Serializable

    Permalink
  29. object Pipeline

    Permalink
  30. object Pools extends Serializable

    Permalink
  31. object PrometheusConsul

    Permalink
  32. object Reconciliation

    Permalink
  33. object Released extends Serializable

    Permalink
  34. object Repo extends Serializable

    Permalink
  35. object RepoAccess

    Permalink
  36. object ScalazHelpers

    Permalink
  37. object Schedule extends Serializable

    Permalink
  38. object Session extends Serializable

    Permalink
  39. object Slug extends Serializable

    Permalink
  40. object TaskGroupAllocation extends Serializable

    Permalink
  41. object TaskStatus extends Serializable

    Permalink
  42. object Templates

    Permalink
  43. object TrafficShiftPolicy

    Permalink
  44. object UnsatisfiedDeploymentRequirements extends Serializable

    Permalink
  45. object Version extends Serializable

    Permalink
  46. object Versionable extends Serializable

    Permalink
  47. object Workflow

    Permalink
  48. object WorkflowControlOp

    Permalink
  49. object YamlError extends Serializable

    Permalink
  50. object YamlParser

    Permalink
  51. package alerts

    Permalink

    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.

  52. package audit

    Permalink
  53. package cleanup

    Permalink
  54. package crypto

    Permalink
  55. package docker

    Permalink
  56. def featureVersionFrom1or2DotString(versionString: String): Option[FeatureVersion]

    Permalink
  57. def fromJson[A](in: String)(implicit arg0: DecodeJson[A]): Task[A]

    Permalink

    Given we're mostly parsing string results to task, make a simple decoder utility function for it.

  58. package helmhttp4s

    Permalink
  59. def linkTo(resource: String)(network: NetworkConfig): URI

    Permalink

    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)

  60. package loadbalancers

    Permalink
  61. package logging

    Permalink
  62. package monitoring

    Permalink
  63. package notifications

    Permalink
  64. object process

    Permalink
  65. def randomAlphaNumeric(desiredLength: Int): String

    Permalink
  66. package routing

    Permalink
  67. package scheduler

    Permalink
  68. package storage

    Permalink
  69. package vault

    Permalink
  70. implicit val versionableLoadbalancer: Versionable[@@[Loadbalancer, Versioned]]

    Permalink
  71. implicit def versionableOps[A](a: A)(implicit arg0: Versionable[A]): AllOps[A]

    Permalink
  72. implicit val versionableUnit: Versionable[@@[UnitDef, Versioned]]

    Permalink
  73. def withTempFile[A](s: String, prefix: String = "nelson-", suffix: String = ".tmp", dir: Path = DefaultTempDir)(f: (File) ⇒ Process[Task, A]): Process[Task, A]

    Permalink
  74. package yaml

    Permalink

Inherited from AnyRef

Inherited from Any

Ungrouped