adminix 0.1.49 → 0.2

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 (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'