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. type @@[T, Tag] = AnyRef { ... /* 2 definitions in type refinement */ }

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

    Permalink
  3. 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.

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

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

    Permalink

    Configuration for banning/allowing various clients.

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

    Permalink
  7. implicit class BedazzledIO[A] extends AnyRef

    Permalink
  8. implicit class BedazzledOpt[A] extends AnyRef

    Permalink
  9. implicit class BedazzledString extends AnyRef

    Permalink
  10. type BlueprintRef = (String, Revision)

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

    Permalink

    Basic cache API providing get/put operations

  12. 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

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

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

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

    Permalink
  16. type DNSName = String

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

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

    Permalink
  19. type DatacenterRef = String

    Permalink
  20. type DependencyEdge = (RoutingNode, RoutingNode)

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

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

    Permalink
  23. type DeploymentHash = String

    Permalink
  24. final case class DeploymentMonitorConfig(delay: FiniteDuration) extends Product with Serializable

    Permalink
  25. sealed abstract class DeploymentStatus extends Product with Serializable

    Permalink
  26. type DeploymentStatusString = String

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

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

    Permalink

    configuration options for the docker cli controller.

  29. type EmailAddress = String

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

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

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

    Permalink
  33. type ExpirationPolicyRef = String

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

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

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

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

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

    Permalink
  39. type GUID = String

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

    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, IO]

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

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

    Permalink
  48. final case class Interpreters(git: ~>[GithubOp, IO], storage: ~>[StoreOp, IO], slack: Option[~>[SlackOp, IO]], email: Option[~>[EmailOp, IO]]) 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 class Kubectl extends AnyRef

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

    Permalink
  64. type LoadbalancerRef = String

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

    Permalink
  66. 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
  67. final case class ManifestConfig(filename: String) extends Product with Serializable

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

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

    Permalink
  70. class Metrics extends AnyRef

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

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

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

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

    Permalink
  75. final case class MissingDeploymentReference(id: Long, slug: Slug) extends NelsonError with Product with Serializable

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

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

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

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

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

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

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

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

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

    Permalink

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

  85. abstract class NelsonError extends RuntimeException

    Permalink
  86. 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.

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

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

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

    Permalink
  90. 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.

  91. type PlanRef = String

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

    Permalink

    Configuration for auto-generated Vault policies

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

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

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

    Permalink
  96. class PrometheusConsul extends ~>[ConsulOp, IO]

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

    Permalink
  98. final case class Released(slug: Slug, version: Version, timestamp: Instant, referenceId: 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. type Sha256 = String

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

    Permalink
  108. 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.

  109. type StatusMessage = String

    Permalink
  110. type TagName = String

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

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

    Permalink
  113. type TempoaryAccessCode = String

    Permalink
  114. sealed trait TrafficShiftPolicy extends AnyRef

    Permalink
  115. 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.

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

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

    Permalink
  118. type UnitName = String

    Permalink
  119. type UnitRef = String

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

    Permalink
  121. final case class UnknownBlueprintReference(ref: String, revision: Revision) extends NelsonError with Product with Serializable

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

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

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

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

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

    Permalink

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

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

    Permalink
  128. trait Versionable[A] extends Serializable

    Permalink
  129. final case class VersionedGitTagRequired(ref: Reference) extends NelsonError with Product with Serializable

    Permalink
  130. 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

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

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

    Permalink
  133. type WorkflowRef = String

    Permalink
  134. abstract class YamlError extends NelsonError

    Permalink
  135. 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 BuildInfo extends Product with Serializable

    Permalink

    This object was generated by sbt-buildinfo.

  7. 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.

  8. object Canopus extends Workflow[Unit]

    Permalink

    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.

  9. object CatsHelpers

    Permalink
  10. object Config

    Permalink
  11. object CycleDetection

    Permalink
  12. object Datacenter extends Serializable

    Permalink
  13. object DeploymentStatus extends Serializable

    Permalink
  14. object FeatureVersion extends Serializable

    Permalink
  15. object Github

    Permalink
  16. object Http4sConsul

    Permalink
  17. object Infrastructure

    Permalink
  18. object InstrumentedDockerClient extends Serializable

    Permalink
  19. object InstrumentedNomadClient extends Serializable

    Permalink
  20. object InstrumentedVaultClient extends Serializable

    Permalink
  21. object Json

    Permalink
  22. object Kubectl

    Permalink
  23. object LinearShiftPolicy extends TrafficShiftPolicy

    Permalink
  24. object Magnetar extends Workflow[Unit]

    Permalink
  25. object Manifest extends Serializable

    Permalink
  26. object ManifestValidator

    Permalink
  27. object Metrics

    Permalink
  28. object NamespaceName extends Serializable

    Permalink
  29. object Nelson

    Permalink
  30. object NoTargetDatacenters extends NelsonError with Product with Serializable

    Permalink
  31. object NomadNotImplemented extends NelsonError

    Permalink
  32. object Pipeline

    Permalink
  33. object Pools extends Serializable

    Permalink
  34. object PrometheusConsul extends Serializable

    Permalink
  35. object Pulsar extends Workflow[Unit]

    Permalink

    Kubernetes deployment workflow that deploys and deletes units, whilst provisioning authentication roles in Vault so that Kubernetes pods can talk to Vault at runtime.

  36. object Released extends Serializable

    Permalink
  37. object Repo extends Serializable

    Permalink
  38. object RepoAccess

    Permalink
  39. object Schedule extends Serializable

    Permalink
  40. object Session extends Serializable

    Permalink
  41. object Slug extends Serializable

    Permalink
  42. object StubbedConsulClient extends ~>[ConsulOp, IO]

    Permalink
  43. object Tag

    Permalink

    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

  44. object Templates

    Permalink
  45. object TrafficShiftPolicy

    Permalink
  46. object UnsatisfiedDeploymentRequirements extends Serializable

    Permalink
  47. object Version extends Serializable

    Permalink
  48. object Versionable extends Serializable

    Permalink
  49. object Workflow

    Permalink
  50. object WorkflowControlOp

    Permalink
  51. object YamlError extends Serializable

    Permalink
  52. object YamlParser

    Permalink
  53. 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.

  54. package audit

    Permalink
  55. package blueprint

    Permalink
  56. package cleanup

    Permalink
  57. package crypto

    Permalink
  58. package docker

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

    Permalink
  60. def fromJson[A](in: String)(implicit arg0: DecodeJson[A]): IO[A]

    Permalink

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

  61. package health

    Permalink
  62. 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)

  63. package loadbalancers

    Permalink
  64. package logging

    Permalink
  65. package monitoring

    Permalink
  66. package notifications

    Permalink
  67. object process

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

    Permalink
  69. package routing

    Permalink
  70. package scheduler

    Permalink
  71. package storage

    Permalink
  72. package vault

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

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

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

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

    Permalink
  77. package yaml

    Permalink

Inherited from AnyRef

Inherited from Any

Ungrouped