Repository URL to install this package:
|
Version:
0.1.1 ▾
|
# frozen_string_literal: true
module Fortinet
# Represents a firewall address group
class FirewallGroup
def initialize(data)
@data = data
end
def self.all
Fortinet.do('get', '/api/v2/cmdb/firewall/addrgrp')['results'].map { |data| new(data) }
end
def self.get(name)
data = Fortinet.do('get', "/api/v2/cmdb/firewall/addrgrp/#{name}")['results'].first
new(data)
rescue RestClient::NotFound
nil
end
def self.create(name)
Fortinet.do('post', '/api/v2/cmdb/firewall/addrgrp', { 'name' => name, 'member' => [{ 'name' => 'none' }] })
get(name)
end
def delete
Fortinet.do('delete', "/api/v2/cmdb/firewall/addrgrp/#{@data['name']}")
end
def details
@data
end
def set(what, value)
Fortinet.do('put', "/api/v2/cmdb/firewall/addrgrp/#{@data['name']}", { 'name' => @data['name'], what => value })
end
def name
@data['name']
end
def members
@data['member'].map { |m| FirewallObject.get(m['name']) }
end
def members=(members)
if members.empty?
set('member', [{ 'name' => 'none' }])
else
set('member', members.map { |m| Hash['name', m.is_a?(FirewallObject) || m.is_a?(FirewallGroup) ? m.name : m] })
end
end
# Meta program up some nice methods
['comment'].each do |property|
define_method property do
@data[property]
end
define_method "#{property}=" do |value|
set(property, value)
end
end
end
end