class McSecurityGroup
API 1.5
Public Class Methods
create(cloud_id, opts={})
click to toggle source
NOTE: Create & Destroy require “security_manager” permissions
# File lib/rest_connection/rightscale/mc_security_group.rb, line 58 def self.create(cloud_id, opts={}) url = "#{parse_args(cloud_id)}#{self.resource_plural_name}" location = connection.post(url, self.resource_singular_name.to_sym => opts) newrecord = self.new('links' => [ {'rel' => 'self', 'href' => location } ]) rules = opts[:rules] || opts["rules"] [rules].flatten.each { |rule_hash| newrecord.add_rule(rule_hash) } if rules newrecord.reload newrecord end
filters()
click to toggle source
# File lib/rest_connection/rightscale/mc_security_group.rb, line 53 def self.filters [:name, :resource_uid] end
parse_args(cloud_id)
click to toggle source
# File lib/rest_connection/rightscale/mc_security_group.rb, line 49 def self.parse_args(cloud_id) "clouds/#{cloud_id}/" end
resource_plural_name()
click to toggle source
# File lib/rest_connection/rightscale/mc_security_group.rb, line 41 def self.resource_plural_name "security_groups" end
resource_singular_name()
click to toggle source
# File lib/rest_connection/rightscale/mc_security_group.rb, line 45 def self.resource_singular_name "security_group" end
Public Instance Methods
add_rule(opts={})
click to toggle source
# File lib/rest_connection/rightscale/mc_security_group.rb, line 74 def add_rule(opts={}) opts.each { |k,v| opts["#{k}".to_sym] = v } fields = [ {"1.0" => :owner, "1.5" => :group_owner}, # optional {"1.0" => :group, "1.5" => :group_name}, # optional {"1.0" => :cidr_ip, "1.5" => :cidr_ips}, # optional {"1.0" => :protocol, "1.5" => :protocol}, # "tcp" || "udp" || "icmp" {"1.0" => :from_port, "1.5" => :start_port}, # optional {"1.0" => :to_port, "1.5" => :end_port}, # optional { "1.5" => :source_type}, # "cidr_ips" || "group" { "1.5" => :icmp_code}, # optional { "1.5" => :icmp_type}, # optional { "1.5" => :security_group_href}, # optional ] unless opts[:protocol] raise ArgumentError.new("add_rule requires the 'protocol' option") end params = { :source_type => ((opts[:cidr_ip] || opts[:cidr_ips]) ? "cidr_ips" : "group"), :security_group_href => self.href, :protocol_details => {} } fields.each { |ver| next unless val = opts[ver["1.0"]] || opts[ver["1.5"]] if ver["1.5"].to_s =~ /port|icmp/ params[:protocol_details][ver["1.5"]] = val else params[ver["1.5"]] = val end } SecurityGroupRule.create(params) end
remove_rules_by_filters(filters={})
click to toggle source
# File lib/rest_connection/rightscale/mc_security_group.rb, line 109 def remove_rules_by_filters(filters={}) rules_to_delete = rules filters.each do |filter,regex| @rules.reject! { |rule| rule[filter] =~ Regexp.new(regex) } end @rules.each { |rule| rule.destroy } end
resource_plural_name()
click to toggle source
# File lib/rest_connection/rightscale/mc_security_group.rb, line 33 def resource_plural_name "security_groups" end
resource_singular_name()
click to toggle source
# File lib/rest_connection/rightscale/mc_security_group.rb, line 37 def resource_singular_name "security_group" end
rules()
click to toggle source
# File lib/rest_connection/rightscale/mc_security_group.rb, line 70 def rules self.load(SecurityGroupRule) end