dogids-cli 0.0.19 → 0.0.20

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 80ec59b468779ec530624feea1a184e87c5eeccb
4
- data.tar.gz: f652dddd35193576e00b7ee519e345c282397cda
3
+ metadata.gz: 648c482712018162c9cf439800a4bfb1e9a867f1
4
+ data.tar.gz: 7a1af27153ecce16015f4768470c1409f84fb6e2
5
5
  SHA512:
6
- metadata.gz: e77351ed55840edeec18537708a8862f7dfcaaaf90b36a99c73762fcccd1482c3edda42ce060c7ee73494ab0a25db7bb058d923331a466f9ef136edb28785f8f
7
- data.tar.gz: bc8998bb6d8e5706414f0a6e13c08ab251a04d58d459eb0355a173a1ffcb1c3b989cead1a06794a50bbdc8c53bd296b3d3ffefb76cf397aee0908fa1cec4b087
6
+ metadata.gz: 3cfdbe776f64deeb3f5dde4317e87856ee57ecbd50a92f808fae8daeca4132d446af03e1db71b53c8ee8c5ea254cf3ca3b4d7184a46c6836f103cf2c21402ace
7
+ data.tar.gz: 5089f64b096667de2d450c8c48a2820417f62d79a2d0dbee99e875252335bb7c7ea48e27cf3d544d1da2b9b9b28e1d892daeaba7b48a98d769afd5109eb90791
data/dogids_cli.gemspec CHANGED
@@ -5,7 +5,7 @@ require "dogids/version"
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "dogids-cli"
8
- spec.version = "0.0.19"
8
+ spec.version = "0.0.20"
9
9
  spec.authors = ["Jaryd Krishnan"]
10
10
  spec.email = ["jaryd@dogids.com"]
11
11
  spec.summary = "Command line tool for dogIDs tasks"
data/lib/dogids.rb CHANGED
@@ -2,5 +2,6 @@ require_relative "dogids/base"
2
2
  require_relative "dogids/cache"
3
3
  require_relative "dogids/config"
4
4
  require_relative "dogids/deploy"
5
+ require_relative "dogids/reload"
5
6
  require_relative "dogids/ssh"
6
7
  require_relative "dogids/version"
data/lib/dogids/base.rb CHANGED
@@ -41,26 +41,31 @@ module Dogids
41
41
 
42
42
  private
43
43
 
44
- def get_config_url(location)
44
+ # Get configuration for environment and location
45
+ # @param [string] environment
46
+ # @param [string] location (Optional)
47
+ def get_config_url(environment, location = nil)
45
48
  config_file = set_config_location
46
- if config_file.key?("#{location}") then
47
- return config_file["#{location}"]
49
+ if location
50
+ return config_file[environment][location] if config_file[environment].has_key?(location)
51
+ elsif config_file.has_key?(environment)
52
+ return config_file[environment]
48
53
  else
49
54
  say("URL/IP hasn't been set for #{location} \n")
50
55
  say("Please set this first by running: \n")
51
- say("dogids config #{location}","\e[32m")
56
+ say("dogids config:#{environment} #{location}","\e[32m")
52
57
  return false
53
58
  end
54
59
  end
55
60
 
56
61
  # Print a heading to the terminal for commands that are going to be run.
57
- # @param heading [String]
62
+ # @param [String] heading
58
63
  def print_heading(heading)
59
64
  puts "-----> #{heading}"
60
65
  end
61
66
 
62
67
  # Print a message to the terminal about a command that's going to run.
63
- # @param command [String]
68
+ # @param [String] command
64
69
  def print_command(command)
65
70
  command.split("\n").each do |line|
66
71
  print_wrapped(line, indent: 7)
@@ -68,14 +73,13 @@ module Dogids
68
73
  end
69
74
 
70
75
  # Run a command with Bash after first printing the command to the terminal.
71
- # @param command [String]
76
+ # @param [String] command
72
77
  def run_command(command)
73
78
  print_command(command)
74
79
  `#{command}`
75
80
  end
76
81
 
77
82
  # Access local configuration file
78
- # @param file [String]
79
83
  def set_config_location
80
84
  config = UserConfig.new('.dogids')
81
85
  config['conf.yaml']
data/lib/dogids/cache.rb CHANGED
@@ -10,23 +10,28 @@ module Dogids
10
10
  puts " "
11
11
  puts "Cache Commands:"
12
12
  puts " "
13
- puts " dogids cache:dev clear # Clear whole cache for the dogids.dev storefront"
14
- puts " dogids cache:dev category # Clear category cache for the dogids.dev storefront"
15
- puts " dogids cache:dev css # Clear CSS cache for the dogids.dev storefront"
16
- puts " dogids cache:dev javascript # Clear Javascript cache for the dogids.dev storefront"
17
- puts " dogids cache:dev qa # Clear Q&A cache for the dogids.dev storefront"
13
+ puts " Use the following format:"
14
+ puts " dogids cache:<environment> <machine> <action>"
18
15
  puts " "
19
- puts " dogids cache:staging clear # Clear whole cache for the staging.dogids.com storefront"
20
- puts " dogids cache:staging category # Clear category cache for the staging.dogids.com storefront"
21
- puts " dogids cache:staging css # Clear CSS cache for the staging.dogids.com storefront"
22
- puts " dogids cache:staging javascript # Clear Javascript cache for the staging.dogids.com storefront"
23
- puts " dogids cache:staging qa # Clear Q&A cache for the staging.dogids.com storefront"
16
+ puts " Here are some basic examples:"
24
17
  puts " "
25
- puts " dogids cache:production clear # Clear whole cache for the dogids.com storefront"
26
- puts " dogids cache:production category # Clear category cache for the dogids.dev storefront"
27
- puts " dogids cache:production css # Clear CSS cache for the production.dogids.com storefront"
28
- puts " dogids cache:production javascript # Clear Javascript cache for the production.dogids.com storefront"
29
- puts " dogids cache:production qa # Clear Q&A cache for the dogids.com storefront"
18
+ puts " dogids cache:dev dev clear # Clear whole cache for the dogids.dev storefront"
19
+ puts " dogids cache:dev dev category # Clear category cache for the dogids.dev storefront"
20
+ puts " dogids cache:dev dev css # Clear CSS cache for the dogids.dev storefront"
21
+ puts " dogids cache:dev dev javascript # Clear Javascript cache for the dogids.dev storefront"
22
+ puts " dogids cache:dev dev qa # Clear Q&A cache for the dogids.dev storefront"
23
+ puts " "
24
+ puts " dogids cache:staging staging clear # Clear whole cache for the staging.dogids.com storefront"
25
+ puts " dogids cache:staging staging category # Clear category cache for the staging.dogids.com storefront"
26
+ puts " dogids cache:staging staging css # Clear CSS cache for the staging.dogids.com storefront"
27
+ puts " dogids cache:staging staging javascript # Clear Javascript cache for the staging.dogids.com storefront"
28
+ puts " dogids cache:staging staging qa # Clear Q&A cache for the staging.dogids.com storefront"
29
+ puts " "
30
+ puts " dogids cache:production web clear # Clear whole cache for the dogids.com storefront"
31
+ puts " dogids cache:production web category # Clear category cache for the dogids.dev storefront"
32
+ puts " dogids cache:production web css # Clear CSS cache for the production.dogids.com storefront"
33
+ puts " dogids cache:production web javascript # Clear Javascript cache for the production.dogids.com storefront"
34
+ puts " dogids cache:production web qa # Clear Q&A cache for the dogids.com storefront"
30
35
  puts " "
31
36
  end
32
37
  end
@@ -4,36 +4,36 @@ require "thor"
4
4
  module Dogids
5
5
  class Cli < Thor
6
6
  no_commands do
7
- def cache_dev(vm_name = nil)
8
- ssh_address = get_config_url("dev")
7
+ def cache_dev(vm_name = nil, cache = nil)
8
+ ssh_address = get_config_url("dev",vm_name)
9
9
  return if ssh_address == false
10
10
 
11
- case vm_name
11
+ case cache
12
12
  when "category"
13
- print_heading("Checking the category reviews cache")
13
+ print_heading("Checking the category items cache")
14
14
  Net::SSH.start("#{ssh_address}", "dogids") do |ssh|
15
15
  ssh.exec!(count_category_cache_files_dev_command) do |_channel, _stream, data|
16
16
  print_command("Current category reviews: " + data)
17
17
  end
18
- if yes?("-----> Continue with clearing the cache? [no]")
19
- print_heading("Clearing the development category cache")
18
+ if yes?("-----> Continue with clearing the DEV category items cache? [no]")
19
+ print_heading("Clearing the development category items cache")
20
20
  ssh.exec!(clear_category_cache_dev_command) do |_channel, _stream, data|
21
21
  end
22
22
  end
23
23
  end
24
24
  when "clear"
25
25
  print_heading("Let's start clearing the entire dev cache")
26
- cache_dev("category")
27
- cache_dev("qa")
28
- cache_dev("javascript")
29
- cache_dev("css")
26
+ cache_dev(vm_name,"category")
27
+ cache_dev(vm_name,"qa")
28
+ cache_dev(vm_name,"javascript")
29
+ cache_dev(vm_name,"css")
30
30
  when "css"
31
31
  print_heading("Checking the CSS cache")
32
32
  Net::SSH.start("#{ssh_address}", "dogids") do |ssh|
33
33
  ssh.exec!(count_css_cache_files_dev_command) do |_channel, _stream, data|
34
34
  print_command("Current CSS cache files: " + data)
35
35
  end
36
- if yes?("-----> Continue with clearing the CSS cache? [no]")
36
+ if yes?("-----> Continue with clearing the DEV CSS cache? [no]")
37
37
  print_heading("Clearing the development CSS cache")
38
38
  ssh.exec!(clear_css_cache_dev_command) do |_channel, _stream, data|
39
39
  end
@@ -45,7 +45,7 @@ module Dogids
45
45
  ssh.exec!(count_javascript_cache_files_dev_command) do |_channel, _stream, data|
46
46
  print_command("Current Javascript cache files: " + data)
47
47
  end
48
- if yes?("-----> Continue with clearing the Javascript cache? [no]")
48
+ if yes?("-----> Continue with clearing the DEV Javascript cache? [no]")
49
49
  print_heading("Clearing the development Javascript cache")
50
50
  ssh.exec!(clear_javascript_cache_dev_command) do |_channel, _stream, data|
51
51
  end
@@ -57,8 +57,8 @@ module Dogids
57
57
  ssh.exec!(count_qa_cache_files_dev_command) do |_channel, _stream, data|
58
58
  print_command("Current category reviews: " + data)
59
59
  end
60
- if yes?("-----> Continue with clearing this cache? [no]")
61
- print_heading("Clearing the development QA cache")
60
+ if yes?("-----> Continue with clearing the DEV product Q&A cache? [no]")
61
+ print_heading("Clearing the development Q&A cache")
62
62
  ssh.exec!(clear_qa_cache_dev_command) do |_channel, _stream, data|
63
63
  end
64
64
  end
@@ -4,36 +4,36 @@ require "thor"
4
4
  module Dogids
5
5
  class Cli < Thor
6
6
  no_commands do
7
- def cache_production(vm_name = nil)
8
- ssh_address = get_config_url("web")
7
+ def cache_production(vm_name = nil, cache = nil)
8
+ ssh_address = get_config_url("production",vm_name)
9
9
  return if ssh_address == false
10
10
 
11
- case vm_name
11
+ case cache
12
12
  when "category"
13
- print_heading("Checking the category reviews cache")
13
+ print_heading("Checking the category items cache")
14
14
  Net::SSH.start("#{ssh_address}", "dogids") do |ssh|
15
15
  ssh.exec!(count_category_cache_files_production_command) do |_channel, _stream, data|
16
16
  print_command("Current category reviews: " + data)
17
17
  end
18
- if yes?("-----> Continue with clearing the cache? [no]")
19
- print_heading("Clearing the production category cache")
18
+ if yes?("-----> Continue with clearing the PRODUCTION category items cache? [no]")
19
+ print_heading("Clearing the production category items cache")
20
20
  ssh.exec!(clear_category_cache_production_command) do |_channel, _stream, data|
21
21
  end
22
22
  end
23
23
  end
24
24
  when "clear"
25
25
  print_heading("Let's start clearing the entire production cache")
26
- cache_production("category")
27
- cache_production("qa")
28
- cache_dev("javascript")
29
- cache_dev("css")
26
+ cache_production(vm_name,"category")
27
+ cache_production(vm_name,"qa")
28
+ cache_production(vm_name,"javascript")
29
+ cache_production(vm_name,"css")
30
30
  when "css"
31
31
  print_heading("Checking the CSS cache")
32
32
  Net::SSH.start("#{ssh_address}", "dogids") do |ssh|
33
33
  ssh.exec!(count_css_cache_files_production_command) do |_channel, _stream, data|
34
34
  print_command("Current CSS cache files: " + data)
35
35
  end
36
- if yes?("-----> Continue with clearing the CSS cache? [no]")
36
+ if yes?("-----> Continue with clearing the PRODUCTION CSS cache? [no]")
37
37
  print_heading("Clearing the development CSS cache")
38
38
  ssh.exec!(clear_css_cache_production_command) do |_channel, _stream, data|
39
39
  end
@@ -45,7 +45,7 @@ module Dogids
45
45
  ssh.exec!(count_javascript_cache_files_production_command) do |_channel, _stream, data|
46
46
  print_command("Current Javascript cache files: " + data)
47
47
  end
48
- if yes?("-----> Continue with clearing the Javascript cache? [no]")
48
+ if yes?("-----> Continue with clearing the PRODUCTION Javascript cache? [no]")
49
49
  print_heading("Clearing the development Javascript cache")
50
50
  ssh.exec!(clear_javascript_cache_production_command) do |_channel, _stream, data|
51
51
  end
@@ -57,8 +57,8 @@ module Dogids
57
57
  ssh.exec!(count_qa_cache_files_production_command) do |_channel, _stream, data|
58
58
  print_command("Current category reviews: " + data)
59
59
  end
60
- if yes?("-----> Continue with clearing this cache? [no]")
61
- print_heading("Clearing the production QA cache")
60
+ if yes?("-----> Continue with clearing the PRODUCTION product Q&A cache? [no]")
61
+ print_heading("Clearing the production product Q&A cache")
62
62
  ssh.exec!(clear_qa_cache_production_command) do |_channel, _stream, data|
63
63
  end
64
64
  end
@@ -4,17 +4,17 @@ require "thor"
4
4
  module Dogids
5
5
  class Cli < Thor
6
6
  no_commands do
7
- def cache_staging(vm_name = nil)
8
- ssh_address = get_config_url("staging")
7
+ def cache_staging(vm_name = nil, cache = nil)
8
+ ssh_address = get_config_url("staging",vm_name)
9
9
  return if ssh_address == false
10
- case vm_name
10
+ case cache
11
11
  when "category"
12
12
  print_heading("Checking the category reviews cache")
13
13
  Net::SSH.start("#{ssh_address}", "dogids") do |ssh|
14
14
  ssh.exec!(count_category_cache_files_staging_command) do |_channel, _stream, data|
15
15
  print_command("Current category reviews: " + data)
16
16
  end
17
- if yes?("-----> Continue with clearing the cache? [no]")
17
+ if yes?("-----> Continue with clearing the STAGING category item cache? [no]")
18
18
  print_heading("Clearing the staging category cache")
19
19
  ssh.exec!(clear_category_cache_staging_command) do |_channel, _stream, data|
20
20
  end
@@ -22,17 +22,17 @@ module Dogids
22
22
  end
23
23
  when "clear"
24
24
  print_heading("Let's start clearing the entire staging cache")
25
- cache_staging("category")
26
- cache_staging("qa")
27
- cache_dev("javascript")
28
- cache_dev("css")
25
+ cache_staging(vm_name,"category")
26
+ cache_staging(vm_name,"qa")
27
+ cache_staging(vm_name,"javascript")
28
+ cache_staging(vm_name,"css")
29
29
  when "css"
30
30
  print_heading("Checking the CSS cache")
31
31
  Net::SSH.start("#{ssh_address}", "dogids") do |ssh|
32
32
  ssh.exec!(count_css_cache_files_staging_command) do |_channel, _stream, data|
33
33
  print_command("Current CSS cache files: " + data)
34
34
  end
35
- if yes?("-----> Continue with clearing the CSS cache? [no]")
35
+ if yes?("-----> Continue with clearing the STAGING CSS cache? [no]")
36
36
  print_heading("Clearing the development CSS cache")
37
37
  ssh.exec!(clear_css_cache_staging_command) do |_channel, _stream, data|
38
38
  end
@@ -44,7 +44,7 @@ module Dogids
44
44
  ssh.exec!(count_javascript_cache_files_staging_command) do |_channel, _stream, data|
45
45
  print_command("Current Javascript cache files: " + data)
46
46
  end
47
- if yes?("-----> Continue with clearing the Javascript cache? [no]")
47
+ if yes?("-----> Continue with clearing the STAGING Javascript cache? [no]")
48
48
  print_heading("Clearing the development Javascript cache")
49
49
  ssh.exec!(clear_javascript_cache_staging_command) do |_channel, _stream, data|
50
50
  end
@@ -56,7 +56,7 @@ module Dogids
56
56
  ssh.exec!(count_qa_cache_files_staging_command) do |_channel, _stream, data|
57
57
  print_command("Current category reviews: " + data)
58
58
  end
59
- if yes?("-----> Continue with clearing this cache? [no]")
59
+ if yes?("-----> Continue with clearing the STAGING product Q&A cache? [no]")
60
60
  print_heading("Clearing the staging QA cache")
61
61
  ssh.exec!(clear_qa_cache_staging_command) do |_channel, _stream, data|
62
62
  end
data/lib/dogids/config.rb CHANGED
@@ -9,51 +9,68 @@ module Dogids
9
9
  case command
10
10
  when "list"
11
11
  list
12
- when "admin"
13
- set_config("admin")
14
- when "db"
15
- set_config("db")
16
- when "dev"
17
- set_config("dev")
18
- when "staging"
19
- set_config("staging")
20
- when "web"
21
- set_config("web")
22
- when "worker"
23
- set_config("worker")
24
12
  else
25
13
  puts " "
26
14
  puts "Config Commands:"
27
15
  puts " "
16
+ puts " Use the following so set environments:"
17
+ puts " dogids config:<environment> <machine>"
18
+ puts " "
28
19
  puts " dogids config list # List all current configurations"
29
20
  puts " "
30
- puts " dogids config admin # Set URL/IP for Admin"
31
- puts " dogids config db # Set URL/IP for DB"
32
- puts " dogids config dev # Set URL/IP for Dev"
33
- puts " dogids config staging # Set URL/IP for Staging"
34
- puts " dogids config web # Set URL/IP for Web"
35
- puts " dogids config worker # Set URL/IP for Worker"
21
+ puts " dogids config:dev # Set URL/IP for Development Machines"
22
+ puts " dogids config:production # Set URL/IP for Production Machines"
23
+ puts " dogids config:staging # Set URL/IP for Staging machines"
36
24
  puts " "
37
25
  end
38
26
  end
39
27
 
40
28
  no_commands do
29
+
30
+ # Config dev environment
31
+ # @param [string] location
32
+ def config_dev(location = nil)
33
+ location ? set_config("dev",location) : config
34
+ end
35
+
36
+ # Config staging environment
37
+ # @param [string] location
38
+ def config_staging(location = nil)
39
+ location ? set_config("staging",location) : config
40
+ end
41
+
42
+ # Config production environment
43
+ # @param [string] location
44
+ def config_production(location = nil)
45
+ location ? set_config("production",location) : config
46
+ end
47
+
41
48
  def list
42
49
  dogids_config = set_config_location
43
50
  if dogids_config.any? then
44
- say("The following configurations are set: \n \n")
45
- print_table(dogids_config)
51
+ say("The following configurations are set: \n")
52
+ dogids_config.each do |environment, locations|
53
+ say("\n##### #{environment}")
54
+ print_table(locations)
55
+ end
46
56
  else
47
57
  say("No configuration values have been set. Here's the command list:")
48
58
  config
49
59
  end
50
60
  end
51
61
 
52
- def set_config(location)
62
+ # Set configuration files based on environment and location
63
+ # @param [string] environment
64
+ # @param [string] location
65
+ def set_config(environment,location)
53
66
  dogids_config = set_config_location
67
+ environment_configuration = Hash.new
68
+ if dogids_config["#{environment}"]
69
+ environment_configuration = dogids_config["#{environment}"].to_hash
70
+ end
54
71
  current_value = ""
55
- if dogids_config.key?("#{location}") then
56
- current_value = dogids_config["#{location}"]
72
+ if dogids_config["#{environment}"] != nil && dogids_config["#{environment}"]["#{location}"] != nil then
73
+ current_value = get_config_url(environment, location)
57
74
  say("Current #{location} URL/IP: #{current_value} \n","\e[32m")
58
75
  set_new = yes?("-------> Do you want to enter a new value?[no]")
59
76
  return if set_new != true
@@ -71,7 +88,8 @@ module Dogids
71
88
  confirm = yes?("-------> Do you want to #{confirm_string}?[no]")
72
89
  return if confirm != true
73
90
  end
74
- dogids_config["#{location}"] = new_value
91
+ environment_configuration[location] = new_value
92
+ dogids_config["#{environment}"] = environment_configuration
75
93
  dogids_config.save
76
94
  say("The new URL/IP for #{location}: #{new_value}","\e[32m")
77
95
  end
@@ -6,41 +6,53 @@ module Dogids
6
6
  no_commands do
7
7
  def deploy_staging
8
8
  print_heading("Deploying dogids.com site to staging server")
9
- ssh_address = get_config_url("staging")
10
9
 
11
- Net::SSH.start("#{ssh_address}", "dogids") do |ssh|
12
- print_command("Checking the current git status")
13
- ssh.exec!(staging_git_status_command) do |_channel, _stream, data|
14
- print_command(data)
15
- end
16
10
 
17
- current_branch = ssh.exec!("cd /home/dogids/apps/dogids.com && git rev-parse --abbrev-ref HEAD").strip
11
+ server_addresses = [
12
+ "staging",
13
+ "staging2"
14
+ ]
15
+
16
+ server_addresses.each do |server_address|
17
+
18
+ ssh_address = get_config_url("staging",server_address)
19
+ next if ssh_address == false
18
20
 
19
- print_heading("Current Branch: #{current_branch}")
20
- print_heading("Available Branches:")
21
- ssh.exec!("cd /home/dogids/apps/dogids.com && git branch -r --no-merged master") do |_channel, _stream, data|
22
- print_command("master")
23
- data.split("\n").each do |branch|
24
- print_command(branch.gsub("origin/", ""))
21
+ Net::SSH.start("#{ssh_address}", "dogids") do |ssh|
22
+ print_command("Checking the current git status")
23
+ ssh.exec!(staging_git_status_command) do |_channel, _stream, data|
24
+ print_command(data)
25
25
  end
26
- end
27
26
 
28
- branch = ask("-----> Which branch would you like to deploy?").strip
29
- return print_command("Fine, be that way.") if branch.length == 0
27
+ current_branch = ssh.exec!("cd /home/dogids/apps/dogids.com && git rev-parse --abbrev-ref HEAD").strip
30
28
 
31
- print_command("Pulling latest from #{branch}")
32
- ssh.exec!(staging_git_pull_command(branch)) do |_channel, _stream, data|
33
- print_command(data)
34
- end
29
+ print_heading("Current Branch: #{current_branch}")
30
+ print_heading("Available Branches:")
31
+ ssh.exec!("cd /home/dogids/apps/dogids.com && git branch -r --no-merged master") do |_channel, _stream, data|
32
+ print_command("master")
33
+ data.split("\n").each do |branch|
34
+ print_command(branch.gsub("origin/", ""))
35
+ end
36
+ end
35
37
 
36
- print_command("Updating file permissions")
37
- ssh.exec!(web_update_permissions_command) do |_channel, _stream, data|
38
- print_command(data)
38
+ branch = ask("-----> Which branch would you like to deploy?").strip
39
+ break print_command("Fine, be that way.") if branch.length == 0
40
+
41
+ print_command("Pulling latest from #{branch}")
42
+ ssh.exec!(staging_git_pull_command(branch)) do |_channel, _stream, data|
43
+ print_command(data)
44
+ end
45
+
46
+ print_command("Updating file permissions")
47
+ ssh.exec!(web_update_permissions_command) do |_channel, _stream, data|
48
+ print_command(data)
49
+ end
39
50
  end
40
51
  end
41
52
 
42
53
  print_heading("Done.")
43
54
  end
55
+
44
56
  end
45
57
 
46
58
  private
@@ -9,11 +9,12 @@ module Dogids
9
9
 
10
10
  server_addresses = [
11
11
  "web",
12
+ "web2",
12
13
  "admin"
13
14
  ]
14
15
 
15
16
  server_addresses.each do |server_address|
16
- ssh_address = get_config_url("#{server_address}")
17
+ ssh_address = get_config_url("production","#{server_address}")
17
18
  next if ssh_address == false
18
19
 
19
20
  print_command("Server(#{server_address}): #{ssh_address}")
@@ -5,7 +5,7 @@ module Dogids
5
5
  class Cli < Thor
6
6
  no_commands do
7
7
  def deploy_worker
8
- ssh_address = get_config_url("worker")
8
+ ssh_address = get_config_url("production","worker")
9
9
  return if ssh_address == false
10
10
 
11
11
  print_heading("Deploying dogids-backgrounder")
@@ -0,0 +1,39 @@
1
+ require "thor"
2
+ module Dogids
3
+ class Cli < Thor
4
+ desc "reload", "Reloads the specified machine. Defaults to development"
5
+
6
+ # Reload the specified environment
7
+ # TODO add environments
8
+ # @param [string] app_name
9
+ def reload(app_name = nil)
10
+ if yes?("-----> Reload development? [no]")
11
+ reload_development_machine
12
+ else
13
+ update_vagrant_box if yes?("-----> Update Vagrant Box? (NOT RECOMMENDED) [no]")
14
+ end
15
+ end
16
+
17
+ no_commands do
18
+
19
+ # Upgrade local vagrant box (default is ubuntu/trusty64)
20
+ def update_vagrant_box
21
+ say("-----> Updating the vagrant box...","\e[32m")
22
+ system("cd ~/dogids-vagrant && vagrant box update")
23
+ system("cd ~/dogids-vagrant && vagrant box list")
24
+ if yes?("-----> Remove old boxes? (NOT RECOMMENDED) [no]")
25
+ system("cd ~/dogids-vagrant && vagrant box remove --all")
26
+ system("cd ~/dogids-vagrant && vagrant box add ubuntu/trusty64")
27
+ end
28
+ reload_development_machine
29
+ end
30
+
31
+ # Reloads development machine
32
+ def reload_development_machine
33
+ say("-----> Reloading the development machine...","\e[32m")
34
+ system("cd ~/dogids-vagrant && vagrant reload")
35
+ end
36
+
37
+ end
38
+ end
39
+ end
data/lib/dogids/ssh.rb CHANGED
@@ -9,21 +9,25 @@ module Dogids
9
9
  def ssh(vm_name = nil)
10
10
  case vm_name
11
11
  when "dev"
12
- ssh_development(vm_name)
12
+ ssh_dev(vm_name)
13
13
  when "staging"
14
14
  ssh_staging(vm_name)
15
15
  else
16
16
  puts "Development SSH Commands:"
17
- puts " dogids ssh dev # SSH into local development VM"
17
+ puts " dogids ssh:dev dev # SSH into local development VM"
18
+ puts " dogids ssh:dev lb # SSH into local development LB"
18
19
  puts " "
19
20
  puts "Staging SSH Commands:"
20
- puts " dogids ssh staging # SSH into staging Apache/PHP/MySQL VM"
21
+ puts " dogids ssh:staging lb # SSH into staging LB"
22
+ puts " dogids ssh:staging staging # SSH into staging Apache/PHP/MySQL VM"
21
23
  puts " "
22
24
  puts "Production SSH Commands:"
23
- puts " dogids ssh:production admin # SSH into VM for long running admin processes"
24
- puts " dogids ssh:production db # SSH into production MySQL/Redis VM"
25
- puts " dogids ssh:production web # SSH into production Apache/PHP VM"
26
- puts " dogids ssh:production worker # SSH into production Ruby/Sidekiq VM"
25
+ puts " dogids ssh:production lb # SSH into production LB"
26
+ puts " dogids ssh:production railgun # SSH into production railgun instance"
27
+ puts " dogids ssh:production admin # SSH into VM for long running admin processes"
28
+ puts " dogids ssh:production db # SSH into production MySQL/Redis VM"
29
+ puts " dogids ssh:production web # SSH into production Apache/PHP VM"
30
+ puts " dogids ssh:production worker # SSH into production Ruby/Sidekiq VM"
27
31
  puts " "
28
32
  end
29
33
  end
@@ -3,11 +3,22 @@ require "thor"
3
3
  module Dogids
4
4
  class Cli < Thor
5
5
  no_commands do
6
- def ssh_development(vm_name = nil)
7
- if vm_name == "dev"
8
- ssh_address = get_config_url(vm_name)
9
- puts "Running: ssh -R 52698:localhost:52698 dogids@#{ssh_address}"
10
- exec("ssh -R 52698:localhost:52698 dogids@#{ssh_address}")
6
+ def ssh_dev(vm_name = nil)
7
+ dev_machines = get_config_url("dev")
8
+ if dev_machines.has_key?(vm_name)
9
+ ssh_address = get_config_url("dev",vm_name)
10
+ if vm_name == "lb"
11
+ if yes?("----> Have you set up the dogIDs user for the development LB? [no]")
12
+ puts "Running: dogids@#{ssh_address}"
13
+ exec("ssh dogids@#{ssh_address}")
14
+ else
15
+ puts "Running: `cd ~/dogids-vagrant && vagrant ssh loadbalancer`"
16
+ exec("cd ~/dogids-vagrant && vagrant ssh loadbalancer")
17
+ end
18
+ else
19
+ puts "Running: `ssh -R 52698:localhost:52698 dogids@#{ssh_address}`"
20
+ exec("ssh -R 52698:localhost:52698 dogids@#{ssh_address}")
21
+ end
11
22
  else
12
23
  ssh
13
24
  end
@@ -4,28 +4,13 @@ module Dogids
4
4
  class Cli < Thor
5
5
  no_commands do
6
6
  def ssh_production(vm_name = nil)
7
- case vm_name
8
- when "admin"
9
- ssh_address = get_config_url(vm_name)
10
- if ssh_address then
11
- puts "Running: `ssh -R 52698:localhost:52698 dogids@#{ssh_address}`"
12
- exec("ssh -R 52698:localhost:52698 dogids@#{ssh_address}")
13
- end
14
- when "db"
15
- ssh_address = get_config_url(vm_name)
16
- if ssh_address then
17
- puts "Running: `ssh -R 52698:localhost:52698 dogids@#{ssh_address}`"
18
- exec("ssh -R 52698:localhost:52698 dogids@#{ssh_address}")
19
- end
20
- when "web"
21
- ssh_address = get_config_url(vm_name)
22
- if ssh_address then
23
- puts "Running: `ssh -R 52698:localhost:52698 dogids@#{ssh_address}`"
24
- exec("ssh -R 52698:localhost:52698 dogids@#{ssh_address}")
25
- end
26
- when "worker"
27
- ssh_address = get_config_url(vm_name)
28
- if ssh_address then
7
+ production_machines = get_config_url("production")
8
+ if production_machines.has_key?(vm_name)
9
+ ssh_address = get_config_url("production",vm_name)
10
+ if vm_name == "lb" || vm_name == "railgun"
11
+ puts "Running: `ssh root@#{ssh_address}`"
12
+ exec("ssh root@#{ssh_address}")
13
+ else
29
14
  puts "Running: `ssh -R 52698:localhost:52698 dogids@#{ssh_address}`"
30
15
  exec("ssh -R 52698:localhost:52698 dogids@#{ssh_address}")
31
16
  end
@@ -4,10 +4,14 @@ module Dogids
4
4
  class Cli < Thor
5
5
  no_commands do
6
6
  def ssh_staging(vm_name = nil)
7
- if vm_name == "staging"
8
- ssh_address = get_config_url(vm_name)
9
- if ssh_address then
10
- puts "Running: ssh -R 52698:localhost:52698 dogids@#{ssh_address}"
7
+ staging_machines = get_config_url("staging")
8
+ if staging_machines.has_key?(vm_name)
9
+ ssh_address = get_config_url("staging",vm_name)
10
+ if vm_name == "lb"
11
+ puts "Running: `ssh root@#{ssh_address}`"
12
+ exec("ssh root@#{ssh_address}")
13
+ else
14
+ puts "Running: `ssh -R 52698:localhost:52698 dogids@#{ssh_address}`"
11
15
  exec("ssh -R 52698:localhost:52698 dogids@#{ssh_address}")
12
16
  end
13
17
  else
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dogids-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.19
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jaryd Krishnan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-20 00:00:00.000000000 Z
11
+ date: 2016-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh
@@ -78,6 +78,7 @@ files:
78
78
  - lib/dogids/deploy/staging.rb
79
79
  - lib/dogids/deploy/web.rb
80
80
  - lib/dogids/deploy/worker.rb
81
+ - lib/dogids/reload.rb
81
82
  - lib/dogids/ssh.rb
82
83
  - lib/dogids/ssh/development.rb
83
84
  - lib/dogids/ssh/production.rb