Skip to content

Instantly share code, notes, and snippets.

@enricruiz
Last active August 29, 2015 14:06
Show Gist options
  • Save enricruiz/b496b887f7a4843b41f4 to your computer and use it in GitHub Desktop.
Save enricruiz/b496b887f7a4843b41f4 to your computer and use it in GitHub Desktop.
Use abiquo plugins with JRuby
require 'java'
Dir["lib/*.jar"].each { |jar| require jar }
import com.abiquo.hypervisor.plugin.PluginManager
import com.abiquo.hypervisor.model.ConnectionData
import com.abiquo.hypervisor.plugin.exception.HypervisorPluginException
# Initialize plugin system
PluginManager.create_instance()
plugin_manager = PluginManager.get_instance()
# Available provider types
loaded_plugins = plugin_manager.get_supported_types
puts "Loaded plugins: #{loaded_plugins}"
# AMAZON loaded?
puts "Has been loaded amazon plugin? => #{plugin_manager.is_loaded("AMAZON")}"
# Get plugin and connection instances
plugin = plugin_manager.get("AMAZON")
connection = plugin_manager.new_connection_data("AMAZON")
# Method that not requires a connection
puts "Available regions:"
regions = plugin.get_regions("")
regions.each do |region|
puts "Region: #{region.providerId} Endpoint: #{region.endpoint}"
end
# Method that requires a connection
connection_data = ConnectionData.new()
connection_data.type = "AMAZON"
connection_data.endpoint = "ec2.eu-west-1.amazonaws.com"
connection_data.user = "YOUR_IDENTITY"
connection_data.password = "YOUR_CREDENTIAL"
# Connect to provider
connection.connect(connection_data)
# Search a template
begin
template_name = "not_existing_template"
puts "Trying to get template '#{template_name}'..."
plugin.get_template(connection, template_name)
rescue HypervisorPluginException => e
puts "Error code: #{e.get_error}"
end
# List available virtual machines
puts "Listing available templates in '#{connection_data.endpoint}'..."
plugin.get_virtual_machines(connection).each do |vm|
puts "VirtualMachine #{vm.uuid}"
end
# Disconnect from provider
connection.disconnect()
require 'java'
Dir["lib/*.jar"].each { |jar| require jar }
import com.abiquo.hypervisor.plugin.PluginManager
import com.abiquo.hypervisor.model.ConnectionData
import com.abiquo.hypervisor.plugin.exception.HypervisorPluginException
provider = "digitalocean"
# Initialize plugin system
PluginManager.create_instance()
plugin_manager = PluginManager.get_instance()
# Get plugin and connection instances
plugin = plugin_manager.get(provider)
connection = plugin_manager.new_connection_data(provider)
# Method that not requires a connection
puts "Available regions for '#{provider}':"
regions = plugin.get_regions(provider)
regions.each do |region|
puts "Region: #{region.providerId} Endpoint: #{region.endpoint}"
end
# Method that requires a connection
connection_data = ConnectionData.new()
connection_data.type = provider
connection_data.endpoint = regions.first.endpoint
connection_data.user = "DO_IDENTITY"
connection_data.password = "DO_CREDENTIAL"
# Connect to provider
connection.connect(connection_data)
# List available virtual machines
puts "Listing available templates in '#{connection_data.endpoint}'..."
plugin.get_virtual_machines(connection).each do |vm|
puts "VirtualMachine #{vm.uuid}"
end
# Disconnect from provider
connection.disconnect()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment