splunk-sdk-ruby 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +160 -0
- data/Gemfile +8 -0
- data/LICENSE +177 -0
- data/README.md +310 -0
- data/Rakefile +40 -0
- data/examples/1_connect.rb +51 -0
- data/examples/2_manage.rb +103 -0
- data/examples/3_blocking_searches.rb +82 -0
- data/examples/4_asynchronous_searches.rb +79 -0
- data/examples/5_stream_data_to_splunk.rb +79 -0
- data/lib/splunk-sdk-ruby.rb +47 -0
- data/lib/splunk-sdk-ruby/ambiguous_entity_reference.rb +28 -0
- data/lib/splunk-sdk-ruby/atomfeed.rb +323 -0
- data/lib/splunk-sdk-ruby/collection.rb +417 -0
- data/lib/splunk-sdk-ruby/collection/apps.rb +35 -0
- data/lib/splunk-sdk-ruby/collection/case_insensitive_collection.rb +58 -0
- data/lib/splunk-sdk-ruby/collection/configuration_file.rb +50 -0
- data/lib/splunk-sdk-ruby/collection/configurations.rb +80 -0
- data/lib/splunk-sdk-ruby/collection/jobs.rb +136 -0
- data/lib/splunk-sdk-ruby/collection/messages.rb +51 -0
- data/lib/splunk-sdk-ruby/context.rb +522 -0
- data/lib/splunk-sdk-ruby/entity.rb +260 -0
- data/lib/splunk-sdk-ruby/entity/index.rb +191 -0
- data/lib/splunk-sdk-ruby/entity/job.rb +339 -0
- data/lib/splunk-sdk-ruby/entity/message.rb +36 -0
- data/lib/splunk-sdk-ruby/entity/saved_search.rb +71 -0
- data/lib/splunk-sdk-ruby/entity/stanza.rb +45 -0
- data/lib/splunk-sdk-ruby/entity_not_ready.rb +26 -0
- data/lib/splunk-sdk-ruby/illegal_operation.rb +27 -0
- data/lib/splunk-sdk-ruby/namespace.rb +239 -0
- data/lib/splunk-sdk-ruby/resultsreader.rb +716 -0
- data/lib/splunk-sdk-ruby/service.rb +339 -0
- data/lib/splunk-sdk-ruby/splunk_http_error.rb +49 -0
- data/lib/splunk-sdk-ruby/synonyms.rb +50 -0
- data/lib/splunk-sdk-ruby/version.rb +27 -0
- data/lib/splunk-sdk-ruby/xml_shim.rb +117 -0
- data/splunk-sdk-ruby.gemspec +27 -0
- data/test/atom_test_data.rb +472 -0
- data/test/data/atom/atom_feed_with_message.xml +19 -0
- data/test/data/atom/atom_with_feed.xml +99 -0
- data/test/data/atom/atom_with_several_entries.xml +101 -0
- data/test/data/atom/atom_with_simple_entries.xml +30 -0
- data/test/data/atom/atom_without_feed.xml +248 -0
- data/test/data/export/4.2.5/export_results.xml +88 -0
- data/test/data/export/4.3.5/export_results.xml +87 -0
- data/test/data/export/5.0.1/export_results.xml +78 -0
- data/test/data/export/5.0.1/nonreporting.xml +232 -0
- data/test/data/results/4.2.5/results-empty.xml +0 -0
- data/test/data/results/4.2.5/results-preview.xml +255 -0
- data/test/data/results/4.2.5/results.xml +336 -0
- data/test/data/results/4.3.5/results-empty.xml +0 -0
- data/test/data/results/4.3.5/results-preview.xml +1057 -0
- data/test/data/results/4.3.5/results.xml +626 -0
- data/test/data/results/5.0.2/results-empty.xml +1 -0
- data/test/data/results/5.0.2/results-empty_preview.xml +1 -0
- data/test/data/results/5.0.2/results-preview.xml +448 -0
- data/test/data/results/5.0.2/results.xml +501 -0
- data/test/export_test_data.json +360 -0
- data/test/resultsreader_test_data.json +1119 -0
- data/test/services.server.info.xml +43 -0
- data/test/services.xml +111 -0
- data/test/test_atomfeed.rb +71 -0
- data/test/test_collection.rb +278 -0
- data/test/test_configuration_file.rb +124 -0
- data/test/test_context.rb +119 -0
- data/test/test_entity.rb +95 -0
- data/test/test_helper.rb +250 -0
- data/test/test_http_error.rb +52 -0
- data/test/test_index.rb +91 -0
- data/test/test_jobs.rb +319 -0
- data/test/test_messages.rb +17 -0
- data/test/test_namespace.rb +188 -0
- data/test/test_restarts.rb +49 -0
- data/test/test_resultsreader.rb +106 -0
- data/test/test_roles.rb +41 -0
- data/test/test_saved_searches.rb +119 -0
- data/test/test_service.rb +65 -0
- data/test/test_users.rb +33 -0
- data/test/test_xml_shim.rb +28 -0
- data/test/testfile.txt +1 -0
- metadata +200 -0
data/CHANGELOG.md
ADDED
@@ -0,0 +1,160 @@
|
|
1
|
+
# Splunk SDK for Ruby Changelog
|
2
|
+
|
3
|
+
## Version 0.1.0 (preview)
|
4
|
+
|
5
|
+
### Breaking changes
|
6
|
+
|
7
|
+
* The Splunk SDK for Ruby now uses the same **.splunkrc** format as the other SDKs.
|
8
|
+
* Moved `Service#connect` to being a static method of the `Splunk` module, so you now call connect as
|
9
|
+
|
10
|
+
service = Splunk::connect(...)
|
11
|
+
|
12
|
+
instead of
|
13
|
+
|
14
|
+
service = Splunk::Service.connect(...)
|
15
|
+
|
16
|
+
* **aloader.rb** and the `AtomResponseLoader` it contained have been replaced in their entirety by atomfeed.rb and the `AtomFeed` class it contains.
|
17
|
+
* Changes to `Context`:
|
18
|
+
* Removed `Context#post`, `Context#delete`, and `Context#get`. Replaced
|
19
|
+
them all with `Context#request` (which takes a structured specification of
|
20
|
+
the resource) and `Context#request_by_url` (which takes an already
|
21
|
+
constructed URL to the resource).
|
22
|
+
* Removed the methods `Context#fullpath`, `Context#init_default`,
|
23
|
+
`Context#url`, `Context#create_resource`, `Context#check_for_error_return`,
|
24
|
+
`Context#build_stream`, `Context#handle_key`, `Context#flatten_params`,
|
25
|
+
and `Context#flatten_params_array` since simplification of the request
|
26
|
+
infrastructure made them unnecessary.
|
27
|
+
* Renamed `Context#protocol` to `Context#scheme` to match correct naming in RFC.
|
28
|
+
* Removed the `parse` method from `Service`, since it didn't actually parse
|
29
|
+
the response in any useful way.
|
30
|
+
* Changes to naming of the configuration endpoints:
|
31
|
+
* `ConfCollection` renamed to `ConfigurationFile` (and **conf_collection.rb**
|
32
|
+
renamed to **configuration_file.rb**).
|
33
|
+
* `Conf` renamed to `Stanza` (and **conf.rb** renamed to **stanza.rb**).
|
34
|
+
* `Index#submit` and `Index#attach` now take hash arguments instead of positional
|
35
|
+
arguments.
|
36
|
+
* `Job#setttl` renamed to `Job#set_ttl`.
|
37
|
+
* `Job#setpriority` renamed to `Job#set_priority`.
|
38
|
+
* `Job#disable_preview` removed, since a working test scenario couldn't be found
|
39
|
+
for it.
|
40
|
+
* `Collection`'s constructor arguments have changed.
|
41
|
+
* `Entity`'s constructor arguments have changed.
|
42
|
+
* `SplunkError` has been removed, and `SplunkHTTPError` has been made a direct
|
43
|
+
subclass of `StandardError`.
|
44
|
+
* Deleted `SearchResults`, since it was superseded by `ResultsReader`.
|
45
|
+
* The metaprogramming to allow fetching entries of a `Hash` via dot notation has
|
46
|
+
been removed. That is, `hash.key` is no longer a synonym for `hash["key"]`.
|
47
|
+
* The `urlencode` method previously monkeypatched onto `Hash` has been removed.
|
48
|
+
* `Service#create_collection` was removed.
|
49
|
+
|
50
|
+
### New features and APIs
|
51
|
+
|
52
|
+
* New examples in the **/examples** directory, showing how to:
|
53
|
+
* connect to Splunk
|
54
|
+
* manage entities in Splunk
|
55
|
+
* run searches and fetch their results from Splunk
|
56
|
+
* write data into Splunk
|
57
|
+
* The whole SDK now handles namespaces properly, and namespaces are first class
|
58
|
+
objects. See the header comments of **namespace.rb** for a detailed description
|
59
|
+
of Splunk namespaces and their representation in this SDK.
|
60
|
+
* All XML handling is shimmed to work with either Nokogiri or REXML. It tries
|
61
|
+
Nokogiri first, which can process XML vastly faster, and falls back to REXML,
|
62
|
+
which will be present in all Ruby installs. The user may all call
|
63
|
+
`require_xml_library` to force the SDK to use a Nokogiri or REXML. See
|
64
|
+
**xml_shim.rb** for all this behavior.
|
65
|
+
* Added documentation throughout the SDK.
|
66
|
+
* The unit testing suite has been completely rewritten and expanded.
|
67
|
+
* Added a `ResultsReader` class to parse and iterate over sets of XML results from
|
68
|
+
search jobs.
|
69
|
+
* Added methods to `Context`:
|
70
|
+
* `host`
|
71
|
+
* `port`
|
72
|
+
* `token`
|
73
|
+
* `username`
|
74
|
+
* `password`
|
75
|
+
* `namespace`
|
76
|
+
* `server_accepting_connections?`
|
77
|
+
* `Context#restart` takes an optional timeout, and properly handles waiting for
|
78
|
+
Splunk to restart.
|
79
|
+
* Added convenience methods to `Service` to create searches:
|
80
|
+
* `create_oneshot`
|
81
|
+
* `create_search`
|
82
|
+
* `create_stream`
|
83
|
+
* Added methods to `Service`:
|
84
|
+
* `splunk_version`
|
85
|
+
* `saved_searches`
|
86
|
+
* New features added to `Collection`:
|
87
|
+
* `Collection#each`, when called without a block, now returns an enumerator over
|
88
|
+
all elements in the collection.
|
89
|
+
* Added an optional _namespace_ argument to `Collection#delete` and
|
90
|
+
`Collection#fetch` so entities can be specified uniquely even in the presence
|
91
|
+
of name collisions.
|
92
|
+
* Added new methods to `Collection`, mostly designed to recapitulate the
|
93
|
+
relevant methods of `Hash`. In the notation below, synonym sets are separated
|
94
|
+
by slashes, and names in a set of synonyms that already existed are
|
95
|
+
surrounded by square brackets:
|
96
|
+
* `[contains?]/has_key?/include?/key?/member?`
|
97
|
+
* `[list]/values/to_a`
|
98
|
+
* `each_key`
|
99
|
+
* `each_pair`
|
100
|
+
* `empty?`
|
101
|
+
* `entity_class`
|
102
|
+
* `fetch/[ [] ]`
|
103
|
+
* `keys`
|
104
|
+
* `length`
|
105
|
+
* `resource`
|
106
|
+
* `service`
|
107
|
+
* Added methods to `Entity`. In the notation below, synonym sets are separated
|
108
|
+
by slashes, and names in a set of synonyms that already existed are
|
109
|
+
surrounded by square brackets:
|
110
|
+
* `content`
|
111
|
+
* `delete`
|
112
|
+
* `fetch/[ [] ]`
|
113
|
+
* `links`
|
114
|
+
* `namespace`
|
115
|
+
* `refresh`
|
116
|
+
* `resource`
|
117
|
+
* `service`
|
118
|
+
* Entities now cache their state. To update the cache, call the entity's `refresh`
|
119
|
+
method.
|
120
|
+
* `Index#clean` takes a timeout instead of waiting forever. If no timeout is
|
121
|
+
specified, a default value will be used.
|
122
|
+
* Added new methods to `Job`. In the notation below, synonym sets are separated
|
123
|
+
by slashes, and names in a set of synonyms that already existed are
|
124
|
+
surrounded by square brackets:
|
125
|
+
* `control`
|
126
|
+
* `is_done?`
|
127
|
+
* `is_ready?`
|
128
|
+
* `sid`
|
129
|
+
* Added saved search support, accessible via `Service#saved_searches`. `SavedSearch`
|
130
|
+
entities have the following additional methods beyond `Entity`:
|
131
|
+
* `dispatch`
|
132
|
+
* `history`
|
133
|
+
* Added the following methods to `Stanza` (was: `Conf`). In the notation below, synonym sets are separated by slashes, and names in a set of synonyms that already existed are surrounded by square brackets:
|
134
|
+
* `length`
|
135
|
+
* `update/[submit]`
|
136
|
+
* Added new custom exceptions:
|
137
|
+
* `AmbiguousEntityReference`, for when a fetch of an entity by name would
|
138
|
+
return multiple entities due to name collisions.
|
139
|
+
* `EntityNotReady`, raised when a program tries to fetch the state of an entity
|
140
|
+
which is queued for creation, but not yet created, such as a search job that
|
141
|
+
is not yet ready.
|
142
|
+
* `IllegalOperation`, raised by a program when an operation known statically not
|
143
|
+
to work, such as deleting an index on Splunk 4.x, is called.
|
144
|
+
|
145
|
+
### Architectural changes
|
146
|
+
|
147
|
+
* `Job` is now a subclass of `Entity`.
|
148
|
+
* `Service` is now a subclass of `Context` instead of including the `Context` as
|
149
|
+
an instance variable.
|
150
|
+
* Removed dependence of `Context` (and the SDK) on the libraries `netrc`, `pathname`,
|
151
|
+
and `rest-client`. Now it uses only the standard library plus (optionally)
|
152
|
+
Nokogiri.
|
153
|
+
* Reorganized directory structure of the SDK.
|
154
|
+
* The contents of `lib/splunk-sdk-ruby/client/` have been moved to
|
155
|
+
`lib/splunk-sdk-ruby`, and **client.rb** has been deleted.
|
156
|
+
* **jobs.rb** was moved to `lib/splunk-sdk-ruby/collection/`
|
157
|
+
* **job.rb** was moved to `lib/splunk-sdk-ruby/entity/`
|
158
|
+
* Made all unit test filenames start with **test_** instead of **tc_**.
|
159
|
+
|
160
|
+
|
data/Gemfile
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
source :rubygems
|
2
|
+
# This line is required to let RubyMine run the test suite,
|
3
|
+
# since otherwise random packages load other random packages
|
4
|
+
# in random order and clobber RubyMine's configuration.
|
5
|
+
# See http://youtrack.jetbrains.com/issue/RUBY-11922
|
6
|
+
gem 'test-unit', :require => false
|
7
|
+
gem 'nokogiri', :require => true
|
8
|
+
gemspec
|
data/LICENSE
ADDED
@@ -0,0 +1,177 @@
|
|
1
|
+
|
2
|
+
Apache License
|
3
|
+
Version 2.0, January 2004
|
4
|
+
http://www.apache.org/licenses/
|
5
|
+
|
6
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
7
|
+
|
8
|
+
1. Definitions.
|
9
|
+
|
10
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
11
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
12
|
+
|
13
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
14
|
+
the copyright owner that is granting the License.
|
15
|
+
|
16
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
17
|
+
other entities that control, are controlled by, or are under common
|
18
|
+
control with that entity. For the purposes of this definition,
|
19
|
+
"control" means (i) the power, direct or indirect, to cause the
|
20
|
+
direction or management of such entity, whether by contract or
|
21
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
22
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
23
|
+
|
24
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
25
|
+
exercising permissions granted by this License.
|
26
|
+
|
27
|
+
"Source" form shall mean the preferred form for making modifications,
|
28
|
+
including but not limited to software source code, documentation
|
29
|
+
source, and configuration files.
|
30
|
+
|
31
|
+
"Object" form shall mean any form resulting from mechanical
|
32
|
+
transformation or translation of a Source form, including but
|
33
|
+
not limited to compiled object code, generated documentation,
|
34
|
+
and conversions to other media types.
|
35
|
+
|
36
|
+
"Work" shall mean the work of authorship, whether in Source or
|
37
|
+
Object form, made available under the License, as indicated by a
|
38
|
+
copyright notice that is included in or attached to the work
|
39
|
+
(an example is provided in the Appendix below).
|
40
|
+
|
41
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
42
|
+
form, that is based on (or derived from) the Work and for which the
|
43
|
+
editorial revisions, annotations, elaborations, or other modifications
|
44
|
+
represent, as a whole, an original work of authorship. For the purposes
|
45
|
+
of this License, Derivative Works shall not include works that remain
|
46
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
47
|
+
the Work and Derivative Works thereof.
|
48
|
+
|
49
|
+
"Contribution" shall mean any work of authorship, including
|
50
|
+
the original version of the Work and any modifications or additions
|
51
|
+
to that Work or Derivative Works thereof, that is intentionally
|
52
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
53
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
54
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
55
|
+
means any form of electronic, verbal, or written communication sent
|
56
|
+
to the Licensor or its representatives, including but not limited to
|
57
|
+
communication on electronic mailing lists, source code control systems,
|
58
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
59
|
+
Licensor for the purpose of discussing and improving the Work, but
|
60
|
+
excluding communication that is conspicuously marked or otherwise
|
61
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
62
|
+
|
63
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
64
|
+
on behalf of whom a Contribution has been received by Licensor and
|
65
|
+
subsequently incorporated within the Work.
|
66
|
+
|
67
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
68
|
+
this License, each Contributor hereby grants to You a perpetual,
|
69
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
70
|
+
copyright license to reproduce, prepare Derivative Works of,
|
71
|
+
publicly display, publicly perform, sublicense, and distribute the
|
72
|
+
Work and such Derivative Works in Source or Object form.
|
73
|
+
|
74
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
75
|
+
this License, each Contributor hereby grants to You a perpetual,
|
76
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
77
|
+
(except as stated in this section) patent license to make, have made,
|
78
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
79
|
+
where such license applies only to those patent claims licensable
|
80
|
+
by such Contributor that are necessarily infringed by their
|
81
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
82
|
+
with the Work to which such Contribution(s) was submitted. If You
|
83
|
+
institute patent litigation against any entity (including a
|
84
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
85
|
+
or a Contribution incorporated within the Work constitutes direct
|
86
|
+
or contributory patent infringement, then any patent licenses
|
87
|
+
granted to You under this License for that Work shall terminate
|
88
|
+
as of the date such litigation is filed.
|
89
|
+
|
90
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
91
|
+
Work or Derivative Works thereof in any medium, with or without
|
92
|
+
modifications, and in Source or Object form, provided that You
|
93
|
+
meet the following conditions:
|
94
|
+
|
95
|
+
(a) You must give any other recipients of the Work or
|
96
|
+
Derivative Works a copy of this License; and
|
97
|
+
|
98
|
+
(b) You must cause any modified files to carry prominent notices
|
99
|
+
stating that You changed the files; and
|
100
|
+
|
101
|
+
(c) You must retain, in the Source form of any Derivative Works
|
102
|
+
that You distribute, all copyright, patent, trademark, and
|
103
|
+
attribution notices from the Source form of the Work,
|
104
|
+
excluding those notices that do not pertain to any part of
|
105
|
+
the Derivative Works; and
|
106
|
+
|
107
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
108
|
+
distribution, then any Derivative Works that You distribute must
|
109
|
+
include a readable copy of the attribution notices contained
|
110
|
+
within such NOTICE file, excluding those notices that do not
|
111
|
+
pertain to any part of the Derivative Works, in at least one
|
112
|
+
of the following places: within a NOTICE text file distributed
|
113
|
+
as part of the Derivative Works; within the Source form or
|
114
|
+
documentation, if provided along with the Derivative Works; or,
|
115
|
+
within a display generated by the Derivative Works, if and
|
116
|
+
wherever such third-party notices normally appear. The contents
|
117
|
+
of the NOTICE file are for informational purposes only and
|
118
|
+
do not modify the License. You may add Your own attribution
|
119
|
+
notices within Derivative Works that You distribute, alongside
|
120
|
+
or as an addendum to the NOTICE text from the Work, provided
|
121
|
+
that such additional attribution notices cannot be construed
|
122
|
+
as modifying the License.
|
123
|
+
|
124
|
+
You may add Your own copyright statement to Your modifications and
|
125
|
+
may provide additional or different license terms and conditions
|
126
|
+
for use, reproduction, or distribution of Your modifications, or
|
127
|
+
for any such Derivative Works as a whole, provided Your use,
|
128
|
+
reproduction, and distribution of the Work otherwise complies with
|
129
|
+
the conditions stated in this License.
|
130
|
+
|
131
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
132
|
+
any Contribution intentionally submitted for inclusion in the Work
|
133
|
+
by You to the Licensor shall be under the terms and conditions of
|
134
|
+
this License, without any additional terms or conditions.
|
135
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
136
|
+
the terms of any separate license agreement you may have executed
|
137
|
+
with Licensor regarding such Contributions.
|
138
|
+
|
139
|
+
6. Trademarks. This License does not grant permission to use the trade
|
140
|
+
names, trademarks, service marks, or product names of the Licensor,
|
141
|
+
except as required for reasonable and customary use in describing the
|
142
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
143
|
+
|
144
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
145
|
+
agreed to in writing, Licensor provides the Work (and each
|
146
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
147
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
148
|
+
implied, including, without limitation, any warranties or conditions
|
149
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
150
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
151
|
+
appropriateness of using or redistributing the Work and assume any
|
152
|
+
risks associated with Your exercise of permissions under this License.
|
153
|
+
|
154
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
155
|
+
whether in tort (including negligence), contract, or otherwise,
|
156
|
+
unless required by applicable law (such as deliberate and grossly
|
157
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
158
|
+
liable to You for damages, including any direct, indirect, special,
|
159
|
+
incidental, or consequential damages of any character arising as a
|
160
|
+
result of this License or out of the use or inability to use the
|
161
|
+
Work (including but not limited to damages for loss of goodwill,
|
162
|
+
work stoppage, computer failure or malfunction, or any and all
|
163
|
+
other commercial damages or losses), even if such Contributor
|
164
|
+
has been advised of the possibility of such damages.
|
165
|
+
|
166
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
167
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
168
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
169
|
+
or other liability obligations and/or rights consistent with this
|
170
|
+
License. However, in accepting such obligations, You may act only
|
171
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
172
|
+
of any other Contributor, and only if You agree to indemnify,
|
173
|
+
defend, and hold each Contributor harmless for any liability
|
174
|
+
incurred by, or claims asserted against, such Contributor by reason
|
175
|
+
of your accepting any such warranty or additional liability.
|
176
|
+
|
177
|
+
END OF TERMS AND CONDITIONS
|
data/README.md
ADDED
@@ -0,0 +1,310 @@
|
|
1
|
+
# The Splunk Software Development Kit for Ruby (Preview Release)
|
2
|
+
|
3
|
+
#### Version 0.1
|
4
|
+
This Splunk Software Development Kit (SDK) contains library code and examples
|
5
|
+
designed to enable developers to build applications using Splunk.
|
6
|
+
|
7
|
+
Splunk is a search engine and analytic environment that uses a distributed
|
8
|
+
map-reduce architecture to efficiently index, search, and process large
|
9
|
+
time-varying data sets.
|
10
|
+
|
11
|
+
The Splunk product is popular with system administrators for aggregation and
|
12
|
+
monitoring of IT machine data, security, compliance, and a wide variety of
|
13
|
+
other scenarios that share a requirement to efficiently index, search, analyze,
|
14
|
+
and generate real-time notifications from large volumes of time series data.
|
15
|
+
|
16
|
+
The Splunk developer platform enables developers to take advantage of the
|
17
|
+
same technology used by the Splunk product to build exciting new applications
|
18
|
+
that are enabled by Splunk's unique capabilities.
|
19
|
+
|
20
|
+
1. This Preview release is pre-beta, and therefore is incomplete and may have
|
21
|
+
bugs. A Beta release is planned prior to a general release.
|
22
|
+
|
23
|
+
2. The Apache license only applies to this SDK and no other software provided
|
24
|
+
by Splunk.
|
25
|
+
|
26
|
+
3. Splunk, in using the Apache license, is not providing any warranties or
|
27
|
+
indemnification, or accepting any liabilities with the Preview of this SDK.
|
28
|
+
|
29
|
+
## Getting started with the Splunk SDK for Ruby
|
30
|
+
|
31
|
+
The Splunk SDK for Ruby contains code and some examples that show how to
|
32
|
+
programmatically interact with Splunk for a variety of scenarios, including
|
33
|
+
searching, saved searches, configuration, and many more. This SDK is still
|
34
|
+
in progress and is missing features such as inputs. Stay tuned.
|
35
|
+
|
36
|
+
|
37
|
+
### Requirements
|
38
|
+
|
39
|
+
Here's what you need to get going with the Splunk SDK for Ruby.
|
40
|
+
|
41
|
+
#### Splunk
|
42
|
+
|
43
|
+
If you haven't already installed Splunk, download it
|
44
|
+
[here](http://www.splunk.com/download). For more information about installing
|
45
|
+
and running Splunk and system requirements, see
|
46
|
+
[Installing & Running Splunk](http://dev.splunk.com/view/SP-CAAADRV).
|
47
|
+
|
48
|
+
#### Ruby
|
49
|
+
|
50
|
+
The Splunk SDK for Ruby requires Ruby 1.9.2 or later.
|
51
|
+
|
52
|
+
#### Splunk SDK for Ruby
|
53
|
+
|
54
|
+
Get the Splunk SDK for Ruby from [GitHub](https://www.github.com) and clone the
|
55
|
+
resources to your computer. Use the following command:
|
56
|
+
|
57
|
+
git clone https://github.com/splunk/splunk-sdk-ruby.git
|
58
|
+
|
59
|
+
You can also download the SDK as a ZIP file, or install it directly (see below).
|
60
|
+
|
61
|
+
|
62
|
+
### Installing the Splunk SDK for Ruby
|
63
|
+
|
64
|
+
If you have cloned the Splunk SDK for Ruby from GitHub, you should first
|
65
|
+
install the latest version of `rake`. For example, open a command prompt and
|
66
|
+
enter the following:
|
67
|
+
|
68
|
+
gem install rake
|
69
|
+
|
70
|
+
Then you can install the Splunk SDK for Ruby by running the following
|
71
|
+
command from the root of the repository (**/splunk-sdk-ruby**):
|
72
|
+
|
73
|
+
rake install
|
74
|
+
|
75
|
+
Or, install the Splunk SDK for Ruby directly from RubyGems,
|
76
|
+
without cloning the repository or downloading the ZIP file, by running:
|
77
|
+
|
78
|
+
gem install splunk-sdk-ruby
|
79
|
+
|
80
|
+
If you are using the Splunk SDK for Ruby in an application, we highly
|
81
|
+
recommend that you use [bundler](http://gembundler.com/), which installs
|
82
|
+
the prerequisites when you deploy your application. Add the following
|
83
|
+
line to your application's Gemfile to make bundler aware of the Splunk
|
84
|
+
SDK for Ruby:
|
85
|
+
|
86
|
+
gem 'splunk-sdk-ruby'
|
87
|
+
|
88
|
+
Then run the following command to install all of your application's
|
89
|
+
dependencies, including the Splunk SDK for Ruby:
|
90
|
+
|
91
|
+
bundle
|
92
|
+
|
93
|
+
#### Examples
|
94
|
+
|
95
|
+
Examples are located in several locations within the Splunk SDK for Ruby:
|
96
|
+
|
97
|
+
* The **/splunk-sdk-ruby/examples/** directory
|
98
|
+
* Inline with the source code within the SDK
|
99
|
+
* In the documentation on the [Splunk Developer Portal](http://dev.splunk.com/view/ruby-sdk/SP-CAAAENQ).
|
100
|
+
|
101
|
+
#### Prepare for the unit tests
|
102
|
+
|
103
|
+
First, do not run the test suite against your production Splunk server! Install
|
104
|
+
another copy of Splunk and run the test suite against that.
|
105
|
+
|
106
|
+
Second, update your installations of both the [Rake](http://rake.rubyforge.org)
|
107
|
+
build tool and the [Test::Unit](http://test-unit.rubyforge.org) unit
|
108
|
+
test framework from RubyGems:
|
109
|
+
|
110
|
+
gem install rake
|
111
|
+
gem install test-unit
|
112
|
+
|
113
|
+
The test suite reads the host to connect to and credentials to use from a
|
114
|
+
**.splunkrc** file. To connect to Splunk, all of the SDK examples and unit
|
115
|
+
tests take command-line arguments that specify values for the host, port,
|
116
|
+
and login credentials for Splunk. For convenience during development, you
|
117
|
+
can store these arguments as key-value pairs in a text file named
|
118
|
+
**.splunkrc**. Then, when you don't specify these arguments at the command
|
119
|
+
line, the SDK examples and unit tests use the values from the .splunkrc file.
|
120
|
+
|
121
|
+
**To set up a .splunkrc file**
|
122
|
+
|
123
|
+
1. Create a text file with the following format:
|
124
|
+
|
125
|
+
<pre> # Splunk host (default: localhost)
|
126
|
+
host=localhost
|
127
|
+
# Splunk admin port (default: 8089)
|
128
|
+
port=8089
|
129
|
+
# Splunk username
|
130
|
+
username=admin
|
131
|
+
# Splunk password
|
132
|
+
password=changeme
|
133
|
+
# Access scheme (default: https)
|
134
|
+
scheme=https
|
135
|
+
# Your version of Splunk (default: 5.0)
|
136
|
+
version=5.0</pre>
|
137
|
+
|
138
|
+
2. Save the file as .splunkrc in the current user's home directory.
|
139
|
+
|
140
|
+
**On Mac OS X**
|
141
|
+
|
142
|
+
Save the file as:
|
143
|
+
|
144
|
+
~/.splunkrc
|
145
|
+
|
146
|
+
**On Windows**
|
147
|
+
|
148
|
+
Save the file as:
|
149
|
+
|
150
|
+
C:\Users\[currentusername]\.splunkrc
|
151
|
+
|
152
|
+
You might get errors in Windows when you try to name the file because
|
153
|
+
".splunkrc" looks like a nameless file with an extension. You can use
|
154
|
+
the command line to create this file; go to the
|
155
|
+
**C:\Users\\[currentusername]\\** directory and enter the following command:
|
156
|
+
|
157
|
+
Notepad.exe .splunkrc
|
158
|
+
|
159
|
+
Click **Yes**, then continue creating the file.
|
160
|
+
|
161
|
+
**Notes**
|
162
|
+
|
163
|
+
* Storing login credentials in the .splunkrc file is only for
|
164
|
+
convenience during development; this file isn't part of the
|
165
|
+
Splunk platform and shouldn't be used for storing user credentials
|
166
|
+
for production. And, if you're at all concerned about the security
|
167
|
+
of your credentials, just enter them at the command line and don't
|
168
|
+
bother using the .splunkrc file.
|
169
|
+
* The format of the .splunkrc file has changed between releases. If
|
170
|
+
you are using a preview or beta version of the SDK, some of the
|
171
|
+
newer fields might not be recognized and you might see errors while
|
172
|
+
running the examples. You can either update to the latest version
|
173
|
+
of the SDK, or comment out the <tt>app</tt>, <tt>owner</tt>, and
|
174
|
+
<tt>version</tt> fields.
|
175
|
+
* The <tt>version</tt> field is only used by the Splunk SDK for JavaScript.
|
176
|
+
|
177
|
+
#### Run the unit tests
|
178
|
+
|
179
|
+
In the base directory where you installed the Splunk SDK for Ruby, run
|
180
|
+
|
181
|
+
rake test
|
182
|
+
|
183
|
+
It should run many tests without error.
|
184
|
+
|
185
|
+
To generate code coverage of the test suite, first ensure you've installed
|
186
|
+
the latest version of [SimpleCov](http://rubygems.org/gems/simplecov):
|
187
|
+
|
188
|
+
gem install simplecov
|
189
|
+
|
190
|
+
To generate the code coverage, run:
|
191
|
+
|
192
|
+
rake test COVERAGE=true
|
193
|
+
|
194
|
+
It will produce a directory called **coverage**. Open coverage/index.html to
|
195
|
+
see the coverage report.
|
196
|
+
|
197
|
+
**Note**: To protect your Splunk password, you may want to delete the .splunkrc
|
198
|
+
file when you are done running the unit tests.
|
199
|
+
|
200
|
+
## Repository
|
201
|
+
|
202
|
+
<table>
|
203
|
+
|
204
|
+
<tr>
|
205
|
+
<tr>
|
206
|
+
<td><b>/examples</b></td>
|
207
|
+
<td>Examples demonstrating various SDK features</td>
|
208
|
+
</tr>
|
209
|
+
|
210
|
+
<tr>
|
211
|
+
<td><b>/lib</b></td>
|
212
|
+
<td>Source for the Splunk library modules</td>
|
213
|
+
</tr>
|
214
|
+
|
215
|
+
<tr>
|
216
|
+
<td><b>/test</b></td>
|
217
|
+
<td>Source for unit tests</td>
|
218
|
+
</tr>
|
219
|
+
|
220
|
+
</table>
|
221
|
+
|
222
|
+
### Changelog
|
223
|
+
|
224
|
+
The **CHANGELOG.md** file in the root of the repository contains a description
|
225
|
+
of changes for each version of the SDK. You can also find it online at
|
226
|
+
[https://github.com/splunk/splunk-sdk-ruby/blob/master/CHANGELOG.md](https://github.com/splunk/splunk-sdk-ruby/blob/master/CHANGELOG.md).
|
227
|
+
|
228
|
+
### Branches
|
229
|
+
|
230
|
+
The **master** branch always represents a stable and released version of the SDK.
|
231
|
+
|
232
|
+
## Documentation and resources
|
233
|
+
|
234
|
+
If you need to know more:
|
235
|
+
|
236
|
+
* For all things developer with Splunk, your main resource is the [Splunk Developer Portal](http://dev.splunk.com).
|
237
|
+
|
238
|
+
* For conceptual and how-to documentation, see the [Overview of the Splunk SDK for Ruby](http://dev.splunk.com/view/SP-CAAAENQ).
|
239
|
+
|
240
|
+
* For API reference documentation, see the [Splunk SDK for Ruby Reference](http://docs.splunk.com/Documentation/RubySDK).
|
241
|
+
|
242
|
+
* For more about the Splunk REST API, see the [REST API Reference](http://docs.splunk.com/Documentation/Splunk/latest/RESTAPI).
|
243
|
+
|
244
|
+
* For more about about Splunk in general, see [Splunk>Docs](http://docs.splunk.com/Documentation/Splunk).
|
245
|
+
|
246
|
+
* For more about this SDK's repository, see our [GitHub Wiki](https://github.com/splunk/splunk-sdk-ruby/wiki/).
|
247
|
+
|
248
|
+
## Community
|
249
|
+
|
250
|
+
<table>
|
251
|
+
|
252
|
+
<tr>
|
253
|
+
<td><b>Email</b></td>
|
254
|
+
<td><a href="mailto:devinfo@splunk.com">devinfo@splunk.com</a></td>
|
255
|
+
</tr>
|
256
|
+
|
257
|
+
<tr>
|
258
|
+
<td><strong>Forum</strong></td>
|
259
|
+
<td><a href="https://groups.google.com/forum/#!forum/splunkdev">https://groups.google.com/forum/#!forum/splunkdev</a>
|
260
|
+
</tr>
|
261
|
+
|
262
|
+
<tr>
|
263
|
+
<td><b>Issues</b>
|
264
|
+
<td><a href="https://github.com/splunk/splunk-sdk-ruby/issues/">https://github.com/splunk/splunk-sdk-ruby/issues/</a></td>
|
265
|
+
</tr>
|
266
|
+
|
267
|
+
<tr>
|
268
|
+
<td><b>Answers</b>
|
269
|
+
<td><a href="http://splunk-base.splunk.com/tags/ruby/">http://splunk-base.splunk.com/tags/ruby/</a></td>
|
270
|
+
</tr>
|
271
|
+
|
272
|
+
<tr>
|
273
|
+
<td><b>Blog</b>
|
274
|
+
<td><a href="http://blogs.splunk.com/dev/">http://blogs.splunk.com/dev/</a></td>
|
275
|
+
</tr>
|
276
|
+
|
277
|
+
<tr>
|
278
|
+
<td><b>Twitter</b>
|
279
|
+
<td><a href="http://twitter.com/#!/splunkdev">@splunkdev</a></td>
|
280
|
+
</tr>
|
281
|
+
|
282
|
+
</table>
|
283
|
+
|
284
|
+
### How to contribute
|
285
|
+
|
286
|
+
If you would like to contribute to the SDK, go here for more information:
|
287
|
+
|
288
|
+
* [Splunk and open source](http://dev.splunk.com/view/opensource/SP-CAAAEDM)
|
289
|
+
|
290
|
+
* [Individual contributions](http://dev.splunk.com/goto/individualcontributions)
|
291
|
+
|
292
|
+
* [Company contributions](http://dev.splunk.com/view/companycontributions/SP-CAAAEDR)
|
293
|
+
|
294
|
+
### Support
|
295
|
+
|
296
|
+
* SDKs in Preview are not Splunk supported. Once the Splunk SDK for Ruby moves to
|
297
|
+
an open beta we will provide more detail on support.
|
298
|
+
|
299
|
+
* File any issues on
|
300
|
+
[GitHub](https://github.com/splunk/splunk-sdk-ruby/issues).
|
301
|
+
|
302
|
+
### Contact Us
|
303
|
+
|
304
|
+
You can reach the Dev Platform team at <a href="mailto:devinfo@splunk.com">
|
305
|
+
devinfo@splunk.com</a>.
|
306
|
+
|
307
|
+
## License
|
308
|
+
|
309
|
+
The Splunk Software Development Kit for Ruby is licensed under the Apache
|
310
|
+
License 2.0. Details can be found in the LICENSE file.
|