Packages

  • package root
    Definition Classes
    root
  • package com
    Definition Classes
    root
  • package monsanto
    Definition Classes
    com
  • package arch
    Definition Classes
    monsanto
  • package cloudformation
    Definition Classes
    arch
  • package model

    A DSL to create consistent, type-safe AWS CloudFormation templates.

    A DSL to create consistent, type-safe AWS CloudFormation templates.

    The low-level DSL closely adheres to the objects and parameters in the CloudFormation template JSON specification. If you intend to use this DSL to create CloudFormation templates, it would behoove you to familiarize yourself with the CloudFormation documentation.

    In addition to the low-level, DSL, there are several higher-order builders and convenience methods. See com.monsanto.arch.cloudformation.model.simple.Builders for more information on these helper methods.

    For a discussion of the features and approach of this library, read our blog post.

    Sample usage:

    import com.monsanto.arch.cloudformation.model._
    import com.monsanto.arch.cloudformation.model.resource._
    import com.monsanto.arch.cloudformation.model.simple.Builders._
    
    object SimpleVPC extends VPCWriter {
      val ownerParameter = StringParameter(
        name = "Owner",
        Description = Some("Individual responsible for this template"),
        MinLength = Some(StringBackedInt(1)),
        MaxLength = Some(StringBackedInt(64)),
        AllowedPattern = Some("[-_ a-zA-Z0-9]*"),
        ConstraintDescription = Some("Can contain only alphanumeric characters, spaces, dashes and underscores.")
      )
      val keyNameParameter = `AWS::EC2::KeyPair::KeyName_Parameter`(
        name = "KeyName",
        Description = Some("Name of an existing EC2 KeyPair to enable SSH access to the instances"),
        ConstraintDescription = Some("Value must be a valid AWS key pair name in your account.")
      )
      val allowSSHFromParameter = CidrBlockParameter(
        name = "AllowSSHFrom",
        Description = Some("The net block (CIDR) that SSH is available to.")
      )
      val simpleParameters = Seq(
        ownerParameter,
        keyNameParameter,
        allowSSHFromParameter
      )
    
      val simpleConditions = Seq(
        Condition(
          name = "ShouldDisablePassword",
          function = `Fn::Equals`(
            a = ParameterRef(ownerParameter),
            b = StringToken("rms")
          )
        )
      )
    
      val amazonLinuxAMIMapping = Mapping[AMIId](
        "AmazonLinuxAMI",
        Map(
          "us-east-1"      -> Map("AMI" -> AMIId("ami-1ecae776")),
          "us-west-1"      -> Map("AMI" -> AMIId("ami-d114f295")),
          "us-west-2"      -> Map("AMI" -> AMIId("ami-e7527ed7")),
          "eu-west-1"      -> Map("AMI" -> AMIId("ami-a10897d6")),
          "ap-southeast-1" -> Map("AMI" -> AMIId("ami-68d8e93a")),
          "ap-southeast-2" -> Map("AMI" -> AMIId("ami-fd9cecc7")),
          "ap-northeast-1" -> Map("AMI" -> AMIId("ami-cbf90ecb"))
        )
      )
      val simpleMappings = Seq(amazonLinuxAMIMapping)
    
      val simpleResourceAndOutputs = withVpc(CidrBlock(10, 0, 0, 0, 16)) { implicit vpc =>
        val (internetGatewayResource, gatewayToInternetResource) = withInternetGateway
        val publicRouteTable = withRouteTable("Public", 1)
        val publicRouteTableRoute = publicRouteTable.withRoute(
          visibility = "Public",
          routeTableOrdinal = 1,
          routeOrdinal = 1,
          connectionBobber = InternetGatewayRoute(ResourceRef(internetGatewayResource))
        )
        val gatewayStuff = Template.fromResource(internetGatewayResource) ++
          gatewayToInternetResource ++
          publicRouteTable ++
          publicRouteTableRoute
        val withinAZ = withAZ("us-east-1a") { implicit az =>
          withSubnet("PubSubnet1", CidrBlock(10, 0, 0, 1, 24)) { implicit pubSubnet =>
            val bastionName = "bastion"
            val bastion = ec2(
              name = bastionName,
              InstanceType = "t2.micro",
              KeyName = ParameterRef(keyNameParameter),
              ImageId = `Fn::FindInMap`[AMIId](MappingRef(amazonLinuxAMIMapping), `AWS::Region`, "AMI"),
              SecurityGroupIds = Seq(),
              Tags = AmazonTag.fromName(bastionName),
              UserData = Some(`Fn::Base64`(
                `Fn::Join`("",
                  Seq[Token[String]](
                    "#!/bin/bash -v\n",
                    "yum update -y --security\n",
                    "# EOF\n"
                  )
                )
              ))
            )
            val sshToBastion = ParameterRef(allowSSHFromParameter) ->- 22 ->- bastion
            Template.fromSecurityGroupRoutable(bastion) ++
              bastion.map(_.withEIP("BastionEIP").andOutput("BastionEIP", "Bastion Host EIP")) ++
              Template.collapse(sshToBastion)
          }
        }
        gatewayStuff ++
          withinAZ
      }
      val simpleTemplate = simpleResourceAndOutputs ++
        Template(
          AWSTemplateFormatVersion = Some("2010-09-09"),
          Description = Some("Simple template"),
          Parameters = Some(simpleParameters),
          Conditions = Some(simpleConditions),
          Mappings = Some(simpleMappings),
          Resources = Seq.empty,
          Outputs = None
        )
      writeStaxModule("vpc-simple.json", simpleTemplate)
    }
    SimpleVPC

    The above code utilizes the DSL to create a simple AWS VPC utilizing a single Availability Zone having a single public subnet and a single "bastion" instance. The template output is the IP address of the EIP it creates. It also shows examples of creating and using Parameters and Mappings. A Condition is created but not used.

    Definition Classes
    cloudformation
  • object AwsStringInterpolation

    Created by Tyler Southwick on 11/20/15.

    Created by Tyler Southwick on 11/20/15.

    Definition Classes
    model
  • Zipper

case class Zipper[A](parts: Seq[A]*) extends Traversable[A] with Product with Serializable

Takes a sequence of objects and zips them together such that

Linear Supertypes
Serializable, Serializable, Product, Equals, Traversable[A], GenTraversable[A], GenericTraversableTemplate[A, Traversable], TraversableLike[A, Traversable[A]], GenTraversableLike[A, Traversable[A]], Parallelizable[A, ParIterable[A]], TraversableOnce[A], GenTraversableOnce[A], FilterMonadic[A, Traversable[A]], HasNewBuilder[A, Traversable[A]], AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. Zipper
  2. Serializable
  3. Serializable
  4. Product
  5. Equals
  6. Traversable
  7. GenTraversable
  8. GenericTraversableTemplate
  9. TraversableLike
  10. GenTraversableLike
  11. Parallelizable
  12. TraversableOnce
  13. GenTraversableOnce
  14. FilterMonadic
  15. HasNewBuilder
  16. AnyRef
  17. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new Zipper(parts: Seq[A]*)

Type Members

  1. type Self = Traversable[A]
    Attributes
    protected[this]
    Definition Classes
    TraversableLike
  2. class WithFilter extends FilterMonadic[A, Repr]
    Definition Classes
    TraversableLike

Value Members

  1. final def !=(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int
    Definition Classes
    AnyRef → Any
  3. def ++[B >: A, That](that: GenTraversableOnce[B])(implicit bf: CanBuildFrom[Traversable[A], B, That]): That
    Definition Classes
    TraversableLike → GenTraversableLike
  4. def ++:[B >: A, That](that: Traversable[B])(implicit bf: CanBuildFrom[Traversable[A], B, That]): That
    Definition Classes
    TraversableLike
  5. def ++:[B >: A, That](that: TraversableOnce[B])(implicit bf: CanBuildFrom[Traversable[A], B, That]): That
    Definition Classes
    TraversableLike
  6. def /:[B](z: B)(op: (B, A) ⇒ B): B
    Definition Classes
    TraversableOnce → GenTraversableOnce
  7. def :\[B](z: B)(op: (A, B) ⇒ B): B
    Definition Classes
    TraversableOnce → GenTraversableOnce
  8. final def ==(arg0: Any): Boolean
    Definition Classes
    AnyRef → Any
  9. def addString(b: StringBuilder): StringBuilder
    Definition Classes
    TraversableOnce
  10. def addString(b: StringBuilder, sep: String): StringBuilder
    Definition Classes
    TraversableOnce
  11. def addString(b: StringBuilder, start: String, sep: String, end: String): StringBuilder
    Definition Classes
    TraversableOnce
  12. def aggregate[B](z: ⇒ B)(seqop: (B, A) ⇒ B, combop: (B, B) ⇒ B): B
    Definition Classes
    TraversableOnce → GenTraversableOnce
  13. final def asInstanceOf[T0]: T0
    Definition Classes
    Any
  14. def clone(): AnyRef
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  15. def collect[B, That](pf: PartialFunction[A, B])(implicit bf: CanBuildFrom[Traversable[A], B, That]): That
    Definition Classes
    TraversableLike → GenTraversableLike
  16. def collectFirst[B](pf: PartialFunction[A, B]): Option[B]
    Definition Classes
    TraversableOnce
  17. def companion: GenericCompanion[Traversable]
    Definition Classes
    Traversable → GenTraversable → GenericTraversableTemplate
  18. def copyToArray[B >: A](xs: Array[B], start: Int, len: Int): Unit
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
  19. def copyToArray[B >: A](xs: Array[B]): Unit
    Definition Classes
    TraversableOnce → GenTraversableOnce
  20. def copyToArray[B >: A](xs: Array[B], start: Int): Unit
    Definition Classes
    TraversableOnce → GenTraversableOnce
  21. def copyToBuffer[B >: A](dest: Buffer[B]): Unit
    Definition Classes
    TraversableOnce
  22. def count(p: (A) ⇒ Boolean): Int
    Definition Classes
    TraversableOnce → GenTraversableOnce
  23. def drop(n: Int): Traversable[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  24. def dropWhile(p: (A) ⇒ Boolean): Traversable[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  25. final def eq(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  26. def exists(p: (A) ⇒ Boolean): Boolean
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
  27. def filter(p: (A) ⇒ Boolean): Traversable[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  28. def filterNot(p: (A) ⇒ Boolean): Traversable[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  29. def finalize(): Unit
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  30. def find(p: (A) ⇒ Boolean): Option[A]
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
  31. def flatMap[B, That](f: (A) ⇒ GenTraversableOnce[B])(implicit bf: CanBuildFrom[Traversable[A], B, That]): That
    Definition Classes
    TraversableLike → GenTraversableLike → FilterMonadic
  32. def flatten[B](implicit asTraversable: (A) ⇒ GenTraversableOnce[B]): Traversable[B]
    Definition Classes
    GenericTraversableTemplate
  33. def fold[A1 >: A](z: A1)(op: (A1, A1) ⇒ A1): A1
    Definition Classes
    TraversableOnce → GenTraversableOnce
  34. def foldLeft[B](z: B)(op: (B, A) ⇒ B): B
    Definition Classes
    TraversableOnce → GenTraversableOnce
  35. def foldRight[B](z: B)(op: (A, B) ⇒ B): B
    Definition Classes
    TraversableOnce → GenTraversableOnce
  36. def forall(p: (A) ⇒ Boolean): Boolean
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
  37. def foreach[U](f: (A) ⇒ U): Unit
    Definition Classes
    Zipper → GenericTraversableTemplate → TraversableLike → GenTraversableLike → TraversableOnce → GenTraversableOnce → FilterMonadic
  38. def genericBuilder[B]: Builder[B, Traversable[B]]
    Definition Classes
    GenericTraversableTemplate
  39. final def getClass(): Class[_]
    Definition Classes
    AnyRef → Any
    Annotations
    @native()
  40. def groupBy[K](f: (A) ⇒ K): Map[K, Traversable[A]]
    Definition Classes
    TraversableLike → GenTraversableLike
  41. def hasDefiniteSize: Boolean
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
  42. def head: A
    Definition Classes
    TraversableLike → GenTraversableLike
  43. def headOption: Option[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  44. def init: Traversable[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  45. def inits: Iterator[Traversable[A]]
    Definition Classes
    TraversableLike
  46. def isEmpty: Boolean
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
  47. final def isInstanceOf[T0]: Boolean
    Definition Classes
    Any
  48. final def isTraversableAgain: Boolean
    Definition Classes
    TraversableLike → GenTraversableLike → GenTraversableOnce
  49. def last: A
    Definition Classes
    TraversableLike → GenTraversableLike
  50. def lastOption: Option[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  51. def map[B, That](f: (A) ⇒ B)(implicit bf: CanBuildFrom[Traversable[A], B, That]): That
    Definition Classes
    TraversableLike → GenTraversableLike → FilterMonadic
  52. def max[B >: A](implicit cmp: Ordering[B]): A
    Definition Classes
    TraversableOnce → GenTraversableOnce
  53. def maxBy[B](f: (A) ⇒ B)(implicit cmp: Ordering[B]): A
    Definition Classes
    TraversableOnce → GenTraversableOnce
  54. def min[B >: A](implicit cmp: Ordering[B]): A
    Definition Classes
    TraversableOnce → GenTraversableOnce
  55. def minBy[B](f: (A) ⇒ B)(implicit cmp: Ordering[B]): A
    Definition Classes
    TraversableOnce → GenTraversableOnce
  56. def mkString: String
    Definition Classes
    TraversableOnce → GenTraversableOnce
  57. def mkString(sep: String): String
    Definition Classes
    TraversableOnce → GenTraversableOnce
  58. def mkString(start: String, sep: String, end: String): String
    Definition Classes
    TraversableOnce → GenTraversableOnce
  59. final def ne(arg0: AnyRef): Boolean
    Definition Classes
    AnyRef
  60. def newBuilder: Builder[A, Traversable[A]]
    Attributes
    protected[this]
    Definition Classes
    GenericTraversableTemplate → HasNewBuilder
  61. def nonEmpty: Boolean
    Definition Classes
    TraversableOnce → GenTraversableOnce
  62. final def notify(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  63. final def notifyAll(): Unit
    Definition Classes
    AnyRef
    Annotations
    @native()
  64. def par: ParIterable[A]
    Definition Classes
    Parallelizable
  65. def parCombiner: Combiner[A, ParIterable[A]]
    Attributes
    protected[this]
    Definition Classes
    TraversableLike → Parallelizable
  66. def partition(p: (A) ⇒ Boolean): (Traversable[A], Traversable[A])
    Definition Classes
    TraversableLike → GenTraversableLike
  67. val parts: Seq[A]*
  68. def product[B >: A](implicit num: Numeric[B]): B
    Definition Classes
    TraversableOnce → GenTraversableOnce
  69. def reduce[A1 >: A](op: (A1, A1) ⇒ A1): A1
    Definition Classes
    TraversableOnce → GenTraversableOnce
  70. def reduceLeft[B >: A](op: (B, A) ⇒ B): B
    Definition Classes
    TraversableOnce
  71. def reduceLeftOption[B >: A](op: (B, A) ⇒ B): Option[B]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  72. def reduceOption[A1 >: A](op: (A1, A1) ⇒ A1): Option[A1]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  73. def reduceRight[B >: A](op: (A, B) ⇒ B): B
    Definition Classes
    TraversableOnce → GenTraversableOnce
  74. def reduceRightOption[B >: A](op: (A, B) ⇒ B): Option[B]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  75. def repr: Traversable[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  76. def reversed: List[A]
    Attributes
    protected[this]
    Definition Classes
    TraversableOnce
  77. def scan[B >: A, That](z: B)(op: (B, B) ⇒ B)(implicit cbf: CanBuildFrom[Traversable[A], B, That]): That
    Definition Classes
    TraversableLike → GenTraversableLike
  78. def scanLeft[B, That](z: B)(op: (B, A) ⇒ B)(implicit bf: CanBuildFrom[Traversable[A], B, That]): That
    Definition Classes
    TraversableLike → GenTraversableLike
  79. def scanRight[B, That](z: B)(op: (A, B) ⇒ B)(implicit bf: CanBuildFrom[Traversable[A], B, That]): That
    Definition Classes
    TraversableLike → GenTraversableLike
    Annotations
    @migration
    Migration

    (Changed in version 2.9.0) The behavior of scanRight has changed. The previous behavior can be reproduced with scanRight.reverse.

  80. def seq: Traversable[A]
    Definition Classes
    Traversable → GenTraversable → Parallelizable → TraversableOnce → GenTraversableOnce
  81. def size: Int
    Definition Classes
    TraversableOnce → GenTraversableOnce
  82. def sizeHintIfCheap: Int
    Attributes
    protected[scala.collection]
    Definition Classes
    GenTraversableOnce
  83. def slice(from: Int, until: Int): Traversable[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  84. def span(p: (A) ⇒ Boolean): (Traversable[A], Traversable[A])
    Definition Classes
    TraversableLike → GenTraversableLike
  85. def splitAt(n: Int): (Traversable[A], Traversable[A])
    Definition Classes
    TraversableLike → GenTraversableLike
  86. def stringPrefix: String
    Definition Classes
    TraversableLike → GenTraversableLike
  87. def sum[B >: A](implicit num: Numeric[B]): B
    Definition Classes
    TraversableOnce → GenTraversableOnce
  88. final def synchronized[T0](arg0: ⇒ T0): T0
    Definition Classes
    AnyRef
  89. def tail: Traversable[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  90. def tails: Iterator[Traversable[A]]
    Definition Classes
    TraversableLike
  91. def take(n: Int): Traversable[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  92. def takeWhile(p: (A) ⇒ Boolean): Traversable[A]
    Definition Classes
    TraversableLike → GenTraversableLike
  93. def thisCollection: Traversable[A]
    Attributes
    protected[this]
    Definition Classes
    TraversableLike
  94. def to[Col[_]](implicit cbf: CanBuildFrom[Nothing, A, Col[A]]): Col[A]
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
  95. def toArray[B >: A](implicit arg0: ClassTag[B]): Array[B]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  96. def toBuffer[B >: A]: Buffer[B]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  97. def toCollection(repr: Traversable[A]): Traversable[A]
    Attributes
    protected[this]
    Definition Classes
    TraversableLike
  98. def toIndexedSeq: IndexedSeq[A]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  99. def toIterable: Iterable[A]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  100. def toIterator: Iterator[A]
    Definition Classes
    TraversableLike → GenTraversableOnce
  101. def toList: List[A]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  102. def toMap[T, U](implicit ev: <:<[A, (T, U)]): Map[T, U]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  103. def toSeq: Seq[A]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  104. def toSet[B >: A]: Set[B]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  105. def toStream: Stream[A]
    Definition Classes
    TraversableLike → GenTraversableOnce
  106. def toString(): String
    Definition Classes
    TraversableLike → Any
  107. def toTraversable: Traversable[A]
    Definition Classes
    TraversableLike → TraversableOnce → GenTraversableOnce
    Annotations
    @deprecatedOverriding( ... , "2.11.0" )
  108. def toVector: Vector[A]
    Definition Classes
    TraversableOnce → GenTraversableOnce
  109. def transpose[B](implicit asTraversable: (A) ⇒ GenTraversableOnce[B]): Traversable[Traversable[B]]
    Definition Classes
    GenericTraversableTemplate
    Annotations
    @migration
    Migration

    (Changed in version 2.9.0) transpose throws an IllegalArgumentException if collections are not uniformly sized.

  110. def unzip[A1, A2](implicit asPair: (A) ⇒ (A1, A2)): (Traversable[A1], Traversable[A2])
    Definition Classes
    GenericTraversableTemplate
  111. def unzip3[A1, A2, A3](implicit asTriple: (A) ⇒ (A1, A2, A3)): (Traversable[A1], Traversable[A2], Traversable[A3])
    Definition Classes
    GenericTraversableTemplate
  112. def view(from: Int, until: Int): TraversableView[A, Traversable[A]]
    Definition Classes
    TraversableLike
  113. def view: TraversableView[A, Traversable[A]]
    Definition Classes
    TraversableLike
  114. final def wait(): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  115. final def wait(arg0: Long, arg1: Int): Unit
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  116. final def wait(arg0: Long): Unit
    Definition Classes
    AnyRef
    Annotations
    @native() @throws( ... )
  117. def withFilter(p: (A) ⇒ Boolean): FilterMonadic[A, Traversable[A]]
    Definition Classes
    TraversableLike → FilterMonadic

Inherited from Serializable

Inherited from Serializable

Inherited from Product

Inherited from Equals

Inherited from Traversable[A]

Inherited from GenTraversable[A]

Inherited from GenericTraversableTemplate[A, Traversable]

Inherited from TraversableLike[A, Traversable[A]]

Inherited from GenTraversableLike[A, Traversable[A]]

Inherited from Parallelizable[A, ParIterable[A]]

Inherited from TraversableOnce[A]

Inherited from GenTraversableOnce[A]

Inherited from FilterMonadic[A, Traversable[A]]

Inherited from HasNewBuilder[A, Traversable[A]]

Inherited from AnyRef

Inherited from Any

Ungrouped