implementações paralelas
Post on 13-Jul-2015
935 Views
Preview:
TRANSCRIPT
Código no branch principalclass VirtualMachine def name hypervisor_session.VM.get_name(uuid) end . . .end
Código código no branch novoclass VirtualMachine def name on_hypervisor.VM.get_name(uuid) end . . .end
module Resque class Consumer class << self def queue(name) @queue = name end
def timeout(seconds=nil) @lock_timeout = seconds unless seconds @lock_timeout || 1.hour end
def exclusive(param) @exclusive = param self.extend(Resque::Plugins::LockTimeout) if exclusive? @lock_timeout ||= 1.hour end def publish(message={}) Resque.enqueue(self, message) end . . . end endend
module ActiveMQ class Consumer class << self attr_reader :queue_name, :queued_process, :headers, :timeout_value
def queue(name) @queue_name = "/queue/#{name}" end
def timeout(seconds) @timeout_value = seconds end
def exclusive(param) @exclusive = param end
def publish(message = {}) client = Stomp::Client.new(NephelaeConfig[:broker].merge(:max_reconnect_attempts => 1)) client.publish(queue_name, message.to_yaml, { :persistent => true, :suppress_content_length => true }) end . . . end endend
require 'xmpp4r'module XMPP class Consumer class << self attr_reader :queue_name, :queued_process, :timeout_value
def queue(name) @queue_name = "#{name}@localhost" end
def timeout(seconds) @timeout_value = seconds end
def exclusive(param) @exclusive = param end
def publish(message={}) publisher_client.send(Jabber::Message.new(queue_name, message.to_yaml)) end . . . end endend
module Network class Ver1 def insert_filter_rule(filter_rule) filter_rule.firewalls.in_parallel do |firewall| ssh_executor = SSHExecutor.new(firewall.ip_address, 'sservice') result = ssh_executor.exec( :insert_filter_firewall_rules, :rule => filter_rule, :internal_address => filter_rule.ip_pair.private_ip, :firewall => firewall ) raise "Insertion failed: #{result[:out]}" if result[:status] != 0 end filter_rule.update_attribute(:status, :done) end def insert_dhcp_entry(vm) vm.zone.dhcps.in_parallel do |dhcp_server| result = dhcp_server.synchronize raise "DHCP failed: #{result[:out]}" if result[:status] != 0 end end endend
module Network class Ver2 def insert_filter_rule(filter_rule) quantum = Openstack::QuantumClient::L2l3.new(NephelaeConfig[:quantum]) quantum_response = quantum.filter_rule.create( filter_rule.filter_address, filter_rule.ip_pair.public_ip.to_s, filter_rule.filter_port, filter_rule.filter_protocol ) filter_rule.update_attribute(:quantum_uuid, quantum_response["filter_rule"]["id"]) end
def insert_dhcp_entry(vm) quantum = Openstack::QuantumClient::L2l3.new(NephelaeConfig[:quantum]) quantum_response = quantum.dhcp_entry.create(vm.public_ip.to_s, vm.mac, vm.name) endend
module Network module Manager extend self
def for(versioning_object) versioning_object.version == "2.0" ? Network::Ver2.new : Network::Ver1.new end endend
module Network module Manager extend self
def for(versioning_object) versioning_object.version.constantize.new end endend
Network::Manager.for(pool).insert_filter_rule(virtual_machine)
top related