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 an agent instance's live configuration
|
20
|
+
class AgentLiveConfigurations < Shared::Collection
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, 'live-configurations', AgentLiveConfiguration)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A live configuration file in an agent instance
|
30
|
+
class AgentLiveConfiguration < Shared::LiveConfiguration
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def initialize(location, client)
|
34
|
+
super(location, client, 'agent-group-instance', AgentInstance, AgentNodeLiveConfiguration)
|
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 an agent node instance's logs
|
20
|
+
class AgentLogs < Shared::Logs
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, AgentLog)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A log file in an agent node instance
|
30
|
+
class AgentLog < Shared::Log
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def initialize(location, client)
|
34
|
+
super(location, client, 'agent-node-instance', AgentNodeInstance)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,54 @@
|
|
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 agent instances on an individual node
|
20
|
+
class AgentNodeInstances < Shared::NodeInstances
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, 'agent-node-instances', AgentNodeInstance)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# An agent node instance
|
30
|
+
class AgentNodeInstance < Shared::NodeInstance
|
31
|
+
|
32
|
+
# @return [String[]] The JVM options that are passed to the agent's JVM when it is started
|
33
|
+
attr_reader :jvm_options
|
34
|
+
|
35
|
+
# @private
|
36
|
+
def initialize(location, client)
|
37
|
+
super(location, client, Node, AgentLogs, AgentInstance, 'agent-group-instance', AgentNodeLiveConfigurations)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Reloads the agent instance's details from the server
|
41
|
+
# @return [void]
|
42
|
+
def reload
|
43
|
+
super
|
44
|
+
@jvm_options = details['jvm-options']
|
45
|
+
end
|
46
|
+
|
47
|
+
# @return [String] a string representation of the instance
|
48
|
+
def to_s
|
49
|
+
"#<#{self.class} name='#{name}' jvm_options='#@jvm_options'>"
|
50
|
+
end
|
51
|
+
|
52
|
+
end
|
53
|
+
|
54
|
+
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 an agent node instance's live configuration
|
20
|
+
class AgentNodeLiveConfigurations < Shared::Collection
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, 'node-live-configurations', AgentNodeLiveConfiguration)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A live configuration file in an agent node instance
|
30
|
+
class AgentNodeLiveConfiguration < Shared::NodeConfiguration
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def initialize(location, client)
|
34
|
+
super(location, client, 'agent-node-instance', AgentNodeInstance, AgentLiveConfiguration)
|
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 an agent instance's pending configuration
|
20
|
+
class AgentPendingConfigurations < Shared::PendingConfigurations
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, 'pending-configurations', AgentPendingConfiguration)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A configuration file that is pending
|
30
|
+
class AgentPendingConfiguration < Shared::PendingConfiguration
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def initialize(location, client)
|
34
|
+
super(location, client, 'agent-group-instance', AgentInstance)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,58 @@
|
|
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 SQLFire groups.
|
20
|
+
class Groups < Shared::Groups
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, Group)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A SQLFire group
|
30
|
+
class Group < Shared::MutableGroup
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def initialize(location, client)
|
34
|
+
super(location, client, Node, Installations)
|
35
|
+
|
36
|
+
@agent_instances_location = Util::LinkUtils.get_link_href(details, 'agent-group-instances')
|
37
|
+
@locator_instances_location = Util::LinkUtils.get_link_href(details, 'locator-group-instances')
|
38
|
+
@server_instances_location = Util::LinkUtils.get_link_href(details, 'server-group-instances')
|
39
|
+
end
|
40
|
+
|
41
|
+
# @return [AgentInstances] the group's agent instances
|
42
|
+
def agent_instances
|
43
|
+
@agent_instances ||= AgentInstances.new(@agent_instances_location, client)
|
44
|
+
end
|
45
|
+
|
46
|
+
# @return [LocatorInstances] the group's locator instances
|
47
|
+
def locator_instances
|
48
|
+
@locator_instances ||= LocatorInstances.new(@locator_instances_location, client)
|
49
|
+
end
|
50
|
+
|
51
|
+
# @return [ServerInstances] the group's server instances
|
52
|
+
def server_instances
|
53
|
+
@server_instances ||= ServerInstances.new(@server_instances_location, client)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
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, create, and delete SQLFire installation images.
|
20
|
+
class InstallationImages < Shared::InstallationImages
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, InstallationImage)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A SQLFire installation image
|
30
|
+
class InstallationImage < Shared::InstallationImage
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def initialize(location, client)
|
34
|
+
super(location, client, Installation)
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,61 @@
|
|
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 SQLFire installations.
|
20
|
+
class Installations < Shared::Installations
|
21
|
+
|
22
|
+
# @private
|
23
|
+
def initialize(location, client)
|
24
|
+
super(location, client, Installation)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# A SQLFire installation
|
30
|
+
class Installation < Shared::Installation
|
31
|
+
|
32
|
+
# @private
|
33
|
+
def initialize(location, client)
|
34
|
+
super(location, client, InstallationImage, Group)
|
35
|
+
end
|
36
|
+
|
37
|
+
def reload
|
38
|
+
super
|
39
|
+
@agent_instances = nil
|
40
|
+
@locator_instances = nil
|
41
|
+
@server_instances = nil
|
42
|
+
end
|
43
|
+
|
44
|
+
# @return [AgentInstance[]] the agent instances that are using the installation
|
45
|
+
def agent_instances
|
46
|
+
@agent_instances ||= create_resources_from_links('agent-group-instance', AgentInstance);
|
47
|
+
end
|
48
|
+
|
49
|
+
# @return [LocatorInstance[]] the locator instances that are using the installation
|
50
|
+
def locator_instances
|
51
|
+
@locator_instances ||= create_resources_from_links('locator-group-instance', LocatorInstance);
|
52
|
+
end
|
53
|
+
|
54
|
+
# @return [ServerInstance[]] the server instances that are using the installation
|
55
|
+
def server_instances
|
56
|
+
@server_instances ||= create_resources_from_links('server-group-instance', ServerInstance);
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,210 @@
|
|
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 locator instances.
|
20
|
+
class LocatorInstances < Shared::MutableCollection
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
CREATE_PAYLOAD_KEYS = ['bind-address',
|
25
|
+
'client-bind-address',
|
26
|
+
'client-port',
|
27
|
+
'initial-heap',
|
28
|
+
'jvm-options',
|
29
|
+
'max-heap',
|
30
|
+
'peer-discovery-address',
|
31
|
+
'peer-discovery-port',
|
32
|
+
'run-netserver']
|
33
|
+
|
34
|
+
public
|
35
|
+
|
36
|
+
# @private
|
37
|
+
def initialize(location, client)
|
38
|
+
super(location, client, 'locator-group-instances', LocatorInstance)
|
39
|
+
end
|
40
|
+
|
41
|
+
# Creates a new locator instance
|
42
|
+
#
|
43
|
+
# @param installation [Installation] the installation that the instance will use
|
44
|
+
# @param name [String] the name of the instance
|
45
|
+
# @param options [Hash] optional configuration for the instance
|
46
|
+
#
|
47
|
+
# @option options 'bind-address' [String] The property in a node's metadata to use to determine the address that the
|
48
|
+
# locator binds to for peer-to-peer communication. If omitted, or if the property does not exist, the locator will
|
49
|
+
# use the value derived from +peer-discovery-address+
|
50
|
+
# @option options 'client-bind-address' [String] The property in a node's metadata to use to determine the address
|
51
|
+
# that the locator binds to for client communication. If omitted, or if the property does not exist, the locator
|
52
|
+
# will use the node's hostname. Only takes effect if +run-netserver+ is +true+
|
53
|
+
# @option options 'client-port' [Integer] The port that the locator listens on for client connections. Only take
|
54
|
+
# effect if +run-netserver+ is +true+
|
55
|
+
# @option options 'initial-heap' [String] The intial heap size to be used by the locator's JVM. If not specified,
|
56
|
+
# the JVM's default is used
|
57
|
+
# @option options 'jvm-options' [String[]] The JVM options that are passed to the locator's JVM when it is started
|
58
|
+
# @option options 'max-heap' [String] The maximum heap size to be used by the locator's JVM. If not specified, the
|
59
|
+
# JVM's default is used
|
60
|
+
# @option options 'peer-discovery-address' [String] The property in a node's metadata to use to determine the
|
61
|
+
# address that the locator binds to for peer-discovery communication. If omitted, or if the property does not
|
62
|
+
# exist, the locator will use +0.0.0.0+
|
63
|
+
# @option options 'peer-discovery-port' [Integer] The port that the locator listens on for peer-discovery
|
64
|
+
# connections. If omitted, the locator will listen on the default port (10334)
|
65
|
+
# @option options 'run-netserver' [Boolean] Whether the locator should run a netserver that can service thin
|
66
|
+
# clients. Default is +true+.
|
67
|
+
#
|
68
|
+
# @return [LocatorInstance] the new instance
|
69
|
+
def create(installation, name, options = {})
|
70
|
+
|
71
|
+
payload = {:installation => installation.location,
|
72
|
+
:name => name}
|
73
|
+
|
74
|
+
options.each { |key, value|
|
75
|
+
if (CREATE_PAYLOAD_KEYS.include?(key))
|
76
|
+
payload[key] = value
|
77
|
+
end
|
78
|
+
}
|
79
|
+
|
80
|
+
super(payload, 'locator-group-instance')
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
# A locator instance
|
86
|
+
class LocatorInstance < Shared::Instance
|
87
|
+
|
88
|
+
private
|
89
|
+
|
90
|
+
UPDATE_PAYLOAD_KEYS = ['bind-address',
|
91
|
+
'client-bind-address',
|
92
|
+
'client-port',
|
93
|
+
'initial-heap',
|
94
|
+
'jvm-options',
|
95
|
+
'max-heap',
|
96
|
+
'peer-discovery-address',
|
97
|
+
'peer-discovery-port',
|
98
|
+
'run-netserver']
|
99
|
+
|
100
|
+
public
|
101
|
+
|
102
|
+
# @return [String] the property in a node's metadata used to determine the address that the locator binds to for
|
103
|
+
# peer-to-peer communication. If +nil+, the locator uses the value derived from +peer_discovery_address+
|
104
|
+
attr_reader :bind_address
|
105
|
+
|
106
|
+
# @return [String] the property in a node's metadata used to determine the address that the locator binds to for
|
107
|
+
# client communication. If +nil+, the locator uses the node's hostname. Only takes effect if +run_netserver+ is
|
108
|
+
# +true+
|
109
|
+
attr_reader :client_bind_address
|
110
|
+
|
111
|
+
# @return [Integer] The port that the locator listens on for client connections. Only takes effect if
|
112
|
+
# +run_netserver+ is +true+
|
113
|
+
attr_reader :client_port
|
114
|
+
|
115
|
+
# @return [String] The initial heap size of the locator's JVM. +nil+ if the default is used
|
116
|
+
attr_reader :initial_heap
|
117
|
+
|
118
|
+
|
119
|
+
# @return [String[]] The JVM options that are passed to the locator's JVM when it is started
|
120
|
+
attr_reader :jvm_options
|
121
|
+
|
122
|
+
|
123
|
+
# @return [String] The max heap size of the locator's JVM. +nil+ if the default is used
|
124
|
+
attr_reader :max_heap
|
125
|
+
|
126
|
+
|
127
|
+
# @return [String] the property in a node's metadata used to determine the address that the locator binds to for
|
128
|
+
# peer-discovery communication. If +nil+, the locator uses +0.0.0.0+
|
129
|
+
attr_reader :peer_discovery_address
|
130
|
+
|
131
|
+
|
132
|
+
# @return [Integer] The port that the locator listens of for peer-discovery connections
|
133
|
+
attr_reader :peer_discovery_port
|
134
|
+
|
135
|
+
|
136
|
+
# @return [Boolean] +true+ if the locator runs a netserver that can service thin clients, otherwise +false+
|
137
|
+
attr_reader :run_netserver
|
138
|
+
|
139
|
+
# @private
|
140
|
+
def initialize(location, client)
|
141
|
+
super(location, client, Group, Installation, LocatorLiveConfigurations, LocatorPendingConfigurations, LocatorNodeInstance, 'locator-node-instance')
|
142
|
+
end
|
143
|
+
|
144
|
+
# Updates the instance using the supplied +options+.
|
145
|
+
#
|
146
|
+
# @param options [Hash] optional configuration for the instance
|
147
|
+
#
|
148
|
+
# @option options 'bind-address' [String] The property in a node's metadata to use to determine the address that the
|
149
|
+
# locator binds to for peer-to-peer communication. If omitted or +nil+, the configuration will not be changed. If
|
150
|
+
# set to an empty string the locator will use the value derived from +peer-discovery-address+.
|
151
|
+
# @option options 'client-bind-address' [String] The property in a node's metadata to use to determine the address
|
152
|
+
# that the locator binds to for client communication. If omitted or +nil+, the configuration will not be changed.
|
153
|
+
# If set to an empty string the locator will use its node's hostname
|
154
|
+
# @option options 'client-port' [Integer] The port that the locator listens on for client connections. If omitted or
|
155
|
+
# +nil+, the configuration will not be changed
|
156
|
+
# @option options 'initial-heap' [String] The intial heap size to be used by the locator's JVM. If omitted or +nil+,
|
157
|
+
# the configuration will not be changed. If set to an empty string the JVM's default is used
|
158
|
+
# @option options :installation [String] The installation to be used by the instance. If omitted or +nil+, the
|
159
|
+
# configuration will not be changed.
|
160
|
+
# @option options 'jvm-options' [String[]] The JVM options that are passed to the locator's JVM when it is started.
|
161
|
+
# If omitted or +nil+, the configuration will not be changed
|
162
|
+
# @option options 'max-heap' [String] The maximum heap size to be used by the locator's JVM. If omitted or +nil+, the
|
163
|
+
# configuration will not be changed. If set to an empty string the JVM's default is used
|
164
|
+
# @option options 'peer-discovery-address' [String] The property in a node's metadata to use to determine the
|
165
|
+
# address that the locator binds to for peer-discovery communication. If omitted or +nil+, the configuration will
|
166
|
+
# not be changed. If set to an empty string the locator will use +0.0.0.0+
|
167
|
+
# @option options 'peer-discovery-port' [Integer] The port that the locator listens on for peer-discovery
|
168
|
+
# connections. If omitted or +nil+, the configuration will not be changed
|
169
|
+
# @option options 'run-netserver' [Boolean] Whether the locator should run a netserver that can service thin
|
170
|
+
# clients. If omitted or +nil+, the configuration will not be changed
|
171
|
+
#
|
172
|
+
# @return [void]
|
173
|
+
def update(options)
|
174
|
+
payload = {}
|
175
|
+
|
176
|
+
options.each { |key, value|
|
177
|
+
if (UPDATE_PAYLOAD_KEYS.include?(key))
|
178
|
+
payload[key] = value
|
179
|
+
end
|
180
|
+
}
|
181
|
+
|
182
|
+
if (options.has_key? :installation)
|
183
|
+
payload[:installation] = options[:installation].location
|
184
|
+
end
|
185
|
+
|
186
|
+
client.post(location, payload)
|
187
|
+
reload
|
188
|
+
end
|
189
|
+
|
190
|
+
def reload
|
191
|
+
super
|
192
|
+
@bind_address = details['bind-address']
|
193
|
+
@client_bind_address = details['client-bind-address']
|
194
|
+
@client_port = details['client-port']
|
195
|
+
@initial_heap = details['initial-heap']
|
196
|
+
@jvm_options = details['jvm-options']
|
197
|
+
@max_heap = details['max-heap']
|
198
|
+
@peer_discovery_address = details['peer-discovery-address']
|
199
|
+
@peer_discovery_port = details['peer-discovery-port']
|
200
|
+
@run_netserver = details['run-netserver']
|
201
|
+
end
|
202
|
+
|
203
|
+
# @return [String] a string representation of the instance
|
204
|
+
def to_s
|
205
|
+
"#<#{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'>"
|
206
|
+
end
|
207
|
+
|
208
|
+
end
|
209
|
+
|
210
|
+
end
|