croesus 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +121 -0
- data/.ruby-version +1 -0
- data/API_operation.txt +197 -0
- data/CHANGELOG.md +0 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +0 -0
- data/README.md +146 -0
- data/Rakefile +26 -0
- data/bin/console_cmd.rb +133 -0
- data/croesus.gemspec +39 -0
- data/lib/croesus/associations.rb +46 -0
- data/lib/croesus/attribute.rb +41 -0
- data/lib/croesus/attributes.rb +93 -0
- data/lib/croesus/coerce.rb +110 -0
- data/lib/croesus/coercions/boolean_definitions.rb +32 -0
- data/lib/croesus/coercions/date_definitions.rb +30 -0
- data/lib/croesus/coercions/date_time_definitions.rb +30 -0
- data/lib/croesus/coercions/fixnum_definitions.rb +32 -0
- data/lib/croesus/coercions/float_definitions.rb +30 -0
- data/lib/croesus/coercions/hash_definitions.rb +27 -0
- data/lib/croesus/coercions/integer_definitions.rb +29 -0
- data/lib/croesus/coercions/string_definitions.rb +43 -0
- data/lib/croesus/coercions/time_definitions.rb +30 -0
- data/lib/croesus/core_ext/blank.rb +123 -0
- data/lib/croesus/core_ext/hash.rb +185 -0
- data/lib/croesus/dsl/dsl.rb +35 -0
- data/lib/croesus/dsl/helpers.rb +43 -0
- data/lib/croesus/dsl/mod_factory.rb +191 -0
- data/lib/croesus/dsl/resource_dsl.rb +59 -0
- data/lib/croesus/dsl/route_dsl.rb +42 -0
- data/lib/croesus/identity_map.rb +98 -0
- data/lib/croesus/platform.rb +47 -0
- data/lib/croesus/querying.rb +63 -0
- data/lib/croesus/resources/about.rb +15 -0
- data/lib/croesus/resources/basic_methods.rb +36 -0
- data/lib/croesus/resources/connectivity.rb +42 -0
- data/lib/croesus/resources/container.rb +135 -0
- data/lib/croesus/resources/fault.rb +38 -0
- data/lib/croesus/resources/fault_effect.rb +24 -0
- data/lib/croesus/resources/group.rb +37 -0
- data/lib/croesus/resources/host.rb +26 -0
- data/lib/croesus/resources/job.rb +27 -0
- data/lib/croesus/resources/namespace.rb +39 -0
- data/lib/croesus/resources/policy.rb +38 -0
- data/lib/croesus/resources/source.rb +86 -0
- data/lib/croesus/resources/source_config.rb +54 -0
- data/lib/croesus/resources/source_environment.rb +58 -0
- data/lib/croesus/resources/source_repository.rb +14 -0
- data/lib/croesus/resources/system_info.rb +21 -0
- data/lib/croesus/resources/timeflow.rb +40 -0
- data/lib/croesus/resources/timeflow_snapshot.rb +38 -0
- data/lib/croesus/utils.rb +262 -0
- data/lib/croesus/validations/many.rb +27 -0
- data/lib/croesus/validations/optional.rb +27 -0
- data/lib/croesus/validations.rb +91 -0
- data/lib/croesus/validators/base.rb +47 -0
- data/lib/croesus/validators/boolean_validator.rb +32 -0
- data/lib/croesus/validators/email_validator.rb +36 -0
- data/lib/croesus/validators/enumerable_validator.rb +40 -0
- data/lib/croesus/validators/hash_validator.rb +50 -0
- data/lib/croesus/validators/lambda_validator.rb +54 -0
- data/lib/croesus/validators/many_validator.rb +57 -0
- data/lib/croesus/validators/optional_validator.rb +41 -0
- data/lib/croesus/validators/presence_validator.rb +36 -0
- data/lib/croesus/validators/simple_type_validators.rb +38 -0
- data/lib/croesus/validators/simple_validator.rb +40 -0
- data/lib/croesus/version.rb +43 -0
- data/lib/croesus/web_client/web_client.rb +153 -0
- data/lib/croesus/web_client/web_request.rb +77 -0
- data/lib/croesus/web_client/web_response.rb +70 -0
- data/lib/croesus.rb +250 -0
- metadata +325 -0
@@ -0,0 +1,98 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Author: Stefano Harding <riddopic@gmail.com>
|
4
|
+
#
|
5
|
+
# Copyright (C) 2014 Stefano Harding
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
16
|
+
# implied. See the License for the specific language governing
|
17
|
+
# permissions and limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
module Croesus
|
21
|
+
module IdentityMap
|
22
|
+
def self.enabled=(flag)
|
23
|
+
Thread.current[:identity_map_enabled] = flag
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.enabled
|
27
|
+
Thread.current[:identity_map_enabled]
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.enabled?
|
31
|
+
enabled == true
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.repository
|
35
|
+
Thread.current[:identity_map] ||= {}
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.clear
|
39
|
+
repository.clear
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.include?(object)
|
43
|
+
repository.keys.include?(object.id)
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.use
|
47
|
+
old, self.enabled = enabled, true
|
48
|
+
|
49
|
+
yield if block_given?
|
50
|
+
ensure
|
51
|
+
self.enabled = old
|
52
|
+
clear
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.without
|
56
|
+
old, self.enabled = enabled, false
|
57
|
+
|
58
|
+
yield if block_given?
|
59
|
+
ensure
|
60
|
+
self.enabled = old
|
61
|
+
end
|
62
|
+
|
63
|
+
module ClassMethods
|
64
|
+
def get(id, options = nil)
|
65
|
+
get_from_identity_map(id) || super
|
66
|
+
end
|
67
|
+
|
68
|
+
def get_from_identity_map(id)
|
69
|
+
IdentityMap.repository[id] if IdentityMap.enabled?
|
70
|
+
end
|
71
|
+
private :get_from_identity_map
|
72
|
+
|
73
|
+
def load(id, attrs)
|
74
|
+
if IdentityMap.enabled? && instance = IdentityMap.repository[id]
|
75
|
+
instance
|
76
|
+
else
|
77
|
+
super.tap { |doc| doc.add_to_identity_map }
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def save(options={})
|
83
|
+
super.tap { |result| add_to_identity_map if result }
|
84
|
+
end
|
85
|
+
|
86
|
+
def delete
|
87
|
+
super.tap { remove_from_identity_map }
|
88
|
+
end
|
89
|
+
|
90
|
+
def add_to_identity_map
|
91
|
+
IdentityMap.repository[id] = self if IdentityMap.enabled?
|
92
|
+
end
|
93
|
+
|
94
|
+
def remove_from_identity_map
|
95
|
+
IdentityMap.repository.delete(id) if IdentityMap.enabled?
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Author: Stefano Harding <riddopic@gmail.com>
|
4
|
+
#
|
5
|
+
# Copyright (C) 2014 Stefano Harding
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
16
|
+
# implied. See the License for the specific language governing
|
17
|
+
# permissions and limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
require 'rbconfig'
|
21
|
+
|
22
|
+
# Gets the current Operating System.
|
23
|
+
module OS
|
24
|
+
def self.windows?
|
25
|
+
windows = /cygwin|mswin|mingw|bccwin|wince|emx/i
|
26
|
+
|
27
|
+
(RbConfig::CONFIG['host_os'] =~ windows) != nil
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.mac?
|
31
|
+
mac = /darwin|mac os/i
|
32
|
+
|
33
|
+
(RbConfig::CONFIG['host_os'] =~ mac) != nil
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.unix?
|
37
|
+
unix = /solaris|bsd/i
|
38
|
+
|
39
|
+
(RbConfig::CONFIG['host_os'] =~ unix) != nil
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.linux?
|
43
|
+
linux = /linux/i
|
44
|
+
|
45
|
+
(RbConfig::CONFIG['host_os'] =~ linux) != nil
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Author: Stefano Harding <riddopic@gmail.com>
|
4
|
+
#
|
5
|
+
# Copyright (C) 2014 Stefano Harding
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
16
|
+
# implied. See the License for the specific language governing
|
17
|
+
# permissions and limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
module Croesus
|
21
|
+
module Querying
|
22
|
+
module ClassMethods
|
23
|
+
def read(id, options = nil)
|
24
|
+
{ id: id, options: options, model: self, hit: false }
|
25
|
+
end
|
26
|
+
alias_method :get, :read
|
27
|
+
alias_method :find, :read
|
28
|
+
|
29
|
+
def read!(id, options = nil)
|
30
|
+
read(id, options) || raise(NotFound.new(id))
|
31
|
+
end
|
32
|
+
alias_method :get!, :read!
|
33
|
+
alias_method :find!, :read!
|
34
|
+
|
35
|
+
def read_multiple(ids, options = nil)
|
36
|
+
{ ids: ids, options: options, model: self, hits: 0, misses: 0 }
|
37
|
+
end
|
38
|
+
alias_method :get_multiple, :read_multiple
|
39
|
+
alias_method :find_multiple, :read_multiple
|
40
|
+
|
41
|
+
def key?(id, options = nil)
|
42
|
+
{ id: id, options: options, model: self }
|
43
|
+
end
|
44
|
+
alias :has_key? :key?
|
45
|
+
|
46
|
+
def load(id, attrs)
|
47
|
+
attrs ||= {}
|
48
|
+
instance = constant_from_attrs(attrs).allocate
|
49
|
+
instance.initialize_from_database(attrs.update('id' => id))
|
50
|
+
end
|
51
|
+
|
52
|
+
def constant_from_attrs(attrs)
|
53
|
+
self if attrs.nil?
|
54
|
+
type = attrs[:type] || attrs['type']
|
55
|
+
self if type.nil?
|
56
|
+
type.constantize
|
57
|
+
rescue NameError
|
58
|
+
self
|
59
|
+
end
|
60
|
+
private :constant_from_attrs
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
|
2
|
+
# Delphix Source API template
|
3
|
+
|
4
|
+
Croesus::DSL.evaluate do
|
5
|
+
resource :about do
|
6
|
+
description 'Retrieve static system-wide properties.'
|
7
|
+
root '/resources/json/delphix/about'
|
8
|
+
|
9
|
+
get '/resources/json/delphix/about' do
|
10
|
+
description 'Retrieve the specified PublicSystemInfo object.'
|
11
|
+
returns Array
|
12
|
+
name :list
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
#
|
3
|
+
# Author: Stefano Harding <riddopic@gmail.com>
|
4
|
+
#
|
5
|
+
# Copyright (C) 2014 Stefano Harding
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
16
|
+
# implied. See the License for the specific language governing
|
17
|
+
# permissions and limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
module Croesus::BasicMethods
|
21
|
+
def self.included(base)
|
22
|
+
base.extend(ClassMethods)
|
23
|
+
end
|
24
|
+
private_class_method :included
|
25
|
+
|
26
|
+
module ClassMethods
|
27
|
+
|
28
|
+
def url(ref: nil, filter: nil, action: nil)
|
29
|
+
url = @root
|
30
|
+
url = ref.nil? ? url : "#{url}/#{ref}"
|
31
|
+
url = filter.nil? ? url : "#{url}/#{filter}"
|
32
|
+
url = action.nil? ? url : "#{url}/#{action}"
|
33
|
+
Croesus.api_url(url)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
|
2
|
+
# Delphix Source API template
|
3
|
+
|
4
|
+
Croesus::DSL.evaluate do
|
5
|
+
resource :connectivity do
|
6
|
+
description 'Tools to test connectivity of external resources.'
|
7
|
+
root '/resources/json/delphix/connectivity'
|
8
|
+
|
9
|
+
post '/resources/json/delphix/connectivity/connector' do
|
10
|
+
description 'Tests whether the specified host is accessible over Delphix ' \
|
11
|
+
'Connector protocol with the provided credentials. This ' \
|
12
|
+
'operates independent of any other objects in the Delphix ' \
|
13
|
+
'system. If the connection attempt is successful, then this ' \
|
14
|
+
'API call will return no data. If there is a problem ' \
|
15
|
+
'connecting to the host, an API error is returned.'
|
16
|
+
returns Array
|
17
|
+
name :connector
|
18
|
+
end
|
19
|
+
|
20
|
+
post '/resources/json/delphix/connectivity/jdbc' do
|
21
|
+
description 'Tests whether the specified database is accessible over JDBC ' \
|
22
|
+
'with the provided credentials. This operates independent of ' \
|
23
|
+
'any other objects in the Delphix system. If the connection ' \
|
24
|
+
'attempt is successful, then this API call will return no ' \
|
25
|
+
'data. If there is a problem connecting to the host, an API ' \
|
26
|
+
'error is returned.'
|
27
|
+
returns Array
|
28
|
+
name :jdbc
|
29
|
+
end
|
30
|
+
|
31
|
+
post '/resources/json/delphix/connectivity/ssh' do
|
32
|
+
description 'Tests whether the specified host is accessible over SSH with ' \
|
33
|
+
'the provided credentials. This operates independent of any ' \
|
34
|
+
'other objects in the Delphix system. If the connection ' \
|
35
|
+
'attempt is successful, then this API call will return no ' \
|
36
|
+
'data. If there is a problem connecting to the host, an API ' \
|
37
|
+
'error is returned.'
|
38
|
+
returns Array
|
39
|
+
name :ssh
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -0,0 +1,135 @@
|
|
1
|
+
|
2
|
+
# Delphix Source API template
|
3
|
+
|
4
|
+
Croesus::DSL.evaluate do
|
5
|
+
resource :container do
|
6
|
+
description 'A container holding data.'
|
7
|
+
root '/resources/json/delphix/database'
|
8
|
+
|
9
|
+
get '/resources/json/delphix/database' do
|
10
|
+
description 'Returns a list of databases on the system or within a group.'
|
11
|
+
returns Array
|
12
|
+
name :list
|
13
|
+
end
|
14
|
+
|
15
|
+
get '/resources/json/delphix/database/{ref}' do
|
16
|
+
description 'Retrieve the specified Container object.'
|
17
|
+
returns Object
|
18
|
+
name :read
|
19
|
+
end
|
20
|
+
|
21
|
+
post '/resources/json/delphix/database/{ref}' do
|
22
|
+
description 'Update the specified Container object.'
|
23
|
+
input String
|
24
|
+
name :update
|
25
|
+
end
|
26
|
+
|
27
|
+
post '/resources/json/delphix/database/{ref}' do
|
28
|
+
description 'Delete the specified Container object.'
|
29
|
+
input String
|
30
|
+
name :delete
|
31
|
+
end
|
32
|
+
|
33
|
+
post '/resources/json/delphix/database/export' do
|
34
|
+
description 'Provision a physical database.'
|
35
|
+
input String
|
36
|
+
name :export
|
37
|
+
end
|
38
|
+
|
39
|
+
post '/resources/json/delphix/database/fileMapping' do
|
40
|
+
description 'Generate file mappings for a particular timeflow point and ' \
|
41
|
+
'a set of rules.'
|
42
|
+
input String
|
43
|
+
name :fileMapping
|
44
|
+
end
|
45
|
+
|
46
|
+
post '/resources/json/delphix/database/link' do
|
47
|
+
description 'Links the database specified by link parameters.'
|
48
|
+
input String
|
49
|
+
name :link
|
50
|
+
end
|
51
|
+
|
52
|
+
post '/resources/json/delphix/database/provision' do
|
53
|
+
description 'Provisions the container specified by the provision ' \
|
54
|
+
'parameters.'
|
55
|
+
input String
|
56
|
+
name :provision
|
57
|
+
end
|
58
|
+
|
59
|
+
post '/resources/json/delphix/database/validateXpp' do
|
60
|
+
description 'Validate the container for cross-platform provisioning.'
|
61
|
+
input String
|
62
|
+
name :validateXpp
|
63
|
+
end
|
64
|
+
|
65
|
+
post '/resources/json/delphix/database/xpp' do
|
66
|
+
description 'Provisions the container specified by the provision ' \
|
67
|
+
'parameters to a different host platform.'
|
68
|
+
input String
|
69
|
+
name :xpp
|
70
|
+
end
|
71
|
+
|
72
|
+
post '/resources/json/delphix/database/{ref}/attachSource' do
|
73
|
+
description 'Attaches a database source to a previously detached container.'
|
74
|
+
input String
|
75
|
+
name :attachSource
|
76
|
+
end
|
77
|
+
|
78
|
+
post '/resources/json/delphix/database/{ref}/connectionInfo' do
|
79
|
+
description 'Returns the connection information for the source '\
|
80
|
+
'associated with this container.'
|
81
|
+
input String
|
82
|
+
name :connectionInfo
|
83
|
+
end
|
84
|
+
|
85
|
+
post '/resources/json/delphix/database/{ref}/detachSource' do
|
86
|
+
description 'Detaches a linked source from a database.'
|
87
|
+
input String
|
88
|
+
name :detachSource
|
89
|
+
end
|
90
|
+
|
91
|
+
post '/resources/json/delphix/database/{ref}/refresh' do
|
92
|
+
description 'Refreshes a container.'
|
93
|
+
input String
|
94
|
+
name :refresh
|
95
|
+
end
|
96
|
+
|
97
|
+
post '/resources/json/delphix/database/{ref}/requestXppUpload' do
|
98
|
+
description 'Request upload for cross-platform provisioning. See ' \
|
99
|
+
'UploadParameters for more information on how to upload files.'
|
100
|
+
input String
|
101
|
+
name :requestXppUpload
|
102
|
+
end
|
103
|
+
|
104
|
+
post '/resources/json/delphix/database/{ref}/rollback' do
|
105
|
+
description 'Rolls back a container.'
|
106
|
+
input String
|
107
|
+
name :rollback
|
108
|
+
end
|
109
|
+
|
110
|
+
post '/resources/json/delphix/database/{ref}/switchTimeflow' do
|
111
|
+
description 'Switch to the latest point on the specified TimeFlow.'
|
112
|
+
input String
|
113
|
+
name :switchTimeflow
|
114
|
+
end
|
115
|
+
|
116
|
+
post '/resources/json/delphix/database/{ref}/sync' do
|
117
|
+
description 'Performs SnapSync on a database.'
|
118
|
+
input String
|
119
|
+
name :sync
|
120
|
+
end
|
121
|
+
|
122
|
+
post '/resources/json/delphix/database/{ref}/testPerformanceModeDataLoss' do
|
123
|
+
description 'Test the effect of data loss as might be seen as a result ' \
|
124
|
+
'of a Delphix Engine failure with performanceMode enabled.'
|
125
|
+
input String
|
126
|
+
name :testPerformanceModeDataLoss
|
127
|
+
end
|
128
|
+
|
129
|
+
get '/resources/json/delphix/database/{ref}/xppStatus' do
|
130
|
+
description 'Get the cross-platform provisioning status of this container.'
|
131
|
+
input String
|
132
|
+
name :xppStatus
|
133
|
+
end
|
134
|
+
end
|
135
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
|
2
|
+
# Delphix Source API template
|
3
|
+
|
4
|
+
Croesus::DSL.evaluate do
|
5
|
+
resource :fault do
|
6
|
+
description 'A representation of a fault, with associated user object.'
|
7
|
+
root '/resources/json/delphix/fault'
|
8
|
+
|
9
|
+
get '/resources/json/delphix/fault' do
|
10
|
+
description 'Returns the list of all the faults that match the given ' \
|
11
|
+
'criteria.'
|
12
|
+
returns Array
|
13
|
+
name :list
|
14
|
+
end
|
15
|
+
|
16
|
+
get '/resources/json/delphix/fault/{ref}' do
|
17
|
+
description 'Retrieve the specified Fault object ' \
|
18
|
+
'criteria.'
|
19
|
+
returns Array
|
20
|
+
name :read
|
21
|
+
end
|
22
|
+
|
23
|
+
post '/resources/json/delphix/fault/{ref}/resolve' do
|
24
|
+
description 'Marks the fault as resolved. The system will attempt to ' \
|
25
|
+
'automatically detect cases where the fault has been resolved; '\
|
26
|
+
'but this is not always possible and may only occur on ' \
|
27
|
+
'periodic intervals. In these cases, the user can proactively ' \
|
28
|
+
'mark the fault resolved. This does not change the underlying ' \
|
29
|
+
'disposition of the fault - if the problem is still present ' \
|
30
|
+
'the system may immediately diagnose the same problem again. ' \
|
31
|
+
'This should only be used to notify the system of resolution ' \
|
32
|
+
'after the underlying problem has been resolved.'
|
33
|
+
'criteria.'
|
34
|
+
returns Array
|
35
|
+
name :resolve
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
|
2
|
+
# Delphix Source API template
|
3
|
+
|
4
|
+
Croesus::DSL.evaluate do
|
5
|
+
resource :fault_effect do
|
6
|
+
description 'An error affecting a user object whose root cause is a ' \
|
7
|
+
'fault. A fault effect can only be resolved by resolving the ' \
|
8
|
+
'fault which is its root cause.'
|
9
|
+
root '/resources/json/delphix/fault/effect'
|
10
|
+
|
11
|
+
get '/resources/json/delphix/fault/effect' do
|
12
|
+
description 'Returns the list of all the fault effects that match the ' \
|
13
|
+
'given criteria.'
|
14
|
+
returns Array
|
15
|
+
name :list
|
16
|
+
end
|
17
|
+
|
18
|
+
get '/resources/json/delphix/fault/effect/{ref}' do
|
19
|
+
description 'Retrieve the specified FaultEffect object.'
|
20
|
+
returns Array
|
21
|
+
name :read
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
|
2
|
+
# Delphix Source API template
|
3
|
+
|
4
|
+
Croesus::DSL.evaluate do
|
5
|
+
resource :group do
|
6
|
+
description 'Database group.'
|
7
|
+
root '/resources/json/delphix/group'
|
8
|
+
|
9
|
+
get '/resources/json/delphix/group' do
|
10
|
+
description 'List Group objects on the system.'
|
11
|
+
returns Array
|
12
|
+
name :list
|
13
|
+
end
|
14
|
+
|
15
|
+
get '/resources/json/delphix/group/{ref}' do
|
16
|
+
description 'Retrieve the specified Group object.'
|
17
|
+
returns Array
|
18
|
+
name :read
|
19
|
+
end
|
20
|
+
|
21
|
+
post '/resources/json/delphix/group' do
|
22
|
+
description 'Create a new Group object.'
|
23
|
+
name :create
|
24
|
+
end
|
25
|
+
|
26
|
+
post '/resources/json/delphix/group/{ref}' do
|
27
|
+
description 'Update the specified Group object.'
|
28
|
+
name :update
|
29
|
+
end
|
30
|
+
|
31
|
+
delete '/resources/json/delphix/group/{ref}' do
|
32
|
+
description 'Deletes the specified group. Any databases within the group '\
|
33
|
+
'must be deleted first, otherwise this will fail.'
|
34
|
+
name :delete
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
# Delphix Source API template
|
3
|
+
|
4
|
+
Croesus::DSL.evaluate do
|
5
|
+
resource :host do
|
6
|
+
description 'The representation of a host object.'
|
7
|
+
root '/resources/json/delphix/host'
|
8
|
+
|
9
|
+
get '/resources/json/delphix/host' do
|
10
|
+
description 'Returns the list of all hosts in the system.'
|
11
|
+
returns Array
|
12
|
+
name :list
|
13
|
+
end
|
14
|
+
|
15
|
+
get '/resources/json/delphix/host/{ref}' do
|
16
|
+
description 'Retrieve the specified Host object.'
|
17
|
+
returns Array
|
18
|
+
name :read
|
19
|
+
end
|
20
|
+
|
21
|
+
post '/resources/json/delphix/host/{ref}' do
|
22
|
+
description 'Update the specified Host object.'
|
23
|
+
name :update
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
|
2
|
+
# Delphix Source API template
|
3
|
+
|
4
|
+
Croesus::DSL.evaluate do
|
5
|
+
resource :job do
|
6
|
+
description 'Represents a job object.'
|
7
|
+
root '/resources/json/delphix/job'
|
8
|
+
|
9
|
+
get '/resources/json/delphix/job' do
|
10
|
+
description 'Returns a list of jobs in the system. Jobs are listed in ' \
|
11
|
+
'start time order.'
|
12
|
+
returns Array
|
13
|
+
name :list
|
14
|
+
end
|
15
|
+
|
16
|
+
get '/resources/json/delphix/job/{ref}' do
|
17
|
+
description 'Retrieve the specified Job object.'
|
18
|
+
returns Array
|
19
|
+
name :read
|
20
|
+
end
|
21
|
+
|
22
|
+
post '/resources/json/delphix/job/{ref}' do
|
23
|
+
description 'Update the specified Job object.'
|
24
|
+
name :update
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
|
2
|
+
# Delphix Source API template
|
3
|
+
|
4
|
+
Croesus::DSL.evaluate do
|
5
|
+
resource :namespace do
|
6
|
+
description 'Objects within namespaces are always read-only. Attempts to ' \
|
7
|
+
'modify those objects, or perform read-write operations using '\
|
8
|
+
'them, will fail. When a namespace is failed over '\
|
9
|
+
'(activated), all objects become read-write (assuming there ' \
|
10
|
+
'are no conflicts in terms of names or shared resources) and ' \
|
11
|
+
'it is no longer possible to receive subsequent replication ' \
|
12
|
+
'updates.'
|
13
|
+
root '/resources/json/delphix/namespace'
|
14
|
+
|
15
|
+
get '/resources/json/delphix/namespace' do
|
16
|
+
description 'List Namespace objects on the system.'
|
17
|
+
returns Array
|
18
|
+
name :list
|
19
|
+
end
|
20
|
+
|
21
|
+
get '/resources/json/delphix/namespace/{ref}' do
|
22
|
+
description 'Retrieve the specified Namespace object.'
|
23
|
+
returns Array
|
24
|
+
name :read
|
25
|
+
end
|
26
|
+
|
27
|
+
post '/resources/json/delphix/namespace/{ref}' do
|
28
|
+
description 'Update the specified Namespace object.'
|
29
|
+
name :update
|
30
|
+
end
|
31
|
+
|
32
|
+
delete '/resources/json/delphix/namespace/{ref}' do
|
33
|
+
description 'Deletes a namespace and all of the objects contained within '\
|
34
|
+
'it. This will cause all of the objects in the namespace to ' \
|
35
|
+
'be permanently removed.'
|
36
|
+
name :delete
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
|
2
|
+
# Delphix Source API template
|
3
|
+
|
4
|
+
Croesus::DSL.evaluate do
|
5
|
+
resource :policy do
|
6
|
+
description 'The base policy type.'
|
7
|
+
root '/resources/json/delphix/policy'
|
8
|
+
|
9
|
+
|
10
|
+
get '/resources/json/delphix/policy' do
|
11
|
+
description 'Returns a list of policies in the domain.'
|
12
|
+
returns Array
|
13
|
+
name :list
|
14
|
+
end
|
15
|
+
|
16
|
+
get '/resources/json/delphix/policy/{ref}' do
|
17
|
+
description 'Retrieve the specified Policy object.'
|
18
|
+
returns Array
|
19
|
+
name :read
|
20
|
+
end
|
21
|
+
|
22
|
+
post '/resources/json/delphix/policy' do
|
23
|
+
description 'Creates a new policy, subject to restrictions (see docs).'
|
24
|
+
name :create
|
25
|
+
end
|
26
|
+
|
27
|
+
post '/resources/json/delphix/policy/{ref}' do
|
28
|
+
description 'Update the specified Policy object.'
|
29
|
+
name :update
|
30
|
+
end
|
31
|
+
|
32
|
+
delete '/resources/json/delphix/policy/{ref}' do
|
33
|
+
description 'Deletes the specified policy, subject to restrictions '\
|
34
|
+
'(see docs).'
|
35
|
+
name :delete
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|