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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bff1174801b4cb91c827a180e9ce73a1bcf57078
4
- data.tar.gz: 032d486d0422ed1c71c909eb5132984e0ad9c00e
3
+ metadata.gz: daed234fef34458e823c0fa19808a74d14aff98d
4
+ data.tar.gz: 1f43e1635971445dcb06d5d181edfbce4835be6b
5
5
  SHA512:
6
- metadata.gz: 4263da09eaa0b0cfed3940917e39b836771727f595911b0f62c244d6e3ecc4953aab6bd4ff13e48b58529d267e435e4717d58d04c37bc58afd9742ccb206e410
7
- data.tar.gz: 3f043a207f09e457abede59b09d7c7cebdbaf808571a567c2491d9c752f381df022b092269b8370a9802605df09df6a3d00f313a947e847a3a97748826c98006
6
+ metadata.gz: ea8cc1edad7624064f4401b9358134906cf05d8011a4f7ea1353fa6975acca55708764495e2153c1d43b3560c745e2c2f9ca6a11343372bef761817fbb664e1d
7
+ data.tar.gz: 73c326f83c72d0d4800206db8793b563ef8e8ef4535a80d545110e01bbe58e9a4d0f53454ef93deb7ac407b5c88cce1e3d88ba88faccc4e27d2a7a845b829834
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.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.4.0 ruby lib
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.4.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
- # a generic get method, used when there is not specialized method to invoke an API call
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
@@ -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
- end
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
@@ -9,13 +9,15 @@ class Delphix::Database
9
9
  # basic operations
10
10
 
11
11
  def delete
12
- delphix_delete("#{base_endpoint}/#{reference}", nil)['result']
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 = delphix_get("#{base_endpoint}/#{reference}", nil)['result']
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', nil)['result']
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
@@ -11,22 +11,24 @@ class Delphix::Environment
11
11
 
12
12
  # basic operations
13
13
 
14
- def enable
15
- delphix_post("#{base_endpoint}/#{reference}/enable", nil)['result']
14
+ def delete
15
+ Delphix.delete("#{base_endpoint}/#{reference}")['result']
16
16
  end
17
17
 
18
- def disable
19
- delphix_post("#{base_endpoint}/#{reference}/disable", nil)['result']
18
+ # specific operations
19
+
20
+ def enable
21
+ Delphix.post("#{base_endpoint}/#{reference}/enable")['result']
20
22
  end
21
23
 
22
- def delete
23
- delphix_delete("#{base_endpoint}/#{reference}", nil)['result']
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 = delphix_get("#{base_endpoint}/#{reference}", nil)['result']
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', nil)['result']
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
- delphix_delete("#{base_endpoint}/#{reference}", nil)['result']
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 = delphix_get("#{base_endpoint}/#{reference}", nil)['result']
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', nil)['result']
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
@@ -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 = delphix_get("#{base_endpoint}/#{reference}", nil)['result']
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', nil)['result']
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
- :environments, :groups, :repositories,
149
- :authenticate!, :url, :url=, :options, :options=, :connection, :reset_connection!, :debug, :debug=,
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.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