require 'fog/core/model' module Fog module Compute class Aliyun class SecurityGroup < Fog::Model identity :id, :aliases =>"SecurityGroupId" attribute :name, :aliases => "SecurityGroupName" attribute :description, :aliases => "Description" attribute :created_at, :aliases => "CreationTime" attribute :vpc_id, :aliases => "VpcId" def vpc requires :vpc_id service.vpcs.get(vpc_id) end def security_group_rules requires :id service.security_group_rules.get(id) end def save(options={}) options[:vpcId] = vpc_id if vpc_id options[:name] = name if name options[:description] = description if description Fog::JSON.decode(service.create_security_group(options).body) true end def destroy requires :id service.delete_security_group(id) true end def authorize_security_group_sg_rule(group_id,direction="ingress",options={}) requires :id if direction=="egress" service.create_security_group_egress_sg_rule(id,group_id,options) else service.create_security_group_sg_rule(id,group_id,options) end true end def authorize_security_group_ip_rule(cidr_ip,direction="ingress",options={}) requires :id nic_type = options.fetch(:nic_type, "internet") if direction=="egress" service.create_security_group_egress_ip_rule(id,cidr_ip,nic_type,options) else service.create_security_group_ip_rule(id,cidr_ip,nic_type,options) end true end def revoke_seurity_group_sg_rule(group_id,direction="ingress",options={}) requires :id if direction=="egress" service.delete_security_group_egress_sg_rule(id,group_id,options) else service.delete_security_group_sg_rule(id,group_id,options) end true end def revoke_security_group_ip_rule(cidr_ip,direction="ingress",options={}) requires :id nic_type = options.fetch(:nic_type, "internet") if direction=="egress" service.delete_security_group_egress_ip_rule(id,cidr_ip,nic_type,options) else service.delete_security_group_ip_rule(id,cidr_ip,nic_type,options) end true end end end end end