vas 0.4.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. data/README.md +1 -1
  2. data/lib/vas.rb +44 -1
  3. data/lib/vas/gemfire/agent_instances.rb +4 -3
  4. data/lib/vas/gemfire/agent_live_configurations.rb +3 -3
  5. data/lib/vas/gemfire/agent_node_instances.rb +2 -2
  6. data/lib/vas/gemfire/agent_node_live_configurations.rb +39 -0
  7. data/lib/vas/gemfire/application_code.rb +13 -12
  8. data/lib/vas/gemfire/application_code_images.rb +13 -11
  9. data/lib/vas/gemfire/cache_server_instances.rb +20 -12
  10. data/lib/vas/gemfire/cache_server_live_configurations.rb +3 -3
  11. data/lib/vas/gemfire/cache_server_node_instances.rb +16 -9
  12. data/lib/vas/gemfire/cache_server_node_live_configurations.rb +39 -0
  13. data/lib/vas/gemfire/disk_stores.rb +19 -11
  14. data/lib/vas/gemfire/gemfire.rb +4 -4
  15. data/lib/vas/gemfire/groups.rb +17 -10
  16. data/lib/vas/gemfire/installations.rb +12 -3
  17. data/lib/vas/gemfire/live_application_codes.rb +2 -2
  18. data/lib/vas/gemfire/locator_instances.rb +23 -13
  19. data/lib/vas/gemfire/locator_live_configurations.rb +3 -3
  20. data/lib/vas/gemfire/locator_node_instances.rb +22 -14
  21. data/lib/vas/gemfire/locator_node_live_configurations.rb +39 -0
  22. data/lib/vas/gemfire/nodes.rb +27 -6
  23. data/lib/vas/gemfire/pending_application_codes.rb +7 -2
  24. data/lib/vas/gemfire/statistics.rb +18 -11
  25. data/lib/vas/rabbitmq/groups.rb +6 -4
  26. data/lib/vas/rabbitmq/installations.rb +14 -6
  27. data/lib/vas/rabbitmq/instances.rb +9 -6
  28. data/lib/vas/rabbitmq/live_configurations.rb +3 -3
  29. data/lib/vas/rabbitmq/node_instances.rb +2 -2
  30. data/lib/vas/rabbitmq/node_live_configurations.rb +39 -0
  31. data/lib/vas/rabbitmq/nodes.rb +11 -8
  32. data/lib/vas/rabbitmq/plugin_images.rb +14 -7
  33. data/lib/vas/rabbitmq/plugins.rb +29 -20
  34. data/lib/vas/rabbitmq/rabbitmq.rb +4 -4
  35. data/lib/vas/shared/collection.rb +34 -11
  36. data/lib/vas/shared/configuration.rb +16 -9
  37. data/lib/vas/shared/deletable.rb +34 -0
  38. data/lib/vas/shared/groups.rb +26 -15
  39. data/lib/vas/shared/installation_images.rb +18 -10
  40. data/lib/vas/shared/installations.rb +22 -22
  41. data/lib/vas/shared/instance.rb +40 -19
  42. data/lib/vas/shared/live_configuration.rb +42 -0
  43. data/lib/vas/shared/logs.rb +27 -14
  44. data/lib/vas/shared/mutable_collection.rb +13 -5
  45. data/lib/vas/shared/node_configuration.rb +74 -0
  46. data/lib/vas/shared/node_instances.rb +32 -14
  47. data/lib/vas/shared/nodes.rb +37 -14
  48. data/lib/vas/shared/{pending_configuration.rb → pending_configurations.rb} +4 -2
  49. data/lib/vas/shared/resource.rb +12 -2
  50. data/lib/vas/shared/security.rb +11 -4
  51. data/lib/vas/shared/state_resource.rb +1 -1
  52. data/lib/vas/sqlfire/agent_instances.rb +98 -0
  53. data/lib/vas/sqlfire/agent_live_configurations.rb +39 -0
  54. data/lib/vas/sqlfire/agent_logs.rb +39 -0
  55. data/lib/vas/sqlfire/agent_node_instances.rb +54 -0
  56. data/lib/vas/sqlfire/agent_node_live_configurations.rb +39 -0
  57. data/lib/vas/sqlfire/agent_pending_configurations.rb +39 -0
  58. data/lib/vas/sqlfire/groups.rb +58 -0
  59. data/lib/vas/sqlfire/installation_images.rb +39 -0
  60. data/lib/vas/sqlfire/installations.rb +61 -0
  61. data/lib/vas/sqlfire/locator_instances.rb +210 -0
  62. data/lib/vas/sqlfire/locator_live_configurations.rb +39 -0
  63. data/lib/vas/sqlfire/locator_logs.rb +39 -0
  64. data/lib/vas/sqlfire/locator_node_instances.rb +91 -0
  65. data/lib/vas/sqlfire/locator_node_live_configurations.rb +39 -0
  66. data/lib/vas/sqlfire/locator_pending_configurations.rb +39 -0
  67. data/lib/vas/sqlfire/nodes.rb +73 -0
  68. data/lib/vas/sqlfire/server_instances.rb +192 -0
  69. data/lib/vas/sqlfire/server_live_configurations.rb +39 -0
  70. data/lib/vas/sqlfire/server_logs.rb +39 -0
  71. data/lib/vas/sqlfire/server_node_instances.rb +86 -0
  72. data/lib/vas/sqlfire/server_node_live_configurations.rb +39 -0
  73. data/lib/vas/sqlfire/server_pending_configurations.rb +39 -0
  74. data/lib/vas/sqlfire/sqlfire.rb +44 -0
  75. data/lib/vas/tc_server/applications.rb +32 -21
  76. data/lib/vas/tc_server/configuration.rb +1 -1
  77. data/lib/vas/tc_server/groups.rb +7 -4
  78. data/lib/vas/tc_server/installations.rb +16 -6
  79. data/lib/vas/tc_server/instances.rb +25 -13
  80. data/lib/vas/tc_server/live_configurations.rb +11 -1
  81. data/lib/vas/tc_server/logs.rb +4 -2
  82. data/lib/vas/tc_server/node_applications.rb +21 -17
  83. data/lib/vas/tc_server/node_instances.rb +23 -9
  84. data/lib/vas/tc_server/node_live_configurations.rb +39 -0
  85. data/lib/vas/tc_server/node_revisions.rb +15 -10
  86. data/lib/vas/tc_server/nodes.rb +15 -8
  87. data/lib/vas/tc_server/revision_images.rb +16 -10
  88. data/lib/vas/tc_server/revisions.rb +20 -16
  89. data/lib/vas/tc_server/tc_server.rb +5 -5
  90. data/lib/vas/tc_server/template_images.rb +13 -7
  91. data/lib/vas/tc_server/templates.rb +21 -13
  92. data/lib/vas/util/client.rb +15 -6
  93. data/lib/vas/vfabric/agent_image.rb +1 -1
  94. data/lib/vas/vfabric/nodes.rb +4 -11
  95. data/lib/vas/vfabric/v_fabric.rb +2 -2
  96. data/lib/vas/vfabric_administration_server.rb +37 -6
  97. data/lib/vas/web_server/configuration.rb +29 -0
  98. data/lib/vas/web_server/groups.rb +44 -0
  99. data/lib/vas/web_server/installation_images.rb +54 -0
  100. data/lib/vas/web_server/installations.rb +52 -0
  101. data/lib/vas/web_server/instances.rb +65 -0
  102. data/lib/vas/web_server/live_configurations.rb +39 -0
  103. data/lib/vas/web_server/logs.rb +37 -0
  104. data/lib/vas/web_server/node_instances.rb +39 -0
  105. data/lib/vas/web_server/node_live_configurations.rb +39 -0
  106. data/lib/vas/web_server/nodes.rb +53 -0
  107. data/lib/vas/web_server/pending_configurations.rb +39 -0
  108. data/lib/vas/web_server/web_server.rb +43 -0
  109. metadata +137 -76
@@ -29,15 +29,17 @@ module RabbitMq
29
29
  # A RabbitMQ group
30
30
  class Group < Shared::Group
31
31
 
32
- # @return [Instances] the group's instances
33
- attr_reader :instances
34
-
35
32
  # @private
36
33
  def initialize(location, client)
37
34
  super(location, client, Node, Installations)
38
- @instances = Instances.new(Util::LinkUtils.get_link_href(details, "group-instances"), client)
35
+
36
+ @instances_location = Util::LinkUtils.get_link_href(details, 'group-instances')
39
37
  end
40
38
 
39
+ # @return [Instances] the group's instances
40
+ def instances
41
+ @instances ||= Instances.new(@instances_location, client)
42
+ end
41
43
  end
42
44
 
43
45
  end
@@ -18,14 +18,14 @@ module RabbitMq
18
18
 
19
19
  # Used to enumerate, create, and delete RabbitMQ installations
20
20
  class Installations < Shared::Installations
21
-
21
+
22
22
  # @private
23
23
  def initialize(location, client)
24
24
  super(location, client, Installation)
25
25
  end
26
-
26
+
27
27
  end
28
-
28
+
29
29
  # A RabbitMQ installation
30
30
  class Installation < Shared::Installation
31
31
 
@@ -34,11 +34,19 @@ module RabbitMq
34
34
  super(location, client, InstallationImage, Group)
35
35
  end
36
36
 
37
+ # Reloads the installation's details from the server
38
+ #
39
+ # @return [void]
40
+ def reload
41
+ super
42
+ @instances = nil
43
+ end
44
+
37
45
  # @return [Instance[]] the instances that are using the installation
38
46
  def instances
39
- retrieve_instances("group-instance", Instance);
47
+ @instances ||= create_resources_from_links('group-instance', Instance)
40
48
  end
41
-
49
+
42
50
  end
43
-
51
+
44
52
  end
@@ -21,7 +21,7 @@ module RabbitMq
21
21
 
22
22
  # @private
23
23
  def initialize(location, client)
24
- super(location, client, "group-instances", Instance)
24
+ super(location, client, 'group-instances', Instance)
25
25
  end
26
26
 
27
27
  # Creates a new instance
@@ -32,7 +32,7 @@ module RabbitMq
32
32
  # @return [Instance] the new instance
33
33
  def create(installation, name)
34
34
  payload = { :installation => installation.location, :name => name }
35
- Instance.new(client.post(location, payload, "group-instance"), client)
35
+ super(payload, 'group-instance')
36
36
  end
37
37
 
38
38
  end
@@ -40,9 +40,6 @@ module RabbitMq
40
40
  # A RabbitMQ instance
41
41
  class Instance < Shared::Instance
42
42
 
43
- # @return [Plugins] the instance's plugins
44
- attr_reader :plugins
45
-
46
43
  # @private
47
44
  def initialize(location, client)
48
45
  super(location, client, Group, Installation, LiveConfigurations, PendingConfigurations, NodeInstance, 'node-instance')
@@ -55,7 +52,13 @@ module RabbitMq
55
52
  #
56
53
  # @return [void]
57
54
  def update(installation)
58
- client.post(location, { :installation => installation.location });
55
+ client.post(location, { :installation => installation.location })
56
+ reload
57
+ end
58
+
59
+ # @return [Plugins] the instance's plugins
60
+ def plugins
61
+ @plugins ||= Plugins.new(Util::LinkUtils.get_link_href(details, 'plugins'), client)
59
62
  end
60
63
 
61
64
  end
@@ -21,17 +21,17 @@ module RabbitMq
21
21
 
22
22
  # @private
23
23
  def initialize(location, client)
24
- super(location, client, "live-configurations", LiveConfiguration)
24
+ super(location, client, 'live-configurations', LiveConfiguration)
25
25
  end
26
26
 
27
27
  end
28
28
 
29
29
  # A live configuration file in a RabbitMQ instance
30
- class LiveConfiguration < Shared::Configuration
30
+ class LiveConfiguration < Shared::LiveConfiguration
31
31
 
32
32
  # @private
33
33
  def initialize(location, client)
34
- super(location, client, "group-instance", Instance)
34
+ super(location, client, 'group-instance', Instance, NodeLiveConfiguration)
35
35
  end
36
36
 
37
37
  end
@@ -21,7 +21,7 @@ module RabbitMq
21
21
 
22
22
  # @private
23
23
  def initialize(location, client)
24
- super(location, client, "node-instances", NodeInstance)
24
+ super(location, client, 'node-instances', NodeInstance)
25
25
  end
26
26
 
27
27
  end
@@ -31,7 +31,7 @@ module RabbitMq
31
31
 
32
32
  # @private
33
33
  def initialize(location, client)
34
- super(location, client, Node, Logs, Instance, 'group-instance')
34
+ super(location, client, Node, Logs, Instance, 'group-instance', NodeLiveConfigurations)
35
35
  end
36
36
 
37
37
  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 RabbitMq
18
+
19
+ # Used to enumerate a node instance's live configuration
20
+ class NodeLiveConfigurations < Shared::Collection
21
+
22
+ # @private
23
+ def initialize(location, client)
24
+ super(location, client, 'node-live-configurations', NodeLiveConfiguration)
25
+ end
26
+
27
+ end
28
+
29
+ # A live configuration file in a node instance
30
+ class NodeLiveConfiguration < Shared::NodeConfiguration
31
+
32
+ # @private
33
+ def initialize(location, client)
34
+ super(location, client, 'node-instance', NodeInstance, LiveConfiguration)
35
+ end
36
+
37
+ end
38
+
39
+ end
@@ -15,34 +15,37 @@
15
15
 
16
16
 
17
17
  module RabbitMq
18
-
18
+
19
19
  # Used to enumerate RabbitMQ nodes
20
20
  class Nodes < Shared::Collection
21
21
 
22
22
  # @private
23
23
  def initialize(location, client)
24
- super(location, client, "nodes", Node)
24
+ super(location, client, 'nodes', Node)
25
25
  end
26
26
 
27
27
  end
28
28
 
29
29
  # A RabbitMQ node
30
30
  class Node < Shared::GroupableNode
31
-
32
- # @return [NodeInstances] the node's instances
33
- attr_reader :instances
34
31
 
35
32
  # @private
36
33
  def initialize(location, client)
37
34
  super(location, client, Group)
38
- @instances = NodeInstances.new(Util::LinkUtils.get_link_href(details, "node-instances"), client)
35
+ @instances_location = Util::LinkUtils.get_link_href(details, 'node-instances')
36
+ end
37
+
38
+ # @return [NodeInstances] the node's instances
39
+ def instances
40
+ @instances ||= NodeInstances.new(@instances_location, client)
39
41
  end
40
42
 
41
43
  # @return [String] a string representation of the node
42
- def to_s
43
- "#<#{self.class} host_names='#{host_names}' ip_addresses='#{ip_addresses}' operating_system='#{operating_system}' architecture='#{architecture}' agent_home='#{agent_home}' java_home='#{java_home}' metadata='#{metadata}'>"
44
+ def to_s
45
+ "#<#{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}' metadata='#{metadata}'>"
44
46
  end
45
47
 
48
+
46
49
  end
47
50
 
48
51
  end
@@ -30,7 +30,7 @@ module RabbitMq
30
30
  #
31
31
  # @return [PluginImage] the new plugin image
32
32
  def create(path)
33
- PluginImage.new(client.post_image(location, path), client)
33
+ create_image(path)
34
34
  end
35
35
 
36
36
  end
@@ -38,6 +38,8 @@ module RabbitMq
38
38
  # A plugin image
39
39
  class PluginImage < Shared::Resource
40
40
 
41
+ include Shared::Deletable
42
+
41
43
  # The plugin image's name
42
44
  attr_reader :name
43
45
 
@@ -51,21 +53,26 @@ module RabbitMq
51
53
  def initialize(location, client)
52
54
  super(location, client)
53
55
 
54
- @name = details["name"]
55
- @version = details["version"]
56
+ @name = details['name']
57
+ @version = details['version']
56
58
  @size = details['size']
57
59
  end
58
60
 
61
+ # Reloads the plugin image's details from the server
62
+ # @return [void]
63
+ def reload
64
+ super
65
+ @plugins = nil
66
+ end
67
+
59
68
  # @return [Plugin[]] the plugins that have been created from this plugin image
60
69
  def plugins
61
- plugins = []
62
- Util::LinkUtils.get_link_hrefs(client.get(location), "plugin").each { |plugin_location| plugins << Plugin.new(plugin_location, client)}
63
- plugins
70
+ @plugins ||= create_resources_from_links('plugin', Plugin)
64
71
  end
65
72
 
66
73
  # @return [String] a string representation of the plugin image
67
74
  def to_s
68
- "#<#{self.class} name='#@name' version='#@version'>"
75
+ "#<#{self.class} name='#@name' size='#@size' version='#@version'>"
69
76
  end
70
77
 
71
78
  end
@@ -18,44 +18,53 @@ module RabbitMq
18
18
 
19
19
  # Used to enumerate, create, and delete plugins
20
20
  class Plugins < Shared::MutableCollection
21
-
22
- def initialize(location, client) #:nodoc:
23
- super(location, client, "plugins", Plugin)
21
+
22
+ def initialize(location, client)
23
+ super(location, client, 'plugins', Plugin)
24
24
  end
25
25
 
26
26
  # Creates a plugin from the +plugin_image+
27
+ # @return [Plugin] the new plugin
27
28
  def create(plugin_image)
28
- Plugin.new(client.post(location, { :image => plugin_image.location}, 'plugin'), client)
29
+ super({:image => plugin_image.location}, 'plugin')
29
30
  end
30
-
31
+
31
32
  end
32
33
 
33
34
  # A plugin in a RabbitMQ instance
34
35
  class Plugin < Shared::Resource
35
36
 
37
+ include Shared::Deletable
38
+
36
39
  # @return [String] the plugin's version
37
40
  attr_reader :version
38
41
 
39
42
  # @return [String] the plugin's name
40
43
  attr_reader :name
41
-
42
- # @return [Instance] the instance that contains the plugin
43
- attr_reader :instance
44
-
45
- # @return [PluginImage] the plugin image, if any, that was used to create the plugin
46
- attr_reader :plugin_image
47
-
44
+
48
45
  # @private
49
46
  def initialize(location, client)
50
47
  super(location, client)
51
-
48
+
52
49
  @name = details['name']
53
50
  @version = details['version']
54
- @instance = Instance.new(Util::LinkUtils.get_link_href(details, 'group-instance'), client)
51
+
52
+ @instance_location = Util::LinkUtils.get_link_href(details, 'group-instance')
55
53
  @state_location = Util::LinkUtils.get_link_href(details, 'state')
56
-
57
- plugin_image_location = Util::LinkUtils.get_link_href(details, 'plugin-image')
58
- @plugin_image = PluginImage.new(plugin_image_location, client) unless plugin_image_location.nil?
54
+ end
55
+
56
+ # @return [PluginImage] the plugin image, if any, that was used to create the plugin
57
+ def plugin_image
58
+ if @plugin_image.nil?
59
+ plugin_image_location = Util::LinkUtils.get_link_href(details, 'plugin-image')
60
+ @plugin_image = PluginImage.new(plugin_image_location, client) unless plugin_image_location.nil?
61
+ end
62
+ @plugin_image
63
+ end
64
+
65
+ # @return [Instance] the instance that contains the plugin
66
+ def instance
67
+ @instance ||= Instance.new(@instance_location, client)
59
68
  end
60
69
 
61
70
  # @return [String] the state of the plugin
@@ -67,16 +76,16 @@ module RabbitMq
67
76
  #
68
77
  # @return [void]
69
78
  def enable
70
- client.post(@state_location, { :status => 'ENABLED' })
79
+ client.post(@state_location, {:status => 'ENABLED'})
71
80
  end
72
81
 
73
82
  # Disables the plugin
74
83
  #
75
84
  # @return [void]
76
85
  def disable
77
- client.post(@state_location, { :status => 'DISABLED' })
86
+ client.post(@state_location, {:status => 'DISABLED'})
78
87
  end
79
-
88
+
80
89
  # @return [String] a string representation of the plugin
81
90
  def to_s
82
91
  "#<#{self.class} name='#@name' version='#@version'>"
@@ -37,10 +37,10 @@ module RabbitMq
37
37
 
38
38
  json = client.get(location)
39
39
 
40
- @groups = Groups.new(Util::LinkUtils.get_link_href(json, "groups"), client)
41
- @installation_images = InstallationImages.new(Util::LinkUtils.get_link_href(json, "installation-images"), client)
42
- @plugin_images = PluginImages.new(Util::LinkUtils.get_link_href(json, "plugin-images"), client)
43
- @nodes = Nodes.new(Util::LinkUtils.get_link_href(json, "nodes"), client)
40
+ @groups = Groups.new(Util::LinkUtils.get_link_href(json, 'groups'), client)
41
+ @installation_images = InstallationImages.new(Util::LinkUtils.get_link_href(json, 'installation-images'), client)
42
+ @plugin_images = PluginImages.new(Util::LinkUtils.get_link_href(json, 'plugin-images'), client)
43
+ @nodes = Nodes.new(Util::LinkUtils.get_link_href(json, 'nodes'), client)
44
44
  end
45
45
 
46
46
  end
@@ -19,34 +19,57 @@ module Shared
19
19
  # @abstract A dynamic collection of items
20
20
  class Collection < Shared::Resource
21
21
 
22
+ include Enumerable
23
+
22
24
  private
23
-
25
+
24
26
  attr_reader :entry_class
25
-
27
+
26
28
  public
27
29
 
28
30
  # @private
29
31
  def initialize(location, client, type, entry_class)
30
- super(location, client)
31
32
  @type = type
32
33
  @entry_class = entry_class
34
+ super(location, client)
33
35
  end
34
36
 
35
- # Gets the items in the collection from the server. Calls the block once for each item.
37
+ def reload
38
+ super
39
+ @items = nil
40
+ end
41
+
42
+ # Calls the block once for each item in the collection.
36
43
  #
37
44
  # @yieldparam item an item in the collection
38
45
  #
39
46
  # @return [void]
40
47
  def each
41
- items = client.get(location)[@type]
48
+ @items ||= create_collection_entries
49
+ @items.each { |item| yield item }
50
+ end
42
51
 
43
- if (!items.nil?)
44
- client.get(location)[@type].each { |item|
45
- yield entry_class.new(Util::LinkUtils.get_self_link_href(item), client)
46
- }
52
+ private
53
+
54
+ def create_collection_entries
55
+ entries_json = details[@type]
56
+ if entries_json
57
+ entries_json.collect { |json| create_entry(Util::LinkUtils.get_self_link_href(json)) }
58
+ else
59
+ []
47
60
  end
48
61
  end
49
-
62
+
63
+ def create_entry(location)
64
+ entry = @entry_class.new(location, client)
65
+
66
+ if @entry_class.include?(Deletable)
67
+ entry.collection = self
68
+ end
69
+
70
+ entry
71
+ end
72
+
50
73
  end
51
-
74
+
52
75
  end