From 702f71d44043955b65b284b13a4be04e7d1771af Mon Sep 17 00:00:00 2001 From: =?utf8?q?Franti=C5=A1ek=20Dvo=C5=99=C3=A1k?= Date: Tue, 13 Sep 2016 16:26:01 +0200 Subject: [PATCH] Permit symbolic names in the model. --- models/network.rb | 7 ++----- models/range.rb | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/models/network.rb b/models/network.rb index 44cf15d..3e09ca3 100644 --- a/models/network.rb +++ b/models/network.rb @@ -36,10 +36,8 @@ module Now attr_accessor :zone def initialize(parameters = {}) - unless parameters.key?(:id) - raise NowError.new(500), 'ID required in network object' - end - if parameters.key?(:range) && !valid_range?(parameters[:range]) + range = parameters.key?(:range) && parameters[:range] || parameters.key?('range') && parameters['range'] + if range && !valid_range?(range) raise NowError.new(500), 'Valid range object required in network object' end super @@ -48,7 +46,6 @@ module Now # Check to see if the all the properties in the model are valid # @return true if the model is valid def valid? - return false if id.nil? return false unless valid_range?(range) return true end diff --git a/models/range.rb b/models/range.rb index 20b49b3..c390684 100644 --- a/models/range.rb +++ b/models/range.rb @@ -18,10 +18,11 @@ module Now attr_accessor :allocation def initialize(parameters = {}) - unless parameters.key?(:address) + address = parameters.key?(:address) && parameters[:address] || parameters.key?('address') && parameters['address'] + unless address raise NowError.new(500), 'Internal error: IP network address required' end - unless valid_address?(parameters[:address]) + unless valid_address?(address) raise NowError.new(500), 'Internal error: Invalid IP network address' end super @@ -71,6 +72,20 @@ module Now return h end + # Build the object from hash + # @return [Now::Range] Returns the Now object of the address range + def self.from_hash(h = {}) + p = {} + + v = (h.key?('address') && h['address']) || (h.key?(:address) && h[:address]) + p[:address] = IPAddress v if v + + v = h.key?('allocation') && h['allocation'] || h.key?(:allocation) && h[:allocation] + p[:allocation] = v if v + + new(p) + end + private def valid_address?(value) -- 1.8.2.3