delphix_rb 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/delphix_rb.gemspec +7 -3
- data/lib/delphix.rb +6 -1
- data/lib/delphix/base.rb +5 -3
- data/lib/delphix/database.rb +18 -6
- data/lib/delphix/environment.rb +82 -15
- data/lib/delphix/group.rb +1 -5
- data/lib/delphix/job.rb +61 -0
- data/lib/delphix/repository.rb +0 -4
- data/lib/delphix/response.rb +42 -0
- data/lib/delphix/source.rb +49 -0
- data/lib/delphix/sourceconfig.rb +30 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b610f70f46c2543a921ad3cdfbf9b0ca02ec27ff
|
4
|
+
data.tar.gz: 3bd756ab20fdcb7a4bd9ec15801e9815972e2901
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c16f33eb586f3be717ecebd85ad1c4bf3202976d75ac33c6e25dfcac162b542926aea08a43e613b375f60a4f6f4d66b7414970f8120f3574f6f9f17f00bed8d
|
7
|
+
data.tar.gz: 897fceae8b65006b2db1463ab4b567c410b7cd205a15f721aaf8adb424459f51c103ff83517258b897e967e67796e9274043030b9f17a77ebed30e2e1e0595ba
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.0
|
data/delphix_rb.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: delphix_rb 1.
|
5
|
+
# stub: delphix_rb 1.1.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "delphix_rb"
|
9
|
-
s.version = "1.
|
9
|
+
s.version = "1.1.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Michael Kuehl"]
|
14
|
-
s.date = "2016-02-
|
14
|
+
s.date = "2016-02-16"
|
15
15
|
s.description = "Delphix Engine REST API"
|
16
16
|
s.email = "michael.kuehl@delphix.com"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -36,7 +36,11 @@ Gem::Specification.new do |s|
|
|
36
36
|
"lib/delphix/environment.rb",
|
37
37
|
"lib/delphix/error.rb",
|
38
38
|
"lib/delphix/group.rb",
|
39
|
+
"lib/delphix/job.rb",
|
39
40
|
"lib/delphix/repository.rb",
|
41
|
+
"lib/delphix/response.rb",
|
42
|
+
"lib/delphix/source.rb",
|
43
|
+
"lib/delphix/sourceconfig.rb",
|
40
44
|
"lib/delphix/util.rb"
|
41
45
|
]
|
42
46
|
s.homepage = "http://github.com/mickuehl/delphix_rb"
|
data/lib/delphix.rb
CHANGED
@@ -9,11 +9,16 @@ module Delphix
|
|
9
9
|
require 'delphix/connection'
|
10
10
|
require 'delphix/base'
|
11
11
|
require 'delphix/base_array'
|
12
|
+
require 'delphix/response'
|
13
|
+
|
12
14
|
require 'delphix/environment'
|
13
15
|
require 'delphix/group'
|
14
16
|
require 'delphix/repository'
|
15
17
|
require 'delphix/database'
|
16
|
-
|
18
|
+
require 'delphix/source'
|
19
|
+
require 'delphix/sourceconfig'
|
20
|
+
require 'delphix/job'
|
21
|
+
|
17
22
|
def authenticate!(username,password)
|
18
23
|
|
19
24
|
case
|
data/lib/delphix/base.rb
CHANGED
@@ -4,8 +4,9 @@ module Delphix::Base
|
|
4
4
|
|
5
5
|
attr_accessor :details
|
6
6
|
|
7
|
-
# The private new method accepts a
|
7
|
+
# The private new method accepts a reference string and a hash
|
8
8
|
def initialize(reference=nil, details=nil)
|
9
|
+
# FIXME change this, passing the reference does not make sense !!!
|
9
10
|
if details == nil
|
10
11
|
@details = { 'reference' => reference }
|
11
12
|
else
|
@@ -31,7 +32,8 @@ module Delphix::Base
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def refresh_details
|
34
|
-
#
|
35
|
+
# TODO Subclasses should override this if needed
|
36
|
+
@details = Delphix.get("#{base_endpoint}/#{reference}")['result']
|
35
37
|
end
|
36
38
|
|
37
39
|
def base_endpoint
|
@@ -41,5 +43,5 @@ module Delphix::Base
|
|
41
43
|
def to_s
|
42
44
|
"#{self.class.name}[#{type}, #{name}, #{reference}]"
|
43
45
|
end
|
44
|
-
|
46
|
+
|
45
47
|
end
|
data/lib/delphix/database.rb
CHANGED
@@ -9,17 +9,21 @@ class Delphix::Database
|
|
9
9
|
# basic operations
|
10
10
|
|
11
11
|
def delete
|
12
|
-
Delphix.delete("#{base_endpoint}/#{reference}")
|
12
|
+
Delphix::Response.new( Delphix.delete("#{base_endpoint}/#{reference}"))
|
13
13
|
end
|
14
14
|
|
15
15
|
# specific operations
|
16
16
|
|
17
|
-
|
17
|
+
def start
|
18
|
+
Delphix::Response.new( Delphix.post("/resources/json/delphix/source/#{lookup_source_ref}/start"))
|
19
|
+
end
|
18
20
|
|
19
|
-
def
|
20
|
-
|
21
|
+
def stop
|
22
|
+
Delphix::Response.new( Delphix.post("/resources/json/delphix/source/#{lookup_source_ref}/stop"))
|
21
23
|
end
|
22
24
|
|
25
|
+
# inherited operations
|
26
|
+
|
23
27
|
def base_endpoint
|
24
28
|
'/resources/json/delphix/database'
|
25
29
|
end
|
@@ -63,8 +67,16 @@ class Delphix::Database
|
|
63
67
|
}
|
64
68
|
}
|
65
69
|
|
66
|
-
|
67
|
-
|
70
|
+
Delphix::Response.new( Delphix.post('/resources/json/delphix/database/provision', body.to_json))
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
private
|
75
|
+
|
76
|
+
def lookup_source_ref
|
77
|
+
sources = Delphix::Source.list
|
78
|
+
source = sources.filter_by 'container', reference
|
79
|
+
source[0].reference # FIXME assumes there is only one ...
|
68
80
|
end
|
69
81
|
|
70
82
|
end
|
data/lib/delphix/environment.rb
CHANGED
@@ -12,25 +12,53 @@ class Delphix::Environment
|
|
12
12
|
# basic operations
|
13
13
|
|
14
14
|
def delete
|
15
|
-
Delphix.delete("#{base_endpoint}/#{reference}")
|
15
|
+
Delphix::Response.new( Delphix.delete("#{base_endpoint}/#{reference}"))
|
16
16
|
end
|
17
17
|
|
18
18
|
# specific operations
|
19
19
|
|
20
|
-
def enable
|
21
|
-
Delphix.post("#{base_endpoint}/#{reference}/enable")
|
22
|
-
|
20
|
+
def enable(enable_all_sources=false)
|
21
|
+
resp = Delphix::Response.new( Delphix.post("#{base_endpoint}/#{reference}/enable"))
|
22
|
+
return resp if !enable_all_sources
|
23
|
+
|
24
|
+
resp.wait_for_completion
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
+
# enable all sources on this environment
|
27
|
+
sources = lookup_sources
|
28
|
+
if sources != nil
|
29
|
+
sources.each do |src|
|
30
|
+
src.enable.wait_for_completion
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
resp
|
26
35
|
end
|
27
36
|
|
28
|
-
|
37
|
+
def disable(disable_all_sources=true)
|
38
|
+
|
39
|
+
if disable_all_sources
|
40
|
+
# stop and disable all sources on this environment
|
41
|
+
sources = lookup_sources
|
42
|
+
if sources != nil
|
43
|
+
sources.each do |src|
|
44
|
+
if src.virtual?
|
45
|
+
src.stop.wait_for_completion
|
46
|
+
end
|
47
|
+
src.disable.wait_for_completion
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# now disable the environment itself
|
53
|
+
Delphix::Response.new( Delphix.post("#{base_endpoint}/#{reference}/disable"))
|
54
|
+
end
|
29
55
|
|
30
|
-
def
|
31
|
-
|
56
|
+
def refresh
|
57
|
+
Delphix::Response.new( Delphix.post("#{base_endpoint}/#{reference}/refresh"))
|
32
58
|
end
|
33
59
|
|
60
|
+
# inherited operations
|
61
|
+
|
34
62
|
def base_endpoint
|
35
63
|
'/resources/json/delphix/environment'
|
36
64
|
end
|
@@ -62,15 +90,17 @@ class Delphix::Environment
|
|
62
90
|
}
|
63
91
|
}
|
64
92
|
}
|
65
|
-
response = Delphix.post('/resources/json/delphix/environment', body.to_json)
|
66
93
|
|
67
|
-
|
68
|
-
|
94
|
+
# create the environment
|
95
|
+
resp = Delphix::Response.new( Delphix.post('/resources/json/delphix/environment', body.to_json))
|
96
|
+
return nil if resp.is_error?
|
69
97
|
|
70
|
-
#
|
71
|
-
|
98
|
+
# wait until the environment has been created
|
99
|
+
resp.job.wait_for_completion
|
72
100
|
|
73
|
-
#
|
101
|
+
# create a new skeleton environment object
|
102
|
+
env = Delphix::Environment.new resp.details
|
103
|
+
# and refresh the object from the engine
|
74
104
|
env.refresh_details
|
75
105
|
|
76
106
|
env
|
@@ -85,4 +115,41 @@ class Delphix::Environment
|
|
85
115
|
envs
|
86
116
|
end
|
87
117
|
|
118
|
+
private
|
119
|
+
|
120
|
+
def lookup_sources
|
121
|
+
repos = Delphix::Repository.list
|
122
|
+
repos = repos.filter_by 'environment', reference
|
123
|
+
|
124
|
+
# lookup sourceconfigs that are related to this environment
|
125
|
+
configs = Delphix::SourceConfig.list
|
126
|
+
sourceconfigs = Delphix::BaseArray.new
|
127
|
+
repos.each do |repo|
|
128
|
+
result = configs.filter_by 'repository', repo.reference
|
129
|
+
if result != nil
|
130
|
+
result.each do |i|
|
131
|
+
sourceconfigs << i
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
# find the matching sources
|
137
|
+
sources = Delphix::Source.list
|
138
|
+
|
139
|
+
# filter to match sourceconfigs
|
140
|
+
vdb_sources = Delphix::BaseArray.new
|
141
|
+
sourceconfigs.each do |conf|
|
142
|
+
result = sources.filter_by 'config', conf.reference
|
143
|
+
if result != nil
|
144
|
+
result.each do |i|
|
145
|
+
vdb_sources << i
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
return nil if vdb_sources.size == 0
|
151
|
+
vdb_sources
|
152
|
+
|
153
|
+
end
|
154
|
+
|
88
155
|
end
|
data/lib/delphix/group.rb
CHANGED
@@ -9,17 +9,13 @@ class Delphix::Group
|
|
9
9
|
# basic operations
|
10
10
|
|
11
11
|
def delete
|
12
|
-
Delphix.delete("#{base_endpoint}/#{reference}")
|
12
|
+
Delphix::Response.new( Delphix.delete("#{base_endpoint}/#{reference}"))
|
13
13
|
end
|
14
14
|
|
15
15
|
# specific operations
|
16
16
|
|
17
17
|
# inherited operations
|
18
18
|
|
19
|
-
def refresh_details
|
20
|
-
@details = Delphix.get("#{base_endpoint}/#{reference}")['result']
|
21
|
-
end
|
22
|
-
|
23
19
|
def base_endpoint
|
24
20
|
'/resources/json/delphix/group'
|
25
21
|
end
|
data/lib/delphix/job.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
|
2
|
+
class Delphix::Job
|
3
|
+
include Delphix::Base
|
4
|
+
|
5
|
+
def initialize(reference, details=nil)
|
6
|
+
super(reference, details)
|
7
|
+
end
|
8
|
+
|
9
|
+
# basic operations
|
10
|
+
|
11
|
+
# specific operations
|
12
|
+
|
13
|
+
def state
|
14
|
+
@details['jobState'] # RUNNING, SUSPENDED, CANCELED, COMPLETED, FAILED
|
15
|
+
end
|
16
|
+
|
17
|
+
def state?
|
18
|
+
refresh_details
|
19
|
+
state
|
20
|
+
end
|
21
|
+
|
22
|
+
def cancel!
|
23
|
+
Delphix.post("#{base_endpoint}/#{reference}/cancel")['result']
|
24
|
+
end
|
25
|
+
|
26
|
+
def suspend!
|
27
|
+
Delphix.post("#{base_endpoint}/#{reference}/suspend")['result']
|
28
|
+
end
|
29
|
+
|
30
|
+
def resume!
|
31
|
+
Delphix.post("#{base_endpoint}/#{reference}/resume")['result']
|
32
|
+
end
|
33
|
+
|
34
|
+
def wait_for_completion
|
35
|
+
begin
|
36
|
+
sleep 1
|
37
|
+
end while state? == 'RUNNING'
|
38
|
+
end
|
39
|
+
|
40
|
+
# inherited operations
|
41
|
+
|
42
|
+
def to_s
|
43
|
+
"#{self.class.name}[#{@details['actionType']}, #{reference}, #{@details['jobState']}]"
|
44
|
+
end
|
45
|
+
|
46
|
+
def base_endpoint
|
47
|
+
'/resources/json/delphix/job'
|
48
|
+
end
|
49
|
+
|
50
|
+
# class methods
|
51
|
+
|
52
|
+
def self.list
|
53
|
+
jobs = Delphix::BaseArray.new
|
54
|
+
result = Delphix.get('/resources/json/delphix/job')['result']
|
55
|
+
result.each do |job|
|
56
|
+
jobs << Delphix::Job.new(job['reference'],job)
|
57
|
+
end
|
58
|
+
jobs
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
data/lib/delphix/repository.rb
CHANGED
@@ -0,0 +1,42 @@
|
|
1
|
+
|
2
|
+
class Delphix::Response
|
3
|
+
include Delphix::Error
|
4
|
+
|
5
|
+
attr_accessor :details
|
6
|
+
|
7
|
+
# The private new method accepts a reference string and a hash
|
8
|
+
def initialize(details={})
|
9
|
+
@details = details
|
10
|
+
end
|
11
|
+
|
12
|
+
def type
|
13
|
+
@details['type'] || 'unknown'
|
14
|
+
end
|
15
|
+
|
16
|
+
def status
|
17
|
+
@details['status'] || 'unknown'
|
18
|
+
end
|
19
|
+
|
20
|
+
def details
|
21
|
+
@details['result'] || nil
|
22
|
+
end
|
23
|
+
|
24
|
+
def is_error?
|
25
|
+
@details['type'] == 'ErrorResult'
|
26
|
+
end
|
27
|
+
|
28
|
+
def job
|
29
|
+
return nil if @details['job'] == nil
|
30
|
+
Delphix::Job.new( @details['job'])
|
31
|
+
end
|
32
|
+
|
33
|
+
def wait_for_completion
|
34
|
+
return if is_error?
|
35
|
+
job.wait_for_completion if job
|
36
|
+
end
|
37
|
+
|
38
|
+
def to_s
|
39
|
+
"#{self.class.name}[#{type}, #{status}]"
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
|
2
|
+
class Delphix::Source
|
3
|
+
include Delphix::Base
|
4
|
+
|
5
|
+
def initialize(reference, details=nil)
|
6
|
+
super(reference, details)
|
7
|
+
end
|
8
|
+
|
9
|
+
# basic operations
|
10
|
+
|
11
|
+
# specific operations
|
12
|
+
def start
|
13
|
+
Delphix::Response.new( Delphix.post("#{base_endpoint}/#{reference}/start"))
|
14
|
+
end
|
15
|
+
|
16
|
+
def stop
|
17
|
+
Delphix::Response.new( Delphix.post("#{base_endpoint}/#{reference}/stop"))
|
18
|
+
end
|
19
|
+
|
20
|
+
def enable
|
21
|
+
Delphix::Response.new( Delphix.post("#{base_endpoint}/#{reference}/enable"))
|
22
|
+
end
|
23
|
+
|
24
|
+
def disable
|
25
|
+
Delphix::Response.new( Delphix.post("#{base_endpoint}/#{reference}/disable"))
|
26
|
+
end
|
27
|
+
|
28
|
+
def virtual?
|
29
|
+
@details['virtual'] == true
|
30
|
+
end
|
31
|
+
|
32
|
+
# inherited operations
|
33
|
+
|
34
|
+
def base_endpoint
|
35
|
+
'/resources/json/delphix/source'
|
36
|
+
end
|
37
|
+
|
38
|
+
# class methods
|
39
|
+
|
40
|
+
def self.list
|
41
|
+
sources = Delphix::BaseArray.new
|
42
|
+
result = Delphix.get('/resources/json/delphix/source')['result']
|
43
|
+
result.each do |src|
|
44
|
+
sources << Delphix::Source.new(src['reference'],src)
|
45
|
+
end
|
46
|
+
sources
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
|
2
|
+
class Delphix::SourceConfig
|
3
|
+
include Delphix::Base
|
4
|
+
|
5
|
+
def initialize(reference, details=nil)
|
6
|
+
super(reference, details)
|
7
|
+
end
|
8
|
+
|
9
|
+
# basic operations
|
10
|
+
|
11
|
+
# specific operations
|
12
|
+
|
13
|
+
# inherited operations
|
14
|
+
|
15
|
+
def base_endpoint
|
16
|
+
'/resources/json/delphix/sourceconfig'
|
17
|
+
end
|
18
|
+
|
19
|
+
# class methods
|
20
|
+
|
21
|
+
def self.list
|
22
|
+
sources = Delphix::BaseArray.new
|
23
|
+
result = Delphix.get('/resources/json/delphix/sourceconfig')['result']
|
24
|
+
result.each do |src|
|
25
|
+
sources << Delphix::SourceConfig.new(src['reference'],src)
|
26
|
+
end
|
27
|
+
sources
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delphix_rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Kuehl
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-02-
|
11
|
+
date: 2016-02-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: shoulda
|
@@ -119,7 +119,11 @@ files:
|
|
119
119
|
- lib/delphix/environment.rb
|
120
120
|
- lib/delphix/error.rb
|
121
121
|
- lib/delphix/group.rb
|
122
|
+
- lib/delphix/job.rb
|
122
123
|
- lib/delphix/repository.rb
|
124
|
+
- lib/delphix/response.rb
|
125
|
+
- lib/delphix/source.rb
|
126
|
+
- lib/delphix/sourceconfig.rb
|
123
127
|
- lib/delphix/util.rb
|
124
128
|
homepage: http://github.com/mickuehl/delphix_rb
|
125
129
|
licenses:
|