polyseerio 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +12 -0
- data/Gemfile +4 -0
- data/HISTORY.md +3 -0
- data/LICENSE +21 -0
- data/Makefile +43 -0
- data/README.md +307 -0
- data/lib/agent/agent.rb +35 -0
- data/lib/agent/default_config.rb +51 -0
- data/lib/agent/enum.rb +35 -0
- data/lib/agent/executor.rb +62 -0
- data/lib/agent/handler/event.rb +32 -0
- data/lib/agent/handler/expectation.rb +10 -0
- data/lib/agent/handler/fact.rb +18 -0
- data/lib/agent/handler/index.rb +15 -0
- data/lib/agent/handler/interface.rb +11 -0
- data/lib/agent/handler/metric.rb +23 -0
- data/lib/agent/handler/process.rb +10 -0
- data/lib/agent/helper.rb +137 -0
- data/lib/client.rb +47 -0
- data/lib/constant.rb +12 -0
- data/lib/enum.rb +82 -0
- data/lib/helper.rb +153 -0
- data/lib/middleware.rb +51 -0
- data/lib/polyseerio.rb +115 -0
- data/lib/request.rb +84 -0
- data/lib/resource/base.rb +73 -0
- data/lib/resource/definition.rb +166 -0
- data/lib/resource/factory.rb +149 -0
- data/lib/resource/helper.rb +91 -0
- data/lib/resource/routine.rb +26 -0
- data/lib/response.rb +27 -0
- data/lib/sdk/factory.rb +34 -0
- data/lib/sdk/helper.rb +50 -0
- data/lib/sdk/method/add_fact.rb +14 -0
- data/lib/sdk/method/add_gauge.rb +14 -0
- data/lib/sdk/method/attach.rb +26 -0
- data/lib/sdk/method/check.rb +11 -0
- data/lib/sdk/method/detach.rb +11 -0
- data/lib/sdk/method/execute.rb +11 -0
- data/lib/sdk/method/fact.rb +11 -0
- data/lib/sdk/method/gauge.rb +11 -0
- data/lib/sdk/method/index.rb +10 -0
- data/lib/sdk/method/message.rb +11 -0
- data/lib/sdk/method/remove.rb +11 -0
- data/lib/sdk/method/save.rb +32 -0
- data/lib/sdk/method/to_json.rb +11 -0
- data/lib/sdk/method/trigger.rb +17 -0
- data/lib/sdk/static/attach.rb +11 -0
- data/lib/sdk/static/check.rb +11 -0
- data/lib/sdk/static/create.rb +21 -0
- data/lib/sdk/static/detach.rb +11 -0
- data/lib/sdk/static/execute.rb +11 -0
- data/lib/sdk/static/find.rb +20 -0
- data/lib/sdk/static/find_by_id.rb +21 -0
- data/lib/sdk/static/find_by_name.rb +28 -0
- data/lib/sdk/static/index.rb +10 -0
- data/lib/sdk/static/message.rb +15 -0
- data/lib/sdk/static/remove.rb +21 -0
- data/lib/sdk/static/trigger.rb +17 -0
- data/lib/sdk/static/update.rb +18 -0
- data/lib/url_builder.rb +55 -0
- data/polyseerio.gemspec +32 -0
- metadata +205 -0
data/lib/sdk/factory.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'sdk/static/index'
|
2
|
+
require 'sdk/method/index'
|
3
|
+
require 'sdk/helper'
|
4
|
+
|
5
|
+
module Polyseerio
|
6
|
+
module SDK
|
7
|
+
# SDK static module.
|
8
|
+
module Static
|
9
|
+
# Generates static functions.
|
10
|
+
def self.factory(request, resource, statics = [], options = {})
|
11
|
+
accumulator = Helper.accumulate_procs('static', MAP)
|
12
|
+
|
13
|
+
statics = statics.each_with_object({}, &accumulator)
|
14
|
+
|
15
|
+
# curry request, resource, and options
|
16
|
+
statics.each_with_object(statics) do |(name, static), hash|
|
17
|
+
if static.arity > 3
|
18
|
+
hash[name] = static.curry.call(request, resource, options)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
statics
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# SDK Method (instance) module.
|
27
|
+
module Method
|
28
|
+
# Generates method (instance) functions.
|
29
|
+
def self.factory(_request, _resource, methods = [], _options = {})
|
30
|
+
methods.each_with_object({}, &Helper.accumulate_procs('method', MAP))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/sdk/helper.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'constant'
|
2
|
+
require 'helper'
|
3
|
+
require 'url_builder'
|
4
|
+
|
5
|
+
module Polyseerio
|
6
|
+
module SDK
|
7
|
+
# SDK helpers.
|
8
|
+
module Helper
|
9
|
+
# Takes an instance and returns a uri.
|
10
|
+
def self.instance_to_uri(instance)
|
11
|
+
URL.get_resource_path(
|
12
|
+
instance.type,
|
13
|
+
eid: instance.eid,
|
14
|
+
id: instance.id
|
15
|
+
)
|
16
|
+
end
|
17
|
+
|
18
|
+
# Accumulates a function type from a map into an accumulator.
|
19
|
+
def self.accumulate_procs(*args)
|
20
|
+
proc do |type, map, name, acc|
|
21
|
+
unless map.key? name
|
22
|
+
raise "SDK factory could not find a #{type} #{name}."
|
23
|
+
end
|
24
|
+
|
25
|
+
acc[name] = map.fetch(name)
|
26
|
+
|
27
|
+
acc
|
28
|
+
end.curry.call(*args)
|
29
|
+
end
|
30
|
+
|
31
|
+
# Reduce method options with client options and method defaults
|
32
|
+
def self.reduce_options(options, copts = {}, defaults = {})
|
33
|
+
defaults.merge(copts).merge(options)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Determine the eid given a reduced options hash
|
37
|
+
def self.resolve_eid(options)
|
38
|
+
return options[:environment] if options.key? :environment
|
39
|
+
|
40
|
+
if options[:deduce]
|
41
|
+
env = options.fetch(:env)
|
42
|
+
|
43
|
+
return ENV.fetch env if ENV.key? env
|
44
|
+
end
|
45
|
+
|
46
|
+
Constant::DEFAULT_ENVIRONMENT
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'sdk/helper'
|
2
|
+
require 'concurrent'
|
3
|
+
|
4
|
+
module Polyseerio
|
5
|
+
module SDK
|
6
|
+
# Introduce methods.
|
7
|
+
module Method
|
8
|
+
def self.attach
|
9
|
+
proc do |instance|
|
10
|
+
uri = Helper.instance_to_uri instance
|
11
|
+
|
12
|
+
Concurrent::Promise.new do
|
13
|
+
heartbeat_thread = Thread.new(instance.request) do |req|
|
14
|
+
loop do
|
15
|
+
req.post("#{uri}/heartbeat", {}).execute.value
|
16
|
+
sleep(5)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
heartbeat_thread
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'sdk/helper'
|
2
|
+
|
3
|
+
module Polyseerio
|
4
|
+
module SDK
|
5
|
+
# Instance methods.
|
6
|
+
module Method
|
7
|
+
def self.save
|
8
|
+
proc do |instance|
|
9
|
+
uri = Helper.instance_to_uri instance
|
10
|
+
|
11
|
+
# TODO: need a way to make raw requests without middleware.
|
12
|
+
# TODO: there is no reason to have to create another instance.
|
13
|
+
if instance.new?
|
14
|
+
instance.request.post(uri, instance.properties)
|
15
|
+
.then do |result|
|
16
|
+
instance.override_properties(result.properties)
|
17
|
+
|
18
|
+
instance
|
19
|
+
end
|
20
|
+
else
|
21
|
+
instance.request.put(uri, instance.properties)
|
22
|
+
.then do |result|
|
23
|
+
instance.override_properties(result.properties)
|
24
|
+
|
25
|
+
instance
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'sdk/helper'
|
2
|
+
|
3
|
+
module Polyseerio
|
4
|
+
module SDK
|
5
|
+
# Instance methods.
|
6
|
+
module Method
|
7
|
+
def self.trigger
|
8
|
+
proc do |instance, payload = {}|
|
9
|
+
# raise if the instance has not been saved yet...
|
10
|
+
uri = Helper.instance_to_uri instance
|
11
|
+
|
12
|
+
instance.request.post("#{uri}/trigger", payload)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'sdk/helper'
|
3
|
+
require 'url_builder'
|
4
|
+
|
5
|
+
module Polyseerio
|
6
|
+
module SDK
|
7
|
+
# Static methods.
|
8
|
+
module Static
|
9
|
+
def self.create
|
10
|
+
proc do |request, resource, copts, attributes, options = {}|
|
11
|
+
options = Polyseerio::Helper.defaults(options, copts)
|
12
|
+
|
13
|
+
eid = Helper.resolve_eid options
|
14
|
+
uri = URL.get_resource_path(resource, eid: eid)
|
15
|
+
|
16
|
+
request.post(uri, attributes)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'sdk/helper'
|
2
|
+
require 'url_builder'
|
3
|
+
|
4
|
+
module Polyseerio
|
5
|
+
module SDK
|
6
|
+
# Static methods.
|
7
|
+
module Static
|
8
|
+
def self.find
|
9
|
+
# TODO; issue with arg arity on curry when all optional
|
10
|
+
proc do |request, resource, _copts, _query, options = {}|
|
11
|
+
eid = Helper.resolve_eid options
|
12
|
+
uri = URL.get_resource_path(resource, eid: eid)
|
13
|
+
|
14
|
+
# TODO: add query string
|
15
|
+
request.get uri
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require 'sdk/helper'
|
3
|
+
require 'url_builder'
|
4
|
+
|
5
|
+
module Polyseerio
|
6
|
+
module SDK
|
7
|
+
# Static methods.
|
8
|
+
module Static
|
9
|
+
def self.find_by_id
|
10
|
+
proc do |request, resource, copts, id, options = {}|
|
11
|
+
options = Polyseerio::Helper.defaults(options, copts)
|
12
|
+
|
13
|
+
eid = Helper.resolve_eid options
|
14
|
+
uri = URL.get_resource_path(resource, eid: eid, id: id)
|
15
|
+
|
16
|
+
request.get uri
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'enum'
|
2
|
+
require 'sdk/helper'
|
3
|
+
|
4
|
+
module Polyseerio
|
5
|
+
module SDK
|
6
|
+
# Static methods.
|
7
|
+
module Static
|
8
|
+
def self.find_by_name
|
9
|
+
proc do |request, resource, copts, name, options = {}|
|
10
|
+
options = Polyseerio::Helper.defaults(options, copts)
|
11
|
+
|
12
|
+
name = "/name/#{name}"
|
13
|
+
eid = Helper.resolve_eid options
|
14
|
+
|
15
|
+
uri = URL.get_resource_path(resource, eid: eid)
|
16
|
+
|
17
|
+
uri = if resource == Polyseerio::Enum::Resource::ENVIRONMENT
|
18
|
+
"/environments#{name}"
|
19
|
+
else
|
20
|
+
"#{uri}#{name}"
|
21
|
+
end
|
22
|
+
|
23
|
+
request.get uri
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|