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.
@@ -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
+
@@ -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
+ }
@@ -0,0 +1,8 @@
1
+ <% if @error %>
2
+ <div class="error">
3
+ <h2>Error</h2>
4
+ <div class="message">
5
+ <%= @error %>
6
+ </div>
7
+ </div>
8
+ <% end %>
@@ -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>
@@ -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>
@@ -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
+
@@ -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
+