From 9036dd0ef081b80f6895eeb9c7c9104f738075fd Mon Sep 17 00:00:00 2001 From: Rupak Ganguly Date: Thu, 28 Mar 2013 18:13:49 -0400 Subject: [PATCH] [hp|network] Add models for network, along with tests. --- lib/fog/hp/models/network/network.rb | 42 +++++++++++++++++++++++ lib/fog/hp/models/network/networks.rb | 35 +++++++++++++++++++ lib/fog/hp/network.rb | 4 +++ tests/hp/models/network/network_tests.rb | 25 ++++++++++++++ tests/hp/models/network/networks_tests.rb | 18 ++++++++++ 5 files changed, 124 insertions(+) create mode 100644 lib/fog/hp/models/network/network.rb create mode 100644 lib/fog/hp/models/network/networks.rb create mode 100644 tests/hp/models/network/network_tests.rb create mode 100644 tests/hp/models/network/networks_tests.rb diff --git a/lib/fog/hp/models/network/network.rb b/lib/fog/hp/models/network/network.rb new file mode 100644 index 000000000..52a73586e --- /dev/null +++ b/lib/fog/hp/models/network/network.rb @@ -0,0 +1,42 @@ +require 'fog/core/model' + +module Fog + module HP + class Network + + class Network < Fog::Model + identity :id + + attribute :name + attribute :tenant_id + attribute :status + attribute :subnets + attribute :shared + attribute :admin_state_up + attribute :router_external, :aliases => 'router:external' + + def destroy + requires :id + service.delete_network(id) + true + end + + def save + identity ? update : create + end + + def create + merge_attributes(service.create_network(attributes).body['network']) + self + end + + def update + requires :id + merge_attributes(service.update_network(id, attributes).body['network']) + self + end + + end + end + end +end diff --git a/lib/fog/hp/models/network/networks.rb b/lib/fog/hp/models/network/networks.rb new file mode 100644 index 000000000..52b82ce04 --- /dev/null +++ b/lib/fog/hp/models/network/networks.rb @@ -0,0 +1,35 @@ +require 'fog/core/collection' +require 'fog/hp/models/network/network' + +module Fog + module HP + class Network + + class Networks < Fog::Collection + + attribute :filters + + model Fog::HP::Network::Network + + def initialize(attributes) + self.filters ||= {} + super + end + + def all(filters = filters) + self.filters = filters + load(service.list_networks(filters).body['networks']) + end + + def get(network_id) + if network = service.get_network(network_id).body['network'] + new(network) + end + rescue Fog::HP::Network::NotFound + nil + end + + end + end + end +end diff --git a/lib/fog/hp/network.rb b/lib/fog/hp/network.rb index fcc68054c..4ad146651 100644 --- a/lib/fog/hp/network.rb +++ b/lib/fog/hp/network.rb @@ -11,6 +11,10 @@ module Fog secrets :hp_secret_key + model_path 'fog/hp/models/network' + model :network + collection :networks + request_path 'fog/hp/requests/network' request :add_router_interface request :associate_floating_ip diff --git a/tests/hp/models/network/network_tests.rb b/tests/hp/models/network/network_tests.rb new file mode 100644 index 000000000..e0e954d87 --- /dev/null +++ b/tests/hp/models/network/network_tests.rb @@ -0,0 +1,25 @@ +Shindo.tests('HP::Network | networking network model', ['hp', 'networking', 'network']) do + + model_tests(HP[:network].networks, {:name => 'fognetwork'}, true) + + tests('success') do + + tests('#create').succeeds do + attributes = {:name => 'my_network', :admin_state_up => true, :shared => false} + @network = HP[:network].networks.create(attributes) + @network.wait_for { ready? } unless Fog.mocking? + !@network.id.nil? + end + + tests('#update').succeeds do + @network.name = 'my_network_upd' + @network.update + end + + tests('#destroy').succeeds do + @network.destroy + end + + end + +end diff --git a/tests/hp/models/network/networks_tests.rb b/tests/hp/models/network/networks_tests.rb new file mode 100644 index 000000000..eccca7de8 --- /dev/null +++ b/tests/hp/models/network/networks_tests.rb @@ -0,0 +1,18 @@ +Shindo.tests('HP::Network | networking networks model', ['hp', 'networking', 'network']) do + + attributes = {:name => 'my_network', :admin_state_up => true, :shared => false} + collection_tests(HP[:network].networks, attributes, true) + + @network = HP[:network].networks.create(attributes) + + tests('success') do + + tests('#all(filter)').succeeds do + networks = HP[:network].networks.all({'router:external'=>true}) + networks.first.router_external == true + end + + end + + @network.destroy +end \ No newline at end of file