def execute_connections
return if not self.scalable
self.conn_endpoints_list.each { |conn|
pub_inst = self.comp_instance_map[conn.from_comp_inst]
pub_ginst = self.group_instance_map[pub_inst.group_instance_name]
tag = ""
handle = RemoteJob.create_parallel_job
RemoteJob.run_parallel_on_gears(pub_ginst.gears, handle) { |exec_handle, gear|
appname = gear.name
connector_name = conn.from_connector.name
cart = pub_inst.parent_cart_name
input_args = [appname, self.domain.namespace, gear.uuid]
job = gear.get_execute_connector_job(cart, connector_name, input_args)
RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
}
pub_out = []
RemoteJob.get_parallel_run_results(handle) { |tag, gear, output, status|
if status==0
pub_out.push("'#{gear}'='#{output}'")
end
}
input_to_subscriber = Shellwords::shellescape(pub_out.join(' '))
Rails.logger.debug "Output of publisher - '#{pub_out}'"
sub_inst = self.comp_instance_map[conn.to_comp_inst]
sub_ginst = self.group_instance_map[sub_inst.group_instance_name]
handle = RemoteJob.create_parallel_job
RemoteJob.run_parallel_on_gears(sub_ginst.gears, handle) { |exec_handle, gear|
appname = gear.name
connector_name = conn.to_connector.name
cart = sub_inst.parent_cart_name
input_args = [appname, self.domain.namespace, gear.uuid, input_to_subscriber]
job = gear.get_execute_connector_job(cart, connector_name, input_args)
RemoteJob.add_parallel_job(exec_handle, tag, gear, job)
}
}
end