delphix_rb 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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