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])