vas 0.4.0 → 1.0.0

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