fog-ecloud 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +23 -0
- data/.rubocop.yml +20 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +17 -0
- data/CONTRIBUTING.md +18 -0
- data/CONTRIBUTORS.md +16 -0
- data/Gemfile +4 -0
- data/LICENSE.md +20 -0
- data/README.md +38 -0
- data/Rakefile +18 -0
- data/fog-ecloud.gemspec +35 -0
- data/gemfiles/Gemfile.1.9.2- +8 -0
- data/gemfiles/Gemfile.1.9.3+ +7 -0
- data/lib/fog/ecloud/collection.rb +24 -0
- data/lib/fog/ecloud/compute.rb +824 -0
- data/lib/fog/ecloud/core.rb +32 -0
- data/lib/fog/ecloud/generate_collection.rb +127 -0
- data/lib/fog/ecloud/ipaddr.rb +5 -0
- data/lib/fog/ecloud/mock_data_classes.rb +766 -0
- data/lib/fog/ecloud/model.rb +20 -0
- data/lib/fog/ecloud/models/compute/admin_organization.rb +43 -0
- data/lib/fog/ecloud/models/compute/admin_organizations.rb +21 -0
- data/lib/fog/ecloud/models/compute/api_key.rb +20 -0
- data/lib/fog/ecloud/models/compute/api_keys.rb +26 -0
- data/lib/fog/ecloud/models/compute/association.rb +23 -0
- data/lib/fog/ecloud/models/compute/associations.rb +34 -0
- data/lib/fog/ecloud/models/compute/authentication_level.rb +21 -0
- data/lib/fog/ecloud/models/compute/authentication_levels.rb +26 -0
- data/lib/fog/ecloud/models/compute/backup_internet_service.rb +45 -0
- data/lib/fog/ecloud/models/compute/backup_internet_services.rb +41 -0
- data/lib/fog/ecloud/models/compute/catalog.rb +39 -0
- data/lib/fog/ecloud/models/compute/catalog_configuration.rb +22 -0
- data/lib/fog/ecloud/models/compute/catalog_configurations.rb +26 -0
- data/lib/fog/ecloud/models/compute/catalog_item.rb +24 -0
- data/lib/fog/ecloud/models/compute/compute_pool.rb +70 -0
- data/lib/fog/ecloud/models/compute/compute_pools.rb +33 -0
- data/lib/fog/ecloud/models/compute/cpu_usage_detail.rb +16 -0
- data/lib/fog/ecloud/models/compute/cpu_usage_detail_summary.rb +26 -0
- data/lib/fog/ecloud/models/compute/detached_disk.rb +27 -0
- data/lib/fog/ecloud/models/compute/detached_disks.rb +26 -0
- data/lib/fog/ecloud/models/compute/environment.rb +111 -0
- data/lib/fog/ecloud/models/compute/environments.rb +39 -0
- data/lib/fog/ecloud/models/compute/firewall_acl.rb +27 -0
- data/lib/fog/ecloud/models/compute/firewall_acls.rb +27 -0
- data/lib/fog/ecloud/models/compute/group.rb +41 -0
- data/lib/fog/ecloud/models/compute/groups.rb +38 -0
- data/lib/fog/ecloud/models/compute/guest_process.rb +15 -0
- data/lib/fog/ecloud/models/compute/guest_processes.rb +26 -0
- data/lib/fog/ecloud/models/compute/hardware_configuration.rb +18 -0
- data/lib/fog/ecloud/models/compute/hardware_configurations.rb +26 -0
- data/lib/fog/ecloud/models/compute/internet_service.rb +97 -0
- data/lib/fog/ecloud/models/compute/internet_services.rb +44 -0
- data/lib/fog/ecloud/models/compute/ip_address.rb +39 -0
- data/lib/fog/ecloud/models/compute/ip_addresses.rb +32 -0
- data/lib/fog/ecloud/models/compute/layout.rb +20 -0
- data/lib/fog/ecloud/models/compute/layouts.rb +26 -0
- data/lib/fog/ecloud/models/compute/location.rb +22 -0
- data/lib/fog/ecloud/models/compute/locations.rb +28 -0
- data/lib/fog/ecloud/models/compute/login_banner.rb +16 -0
- data/lib/fog/ecloud/models/compute/login_banners.rb +26 -0
- data/lib/fog/ecloud/models/compute/memory_usage_detail.rb +16 -0
- data/lib/fog/ecloud/models/compute/memory_usage_detail_summary.rb +26 -0
- data/lib/fog/ecloud/models/compute/monitor.rb +46 -0
- data/lib/fog/ecloud/models/compute/monitors.rb +30 -0
- data/lib/fog/ecloud/models/compute/network.rb +46 -0
- data/lib/fog/ecloud/models/compute/networks.rb +32 -0
- data/lib/fog/ecloud/models/compute/node.rb +45 -0
- data/lib/fog/ecloud/models/compute/nodes.rb +42 -0
- data/lib/fog/ecloud/models/compute/operating_system.rb +16 -0
- data/lib/fog/ecloud/models/compute/operating_system_families.rb +26 -0
- data/lib/fog/ecloud/models/compute/operating_system_family.rb +21 -0
- data/lib/fog/ecloud/models/compute/operating_systems.rb +25 -0
- data/lib/fog/ecloud/models/compute/organization.rb +78 -0
- data/lib/fog/ecloud/models/compute/organizations.rb +38 -0
- data/lib/fog/ecloud/models/compute/password_complexity_rule.rb +49 -0
- data/lib/fog/ecloud/models/compute/password_complexity_rules.rb +26 -0
- data/lib/fog/ecloud/models/compute/physical_device.rb +21 -0
- data/lib/fog/ecloud/models/compute/physical_devices.rb +26 -0
- data/lib/fog/ecloud/models/compute/public_ip.rb +26 -0
- data/lib/fog/ecloud/models/compute/public_ips.rb +31 -0
- data/lib/fog/ecloud/models/compute/rnat.rb +27 -0
- data/lib/fog/ecloud/models/compute/rnats.rb +26 -0
- data/lib/fog/ecloud/models/compute/role.rb +23 -0
- data/lib/fog/ecloud/models/compute/roles.rb +36 -0
- data/lib/fog/ecloud/models/compute/row.rb +56 -0
- data/lib/fog/ecloud/models/compute/rows.rb +39 -0
- data/lib/fog/ecloud/models/compute/server.rb +323 -0
- data/lib/fog/ecloud/models/compute/server_configuration_option.rb +16 -0
- data/lib/fog/ecloud/models/compute/server_configuration_options.rb +26 -0
- data/lib/fog/ecloud/models/compute/servers.rb +65 -0
- data/lib/fog/ecloud/models/compute/ssh_key.rb +19 -0
- data/lib/fog/ecloud/models/compute/ssh_keys.rb +26 -0
- data/lib/fog/ecloud/models/compute/storage_usage_detail.rb +16 -0
- data/lib/fog/ecloud/models/compute/storage_usage_detail_summary.rb +26 -0
- data/lib/fog/ecloud/models/compute/support_ticket.rb +28 -0
- data/lib/fog/ecloud/models/compute/support_tickets.rb +26 -0
- data/lib/fog/ecloud/models/compute/tag.rb +13 -0
- data/lib/fog/ecloud/models/compute/tags.rb +26 -0
- data/lib/fog/ecloud/models/compute/task.rb +23 -0
- data/lib/fog/ecloud/models/compute/tasks.rb +29 -0
- data/lib/fog/ecloud/models/compute/template.rb +23 -0
- data/lib/fog/ecloud/models/compute/templates.rb +41 -0
- data/lib/fog/ecloud/models/compute/trusted_network_group.rb +33 -0
- data/lib/fog/ecloud/models/compute/trusted_network_groups.rb +27 -0
- data/lib/fog/ecloud/models/compute/user.rb +35 -0
- data/lib/fog/ecloud/models/compute/users.rb +26 -0
- data/lib/fog/ecloud/models/compute/virtual_machine_assigned_ip.rb +32 -0
- data/lib/fog/ecloud/models/compute/virtual_machine_assigned_ips.rb +26 -0
- data/lib/fog/ecloud/requests/compute/admin_disable_support_access.rb +9 -0
- data/lib/fog/ecloud/requests/compute/admin_edit_authentication_levels.rb +32 -0
- data/lib/fog/ecloud/requests/compute/admin_edit_login_banner.rb +30 -0
- data/lib/fog/ecloud/requests/compute/admin_edit_password_complexity_rules.rb +72 -0
- data/lib/fog/ecloud/requests/compute/admin_enable_support_access.rb +9 -0
- data/lib/fog/ecloud/requests/compute/backup_internet_service_create.rb +47 -0
- data/lib/fog/ecloud/requests/compute/backup_internet_service_delete.rb +9 -0
- data/lib/fog/ecloud/requests/compute/backup_internet_service_edit.rb +47 -0
- data/lib/fog/ecloud/requests/compute/compute_pool_edit.rb +35 -0
- data/lib/fog/ecloud/requests/compute/firewall_acls_create.rb +78 -0
- data/lib/fog/ecloud/requests/compute/firewall_acls_delete.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_admin_organization.rb +23 -0
- data/lib/fog/ecloud/requests/compute/get_api_key.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_api_keys.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_association.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_associations.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_authentication_level.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_authentication_levels.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_backup_internet_service.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_backup_internet_services.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_catalog.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_catalog_configuration.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_catalog_configurations.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_catalog_item.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_compute_pool.rb +21 -0
- data/lib/fog/ecloud/requests/compute/get_compute_pools.rb +31 -0
- data/lib/fog/ecloud/requests/compute/get_cpu_usage_detail.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_cpu_usage_detail_summary.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_detached_disk.rb +21 -0
- data/lib/fog/ecloud/requests/compute/get_detached_disks.rb +31 -0
- data/lib/fog/ecloud/requests/compute/get_environment.rb +31 -0
- data/lib/fog/ecloud/requests/compute/get_environments.rb +0 -0
- data/lib/fog/ecloud/requests/compute/get_firewall_acl.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_firewall_acls.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_group.rb +18 -0
- data/lib/fog/ecloud/requests/compute/get_groups.rb +18 -0
- data/lib/fog/ecloud/requests/compute/get_guest_process.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_guest_processes.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_hardware_configuration.rb +29 -0
- data/lib/fog/ecloud/requests/compute/get_hardware_configurations.rb +14 -0
- data/lib/fog/ecloud/requests/compute/get_internet_service.rb +21 -0
- data/lib/fog/ecloud/requests/compute/get_internet_services.rb +18 -0
- data/lib/fog/ecloud/requests/compute/get_ip_address.rb +20 -0
- data/lib/fog/ecloud/requests/compute/get_layout.rb +18 -0
- data/lib/fog/ecloud/requests/compute/get_layouts.rb +18 -0
- data/lib/fog/ecloud/requests/compute/get_location.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_locations.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_login_banner.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_login_banners.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_memory_usage_detail.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_memory_usage_detail_summary.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_monitor.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_monitors.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_network.rb +21 -0
- data/lib/fog/ecloud/requests/compute/get_network_summary.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_networks.rb +30 -0
- data/lib/fog/ecloud/requests/compute/get_node.rb +21 -0
- data/lib/fog/ecloud/requests/compute/get_nodes.rb +18 -0
- data/lib/fog/ecloud/requests/compute/get_operating_system.rb +24 -0
- data/lib/fog/ecloud/requests/compute/get_operating_system_families.rb +30 -0
- data/lib/fog/ecloud/requests/compute/get_organization.rb +24 -0
- data/lib/fog/ecloud/requests/compute/get_organizations.rb +23 -0
- data/lib/fog/ecloud/requests/compute/get_password_complexity_rule.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_password_complexity_rules.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_physical_device.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_physical_devices.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_process.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_processes.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_public_ip.rb +21 -0
- data/lib/fog/ecloud/requests/compute/get_public_ips.rb +31 -0
- data/lib/fog/ecloud/requests/compute/get_rnat.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_rnats.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_role.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_roles.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_row.rb +18 -0
- data/lib/fog/ecloud/requests/compute/get_rows.rb +12 -0
- data/lib/fog/ecloud/requests/compute/get_server.rb +21 -0
- data/lib/fog/ecloud/requests/compute/get_server_configuration_option.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_server_configuration_options.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_servers.rb +42 -0
- data/lib/fog/ecloud/requests/compute/get_ssh_key.rb +21 -0
- data/lib/fog/ecloud/requests/compute/get_ssh_keys.rb +30 -0
- data/lib/fog/ecloud/requests/compute/get_storage_usage_detail.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_storage_usage_detail_summary.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_support_ticket.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_support_tickets.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_tag.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_tags.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_task.rb +13 -0
- data/lib/fog/ecloud/requests/compute/get_tasks.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_template.rb +21 -0
- data/lib/fog/ecloud/requests/compute/get_templates.rb +48 -0
- data/lib/fog/ecloud/requests/compute/get_trusted_network_group.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_trusted_network_groups.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_user.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_users.rb +9 -0
- data/lib/fog/ecloud/requests/compute/get_virtual_machine_assigned_ips.rb +42 -0
- data/lib/fog/ecloud/requests/compute/groups_create.rb +31 -0
- data/lib/fog/ecloud/requests/compute/groups_delete.rb +26 -0
- data/lib/fog/ecloud/requests/compute/groups_edit.rb +29 -0
- data/lib/fog/ecloud/requests/compute/groups_movedown.rb +9 -0
- data/lib/fog/ecloud/requests/compute/groups_moveup.rb +9 -0
- data/lib/fog/ecloud/requests/compute/internet_service_create.rb +102 -0
- data/lib/fog/ecloud/requests/compute/internet_service_delete.rb +33 -0
- data/lib/fog/ecloud/requests/compute/internet_service_edit.rb +58 -0
- data/lib/fog/ecloud/requests/compute/monitors_create_default.rb +9 -0
- data/lib/fog/ecloud/requests/compute/monitors_create_ecv.rb +40 -0
- data/lib/fog/ecloud/requests/compute/monitors_create_http.rb +44 -0
- data/lib/fog/ecloud/requests/compute/monitors_create_loopback.rb +9 -0
- data/lib/fog/ecloud/requests/compute/monitors_create_ping.rb +35 -0
- data/lib/fog/ecloud/requests/compute/monitors_disable.rb +9 -0
- data/lib/fog/ecloud/requests/compute/monitors_edit_ecv.rb +40 -0
- data/lib/fog/ecloud/requests/compute/monitors_edit_http.rb +44 -0
- data/lib/fog/ecloud/requests/compute/monitors_edit_ping.rb +35 -0
- data/lib/fog/ecloud/requests/compute/monitors_enable.rb +9 -0
- data/lib/fog/ecloud/requests/compute/node_service_create.rb +93 -0
- data/lib/fog/ecloud/requests/compute/node_service_delete.rb +33 -0
- data/lib/fog/ecloud/requests/compute/node_service_edit.rb +39 -0
- data/lib/fog/ecloud/requests/compute/power_off.rb +9 -0
- data/lib/fog/ecloud/requests/compute/power_on.rb +9 -0
- data/lib/fog/ecloud/requests/compute/power_reset.rb +9 -0
- data/lib/fog/ecloud/requests/compute/power_shutdown.rb +9 -0
- data/lib/fog/ecloud/requests/compute/public_ip_activate.rb +9 -0
- data/lib/fog/ecloud/requests/compute/rnat_associations_create_device.rb +32 -0
- data/lib/fog/ecloud/requests/compute/rnat_associations_delete.rb +9 -0
- data/lib/fog/ecloud/requests/compute/rnat_associations_edit_network.rb +31 -0
- data/lib/fog/ecloud/requests/compute/rows_create.rb +29 -0
- data/lib/fog/ecloud/requests/compute/rows_delete.rb +21 -0
- data/lib/fog/ecloud/requests/compute/rows_edit.rb +29 -0
- data/lib/fog/ecloud/requests/compute/rows_movedown.rb +9 -0
- data/lib/fog/ecloud/requests/compute/rows_moveup.rb +9 -0
- data/lib/fog/ecloud/requests/compute/trusted_network_groups_create.rb +51 -0
- data/lib/fog/ecloud/requests/compute/trusted_network_groups_delete.rb +9 -0
- data/lib/fog/ecloud/requests/compute/trusted_network_groups_edit.rb +51 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_attach_disk.rb +61 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_copy.rb +116 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_copy_identical.rb +43 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_create_from_template.rb +244 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_delete.rb +46 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_detach_disk.rb +70 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_edit.rb +45 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_edit_assigned_ips.rb +80 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_edit_hardware_configuration.rb +75 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_import.rb +179 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_upload_file.rb +28 -0
- data/lib/fog/ecloud/version.rb +5 -0
- data/lib/fog/ecloud.rb +8 -0
- data/spec/minitest_helper.rb +31 -0
- data/tests/compute/helper.rb +27 -0
- data/tests/compute/models/admin_organization_tests.rb +16 -0
- data/tests/compute/models/compute_pool_tests.rb +17 -0
- data/tests/compute/models/detached_disk_tests.rb +26 -0
- data/tests/compute/models/environment_tests.rb +23 -0
- data/tests/compute/models/internet_service_tests.rb +28 -0
- data/tests/compute/models/ip_address_tests.rb +19 -0
- data/tests/compute/models/network_tests.rb +17 -0
- data/tests/compute/models/operating_system_families_tests.rb +13 -0
- data/tests/compute/models/operating_system_tests.rb +22 -0
- data/tests/compute/models/organization_tests.rb +21 -0
- data/tests/compute/models/public_ip_tests.rb +19 -0
- data/tests/compute/models/server_tests.rb +25 -0
- data/tests/compute/models/ssh_key_tests.rb +19 -0
- data/tests/compute/models/template_tests.rb +20 -0
- data/tests/helper.rb +24 -0
- data/tests/helpers/collection_helper.rb +97 -0
- data/tests/helpers/compute/flavors_helper.rb +32 -0
- data/tests/helpers/compute/server_helper.rb +25 -0
- data/tests/helpers/compute/servers_helper.rb +10 -0
- data/tests/helpers/formats_helper.rb +98 -0
- data/tests/helpers/formats_helper_tests.rb +110 -0
- data/tests/helpers/mock_helper.rb +115 -0
- data/tests/helpers/model_helper.rb +31 -0
- data/tests/helpers/responds_to_helper.rb +11 -0
- data/tests/helpers/schema_validator_tests.rb +107 -0
- data/tests/helpers/succeeds_helper.rb +9 -0
- metadata +457 -0
|
@@ -0,0 +1,766 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Ecloud
|
|
3
|
+
module MockDataClasses
|
|
4
|
+
class Base < Hash
|
|
5
|
+
def self.base_url=(url)
|
|
6
|
+
@base_url = url
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
self.base_url = "http://vcloud.example.com"
|
|
10
|
+
|
|
11
|
+
def self.base_url
|
|
12
|
+
@base_url
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def first
|
|
16
|
+
raise "Don't do this"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def last
|
|
20
|
+
raise "Don't do this"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def initialize(data = {}, parent = nil)
|
|
24
|
+
@parent = parent
|
|
25
|
+
|
|
26
|
+
replace(data)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def _parent
|
|
30
|
+
@parent
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def base_url
|
|
34
|
+
Base.base_url
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def href
|
|
38
|
+
[base_url, self.class.name.split("::").last, object_id].join("/")
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def inspect
|
|
42
|
+
"<#{self.class.name} #{object_id} data=#{super}>"
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
class MockData < Base
|
|
47
|
+
def versions
|
|
48
|
+
@versions ||= []
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def organizations
|
|
52
|
+
@organizations ||= []
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def organization_collection_from_href(href)
|
|
56
|
+
find_href_in(href, all_organizations)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def all_organizations
|
|
60
|
+
organizations.map(&:environments).flatten
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def organization_from_href(href)
|
|
64
|
+
find_href_in(href, all_organizations)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def all_vdcs
|
|
68
|
+
organizations.map(&:environments).flatten
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def vdc_from_href(href)
|
|
72
|
+
find_href_in(href, all_vdcs)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def all_catalogs
|
|
76
|
+
all_vdcs.map(&:catalog).flatten
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def catalog_from_href(href)
|
|
80
|
+
find_href_in(href, all_catalogs)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def all_catalog_items
|
|
84
|
+
all_catalogs.map(&:items).flatten
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def catalog_item_from_href(href)
|
|
88
|
+
find_href_in(href, all_catalog_items)
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def all_virtual_machines
|
|
92
|
+
all_vdcs.map(&:virtual_machines).flatten
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def virtual_machine_from_href(href)
|
|
96
|
+
find_href_prefixed_in(href, all_virtual_machines)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def all_networks
|
|
100
|
+
all_vdcs.map(&:networks).flatten
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def network_from_href(href)
|
|
104
|
+
find_href_in(href, all_networks)
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
def all_network_extensions
|
|
108
|
+
all_networks.map(&:extensions).flatten
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def network_extension_from_href(href)
|
|
112
|
+
find_href_in(href, all_network_extensions)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def all_vdc_internet_service_collections
|
|
116
|
+
all_vdcs.map(&:internet_service_collection).flatten
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def vdc_internet_service_collection_from_href(href)
|
|
120
|
+
find_href_in(href, all_vdc_internet_service_collections)
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
def all_backup_internet_services
|
|
124
|
+
all_vdc_internet_service_collections.map(&:backup_internet_services).flatten
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def backup_internet_service_from_href(href)
|
|
128
|
+
find_href_in(href, all_backup_internet_services)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def all_public_ip_collections
|
|
132
|
+
all_vdcs.map {|v| v.public_ip_collection }.flatten
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def public_ip_collection_from_href(href)
|
|
136
|
+
find_href_in(href, all_public_ip_collections)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def all_public_ips
|
|
140
|
+
all_public_ip_collections.map(&:items).flatten
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def public_ip_from_href(href)
|
|
144
|
+
find_href_in(href, all_public_ips)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def all_public_ip_internet_service_collections
|
|
148
|
+
all_public_ips.map(&:internet_service_collection).flatten
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def public_ip_internet_service_collection_from_href(href)
|
|
152
|
+
find_href_in(href, all_public_ip_internet_service_collections)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def all_public_ip_internet_services
|
|
156
|
+
all_public_ip_internet_service_collections.map(&:items).flatten
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def public_ip_internet_service_from_href(href)
|
|
160
|
+
find_href_in(href, all_public_ip_internet_services)
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def all_public_ip_internet_service_node_collections
|
|
164
|
+
all_public_ip_internet_services.map(&:node_collection).flatten
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def public_ip_internet_service_node_collection_from_href(href)
|
|
168
|
+
find_href_in(href, all_public_ip_internet_service_node_collections)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def all_public_ip_internet_service_nodes
|
|
172
|
+
all_public_ip_internet_service_node_collections.map(&:items).flatten
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def public_ip_internet_service_node_from_href(href)
|
|
176
|
+
find_href_in(href, all_public_ip_internet_service_nodes)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def all_network_ip_collections
|
|
180
|
+
all_networks.map(&:ip_collection)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def network_ip_collection_from_href(href)
|
|
184
|
+
find_href_in(href, all_network_ip_collections)
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def all_network_ips
|
|
188
|
+
all_network_ip_collections.map {|c| c.items.values }.flatten
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def network_ip_from_href(href)
|
|
192
|
+
find_href_in(href, all_network_ips)
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
private
|
|
196
|
+
|
|
197
|
+
def find_href_in(href, objects)
|
|
198
|
+
objects.find {|o| o.href == href }
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
def find_href_prefixed_in(href, objects)
|
|
202
|
+
objects.find {|o| href =~ %r{^#{o.href}($|/)} }
|
|
203
|
+
end
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
class MockVersion < Base
|
|
207
|
+
def version
|
|
208
|
+
self[:version]
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
def supported
|
|
212
|
+
!!self[:supported]
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
def login_url
|
|
216
|
+
href
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
class MockOrganization < Base
|
|
221
|
+
def name
|
|
222
|
+
self[:name]
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
def environments
|
|
226
|
+
@vdcs ||= []
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
class MockVdc < Base
|
|
231
|
+
def name
|
|
232
|
+
self[:name]
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
def storage_allocated
|
|
236
|
+
self[:storage_allocated] || 200
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
def storage_used
|
|
240
|
+
self[:storage_used] || 105
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
def cpu_allocated
|
|
244
|
+
self[:cpu_allocated] || 10000
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
def memory_allocated
|
|
248
|
+
self[:memory_allocated] || 20480
|
|
249
|
+
end
|
|
250
|
+
|
|
251
|
+
def catalog
|
|
252
|
+
@catalog ||= MockCatalog.new({}, self)
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
def networks
|
|
256
|
+
@networks ||= []
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def virtual_machines
|
|
260
|
+
@virtual_machines ||= []
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
def task_list
|
|
264
|
+
@task_list ||= MockTaskList.new({}, self)
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
# for TM eCloud, should probably be subclassed
|
|
268
|
+
def public_ip_collection
|
|
269
|
+
@public_ip_collection ||= MockPublicIps.new({}, self)
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
def internet_service_collection
|
|
273
|
+
@internet_service_collection ||= MockVdcInternetServices.new({}, self)
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
def firewall_acls
|
|
277
|
+
@firewall_acls ||= MockFirewallAcls.new({}, self)
|
|
278
|
+
end
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
class MockTaskList < Base
|
|
282
|
+
def name
|
|
283
|
+
self[:name] || "Tasks List"
|
|
284
|
+
end
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
class MockCatalog < Base
|
|
288
|
+
def name
|
|
289
|
+
self[:name] || "Catalog"
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
def items
|
|
293
|
+
@items ||= []
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
class MockCatalogItem < Base
|
|
298
|
+
def name
|
|
299
|
+
self[:name]
|
|
300
|
+
end
|
|
301
|
+
|
|
302
|
+
def disks
|
|
303
|
+
@disks ||= MockVirtualMachineDisks.new(self)
|
|
304
|
+
end
|
|
305
|
+
|
|
306
|
+
def customization
|
|
307
|
+
@customization ||= MockCatalogItemCustomization.new({}, self)
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
def vapp_template
|
|
311
|
+
@vapp_template ||= MockCatalogItemVappTemplate.new({ :name => name }, self)
|
|
312
|
+
end
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
class MockCatalogItemCustomization < Base
|
|
316
|
+
def name
|
|
317
|
+
self[:name] || "Customization Options"
|
|
318
|
+
end
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
class MockCatalogItemVappTemplate < Base
|
|
322
|
+
def name
|
|
323
|
+
self[:name]
|
|
324
|
+
end
|
|
325
|
+
end
|
|
326
|
+
|
|
327
|
+
class MockNetwork < Base
|
|
328
|
+
def name
|
|
329
|
+
self[:name] || subnet
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
def subnet
|
|
333
|
+
self[:subnet]
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
def gateway
|
|
337
|
+
self[:gateway] || subnet_ips[1]
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
def netmask
|
|
341
|
+
self[:netmask] || subnet_ipaddr.mask
|
|
342
|
+
end
|
|
343
|
+
|
|
344
|
+
def dns
|
|
345
|
+
"8.8.8.8"
|
|
346
|
+
end
|
|
347
|
+
|
|
348
|
+
def features
|
|
349
|
+
[
|
|
350
|
+
{ :type => :FenceMode, :value => "isolated" }
|
|
351
|
+
]
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
def ip_collection
|
|
355
|
+
@ip_collection ||= MockNetworkIps.new({}, self)
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
def extensions
|
|
359
|
+
@extensions ||= MockNetworkExtensions.new({}, self)
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
def random_ip
|
|
363
|
+
usable_subnet_ips[rand(usable_subnet_ips.length)]
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
# for TM eCloud. should probably be a subclass
|
|
367
|
+
def rnat
|
|
368
|
+
self[:rnat]
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
def usable_subnet_ips
|
|
372
|
+
subnet_ips[3..-2]
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
def address
|
|
376
|
+
subnet_ips.first
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
def broadcast
|
|
380
|
+
subnet_ips.last
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
private
|
|
384
|
+
|
|
385
|
+
def subnet_ipaddr
|
|
386
|
+
@ipaddr ||= IPAddr.new(subnet)
|
|
387
|
+
end
|
|
388
|
+
|
|
389
|
+
def subnet_ips
|
|
390
|
+
subnet_ipaddr.to_range.to_a.map(&:to_s)
|
|
391
|
+
end
|
|
392
|
+
end
|
|
393
|
+
|
|
394
|
+
class MockNetworkIps < Base
|
|
395
|
+
def items
|
|
396
|
+
@items ||= _parent.usable_subnet_ips.reduce({}) do |out, subnet_ip|
|
|
397
|
+
out.update(subnet_ip => MockNetworkIp.new({ :ip => subnet_ip }, self))
|
|
398
|
+
end
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
def ordered_ips
|
|
402
|
+
items.values.sort_by {|i| i.ip.split(".").map(&:to_i) }
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
def name
|
|
406
|
+
"IP Addresses"
|
|
407
|
+
end
|
|
408
|
+
end
|
|
409
|
+
|
|
410
|
+
class MockNetworkIp < Base
|
|
411
|
+
def name
|
|
412
|
+
self[:name] || ip
|
|
413
|
+
end
|
|
414
|
+
|
|
415
|
+
def ip
|
|
416
|
+
self[:ip]
|
|
417
|
+
end
|
|
418
|
+
|
|
419
|
+
def used_by
|
|
420
|
+
self[:used_by] || _parent._parent._parent.virtual_machines.find {|v| v.ip == ip }
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
def status
|
|
424
|
+
if used_by
|
|
425
|
+
"Assigned"
|
|
426
|
+
else
|
|
427
|
+
"Available"
|
|
428
|
+
end
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
def rnat
|
|
432
|
+
self[:rnat] || _parent._parent.rnat
|
|
433
|
+
end
|
|
434
|
+
|
|
435
|
+
def rnat_set?
|
|
436
|
+
!!self[:rnat]
|
|
437
|
+
end
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
class MockNetworkExtensions < Base
|
|
441
|
+
def name
|
|
442
|
+
_parent.name
|
|
443
|
+
end
|
|
444
|
+
|
|
445
|
+
def gateway
|
|
446
|
+
_parent.gateway
|
|
447
|
+
end
|
|
448
|
+
|
|
449
|
+
def broadcast
|
|
450
|
+
_parent.broadcast
|
|
451
|
+
end
|
|
452
|
+
|
|
453
|
+
def address
|
|
454
|
+
_parent.address
|
|
455
|
+
end
|
|
456
|
+
|
|
457
|
+
def rnat
|
|
458
|
+
_parent.rnat
|
|
459
|
+
end
|
|
460
|
+
|
|
461
|
+
def type
|
|
462
|
+
self[:type] || "DMZ"
|
|
463
|
+
end
|
|
464
|
+
|
|
465
|
+
def vlan
|
|
466
|
+
object_id.to_s
|
|
467
|
+
end
|
|
468
|
+
|
|
469
|
+
def friendly_name
|
|
470
|
+
"#{name} (#{type}_#{object_id})"
|
|
471
|
+
end
|
|
472
|
+
end
|
|
473
|
+
|
|
474
|
+
class MockVirtualMachine < Base
|
|
475
|
+
def name
|
|
476
|
+
self[:name]
|
|
477
|
+
end
|
|
478
|
+
|
|
479
|
+
def ip
|
|
480
|
+
self[:ip]
|
|
481
|
+
end
|
|
482
|
+
|
|
483
|
+
def cpus
|
|
484
|
+
self[:cpus] || 1
|
|
485
|
+
end
|
|
486
|
+
|
|
487
|
+
def memory
|
|
488
|
+
self[:memory] || 1024
|
|
489
|
+
end
|
|
490
|
+
|
|
491
|
+
def disks
|
|
492
|
+
@disks ||= MockVirtualMachineDisks.new(self)
|
|
493
|
+
end
|
|
494
|
+
|
|
495
|
+
def status
|
|
496
|
+
self[:status] || 2
|
|
497
|
+
end
|
|
498
|
+
|
|
499
|
+
def power_off!
|
|
500
|
+
self[:status] = 2
|
|
501
|
+
end
|
|
502
|
+
|
|
503
|
+
def power_on!
|
|
504
|
+
self[:status] = 4
|
|
505
|
+
end
|
|
506
|
+
|
|
507
|
+
def size
|
|
508
|
+
disks.reduce(0) {|s, d| s + d.vcloud_size }
|
|
509
|
+
end
|
|
510
|
+
|
|
511
|
+
def network_ip
|
|
512
|
+
if network = _parent.networks.find {|n| n.ip_collection.items[ip] }
|
|
513
|
+
network.ip_collection.items[ip]
|
|
514
|
+
end
|
|
515
|
+
end
|
|
516
|
+
|
|
517
|
+
# from fog ecloud server's _compose_vapp_data
|
|
518
|
+
def to_configure_vapp_hash
|
|
519
|
+
{
|
|
520
|
+
:name => name,
|
|
521
|
+
:cpus => cpus,
|
|
522
|
+
:memory => memory,
|
|
523
|
+
:disks => disks.map {|d| { :number => d.address.to_s, :size => d.vcloud_size, :resource => d.vcloud_size.to_s } }
|
|
524
|
+
}
|
|
525
|
+
end
|
|
526
|
+
|
|
527
|
+
def href(purpose = :base)
|
|
528
|
+
case purpose
|
|
529
|
+
when :base
|
|
530
|
+
super()
|
|
531
|
+
when :power_on
|
|
532
|
+
super() + "/power/action/powerOn"
|
|
533
|
+
when :power_off
|
|
534
|
+
super() + "/power/action/powerOff"
|
|
535
|
+
end
|
|
536
|
+
end
|
|
537
|
+
end
|
|
538
|
+
|
|
539
|
+
class MockVirtualMachineDisks < Array
|
|
540
|
+
def initialize(parent = nil)
|
|
541
|
+
@parent = parent
|
|
542
|
+
end
|
|
543
|
+
|
|
544
|
+
def _parent
|
|
545
|
+
@parent
|
|
546
|
+
end
|
|
547
|
+
|
|
548
|
+
def <<(disk)
|
|
549
|
+
next_address = 0
|
|
550
|
+
disk_with_max_address = max {|a, b| a[:address] <=> b[:address] }
|
|
551
|
+
disk_with_max_address && next_address = disk_with_max_address.address + 1
|
|
552
|
+
disk[:address] ||= next_address
|
|
553
|
+
|
|
554
|
+
super(disk)
|
|
555
|
+
|
|
556
|
+
if (addresses = map {|d| d.address }).uniq.size != size
|
|
557
|
+
raise "Duplicate disk address in: #{addresses.inspect} (#{size})"
|
|
558
|
+
end
|
|
559
|
+
|
|
560
|
+
sort! {|a, b| a.address <=> b.address }
|
|
561
|
+
self
|
|
562
|
+
end
|
|
563
|
+
|
|
564
|
+
def at_address(address)
|
|
565
|
+
find {|d| d.address == address }
|
|
566
|
+
end
|
|
567
|
+
end
|
|
568
|
+
|
|
569
|
+
class MockVirtualMachineDisk < Base
|
|
570
|
+
def size
|
|
571
|
+
self[:size].to_i
|
|
572
|
+
end
|
|
573
|
+
|
|
574
|
+
def vcloud_size
|
|
575
|
+
# kilobytes
|
|
576
|
+
size * 1024
|
|
577
|
+
end
|
|
578
|
+
|
|
579
|
+
def address
|
|
580
|
+
self[:address].to_i
|
|
581
|
+
end
|
|
582
|
+
end
|
|
583
|
+
|
|
584
|
+
# for Terremark eCloud
|
|
585
|
+
|
|
586
|
+
class MockVdcInternetServices < Base
|
|
587
|
+
def href
|
|
588
|
+
_parent.href + "/internetServices"
|
|
589
|
+
end
|
|
590
|
+
|
|
591
|
+
def name
|
|
592
|
+
"Internet Services"
|
|
593
|
+
end
|
|
594
|
+
|
|
595
|
+
def items
|
|
596
|
+
public_ip_internet_services + backup_internet_services
|
|
597
|
+
end
|
|
598
|
+
|
|
599
|
+
def public_ip_internet_services
|
|
600
|
+
_parent.public_ip_collection.items.reduce([]) do |services, public_ip|
|
|
601
|
+
services + public_ip.internet_service_collection.items
|
|
602
|
+
end
|
|
603
|
+
end
|
|
604
|
+
|
|
605
|
+
def backup_internet_services
|
|
606
|
+
@backup_internet_services ||= []
|
|
607
|
+
end
|
|
608
|
+
end
|
|
609
|
+
|
|
610
|
+
class MockBackupInternetService < Base
|
|
611
|
+
def name
|
|
612
|
+
self[:name] || "Backup Internet Service #{object_id}"
|
|
613
|
+
end
|
|
614
|
+
|
|
615
|
+
def protocol
|
|
616
|
+
self[:protocol]
|
|
617
|
+
end
|
|
618
|
+
|
|
619
|
+
def port
|
|
620
|
+
0
|
|
621
|
+
end
|
|
622
|
+
|
|
623
|
+
def enabled
|
|
624
|
+
self[:enabled].to_s.downcase != "false"
|
|
625
|
+
end
|
|
626
|
+
|
|
627
|
+
def timeout
|
|
628
|
+
self[:timeout] || 2
|
|
629
|
+
end
|
|
630
|
+
|
|
631
|
+
def description
|
|
632
|
+
self[:description] || "Description for Backup Service #{name}"
|
|
633
|
+
end
|
|
634
|
+
|
|
635
|
+
def redirect_url
|
|
636
|
+
nil
|
|
637
|
+
end
|
|
638
|
+
|
|
639
|
+
def node_collection
|
|
640
|
+
@node_collection ||= MockPublicIpInternetServiceNodes.new({}, self)
|
|
641
|
+
end
|
|
642
|
+
end
|
|
643
|
+
|
|
644
|
+
class MockFirewallAcls < Base
|
|
645
|
+
def name
|
|
646
|
+
"Firewall Access List"
|
|
647
|
+
end
|
|
648
|
+
end
|
|
649
|
+
|
|
650
|
+
class MockPublicIps < Base
|
|
651
|
+
def name
|
|
652
|
+
self[:name] || "Public IPs"
|
|
653
|
+
end
|
|
654
|
+
|
|
655
|
+
def items
|
|
656
|
+
@items ||= []
|
|
657
|
+
end
|
|
658
|
+
end
|
|
659
|
+
|
|
660
|
+
class MockPublicIp < Base
|
|
661
|
+
def name
|
|
662
|
+
self[:name]
|
|
663
|
+
end
|
|
664
|
+
|
|
665
|
+
def internet_service_collection
|
|
666
|
+
@internet_service_collection ||= MockPublicIpInternetServices.new({}, self)
|
|
667
|
+
end
|
|
668
|
+
end
|
|
669
|
+
|
|
670
|
+
class MockPublicIpInternetServices < Base
|
|
671
|
+
def href
|
|
672
|
+
_parent.href + "/internetServices"
|
|
673
|
+
end
|
|
674
|
+
|
|
675
|
+
def items
|
|
676
|
+
@items ||= []
|
|
677
|
+
end
|
|
678
|
+
end
|
|
679
|
+
|
|
680
|
+
class MockPublicIpInternetService < Base
|
|
681
|
+
def name
|
|
682
|
+
self[:name] || "Public IP Service #{object_id}"
|
|
683
|
+
end
|
|
684
|
+
|
|
685
|
+
def description
|
|
686
|
+
self[:description] || "Description for Public IP Service #{name}"
|
|
687
|
+
end
|
|
688
|
+
|
|
689
|
+
def protocol
|
|
690
|
+
self[:protocol]
|
|
691
|
+
end
|
|
692
|
+
|
|
693
|
+
def port
|
|
694
|
+
self[:port]
|
|
695
|
+
end
|
|
696
|
+
|
|
697
|
+
def enabled
|
|
698
|
+
!!self[:enabled]
|
|
699
|
+
end
|
|
700
|
+
|
|
701
|
+
def redirect_url
|
|
702
|
+
self[:redirect_url]
|
|
703
|
+
end
|
|
704
|
+
|
|
705
|
+
def timeout
|
|
706
|
+
self[:timeout] || 2
|
|
707
|
+
end
|
|
708
|
+
|
|
709
|
+
def node_collection
|
|
710
|
+
@node_collection ||= MockPublicIpInternetServiceNodes.new({}, self)
|
|
711
|
+
end
|
|
712
|
+
|
|
713
|
+
def monitor
|
|
714
|
+
nil
|
|
715
|
+
end
|
|
716
|
+
|
|
717
|
+
def backup_service
|
|
718
|
+
self[:backup_service]
|
|
719
|
+
end
|
|
720
|
+
end
|
|
721
|
+
|
|
722
|
+
class MockPublicIpInternetServiceNodes < Base
|
|
723
|
+
def href
|
|
724
|
+
_parent.href + "/nodeServices"
|
|
725
|
+
end
|
|
726
|
+
|
|
727
|
+
def items
|
|
728
|
+
@items ||= [].tap do |node_array|
|
|
729
|
+
node_array.instance_variable_set("@default_port", _parent.port)
|
|
730
|
+
|
|
731
|
+
def node_array.<<(node)
|
|
732
|
+
node[:port] ||= @default_port
|
|
733
|
+
super
|
|
734
|
+
end
|
|
735
|
+
end
|
|
736
|
+
end
|
|
737
|
+
end
|
|
738
|
+
|
|
739
|
+
class MockPublicIpInternetServiceNode < Base
|
|
740
|
+
def ip_address
|
|
741
|
+
self[:ip_address]
|
|
742
|
+
end
|
|
743
|
+
|
|
744
|
+
def name
|
|
745
|
+
self[:name] || "Public IP Service Node #{object_id}"
|
|
746
|
+
end
|
|
747
|
+
|
|
748
|
+
def description
|
|
749
|
+
self[:description] || "Description for Public IP Service Node #{name}"
|
|
750
|
+
end
|
|
751
|
+
|
|
752
|
+
def port
|
|
753
|
+
self[:port]
|
|
754
|
+
end
|
|
755
|
+
|
|
756
|
+
def enabled
|
|
757
|
+
self[:enabled].to_s.downcase != "false"
|
|
758
|
+
end
|
|
759
|
+
|
|
760
|
+
def enabled=(new_value)
|
|
761
|
+
self[:enabled] = new_value
|
|
762
|
+
end
|
|
763
|
+
end
|
|
764
|
+
end
|
|
765
|
+
end
|
|
766
|
+
end
|