delphix_rb 0.4.0 → 1.0.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 +3 -4
- data/lib/delphix/base.rb +8 -23
- data/lib/delphix/base_array.rb +23 -5
- data/lib/delphix/database.rb +37 -3
- data/lib/delphix/environment.rb +10 -8
- data/lib/delphix/group.rb +5 -3
- data/lib/delphix/repository.rb +37 -2
- data/lib/delphix.rb +6 -34
- metadata +1 -2
- data/lib/delphix/vdb.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: daed234fef34458e823c0fa19808a74d14aff98d
|
4
|
+
data.tar.gz: 1f43e1635971445dcb06d5d181edfbce4835be6b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea8cc1edad7624064f4401b9358134906cf05d8011a4f7ea1353fa6975acca55708764495e2153c1d43b3560c745e2c2f9ca6a11343372bef761817fbb664e1d
|
7
|
+
data.tar.gz: 73c326f83c72d0d4800206db8793b563ef8e8ef4535a80d545110e01bbe58e9a4d0f53454ef93deb7ac407b5c88cce1e3d88ba88faccc4e27d2a7a845b829834
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
data/delphix_rb.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
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 0.
|
5
|
+
# stub: delphix_rb 1.0.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "delphix_rb"
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "1.0.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"]
|
@@ -37,8 +37,7 @@ Gem::Specification.new do |s|
|
|
37
37
|
"lib/delphix/error.rb",
|
38
38
|
"lib/delphix/group.rb",
|
39
39
|
"lib/delphix/repository.rb",
|
40
|
-
"lib/delphix/util.rb"
|
41
|
-
"lib/delphix/vdb.rb"
|
40
|
+
"lib/delphix/util.rb"
|
42
41
|
]
|
43
42
|
s.homepage = "http://github.com/mickuehl/delphix_rb"
|
44
43
|
s.licenses = ["MIT"]
|
data/lib/delphix/base.rb
CHANGED
@@ -3,7 +3,7 @@ module Delphix::Base
|
|
3
3
|
include Delphix::Error
|
4
4
|
|
5
5
|
attr_accessor :details
|
6
|
-
|
6
|
+
|
7
7
|
# The private new method accepts a connection and a hash
|
8
8
|
def initialize(reference=nil, details=nil)
|
9
9
|
if details == nil
|
@@ -16,15 +16,15 @@ module Delphix::Base
|
|
16
16
|
def type
|
17
17
|
@details['type'] || 'unknown'
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
def name
|
21
21
|
@details['name'] || ''
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
def reference
|
25
25
|
@details['reference'] || ''
|
26
26
|
end
|
27
|
-
|
27
|
+
|
28
28
|
def details
|
29
29
|
@details ||= refresh_details
|
30
30
|
@details
|
@@ -33,28 +33,13 @@ module Delphix::Base
|
|
33
33
|
def refresh_details
|
34
34
|
# Placeholder. Subclasses need to implement this
|
35
35
|
end
|
36
|
-
|
36
|
+
|
37
37
|
def base_endpoint
|
38
38
|
# Placeholder. Subclasses need to implement this
|
39
39
|
end
|
40
|
-
|
40
|
+
|
41
41
|
def to_s
|
42
42
|
"#{self.class.name}[#{type}, #{name}, #{reference}]"
|
43
43
|
end
|
44
|
-
|
45
|
-
|
46
|
-
def delphix_get(endpoint, payload)
|
47
|
-
Delphix.get( endpoint, payload)
|
48
|
-
end
|
49
|
-
|
50
|
-
# a generic post method, used when there is not specialized method to invoke an API call
|
51
|
-
def delphix_post(endpoint, payload)
|
52
|
-
Delphix.post( endpoint, payload)
|
53
|
-
end
|
54
|
-
|
55
|
-
# a generic delete method, used when there is not specialized method to invoke an API call
|
56
|
-
def delphix_delete(endpoint, payload)
|
57
|
-
Delphix.delete( endpoint, payload)
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
44
|
+
|
45
|
+
end
|
data/lib/delphix/base_array.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
|
2
2
|
class Delphix::BaseArray < Array
|
3
|
-
|
3
|
+
#
|
4
|
+
# lookup_by_ref, lookup_by_name & lookup_by_type assume that there is only
|
5
|
+
# one match in the array. In case there are multiple matches, the first one
|
6
|
+
# is returned.
|
7
|
+
#
|
4
8
|
def lookup_by_ref(ref)
|
5
9
|
return nil if self.size == 0
|
6
10
|
self.each do |o|
|
@@ -8,7 +12,7 @@ class Delphix::BaseArray < Array
|
|
8
12
|
end
|
9
13
|
return nil
|
10
14
|
end
|
11
|
-
|
15
|
+
|
12
16
|
def lookup_by_name(name)
|
13
17
|
return nil if self.size == 0
|
14
18
|
self.each do |o|
|
@@ -16,7 +20,7 @@ class Delphix::BaseArray < Array
|
|
16
20
|
end
|
17
21
|
return nil
|
18
22
|
end
|
19
|
-
|
23
|
+
|
20
24
|
def lookup_by_type(type)
|
21
25
|
return nil if self.size == 0
|
22
26
|
self.each do |o|
|
@@ -24,5 +28,19 @@ class Delphix::BaseArray < Array
|
|
24
28
|
end
|
25
29
|
return nil
|
26
30
|
end
|
27
|
-
|
28
|
-
|
31
|
+
|
32
|
+
#
|
33
|
+
# Filters an array bases on a key and a value.
|
34
|
+
# NOTE: The resulting array is a shallow copy of the original array!
|
35
|
+
#
|
36
|
+
def filter_by(key, value)
|
37
|
+
return nil if self.size == 0
|
38
|
+
a = Delphix::BaseArray.new
|
39
|
+
self.each do |o|
|
40
|
+
a << o if o.details[key] == value
|
41
|
+
end
|
42
|
+
return nil if a.size == 0
|
43
|
+
a
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
data/lib/delphix/database.rb
CHANGED
@@ -9,13 +9,15 @@ class Delphix::Database
|
|
9
9
|
# basic operations
|
10
10
|
|
11
11
|
def delete
|
12
|
-
|
12
|
+
Delphix.delete("#{base_endpoint}/#{reference}")['result']
|
13
13
|
end
|
14
14
|
|
15
|
+
# specific operations
|
16
|
+
|
15
17
|
# inherited operations
|
16
18
|
|
17
19
|
def refresh_details
|
18
|
-
@details =
|
20
|
+
@details = Delphix.get("#{base_endpoint}/#{reference}")['result']
|
19
21
|
end
|
20
22
|
|
21
23
|
def base_endpoint
|
@@ -26,11 +28,43 @@ class Delphix::Database
|
|
26
28
|
|
27
29
|
def self.list
|
28
30
|
databases = Delphix::BaseArray.new
|
29
|
-
result = Delphix.get('/resources/json/delphix/database'
|
31
|
+
result = Delphix.get('/resources/json/delphix/database')['result']
|
30
32
|
result.each do |db|
|
31
33
|
databases << Delphix::Database.new(db['reference'],db)
|
32
34
|
end
|
33
35
|
databases
|
34
36
|
end
|
35
37
|
|
38
|
+
def self.create_vdb(name, source_ref, group_ref, environment_ref, mount_base, port, params={})
|
39
|
+
|
40
|
+
body = {
|
41
|
+
:type => 'MySQLProvisionParameters',
|
42
|
+
:container => {
|
43
|
+
:type => 'MySQLDatabaseContainer',
|
44
|
+
:name => name,
|
45
|
+
:group => group_ref,
|
46
|
+
:sourcingPolicy => {
|
47
|
+
:type => 'SourcingPolicy'
|
48
|
+
}
|
49
|
+
},
|
50
|
+
:source => {
|
51
|
+
:type => 'MySQLVirtualSource',
|
52
|
+
:mountBase => mount_base
|
53
|
+
},
|
54
|
+
:sourceConfig => {
|
55
|
+
:type => 'MySQLServerConfig',
|
56
|
+
:port => port,
|
57
|
+
:repository => environment_ref
|
58
|
+
},
|
59
|
+
:timeflowPointParameters => {
|
60
|
+
:type => 'TimeflowPointSemantic',
|
61
|
+
:container => source_ref,
|
62
|
+
:location => 'LATEST_SNAPSHOT'
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
response = Delphix.post('/resources/json/delphix/database/provision', body.to_json)
|
67
|
+
response
|
68
|
+
end
|
69
|
+
|
36
70
|
end
|
data/lib/delphix/environment.rb
CHANGED
@@ -11,22 +11,24 @@ class Delphix::Environment
|
|
11
11
|
|
12
12
|
# basic operations
|
13
13
|
|
14
|
-
def
|
15
|
-
|
14
|
+
def delete
|
15
|
+
Delphix.delete("#{base_endpoint}/#{reference}")['result']
|
16
16
|
end
|
17
17
|
|
18
|
-
|
19
|
-
|
18
|
+
# specific operations
|
19
|
+
|
20
|
+
def enable
|
21
|
+
Delphix.post("#{base_endpoint}/#{reference}/enable")['result']
|
20
22
|
end
|
21
23
|
|
22
|
-
def
|
23
|
-
|
24
|
+
def disable
|
25
|
+
Delphix.post("#{base_endpoint}/#{reference}/disable")['result']
|
24
26
|
end
|
25
27
|
|
26
28
|
# inherited operations
|
27
29
|
|
28
30
|
def refresh_details
|
29
|
-
@details =
|
31
|
+
@details = Delphix.get("#{base_endpoint}/#{reference}")['result']
|
30
32
|
end
|
31
33
|
|
32
34
|
def base_endpoint
|
@@ -76,7 +78,7 @@ class Delphix::Environment
|
|
76
78
|
|
77
79
|
def self.list
|
78
80
|
envs = Delphix::BaseArray.new
|
79
|
-
result = Delphix.get('/resources/json/delphix/environment'
|
81
|
+
result = Delphix.get('/resources/json/delphix/environment')['result']
|
80
82
|
result.each do |env|
|
81
83
|
envs << Delphix::Environment.new(env['reference'],env)
|
82
84
|
end
|
data/lib/delphix/group.rb
CHANGED
@@ -9,13 +9,15 @@ class Delphix::Group
|
|
9
9
|
# basic operations
|
10
10
|
|
11
11
|
def delete
|
12
|
-
|
12
|
+
Delphix.delete("#{base_endpoint}/#{reference}")['result']
|
13
13
|
end
|
14
14
|
|
15
|
+
# specific operations
|
16
|
+
|
15
17
|
# inherited operations
|
16
18
|
|
17
19
|
def refresh_details
|
18
|
-
@details =
|
20
|
+
@details = Delphix.get("#{base_endpoint}/#{reference}")['result']
|
19
21
|
end
|
20
22
|
|
21
23
|
def base_endpoint
|
@@ -42,7 +44,7 @@ class Delphix::Group
|
|
42
44
|
|
43
45
|
def self.list
|
44
46
|
groups = Delphix::BaseArray.new
|
45
|
-
result = Delphix.get('/resources/json/delphix/group'
|
47
|
+
result = Delphix.get('/resources/json/delphix/group')['result']
|
46
48
|
result.each do |group|
|
47
49
|
groups << Delphix::Group.new(group['reference'],group)
|
48
50
|
end
|
data/lib/delphix/repository.rb
CHANGED
@@ -6,8 +6,43 @@ class Delphix::Repository
|
|
6
6
|
super(reference, details)
|
7
7
|
end
|
8
8
|
|
9
|
+
# basic operations
|
10
|
+
|
11
|
+
# specific operations
|
12
|
+
def provisioning?
|
13
|
+
@details['provisioningEnabled'] == true
|
14
|
+
end
|
15
|
+
|
16
|
+
def provisioning!(provisioning)
|
17
|
+
return if provisioning? == provisioning
|
18
|
+
body = {
|
19
|
+
:type => type,
|
20
|
+
:provisioningEnabled => provisioning
|
21
|
+
}
|
22
|
+
Delphix.post("#{base_endpoint}/#{reference}", body.to_json)
|
23
|
+
# TODO error handling on wait for completion!
|
24
|
+
refresh_details
|
25
|
+
end
|
26
|
+
|
27
|
+
def staging?
|
28
|
+
@details['staging'] == true
|
29
|
+
end
|
30
|
+
|
31
|
+
def staging!(staging)
|
32
|
+
return if staging? == staging
|
33
|
+
body = {
|
34
|
+
:type => type,
|
35
|
+
:staging => staging
|
36
|
+
}
|
37
|
+
Delphix.post("#{base_endpoint}/#{reference}", body.to_json)
|
38
|
+
# TODO error handling on wait for completion!
|
39
|
+
refresh_details
|
40
|
+
end
|
41
|
+
|
42
|
+
# inherited operations
|
43
|
+
|
9
44
|
def refresh_details
|
10
|
-
@details =
|
45
|
+
@details = Delphix.get("#{base_endpoint}/#{reference}")['result']
|
11
46
|
end
|
12
47
|
|
13
48
|
def base_endpoint
|
@@ -18,7 +53,7 @@ class Delphix::Repository
|
|
18
53
|
|
19
54
|
def self.list
|
20
55
|
repos = Delphix::BaseArray.new
|
21
|
-
result = Delphix.get('/resources/json/delphix/repository'
|
56
|
+
result = Delphix.get('/resources/json/delphix/repository')['result']
|
22
57
|
result.each do |repo|
|
23
58
|
repos << Delphix::Repository.new(repo['reference'],repo)
|
24
59
|
end
|
data/lib/delphix.rb
CHANGED
@@ -12,7 +12,6 @@ module Delphix
|
|
12
12
|
require 'delphix/environment'
|
13
13
|
require 'delphix/group'
|
14
14
|
require 'delphix/repository'
|
15
|
-
require 'delphix/vdb'
|
16
15
|
require 'delphix/database'
|
17
16
|
|
18
17
|
def authenticate!(username,password)
|
@@ -48,50 +47,23 @@ module Delphix
|
|
48
47
|
|
49
48
|
end
|
50
49
|
|
51
|
-
def environments
|
52
|
-
envs = BaseArray.new
|
53
|
-
result = get('/resources/json/delphix/environment', nil)['result']
|
54
|
-
result.each do |env|
|
55
|
-
envs << Environment.new(env['reference'],env)
|
56
|
-
end
|
57
|
-
envs
|
58
|
-
end
|
59
|
-
|
60
|
-
def groups
|
61
|
-
groups = BaseArray.new
|
62
|
-
result = get('/resources/json/delphix/group', nil)['result']
|
63
|
-
result.each do |group|
|
64
|
-
groups << Group.new(group['reference'],group)
|
65
|
-
end
|
66
|
-
groups
|
67
|
-
end
|
68
|
-
|
69
|
-
def repositories
|
70
|
-
repos = BaseArray.new
|
71
|
-
result = get('/resources/json/delphix/repository', nil)['result']
|
72
|
-
result.each do |repo|
|
73
|
-
repos << Repository.new(repo['reference'],repo)
|
74
|
-
end
|
75
|
-
repos
|
76
|
-
end
|
77
|
-
|
78
50
|
# a generic get method, used when there is not specialized method to invoke an API call
|
79
|
-
def get(endpoint, payload)
|
51
|
+
def get(endpoint, payload=nil)
|
80
52
|
connection.get( endpoint, {}, :body => payload)
|
81
53
|
end
|
82
54
|
|
83
55
|
# a generic post method, used when there is not specialized method to invoke an API call
|
84
|
-
def post(endpoint, payload)
|
56
|
+
def post(endpoint, payload=nil)
|
85
57
|
connection.post( endpoint, {}, :body => payload)
|
86
58
|
end
|
87
59
|
|
88
60
|
# a generic put method, used when there is not specialized method to invoke an API call
|
89
|
-
def put(endpoint, payload)
|
61
|
+
def put(endpoint, payload=nil)
|
90
62
|
connection.put( endpoint, {}, :body => payload)
|
91
63
|
end
|
92
64
|
|
93
65
|
# a generic delete method, used when there is not specialized method to invoke an API call
|
94
|
-
def delete(endpoint, payload)
|
66
|
+
def delete(endpoint, payload=nil)
|
95
67
|
connection.delete( endpoint, {}, :body => payload)
|
96
68
|
end
|
97
69
|
|
@@ -145,8 +117,8 @@ private
|
|
145
117
|
end
|
146
118
|
|
147
119
|
module_function :get, :post, :put, :delete,
|
148
|
-
:
|
149
|
-
:
|
120
|
+
:authenticate!, :url, :url=, :connection, :reset_connection!,
|
121
|
+
:options, :options=, :debug, :debug=,
|
150
122
|
:env_url, :default_url, :env_options
|
151
123
|
|
152
124
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delphix_rb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Kuehl
|
@@ -121,7 +121,6 @@ files:
|
|
121
121
|
- lib/delphix/group.rb
|
122
122
|
- lib/delphix/repository.rb
|
123
123
|
- lib/delphix/util.rb
|
124
|
-
- lib/delphix/vdb.rb
|
125
124
|
homepage: http://github.com/mickuehl/delphix_rb
|
126
125
|
licenses:
|
127
126
|
- MIT
|
data/lib/delphix/vdb.rb
DELETED
@@ -1,57 +0,0 @@
|
|
1
|
-
|
2
|
-
class Delphix::VDB
|
3
|
-
include Delphix::Base
|
4
|
-
|
5
|
-
def initialize(reference, details=nil)
|
6
|
-
super(reference, details)
|
7
|
-
end
|
8
|
-
|
9
|
-
# basic operations
|
10
|
-
|
11
|
-
def delete
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
# inherited operations
|
16
|
-
|
17
|
-
def refresh_details
|
18
|
-
@details = delphix_get("#{base_endpoint}/#{reference}", nil)['result']
|
19
|
-
end
|
20
|
-
|
21
|
-
def base_endpoint
|
22
|
-
'/resources/json/delphix/group'
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.create(name, source_ref, group_ref, environment_ref, mount_base, port, params={})
|
26
|
-
|
27
|
-
body = {
|
28
|
-
:type => 'MySQLProvisionParameters',
|
29
|
-
:container => {
|
30
|
-
:type => 'MySQLDatabaseContainer',
|
31
|
-
:name => name,
|
32
|
-
:group => group_ref,
|
33
|
-
:sourcingPolicy => {
|
34
|
-
:type => 'SourcingPolicy'
|
35
|
-
}
|
36
|
-
},
|
37
|
-
:source => {
|
38
|
-
:type => 'MySQLVirtualSource',
|
39
|
-
:mountBase => mount_base
|
40
|
-
},
|
41
|
-
:sourceConfig => {
|
42
|
-
:type => 'MySQLServerConfig',
|
43
|
-
:port => port,
|
44
|
-
:repository => environment_ref
|
45
|
-
},
|
46
|
-
:timeflowPointParameters => {
|
47
|
-
:type => 'TimeflowPointSemantic',
|
48
|
-
:container => source_ref,
|
49
|
-
:location => 'LATEST_SNAPSHOT'
|
50
|
-
}
|
51
|
-
}
|
52
|
-
|
53
|
-
response = Delphix.post('/resources/json/delphix/database/provision', body.to_json)
|
54
|
-
response
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|