class Piculet::DSL::EC2::SecurityGroup

Public Class Methods

new(context, name, vpc, &block) click to toggle source
# File lib/piculet/dsl/security-group.rb, line 7
def initialize(context, name, vpc, &block)
  @name = name
  @vpc = vpc
  @context = context.merge(:security_group_name => name)

  @result = OpenStruct.new({
    :name    => name,
    :tags    => {},
    :ingress => [],
    :egress  => [],
  })

  instance_eval(&block)
end

Public Instance Methods

result() click to toggle source
# File lib/piculet/dsl/security-group.rb, line 22
def result
  unless @result.description
    raise "SecurityGroup `#{@name}`: `description` is required"
  end

  @result
end

Private Instance Methods

description(value) click to toggle source
# File lib/piculet/dsl/security-group.rb, line 31
def description(value)
  @result.description = value
end
egress(&block) click to toggle source
# File lib/piculet/dsl/security-group.rb, line 57
def egress(&block)
  if @egress_is_defined
    raise "SecurityGroup `#{@name}`: `egress` is already defined"
  end

  unless @vpc
    raise "SecurityGroup `#{@name}`: Cannot define `egress` in classic"
  end

  @result.egress = Permissions.new(@context, @name, :egress, &block).result

  @egress_is_defined = true
end
ingress(&block) click to toggle source
# File lib/piculet/dsl/security-group.rb, line 48
def ingress(&block)
  if @ingress_is_defined
    raise "SecurityGroup `#{@name}`: `ingress` is already defined"
  end

  @result.ingress = Permissions.new(@context, @name, :ingress, &block).result
  @ingress_is_defined = true
end
tags(values) click to toggle source
# File lib/piculet/dsl/security-group.rb, line 35
def tags(values)
  if @tags_is_defined
    raise "SecurityGroup `#{@name}`: `tags` is already defined"
  end

  unless values.kind_of?(Hash)
    raise "SecurityGroup `#{@name}`: argument of `tags` is wrong (expected Hash)"
  end

  @result.tags = values
  @tags_is_defined = true
end