fog 1.7.0 → 1.8.0
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.
- data/.gitignore +2 -2
- data/README.md +9 -10
- data/Rakefile +15 -299
- data/changelog.txt +153 -0
- data/docs/about/contributing.markdown +1 -0
- data/docs/dns/index.markdown +1 -1
- data/docs/index.markdown +8 -3
- data/fog.gemspec +3 -3
- data/lib/fog.rb +0 -5
- data/lib/fog/aws/auto_scaling.rb +1 -1
- data/lib/fog/aws/cloud_watch.rb +1 -1
- data/lib/fog/aws/compute.rb +2 -1
- data/lib/fog/aws/dynamodb.rb +30 -64
- data/lib/fog/aws/elb.rb +1 -1
- data/lib/fog/aws/glacier.rb +1 -1
- data/lib/fog/aws/iam.rb +1 -0
- data/lib/fog/aws/models/auto_scaling/group.rb +1 -1
- data/lib/fog/aws/models/compute/server.rb +2 -0
- data/lib/fog/aws/models/compute/volume.rb +0 -1
- data/lib/fog/aws/models/iam/user.rb +1 -1
- data/lib/fog/aws/parsers/compute/describe_instances.rb +3 -1
- data/lib/fog/aws/parsers/compute/describe_reserved_instances_offerings.rb +1 -1
- data/lib/fog/aws/parsers/storage/delete_multiple_objects.rb +50 -0
- data/lib/fog/aws/rds.rb +2 -2
- data/lib/fog/aws/requests/compute/describe_availability_zones.rb +3 -0
- data/lib/fog/aws/requests/compute/describe_reserved_instances_offerings.rb +11 -8
- data/lib/fog/aws/requests/compute/modify_volume_attribute.rb +51 -0
- data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +1 -0
- data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +172 -0
- data/lib/fog/aws/signaturev4.rb +1 -1
- data/lib/fog/aws/sqs.rb +1 -1
- data/lib/fog/aws/storage.rb +2 -0
- data/lib/fog/bluebox/requests/compute/create_block.rb +1 -3
- data/lib/fog/brightbox/compute.rb +239 -84
- data/lib/fog/brightbox/models/compute/account.rb +9 -3
- data/lib/fog/brightbox/models/compute/server.rb +2 -1
- data/lib/fog/brightbox/models/compute/servers.rb +33 -1
- data/lib/fog/brightbox/oauth2.rb +164 -0
- data/lib/fog/brightbox/requests/compute/activate_console_server.rb +9 -2
- data/lib/fog/brightbox/requests/compute/add_listeners_load_balancer.rb +11 -2
- data/lib/fog/brightbox/requests/compute/add_nodes_load_balancer.rb +11 -2
- data/lib/fog/brightbox/requests/compute/add_servers_server_group.rb +9 -11
- data/lib/fog/brightbox/requests/compute/apply_to_firewall_policy.rb +11 -2
- data/lib/fog/brightbox/requests/compute/create_api_client.rb +11 -2
- data/lib/fog/brightbox/requests/compute/create_application.rb +11 -2
- data/lib/fog/brightbox/requests/compute/create_cloud_ip.rb +11 -1
- data/lib/fog/brightbox/requests/compute/create_firewall_policy.rb +13 -2
- data/lib/fog/brightbox/requests/compute/create_firewall_rule.rb +17 -2
- data/lib/fog/brightbox/requests/compute/create_image.rb +18 -2
- data/lib/fog/brightbox/requests/compute/create_load_balancer.rb +14 -2
- data/lib/fog/brightbox/requests/compute/create_server.rb +17 -2
- data/lib/fog/brightbox/requests/compute/create_server_group.rb +11 -2
- data/lib/fog/brightbox/requests/compute/destroy_api_client.rb +9 -2
- data/lib/fog/brightbox/requests/compute/destroy_application.rb +9 -2
- data/lib/fog/brightbox/requests/compute/destroy_cloud_ip.rb +9 -2
- data/lib/fog/brightbox/requests/compute/destroy_firewall_policy.rb +9 -2
- data/lib/fog/brightbox/requests/compute/destroy_firewall_rule.rb +9 -2
- data/lib/fog/brightbox/requests/compute/destroy_image.rb +9 -2
- data/lib/fog/brightbox/requests/compute/destroy_load_balancer.rb +9 -2
- data/lib/fog/brightbox/requests/compute/destroy_server.rb +9 -2
- data/lib/fog/brightbox/requests/compute/destroy_server_group.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_account.rb +7 -15
- data/lib/fog/brightbox/requests/compute/get_api_client.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_application.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_authenticated_user.rb +1 -3
- data/lib/fog/brightbox/requests/compute/get_cloud_ip.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_firewall_policy.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_firewall_rule.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_image.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_interface.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_load_balancer.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_scoped_account.rb +1 -5
- data/lib/fog/brightbox/requests/compute/get_server.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_server_group.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_server_type.rb +9 -2
- data/lib/fog/brightbox/requests/compute/get_user.rb +7 -15
- data/lib/fog/brightbox/requests/compute/get_zone.rb +9 -2
- data/lib/fog/brightbox/requests/compute/list_accounts.rb +6 -2
- data/lib/fog/brightbox/requests/compute/list_api_clients.rb +8 -2
- data/lib/fog/brightbox/requests/compute/list_applications.rb +8 -2
- data/lib/fog/brightbox/requests/compute/list_cloud_ips.rb +8 -2
- data/lib/fog/brightbox/requests/compute/list_firewall_policies.rb +8 -2
- data/lib/fog/brightbox/requests/compute/list_images.rb +8 -2
- data/lib/fog/brightbox/requests/compute/list_load_balancers.rb +8 -2
- data/lib/fog/brightbox/requests/compute/list_server_groups.rb +8 -2
- data/lib/fog/brightbox/requests/compute/list_server_types.rb +8 -2
- data/lib/fog/brightbox/requests/compute/list_servers.rb +8 -2
- data/lib/fog/brightbox/requests/compute/list_users.rb +8 -2
- data/lib/fog/brightbox/requests/compute/list_zones.rb +8 -2
- data/lib/fog/brightbox/requests/compute/map_cloud_ip.rb +11 -2
- data/lib/fog/brightbox/requests/compute/move_servers_server_group.rb +10 -12
- data/lib/fog/brightbox/requests/compute/remove_firewall_policy.rb +11 -2
- data/lib/fog/brightbox/requests/compute/remove_listeners_load_balancer.rb +11 -2
- data/lib/fog/brightbox/requests/compute/remove_nodes_load_balancer.rb +11 -2
- data/lib/fog/brightbox/requests/compute/remove_servers_server_group.rb +9 -10
- data/lib/fog/brightbox/requests/compute/reset_ftp_password_account.rb +22 -3
- data/lib/fog/brightbox/requests/compute/reset_ftp_password_scoped_account.rb +18 -0
- data/lib/fog/brightbox/requests/compute/reset_secret_api_client.rb +13 -1
- data/lib/fog/brightbox/requests/compute/reset_secret_application.rb +9 -2
- data/lib/fog/brightbox/requests/compute/shutdown_server.rb +9 -2
- data/lib/fog/brightbox/requests/compute/snapshot_server.rb +9 -2
- data/lib/fog/brightbox/requests/compute/start_server.rb +9 -2
- data/lib/fog/brightbox/requests/compute/stop_server.rb +9 -2
- data/lib/fog/brightbox/requests/compute/unmap_cloud_ip.rb +9 -2
- data/lib/fog/brightbox/requests/compute/update_account.rb +32 -34
- data/lib/fog/brightbox/requests/compute/update_api_client.rb +12 -2
- data/lib/fog/brightbox/requests/compute/update_application.rb +12 -2
- data/lib/fog/brightbox/requests/compute/update_cloud_ip.rb +13 -2
- data/lib/fog/brightbox/requests/compute/update_firewall_rule.rb +16 -1
- data/lib/fog/brightbox/requests/compute/update_image.rb +17 -2
- data/lib/fog/brightbox/requests/compute/update_load_balancer.rb +15 -2
- data/lib/fog/brightbox/requests/compute/update_scoped_account.rb +12 -19
- data/lib/fog/brightbox/requests/compute/update_server.rb +12 -2
- data/lib/fog/brightbox/requests/compute/update_server_group.rb +12 -2
- data/lib/fog/brightbox/requests/compute/update_user.rb +15 -2
- data/lib/fog/cloudstack/models/compute/server.rb +3 -1
- data/lib/fog/core.rb +1 -0
- data/lib/fog/core/connection.rb +1 -0
- data/lib/fog/google/storage.rb +13 -2
- data/lib/fog/libvirt/models/compute/server.rb +1 -0
- data/lib/fog/libvirt/requests/compute/list_domains.rb +2 -2
- data/lib/fog/openstack.rb +57 -58
- data/lib/fog/openstack/compute.rb +15 -14
- data/lib/fog/openstack/identity.rb +10 -2
- data/lib/fog/openstack/image.rb +1 -1
- data/lib/fog/openstack/models/compute/flavor.rb +5 -1
- data/lib/fog/openstack/models/compute/security_group.rb +1 -1
- data/lib/fog/openstack/models/compute/server.rb +5 -0
- data/lib/fog/openstack/models/identity/users.rb +1 -2
- data/lib/fog/openstack/requests/compute/create_flavor.rb +4 -1
- data/lib/fog/openstack/requests/compute/create_security_group.rb +1 -1
- data/lib/fog/openstack/requests/compute/get_limits.rb +93 -0
- data/lib/fog/openstack/requests/compute/list_tenants.rb +1 -0
- data/lib/fog/openstack/requests/compute/release_address.rb +13 -1
- data/lib/fog/openstack/requests/compute/reset_server_state.rb +24 -0
- data/lib/fog/openstack/requests/identity/create_role.rb +1 -1
- data/lib/fog/openstack/requests/identity/set_tenant.rb +21 -0
- data/lib/fog/openstack/volume.rb +2 -1
- data/lib/fog/rackspace/models/compute_v2/server.rb +27 -0
- data/lib/fog/rackspace/models/compute_v2/servers.rb +8 -0
- data/lib/fog/rackspace/models/dns/record.rb +14 -1
- data/lib/fog/rackspace/models/storage/file.rb +68 -2
- data/lib/fog/rackspace/requests/compute_v2/create_server.rb +3 -0
- data/lib/fog/version.rb +5 -0
- data/lib/fog/vsphere/compute.rb +74 -8
- data/lib/fog/vsphere/models/compute/cluster.rb +31 -0
- data/lib/fog/vsphere/models/compute/clusters.rb +26 -0
- data/lib/fog/vsphere/models/compute/datacenter.rb +35 -0
- data/lib/fog/vsphere/models/compute/datacenters.rb +23 -0
- data/lib/fog/vsphere/models/compute/datastore.rb +24 -0
- data/lib/fog/vsphere/models/compute/datastores.rb +25 -0
- data/lib/fog/vsphere/models/compute/folder.rb +28 -0
- data/lib/fog/vsphere/models/compute/folders.rb +27 -0
- data/lib/fog/vsphere/models/compute/interface.rb +39 -0
- data/lib/fog/vsphere/models/compute/interfaces.rb +33 -0
- data/lib/fog/vsphere/models/compute/network.rb +21 -0
- data/lib/fog/vsphere/models/compute/networks.rb +25 -0
- data/lib/fog/vsphere/models/compute/resource_pool.rb +23 -0
- data/lib/fog/vsphere/models/compute/resource_pools.rb +26 -0
- data/lib/fog/vsphere/models/compute/server.rb +78 -12
- data/lib/fog/vsphere/models/compute/servers.rb +16 -20
- data/lib/fog/vsphere/models/compute/template.rb +13 -0
- data/lib/fog/vsphere/models/compute/templates.rb +23 -0
- data/lib/fog/vsphere/models/compute/volume.rb +45 -0
- data/lib/fog/vsphere/models/compute/volumes.rb +33 -0
- data/lib/fog/vsphere/requests/compute/create_vm.rb +114 -0
- data/lib/fog/vsphere/requests/compute/get_cluster.rb +25 -0
- data/lib/fog/vsphere/requests/compute/get_datacenter.rb +29 -0
- data/lib/fog/vsphere/requests/compute/get_datastore.rb +25 -0
- data/lib/fog/vsphere/requests/compute/get_folder.rb +73 -0
- data/lib/fog/vsphere/requests/compute/get_network.rb +25 -0
- data/lib/fog/vsphere/requests/compute/get_resource_pool.rb +26 -0
- data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +62 -0
- data/lib/fog/vsphere/requests/compute/list_clusters.rb +37 -0
- data/lib/fog/vsphere/requests/compute/list_datacenters.rb +34 -0
- data/lib/fog/vsphere/requests/compute/list_datastores.rb +40 -0
- data/lib/fog/vsphere/requests/compute/list_folders.rb +45 -0
- data/lib/fog/vsphere/requests/compute/list_networks.rb +38 -0
- data/lib/fog/vsphere/requests/compute/list_resource_pools.rb +39 -0
- data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +132 -166
- data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +52 -0
- data/lib/fog/vsphere/requests/compute/list_vm_volumes.rb +51 -0
- data/lib/fog/vsphere/requests/compute/vm_clone.rb +6 -8
- data/lib/fog/vsphere/requests/compute/vm_destroy.rb +1 -8
- data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +1 -2
- data/lib/tasks/changelog_task.rb +98 -0
- data/lib/tasks/documentation_task.rb +155 -0
- data/lib/tasks/test_task.rb +46 -0
- data/tests/aws/models/iam/users_tests.rb +16 -2
- data/tests/aws/requests/auto_scaling/notification_configuration_tests.rb +1 -0
- data/tests/aws/requests/auto_scaling/tag_tests.rb +1 -0
- data/tests/aws/requests/compute/instance_tests.rb +2 -0
- data/tests/aws/requests/compute/volume_tests.rb +8 -0
- data/tests/aws/requests/storage/object_tests.rb +18 -1
- data/tests/aws/requests/storage/versioning_tests.rb +70 -0
- data/tests/brightbox/compute_tests.rb +96 -4
- data/tests/brightbox/models/compute/account_tests.rb +15 -0
- data/tests/brightbox/oauth2_tests.rb +103 -0
- data/tests/brightbox/requests/compute/account_tests.rb +9 -2
- data/tests/brightbox/requests/compute/interface_tests.rb +18 -4
- data/tests/dns/models/record_tests.rb +17 -3
- data/tests/openstack/requests/compute/address_tests.rb +22 -19
- data/tests/openstack/requests/compute/flavor_tests.rb +4 -2
- data/tests/openstack/requests/compute/limit_tests.rb +60 -0
- data/tests/openstack/requests/compute/quota_tests.rb +16 -3
- data/tests/openstack/requests/compute/security_group_tests.rb +1 -1
- data/tests/rackspace/models/compute_v2/servers_tests.rb +6 -0
- data/tests/rackspace/models/storage/file_tests.rb +172 -0
- data/tests/rackspace/requests/dns/helper.rb +12 -26
- data/tests/vsphere/compute_tests.rb +3 -3
- data/tests/vsphere/models/compute/server_tests.rb +1 -2
- data/tests/vsphere/requests/compute/list_virtual_machines_tests.rb +5 -13
- data/tests/vsphere/requests/compute/vm_clone_tests.rb +2 -2
- metadata +59 -11
- data/lib/fog/vsphere/requests/compute/datacenters.rb +0 -34
- data/lib/fog/vsphere/requests/compute/find_vm_by_ref.rb +0 -41
- data/lib/fog/vsphere/requests/compute/vm_create.rb +0 -97
- data/tests/vsphere/requests/compute/find_vm_by_ref_tests.rb +0 -26
- data/tests/vsphere/requests/compute/vm_create_tests.rb +0 -20
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class Vsphere
|
|
4
|
+
class Real
|
|
5
|
+
def list_clusters(filters = { })
|
|
6
|
+
datacenter_name = filters[:datacenter]
|
|
7
|
+
|
|
8
|
+
raw_clusters(datacenter_name).map do |cluster|
|
|
9
|
+
cluster_attributes(cluster, datacenter_name)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def raw_clusters(datacenter)
|
|
14
|
+
find_raw_datacenter(datacenter).hostFolder.childEntity.grep(RbVmomi::VIM::ClusterComputeResource)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
protected
|
|
18
|
+
|
|
19
|
+
def cluster_attributes cluster, datacenter_name
|
|
20
|
+
{
|
|
21
|
+
:id => managed_obj_id(cluster),
|
|
22
|
+
:name => cluster.name,
|
|
23
|
+
:num_host => cluster.summary.numHosts,
|
|
24
|
+
:num_cpu_cores => cluster.summary.numCpuCores,
|
|
25
|
+
:overall_status => cluster.summary.overallStatus,
|
|
26
|
+
:datacenter => datacenter_name || parent_attribute(cluster.path, :datacenter)[1],
|
|
27
|
+
}
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
class Mock
|
|
32
|
+
def list_clusters(filters = { })
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class Vsphere
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
def list_datacenters filters = {}
|
|
7
|
+
raw_datacenters.map do |dc|
|
|
8
|
+
{
|
|
9
|
+
:id => managed_obj_id(dc),
|
|
10
|
+
:name => dc.name,
|
|
11
|
+
:status => dc.overallStatus
|
|
12
|
+
}
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
protected
|
|
17
|
+
|
|
18
|
+
def raw_datacenters
|
|
19
|
+
@raw_datacenters ||= @connection.rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def find_datacenters name=nil
|
|
23
|
+
name ? [get_raw_datacenter(name)] : raw_datacenters
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
class Mock
|
|
28
|
+
def list_datacenters filters = {}
|
|
29
|
+
[ {:name => "Solutions", :status => "grey"}, {:name => "Solutions2", :status => "green" }]
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class Vsphere
|
|
4
|
+
class Real
|
|
5
|
+
def list_datastores(filters = { })
|
|
6
|
+
datacenter_name = filters[:datacenter]
|
|
7
|
+
# default to show all datastores
|
|
8
|
+
only_active = filters[:accessible] || false
|
|
9
|
+
raw_datastores(datacenter_name).map do |datastore|
|
|
10
|
+
next if only_active and !datastore.summary.accessible
|
|
11
|
+
datastore_attributes(datastore, datacenter_name)
|
|
12
|
+
end.compact
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def raw_datastores(datacenter_name)
|
|
16
|
+
find_raw_datacenter(datacenter_name).datastore
|
|
17
|
+
end
|
|
18
|
+
protected
|
|
19
|
+
|
|
20
|
+
def datastore_attributes datastore, datacenter
|
|
21
|
+
{
|
|
22
|
+
:id => managed_obj_id(datastore),
|
|
23
|
+
:name => datastore.name,
|
|
24
|
+
:accessible => datastore.summary.accessible,
|
|
25
|
+
:type => datastore.summary.type,
|
|
26
|
+
:freespace => datastore.summary.freeSpace,
|
|
27
|
+
:capacity => datastore.summary.capacity,
|
|
28
|
+
:datacenter => datacenter,
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
class Mock
|
|
34
|
+
def list_datastores(datacenter_name)
|
|
35
|
+
[]
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class Vsphere
|
|
4
|
+
class Real
|
|
5
|
+
# Grabs all sub folders within a given path folder.
|
|
6
|
+
#
|
|
7
|
+
# ==== Parameters
|
|
8
|
+
# * filters<~Hash>:
|
|
9
|
+
# * :datacenter<~String> - *REQUIRED* Your datacenter where you're
|
|
10
|
+
# looking for folders. Example: 'my-datacenter-name' (passed if you
|
|
11
|
+
# are using the models/collections)
|
|
12
|
+
# eg: vspconn.datacenters.first.vm_folders('mypath')
|
|
13
|
+
# * :path<~String> - Your path where you're looking for
|
|
14
|
+
# more folders, if return = none you will get an error. If you don't
|
|
15
|
+
# define it will look in the main datacenter folder for any folders
|
|
16
|
+
# in that datacenter.
|
|
17
|
+
#
|
|
18
|
+
# Example Usage Testing Only:
|
|
19
|
+
# vspconn = Fog::Compute[:vsphere]
|
|
20
|
+
# mydc = vspconn.datacenters.first
|
|
21
|
+
# folders = mydc.vm_folders
|
|
22
|
+
#
|
|
23
|
+
def list_folders(filters = { })
|
|
24
|
+
path = filters[:path] || filters['path'] || ''
|
|
25
|
+
datacenter_name = filters[:datacenter]
|
|
26
|
+
get_raw_vmfolders(path, datacenter_name).map do |folder|
|
|
27
|
+
folder_attributes(folder, datacenter_name)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
protected
|
|
32
|
+
|
|
33
|
+
def get_raw_vmfolders(path, datacenter_name)
|
|
34
|
+
folder = get_raw_vmfolder(path, datacenter_name)
|
|
35
|
+
child_folders(folder).flatten.compact
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def child_folders folder
|
|
39
|
+
[folder, folder.childEntity.grep(RbVmomi::VIM::Folder).map(&method(:child_folders)).flatten]
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class Vsphere
|
|
4
|
+
class Real
|
|
5
|
+
def list_networks(filters = { })
|
|
6
|
+
datacenter_name = filters[:datacenter]
|
|
7
|
+
# default to show all networks
|
|
8
|
+
only_active = filters[:accessible] || false
|
|
9
|
+
raw_networks(datacenter_name).map do |network|
|
|
10
|
+
next if only_active and !network.summary.accessible
|
|
11
|
+
network_attributes(network, datacenter_name)
|
|
12
|
+
end.compact
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def raw_networks(datacenter_name)
|
|
16
|
+
find_raw_datacenter(datacenter_name).network
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
protected
|
|
20
|
+
|
|
21
|
+
def network_attributes network, datacenter
|
|
22
|
+
{
|
|
23
|
+
:id => managed_obj_id(network),
|
|
24
|
+
:name => network.name,
|
|
25
|
+
:accessible => network.summary.accessible,
|
|
26
|
+
:datacenter => datacenter,
|
|
27
|
+
}
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
class Mock
|
|
32
|
+
def list_networks(datacenter_name)
|
|
33
|
+
[]
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Compute
|
|
3
|
+
class Vsphere
|
|
4
|
+
class Real
|
|
5
|
+
def list_resource_pools(filters = { })
|
|
6
|
+
datacenter_name = filters[:datacenter]
|
|
7
|
+
cluster_name = filters[:cluster]
|
|
8
|
+
cluster = get_raw_cluster(cluster_name, datacenter_name)
|
|
9
|
+
list_raw_resource_pools(cluster).map do |resource_pool|
|
|
10
|
+
resource_pool_attributes(resource_pool, cluster_name, datacenter_name)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
protected
|
|
15
|
+
|
|
16
|
+
# root ResourcePool + Children if they exists
|
|
17
|
+
def list_raw_resource_pools(cluster)
|
|
18
|
+
[cluster.resourcePool, cluster.resourcePool.resourcePool].flatten
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def resource_pool_attributes resource_pool, cluster, datacenter
|
|
22
|
+
{
|
|
23
|
+
:id => managed_obj_id(resource_pool),
|
|
24
|
+
:name => resource_pool.name,
|
|
25
|
+
:configured_memory_mb => resource_pool.summary.configuredMemoryMB,
|
|
26
|
+
:overall_status => resource_pool.overallStatus,
|
|
27
|
+
:cluster => cluster,
|
|
28
|
+
:datacenter => datacenter
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
|
33
|
+
class Mock
|
|
34
|
+
def list_resource_pools(filters = { })
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -2,97 +2,43 @@ module Fog
|
|
|
2
2
|
module Compute
|
|
3
3
|
class Vsphere
|
|
4
4
|
class Real
|
|
5
|
-
def list_virtual_machines(options = {})
|
|
5
|
+
def list_virtual_machines(options = { })
|
|
6
6
|
# Listing all VM's can be quite slow and expensive. Try and optimize
|
|
7
7
|
# based on the available options we have. These conditions are in
|
|
8
|
-
# ascending order of
|
|
8
|
+
# ascending order of time to complete for large deployments.
|
|
9
|
+
|
|
10
|
+
options[:folder] ||= options['folder']
|
|
9
11
|
if options['instance_uuid'] then
|
|
10
|
-
|
|
11
|
-
elsif options[
|
|
12
|
-
list_all_virtual_machines_in_folder(options)
|
|
12
|
+
[connection.get_virtual_machine(options['instance_uuid'])]
|
|
13
|
+
elsif options[:folder] && options[:datacenter] then
|
|
14
|
+
list_all_virtual_machines_in_folder(options[:folder], options[:datacenter])
|
|
13
15
|
else
|
|
14
|
-
list_all_virtual_machines
|
|
16
|
+
list_all_virtual_machines(options)
|
|
15
17
|
end
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
private
|
|
19
21
|
|
|
20
|
-
def list_all_virtual_machines_in_folder(
|
|
21
|
-
|
|
22
|
-
# and returns the array.
|
|
23
|
-
path_elements = options['folder'].split('/').tap { |ary| ary.shift 2 }
|
|
24
|
-
# The DC name itself.
|
|
25
|
-
dc_name = path_elements.shift
|
|
26
|
-
# If the first path element contains "vm" this denotes the vmFolder
|
|
27
|
-
# and needs to be shifted out since each DC contains only one
|
|
28
|
-
# vmFolder
|
|
29
|
-
path_elements.shift if path_elements[0] == 'vm'
|
|
30
|
-
# Make sure @datacenters is populated (the keys are DataCenter instances)
|
|
31
|
-
self.datacenters.include? dc_name or raise ArgumentError, "Could not find a Datacenter named #{dc_name}"
|
|
32
|
-
# Get the datacenter managed object
|
|
33
|
-
dc = @datacenters[dc_name]
|
|
34
|
-
|
|
35
|
-
# Get the VM Folder (Group) efficiently
|
|
36
|
-
vm_folder = dc.vmFolder
|
|
22
|
+
def list_all_virtual_machines_in_folder(path, datacenter_name)
|
|
23
|
+
folder = get_raw_vmfolder(path, datacenter_name)
|
|
37
24
|
|
|
38
|
-
|
|
39
|
-
folder = path_elements.inject(vm_folder) do |current_folder, sub_folder_name|
|
|
40
|
-
# JJM VIM::Folder#find appears to be quite efficient as it uses the
|
|
41
|
-
# searchIndex It certainly appears to be faster than
|
|
42
|
-
# VIM::Folder#inventory since that returns _all_ managed objects of
|
|
43
|
-
# a certain type _and_ their properties.
|
|
44
|
-
sub_folder = current_folder.find(sub_folder_name, RbVmomi::VIM::Folder)
|
|
45
|
-
raise ArgumentError, "Could not descend into #{sub_folder_name}. Please check your path." unless sub_folder
|
|
46
|
-
sub_folder
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
# This should be efficient since we're not obtaining properties
|
|
50
|
-
virtual_machines = folder.children.inject([]) do |ary, child|
|
|
51
|
-
if child.is_a? RbVmomi::VIM::VirtualMachine then
|
|
52
|
-
ary << convert_vm_mob_ref_to_attr_hash(child)
|
|
53
|
-
end
|
|
54
|
-
ary
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
# Return the managed objects themselves as an array. These may be converted
|
|
58
|
-
# to an attribute has using convert_vm_mob_ref_to_attr_hash
|
|
59
|
-
{ 'virtual_machines' => virtual_machines }
|
|
25
|
+
folder.children.grep(RbVmomi::VIM::VirtualMachine).map(&method(:convert_vm_mob_ref_to_attr_hash))
|
|
60
26
|
end
|
|
61
27
|
|
|
62
|
-
def
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
else
|
|
69
|
-
virtual_machines = [ ]
|
|
70
|
-
end
|
|
71
|
-
{ 'virtual_machines' => virtual_machines }
|
|
72
|
-
end
|
|
28
|
+
def list_all_virtual_machines(options = { })
|
|
29
|
+
datacenters = find_datacenters(options[:datacenter])
|
|
30
|
+
# TODO: go though nested folders
|
|
31
|
+
vms = datacenters.map { |dc| dc.vmFolder.childEntity.grep(RbVmomi::VIM::VirtualMachine) }.flatten
|
|
32
|
+
# remove all template based virtual machines
|
|
33
|
+
vms.delete_if { |v| v.config.template }
|
|
73
34
|
|
|
74
|
-
|
|
75
|
-
virtual_machines = list_all_virtual_machine_mobs.collect do |vm_mob|
|
|
35
|
+
vms.map do |vm_mob|
|
|
76
36
|
convert_vm_mob_ref_to_attr_hash(vm_mob)
|
|
77
37
|
end
|
|
78
|
-
{ 'virtual_machines' => virtual_machines }
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
# NOTE: This is a private instance method required by the vm_clone
|
|
83
|
-
# request. It's very hard to get the Managed Object Reference
|
|
84
|
-
# of a Template because we can't search for it by instance_uuid
|
|
85
|
-
# As a result, we need a list of all virtual machines, and we
|
|
86
|
-
# need them in "native" format, not filter attribute format.
|
|
87
|
-
def list_all_virtual_machine_mobs
|
|
88
|
-
# Find each datacenter
|
|
89
|
-
datacenters = @connection.rootFolder.childEntity.grep(RbVmomi::VIM::Datacenter)
|
|
90
|
-
# Next, search the "vmFolder" inventory of each data center:
|
|
91
|
-
datacenters.map {|dc| dc.vmFolder.childEntity.grep(RbVmomi::VIM::VirtualMachine) }.flatten
|
|
92
38
|
end
|
|
93
39
|
|
|
94
40
|
def get_folder_path(folder, root = nil)
|
|
95
|
-
if (
|
|
41
|
+
if (not folder.methods.include?('parent')) or (folder == root)
|
|
96
42
|
return
|
|
97
43
|
end
|
|
98
44
|
"#{get_folder_path(folder.parent)}/#{folder.name}"
|
|
@@ -105,100 +51,120 @@ module Fog
|
|
|
105
51
|
nil
|
|
106
52
|
end
|
|
107
53
|
|
|
108
|
-
def list_virtual_machines(options = {})
|
|
54
|
+
def list_virtual_machines(options = { })
|
|
109
55
|
case options['instance_uuid']
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
Network adapter 1
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
56
|
+
when nil
|
|
57
|
+
|
|
58
|
+
[
|
|
59
|
+
{ :resource_pool => "Resources",
|
|
60
|
+
:memory_mb => 2196,
|
|
61
|
+
:mac_addresses => { "Network adapter 1" => "00:50:56:a9:00:28" },
|
|
62
|
+
:power_state => "poweredOn",
|
|
63
|
+
:cpus => 1,
|
|
64
|
+
:hostname => "dhcp75-197.virt.bos.redhat.com",
|
|
65
|
+
:mo_ref => "vm-562",
|
|
66
|
+
:connection_state => "connected",
|
|
67
|
+
:overall_status => "green",
|
|
68
|
+
:datacenter => "Solutions",
|
|
69
|
+
:volumes =>
|
|
70
|
+
[{
|
|
71
|
+
:id => "6000C29c-a47d-4cd9-5249-c371de775f06",
|
|
72
|
+
:datastore => "Storage1",
|
|
73
|
+
:mode => "persistent",
|
|
74
|
+
:size => 8388608,
|
|
75
|
+
:thin => true,
|
|
76
|
+
:name => "Hard disk 1",
|
|
77
|
+
:filename => "[Storage1] rhel6-mfojtik/rhel6-mfojtik.vmdk",
|
|
78
|
+
:size_gb => 8
|
|
79
|
+
}],
|
|
80
|
+
:interfaces =>
|
|
81
|
+
[{ :mac => "00:50:56:a9:00:28",
|
|
82
|
+
:network => "VM Network",
|
|
83
|
+
:name => "Network adapter 1",
|
|
84
|
+
:status => "ok",
|
|
85
|
+
:summary => "VM Network",
|
|
86
|
+
}],
|
|
87
|
+
:hypervisor => "gunab.puppetlabs.lan",
|
|
88
|
+
:guest_id => "rhel6_64Guest",
|
|
89
|
+
:tools_state => "toolsOk",
|
|
90
|
+
:cluster => "Solutionscluster",
|
|
91
|
+
:name => "rhel64",
|
|
92
|
+
:operatingsystem => "Red Hat Enterprise Linux 6 (64-bit)",
|
|
93
|
+
:uuid => "4229f0e9-bfdc-d9a7-7bac-12070772e6dc",
|
|
94
|
+
:path => "/Datacenters/Solutions/vm",
|
|
95
|
+
:id => "5029c440-85ee-c2a1-e9dd-b63e39364603",
|
|
96
|
+
:tools_version => "guestToolsUnmanaged",
|
|
97
|
+
:ipaddress => "192.168.100.184",
|
|
98
|
+
},
|
|
99
|
+
{ :resource_pool => "Resources",
|
|
100
|
+
:memory_mb => 512,
|
|
101
|
+
:power_state => "poweredOn",
|
|
102
|
+
:mac_addresses => { "Network adapter 1" => "00:50:56:a9:00:00" },
|
|
103
|
+
:hostname => nil,
|
|
104
|
+
:cpus => 1,
|
|
105
|
+
:connection_state => "connected",
|
|
106
|
+
:mo_ref => "vm-621",
|
|
107
|
+
:overall_status => "green",
|
|
108
|
+
:datacenter => "Solutions",
|
|
109
|
+
:volumes =>
|
|
110
|
+
[{ :thin => false,
|
|
111
|
+
:size_gb => 10,
|
|
112
|
+
:datastore => "datastore1",
|
|
113
|
+
:filename => "[datastore1] i-1342439683/i-1342439683.vmdk",
|
|
114
|
+
:size => 10485762,
|
|
115
|
+
:name => "Hard disk 1",
|
|
116
|
+
:mode => "persistent",
|
|
117
|
+
:id => "6000C29b-f364-d073-8316-8e98ac0a0eae" }],
|
|
118
|
+
:interfaces =>
|
|
119
|
+
[{ :summary => "VM Network",
|
|
120
|
+
:mac => "00:50:56:a9:00:00",
|
|
121
|
+
:status => "ok",
|
|
122
|
+
:network => "VM Network",
|
|
123
|
+
:name => "Network adapter 1" }],
|
|
124
|
+
:instance_uuid => "502916a3-b42e-17c7-43ce-b3206e9524dc",
|
|
125
|
+
:hypervisor => "gunab.puppetlabs.lan",
|
|
126
|
+
:guest_id => nil,
|
|
127
|
+
:cluster => "Solutionscluster",
|
|
128
|
+
:tools_state => "toolsNotInstalled",
|
|
129
|
+
:uuid => "4229e0de-30cb-ceb2-21f9-4d8d8beabb52",
|
|
130
|
+
:name => "i-1342439683",
|
|
131
|
+
:operatingsystem => nil,
|
|
132
|
+
:path => "/",
|
|
133
|
+
:tools_version => "guestToolsNotInstalled",
|
|
134
|
+
:id => "502916a3-b42e-17c7-43ce-b3206e9524dc",
|
|
135
|
+
:ipaddress => nil }
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
]
|
|
139
|
+
when '5032c8a5-9c5e-ba7a-3804-832a03e16381'
|
|
140
|
+
[{ :resource_pool => "Resources",
|
|
141
|
+
:memory_mb => 2196,
|
|
142
|
+
:power_state => "poweredOn",
|
|
143
|
+
:mac_addresses => { "Network adapter 1" => "00:50:56:b2:00:af" },
|
|
144
|
+
:hostname => "centos56gm.localdomain",
|
|
145
|
+
:cpus => 1,
|
|
146
|
+
:connection_state => "connected",
|
|
147
|
+
:mo_ref => "vm-715",
|
|
148
|
+
:overall_status => "green",
|
|
149
|
+
:datacenter => "Solutions",
|
|
150
|
+
:instance_uuid => "5029c440-85ee-c2a1-e9dd-b63e39364603",
|
|
151
|
+
:hypervisor => "gunab.puppetlabs.lan",
|
|
152
|
+
:guest_id => "rhel6_64Guest",
|
|
153
|
+
:cluster => "Solutionscluster",
|
|
154
|
+
:tools_state => "toolsOk",
|
|
155
|
+
:name => "jefftest",
|
|
156
|
+
:operatingsystem => "Red Hat Enterprise Linux 6 (64-bit)",
|
|
157
|
+
:path => "/",
|
|
158
|
+
:tools_version => "guestToolsUnmanaged",
|
|
159
|
+
:ipaddress => "192.168.100.187",
|
|
160
|
+
:id => "5032c8a5-9c5e-ba7a-3804-832a03e16381",
|
|
161
|
+
:uuid => "42329da7-e8ab-29ec-1892-d6a4a964912a"
|
|
162
|
+
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
]
|
|
166
|
+
when 'does-not-exist-and-is-not-a-uuid', '50323f93-6835-1178-8b8f-9e2109890e1a'
|
|
167
|
+
[]
|
|
202
168
|
end
|
|
203
169
|
end
|
|
204
170
|
end
|