vas 0.4.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +1 -1
- data/lib/vas.rb +44 -1
- data/lib/vas/gemfire/agent_instances.rb +4 -3
- data/lib/vas/gemfire/agent_live_configurations.rb +3 -3
- data/lib/vas/gemfire/agent_node_instances.rb +2 -2
- data/lib/vas/gemfire/agent_node_live_configurations.rb +39 -0
- data/lib/vas/gemfire/application_code.rb +13 -12
- data/lib/vas/gemfire/application_code_images.rb +13 -11
- data/lib/vas/gemfire/cache_server_instances.rb +20 -12
- data/lib/vas/gemfire/cache_server_live_configurations.rb +3 -3
- data/lib/vas/gemfire/cache_server_node_instances.rb +16 -9
- data/lib/vas/gemfire/cache_server_node_live_configurations.rb +39 -0
- data/lib/vas/gemfire/disk_stores.rb +19 -11
- data/lib/vas/gemfire/gemfire.rb +4 -4
- data/lib/vas/gemfire/groups.rb +17 -10
- data/lib/vas/gemfire/installations.rb +12 -3
- data/lib/vas/gemfire/live_application_codes.rb +2 -2
- data/lib/vas/gemfire/locator_instances.rb +23 -13
- data/lib/vas/gemfire/locator_live_configurations.rb +3 -3
- data/lib/vas/gemfire/locator_node_instances.rb +22 -14
- data/lib/vas/gemfire/locator_node_live_configurations.rb +39 -0
- data/lib/vas/gemfire/nodes.rb +27 -6
- data/lib/vas/gemfire/pending_application_codes.rb +7 -2
- data/lib/vas/gemfire/statistics.rb +18 -11
- data/lib/vas/rabbitmq/groups.rb +6 -4
- data/lib/vas/rabbitmq/installations.rb +14 -6
- data/lib/vas/rabbitmq/instances.rb +9 -6
- data/lib/vas/rabbitmq/live_configurations.rb +3 -3
- data/lib/vas/rabbitmq/node_instances.rb +2 -2
- data/lib/vas/rabbitmq/node_live_configurations.rb +39 -0
- data/lib/vas/rabbitmq/nodes.rb +11 -8
- data/lib/vas/rabbitmq/plugin_images.rb +14 -7
- data/lib/vas/rabbitmq/plugins.rb +29 -20
- data/lib/vas/rabbitmq/rabbitmq.rb +4 -4
- data/lib/vas/shared/collection.rb +34 -11
- data/lib/vas/shared/configuration.rb +16 -9
- data/lib/vas/shared/deletable.rb +34 -0
- data/lib/vas/shared/groups.rb +26 -15
- data/lib/vas/shared/installation_images.rb +18 -10
- data/lib/vas/shared/installations.rb +22 -22
- data/lib/vas/shared/instance.rb +40 -19
- data/lib/vas/shared/live_configuration.rb +42 -0
- data/lib/vas/shared/logs.rb +27 -14
- data/lib/vas/shared/mutable_collection.rb +13 -5
- data/lib/vas/shared/node_configuration.rb +74 -0
- data/lib/vas/shared/node_instances.rb +32 -14
- data/lib/vas/shared/nodes.rb +37 -14
- data/lib/vas/shared/{pending_configuration.rb → pending_configurations.rb} +4 -2
- data/lib/vas/shared/resource.rb +12 -2
- data/lib/vas/shared/security.rb +11 -4
- data/lib/vas/shared/state_resource.rb +1 -1
- data/lib/vas/sqlfire/agent_instances.rb +98 -0
- data/lib/vas/sqlfire/agent_live_configurations.rb +39 -0
- data/lib/vas/sqlfire/agent_logs.rb +39 -0
- data/lib/vas/sqlfire/agent_node_instances.rb +54 -0
- data/lib/vas/sqlfire/agent_node_live_configurations.rb +39 -0
- data/lib/vas/sqlfire/agent_pending_configurations.rb +39 -0
- data/lib/vas/sqlfire/groups.rb +58 -0
- data/lib/vas/sqlfire/installation_images.rb +39 -0
- data/lib/vas/sqlfire/installations.rb +61 -0
- data/lib/vas/sqlfire/locator_instances.rb +210 -0
- data/lib/vas/sqlfire/locator_live_configurations.rb +39 -0
- data/lib/vas/sqlfire/locator_logs.rb +39 -0
- data/lib/vas/sqlfire/locator_node_instances.rb +91 -0
- data/lib/vas/sqlfire/locator_node_live_configurations.rb +39 -0
- data/lib/vas/sqlfire/locator_pending_configurations.rb +39 -0
- data/lib/vas/sqlfire/nodes.rb +73 -0
- data/lib/vas/sqlfire/server_instances.rb +192 -0
- data/lib/vas/sqlfire/server_live_configurations.rb +39 -0
- data/lib/vas/sqlfire/server_logs.rb +39 -0
- data/lib/vas/sqlfire/server_node_instances.rb +86 -0
- data/lib/vas/sqlfire/server_node_live_configurations.rb +39 -0
- data/lib/vas/sqlfire/server_pending_configurations.rb +39 -0
- data/lib/vas/sqlfire/sqlfire.rb +44 -0
- data/lib/vas/tc_server/applications.rb +32 -21
- data/lib/vas/tc_server/configuration.rb +1 -1
- data/lib/vas/tc_server/groups.rb +7 -4
- data/lib/vas/tc_server/installations.rb +16 -6
- data/lib/vas/tc_server/instances.rb +25 -13
- data/lib/vas/tc_server/live_configurations.rb +11 -1
- data/lib/vas/tc_server/logs.rb +4 -2
- data/lib/vas/tc_server/node_applications.rb +21 -17
- data/lib/vas/tc_server/node_instances.rb +23 -9
- data/lib/vas/tc_server/node_live_configurations.rb +39 -0
- data/lib/vas/tc_server/node_revisions.rb +15 -10
- data/lib/vas/tc_server/nodes.rb +15 -8
- data/lib/vas/tc_server/revision_images.rb +16 -10
- data/lib/vas/tc_server/revisions.rb +20 -16
- data/lib/vas/tc_server/tc_server.rb +5 -5
- data/lib/vas/tc_server/template_images.rb +13 -7
- data/lib/vas/tc_server/templates.rb +21 -13
- data/lib/vas/util/client.rb +15 -6
- data/lib/vas/vfabric/agent_image.rb +1 -1
- data/lib/vas/vfabric/nodes.rb +4 -11
- data/lib/vas/vfabric/v_fabric.rb +2 -2
- data/lib/vas/vfabric_administration_server.rb +37 -6
- data/lib/vas/web_server/configuration.rb +29 -0
- data/lib/vas/web_server/groups.rb +44 -0
- data/lib/vas/web_server/installation_images.rb +54 -0
- data/lib/vas/web_server/installations.rb +52 -0
- data/lib/vas/web_server/instances.rb +65 -0
- data/lib/vas/web_server/live_configurations.rb +39 -0
- data/lib/vas/web_server/logs.rb +37 -0
- data/lib/vas/web_server/node_instances.rb +39 -0
- data/lib/vas/web_server/node_live_configurations.rb +39 -0
- data/lib/vas/web_server/nodes.rb +53 -0
- data/lib/vas/web_server/pending_configurations.rb +39 -0
- data/lib/vas/web_server/web_server.rb +43 -0
- metadata +137 -76
@@ -0,0 +1,39 @@
|
|
1
|
+
# vFabric Administration Server Ruby API
|
2
|
+
# Copyright (c) 2012 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
|
17
|
+
module Sqlfire
|
18
|
+
|
19
|
+
# Used to enumerate a locator instance's live configuration
|
20
|
+
class LocatorLiveConfigurations < Shared::Collection
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, 'live-configurations', LocatorLiveConfiguration)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A live configuration file in a locator instance
|
30
|
+
class LocatorLiveConfiguration < Shared::LiveConfiguration
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def initialize(location, client)
|
34
|
+
super(location, client, 'locator-group-instance', LocatorInstance, LocatorNodeLiveConfiguration)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# vFabric Administration Server Ruby API
|
2
|
+
# Copyright (c) 2012 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
|
17
|
+
module Sqlfire
|
18
|
+
|
19
|
+
# Used to enumerate a locator node instance's logs
|
20
|
+
class LocatorLogs < Shared::Logs
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, LocatorLog)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A log file in a locator node instance
|
30
|
+
class LocatorLog < Shared::Log
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def initialize(location, client)
|
34
|
+
super(location, client, 'locator-node-instance', LocatorNodeInstance)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
# vFabric Administration Server Ruby API
|
2
|
+
# Copyright (c) 2012 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
|
17
|
+
module Sqlfire
|
18
|
+
|
19
|
+
# Used to enumerate locator instances on an individual node
|
20
|
+
class LocatorNodeInstances < Shared::NodeInstances
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, 'locator-node-instances', LocatorNodeInstance)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A locator node instance
|
30
|
+
class LocatorNodeInstance < Shared::NodeInstance
|
31
|
+
|
32
|
+
# @return [String] the property in a node's metadata used to determine the address that the locator binds to for
|
33
|
+
# peer-to-peer communication. If +nil+, the locator uses the value derived from +peer_discovery_address+
|
34
|
+
attr_reader :bind_address
|
35
|
+
|
36
|
+
# @return [String] the property in a node's metadata used to determine the address that the locator binds to for
|
37
|
+
# client communication. If +nil+, the locator uses the node's hostname. Only takes effect if +run_netserver+ is
|
38
|
+
# +true+
|
39
|
+
attr_reader :client_bind_address
|
40
|
+
|
41
|
+
# @return [Integer] The port that the locator listens on for client connections. Only takes effect if
|
42
|
+
# +run_netserver+ is +true+
|
43
|
+
attr_reader :client_port
|
44
|
+
|
45
|
+
# @return [String] The initial heap size of the locator's JVM. +nil+ if the default is used
|
46
|
+
attr_reader :initial_heap
|
47
|
+
|
48
|
+
# @return [String[]] The JVM options that are passed to the locator's JVM when it is started
|
49
|
+
attr_reader :jvm_options
|
50
|
+
|
51
|
+
# @return [String] The max heap size of the locator's JVM. +nil+ if the default is used
|
52
|
+
attr_reader :max_heap
|
53
|
+
|
54
|
+
# @return [String] the property in a node's metadata used to determine the address that the locator binds to for
|
55
|
+
# peer-discovery communication. If +nil+, the locator uses +0.0.0.0+
|
56
|
+
attr_reader :peer_discovery_address
|
57
|
+
|
58
|
+
|
59
|
+
# @return [Integer] The port that the locator listens of for peer-discovery connections
|
60
|
+
attr_reader :peer_discovery_port
|
61
|
+
|
62
|
+
# @return [Boolean] +true+ if the locator runs a netserver that can service thin clients, otherwise +false+
|
63
|
+
attr_reader :run_netserver
|
64
|
+
|
65
|
+
# @private
|
66
|
+
def initialize(location, client)
|
67
|
+
super(location, client, Node, LocatorLogs, LocatorInstance, 'locator-group-instance',
|
68
|
+
LocatorNodeLiveConfigurations)
|
69
|
+
end
|
70
|
+
|
71
|
+
def reload
|
72
|
+
super
|
73
|
+
@bind_address = details['bind-address']
|
74
|
+
@client_bind_address = details['client-bind-address']
|
75
|
+
@client_port = details['client-port']
|
76
|
+
@initial_heap = details['initial-heap']
|
77
|
+
@jvm_options = details['jvm-options']
|
78
|
+
@max_heap = details['max-heap']
|
79
|
+
@peer_discovery_address = details['peer-discovery-address']
|
80
|
+
@peer_discovery_port = details['peer-discovery-port']
|
81
|
+
@run_netserver = details['run-netserver']
|
82
|
+
end
|
83
|
+
|
84
|
+
# @return [String] a string representation of the instance
|
85
|
+
def to_s
|
86
|
+
"#<#{self.class} name='#{name}' bind_address='#@bind_address' client_bind_address='#@client_bind_address' client_port='#@client_port' initial_heap='#@initial_heap' jvm_options='#@jvm_options' max_heap='#@max_heap' peer_discovery_address='#@peer_discovery_address' peer_discovery_port='#@peer_discovery_port' run_netserver='#@run_netserver'>"
|
87
|
+
end
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# vFabric Administration Server Ruby API
|
2
|
+
# Copyright (c) 2012 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
|
17
|
+
module Sqlfire
|
18
|
+
|
19
|
+
# Used to enumerate a locator node instance's live configuration
|
20
|
+
class LocatorNodeLiveConfigurations < Shared::Collection
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, 'node-live-configurations', LocatorNodeLiveConfiguration)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A live configuration file in a locator node instance
|
30
|
+
class LocatorNodeLiveConfiguration < Shared::NodeConfiguration
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def initialize(location, client)
|
34
|
+
super(location, client, 'locator-node-instance', LocatorNodeInstance, LocatorLiveConfiguration)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# vFabric Administration Server Ruby API
|
2
|
+
# Copyright (c) 2012 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
|
17
|
+
module Sqlfire
|
18
|
+
|
19
|
+
# Used to enumerate a locator instance's pending configuration
|
20
|
+
class LocatorPendingConfigurations < Shared::PendingConfigurations
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, 'pending-configurations', LocatorPendingConfiguration)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A locator configuration file that is pending
|
30
|
+
class LocatorPendingConfiguration < Shared::PendingConfiguration
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def initialize(location, client)
|
34
|
+
super(location, client, 'locator-group-instance', LocatorInstance)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# vFabric Administration Server Ruby API
|
2
|
+
# Copyright (c) 2012 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
|
17
|
+
module Sqlfire
|
18
|
+
|
19
|
+
# Used to enumerate SqlFire nodes
|
20
|
+
class Nodes < Shared::Collection
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, 'nodes', Node)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A GemFire node
|
30
|
+
class Node < Shared::GroupableNode
|
31
|
+
|
32
|
+
# @return [String] the Node's Java home
|
33
|
+
attr_reader :java_home
|
34
|
+
|
35
|
+
# @private
|
36
|
+
def initialize(location, client)
|
37
|
+
super(location, client, Group)
|
38
|
+
|
39
|
+
@agent_instances_location = Util::LinkUtils.get_link_href(details, 'agent-node-instances')
|
40
|
+
@locator_instances_location = Util::LinkUtils.get_link_href(details, 'locator-node-instances')
|
41
|
+
@server_instances_location = Util::LinkUtils.get_link_href(details, 'server-node-instances')
|
42
|
+
end
|
43
|
+
|
44
|
+
# Reloads the node's details from the server
|
45
|
+
# @return [void]
|
46
|
+
def reload
|
47
|
+
super
|
48
|
+
@java_home = details['java-home']
|
49
|
+
end
|
50
|
+
|
51
|
+
# @return [AgentNodeInstances] the node's agent instances
|
52
|
+
def agent_instances
|
53
|
+
@agent_instances ||= AgentNodeInstances.new(@agent_instances_location, client)
|
54
|
+
end
|
55
|
+
|
56
|
+
# @return [LocatorNodeInstances] the node's locator instances
|
57
|
+
def locator_instances
|
58
|
+
@locator_instances ||= LocatorNodeInstances.new(@locator_instances_location, client)
|
59
|
+
end
|
60
|
+
|
61
|
+
# @return [ServerNodeInstances] the node's server instances
|
62
|
+
def server_instances
|
63
|
+
@server_instances ||= ServerNodeInstances.new(@server_instances_location, client)
|
64
|
+
end
|
65
|
+
|
66
|
+
# @return [String] a string representation of the node
|
67
|
+
def to_s
|
68
|
+
"#<#{self.class} host_names='#{host_names}' ip_addresses='#{ip_addresses}' ipv4_addresses='#{ipv4_addresses}' ipv6_addresses='#{ipv6_addresses}' operating_system='#{operating_system}' architecture='#{architecture}' agent_home='#{agent_home}' java_home='#@java_home' metadata='#{metadata}'>"
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
@@ -0,0 +1,192 @@
|
|
1
|
+
# vFabric Administration Server Ruby API
|
2
|
+
# Copyright (c) 2012 VMware, Inc. All Rights Reserved.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
|
17
|
+
module Sqlfire
|
18
|
+
|
19
|
+
# Used to enumerate, create, and delete server instances.
|
20
|
+
class ServerInstances < Shared::MutableCollection
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
CREATE_PAYLOAD_KEYS = ['bind-address',
|
25
|
+
'client-bind-address',
|
26
|
+
'client-port',
|
27
|
+
'critical-heap-percentage',
|
28
|
+
'initial-heap',
|
29
|
+
'jvm-options',
|
30
|
+
'max-heap',
|
31
|
+
'run-netserver']
|
32
|
+
|
33
|
+
public
|
34
|
+
|
35
|
+
# @private
|
36
|
+
def initialize(location, client)
|
37
|
+
super(location, client, "server-group-instances", ServerInstance)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Creates a new server instance
|
41
|
+
#
|
42
|
+
# @param installation [Installation] the installation that the instance will use
|
43
|
+
# @param name [String] the name of the instance
|
44
|
+
# @param options [Hash] optional configuration for the instance
|
45
|
+
#
|
46
|
+
# @option options 'bind-address' [String] The property in a node's metadata to use to determine the address that the
|
47
|
+
# server binds to for peer-to-peer communication. If omitted, or if the property does not exist, the server will
|
48
|
+
# use the node's hostname
|
49
|
+
# @option options 'client-bind-address' [String] The property in a node's metadata to use to determine the address
|
50
|
+
# that the server binds to for client communication. If omitted, or if the property does not exist, the server
|
51
|
+
# will use the node's hostname. Only takes effect if +run-netserver+ is +true+
|
52
|
+
# @option options 'client-port' [Integer] The port that the server listens on for client connections. Only take
|
53
|
+
# effect if +run-netserver+ is +true+
|
54
|
+
# @option options 'critical-heap-percentage' [Integer] Critical heap threshold as a percentage of the old generation
|
55
|
+
# heap
|
56
|
+
# @option options 'initial-heap' [String] The intial heap size to be used by the server's JVM. If not specified,
|
57
|
+
# the JVM's default is used
|
58
|
+
# @option options 'jvm-options' [String[]] The JVM options that are passed to the server's JVM when it is started
|
59
|
+
# @option options 'max-heap' [String] The maximum heap size to be used by the server's JVM. If not specified, the
|
60
|
+
# JVM's default is used
|
61
|
+
# @option options 'run-netserver' [Boolean] Whether the locator should run a netserver that can service thin
|
62
|
+
# clients. Default is +true+.
|
63
|
+
#
|
64
|
+
# @return [ServerInstance] the new server instance
|
65
|
+
def create(installation, name, options = {})
|
66
|
+
payload = { :installation => installation.location, :name => name }
|
67
|
+
|
68
|
+
options.each { |key, value|
|
69
|
+
if (CREATE_PAYLOAD_KEYS.include?(key))
|
70
|
+
payload[key] = value
|
71
|
+
end
|
72
|
+
}
|
73
|
+
|
74
|
+
super(payload, 'server-group-instance')
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
# A server instance
|
80
|
+
class ServerInstance < Shared::Instance
|
81
|
+
|
82
|
+
private
|
83
|
+
|
84
|
+
UPDATE_PAYLOAD_KEYS = ['bind-address',
|
85
|
+
'client-bind-address',
|
86
|
+
'client-port',
|
87
|
+
'critical-heap-percentage',
|
88
|
+
'initial-heap',
|
89
|
+
'jvm-options',
|
90
|
+
'max-heap',
|
91
|
+
'run-netserver']
|
92
|
+
|
93
|
+
public
|
94
|
+
|
95
|
+
# @return [String] the property in a node's metadata used to determine the address that the server binds to for
|
96
|
+
# peer-to-peer communication. If +nil+, the server uses the node's hostname
|
97
|
+
attr_reader :bind_address
|
98
|
+
|
99
|
+
# @return [String] the property in a node's metadata used to determine the address that the server binds to for
|
100
|
+
# client communication. If +nil+, the server uses localhost. Only takes effect if +run_netserver+ is +true+
|
101
|
+
attr_reader :client_bind_address
|
102
|
+
|
103
|
+
# @return [Integer] the port that the server listens on for client connections. Only takes effect if +run_netserver+
|
104
|
+
# is +true+
|
105
|
+
attr_reader :client_port
|
106
|
+
|
107
|
+
# @return [Integer] critical heap percentage as a percentage of the old generation heap. +nil+ if the server uses
|
108
|
+
# the default
|
109
|
+
attr_reader :critical_heap_percentage
|
110
|
+
|
111
|
+
# @return [String] The initial heap size of the server's JVM. +nil+ if the default is used
|
112
|
+
attr_reader :initial_heap
|
113
|
+
|
114
|
+
# @return [String[]] The JVM options that are passed to the server's JVM when it is started
|
115
|
+
attr_reader :jvm_options
|
116
|
+
|
117
|
+
# @return [String] The max heap size of the server's JVM. +nil+ if the default is used
|
118
|
+
attr_reader :max_heap
|
119
|
+
|
120
|
+
# @return [Boolean] +true+ if the server runs a netserver that can service thin clients, otherwise +false+
|
121
|
+
attr_reader :run_netserver
|
122
|
+
|
123
|
+
# @private
|
124
|
+
def initialize(location, client)
|
125
|
+
super(location, client, Group, Installation, ServerLiveConfigurations, ServerPendingConfigurations, ServerNodeInstance, 'server-node-instance')
|
126
|
+
end
|
127
|
+
|
128
|
+
# Updates the instance using the supplied +options+.
|
129
|
+
#
|
130
|
+
# @param options [Hash] optional configuration for the instance
|
131
|
+
#
|
132
|
+
# @option options 'bind-address' [String] The property in a node's metadata to use to determine the address that the
|
133
|
+
# server binds to for peer-to-peer communication. If omitted or +nil+, the configuration will not be changed. If
|
134
|
+
# set to an empty string the server will use the node's hostname
|
135
|
+
# @option options 'client-bind-address' [String] The property in a node's metadata to use to determine the address
|
136
|
+
# that the server binds to for client communication. If omitted or +nil+, the configuration will not be changed.
|
137
|
+
# If set to an empty string the server will bind to localhost
|
138
|
+
# @option options 'client-port' [Integer] The port that the server listens on for client connections. If omitted or
|
139
|
+
# +nil+, the configuration will not be changed
|
140
|
+
# @option options 'critical-heap-percentage' [Integer] Critical heap threshold as a percentage of the old generation
|
141
|
+
# heap. Valid value are 0-100 inclusive. If omitted or +nil+, the configuration will not be changed
|
142
|
+
# @option options 'initial-heap' [String] The intial heap size to be used by the server's JVM. If omitted or +nil+,
|
143
|
+
# the configuration will not be changed. If set to an empty string the JVM's default is used
|
144
|
+
# @option options :installation [String] The installation to be used by the instance. If omitted or +nil+, the
|
145
|
+
# configuration will not be changed.
|
146
|
+
# @option options 'jvm-options' [String[]] The JVM options that are passed to the server's JVM when it is started.
|
147
|
+
# If omitted or +nil+, the configuration will not be chanaged
|
148
|
+
# @option options 'max-heap' [String] The maximum heap size to be used by the server's JVM. If omitted or +nil+, the
|
149
|
+
# configuration will not be changed. If set to an empty string the JVM's default is used
|
150
|
+
# @option options 'run-netserver' [Boolean] Whether the server should run a netserver that can service thin
|
151
|
+
# clients. If omitted or +nil+, the configuration will not be changed
|
152
|
+
#
|
153
|
+
# @return [void]
|
154
|
+
def update(options = {})
|
155
|
+
payload = {}
|
156
|
+
|
157
|
+
options.each { |key, value|
|
158
|
+
if (UPDATE_PAYLOAD_KEYS.include?(key))
|
159
|
+
payload[key] = value
|
160
|
+
end
|
161
|
+
}
|
162
|
+
|
163
|
+
if (options.has_key? :installation)
|
164
|
+
payload[:installation] = options[:installation].location
|
165
|
+
end
|
166
|
+
|
167
|
+
client.post(location, payload)
|
168
|
+
reload
|
169
|
+
end
|
170
|
+
|
171
|
+
# Reloads the instance's details from the server
|
172
|
+
# @return [void]
|
173
|
+
def reload
|
174
|
+
super
|
175
|
+
@bind_address = details['bind-address']
|
176
|
+
@client_bind_address = details['client-bind-address']
|
177
|
+
@client_port = details['client-port']
|
178
|
+
@critical_heap_percentage = details['critical-heap-percentage']
|
179
|
+
@initial_heap = details['initial-heap']
|
180
|
+
@jvm_options = details['jvm-options']
|
181
|
+
@max_heap = details['max-heap']
|
182
|
+
@run_netserver = details['run-netserver']
|
183
|
+
end
|
184
|
+
|
185
|
+
# @return [String] a string representation of the instance
|
186
|
+
def to_s
|
187
|
+
"#<#{self.class} name='#{name}' bind_address='#@bind_address' client_bind_address='#@client_bind_address' client_port='#@client_port' critical_heap_percentage='#@critical_heap_percentage' initial_heap='#@initial_heap' jvm_options='#@jvm_options' max_heap='#@max_heap' run_netserver='#@run_netserver'>"
|
188
|
+
end
|
189
|
+
|
190
|
+
end
|
191
|
+
|
192
|
+
end
|