Class: DrawCloud::SecurityGroup

Inherits:
Base
  • Object
show all
Defined in:
lib/draw_cloud/security_group.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#as_groups, #as_launch_configurations, #deletion_policy, #depends_on, #ec2_instances, #elastic_ips, #gateways, #iam_access_keys, #iam_policies, #iam_users, #mappings, #metadata, #network_acls, #network_interfaces, #outputs, #parameters, #parent, #rdses, #resources, #route_tables, #security_groups, #sns_topics, #subnets, #vpcs, #wait_handles

Instance Method Summary collapse

Methods inherited from Base

#[], #accessor, #add_standard_properties, #create_as_group, #create_as_launch_configuration, #create_ec2_instance, #create_ec2_instance_template, #create_elastic_ip, #create_iam_access_key, #create_iam_policy, #create_iam_user, #create_mapping, #create_network_acl, #create_network_interface, #create_output, #create_parameter, #create_rds, #create_route_table, #create_security_group, #create_service, #create_sns_topic, #create_subnet, #create_vpc, #create_wait_handle, #ref

Methods included from Locations

#arn_s3

Methods included from Utilities

#desplice, #fnbase64, #fngetatt, #fnjoin, #hash_to_tag_array, #region, #resource_style, #splice, #stack_name

Constructor Details

#initialize(name, description = nil, options = {}, &block) ⇒ SecurityGroup

Returns a new instance of SecurityGroup.



23
24
25
26
27
28
# File 'lib/draw_cloud/security_group.rb', line 23

def initialize(name, description=nil, options={}, &block)
  @name = name
  @description = description || name.to_s
  @ingress_rules = []
  super(options, &block)
end

Instance Attribute Details

#descriptionObject

Returns the value of attribute description.



22
23
24
# File 'lib/draw_cloud/security_group.rb', line 22

def description
  @description
end

#ingress_rulesObject

Returns the value of attribute ingress_rules.



22
23
24
# File 'lib/draw_cloud/security_group.rb', line 22

def ingress_rules
  @ingress_rules
end

#nameObject

Returns the value of attribute name.



22
23
24
# File 'lib/draw_cloud/security_group.rb', line 22

def name
  @name
end

Instance Method Details

#allow_cidr_in(protocol, cidr, from_port, to_port) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/draw_cloud/security_group.rb', line 43

def allow_cidr_in(protocol, cidr, from_port, to_port)
  ingress_rules << {
    "IpProtocol" => protocol.to_s,
    "CidrIp" => cidr,
    "FromPort" => from_port.to_s,
    "ToPort" => to_port.to_s
  }
end

#allow_security_group_in(protocol, source_security_group_id, from_port, to_port) ⇒ Object



34
35
36
37
38
39
40
41
# File 'lib/draw_cloud/security_group.rb', line 34

def allow_security_group_in(protocol, source_security_group_id, from_port, to_port)
  ingress_rules << {
    "IpProtocol" => protocol.to_s,
    "SourceSecurityGroupId" => DrawCloud.ref(source_security_group_id),
    "FromPort" => from_port.to_s,
    "ToPort" => to_port.to_s
  }
end

#check_validityObject

Raises:

  • (ArgumentError)


67
68
69
# File 'lib/draw_cloud/security_group.rb', line 67

def check_validity
  raise(ArgumentError, "Bad description for #{name.inspect} => #{description.inspect}. Must be [a-zA-Z0-9_ -]{0,255}") unless description =~ /^[a-zA-Z0-9_ -]{0,255}$/
end

#consumes(services, options = {}) ⇒ Object



55
56
# File 'lib/draw_cloud/security_group.rb', line 55

def consumes(services, options={})
end

#load_into_config(config) ⇒ Object



58
59
60
61
# File 'lib/draw_cloud/security_group.rb', line 58

def load_into_config(config)
  config.cf_add_resource resource_name, self
  super(config)
end

#provides(services, options = {}) ⇒ Object



52
53
# File 'lib/draw_cloud/security_group.rb', line 52

def provides(services, options={})
end

#resource_nameObject



63
64
65
# File 'lib/draw_cloud/security_group.rb', line 63

def resource_name
  resource_style(name) + "SecurityGroup"
end

#security_groupObject



30
31
32
# File 'lib/draw_cloud/security_group.rb', line 30

def security_group
  self
end

#to_hObject



71
72
73
74
75
76
77
78
79
80
81
82
83
# File 'lib/draw_cloud/security_group.rb', line 71

def to_h
  check_validity
  h = {
    "Type" => "AWS::EC2::SecurityGroup",
    "Properties" => {
      "GroupDescription" => description,
      "SecurityGroupIngress" => ingress_rules,
      "SecurityGroupEgress" => [],
    }
  }
  h["Properties"]["VpcId"] = DrawCloud.ref(vpc) if vpc
  add_standard_properties(h)
end