Class: Ridley::NodeObject
- Inherits:
-
ChefObject
- Object
- ChefObject
- Ridley::NodeObject
- Defined in:
- lib/ridley/chef_objects/node_object.rb
Overview
Instance Method Summary collapse
-
#chef_run ⇒ HostConnector::Response
Executes a Chef run on the node.
-
#cloud? ⇒ Boolean
Returns true if the node is identified as a cloud node.
-
#cloud_provider ⇒ nil, String
Returns the cloud provider of the instantiated node.
-
#ec2? ⇒ Boolean
Returns true if the node is identified as a cloud node using the ec2 provider.
-
#eucalyptus? ⇒ Boolean
Returns true if the node is identified as a cloud node using the eucalyptus provider.
-
#merge_data(options = {}) ⇒ Ridley::NodeResource
Merges the instaniated nodes data with the given data and updates the remote with the merged results.
-
#public_hostname ⇒ String
Returns the public hostname of the instantiated node.
-
#public_ipv4 ⇒ String
(also: #public_ipaddress)
Returns the public IPv4 address of the instantiated node.
-
#put_secret ⇒ HostConnector::Response
Puts the configured encrypted data bag secret on the node.
-
#rackspace? ⇒ Boolean
Returns true if the node is identified as a cloud node using the rackspace provider.
-
#set_chef_attribute(key, value) ⇒ Hashie::Mash
Set a node level normal attribute given the dotted path representation of the Chef attribute and value.
Methods inherited from ChefObject
#<=>, #==, chef_id, #chef_id, chef_json_class, chef_type, #eql?, #hash, #initialize, #inspect, #reload, #save, set_chef_id, set_chef_json_class, set_chef_type, #update
Constructor Details
This class inherits a constructor from Ridley::ChefObject
Instance Method Details
#chef_run ⇒ HostConnector::Response
Executes a Chef run on the node
128 129 130 |
# File 'lib/ridley/chef_objects/node_object.rb', line 128 def chef_run resource.chef_run(self.public_hostname) end |
#cloud? ⇒ Boolean
Returns true if the node is identified as a cloud node.
100 101 102 |
# File 'lib/ridley/chef_objects/node_object.rb', line 100 def cloud? self.automatic.has_key?(:cloud) end |
#cloud_provider ⇒ nil, String
Returns the cloud provider of the instantiated node. If the node is not identified as a cloud node, then nil is returned.
93 94 95 |
# File 'lib/ridley/chef_objects/node_object.rb', line 93 def cloud_provider self.cloud? ? self.automatic[:cloud][:provider] : nil end |
#ec2? ⇒ Boolean
Returns true if the node is identified as a cloud node using the ec2 provider.
114 115 116 |
# File 'lib/ridley/chef_objects/node_object.rb', line 114 def ec2? self.cloud_provider == "ec2" end |
#eucalyptus? ⇒ Boolean
Returns true if the node is identified as a cloud node using the eucalyptus provider.
107 108 109 |
# File 'lib/ridley/chef_objects/node_object.rb', line 107 def eucalyptus? self.cloud_provider == "eucalyptus" end |
#merge_data(options = {}) ⇒ Ridley::NodeResource
Merges the instaniated nodes data with the given data and updates the remote with the merged results
148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/ridley/chef_objects/node_object.rb', line 148 def merge_data( = {}) unless [:run_list].nil? self.run_list = (self.run_list + Array([:run_list])).uniq end unless [:attributes].nil? self.normal = self.normal.deep_merge([:attributes]) end self end |
#public_hostname ⇒ String
Returns the public hostname of the instantiated node. This hostname should be used for public communications to the node.
67 68 69 |
# File 'lib/ridley/chef_objects/node_object.rb', line 67 def public_hostname self.cloud? ? self.automatic[:cloud][:public_hostname] : self.automatic[:fqdn] end |
#public_ipv4 ⇒ String Also known as: public_ipaddress
Returns the public IPv4 address of the instantiated node. This ip address should be used for public communications to the node.
78 79 80 |
# File 'lib/ridley/chef_objects/node_object.rb', line 78 def public_ipv4 self.cloud? ? self.automatic[:cloud][:public_ipv4] : self.automatic[:ipaddress] end |
#put_secret ⇒ HostConnector::Response
Puts the configured encrypted data bag secret on the node
135 136 137 |
# File 'lib/ridley/chef_objects/node_object.rb', line 135 def put_secret resource.put_secret(self.public_hostname) end |
#rackspace? ⇒ Boolean
Returns true if the node is identified as a cloud node using the rackspace provider.
121 122 123 |
# File 'lib/ridley/chef_objects/node_object.rb', line 121 def rackspace? self.cloud_provider == "rackspace" end |
#set_chef_attribute(key, value) ⇒ Hashie::Mash
It is not possible to set any other attribute level on a node and have it persist after a Chef Run. This is because all other attribute levels are truncated at the start of a Chef Run.
Set a node level normal attribute given the dotted path representation of the Chef attribute and value.
55 56 57 58 |
# File 'lib/ridley/chef_objects/node_object.rb', line 55 def set_chef_attribute(key, value) attr_hash = Hashie::Mash.from_dotted_path(key, value) self.normal = self.normal.deep_merge(attr_hash) end |