nodeattr_utils 0.1.0.pre.alpha1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 8c09cc2aa221ccbb343b092ffe72dba64cd8a820dd8ec640c0029e20e840f1f3
4
+ data.tar.gz: cfbe1fc0a77c59ce827e61eaf8545e76f1685be21b77ba81db3db953b117fb9d
5
+ SHA512:
6
+ metadata.gz: 0c69aea21b78bbfa31e95c2e305b5e01942f5a864e006abe50f42909d8a9194ac75ac60455379c4483e0fbeced1565547b307ca5fd6bf5b7964fc3db9de5a3fc
7
+ data.tar.gz: aa1155ad1bb31c03976352cddf35eb3cfb41b0247707fc098eda7a46bd7e5523da4a4a5490eb88d11f57cad56174daf49128665d49fc31da55b8796a79a01b7d
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+ Gemfile.lock
10
+
11
+ # rspec failure tracking
12
+ .rspec_status
13
+
14
+ vendor/
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.5.0
5
+ before_install: gem install bundler -v 1.16.2
@@ -0,0 +1,74 @@
1
+ # Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ## Our Standards
13
+
14
+ Examples of behaviour that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behaviour by participants include:
24
+
25
+ * The use of sexualised language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ## Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behaviour and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behaviour.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviours that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ## Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ## Enforcement
56
+
57
+ Instances of abusive, harassing, or otherwise unacceptable behaviour may be
58
+ reported by contacting the project team at [help@openflighthpc.org](help@openflighthpc.org). All
59
+ complaints will be reviewed and investigated and will result in a response that
60
+ is deemed necessary and appropriate to the circumstances. The project team is
61
+ obligated to maintain confidentiality with regard to the reporter of an incident.
62
+ Further details of specific enforcement policies may be posted separately.
63
+
64
+ Project maintainers who do not follow or enforce the Code of Conduct in good
65
+ faith may face temporary or permanent repercussions as determined by other
66
+ members of the project's leadership.
67
+
68
+ ## Attribution
69
+
70
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
+ available at [http://contributor-covenant.org/version/1/4][version]
72
+
73
+ [homepage]: http://contributor-covenant.org
74
+ [version]: http://contributor-covenant.org/version/1/4/
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,184 @@
1
+ # Contributing to NodeattrUtils
2
+
3
+ :+1::tada: Thanks for taking the time to contribute! :tada::+1:
4
+
5
+ You want to contribute to NodeattrUtils? Welcome! Please read this
6
+ document to understand what you can do:
7
+
8
+ * [Code of Conduct](#code-of-conduct)
9
+ * [Help Others](#help-others)
10
+ * [Analyse Issues](#analyse-issues)
11
+ * [Report an Issue](#report-an-issue)
12
+ * [Contribute Changes](#contribute-changes)
13
+
14
+ When contributing to this repository, please first discuss the change
15
+ you wish to make via a Github issue or a post on the [OpenFlight
16
+ Community site](https://community.openflighthpc.org).
17
+
18
+ Please note we have a [code of conduct](CODE_OF_CONDUCT.md), please
19
+ follow it in all your interactions with the project.
20
+
21
+ ## Code of Conduct
22
+
23
+ This project and everyone participating in it is governed by the
24
+ [OpenFlight Code of Conduct](CODE_OF_CONDUCT.md). By participating,
25
+ you are expected to uphold this code. Please report unacceptable
26
+ behaviour to [help@openflighthpc.org](mailto:help@openflighthpc.org).
27
+
28
+ ## Help Others
29
+
30
+ You can help NodeattrUtils by helping others who use it and need support.
31
+
32
+ ## Analyse Issues
33
+
34
+ Analysing issue reports can be a lot of effort. Any help is welcome!
35
+ Go to [the GitHub issue tracker](https://github.com/openflighthpc/nodeattr_utils/issues?state=open)
36
+ and find an open issue which needs additional work or a bugfix
37
+ (e.g. issues labeled with "help wanted" or "bug").
38
+
39
+ Additional work could include any further information, or a gist, or
40
+ it might be a hint that helps understanding the issue. Maybe you can
41
+ even find and [contribute](#contribute-changes) a bugfix?
42
+
43
+ ## Report an Issue
44
+
45
+ If you find a bug - behaviour of NodeattrUtils code or documentation
46
+ contradicting your expectation - you are welcome to report it. We can
47
+ only handle well-reported, actual bugs, so please follow the
48
+ guidelines below.
49
+
50
+ Once you have familiarised with the guidelines, you can go to the
51
+ [GitHub issue tracker for NodeattrUtils](https://github.com/openflighthpc/nodeattr_utils/issues/new)
52
+ to report the issue.
53
+
54
+ ### Quick Checklist for Bug Reports
55
+
56
+ Issue report checklist:
57
+
58
+ * Real, current bug
59
+ * No duplicate
60
+ * Reproducible
61
+ * Good summary
62
+ * Well-documented
63
+ * Minimal example
64
+
65
+ ### Issue handling process
66
+
67
+ When an issue is reported, a committer will look at it and either
68
+ confirm it as a real issue, close it if it is not an issue, or ask for
69
+ more details.
70
+
71
+ An issue that is about a real bug is closed as soon as the fix is committed.
72
+
73
+ ### Reporting Security Issues
74
+
75
+ If you find a security issue, please act responsibly and report it not
76
+ in the public issue tracker, but directly to us, so we can fix it
77
+ before it can be exploited. Please send the related information to
78
+ [security@openflighthpc.org](mailto:security@openflighthpc.org).
79
+
80
+ ### Issue Reporting Disclaimer
81
+
82
+ We want to improve the quality of NodeattrUtils and good bug reports are
83
+ welcome! However, our capacity is limited, thus we reserve the right
84
+ to close or to not process bug reports with insufficient detail in
85
+ favour of those which are very cleanly documented and easy to
86
+ reproduce. Even though we would like to solve each well-documented
87
+ issue, there is always the chance that it will not happen - remember:
88
+ NodeattrUtils is Open Source and comes without warranty.
89
+
90
+ Bug report analysis support is very welcome! (e.g. pre-analysis or
91
+ proposing solutions)
92
+
93
+ ## Contribute Changes
94
+
95
+ You are welcome to contribute code, content or documentation to
96
+ NodeattrUtils in order to fix bugs or to implement new features.
97
+
98
+ There are three important things to know:
99
+
100
+ 1. You must be aware of the Eclipse Public License 2.0 (which
101
+ describes contributions) and **agree to the Contributors License
102
+ Agreement**. This is common practice in all major Open Source
103
+ projects.
104
+ 2. **Not all proposed contributions can be accepted**. Some features
105
+ may e.g. just fit a third-party add-on better. The change must fit
106
+ the overall direction of NodeattrUtils and really improve it. The more
107
+ effort you invest, the better you should clarify in advance whether
108
+ the contribution fits: the best way would be to just open an issue
109
+ to discuss the feature you plan to implement (make it clear you
110
+ intend to contribute).
111
+
112
+ ### Contributor License Agreement
113
+
114
+ When you contribute (code, documentation, or anything else), you have
115
+ to be aware that your contribution is covered by the same [Eclipse
116
+ Public License 2.0](https://opensource.org/licenses/EPL-2.0) that is
117
+ applied to NodeattrUtils itself.
118
+
119
+ In particular you need to agree to the Contributor License Agreement,
120
+ which can be [found
121
+ here](https://www.clahub.com/agreements/openflighthpc/nodeattr_utils). This
122
+ applies to all contributors, including those contributing on behalf of
123
+ a company. If you agree to its content, you simply have to click on
124
+ the link posted by the CLA assistant available on the pull
125
+ request. Click it to check the CLA, then accept it on the following
126
+ screen if you agree to it. CLA assistant will save this decision for
127
+ upcoming contributions and will notify you if there is any change to
128
+ the CLA in the meantime.
129
+
130
+ ## Pull Request Process
131
+
132
+ 1. Make sure the change would be welcome (e.g. a bugfix or a useful
133
+ feature); best do so by proposing it in a GitHub issue.
134
+ 2. Fork, then clone the repo.
135
+ 3. Make your changes ([see below](#making-changes)) and commit.
136
+ 4. In the commit message:
137
+ - Describe the problem you fix with this change.
138
+ - Describe the effect that this change has from a user's point of
139
+ view. App crashes and lockups are pretty convincing for example,
140
+ but not all bugs are that obvious and should be mentioned in the
141
+ text.
142
+ - Describe the technical details of what you changed. It is
143
+ important to describe the change in a most understandable way so
144
+ the reviewer is able to verify that the code is behaving as you
145
+ intend it to.
146
+ 5. If your change fixes an issue reported at GitHub, add the following
147
+ line to the commit message:
148
+ - `Fixes #(issueNumber)`
149
+ - Do NOT add a colon after "Fixes" - this prevents automatic closing.
150
+ 6. Open a pull request!
151
+ 7. Follow the link posted by the CLA assistant to your pull request
152
+ and accept it, as described in detail above.
153
+ 8. Wait for our code review and approval, possibly enhancing your
154
+ change on request.
155
+ - Note that the NodeattrUtils developers also have their regular
156
+ duties, so depending on the required effort for reviewing,
157
+ testing and clarification this may take a while.
158
+ 9. Once the change has been approved we will inform you in a comment.
159
+ 10. We will close the pull request; feel free to delete the now
160
+ obsolete branch.
161
+
162
+ ## Making Changes
163
+
164
+ 1. Create a topic branch from where you want to base your work.
165
+ * This is usually the `master` branch.
166
+ * Only target release branches if you are certain your fix must be
167
+ on that branch.
168
+ * To quickly create a topic branch based on master, run `git
169
+ checkout -b fix/master/my_contribution master`. Please avoid
170
+ working directly on the `master` branch.
171
+ 2. Make commits of logical and atomic units.
172
+ 3. Check for unnecessary whitespace with `git diff --check` before
173
+ committing.
174
+
175
+ ## Attribution
176
+
177
+ These contribution guidelines are adapted from
178
+ [various](https://github.com/cla-assistant/cla-assistant/blob/master/CONTRIBUTING.md)
179
+ [previous](https://github.com/puppetlabs/puppet/blob/master/CONTRIBUTING.md)
180
+ [contribution](https://gist.github.com/PurpleBooth/b24679402957c63ec426)
181
+ [guideline](https://github.com/atom/atom/blob/master/CONTRIBUTING.md)
182
+ documents from other projects hosted on Github. Our thanks to the
183
+ respective authors for making contributing to Open Source projects a
184
+ more streamlined and efficient process!
data/Gemfile ADDED
@@ -0,0 +1,32 @@
1
+ #==============================================================================
2
+ # Copyright (C) 2019-present Alces Flight Ltd.
3
+ #
4
+ # This file is part of NodeattrUtils.
5
+ #
6
+ # This program and the accompanying materials are made available under
7
+ # the terms of the Eclipse Public License 2.0 which is available at
8
+ # <https://www.eclipse.org/legal/epl-2.0>, or alternative license
9
+ # terms made available by Alces Flight Ltd - please direct inquiries
10
+ # about licensing to licensing@alces-flight.com.
11
+ #
12
+ # NodeattrUtils is distributed in the hope that it will be useful, but
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
14
+ # IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS
15
+ # OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
16
+ # PARTICULAR PURPOSE. See the Eclipse Public License 2.0 for more
17
+ # details.
18
+ #
19
+ # You should have received a copy of the Eclipse Public License 2.0
20
+ # along with NodeattrUtils. If not, see:
21
+ #
22
+ # https://opensource.org/licenses/EPL-2.0
23
+ #
24
+ # For more information on NodeattrUtils, please visit:
25
+ # https://github.com/openflighthpc/nodeattr_utils
26
+ #==============================================================================
27
+ source "https://rubygems.org"
28
+
29
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
30
+
31
+ # Specify your gem's dependencies in nodeattr_utils.gemspec
32
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,277 @@
1
+ Eclipse Public License - v 2.0
2
+
3
+ THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
4
+ PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION
5
+ OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
6
+
7
+ 1. DEFINITIONS
8
+
9
+ "Contribution" means:
10
+
11
+ a) in the case of the initial Contributor, the initial content
12
+ Distributed under this Agreement, and
13
+
14
+ b) in the case of each subsequent Contributor:
15
+ i) changes to the Program, and
16
+ ii) additions to the Program;
17
+ where such changes and/or additions to the Program originate from
18
+ and are Distributed by that particular Contributor. A Contribution
19
+ "originates" from a Contributor if it was added to the Program by
20
+ such Contributor itself or anyone acting on such Contributor's behalf.
21
+ Contributions do not include changes or additions to the Program that
22
+ are not Modified Works.
23
+
24
+ "Contributor" means any person or entity that Distributes the Program.
25
+
26
+ "Licensed Patents" mean patent claims licensable by a Contributor which
27
+ are necessarily infringed by the use or sale of its Contribution alone
28
+ or when combined with the Program.
29
+
30
+ "Program" means the Contributions Distributed in accordance with this
31
+ Agreement.
32
+
33
+ "Recipient" means anyone who receives the Program under this Agreement
34
+ or any Secondary License (as applicable), including Contributors.
35
+
36
+ "Derivative Works" shall mean any work, whether in Source Code or other
37
+ form, that is based on (or derived from) the Program and for which the
38
+ editorial revisions, annotations, elaborations, or other modifications
39
+ represent, as a whole, an original work of authorship.
40
+
41
+ "Modified Works" shall mean any work in Source Code or other form that
42
+ results from an addition to, deletion from, or modification of the
43
+ contents of the Program, including, for purposes of clarity any new file
44
+ in Source Code form that contains any contents of the Program. Modified
45
+ Works shall not include works that contain only declarations,
46
+ interfaces, types, classes, structures, or files of the Program solely
47
+ in each case in order to link to, bind by name, or subclass the Program
48
+ or Modified Works thereof.
49
+
50
+ "Distribute" means the acts of a) distributing or b) making available
51
+ in any manner that enables the transfer of a copy.
52
+
53
+ "Source Code" means the form of a Program preferred for making
54
+ modifications, including but not limited to software source code,
55
+ documentation source, and configuration files.
56
+
57
+ "Secondary License" means either the GNU General Public License,
58
+ Version 2.0, or any later versions of that license, including any
59
+ exceptions or additional permissions as identified by the initial
60
+ Contributor.
61
+
62
+ 2. GRANT OF RIGHTS
63
+
64
+ a) Subject to the terms of this Agreement, each Contributor hereby
65
+ grants Recipient a non-exclusive, worldwide, royalty-free copyright
66
+ license to reproduce, prepare Derivative Works of, publicly display,
67
+ publicly perform, Distribute and sublicense the Contribution of such
68
+ Contributor, if any, and such Derivative Works.
69
+
70
+ b) Subject to the terms of this Agreement, each Contributor hereby
71
+ grants Recipient a non-exclusive, worldwide, royalty-free patent
72
+ license under Licensed Patents to make, use, sell, offer to sell,
73
+ import and otherwise transfer the Contribution of such Contributor,
74
+ if any, in Source Code or other form. This patent license shall
75
+ apply to the combination of the Contribution and the Program if, at
76
+ the time the Contribution is added by the Contributor, such addition
77
+ of the Contribution causes such combination to be covered by the
78
+ Licensed Patents. The patent license shall not apply to any other
79
+ combinations which include the Contribution. No hardware per se is
80
+ licensed hereunder.
81
+
82
+ c) Recipient understands that although each Contributor grants the
83
+ licenses to its Contributions set forth herein, no assurances are
84
+ provided by any Contributor that the Program does not infringe the
85
+ patent or other intellectual property rights of any other entity.
86
+ Each Contributor disclaims any liability to Recipient for claims
87
+ brought by any other entity based on infringement of intellectual
88
+ property rights or otherwise. As a condition to exercising the
89
+ rights and licenses granted hereunder, each Recipient hereby
90
+ assumes sole responsibility to secure any other intellectual
91
+ property rights needed, if any. For example, if a third party
92
+ patent license is required to allow Recipient to Distribute the
93
+ Program, it is Recipient's responsibility to acquire that license
94
+ before distributing the Program.
95
+
96
+ d) Each Contributor represents that to its knowledge it has
97
+ sufficient copyright rights in its Contribution, if any, to grant
98
+ the copyright license set forth in this Agreement.
99
+
100
+ e) Notwithstanding the terms of any Secondary License, no
101
+ Contributor makes additional grants to any Recipient (other than
102
+ those set forth in this Agreement) as a result of such Recipient's
103
+ receipt of the Program under the terms of a Secondary License
104
+ (if permitted under the terms of Section 3).
105
+
106
+ 3. REQUIREMENTS
107
+
108
+ 3.1 If a Contributor Distributes the Program in any form, then:
109
+
110
+ a) the Program must also be made available as Source Code, in
111
+ accordance with section 3.2, and the Contributor must accompany
112
+ the Program with a statement that the Source Code for the Program
113
+ is available under this Agreement, and informs Recipients how to
114
+ obtain it in a reasonable manner on or through a medium customarily
115
+ used for software exchange; and
116
+
117
+ b) the Contributor may Distribute the Program under a license
118
+ different than this Agreement, provided that such license:
119
+ i) effectively disclaims on behalf of all other Contributors all
120
+ warranties and conditions, express and implied, including
121
+ warranties or conditions of title and non-infringement, and
122
+ implied warranties or conditions of merchantability and fitness
123
+ for a particular purpose;
124
+
125
+ ii) effectively excludes on behalf of all other Contributors all
126
+ liability for damages, including direct, indirect, special,
127
+ incidental and consequential damages, such as lost profits;
128
+
129
+ iii) does not attempt to limit or alter the recipients' rights
130
+ in the Source Code under section 3.2; and
131
+
132
+ iv) requires any subsequent distribution of the Program by any
133
+ party to be under a license that satisfies the requirements
134
+ of this section 3.
135
+
136
+ 3.2 When the Program is Distributed as Source Code:
137
+
138
+ a) it must be made available under this Agreement, or if the
139
+ Program (i) is combined with other material in a separate file or
140
+ files made available under a Secondary License, and (ii) the initial
141
+ Contributor attached to the Source Code the notice described in
142
+ Exhibit A of this Agreement, then the Program may be made available
143
+ under the terms of such Secondary Licenses, and
144
+
145
+ b) a copy of this Agreement must be included with each copy of
146
+ the Program.
147
+
148
+ 3.3 Contributors may not remove or alter any copyright, patent,
149
+ trademark, attribution notices, disclaimers of warranty, or limitations
150
+ of liability ("notices") contained within the Program from any copy of
151
+ the Program which they Distribute, provided that Contributors may add
152
+ their own appropriate notices.
153
+
154
+ 4. COMMERCIAL DISTRIBUTION
155
+
156
+ Commercial distributors of software may accept certain responsibilities
157
+ with respect to end users, business partners and the like. While this
158
+ license is intended to facilitate the commercial use of the Program,
159
+ the Contributor who includes the Program in a commercial product
160
+ offering should do so in a manner which does not create potential
161
+ liability for other Contributors. Therefore, if a Contributor includes
162
+ the Program in a commercial product offering, such Contributor
163
+ ("Commercial Contributor") hereby agrees to defend and indemnify every
164
+ other Contributor ("Indemnified Contributor") against any losses,
165
+ damages and costs (collectively "Losses") arising from claims, lawsuits
166
+ and other legal actions brought by a third party against the Indemnified
167
+ Contributor to the extent caused by the acts or omissions of such
168
+ Commercial Contributor in connection with its distribution of the Program
169
+ in a commercial product offering. The obligations in this section do not
170
+ apply to any claims or Losses relating to any actual or alleged
171
+ intellectual property infringement. In order to qualify, an Indemnified
172
+ Contributor must: a) promptly notify the Commercial Contributor in
173
+ writing of such claim, and b) allow the Commercial Contributor to control,
174
+ and cooperate with the Commercial Contributor in, the defense and any
175
+ related settlement negotiations. The Indemnified Contributor may
176
+ participate in any such claim at its own expense.
177
+
178
+ For example, a Contributor might include the Program in a commercial
179
+ product offering, Product X. That Contributor is then a Commercial
180
+ Contributor. If that Commercial Contributor then makes performance
181
+ claims, or offers warranties related to Product X, those performance
182
+ claims and warranties are such Commercial Contributor's responsibility
183
+ alone. Under this section, the Commercial Contributor would have to
184
+ defend claims against the other Contributors related to those performance
185
+ claims and warranties, and if a court requires any other Contributor to
186
+ pay any damages as a result, the Commercial Contributor must pay
187
+ those damages.
188
+
189
+ 5. NO WARRANTY
190
+
191
+ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
192
+ PERMITTED BY APPLICABLE LAW, THE PROGRAM IS PROVIDED ON AN "AS IS"
193
+ BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
194
+ IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF
195
+ TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR
196
+ PURPOSE. Each Recipient is solely responsible for determining the
197
+ appropriateness of using and distributing the Program and assumes all
198
+ risks associated with its exercise of rights under this Agreement,
199
+ including but not limited to the risks and costs of program errors,
200
+ compliance with applicable laws, damage to or loss of data, programs
201
+ or equipment, and unavailability or interruption of operations.
202
+
203
+ 6. DISCLAIMER OF LIABILITY
204
+
205
+ EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, AND TO THE EXTENT
206
+ PERMITTED BY APPLICABLE LAW, NEITHER RECIPIENT NOR ANY CONTRIBUTORS
207
+ SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
208
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
209
+ PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
210
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
211
+ ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
212
+ EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
213
+ POSSIBILITY OF SUCH DAMAGES.
214
+
215
+ 7. GENERAL
216
+
217
+ If any provision of this Agreement is invalid or unenforceable under
218
+ applicable law, it shall not affect the validity or enforceability of
219
+ the remainder of the terms of this Agreement, and without further
220
+ action by the parties hereto, such provision shall be reformed to the
221
+ minimum extent necessary to make such provision valid and enforceable.
222
+
223
+ If Recipient institutes patent litigation against any entity
224
+ (including a cross-claim or counterclaim in a lawsuit) alleging that the
225
+ Program itself (excluding combinations of the Program with other software
226
+ or hardware) infringes such Recipient's patent(s), then such Recipient's
227
+ rights granted under Section 2(b) shall terminate as of the date such
228
+ litigation is filed.
229
+
230
+ All Recipient's rights under this Agreement shall terminate if it
231
+ fails to comply with any of the material terms or conditions of this
232
+ Agreement and does not cure such failure in a reasonable period of
233
+ time after becoming aware of such noncompliance. If all Recipient's
234
+ rights under this Agreement terminate, Recipient agrees to cease use
235
+ and distribution of the Program as soon as reasonably practicable.
236
+ However, Recipient's obligations under this Agreement and any licenses
237
+ granted by Recipient relating to the Program shall continue and survive.
238
+
239
+ Everyone is permitted to copy and distribute copies of this Agreement,
240
+ but in order to avoid inconsistency the Agreement is copyrighted and
241
+ may only be modified in the following manner. The Agreement Steward
242
+ reserves the right to publish new versions (including revisions) of
243
+ this Agreement from time to time. No one other than the Agreement
244
+ Steward has the right to modify this Agreement. The Eclipse Foundation
245
+ is the initial Agreement Steward. The Eclipse Foundation may assign the
246
+ responsibility to serve as the Agreement Steward to a suitable separate
247
+ entity. Each new version of the Agreement will be given a distinguishing
248
+ version number. The Program (including Contributions) may always be
249
+ Distributed subject to the version of the Agreement under which it was
250
+ received. In addition, after a new version of the Agreement is published,
251
+ Contributor may elect to Distribute the Program (including its
252
+ Contributions) under the new version.
253
+
254
+ Except as expressly stated in Sections 2(a) and 2(b) above, Recipient
255
+ receives no rights or licenses to the intellectual property of any
256
+ Contributor under this Agreement, whether expressly, by implication,
257
+ estoppel or otherwise. All rights in the Program not expressly granted
258
+ under this Agreement are reserved. Nothing in this Agreement is intended
259
+ to be enforceable by any entity that is not a Contributor or Recipient.
260
+ No third-party beneficiary rights are created under this Agreement.
261
+
262
+ Exhibit A - Form of Secondary Licenses Notice
263
+
264
+ "This Source Code may also be made available under the following
265
+ Secondary Licenses when the conditions for such availability set forth
266
+ in the Eclipse Public License, v. 2.0 are satisfied: {name license(s),
267
+ version(s), and exceptions or additional permissions here}."
268
+
269
+ Simply including a copy of this Agreement, including this Exhibit A
270
+ is not sufficient to license the Source Code under Secondary Licenses.
271
+
272
+ If it is not possible or desirable to put the notice in a particular
273
+ file, then You may include the notice in a location (such as a LICENSE
274
+ file in a relevant directory) where a recipient would be likely to
275
+ look for such a notice.
276
+
277
+ You may add additional accurate notices of copyright ownership.
data/README.md ADDED
@@ -0,0 +1,50 @@
1
+ # NodeattrUtils Library
2
+
3
+ A Ruby library for handling nodeattr-style host specifications.
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```
10
+ gem 'nodeattr_utils'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ ```
16
+ $ bundle
17
+ ```
18
+
19
+ Or install it yourself as:
20
+
21
+ ```
22
+ $ gem install nodeattr_utils
23
+ ```
24
+
25
+ # Contributing
26
+
27
+ Fork the project. Make your feature addition or bug fix. Send a pull
28
+ request. Bonus points for topic branches.
29
+
30
+ Read [CONTRIBUTING.md](CONTRIBUTING.md) for more details.
31
+
32
+ # Copyright and License
33
+
34
+ Eclipse Public License 2.0, see [LICENSE.txt](LICENSE.txt) for details.
35
+
36
+ Copyright (C) 2019-present Alces Flight Ltd.
37
+
38
+ This program and the accompanying materials are made available under
39
+ the terms of the Eclipse Public License 2.0 which is available at
40
+ [https://www.eclipse.org/legal/epl-2.0](https://www.eclipse.org/legal/epl-2.0),
41
+ or alternative license terms made available by Alces Flight Ltd -
42
+ please direct inquiries about licensing to
43
+ [licensing@alces-flight.com](mailto:licensing@alces-flight.com).
44
+
45
+ NodeattrUtils is distributed in the hope that it will be
46
+ useful, but WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER
47
+ EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR
48
+ CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR
49
+ A PARTICULAR PURPOSE. See the [Eclipse Public License 2.0](https://opensource.org/licenses/EPL-2.0) for more
50
+ details.
data/Rakefile ADDED
@@ -0,0 +1,32 @@
1
+ #==============================================================================
2
+ # Copyright (C) 2019-present Alces Flight Ltd.
3
+ #
4
+ # This file is part of NodeattrUtils.
5
+ #
6
+ # This program and the accompanying materials are made available under
7
+ # the terms of the Eclipse Public License 2.0 which is available at
8
+ # <https://www.eclipse.org/legal/epl-2.0>, or alternative license
9
+ # terms made available by Alces Flight Ltd - please direct inquiries
10
+ # about licensing to licensing@alces-flight.com.
11
+ #
12
+ # NodeattrUtils is distributed in the hope that it will be useful, but
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
14
+ # IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS
15
+ # OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
16
+ # PARTICULAR PURPOSE. See the Eclipse Public License 2.0 for more
17
+ # details.
18
+ #
19
+ # You should have received a copy of the Eclipse Public License 2.0
20
+ # along with NodeattrUtils. If not, see:
21
+ #
22
+ # https://opensource.org/licenses/EPL-2.0
23
+ #
24
+ # For more information on NodeattrUtils, please visit:
25
+ # https://github.com/openflighthpc/nodeattr_utils
26
+ #==============================================================================
27
+ require "bundler/gem_tasks"
28
+ require "rspec/core/rake_task"
29
+
30
+ RSpec::Core::RakeTask.new(:spec)
31
+
32
+ task :default => :spec
@@ -0,0 +1,34 @@
1
+ #==============================================================================
2
+ # Copyright (C) 2019-present Alces Flight Ltd.
3
+ #
4
+ # This file is part of NodeattrUtils.
5
+ #
6
+ # This program and the accompanying materials are made available under
7
+ # the terms of the Eclipse Public License 2.0 which is available at
8
+ # <https://www.eclipse.org/legal/epl-2.0>, or alternative license
9
+ # terms made available by Alces Flight Ltd - please direct inquiries
10
+ # about licensing to licensing@alces-flight.com.
11
+ #
12
+ # NodeattrUtils is distributed in the hope that it will be useful, but
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
14
+ # IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS
15
+ # OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
16
+ # PARTICULAR PURPOSE. See the Eclipse Public License 2.0 for more
17
+ # details.
18
+ #
19
+ # You should have received a copy of the Eclipse Public License 2.0
20
+ # along with NodeattrUtils. If not, see:
21
+ #
22
+ # https://opensource.org/licenses/EPL-2.0
23
+ #
24
+ # For more information on NodeattrUtils, please visit:
25
+ # https://github.com/openflighthpc/nodeattr_utils
26
+ #==============================================================================
27
+ module NodeattrUtils
28
+ class NodeattrUtilsError < StandardError
29
+ end
30
+
31
+ class NodeSyntaxError < NodeattrUtilsError
32
+ end
33
+ end
34
+
@@ -0,0 +1,76 @@
1
+ #==============================================================================
2
+ # Copyright (C) 2019-present Alces Flight Ltd.
3
+ #
4
+ # This file is part of NodeattrUtils.
5
+ #
6
+ # This program and the accompanying materials are made available under
7
+ # the terms of the Eclipse Public License 2.0 which is available at
8
+ # <https://www.eclipse.org/legal/epl-2.0>, or alternative license
9
+ # terms made available by Alces Flight Ltd - please direct inquiries
10
+ # about licensing to licensing@alces-flight.com.
11
+ #
12
+ # NodeattrUtils is distributed in the hope that it will be useful, but
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
14
+ # IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS
15
+ # OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
16
+ # PARTICULAR PURPOSE. See the Eclipse Public License 2.0 for more
17
+ # details.
18
+ #
19
+ # You should have received a copy of the Eclipse Public License 2.0
20
+ # along with NodeattrUtils. If not, see:
21
+ #
22
+ # https://opensource.org/licenses/EPL-2.0
23
+ #
24
+ # For more information on NodeattrUtils, please visit:
25
+ # https://github.com/openflighthpc/nodeattr_utils
26
+ #==============================================================================
27
+ module NodeattrUtils
28
+ module NodeParser
29
+ EXTERNAL_COMMA = /,(?![^\[]*\])/
30
+ CHAR = /[^\s\=\,\[]/
31
+ NAME = /#{CHAR}+/
32
+ SUFFIX = /#{CHAR}*/
33
+ RANGE = /\[(\d+([,-]\d+)*)\]/ # Exclude invalid: [] [,] [1-] etc...
34
+ SECTION = /#{NAME}(#{RANGE}#{SUFFIX})?/
35
+ GENERAL_REGEX = /\A#{SECTION}(,#{SECTION})*\Z/
36
+ RANGE_REGEX = /\A(#{NAME})#{RANGE}(#{SUFFIX})\Z/
37
+
38
+ def self.expand(nodes_string)
39
+ return [] if nodes_string.nil? || nodes_string.empty?
40
+ error_if_invalid_node_syntax(nodes_string)
41
+ nodes_string.split(EXTERNAL_COMMA)
42
+ .each_with_object([]) do |section, nodes|
43
+ if match = section.match(RANGE_REGEX)
44
+ # match 3 is the 2nd num of the range, used later
45
+ prefix, ranges, _, suffix = match[1,4]
46
+ ranges.split(',').each do |range|
47
+ nodes.push(*expand_range(prefix, range, suffix))
48
+ end
49
+ else
50
+ nodes.push(section)
51
+ end
52
+ end
53
+ end
54
+
55
+ private_class_method
56
+
57
+ def self.error_if_invalid_node_syntax(str)
58
+ return if GENERAL_REGEX.match?(str)
59
+ raise NodeSyntaxError, <<~ERROR
60
+ #{str.inspect} does not represent a range of nodes
61
+ ERROR
62
+ end
63
+
64
+ def self.expand_range(prefix, range, suffix)
65
+ return ["#{prefix}#{range}#{suffix}"] unless range.include?('-')
66
+ min_str, _ = indices = range.split('-')
67
+ min, max = indices.map(&:to_i)
68
+ raise NodeSyntaxError, <<~ERROR if min > max
69
+ '#{range}' the minimum index can not be greater than the maximum
70
+ ERROR
71
+ (min .. max).map do |num|
72
+ sprintf("#{prefix}%0#{min_str.length}d#{suffix}", num)
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,30 @@
1
+ #==============================================================================
2
+ # Copyright (C) 2019-present Alces Flight Ltd.
3
+ #
4
+ # This file is part of NodeattrUtils.
5
+ #
6
+ # This program and the accompanying materials are made available under
7
+ # the terms of the Eclipse Public License 2.0 which is available at
8
+ # <https://www.eclipse.org/legal/epl-2.0>, or alternative license
9
+ # terms made available by Alces Flight Ltd - please direct inquiries
10
+ # about licensing to licensing@alces-flight.com.
11
+ #
12
+ # NodeattrUtils is distributed in the hope that it will be useful, but
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
14
+ # IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS
15
+ # OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
16
+ # PARTICULAR PURPOSE. See the Eclipse Public License 2.0 for more
17
+ # details.
18
+ #
19
+ # You should have received a copy of the Eclipse Public License 2.0
20
+ # along with NodeattrUtils. If not, see:
21
+ #
22
+ # https://opensource.org/licenses/EPL-2.0
23
+ #
24
+ # For more information on NodeattrUtils, please visit:
25
+ # https://github.com/openflighthpc/nodeattr_utils
26
+ #==============================================================================m
27
+ module NodeattrUtils
28
+ VERSION = "0.1.0-alpha1"
29
+ end
30
+
@@ -0,0 +1,33 @@
1
+ #==============================================================================
2
+ # Copyright (C) 2019-present Alces Flight Ltd.
3
+ #
4
+ # This file is part of NodeattrUtils.
5
+ #
6
+ # This program and the accompanying materials are made available under
7
+ # the terms of the Eclipse Public License 2.0 which is available at
8
+ # <https://www.eclipse.org/legal/epl-2.0>, or alternative license
9
+ # terms made available by Alces Flight Ltd - please direct inquiries
10
+ # about licensing to licensing@alces-flight.com.
11
+ #
12
+ # NodeattrUtils is distributed in the hope that it will be useful, but
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
14
+ # IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS
15
+ # OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
16
+ # PARTICULAR PURPOSE. See the Eclipse Public License 2.0 for more
17
+ # details.
18
+ #
19
+ # You should have received a copy of the Eclipse Public License 2.0
20
+ # along with NodeattrUtils. If not, see:
21
+ #
22
+ # https://opensource.org/licenses/EPL-2.0
23
+ #
24
+ # For more information on NodeattrUtils, please visit:
25
+ # https://github.com/openflighthpc/nodeattr_utils
26
+ #==============================================================================
27
+ require "nodeattr_utils/version"
28
+ require 'nodeattr_utils/node_parser'
29
+ require 'nodeattr_utils/exceptions'
30
+
31
+ module NodeattrUtils
32
+ end
33
+
@@ -0,0 +1,54 @@
1
+ #==============================================================================
2
+ # Copyright (C) 2019-present Alces Flight Ltd.
3
+ #
4
+ # This file is part of NodeattrUtils.
5
+ #
6
+ # This program and the accompanying materials are made available under
7
+ # the terms of the Eclipse Public License 2.0 which is available at
8
+ # <https://www.eclipse.org/legal/epl-2.0>, or alternative license
9
+ # terms made available by Alces Flight Ltd - please direct inquiries
10
+ # about licensing to licensing@alces-flight.com.
11
+ #
12
+ # NodeattrUtils is distributed in the hope that it will be useful, but
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
14
+ # IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS
15
+ # OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A
16
+ # PARTICULAR PURPOSE. See the Eclipse Public License 2.0 for more
17
+ # details.
18
+ #
19
+ # You should have received a copy of the Eclipse Public License 2.0
20
+ # along with NodeattrUtils. If not, see:
21
+ #
22
+ # https://opensource.org/licenses/EPL-2.0
23
+ #
24
+ # For more information on NodeattrUtils, please visit:
25
+ # https://github.com/openflighthpc/nodeattr_utils
26
+ #==============================================================================
27
+ lib = File.expand_path("../lib", __FILE__)
28
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
29
+ require "nodeattr_utils/version"
30
+
31
+ Gem::Specification.new do |spec|
32
+ spec.name = "nodeattr_utils"
33
+ spec.version = NodeattrUtils::VERSION
34
+ spec.authors = ["Alces Flight Ltd"]
35
+ spec.email = ["flight@openflighthpc.org"]
36
+ spec.license = 'EPL-2.0'
37
+ spec.summary = %q{Ruby implementation of nodeattr behaviour}
38
+ spec.homepage = "https://github.com/openflighthpc/nodeattr_utils"
39
+
40
+ # Specify which files should be added to the gem when it is released.
41
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
42
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
43
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
44
+ end
45
+ spec.bindir = "bin"
46
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
47
+ spec.require_paths = ["lib"]
48
+
49
+ spec.add_development_dependency "bundler", "~> 1.16"
50
+ spec.add_development_dependency "rake", "~> 10.0"
51
+ spec.add_development_dependency "rspec", "~> 3.0"
52
+ spec.add_development_dependency "pry"
53
+ spec.add_development_dependency "pry-byebug"
54
+ end
metadata ADDED
@@ -0,0 +1,128 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nodeattr_utils
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.pre.alpha1
5
+ platform: ruby
6
+ authors:
7
+ - Alces Flight Ltd
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-04-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description:
84
+ email:
85
+ - flight@openflighthpc.org
86
+ executables: []
87
+ extensions: []
88
+ extra_rdoc_files: []
89
+ files:
90
+ - ".gitignore"
91
+ - ".rspec"
92
+ - ".travis.yml"
93
+ - CODE_OF_CONDUCT.md
94
+ - CONTRIBUTING.md
95
+ - Gemfile
96
+ - LICENSE.txt
97
+ - README.md
98
+ - Rakefile
99
+ - lib/nodeattr_utils.rb
100
+ - lib/nodeattr_utils/exceptions.rb
101
+ - lib/nodeattr_utils/node_parser.rb
102
+ - lib/nodeattr_utils/version.rb
103
+ - nodeattr_utils.gemspec
104
+ homepage: https://github.com/openflighthpc/nodeattr_utils
105
+ licenses:
106
+ - EPL-2.0
107
+ metadata: {}
108
+ post_install_message:
109
+ rdoc_options: []
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - ">"
120
+ - !ruby/object:Gem::Version
121
+ version: 1.3.1
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 2.7.6
125
+ signing_key:
126
+ specification_version: 4
127
+ summary: Ruby implementation of nodeattr behaviour
128
+ test_files: []