Sha256: c43708e6439048f8bc60a08d650c117428ebefff4cbb16aa46ed3125826418d9

Contents?: true

Size: 1.01 KB

Versions: 54

Compression:

Stored size: 1.01 KB

Contents

class Ey::Core::Client::FirewallRule < Ey::Core::Model
  extend Ey::Core::Associations

  identity :id

  attribute :port_range, parser: lambda { |v,_| range_parser(v) }
  attribute :source, type: :string
  attribute :deleted_at, type: :time

  has_one :firewall

  def source_firewall
    unless source.match(Ey::Core::IP_REGEX)
      self.connection.firewalls.get(self.source)
    end
  end

  def save!
    requires :firewall_id

    self.port_range ||= "0-65535"

    params = {
      "url"           => self.collection.url,
      "firewall_rule" => {
        "port_range" => "#{self.port_range.min}-#{self.port_range.max}",
        "source"     => self.source     || "0.0.0.0/0",
      },
      "firewall" => self.firewall_id,
    }

    if new_record?
      self.connection.requests.new(self.connection.create_firewall_rule(params).body["request"])
    else raise NotImplementedError
    end
  end

  def destroy!
    connection.requests.new(self.connection.destroy_firewall_rule("id" => self.id).body["request"])
  end
end

Version data entries

54 entries across 54 versions & 3 rubygems

Version Path
ey-core-3.6.0.autoscaling1 lib/ey-core/models/firewall_rule.rb
ey-core-3.6.4 lib/ey-core/models/firewall_rule.rb
ey-core-3.6.3 lib/ey-core/models/firewall_rule.rb
ey-core-3.6.1 lib/ey-core/models/firewall_rule.rb
groove-ey-core-3.6.3 lib/ey-core/models/firewall_rule.rb
groove-ey-core-3.6.2 lib/ey-core/models/firewall_rule.rb
groove-ey-core-3.6.1 lib/ey-core/models/firewall_rule.rb
ey-core-3.5.0 lib/ey-core/models/firewall_rule.rb
ey-core-3.4.4 lib/ey-core/models/firewall_rule.rb
ey-core-3.4.2 lib/ey-core/models/firewall_rule.rb
ey-core-3.4.1 lib/ey-core/models/firewall_rule.rb
ey-core-3.4.0 lib/ey-core/models/firewall_rule.rb
ey-core-3.3.1 lib/ey-core/models/firewall_rule.rb
ey-core-3.3.0 lib/ey-core/models/firewall_rule.rb
ey-core-3.2.6 lib/ey-core/models/firewall_rule.rb
ey-core-3.2.5 lib/ey-core/models/firewall_rule.rb
ey-core-3.2.4 lib/ey-core/models/firewall_rule.rb
ey-core-3.2.3 lib/ey-core/models/firewall_rule.rb
ey-core-3.2.2 lib/ey-core/models/firewall_rule.rb
ey-core-3.2.1 lib/ey-core/models/firewall_rule.rb