lib/shelly/app.rb in shelly-0.3.4 vs lib/shelly/app.rb in shelly-0.3.5.pre

- old
+ new

@@ -267,11 +267,11 @@ def list_files(path) ssh(:command => "ls -l #{persistent_disk}/#{path}") end def upload(source) - console_connection.tap do |conn| + tunnel_connection.tap do |conn| rsync(source, "#{conn['host']}:#{persistent_disk}", conn) end end def upload_database(source) @@ -279,20 +279,24 @@ rsync(source, "#{conn['host']}:#{persistent_disk}", conn) end end def download(relative_source, destination) - console_connection.tap do |conn| + tunnel_connection.tap do |conn| source = File.join("#{conn['host']}:#{persistent_disk}", relative_source) rsync(source, destination, conn) end end def delete_file(remote_path) ssh(:command => "delete_file #{remote_path}") end + def setup_tunnel(conn, local_port) + system "ssh #{ssh_options(conn)} -N -L #{local_port}:localhost:#{conn['service']['port']} #{conn['host']}" + end + # Public: Return databases for given Cloud in Cloudfile # Returns Array of databases def cloud_databases content["servers"].map do |server, settings| settings["databases"] @@ -349,10 +353,15 @@ format = "%C(yellow)%h%Creset %s %C(red)(%cr)%Creset" range = "#{git_info["deployed_commit_sha"]}..#{current_commit}" IO.popen(%Q{git log --no-merges --oneline --pretty=format:"#{format}" #{range}}).read.strip end + # Returns first at least configured virtual server + def tunnel_connection(service = "ssh", server = nil) + shelly.tunnel(code_name, service, server) + end + private def assign_attributes(response) self.git_url = response["git_url"] self.domains = response["domains"] @@ -371,21 +380,16 @@ # Internal: Checks if specified option is present in Cloudfile def option?(option) content["servers"].any? {|_, settings| settings.has_key?(option)} end - # Returns first at least configured virtual server - def console_connection(server = nil) - shelly.console(code_name, server) - end - # Returns first at least configured virtual server if databases are configured def configured_db_server_connection(server = nil) shelly.configured_db_server(code_name, server) end def ssh(options = {}) - conn = console_connection(options[:server]) + conn = tunnel_connection("ssh", options[:server]) system "ssh #{ssh_options(conn)} -t #{conn['host']} #{options[:command]}" end def ssh_with_db_server(options = {}) conn = configured_db_server_connection(options[:server])