adminix 0.1.49 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/adminix.gemspec +1 -4
  4. data/app/assets/images/logo.png +0 -0
  5. data/app/assets/javascripts/application.js +50 -0
  6. data/app/assets/javascripts/bootstrap.min.js +7 -0
  7. data/app/assets/javascripts/dataTables.bootstrap4.js +184 -0
  8. data/app/assets/javascripts/jquery.dataTables.js +15243 -0
  9. data/app/assets/javascripts/jquery.min.js +2 -0
  10. data/app/assets/javascripts/sb-admin-2.min.js +6 -0
  11. data/app/assets/stylesheets/bootstrap.min.css +6 -0
  12. data/app/assets/stylesheets/dataTables.bootstrap.css +314 -0
  13. data/app/assets/stylesheets/dataTables.responsive.css +106 -0
  14. data/app/assets/stylesheets/font-awesome.min.css +4 -0
  15. data/app/assets/stylesheets/sb-admin-2.min.css +5 -0
  16. data/app/views/scripts/restart_watcher.sh.erb +9 -0
  17. data/app/views/scripts/run_script.sh.erb +12 -0
  18. data/app/views/scripts/start_process.sh.erb +7 -0
  19. data/app/views/scripts/stop_process.sh.erb +7 -0
  20. data/app/views/scripts/update_process.sh.erb +24 -0
  21. data/app/views/scripts/update_watcher.sh.erb +3 -0
  22. data/app/views/web/dashboard.html.erb +90 -0
  23. data/app/views/web/job.html.erb +46 -0
  24. data/app/views/web/link.html.erb +12 -0
  25. data/app/views/web/loadstamp.html.erb +57 -0
  26. data/app/views/web/log.html.erb +49 -0
  27. data/app/views/web/partials/footer.html.erb +11 -0
  28. data/app/views/web/partials/header.html.erb +50 -0
  29. data/bin/install_adminix +40 -0
  30. data/bin/push +13 -0
  31. data/development.log +0 -0
  32. data/exe/adminix +91 -28
  33. data/lib/adminix.rb +42 -5
  34. data/lib/adminix/config.rb +170 -96
  35. data/lib/adminix/entities.rb +5 -0
  36. data/lib/adminix/entities/job.rb +54 -0
  37. data/lib/adminix/entities/log.rb +21 -0
  38. data/lib/adminix/entities/service.rb +211 -0
  39. data/lib/adminix/entities/sysload_stamp.rb +37 -0
  40. data/lib/adminix/entities/variable.rb +32 -0
  41. data/lib/adminix/helpers.rb +7 -2
  42. data/lib/adminix/helpers/command.rb +73 -0
  43. data/lib/adminix/helpers/files.rb +82 -0
  44. data/lib/adminix/helpers/log_reader.rb +16 -0
  45. data/lib/adminix/helpers/net_http.rb +63 -0
  46. data/lib/adminix/helpers/output.rb +28 -0
  47. data/lib/adminix/helpers/systemctl.rb +54 -0
  48. data/lib/adminix/services.rb +3 -0
  49. data/lib/adminix/services/app_service.rb +143 -0
  50. data/lib/adminix/services/logs_service.rb +13 -0
  51. data/lib/adminix/services/system_load_service.rb +16 -0
  52. data/lib/adminix/version.rb +1 -1
  53. data/lib/adminix/watcher.rb +76 -144
  54. data/lib/adminix/web.rb +4 -0
  55. data/lib/adminix/web/router.rb +98 -0
  56. data/lib/adminix/web/server.rb +60 -0
  57. data/lib/adminix/web/view_helper.rb +14 -0
  58. data/lib/event_machine.rb +2 -0
  59. data/lib/event_machine/http_server.rb +2 -0
  60. data/lib/event_machine/http_server/response.rb +314 -0
  61. data/lib/event_machine/http_server/server.rb +107 -0
  62. data/lib/event_machine/tail.rb +2 -0
  63. data/lib/event_machine/tail/filetail.rb +470 -0
  64. data/lib/event_machine/tail/globwatcher.rb +294 -0
  65. metadata +60 -45
  66. data/lib/adminix/errors.rb +0 -7
  67. data/lib/adminix/helpers/file.rb +0 -13
  68. data/lib/adminix/helpers/http.rb +0 -19
  69. data/lib/adminix/log_watch_handler.rb +0 -23
  70. data/lib/adminix/server_setup.rb +0 -76
  71. data/lib/adminix/service.rb +0 -179
  72. data/lib/adminix/setup.rb +0 -3
  73. data/lib/adminix/setup/routes.rb +0 -113
  74. data/lib/adminix/setup/services.rb +0 -139
  75. data/lib/adminix/setup/views.rb +0 -183
  76. data/lib/adminix/system.rb +0 -106
  77. data/views/daemon_scripts/upstart.conf.erb +0 -23
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+
3
+ # Here you should add some bash instruction of how to restart Adminix watcher
4
+ # Each system has own solutions for that
5
+ # If you use Debian based distro you can try using systemctl process manager
6
+ #
7
+ # Example:
8
+ #
9
+ # sudo systemctl restart adminix.service
@@ -0,0 +1,12 @@
1
+ #!/bin/bash
2
+
3
+ # We want to have latest environment variables set here
4
+ echo "Setting ENV variables..."
5
+ eval $(adminix env)
6
+
7
+ # Here you should add some bash instruction of how to run custom script
8
+ #
9
+ # Example:
10
+ #
11
+ # cd /home/ubuntu/application/current
12
+ exec $@
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+
3
+ # Here you should add some bash instruction of how to start your application
4
+ #
5
+ # Example:
6
+ #
7
+ # sudo systemctl start my_app.service
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+
3
+ # Here you should add some bash instruction of how to start your application
4
+ #
5
+ # Example:
6
+ #
7
+ # sudo systemctl start my_app.service
@@ -0,0 +1,24 @@
1
+ #!/bin/bash
2
+
3
+ # We want to have latest environment variables set here
4
+ echo "Setting ENV variables..."
5
+ eval $(adminix env)
6
+
7
+ # Here you should add some bash instruction of how to run custom script
8
+ #
9
+ # Example:
10
+ #
11
+ # cd /home/ubuntu/application
12
+ #
13
+ # rm -rf tmp legacy
14
+ # git clone <GIT_REPO> -b <GIT_BRANCH> tmp
15
+ #
16
+ # adminix stop_process
17
+ #
18
+ # mv current legacy
19
+ # mv tmp current
20
+ #
21
+ # cd current
22
+ # bundle exec rails assets:precompile
23
+ #
24
+ # adminix start_process
@@ -0,0 +1,3 @@
1
+ #!/bin/bash
2
+
3
+ sudo gem install adminix
@@ -0,0 +1,90 @@
1
+ <%= view('partials/header.html') %>
2
+
3
+ <div class="content-wrapper">
4
+ <div class="container-fluid">
5
+ </div>
6
+ </div>
7
+ <div class = "row">
8
+ <div class= "panel panel-default">
9
+ <div class="panel-heading">
10
+ <h2>Service</h2>
11
+ </div>
12
+ <div class ="panel-body">
13
+
14
+ <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
15
+ <tr>
16
+ <th>Device ID</th>
17
+ <td><%= Adminix.watcher.service.device_id %></td>
18
+ </tr>
19
+ <tr>
20
+ <th>Service ID</td>
21
+ <td><%= Adminix.config.service_id %></td>
22
+ </tr>
23
+ <tr>
24
+ <th>Logs</th>
25
+ <td><%= Adminix.watcher.service.logs.count%></td>
26
+ </tr>
27
+ <tr>
28
+ <th>Jobs</th>
29
+ <td><%= Adminix.watcher.service.jobs.count%></td>
30
+ </tr>
31
+ <tr>
32
+ <th>Loadstamps</th>
33
+ <td><%= Adminix.watcher.service.load_stamps.count%></td>
34
+ </tr>
35
+
36
+ </table>
37
+ </div>
38
+ </div>
39
+
40
+ </div>
41
+ <div class="row">
42
+ <div class= "panel panel-default">
43
+ <div class="panel-heading">
44
+ <h2>Configurations</h2>
45
+ </div>
46
+ <div class ="panel-body">
47
+ <div class="table-responsive">
48
+ <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
49
+ <tr>
50
+ <th>Secret Key</th>
51
+ <td><%= Adminix.config.secret_key %></td>
52
+ </tr>
53
+ <tr>
54
+ <th>Watcher Period</th>
55
+ <td><%= Adminix.config.watcher_period %></td>
56
+ </tr>
57
+ <tr>
58
+ <th>API host</th>
59
+ <td><%= Adminix.config.api_host %></td>
60
+ </tr>
61
+ <tr>
62
+ <th>Server Port</th>
63
+ <td><%= Adminix.config.server_port %></td>
64
+ </tr>
65
+ <tr>
66
+ <th>Configured Root Path</th>
67
+ <td><%= Adminix.config.config_root_path %></td>
68
+ </tr>
69
+ <tr>
70
+ <th>Systemctl</th>
71
+ <td><%= Adminix.config.systemctl%></td>
72
+ </tr>
73
+ <tr>
74
+ <th>Data Storage Limits</th>
75
+ <td><%= Adminix.config.data_storage_limit %></td>
76
+ </tr>
77
+ <tr>
78
+ <th>Watch System Load</th>
79
+ <td><%= Adminix.config.watch_system_load %></td>
80
+ </tr>
81
+ </table>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ </div>
86
+ </div>
87
+ </div>
88
+
89
+
90
+ <%= view('partials/footer.html') %>
@@ -0,0 +1,46 @@
1
+ <%= view('partials/header.html') %>
2
+ <head>
3
+ <title>
4
+ Adminix Jobs
5
+ </title>
6
+ </head>
7
+
8
+ <body>
9
+ <div class="content-wrapper">
10
+ <div class="container-fluid">
11
+ <div class= "panel panel-default">
12
+ <div class="panel-heading">
13
+ <h2>Job</h2>
14
+ </div>
15
+ <div class ="panel-body">
16
+ <div class="table-responsive">
17
+ <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
18
+ <tr>
19
+ <th>ID</th>
20
+ <th>Status</th>
21
+ <th>Output</th>
22
+ </tr>
23
+ <% Adminix.watcher.service.jobs.each do |job| %>
24
+ <tr>
25
+ <td><%=job.id%></td>
26
+ <td><%=job.status%></td>
27
+ <td><%=job.output%></td>
28
+ </tr>
29
+ <% end %>
30
+ </table>
31
+ </div>
32
+ <div class="row">
33
+ <div class="col-sm-1 col-sm-offset-5">
34
+ <a class="<%= @page == 1 ? "btn btn-primary btn-block disabled" : "btn btn-primary btn-block active" %>" role="button" aria-pressed="true" href="<%="job?page=#{@page-1}&per_page=#{@per_page}"%>">Previous </a>
35
+ </div>
36
+ <div class="col-sm-1">
37
+ <a class="<%= (@page * @per_page) >= (Adminix.watcher.service.jobs.count) ? "btn btn-primary btn-block disabled" : "btn btn-primary btn-block active" %>" role="button" aria-pressed="true" href="<%= "job?page=#{@page+1}&per_page=#{@per_page}" %>">Next
38
+ </a>
39
+ </div>
40
+ </div>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ </body>
46
+ <%= view('partials/footer.html') %>
@@ -0,0 +1,12 @@
1
+ <html>
2
+ <head>
3
+ <title>Adminix start</title>
4
+ </head>
5
+ <body>
6
+ <script type="text/javascript">
7
+ var host = window.location.protocol + '//' + window.location.host;
8
+ var newPath = "https://adminix.io/setup-server/init?host=" + host;
9
+ window.location.href = newPath;
10
+ </script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,57 @@
1
+
2
+ <%= view('partials/header.html') %>
3
+
4
+ <head>
5
+ <title>
6
+ Adminix Loadstamps
7
+ </title>
8
+ </head>
9
+
10
+ <body>
11
+ <div class="content-wrapper">
12
+ <div class="container-fluid">
13
+ <div class= "panel panel-default">
14
+ <div class="panel-heading">
15
+ <h2>Loadstamp</h2>
16
+ </div>
17
+ <div class ="panel-body">
18
+ <div class="table-responsive">
19
+ <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
20
+ <tr>
21
+ <th>Memory Usage</th>
22
+ <th>CPU Load</th>
23
+ <th>Disk Usage</th>
24
+ <th>Temperature</th>
25
+ <th>Created At</th>
26
+ </tr>
27
+ <% retrieve_data(Adminix.watcher.service.load_stamps,@page,@per_page).each do |loadstamp| %>
28
+ <tr>
29
+ <td><%=loadstamp.memory_usage_mb%></td>
30
+ <td><%=loadstamp.cpu_load_percents%></td>
31
+ <td><%=loadstamp.disk_usage_mb%></td>
32
+ <td><%=loadstamp.temperature%></td>
33
+ <td><%=loadstamp.created_at%></td>
34
+ </tr>
35
+ <% end %>
36
+ </table>
37
+ </div>
38
+ <div class="row">
39
+ <div style="margin-left:20px;"><%= (Adminix.watcher.service.load_stamps.count) == 0 ? "Showing 0 to 0 of 0 entries" : ((@page * @per_page) >= (Adminix.watcher.service.load_stamps.count) ? "Showing #{(@page - 1) * @per_page + 1} to #{Adminix.watcher.service.load_stamps.count} of #{Adminix.watcher.service.load_stamps.count} entries" : "Showing #{(@page - 1) * @per_page + 1} to #{(@page * @per_page)} of #{Adminix.watcher.service.load_stamps.count} entries")%></div>
40
+ <div class="col-sm-1 col-sm-offset-5">
41
+ <a class="<%= @page == 1 ? "btn btn-primary btn-block disabled" : "btn btn-primary btn-block active" %>" role="button" aria-pressed="true" href="<%="loadstamp?page=#{@page-1}&per_page=#{@per_page}"%>">Previous </a>
42
+ </div>
43
+ <div class="col-sm-1">
44
+ <a class="<%= (@page * @per_page) >= (Adminix.watcher.service.load_stamps.count) ? "btn btn-primary btn-block disabled" : "btn btn-primary btn-block active" %>" role="button" aria-pressed="true" href="<%= "loadstamp?page=#{@page+1}&per_page=#{@per_page}" %>">Next </a>
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </div>
50
+ </div>
51
+ </body>
52
+
53
+ <%= view('partials/footer.html') %>
54
+
55
+
56
+
57
+
@@ -0,0 +1,49 @@
1
+
2
+ <%= view('partials/header.html') %>
3
+
4
+ <head>
5
+ <title>
6
+ Adminix Logs
7
+ </title>
8
+ </head>
9
+
10
+ <body>
11
+ <div class="content-wrapper">
12
+ <div class="container-fluid">
13
+ <div class= "panel panel-default">
14
+ <div class="panel-heading">
15
+ <h2>Log</h2>
16
+ </div>
17
+ <div class ="panel-body">
18
+ <div class="table-responsive">
19
+ <table class="table table-bordered" id="dataTable" width="100%" cellspacing="0">
20
+ <tr>
21
+ <th>Message</th>
22
+ <th>Tag</th>
23
+ <th>Created at</th>
24
+ </tr>
25
+ <% Adminix.watcher.service.logs.each do |log| %>
26
+ <tr>
27
+ <td><%=log.message%></td>
28
+ <td><%=log.tag%></td>
29
+ <td><%=log.created_at%></td>
30
+ </tr>
31
+ <% end %>
32
+ </table>
33
+ </div>
34
+ <div class="row">
35
+ <div style="margin-left:20px;"><%= (Adminix.watcher.service.logs.count) == 0 ? "Showing 0 to 0 of 0 entries" : ((@page * @per_page) >= (Adminix.watcher.service.logs.count) ? "Showing #{(@page - 1) * @per_page + 1} to #{Adminix.watcher.service.logs.count} of #{Adminix.watcher.service.logs.count} entries" : "Showing #{(@page - 1) * @per_page + 1} to #{(@page * @per_page)} of #{Adminix.watcher.service.logs.count} entries")%></div>
36
+ <div class="col-sm-1 col-sm-offset-5">
37
+ <a class="<%= @page == 1 ? "btn btn-primary btn-block disabled" : "btn btn-primary btn-block active" %>" role="button" aria-pressed="true" href="<%="log?page=#{@page-1}&per_page=#{@per_page}"%>">Previous </a>
38
+ </div>
39
+ <div class="col-sm-1">
40
+ <a class="<%= (@page * @per_page) >= (Adminix.watcher.service.logs.count) ? "btn btn-primary btn-block disabled" : "btn btn-primary btn-block active" %>" role="button" aria-pressed="true" href="<%= "log?page=#{@page+1}&per_page=#{@per_page}" %>">Next </a>
41
+ </div>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ </div>
47
+ </body>
48
+
49
+ <%= view('partials/footer.html') %>
@@ -0,0 +1,11 @@
1
+
2
+ <!-- Bootstrap core JavaScript-->
3
+ <script src="/javascripts/jquery.min.js"></script>
4
+ <script src="/javascripts/bootstrap.min.js"></script>
5
+ <!-- Page level plugin JavaScript-->
6
+ <script src="/javascripts/jquery.dataTables.js"></script>
7
+ <script src="/javascripts/dataTables.bootstrap4.js"></script>
8
+
9
+ <script src="/javascripts/application.js"></script>
10
+
11
+
@@ -0,0 +1,50 @@
1
+ <%
2
+ menu = [
3
+ ['', 'Dashboard'],
4
+ ['log', 'Logs'],
5
+ ['job', 'Jobs'],
6
+ ['loadstamp', 'Loadstamps']
7
+ ]
8
+ %>
9
+ <html>
10
+ <head>
11
+ <meta charset="utf-8">
12
+ <!-- Bootstrap Core CSS -->
13
+ <link href="/stylesheets/bootstrap.min.css" rel="stylesheet">
14
+ <!-- DataTables CSS -->
15
+ <link href="/stylesheets/dataTables.bootstrap.css" rel="stylesheet">
16
+ <!-- DataTables Responsive CSS -->
17
+ <link href="/stylesheets/dataTables.responsive.css" rel="stylesheet">
18
+ <!-- Custom CSS -->
19
+ <link href="/stylesheets/sb-admin-2.css" rel="stylesheet">
20
+ <!-- Custom Fonts -->
21
+ <link href="/stylesheets/font-awesome.min.css" rel="stylesheet" type="text/css">
22
+ </head>
23
+ <body>
24
+ <div class="navbar navbar-default navbar-static-top">
25
+ <div class = "row" style="margin:10px;">
26
+ <a href= "/"><img height="50" src="/images/logo.png" /></a>
27
+ </div>
28
+ <div>
29
+ <ul class="nav nav-tabs">
30
+ <% menu.each do |item| %>
31
+ <li role="presentation" class="<%= "/#{item[0]}" == @http_request_uri ? 'nav-item nav-link active' : 'nav-item nav-link' %>">
32
+ <a href="<%= item[0] == '' ? '/' : item[0] %>" ><%= item[1] %></a>
33
+ </li>
34
+ <% end %>
35
+ </ul>
36
+ </div>
37
+ <div class ="row" style="margin:10px;">
38
+ <div class="col-md-1">
39
+ <a href="#" class="btn btn-success btn-block active" id="start_script" role="button" aria-pressed="true">START</a>
40
+ </div>
41
+ <div class="col-md-1">
42
+ <a href="#" class="btn btn-danger btn-block active" id="stop_script" role="button" aria-pressed="true">STOP</a>
43
+ </div>
44
+ <div class="col-md-2">
45
+ <a onClick="javascript:void(0)" class="btn btn-warning btn-block active" id="refreshButton" role="button" aria-pressed="true">AUTO RELOAD OFF</a>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ </body>
50
+ </html>
@@ -0,0 +1,40 @@
1
+ #!/bin/bash
2
+ # curl https://ac6932d63852ed25026e205753b59d03a73ef2c7@raw.githubusercontent.com/adminixio/adminix-cli/master/bin/install_adminix | sudo bin/bash
3
+
4
+ if [ -x "$(command -v apt-get)" ]; then
5
+ echo "Installing required libraries..."
6
+ apt-get update
7
+ apt-get install -y ruby-full git-core curl tar build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev software-properties-common libffi-dev
8
+ gem install bundler
9
+ elif [ -x "$(command -v brew)" ]; then
10
+ echo "Installing required libraries..."
11
+ brew install ruby git curl
12
+ fi
13
+
14
+ if ! [ -x "$(command -v ruby)" ]; then
15
+ echo "Error: Ruby is not installed." >&2
16
+ exit 1
17
+ fi
18
+
19
+ echo ""
20
+ echo "Getting latest Adminix-CLI source..."
21
+ cd /tmp
22
+ #rm -rf adminixio-adminix-cli-*
23
+ rm -rf adminix-cli
24
+ #curl -L https://ac6932d63852ed25026e205753b59d03a73ef2c7@api.github.com/repos/adminixio/adminix-cli/tarball | tar zx
25
+ git clone https://ac6932d63852ed25026e205753b59d03a73ef2c7:x-oauth-basic@github.com/adminixio/adminix-cli.git
26
+ #cd adminixio-adminix-cli-*
27
+ cd adminix-cli
28
+
29
+ echo ""
30
+ echo "Installing Adminix-CLI..."
31
+ bundle install
32
+ gem build adminix.gemspec
33
+ gem install adminix-*
34
+
35
+ echo ""
36
+ echo "Latest Adminix-CLI has been installed"
37
+ adminix version
38
+
39
+ echo ""
40
+ adminix help
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bundler/setup'
4
+ require_relative '../lib/adminix'
5
+
6
+ gem_file = "adminix-#{Adminix::VERSION}.gem"
7
+
8
+ `gem build adminix.gemspec`
9
+ `gem install #{gem_file}`
10
+ `gem push #{gem_file}`
11
+ `rm #{gem_file}`
12
+
13
+ puts 'OK'