mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
50 lines
1.7 KiB
Ruby
50 lines
1.7 KiB
Ruby
module Fog
|
|
module Compute
|
|
class Cloudstack
|
|
class SecurityGroup < Fog::Model
|
|
identity :id, :aliases => 'id'
|
|
attribute :name, :type => :string
|
|
attribute :description, :type => :string
|
|
attribute :account, :type => :string
|
|
attribute :domain_id, :aliases => "domainid", :type => :string
|
|
attribute :domain_name, :aliases => "domain", :type => :string
|
|
attribute :project_id, :aliases => "projectid", :type => :string
|
|
attribute :project_name, :aliases => "project", :type => :string
|
|
attribute :ingress_rules, :aliases => "ingressrule", :type => :array
|
|
attribute :egress_rules, :aliases => "egressrule", :type => :array
|
|
|
|
def destroy
|
|
requires :id
|
|
connection.delete_security_group('id' => self.id)
|
|
true
|
|
end
|
|
|
|
def egress_rules
|
|
attributes[:egress_rules] || []
|
|
end
|
|
|
|
def ingress_rules
|
|
attributes[:ingress_rules] || []
|
|
end
|
|
|
|
def save
|
|
requires :name
|
|
|
|
options = {
|
|
'name' => self.name,
|
|
'account' => self.account,
|
|
'description' => self.description,
|
|
'projectid' => self.project_id,
|
|
'domainid' => self.domain_id,
|
|
}
|
|
data = connection.create_security_group(options)
|
|
merge_attributes(data['createsecuritygroupresponse']['securitygroup'])
|
|
end
|
|
|
|
def rules
|
|
connection.security_group_rules.all("security_group_id" => self.id)
|
|
end
|
|
end # SecurityGroup
|
|
end # Cloudstack
|
|
end # Compute
|
|
end # Fog
|