smartmachine 0.8.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +661 -0
  3. data/README.md +147 -0
  4. data/bin/console +14 -0
  5. data/bin/setup +8 -0
  6. data/exe/smartmachine +3 -0
  7. data/lib/smart_machine/apps/app.rb +165 -181
  8. data/lib/smart_machine/apps/container.rb +120 -0
  9. data/lib/smart_machine/apps/manager.rb +182 -0
  10. data/lib/smart_machine/base.rb +24 -6
  11. data/lib/smart_machine/buildpackers/buildpacker.rb +95 -0
  12. data/lib/smart_machine/{engine/buildpacks → buildpackers}/rails/Dockerfile +3 -3
  13. data/lib/smart_machine/buildpackers/rails.rb +221 -0
  14. data/lib/smart_machine/commands/app.rb +112 -0
  15. data/lib/smart_machine/commands/buildpacker.rb +53 -0
  16. data/lib/smart_machine/commands/credentials.rb +17 -0
  17. data/lib/smart_machine/commands/docker.rb +23 -0
  18. data/lib/smart_machine/commands/engine.rb +27 -0
  19. data/lib/smart_machine/commands/grid.rb +33 -0
  20. data/lib/smart_machine/commands/grid_commands/elasticsearch.rb +68 -0
  21. data/lib/smart_machine/commands/grid_commands/minio.rb +65 -0
  22. data/lib/smart_machine/commands/grid_commands/mysql.rb +71 -0
  23. data/lib/smart_machine/commands/grid_commands/nginx.rb +53 -0
  24. data/lib/smart_machine/commands/grid_commands/prereceiver.rb +96 -0
  25. data/lib/smart_machine/commands/grid_commands/redis.rb +65 -0
  26. data/lib/smart_machine/commands/grid_commands/scheduler.rb +15 -0
  27. data/lib/smart_machine/commands/grid_commands/sub_thor.rb +15 -0
  28. data/lib/smart_machine/commands/machine.rb +24 -0
  29. data/lib/smart_machine/commands/syncer.rb +23 -0
  30. data/lib/smart_machine/commands/utilities.rb +37 -0
  31. data/lib/smart_machine/commands.rb +66 -0
  32. data/lib/smart_machine/configuration.rb +79 -0
  33. data/lib/smart_machine/credentials.rb +93 -95
  34. data/lib/smart_machine/docker.rb +144 -143
  35. data/lib/smart_machine/engine/Dockerfile +7 -5
  36. data/lib/smart_machine/engine.rb +104 -79
  37. data/lib/smart_machine/grids/elasticsearch.rb +70 -89
  38. data/lib/smart_machine/grids/minio.rb +79 -68
  39. data/lib/smart_machine/grids/mysql.rb +207 -202
  40. data/lib/smart_machine/grids/nginx.rb +176 -135
  41. data/lib/smart_machine/grids/prereceiver/Dockerfile +2 -2
  42. data/lib/smart_machine/grids/prereceiver/pre-receive +17 -0
  43. data/lib/smart_machine/grids/prereceiver.rb +169 -169
  44. data/lib/smart_machine/grids/redis.rb +75 -57
  45. data/lib/smart_machine/grids/scheduler/Dockerfile +1 -1
  46. data/lib/smart_machine/logger.rb +26 -26
  47. data/lib/smart_machine/machine.rb +128 -194
  48. data/lib/smart_machine/scp.rb +15 -0
  49. data/lib/smart_machine/ssh.rb +69 -40
  50. data/lib/smart_machine/syncer.rb +133 -0
  51. data/lib/smart_machine/templates/dotsmartmachine/Gemfile +7 -0
  52. data/lib/smart_machine/templates/dotsmartmachine/config/elasticsearch.yml +5 -0
  53. data/lib/smart_machine/templates/dotsmartmachine/config/environment.rb +0 -9
  54. data/lib/smart_machine/templates/dotsmartmachine/config/minio.yml +13 -0
  55. data/lib/smart_machine/templates/dotsmartmachine/config/mysql/schedule.rb +3 -3
  56. data/lib/smart_machine/templates/dotsmartmachine/config/mysql.yml +13 -0
  57. data/lib/smart_machine/templates/dotsmartmachine/config/prereceiver.yml +7 -0
  58. data/lib/smart_machine/templates/dotsmartmachine/config/redis.yml +15 -0
  59. data/lib/smart_machine/templates/dotsmartmachine/config/users.yml +1 -1
  60. data/lib/smart_machine/templates/dotsmartmachine/gitignore-template +47 -0
  61. data/lib/smart_machine/templates/dotsmartmachine/{grids/elasticsearch/data → vendor}/.keep +0 -0
  62. data/lib/smart_machine/version.rb +30 -6
  63. data/lib/smart_machine.rb +42 -16
  64. metadata +97 -47
  65. data/CHANGELOG.rdoc +0 -0
  66. data/MIT-LICENSE +0 -21
  67. data/README.rdoc +0 -87
  68. data/bin/buildpacker +0 -8
  69. data/bin/prereceiver +0 -8
  70. data/bin/scheduler +0 -18
  71. data/bin/smartmachine +0 -81
  72. data/bin/smartrunner +0 -33
  73. data/lib/smart_machine/apps/rails.rb +0 -250
  74. data/lib/smart_machine/apps.rb +0 -14
  75. data/lib/smart_machine/boot.rb +0 -32
  76. data/lib/smart_machine/buildpacker.rb +0 -106
  77. data/lib/smart_machine/gem_version.rb +0 -17
  78. data/lib/smart_machine/grids.rb +0 -18
  79. data/lib/smart_machine/sync.rb +0 -120
  80. data/lib/smart_machine/templates/dotsmartmachine/grids/elasticsearch/logs/.keep +0 -0
  81. data/lib/smart_machine/templates/dotsmartmachine/grids/minio/data/.keep +0 -0
  82. data/lib/smart_machine/templates/dotsmartmachine/grids/mysql/backups/.keep +0 -0
  83. data/lib/smart_machine/templates/dotsmartmachine/grids/mysql/data/.keep +0 -0
  84. data/lib/smart_machine/templates/dotsmartmachine/grids/prereceiver/pre-receive +0 -17
  85. data/lib/smart_machine/templates/dotsmartmachine/grids/redis/data/.keep +0 -0
  86. data/lib/smart_machine/user.rb +0 -38
@@ -0,0 +1,53 @@
1
+ module SmartMachine
2
+ module Commands
3
+ class Buildpacker < Thor
4
+ include Utilities
5
+
6
+ desc "install [PACKNAME]", "Install buildpacker"
7
+ def install(packname)
8
+ inside_machine_dir do
9
+ with_docker_running do
10
+ puts "-----> Installing Buildpacker"
11
+ machine = SmartMachine::Machine.new
12
+ machine.run_on_machine commands: "smartengine buildpacker installer #{packname}"
13
+ puts "-----> Buildpacker Installation Complete"
14
+ end
15
+ end
16
+ end
17
+
18
+ desc "uninstall [PACKNAME]", "Uninstall buildpacker"
19
+ def uninstall(packname)
20
+ inside_machine_dir do
21
+ with_docker_running do
22
+ puts "-----> Uninstalling Buildpacker"
23
+ machine = SmartMachine::Machine.new
24
+ machine.run_on_machine commands: "smartengine buildpacker uninstaller #{packname}"
25
+ puts "-----> Buildpacker Uninstallation Complete"
26
+ end
27
+ end
28
+ end
29
+
30
+ desc "installer [PACKNAME]", "Buildpacker installer", hide: true
31
+ def installer(packname)
32
+ inside_engine_machine_dir do
33
+ buildpacker = SmartMachine::Buildpackers::Buildpacker.new(packname: packname)
34
+ buildpacker.installer
35
+ end
36
+ end
37
+
38
+ desc "uninstaller [PACKNAME]", "Buildpacker uninstaller", hide: true
39
+ def uninstaller(packname)
40
+ inside_engine_machine_dir do
41
+ buildpacker = SmartMachine::Buildpackers::Buildpacker.new(packname: packname)
42
+ buildpacker.uninstaller
43
+ end
44
+ end
45
+
46
+ desc "packer", "Pack a buildpack. System command. Should not be used by user.", hide: true
47
+ def packer(packname)
48
+ buildpacker = SmartMachine::Buildpackers::Buildpacker.new(packname: packname)
49
+ buildpacker.packer
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,17 @@
1
+ module SmartMachine
2
+ module Commands
3
+ class Credentials < Thor
4
+ include Utilities
5
+
6
+ default_task :edit
7
+
8
+ desc "edit", "Allows editing the credentials"
9
+ def edit
10
+ inside_machine_dir do
11
+ credentials = SmartMachine::Credentials.new
12
+ credentials.edit
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ module SmartMachine
2
+ module Commands
3
+ class Docker < Thor
4
+ include Utilities
5
+
6
+ desc "install", "Install docker"
7
+ def install
8
+ inside_machine_dir do
9
+ docker = SmartMachine::Docker.new
10
+ docker.install
11
+ end
12
+ end
13
+
14
+ desc "uninstall", "Uninstall docker"
15
+ def uninstall
16
+ inside_machine_dir do
17
+ docker = SmartMachine::Docker.new
18
+ docker.uninstall
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ module SmartMachine
2
+ module Commands
3
+ class Engine < Thor
4
+ include Utilities
5
+
6
+ desc "install", "Install engine"
7
+ def install
8
+ inside_machine_dir do
9
+ with_docker_running do
10
+ engine = SmartMachine::Engine.new
11
+ engine.install
12
+ end
13
+ end
14
+ end
15
+
16
+ desc "uninstall", "Uninstall engine"
17
+ def uninstall
18
+ inside_machine_dir do
19
+ with_docker_running do
20
+ engine = SmartMachine::Engine.new
21
+ engine.uninstall
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,33 @@
1
+ require 'smart_machine/commands/grid_commands/sub_thor'
2
+ require 'smart_machine/commands/grid_commands/elasticsearch'
3
+ require 'smart_machine/commands/grid_commands/minio'
4
+ require 'smart_machine/commands/grid_commands/mysql'
5
+ require 'smart_machine/commands/grid_commands/nginx'
6
+ require 'smart_machine/commands/grid_commands/prereceiver'
7
+ require 'smart_machine/commands/grid_commands/redis'
8
+
9
+ module SmartMachine
10
+ module Commands
11
+ class Grid < Thor
12
+ include Utilities
13
+
14
+ desc "elasticsearch", "Run elasticsearch grid commands"
15
+ subcommand "elasticsearch", GridCommands::Elasticsearch
16
+
17
+ desc "minio", "Run minio grid commands"
18
+ subcommand "minio", GridCommands::Minio
19
+
20
+ desc "mysql", "Run mysql grid commands"
21
+ subcommand "mysql", GridCommands::Mysql
22
+
23
+ desc "nginx", "Run nginx grid commands"
24
+ subcommand "nginx", GridCommands::Nginx
25
+
26
+ desc "prereceiver", "Run prereceiver grid commands"
27
+ subcommand "prereceiver", GridCommands::Prereceiver
28
+
29
+ desc "redis", "Run redis grid commands"
30
+ subcommand "redis", GridCommands::Redis
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,68 @@
1
+ module SmartMachine
2
+ module Commands
3
+ module GridCommands
4
+ class Elasticsearch < SubThor
5
+ include Utilities
6
+
7
+ desc "up", "Take UP the elasticsearch grid"
8
+ option :name, type: :string
9
+ def up
10
+ inside_machine_dir do
11
+ with_docker_running do
12
+ machine = SmartMachine::Machine.new
13
+ name_option = options[:name] ? " --name=#{options[:name]}" : ""
14
+ machine.run_on_machine commands: "echo 'vm.max_map_count=262144' | sudo tee /etc/sysctl.d/60-smartmachine-elasticsearch.conf && sudo sysctl --system"
15
+ machine.run_on_machine commands: "smartengine grid elasticsearch uper#{name_option}"
16
+ end
17
+ end
18
+ end
19
+
20
+ desc "down", "Take DOWN the elasticsearch grid"
21
+ option :name, type: :string
22
+ def down
23
+ inside_machine_dir do
24
+ with_docker_running do
25
+ machine = SmartMachine::Machine.new
26
+ name_option = options[:name] ? " --name=#{options[:name]}" : ""
27
+ machine.run_on_machine commands: "smartengine grid elasticsearch downer#{name_option}"
28
+ # NOTE: sysctl does not reset this setting until restart of system even after sudo sysctl --system is run.
29
+ machine.run_on_machine commands: "test $(docker ps -aq --filter label=smartmachine.elasticsearch.name | wc -l) -eq 0 && test -f /etc/sysctl.d/60-smartmachine-elasticsearch.conf && sudo rm /etc/sysctl.d/60-smartmachine-elasticsearch.conf && sudo sysctl --system"
30
+ end
31
+ end
32
+ end
33
+
34
+ desc "uper", "Elasticsearch grid uper", hide: true
35
+ option :name, type: :string
36
+ def uper
37
+ inside_engine_machine_dir do
38
+ if options[:name]
39
+ elasticsearch = SmartMachine::Grids::Elasticsearch.new(name: options[:name])
40
+ elasticsearch.uper
41
+ else
42
+ SmartMachine.config.grids.elasticsearch.each do |name, config|
43
+ elasticsearch = SmartMachine::Grids::Elasticsearch.new(name: name.to_s)
44
+ elasticsearch.uper
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ desc "downer", "Elasticsearch grid downer", hide: true
51
+ option :name, type: :string
52
+ def downer
53
+ inside_engine_machine_dir do
54
+ if options[:name]
55
+ elasticsearch = SmartMachine::Grids::Elasticsearch.new(name: options[:name])
56
+ elasticsearch.downer
57
+ else
58
+ SmartMachine.config.grids.elasticsearch.each do |name, config|
59
+ elasticsearch = SmartMachine::Grids::Elasticsearch.new(name: name.to_s)
60
+ elasticsearch.downer
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,65 @@
1
+ module SmartMachine
2
+ module Commands
3
+ module GridCommands
4
+ class Minio < SubThor
5
+ include Utilities
6
+
7
+ desc "up", "Take UP the minio grid"
8
+ option :name, type: :string
9
+ def up
10
+ inside_machine_dir do
11
+ with_docker_running do
12
+ machine = SmartMachine::Machine.new
13
+ name_option = options[:name] ? " --name=#{options[:name]}" : ""
14
+ machine.run_on_machine commands: "smartengine grid minio uper#{name_option}"
15
+ end
16
+ end
17
+ end
18
+
19
+ desc "down", "Take DOWN the minio grid"
20
+ option :name, type: :string
21
+ def down
22
+ inside_machine_dir do
23
+ with_docker_running do
24
+ machine = SmartMachine::Machine.new
25
+ name_option = options[:name] ? " --name=#{options[:name]}" : ""
26
+ machine.run_on_machine commands: "smartengine grid minio downer#{name_option}"
27
+ end
28
+ end
29
+ end
30
+
31
+ desc "uper", "Minio grid uper", hide: true
32
+ option :name, type: :string
33
+ def uper
34
+ inside_engine_machine_dir do
35
+ if options[:name]
36
+ minio = SmartMachine::Grids::Minio.new(name: options[:name])
37
+ minio.uper
38
+ else
39
+ SmartMachine.config.grids.minio.each do |name, config|
40
+ minio = SmartMachine::Grids::Minio.new(name: name.to_s)
41
+ minio.uper
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ desc "downer", "Minio grid downer", hide: true
48
+ option :name, type: :string
49
+ def downer
50
+ inside_engine_machine_dir do
51
+ if options[:name]
52
+ minio = SmartMachine::Grids::Minio.new(name: options[:name])
53
+ minio.downer
54
+ else
55
+ SmartMachine.config.grids.minio.each do |name, config|
56
+ minio = SmartMachine::Grids::Minio.new(name: name.to_s)
57
+ minio.downer
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,71 @@
1
+ module SmartMachine
2
+ module Commands
3
+ module GridCommands
4
+ class Mysql < SubThor
5
+ include Utilities
6
+
7
+ desc "up", "Take UP the mysql grid"
8
+ option :name, type: :string
9
+ def up
10
+ inside_machine_dir do
11
+ with_docker_running do
12
+ machine = SmartMachine::Machine.new
13
+ name_option = options[:name] ? " --name=#{options[:name]}" : ""
14
+ machine.run_on_machine commands: "smartengine grid mysql uper#{name_option}"
15
+ end
16
+ end
17
+ end
18
+
19
+ desc "down", "Take DOWN the mysql grid"
20
+ option :name, type: :string
21
+ def down
22
+ inside_machine_dir do
23
+ with_docker_running do
24
+ machine = SmartMachine::Machine.new
25
+ name_option = options[:name] ? " --name=#{options[:name]}" : ""
26
+ machine.run_on_machine commands: "smartengine grid mysql downer#{name_option}"
27
+ end
28
+ end
29
+ end
30
+
31
+ # def flushlogs
32
+ # end
33
+
34
+ # def backup
35
+ # end
36
+
37
+ desc "uper", "Mysql grid uper", hide: true
38
+ option :name, type: :string
39
+ def uper
40
+ inside_engine_machine_dir do
41
+ if options[:name]
42
+ mysql = SmartMachine::Grids::Mysql.new(name: options[:name])
43
+ mysql.uper
44
+ else
45
+ SmartMachine.config.grids.mysql.each do |name, config|
46
+ mysql = SmartMachine::Grids::Mysql.new(name: name.to_s)
47
+ mysql.uper
48
+ end
49
+ end
50
+ end
51
+ end
52
+
53
+ desc "downer", "Mysql grid downer", hide: true
54
+ option :name, type: :string
55
+ def downer
56
+ inside_engine_machine_dir do
57
+ if options[:name]
58
+ mysql = SmartMachine::Grids::Mysql.new(name: options[:name])
59
+ mysql.downer
60
+ else
61
+ SmartMachine.config.grids.mysql.each do |name, config|
62
+ mysql = SmartMachine::Grids::Mysql.new(name: name.to_s)
63
+ mysql.downer
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,53 @@
1
+ module SmartMachine
2
+ module Commands
3
+ module GridCommands
4
+ class Nginx < SubThor
5
+ include Utilities
6
+
7
+ desc "up", "Take UP the nginx grid"
8
+ def up
9
+ inside_machine_dir do
10
+ with_docker_running do
11
+ machine = SmartMachine::Machine.new
12
+ machine.run_on_machine commands: "smartengine grid nginx uper"
13
+ end
14
+ end
15
+ end
16
+
17
+ desc "down", "Take DOWN the nginx grid"
18
+ def down
19
+ inside_machine_dir do
20
+ with_docker_running do
21
+ machine = SmartMachine::Machine.new
22
+ machine.run_on_machine commands: "smartengine grid nginx downer"
23
+ end
24
+ end
25
+ end
26
+
27
+ desc "users:edit", "Allows editing the users"
28
+ map "users:edit" => :users_edit
29
+ def users_edit
30
+ inside_machine_dir do
31
+ system("#{ENV['EDITOR']} config/users.yml")
32
+ end
33
+ end
34
+
35
+ desc "uper", "Nginx grid uper", hide: true
36
+ def uper
37
+ inside_engine_machine_dir do
38
+ nginx = SmartMachine::Grids::Nginx.new
39
+ nginx.uper
40
+ end
41
+ end
42
+
43
+ desc "downer", "Nginx grid downer", hide: true
44
+ def downer
45
+ inside_engine_machine_dir do
46
+ nginx = SmartMachine::Grids::Nginx.new
47
+ nginx.downer
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,96 @@
1
+ module SmartMachine
2
+ module Commands
3
+ module GridCommands
4
+ class Prereceiver < SubThor
5
+ include Utilities
6
+
7
+ desc "install", "Install prereceiver grid"
8
+ def install
9
+ inside_machine_dir do
10
+ with_docker_running do
11
+ puts "-----> Installing Prereceiver"
12
+ machine = SmartMachine::Machine.new
13
+ machine.run_on_machine commands: "smartengine grid prereceiver installer"
14
+ puts "-----> Prereceiver Installation Complete"
15
+ end
16
+ end
17
+ end
18
+
19
+ desc "uninstall", "Uninstall prereceiver grid"
20
+ def uninstall
21
+ inside_machine_dir do
22
+ with_docker_running do
23
+ puts "-----> Installing Prereceiver"
24
+ machine = SmartMachine::Machine.new
25
+ machine.run_on_machine commands: "smartengine grid prereceiver uninstaller"
26
+ puts "-----> Prereceiver Installation Complete"
27
+ end
28
+ end
29
+ end
30
+
31
+ desc "up", "Take UP the prereceiver grid"
32
+ def up
33
+ inside_machine_dir do
34
+ with_docker_running do
35
+ machine = SmartMachine::Machine.new
36
+ machine.run_on_machine commands: "smartengine grid prereceiver uper"
37
+ end
38
+ end
39
+ end
40
+
41
+ desc "down", "Take DOWN the prereceiver grid"
42
+ def down
43
+ inside_machine_dir do
44
+ with_docker_running do
45
+ machine = SmartMachine::Machine.new
46
+ machine.run_on_machine commands: "smartengine grid prereceiver downer"
47
+ end
48
+ end
49
+ end
50
+
51
+ desc "installer", "Prereceiver grid installer", hide: true
52
+ def installer
53
+ inside_engine_machine_dir do
54
+ name, config = SmartMachine.config.grids.prereceiver.first
55
+ prereceiver = SmartMachine::Grids::Prereceiver.new(name: name.to_s)
56
+ prereceiver.installer
57
+ end
58
+ end
59
+
60
+ desc "uninstaller", "Prereceiver grid uninstaller", hide: true
61
+ def uninstaller
62
+ inside_engine_machine_dir do
63
+ name, config = SmartMachine.config.grids.prereceiver.first
64
+ prereceiver = SmartMachine::Grids::Prereceiver.new(name: name.to_s)
65
+ prereceiver.uninstaller
66
+ end
67
+ end
68
+
69
+ desc "uper", "Prereceiver grid uper", hide: true
70
+ def uper
71
+ inside_engine_machine_dir do
72
+ name, config = SmartMachine.config.grids.prereceiver.first
73
+ prereceiver = SmartMachine::Grids::Prereceiver.new(name: name.to_s)
74
+ prereceiver.uper
75
+ end
76
+ end
77
+
78
+ desc "downer", "Prereceiver grid downer", hide: true
79
+ def downer
80
+ inside_engine_machine_dir do
81
+ name, config = SmartMachine.config.grids.prereceiver.first
82
+ prereceiver = SmartMachine::Grids::Prereceiver.new(name: name.to_s)
83
+ prereceiver.downer
84
+ end
85
+ end
86
+
87
+ desc "prereceive", "Prereceiver grid prereceive", hide: true
88
+ def prereceive(appname, username, oldrev, newrev, refname)
89
+ name, config = SmartMachine.config.grids.prereceiver.first
90
+ prereceiver = SmartMachine::Grids::Prereceiver.new(name: name.to_s)
91
+ prereceiver.prereceive(appname: appname, username: username, oldrev: oldrev, newrev: newrev, refname: refname)
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,65 @@
1
+ module SmartMachine
2
+ module Commands
3
+ module GridCommands
4
+ class Redis < SubThor
5
+ include Utilities
6
+
7
+ desc "up", "Take UP the redis grid"
8
+ option :name, type: :string
9
+ def up
10
+ inside_machine_dir do
11
+ with_docker_running do
12
+ machine = SmartMachine::Machine.new
13
+ name_option = options[:name] ? " --name=#{options[:name]}" : ""
14
+ machine.run_on_machine commands: "smartengine grid redis uper#{name_option}"
15
+ end
16
+ end
17
+ end
18
+
19
+ desc "down", "Take DOWN the redis grid"
20
+ option :name, type: :string
21
+ def down
22
+ inside_machine_dir do
23
+ with_docker_running do
24
+ machine = SmartMachine::Machine.new
25
+ name_option = options[:name] ? " --name=#{options[:name]}" : ""
26
+ machine.run_on_machine commands: "smartengine grid redis downer#{name_option}"
27
+ end
28
+ end
29
+ end
30
+
31
+ desc "uper", "Redis grid uper", hide: true
32
+ option :name, type: :string
33
+ def uper
34
+ inside_engine_machine_dir do
35
+ if options[:name]
36
+ redis = SmartMachine::Grids::Redis.new(name: options[:name])
37
+ redis.uper
38
+ else
39
+ SmartMachine.config.grids.redis.each do |name, config|
40
+ redis = SmartMachine::Grids::Redis.new(name: name.to_s)
41
+ redis.uper
42
+ end
43
+ end
44
+ end
45
+ end
46
+
47
+ desc "downer", "Redis grid downer", hide: true
48
+ option :name, type: :string
49
+ def downer
50
+ inside_engine_machine_dir do
51
+ if options[:name]
52
+ redis = SmartMachine::Grids::Redis.new(name: options[:name])
53
+ redis.downer
54
+ else
55
+ SmartMachine.config.grids.redis.each do |name, config|
56
+ redis = SmartMachine::Grids::Redis.new(name: name.to_s)
57
+ redis.downer
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,15 @@
1
+ module SmartMachine
2
+ module Commands
3
+ module GridCommands
4
+ class Scheduler < SubThor
5
+ include Utilities
6
+
7
+ # def start
8
+ # end
9
+
10
+ # def stop
11
+ # end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ module SmartMachine
2
+ module Commands
3
+ module GridCommands
4
+ class SubThor < Thor
5
+ def self.banner(command, namespace = nil, subcommand = false)
6
+ "#{basename} grid #{subcommand_prefix} #{command.usage}"
7
+ end
8
+
9
+ def self.subcommand_prefix
10
+ self.name.gsub(%r{.*::}, '').gsub(%r{^[A-Z]}) { |match| match[0].downcase }.gsub(%r{[A-Z]}) { |match| "-#{match[0].downcase}" }
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,24 @@
1
+ module SmartMachine
2
+ module Commands
3
+ class Machine < Thor
4
+ include Utilities
5
+
6
+ desc "ssh", "SSH into the machine"
7
+ def ssh
8
+ inside_machine_dir do
9
+ ssh = SmartMachine::SSH.new
10
+ ssh.login
11
+ end
12
+ end
13
+
14
+ desc "run [COMMAND]", "Run commands on the machine"
15
+ map ["run"] => :runner
16
+ def runner(*args)
17
+ inside_machine_dir do
18
+ machine = SmartMachine::Machine.new
19
+ machine.run_on_machine(commands: "#{args.join(' ')}")
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,23 @@
1
+ module SmartMachine
2
+ module Commands
3
+ class Syncer < Thor
4
+ include Utilities
5
+
6
+ desc "sync", "Sync files"
7
+ def sync
8
+ inside_machine_dir do
9
+ syncer = SmartMachine::Syncer.new
10
+ syncer.sync
11
+ end
12
+ end
13
+
14
+ desc "rsync", "Run rsync command. System command. Should not be used by user.", hide: true
15
+ def rsync(*args)
16
+ inside_engine_machine_dir do
17
+ syncer = SmartMachine::Syncer.new
18
+ syncer.rsync(args)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end