off_the_grid 0.0.1 → 0.0.4
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.
- checksums.yaml +4 -4
- data/.gitignore +12 -0
- data/.rubocop.yml +17 -0
- data/.travis.yml +14 -0
- data/CONTRIBUTING.md +16 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +101 -0
- data/README.md +15 -0
- data/Rakefile +10 -0
- data/lib/off_the_grid/access_list.rb +5 -7
- data/lib/off_the_grid/admin_host.rb +2 -1
- data/lib/off_the_grid/erb_helpers.rb +2 -1
- data/lib/off_the_grid/execute_host.rb +5 -4
- data/lib/off_the_grid/grid_resource.rb +9 -19
- data/lib/off_the_grid/host.rb +2 -1
- data/lib/off_the_grid/host_group.rb +5 -7
- data/lib/off_the_grid/named_resource.rb +12 -0
- data/lib/off_the_grid/project.rb +4 -6
- data/lib/off_the_grid/submit_host.rb +2 -1
- data/lib/off_the_grid/templates/execute_host.rb +1 -1
- data/lib/off_the_grid/templates/project.rb +1 -1
- data/lib/off_the_grid/templates/user.rb +1 -1
- data/lib/off_the_grid/user.rb +9 -16
- data/lib/off_the_grid/version.rb +2 -1
- data/lib/off_the_grid.rb +1 -0
- data/off_the_grid.gemspec +38 -0
- metadata +72 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6881c4a5452077d50f7d2c7d4db4ddd27d0e5b6d
|
|
4
|
+
data.tar.gz: a138ce342b3dd379b7906ea4998b8bd460830e50
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9c2345b54b7baffcb27c20e1f1f537eebc6b419c28f675fa706781cd0542f08d63d7caa5dfa60eb8e71c57862201ca06a1c8875e3d247abad3d30b6d68f6c99d
|
|
7
|
+
data.tar.gz: b4aff831f03ce3d673d2796affee3931498fcb2d7a1ff184563c9be0c76657d6f4d0c397e53c57051643f49a751f27973e0d4dd893ba5a1da7dcebd9c71792b8
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
sudo: false
|
|
2
|
+
language: ruby
|
|
3
|
+
rvm:
|
|
4
|
+
- 2.2.5
|
|
5
|
+
- 2.3.3
|
|
6
|
+
before_install: gem install bundler -v 1.12.5
|
|
7
|
+
deploy:
|
|
8
|
+
provider: rubygems
|
|
9
|
+
api_key:
|
|
10
|
+
secure: FQ3MMkgUAucMVhEgVDptcalMBh9WUVfTZkn6CPttY7GEWDXWKARjFy3TopVz7Eh8y7uy8fuP8gSDdaOmWcnDqGQ8eW9c4TfPaoC5Ttd4f7+1G/y/VvVeeaE/dSucsHTWpobwUAOGLHhArrcRggXHAyNcftbnyfLwha0PgaWXDPTdweNh/f4nbdD72c7TotjjZwUS44ffv+CWNMMVX8zQs5tZ+XTSsWH1RJzjjLK3Mb9adKYA8IkVL2Jitn4TIj95h4r9pqPRHWPdBY6frZ5yF1vZ/7Rny1R7MZ8gST+t2vYO458nVkJYJvkZ4vIJ9bROVXL84iBu2XEuRoB66HSkGYgOcdRBx6joznvf7U4/1qq4mnkaYQijQ3xdy6AmNaymDST2jMKwPIFHm+mKFc5xF8j+ehjE5C3TOX5MQD90mnz4piADey9ha1oy2839gEzOp1mXs/PQcOcPyLtrcoKNfkGENqBguGSOY239c1BAMNhP2IgqW5BzomXieQcw4njLIk3GYXt2ENigQUghTHyzuzNbTu+DgXIbymBYhY/CMs2zIAHE0+Qg2f878VpyAiESK4Ydd5vxFFir+8V9vEXtzqhhsG8el5HC+n5An2eOKvZ5eOSNswNvaqhnsOPkCf9BD6RYEYKfpdS8l7lU95s0BVnnOHMUrzOjLAmNaWy5oS8=
|
|
11
|
+
gem: off_the_grid
|
|
12
|
+
on:
|
|
13
|
+
tags: true
|
|
14
|
+
repo: knuedge/off_the_grid
|
data/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
## Welcome!
|
|
2
|
+
|
|
3
|
+
We're so glad you're thinking about contributing to a KnuEdge open source project! If you're unsure about anything, just ask -- or submit the issue or pull request anyway. The worst that can happen is you'll be politely asked to change something. We love all friendly contributions.
|
|
4
|
+
|
|
5
|
+
We want to ensure a welcoming environment for all of our projects. Our IT staff encourage ethical contribution to our open source projects and all contributors should do the same.
|
|
6
|
+
|
|
7
|
+
We encourage you to read this project's CONTRIBUTING policy (you are here), its [LICENSE](LICENSE), and its [README](README.md).
|
|
8
|
+
|
|
9
|
+
If you have any questions just [shoot us an email](mailto:opensource@knuedge.com).
|
|
10
|
+
|
|
11
|
+
## Licensing
|
|
12
|
+
|
|
13
|
+
This project and all code contained within it are released under the [MIT License](https://opensource.org/licenses/MIT).
|
|
14
|
+
|
|
15
|
+
All contributions to this project will be released under the [MIT License](https://opensource.org/licenses/MIT). By submitting a pull request, you are agreeing to comply
|
|
16
|
+
with this license and for any contributions to be released under it.
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
off_the_grid (0.0.3)
|
|
5
|
+
|
|
6
|
+
GEM
|
|
7
|
+
remote: https://rubygems.org/
|
|
8
|
+
specs:
|
|
9
|
+
addressable (2.5.0)
|
|
10
|
+
public_suffix (~> 2.0, >= 2.0.2)
|
|
11
|
+
ast (2.3.0)
|
|
12
|
+
backports (3.6.8)
|
|
13
|
+
diff-lcs (1.2.5)
|
|
14
|
+
docile (1.1.5)
|
|
15
|
+
ethon (0.9.1)
|
|
16
|
+
ffi (>= 1.3.0)
|
|
17
|
+
faraday (0.9.2)
|
|
18
|
+
multipart-post (>= 1.2, < 3)
|
|
19
|
+
faraday_middleware (0.10.0)
|
|
20
|
+
faraday (>= 0.7.4, < 0.10)
|
|
21
|
+
ffi (1.9.14)
|
|
22
|
+
gh (0.14.0)
|
|
23
|
+
addressable
|
|
24
|
+
backports
|
|
25
|
+
faraday (~> 0.8)
|
|
26
|
+
multi_json (~> 1.0)
|
|
27
|
+
net-http-persistent (>= 2.7)
|
|
28
|
+
net-http-pipeline
|
|
29
|
+
highline (1.7.8)
|
|
30
|
+
json (2.0.2)
|
|
31
|
+
launchy (2.4.3)
|
|
32
|
+
addressable (~> 2.3)
|
|
33
|
+
multi_json (1.12.1)
|
|
34
|
+
multipart-post (2.0.0)
|
|
35
|
+
net-http-persistent (2.9.4)
|
|
36
|
+
net-http-pipeline (1.0.1)
|
|
37
|
+
parser (2.3.1.4)
|
|
38
|
+
ast (~> 2.2)
|
|
39
|
+
powerpack (0.1.1)
|
|
40
|
+
public_suffix (2.0.4)
|
|
41
|
+
pusher-client (0.6.2)
|
|
42
|
+
json
|
|
43
|
+
websocket (~> 1.0)
|
|
44
|
+
rainbow (2.1.0)
|
|
45
|
+
rake (10.5.0)
|
|
46
|
+
rspec (3.5.0)
|
|
47
|
+
rspec-core (~> 3.5.0)
|
|
48
|
+
rspec-expectations (~> 3.5.0)
|
|
49
|
+
rspec-mocks (~> 3.5.0)
|
|
50
|
+
rspec-core (3.5.4)
|
|
51
|
+
rspec-support (~> 3.5.0)
|
|
52
|
+
rspec-expectations (3.5.0)
|
|
53
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
54
|
+
rspec-support (~> 3.5.0)
|
|
55
|
+
rspec-mocks (3.5.0)
|
|
56
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
57
|
+
rspec-support (~> 3.5.0)
|
|
58
|
+
rspec-support (3.5.0)
|
|
59
|
+
rubocop (0.45.0)
|
|
60
|
+
parser (>= 2.3.1.1, < 3.0)
|
|
61
|
+
powerpack (~> 0.1)
|
|
62
|
+
rainbow (>= 1.99.1, < 3.0)
|
|
63
|
+
ruby-progressbar (~> 1.7)
|
|
64
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
|
65
|
+
ruby-progressbar (1.8.1)
|
|
66
|
+
simplecov (0.12.0)
|
|
67
|
+
docile (~> 1.1.0)
|
|
68
|
+
json (>= 1.8, < 3)
|
|
69
|
+
simplecov-html (~> 0.10.0)
|
|
70
|
+
simplecov-html (0.10.0)
|
|
71
|
+
travis (1.8.4)
|
|
72
|
+
backports
|
|
73
|
+
faraday (~> 0.9)
|
|
74
|
+
faraday_middleware (~> 0.9, >= 0.9.1)
|
|
75
|
+
gh (~> 0.13)
|
|
76
|
+
highline (~> 1.6)
|
|
77
|
+
launchy (~> 2.1)
|
|
78
|
+
net-http-persistent (~> 2.9)
|
|
79
|
+
pusher-client (~> 0.4)
|
|
80
|
+
typhoeus (~> 0.6, >= 0.6.8)
|
|
81
|
+
typhoeus (0.8.0)
|
|
82
|
+
ethon (>= 0.8.0)
|
|
83
|
+
unicode-display_width (1.1.1)
|
|
84
|
+
websocket (1.2.3)
|
|
85
|
+
yard (0.9.5)
|
|
86
|
+
|
|
87
|
+
PLATFORMS
|
|
88
|
+
ruby
|
|
89
|
+
|
|
90
|
+
DEPENDENCIES
|
|
91
|
+
bundler (~> 1.12)
|
|
92
|
+
off_the_grid!
|
|
93
|
+
rake (~> 10.0)
|
|
94
|
+
rspec (~> 3.1)
|
|
95
|
+
rubocop (~> 0.35)
|
|
96
|
+
simplecov
|
|
97
|
+
travis (~> 1.8)
|
|
98
|
+
yard (~> 0.8)
|
|
99
|
+
|
|
100
|
+
BUNDLED WITH
|
|
101
|
+
1.12.5
|
data/README.md
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Off the Grid
|
|
2
|
+
|
|
3
|
+
A Ruby library for interacting with SGE ([Sun / Oracle Grid Engine](https://en.wikipedia.org/wiki/Oracle_Grid_Engine), [Son of Grid Engine](https://arc.liv.ac.uk/trac/SGE), [Open Grid Scheduler](http://gridscheduler.sourceforge.net/), etc.), providing full-fledged Ruby objects and familiar Ruby constructs and paradigms.
|
|
4
|
+
|
|
5
|
+
There is still much work to be done and contributions are welcome. The goal is to ease automation around configuring and querying the grid.
|
|
6
|
+
|
|
7
|
+
## Contributing
|
|
8
|
+
|
|
9
|
+
See [CONTRIBUTING](CONTRIBUTING.md) for additional information.
|
|
10
|
+
|
|
11
|
+
## Licensing
|
|
12
|
+
|
|
13
|
+
This project and all code contained within it are released under the [MIT License](https://opensource.org/licenses/MIT). As stated in [CONTRIBUTING](CONTRIBUTING.md):
|
|
14
|
+
|
|
15
|
+
> All contributions to this project will be released under the [MIT License](https://opensource.org/licenses/MIT). By submitting a pull request, you are agreeing to comply with this license and for any contributions to be released under it.
|
data/Rakefile
ADDED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
module OffTheGrid
|
|
2
|
-
class
|
|
3
|
-
|
|
4
|
-
include GridResource
|
|
5
|
-
|
|
2
|
+
# A class to represent SGE Access Lists
|
|
3
|
+
class AccessList < NamedResource
|
|
6
4
|
# Get the list of SGE access lists
|
|
7
5
|
def self.list
|
|
8
|
-
`qconf -sul`.chomp.split("\n").sort.collect {|name|
|
|
6
|
+
`qconf -sul`.chomp.split("\n").sort.collect { |name| new(name) }
|
|
9
7
|
end
|
|
10
8
|
|
|
11
9
|
def details
|
|
@@ -17,7 +15,7 @@ module OffTheGrid
|
|
|
17
15
|
@unsaved_users ||= []
|
|
18
16
|
else
|
|
19
17
|
# Only returns users
|
|
20
|
-
extract_detail(:entries).select {|e| !e.match
|
|
18
|
+
extract_detail(:entries).select { |e| !e.match(/^@/) }.collect { |user| User.new(user) }
|
|
21
19
|
end
|
|
22
20
|
end
|
|
23
21
|
|
|
@@ -38,7 +36,7 @@ module OffTheGrid
|
|
|
38
36
|
|
|
39
37
|
# Add an SGE access list
|
|
40
38
|
def add
|
|
41
|
-
|
|
39
|
+
raise 'Creating ACL Requires One or More Users' if users.empty?
|
|
42
40
|
system("qconf -au #{users.map(&:name).join(',')} #{name}")
|
|
43
41
|
end
|
|
44
42
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
module OffTheGrid
|
|
2
|
+
# A class to represent SGE Admin Hosts
|
|
2
3
|
class AdminHost < Host
|
|
3
4
|
# Get the list of SGE adminstrative hosts
|
|
4
5
|
def self.list
|
|
5
|
-
`qconf -sh`.chomp.split("\n").sort.collect {|name|
|
|
6
|
+
`qconf -sh`.chomp.split("\n").sort.collect { |name| new(name) }
|
|
6
7
|
end
|
|
7
8
|
|
|
8
9
|
private
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
module OffTheGrid
|
|
2
|
+
# ERB related helper methods
|
|
2
3
|
module ErbHelpers
|
|
3
4
|
def render(template_data)
|
|
4
|
-
ERB.new(template_data.gsub(/^(\t|\s)+<%/, '<%'), 0,
|
|
5
|
+
ERB.new(template_data.gsub(/^(\t|\s)+<%/, '<%'), 0, '<>').result(binding)
|
|
5
6
|
end
|
|
6
7
|
end
|
|
7
8
|
end
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
module OffTheGrid
|
|
2
|
+
# A class to represent SGE Execute Hosts
|
|
2
3
|
class ExecuteHost < Host
|
|
3
4
|
# Get the list of SGE execute hosts
|
|
4
5
|
def self.list
|
|
5
|
-
`qconf -sel`.chomp.split("\n").sort.collect {|name|
|
|
6
|
+
`qconf -sel`.chomp.split("\n").sort.collect { |name| new(name) }
|
|
6
7
|
end
|
|
7
8
|
|
|
8
9
|
def details
|
|
@@ -19,19 +20,19 @@ module OffTheGrid
|
|
|
19
20
|
|
|
20
21
|
def processors
|
|
21
22
|
value = extract_detail(:processors).last
|
|
22
|
-
value
|
|
23
|
+
value =~ /[0-9]+/ ? Integer(value) : value
|
|
23
24
|
end
|
|
24
25
|
|
|
25
26
|
# very slow method for now
|
|
26
27
|
def host_groups
|
|
27
|
-
HostGroup.list.select {|group| group.hosts.include?(self) }
|
|
28
|
+
HostGroup.list.select { |group| group.hosts.include?(self) }
|
|
28
29
|
end
|
|
29
30
|
|
|
30
31
|
private
|
|
31
32
|
|
|
32
33
|
# Add an SGE execution host
|
|
33
34
|
def add
|
|
34
|
-
# TODO construct a template
|
|
35
|
+
# TODO: construct a template
|
|
35
36
|
Tempfile.open do |tmpfile|
|
|
36
37
|
tmpfile.puts render(Templates::ExecuteHost::ERB)
|
|
37
38
|
tmpfile.flush
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
module OffTheGrid
|
|
2
|
+
# Handy helper methods for all Grid-related Resources
|
|
3
|
+
# Serves as a mixable base
|
|
2
4
|
module GridResource
|
|
3
5
|
include Comparable
|
|
4
6
|
|
|
5
|
-
def initalize(name)
|
|
6
|
-
@name = name
|
|
7
|
-
end
|
|
8
|
-
|
|
9
7
|
def self.list
|
|
10
8
|
[]
|
|
11
9
|
end
|
|
@@ -15,21 +13,13 @@ module OffTheGrid
|
|
|
15
13
|
end
|
|
16
14
|
|
|
17
15
|
def save(safe = true)
|
|
18
|
-
if safe
|
|
19
|
-
|
|
20
|
-
add
|
|
21
|
-
else
|
|
22
|
-
add # don't bother checking if the resource exists
|
|
23
|
-
end
|
|
16
|
+
raise 'Validation Failed' if safe && !validate_before_save
|
|
17
|
+
add
|
|
24
18
|
end
|
|
25
19
|
|
|
26
20
|
def delete(safe = true)
|
|
27
|
-
if safe
|
|
28
|
-
|
|
29
|
-
remove
|
|
30
|
-
else
|
|
31
|
-
remove # don't bother checking if the resource exists
|
|
32
|
-
end
|
|
21
|
+
raise 'Validation Failed' if safe && !validate_before_delete
|
|
22
|
+
remove
|
|
33
23
|
end
|
|
34
24
|
|
|
35
25
|
def extract_detail(detail, options = {})
|
|
@@ -38,11 +28,11 @@ module OffTheGrid
|
|
|
38
28
|
|
|
39
29
|
values = []
|
|
40
30
|
details.split("\n").each do |line|
|
|
41
|
-
|
|
31
|
+
unless values.empty?
|
|
42
32
|
# Add follow-up lines from the weird word-wrapped output
|
|
43
|
-
line
|
|
33
|
+
line =~ /^( ){8}/ ? values << line : break
|
|
44
34
|
end
|
|
45
|
-
values << line if line
|
|
35
|
+
values << line if line =~ /^#{detail.to_s} /
|
|
46
36
|
end
|
|
47
37
|
values.join
|
|
48
38
|
.gsub(/(#{detail.to_s} |\\|\s{2,})/, '')
|
data/lib/off_the_grid/host.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
module OffTheGrid
|
|
2
|
+
# A base class for all SGE Host-type classes
|
|
2
3
|
class Host
|
|
3
4
|
attr_reader :hostname
|
|
4
5
|
include GridResource
|
|
@@ -12,7 +13,7 @@ module OffTheGrid
|
|
|
12
13
|
end
|
|
13
14
|
|
|
14
15
|
def name=(hname)
|
|
15
|
-
hostname = hname
|
|
16
|
+
@hostname = hname
|
|
16
17
|
end
|
|
17
18
|
end
|
|
18
19
|
end
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
module OffTheGrid
|
|
2
|
-
class
|
|
3
|
-
|
|
4
|
-
include GridResource
|
|
5
|
-
|
|
2
|
+
# A class to represent SGE Host Groups
|
|
3
|
+
class HostGroup < NamedResource
|
|
6
4
|
# Get the list of SGE host groups
|
|
7
5
|
def self.list
|
|
8
|
-
`qconf -shgrpl`.chomp.split("\n").sort.collect {|name|
|
|
6
|
+
`qconf -shgrpl`.chomp.split("\n").sort.collect { |name| new(name) }
|
|
9
7
|
end
|
|
10
8
|
|
|
11
9
|
def details
|
|
@@ -17,10 +15,10 @@ module OffTheGrid
|
|
|
17
15
|
end
|
|
18
16
|
|
|
19
17
|
def hosts
|
|
20
|
-
extract_detail(:hostlist).map {|host| ExecuteHost.new(host) }
|
|
18
|
+
extract_detail(:hostlist).map { |host| ExecuteHost.new(host) }
|
|
21
19
|
end
|
|
22
20
|
|
|
23
|
-
# TODO Adding a Host to a HostGroup...
|
|
21
|
+
# TODO: Adding a Host to a HostGroup...
|
|
24
22
|
|
|
25
23
|
private
|
|
26
24
|
|
data/lib/off_the_grid/project.rb
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
module OffTheGrid
|
|
2
|
-
class
|
|
3
|
-
|
|
4
|
-
include GridResource
|
|
5
|
-
|
|
2
|
+
# A class to represent SGE Projects
|
|
3
|
+
class Project < NamedResource
|
|
6
4
|
# Get the list of SGE projects
|
|
7
5
|
def self.list
|
|
8
|
-
`qconf -sprjl`.chomp.split("\n").sort.collect {|name|
|
|
6
|
+
`qconf -sprjl`.chomp.split("\n").sort.collect { |name| new(name) }
|
|
9
7
|
end
|
|
10
8
|
|
|
11
9
|
def details
|
|
@@ -34,7 +32,7 @@ module OffTheGrid
|
|
|
34
32
|
|
|
35
33
|
# Add an SGE project
|
|
36
34
|
def add
|
|
37
|
-
# TODO construct a template
|
|
35
|
+
# TODO: construct a template
|
|
38
36
|
Tempfile.open do |tmpfile|
|
|
39
37
|
tmpfile.puts render(Templates::Project::ERB)
|
|
40
38
|
tmpfile.flush
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
module OffTheGrid
|
|
2
|
+
# A class to represent SGE Submit Hosts
|
|
2
3
|
class SubmitHost < Host
|
|
3
4
|
# Get the list of SGE submit hosts
|
|
4
5
|
def self.list
|
|
5
|
-
`qconf -ss`.chomp.split("\n").sort.collect {|name|
|
|
6
|
+
`qconf -ss`.chomp.split("\n").sort.collect { |name| new(name) }
|
|
6
7
|
end
|
|
7
8
|
|
|
8
9
|
private
|
data/lib/off_the_grid/user.rb
CHANGED
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
module OffTheGrid
|
|
2
|
-
class
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
include GridResource
|
|
6
|
-
|
|
2
|
+
# A class to represent SGE Users
|
|
3
|
+
class User < NamedResource
|
|
7
4
|
# Get the list of all SGE users
|
|
8
5
|
def self.list
|
|
9
|
-
`qconf -suserl`.chomp.split("\n").sort.collect {|name|
|
|
6
|
+
`qconf -suserl`.chomp.split("\n").sort.collect { |name| new(name) }
|
|
10
7
|
end
|
|
11
8
|
|
|
12
9
|
# Get the list of admin users
|
|
13
10
|
def self.admins
|
|
14
|
-
`qconf -sm`.chomp.split("\n").sort.collect {|name|
|
|
11
|
+
`qconf -sm`.chomp.split("\n").sort.collect { |name| new(name) }
|
|
15
12
|
end
|
|
16
13
|
|
|
17
14
|
# An alias for admins
|
|
@@ -21,29 +18,25 @@ module OffTheGrid
|
|
|
21
18
|
|
|
22
19
|
# Get the list of operator users
|
|
23
20
|
def self.operators
|
|
24
|
-
`qconf -so`.chomp.split("\n").sort.collect {|name|
|
|
21
|
+
`qconf -so`.chomp.split("\n").sort.collect { |name| new(name) }
|
|
25
22
|
end
|
|
26
23
|
|
|
27
24
|
def details
|
|
28
25
|
`qconf -suser #{name}`.chomp
|
|
29
26
|
end
|
|
30
27
|
|
|
31
|
-
|
|
32
|
-
@default_project = project
|
|
33
|
-
end
|
|
28
|
+
attr_writer :default_project
|
|
34
29
|
|
|
35
|
-
|
|
36
|
-
@default_project
|
|
37
|
-
end
|
|
30
|
+
attr_reader :default_project
|
|
38
31
|
|
|
39
32
|
def admin?
|
|
40
33
|
admins.include?(self)
|
|
41
34
|
end
|
|
42
35
|
|
|
43
|
-
|
|
36
|
+
alias manager? admin?
|
|
44
37
|
|
|
45
38
|
def operator?
|
|
46
|
-
# TODO learn more about the difference between "operator" and "manager"
|
|
39
|
+
# TODO: learn more about the difference between "operator" and "manager"
|
|
47
40
|
# Maybe admins are always operators?
|
|
48
41
|
operators.include?(self)
|
|
49
42
|
end
|
data/lib/off_the_grid/version.rb
CHANGED
data/lib/off_the_grid.rb
CHANGED
|
@@ -9,6 +9,7 @@ require 'off_the_grid/templates/execute_host'
|
|
|
9
9
|
require 'off_the_grid/templates/project'
|
|
10
10
|
require 'off_the_grid/templates/user'
|
|
11
11
|
require 'off_the_grid/grid_resource'
|
|
12
|
+
require 'off_the_grid/named_resource'
|
|
12
13
|
require 'off_the_grid/host'
|
|
13
14
|
require 'off_the_grid/host_group'
|
|
14
15
|
require 'off_the_grid/access_list'
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require_relative 'lib/off_the_grid/version'
|
|
2
|
+
|
|
3
|
+
# rubocop:disable Metrics/BlockLength
|
|
4
|
+
Gem::Specification.new do |s|
|
|
5
|
+
s.description = 'The Ruby library for interacting with Son of Grid Engine'
|
|
6
|
+
s.name = 'off_the_grid'
|
|
7
|
+
s.version = OffTheGrid.version.to_s
|
|
8
|
+
s.date = Time.now.strftime('%Y-%m-%d')
|
|
9
|
+
s.summary = 'Off The Grid can perform basic management tasks for SGE.'
|
|
10
|
+
s.authors = ['Jonathan Gnagy', 'Daniel Schaaff']
|
|
11
|
+
s.email = 'jgnagy@knuedge.com'
|
|
12
|
+
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
13
|
+
f.match(%r{^(test|spec|features)/})
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
s.license = 'MIT'
|
|
17
|
+
s.platform = Gem::Platform::RUBY
|
|
18
|
+
|
|
19
|
+
s.required_ruby_version = '~> 2.2'
|
|
20
|
+
s.post_install_message = 'Thanks for installing Off The Grid!'
|
|
21
|
+
s.homepage = 'https://github.com/knuedge/off_the_grid'
|
|
22
|
+
|
|
23
|
+
s.bindir = 'exe'
|
|
24
|
+
s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
25
|
+
s.require_paths = ['lib']
|
|
26
|
+
|
|
27
|
+
s.metadata['yard.run'] = 'yri'
|
|
28
|
+
|
|
29
|
+
# Dependencies
|
|
30
|
+
|
|
31
|
+
s.add_development_dependency 'bundler', '~> 1.12'
|
|
32
|
+
s.add_development_dependency 'rake', '~> 10.0'
|
|
33
|
+
s.add_development_dependency 'rspec', '~> 3.1'
|
|
34
|
+
s.add_development_dependency 'rubocop', '~> 0.35'
|
|
35
|
+
s.add_development_dependency 'yard', '~> 0.8'
|
|
36
|
+
s.add_development_dependency 'travis', '~> 1.8'
|
|
37
|
+
s.add_development_dependency 'simplecov'
|
|
38
|
+
end
|
metadata
CHANGED
|
@@ -1,16 +1,44 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: off_the_grid
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jonathan Gnagy
|
|
8
8
|
- Daniel Schaaff
|
|
9
9
|
autorequire:
|
|
10
|
-
bindir:
|
|
10
|
+
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2016-
|
|
12
|
+
date: 2016-12-31 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: bundler
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
requirements:
|
|
18
|
+
- - "~>"
|
|
19
|
+
- !ruby/object:Gem::Version
|
|
20
|
+
version: '1.12'
|
|
21
|
+
type: :development
|
|
22
|
+
prerelease: false
|
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
24
|
+
requirements:
|
|
25
|
+
- - "~>"
|
|
26
|
+
- !ruby/object:Gem::Version
|
|
27
|
+
version: '1.12'
|
|
28
|
+
- !ruby/object:Gem::Dependency
|
|
29
|
+
name: rake
|
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
|
31
|
+
requirements:
|
|
32
|
+
- - "~>"
|
|
33
|
+
- !ruby/object:Gem::Version
|
|
34
|
+
version: '10.0'
|
|
35
|
+
type: :development
|
|
36
|
+
prerelease: false
|
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - "~>"
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '10.0'
|
|
14
42
|
- !ruby/object:Gem::Dependency
|
|
15
43
|
name: rspec
|
|
16
44
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -53,13 +81,49 @@ dependencies:
|
|
|
53
81
|
- - "~>"
|
|
54
82
|
- !ruby/object:Gem::Version
|
|
55
83
|
version: '0.8'
|
|
84
|
+
- !ruby/object:Gem::Dependency
|
|
85
|
+
name: travis
|
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
|
87
|
+
requirements:
|
|
88
|
+
- - "~>"
|
|
89
|
+
- !ruby/object:Gem::Version
|
|
90
|
+
version: '1.8'
|
|
91
|
+
type: :development
|
|
92
|
+
prerelease: false
|
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
94
|
+
requirements:
|
|
95
|
+
- - "~>"
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
version: '1.8'
|
|
98
|
+
- !ruby/object:Gem::Dependency
|
|
99
|
+
name: simplecov
|
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
|
101
|
+
requirements:
|
|
102
|
+
- - ">="
|
|
103
|
+
- !ruby/object:Gem::Version
|
|
104
|
+
version: '0'
|
|
105
|
+
type: :development
|
|
106
|
+
prerelease: false
|
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
108
|
+
requirements:
|
|
109
|
+
- - ">="
|
|
110
|
+
- !ruby/object:Gem::Version
|
|
111
|
+
version: '0'
|
|
56
112
|
description: The Ruby library for interacting with Son of Grid Engine
|
|
57
113
|
email: jgnagy@knuedge.com
|
|
58
114
|
executables: []
|
|
59
115
|
extensions: []
|
|
60
116
|
extra_rdoc_files: []
|
|
61
117
|
files:
|
|
118
|
+
- ".gitignore"
|
|
119
|
+
- ".rubocop.yml"
|
|
120
|
+
- ".travis.yml"
|
|
121
|
+
- CONTRIBUTING.md
|
|
122
|
+
- Gemfile
|
|
123
|
+
- Gemfile.lock
|
|
62
124
|
- LICENSE
|
|
125
|
+
- README.md
|
|
126
|
+
- Rakefile
|
|
63
127
|
- lib/off_the_grid.rb
|
|
64
128
|
- lib/off_the_grid/access_list.rb
|
|
65
129
|
- lib/off_the_grid/admin_host.rb
|
|
@@ -68,6 +132,7 @@ files:
|
|
|
68
132
|
- lib/off_the_grid/grid_resource.rb
|
|
69
133
|
- lib/off_the_grid/host.rb
|
|
70
134
|
- lib/off_the_grid/host_group.rb
|
|
135
|
+
- lib/off_the_grid/named_resource.rb
|
|
71
136
|
- lib/off_the_grid/project.rb
|
|
72
137
|
- lib/off_the_grid/submit_host.rb
|
|
73
138
|
- lib/off_the_grid/templates/execute_host.rb
|
|
@@ -75,10 +140,12 @@ files:
|
|
|
75
140
|
- lib/off_the_grid/templates/user.rb
|
|
76
141
|
- lib/off_the_grid/user.rb
|
|
77
142
|
- lib/off_the_grid/version.rb
|
|
143
|
+
- off_the_grid.gemspec
|
|
78
144
|
homepage: https://github.com/knuedge/off_the_grid
|
|
79
145
|
licenses:
|
|
80
146
|
- MIT
|
|
81
|
-
metadata:
|
|
147
|
+
metadata:
|
|
148
|
+
yard.run: yri
|
|
82
149
|
post_install_message: Thanks for installing Off The Grid!
|
|
83
150
|
rdoc_options: []
|
|
84
151
|
require_paths:
|
|
@@ -95,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
95
162
|
version: '0'
|
|
96
163
|
requirements: []
|
|
97
164
|
rubyforge_project:
|
|
98
|
-
rubygems_version: 2.
|
|
165
|
+
rubygems_version: 2.4.8
|
|
99
166
|
signing_key:
|
|
100
167
|
specification_version: 4
|
|
101
168
|
summary: Off The Grid can perform basic management tasks for SGE.
|