arnold 0.0.1
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.
- data/LICENSE +21 -0
- data/README.md +92 -0
- data/bin/arnold +82 -0
- data/doc/certs/README +1 -0
- data/doc/certs/server.crt +15 -0
- data/doc/certs/server.key +15 -0
- data/doc/config.yaml +16 -0
- data/doc/postjson.rb +42 -0
- data/lib/arnold/controller.rb +6 -0
- data/lib/arnold/controller/cli.rb +65 -0
- data/lib/arnold/controller/web.rb +31 -0
- data/lib/arnold/monkeypatch.rb +14 -0
- data/lib/arnold/node.rb +86 -0
- data/lib/arnold/node_manager.rb +113 -0
- data/lib/arnold/provisioner.rb +23 -0
- data/lib/arnold/provisioner/cloud_provisioner.rb +24 -0
- data/lib/arnold/provisioner/null.rb +14 -0
- data/lib/arnold/server.rb +110 -0
- data/public/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/public/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/public/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/public/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/public/jquery-ui.css +464 -0
- data/public/jquery.js +9301 -0
- data/public/scripts.js +21 -0
- data/public/style.css +36 -0
- data/views/error.erb +8 -0
- data/views/layout.erb +21 -0
- data/views/new.erb +26 -0
- data/views/node.erb +42 -0
- data/views/nodes.erb +14 -0
- metadata +104 -0
data/public/scripts.js
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
$(document).ready(function(){
|
2
|
+
$('input#newparam').click( function() {
|
3
|
+
addParam($('table.parameters'));
|
4
|
+
});
|
5
|
+
|
6
|
+
// activate the current tab
|
7
|
+
$('a[href="'+window.location.pathname+'"]').parent().addClass("ui-tabs-selected ui-state-active");
|
8
|
+
});
|
9
|
+
|
10
|
+
function addParam(table) {
|
11
|
+
param = prompt('Enter the name of the new parameter','ParamName');
|
12
|
+
if (param != null && param != "") {
|
13
|
+
if ($('input#param_' + param).length == 0) {
|
14
|
+
label='<label for="param_' + param +'">' + param + '</label>'
|
15
|
+
input='<input type="text" class="value" size="100" name="param_' + param + '" id="param_' + param + '" value="">'
|
16
|
+
table.append('<tr class="unsaved"><td>' + label + '</td><td>' + input + '</td></tr>');
|
17
|
+
$('input#param_' + param).focus();
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
data/public/style.css
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
table {
|
2
|
+
width: 850px;
|
3
|
+
border: 1px solid #ccc;
|
4
|
+
background: #efefef;
|
5
|
+
border-spacing: 0;
|
6
|
+
-moz-border-radius: 5px;
|
7
|
+
border-radius: 5px;
|
8
|
+
margin: 1em 0;
|
9
|
+
}
|
10
|
+
th {
|
11
|
+
border-bottom: 2px solid #999;
|
12
|
+
text-align: left;
|
13
|
+
}
|
14
|
+
tr.even {
|
15
|
+
background: #b3c6ae;
|
16
|
+
}
|
17
|
+
tr.unsaved {
|
18
|
+
background: #efd540;
|
19
|
+
}
|
20
|
+
td {
|
21
|
+
border-left: 1px solid #ddd;
|
22
|
+
}
|
23
|
+
td.param,
|
24
|
+
td.classname {
|
25
|
+
width: 120px;
|
26
|
+
}
|
27
|
+
input#newparam {
|
28
|
+
float: right;
|
29
|
+
font-size: small;
|
30
|
+
}
|
31
|
+
input.value {
|
32
|
+
width: 720px;
|
33
|
+
}
|
34
|
+
div.meta label {
|
35
|
+
display: block;
|
36
|
+
}
|
data/views/error.erb
ADDED
data/views/layout.erb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<title>Arnold: the provisionator</title>
|
4
|
+
<link rel="stylesheet" type="text/css" href="/jquery-ui.css" media="all" />
|
5
|
+
<link rel="stylesheet" type="text/css" href="/style.css" />
|
6
|
+
<script type="text/javascript" src="/jquery.js"></script>
|
7
|
+
<script type="text/javascript" src="/scripts.js"></script>
|
8
|
+
</head>
|
9
|
+
<body>
|
10
|
+
<h1>Arnold: <i>the provisionator</i></h1>
|
11
|
+
<div id="tabs" class="ui-tabs ui-widget ui-widget-content ui-corner-all">
|
12
|
+
<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">
|
13
|
+
<li class="ui-state-default ui-corner-top"><a href="/">List Nodes</a></li>
|
14
|
+
<li class="ui-state-default ui-corner-top"><a href="/new">Create New Node</a></li>
|
15
|
+
</ul>
|
16
|
+
<div id="content" class="ui-tabs-panel ui-widget-content ui-corner-bottom">
|
17
|
+
<%= yield %>
|
18
|
+
</div>
|
19
|
+
</div>
|
20
|
+
</body>
|
21
|
+
</html>
|
data/views/new.erb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
<form action="/create" method="post">
|
2
|
+
<div class="meta">
|
3
|
+
<label for="name">Name:</label>
|
4
|
+
<input type="text" size=60 id"name" name="name" />
|
5
|
+
<label for="macaddr">MAC Address:</label>
|
6
|
+
<input type="text" size=60 id"macaddr" name="macaddr" />
|
7
|
+
</div>
|
8
|
+
<table class="parameters">
|
9
|
+
<tr class="header"><th colspan="2">Parameters <input type="button" id="newparam" value="Add Parameter" /></th></tr>
|
10
|
+
</table>
|
11
|
+
<table class="classes">
|
12
|
+
<tr class="header"><th colspan="3">Classes</th></tr>
|
13
|
+
<% even = true %>
|
14
|
+
<% if @classes %>
|
15
|
+
<% @classes.each do |classname, desc| %>
|
16
|
+
<tr class="<%= even ? "even":"odd" %>">
|
17
|
+
<td class="classname"><%= classname %></td>
|
18
|
+
<td class="description"><%= desc %></td>
|
19
|
+
<td class="selected"><input name="classes[]" value="<%= classname %>" type="checkbox"></td>
|
20
|
+
</tr>
|
21
|
+
<% even = !even %>
|
22
|
+
<% end %>
|
23
|
+
<% end %>
|
24
|
+
</table>
|
25
|
+
<input type="submit" value="Create Node" />
|
26
|
+
</form>
|
data/views/node.erb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
<% if @node %>
|
2
|
+
<form action="/update" method="post">
|
3
|
+
<% if @node.name then %><h2><%= @node.name %></h2><% end %>
|
4
|
+
<% if @node.macaddr then %><h3><%= @node.macaddr %></h3><% end %>
|
5
|
+
<input type="hidden" id="guid" name="guid" value="<%= @node.guid %>" />
|
6
|
+
<input type="hidden" id="name" name="name" value="<%= @node.name %>" />
|
7
|
+
<input type="hidden" id="macaddr" name="macaddr" value="<%= @node.macaddr %>" />
|
8
|
+
<table class="parameters">
|
9
|
+
<tr class="header"><th colspan="2">Parameters <input type="button" id="newparam" value="Add Parameter" /></th></tr>
|
10
|
+
<% even = true %>
|
11
|
+
<% @node.parameters.each do |param, value| %>
|
12
|
+
<tr class="<%= even ? "even":"odd" %>">
|
13
|
+
<td class="param"><label for="param_<%= param %>"><%= param %></label></td>
|
14
|
+
<td class="value"><input type="text" class="value" size="100" name="param_<%= param %>" id="param_<%= param %>" value="<%= value %>"></td>
|
15
|
+
</tr>
|
16
|
+
<% even = !even %>
|
17
|
+
<% end %>
|
18
|
+
</table>
|
19
|
+
<table class="classes">
|
20
|
+
<tr class="header"><th colspan="3">Classes</th></tr>
|
21
|
+
<% even = true %>
|
22
|
+
<% @node.enabled.each do |classname, desc| %>
|
23
|
+
<tr class="<%= even ? "even":"odd" %>">
|
24
|
+
<td class="classname"><%= classname %></td>
|
25
|
+
<td class="description"><%= desc %></td>
|
26
|
+
<td class="selected"><input type="checkbox" name="classes[]" value="<%= classname %>" checked></td>
|
27
|
+
</tr>
|
28
|
+
<% even = !even %>
|
29
|
+
<% end %>
|
30
|
+
<% @node.disabled.each do |classname, desc| %>
|
31
|
+
<tr class="<%= even ? "even":"odd" %>">
|
32
|
+
<td class="class"><%= classname %></td>
|
33
|
+
<td class="class"><%= desc %></td>
|
34
|
+
<td class="selected"><input type="checkbox" name="classes[]" value="<%= classname %>"></td>
|
35
|
+
</tr>
|
36
|
+
<% even = !even %>
|
37
|
+
<% end %>
|
38
|
+
</table>
|
39
|
+
<input type="submit" value="Update Node" />
|
40
|
+
</form>
|
41
|
+
<% end %>
|
42
|
+
|
data/views/nodes.erb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
<% if @nodes %>
|
2
|
+
<table>
|
3
|
+
<tr class="header"><th>UUID</th><th>Node Name</th><th>MAC Address</th></tr>
|
4
|
+
<% even = true %>
|
5
|
+
<% @nodes.each do |node| %>
|
6
|
+
<tr class="<%= even ? "even":"odd" %>">
|
7
|
+
<td class="guid"><a href="/node/<%= node.guid %>"><%= node.guid %></a></td>
|
8
|
+
<td class="name"><a href="/node/<%= node.guid %>"><%= node.name %></a></td>
|
9
|
+
<td class="macaddr"><a href="/node/<%= node.guid %>"><%= node.macaddr %></a></td>
|
10
|
+
</tr>
|
11
|
+
<% even = !even %>
|
12
|
+
<% end %>
|
13
|
+
</table>
|
14
|
+
<% end %>
|
metadata
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: arnold
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
version: 0.0.1
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- Ben Ford
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2013-02-22 00:00:00 -07:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: sinatra
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
segments:
|
28
|
+
- 1
|
29
|
+
- 3
|
30
|
+
version: "1.3"
|
31
|
+
type: :runtime
|
32
|
+
version_requirements: *id001
|
33
|
+
description: " This is the start of a Puppet provisioning system.\n\n It provides a graphical web service, a JSON rest API and command line interface\n that will manage Hiera YAML files and a few functions to read them and apply\n classes and parameters to a node. It works like a lightweight External\n Node Classifier.\n\n It also provides provisioning functionality to spin up new instances after\n classifying them. It currently has a backend for Cloud Provisioner and will\n shortly have a VMWare plugin to spin up new instances for Razor to provision.\n New backend plugins are quite easy to create. Documentation forthcoming.\n"
|
34
|
+
email: binford2k@gmail.com
|
35
|
+
executables:
|
36
|
+
- arnold
|
37
|
+
extensions: []
|
38
|
+
|
39
|
+
extra_rdoc_files: []
|
40
|
+
|
41
|
+
files:
|
42
|
+
- README.md
|
43
|
+
- LICENSE
|
44
|
+
- bin/arnold
|
45
|
+
- lib/arnold/controller/cli.rb
|
46
|
+
- lib/arnold/controller/web.rb
|
47
|
+
- lib/arnold/controller.rb
|
48
|
+
- lib/arnold/monkeypatch.rb
|
49
|
+
- lib/arnold/node.rb
|
50
|
+
- lib/arnold/node_manager.rb
|
51
|
+
- lib/arnold/provisioner/cloud_provisioner.rb
|
52
|
+
- lib/arnold/provisioner/null.rb
|
53
|
+
- lib/arnold/provisioner.rb
|
54
|
+
- lib/arnold/server.rb
|
55
|
+
- doc/certs/README
|
56
|
+
- doc/certs/server.crt
|
57
|
+
- doc/certs/server.key
|
58
|
+
- doc/config.yaml
|
59
|
+
- doc/postjson.rb
|
60
|
+
- views/error.erb
|
61
|
+
- views/layout.erb
|
62
|
+
- views/new.erb
|
63
|
+
- views/node.erb
|
64
|
+
- views/nodes.erb
|
65
|
+
- public/images/ui-bg_flat_75_ffffff_40x100.png
|
66
|
+
- public/images/ui-bg_glass_65_ffffff_1x400.png
|
67
|
+
- public/images/ui-bg_glass_75_e6e6e6_1x400.png
|
68
|
+
- public/images/ui-bg_highlight-soft_75_cccccc_1x100.png
|
69
|
+
- public/jquery-ui.css
|
70
|
+
- public/jquery.js
|
71
|
+
- public/scripts.js
|
72
|
+
- public/style.css
|
73
|
+
has_rdoc: true
|
74
|
+
homepage: http://github.com/binford2k/arnold
|
75
|
+
licenses: []
|
76
|
+
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
|
80
|
+
require_paths:
|
81
|
+
- lib
|
82
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
89
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
|
+
requirements:
|
91
|
+
- - ">="
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
segments:
|
94
|
+
- 0
|
95
|
+
version: "0"
|
96
|
+
requirements: []
|
97
|
+
|
98
|
+
rubyforge_project:
|
99
|
+
rubygems_version: 1.3.6
|
100
|
+
signing_key:
|
101
|
+
specification_version: 3
|
102
|
+
summary: A simplistic self service provisioner and Puppet classifier.
|
103
|
+
test_files: []
|
104
|
+
|