# File lib/ec2/right_ec2_security_groups.rb, line 179
    def edit_security_group(action, group_name, params)
      hash = {}
      case action
      when :authorize, :grant then action = "AuthorizeSecurityGroupIngress"
      when :revoke, :remove   then action = "RevokeSecurityGroupIngress"
      else raise "Unknown action #{action.inspect}!"
      end
      hash['GroupName']                  = group_name
      hash['SourceSecurityGroupName']    = params[:source_group]                         unless params[:source_group].blank?
      hash['SourceSecurityGroupOwnerId'] = params[:source_group_owner].to_s.gsub(/-/,'') unless params[:source_group_owner].blank?
      hash['IpProtocol']                 = params[:protocol]                             unless params[:protocol].blank?
      unless params[:port].blank?
        hash['FromPort'] = params[:port]
        hash['ToPort']   = params[:port]
      end
      hash['FromPort']   = params[:from_port] unless params[:from_port].blank?
      hash['ToPort']     = params[:to_port]   unless params[:to_port].blank?
      hash['CidrIp']     = params[:cidr_ip]   unless params[:cidr_ip].blank?
      #
      link = generate_request(action, hash)
      request_info(link, RightBoolResponseParser.new(:logger => @logger))
    rescue Exception
      on_exception
    end