ridley 0.3.1 → 0.3.2
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.
- data/lib/ridley/resources/node.rb +71 -10
- data/lib/ridley/version.rb +1 -1
- data/spec/unit/ridley/resources/node_spec.rb +137 -8
- metadata +3 -3
| @@ -18,30 +18,34 @@ module Ridley | |
| 18 18 | 
             
                attribute :override, default: HashWithIndifferentAccess.new
         | 
| 19 19 | 
             
                attribute :run_list, default: Array.new
         | 
| 20 20 |  | 
| 21 | 
            -
                 | 
| 22 | 
            -
                 | 
| 23 | 
            -
             | 
| 24 | 
            -
                 | 
| 21 | 
            +
                alias_method :normal_attributes, :normal
         | 
| 22 | 
            +
                alias_method :automatic_attributes, :automatic
         | 
| 23 | 
            +
                alias_method :default_attributes, :default
         | 
| 24 | 
            +
                alias_method :override_attributes, :override
         | 
| 25 25 |  | 
| 26 26 | 
             
                # @param [Hash] hash
         | 
| 27 27 | 
             
                def normal=(hash)
         | 
| 28 28 | 
             
                  super(HashWithIndifferentAccess.new(hash))
         | 
| 29 29 | 
             
                end
         | 
| 30 | 
            +
                alias_method :normal_attributes=, :normal=
         | 
| 30 31 |  | 
| 31 32 | 
             
                # @param [Hash] hash
         | 
| 32 | 
            -
                def  | 
| 33 | 
            +
                def automatic=(hash)
         | 
| 33 34 | 
             
                  super(HashWithIndifferentAccess.new(hash))
         | 
| 34 35 | 
             
                end
         | 
| 36 | 
            +
                alias_method :automatic_attributes=, :automatic=
         | 
| 35 37 |  | 
| 36 38 | 
             
                # @param [Hash] hash
         | 
| 37 | 
            -
                def  | 
| 39 | 
            +
                def default=(hash)
         | 
| 38 40 | 
             
                  super(HashWithIndifferentAccess.new(hash))
         | 
| 39 41 | 
             
                end
         | 
| 42 | 
            +
                alias_method :default_attributes=, :default=
         | 
| 40 43 |  | 
| 41 44 | 
             
                # @param [Hash] hash
         | 
| 42 | 
            -
                def  | 
| 45 | 
            +
                def override=(hash)
         | 
| 43 46 | 
             
                  super(HashWithIndifferentAccess.new(hash))
         | 
| 44 47 | 
             
                end
         | 
| 48 | 
            +
                alias_method :override_attributes=, :override=
         | 
| 45 49 |  | 
| 46 50 | 
             
                # Set a node level normal attribute given the dotted path representation of the Chef
         | 
| 47 51 | 
             
                # attribute and value.
         | 
| @@ -52,7 +56,7 @@ module Ridley | |
| 52 56 | 
             
                # @example setting and saving a node level normal attribute
         | 
| 53 57 | 
             
                #
         | 
| 54 58 | 
             
                #   obj = node.find("jwinsor-1")
         | 
| 55 | 
            -
                #   obj. | 
| 59 | 
            +
                #   obj.set_attribute("my_app.billing.enabled", false)
         | 
| 56 60 | 
             
                #   obj.save
         | 
| 57 61 | 
             
                #
         | 
| 58 62 | 
             
                # @param [String] key
         | 
| @@ -64,12 +68,69 @@ module Ridley | |
| 64 68 | 
             
                  self.normal = self.normal.deep_merge(attr_hash)
         | 
| 65 69 | 
             
                end
         | 
| 66 70 |  | 
| 71 | 
            +
                # Returns the public hostname of the instantiated node. This hostname should be used for
         | 
| 72 | 
            +
                # public communications to the node.
         | 
| 73 | 
            +
                #
         | 
| 74 | 
            +
                # @example
         | 
| 75 | 
            +
                #   node.public_hostname => "reset.riotgames.com"
         | 
| 76 | 
            +
                #
         | 
| 77 | 
            +
                # @return [String]
         | 
| 78 | 
            +
                def public_hostname
         | 
| 79 | 
            +
                  self.cloud? ? self.automatic[:cloud][:public_hostname] : self.automatic[:fqdn]
         | 
| 80 | 
            +
                end
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                # Returns the public IPv4 address of the instantiated node. This ip address should be
         | 
| 83 | 
            +
                # used for public communications to the node.
         | 
| 84 | 
            +
                #
         | 
| 85 | 
            +
                # @example
         | 
| 86 | 
            +
                #   node.public_ipv4 => "10.33.33.1"
         | 
| 87 | 
            +
                #
         | 
| 88 | 
            +
                # @return [String]
         | 
| 89 | 
            +
                def public_ipv4
         | 
| 90 | 
            +
                  self.cloud? ? self.automatic[:cloud][:public_ipv4] : self.automatic[:ipaddress]
         | 
| 91 | 
            +
                end
         | 
| 92 | 
            +
                alias_method :public_ipaddress, :public_ipv4
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                # Returns the cloud provider of the instantiated node. If the node is not identified as
         | 
| 95 | 
            +
                # a cloud node, then nil is returned.
         | 
| 96 | 
            +
                #
         | 
| 97 | 
            +
                # @example
         | 
| 98 | 
            +
                #   node_1.cloud_provider => "eucalyptus"
         | 
| 99 | 
            +
                #   node_2.cloud_provider => "ec2"
         | 
| 100 | 
            +
                #   node_3.cloud_provider => "rackspace"
         | 
| 101 | 
            +
                #   node_4.cloud_provider => nil
         | 
| 102 | 
            +
                #
         | 
| 103 | 
            +
                # @return [nil, String]
         | 
| 104 | 
            +
                def cloud_provider
         | 
| 105 | 
            +
                  self.cloud? ? self.automatic[:cloud][:provider] : nil      
         | 
| 106 | 
            +
                end
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                # Returns true if the node is identified as a cloud node.
         | 
| 109 | 
            +
                #
         | 
| 110 | 
            +
                # @return [Boolean]
         | 
| 111 | 
            +
                def cloud?
         | 
| 112 | 
            +
                  self.automatic.has_key?(:cloud)
         | 
| 113 | 
            +
                end
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                # Returns true if the node is identified as a cloud node using the eucalyptus provider.
         | 
| 116 | 
            +
                #
         | 
| 117 | 
            +
                # @return [Boolean]
         | 
| 67 118 | 
             
                def eucalyptus?
         | 
| 68 | 
            -
                  self. | 
| 119 | 
            +
                  self.cloud_provider == "eucalyptus"
         | 
| 69 120 | 
             
                end
         | 
| 70 121 |  | 
| 122 | 
            +
                # Returns true if the node is identified as a cloud node using the ec2 provider.
         | 
| 123 | 
            +
                #
         | 
| 124 | 
            +
                # @return [Boolean]
         | 
| 71 125 | 
             
                def ec2?
         | 
| 72 | 
            -
                  self. | 
| 126 | 
            +
                  self.cloud_provider == "ec2"
         | 
| 127 | 
            +
                end
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                # Returns true if the node is identified as a cloud node using the rackspace provider.
         | 
| 130 | 
            +
                #
         | 
| 131 | 
            +
                # @return [Boolean]
         | 
| 132 | 
            +
                def rackspace?
         | 
| 133 | 
            +
                  self.cloud_provider == "rackspace"
         | 
| 73 134 | 
             
                end
         | 
| 74 135 | 
             
              end
         | 
| 75 136 |  | 
    
        data/lib/ridley/version.rb
    CHANGED
    
    
| @@ -85,35 +85,164 @@ describe Ridley::Node do | |
| 85 85 | 
             
                end
         | 
| 86 86 | 
             
              end
         | 
| 87 87 |  | 
| 88 | 
            +
              describe "#cloud?" do
         | 
| 89 | 
            +
                it "returns true if the cloud automatic attribute is set" do
         | 
| 90 | 
            +
                  subject.automatic = {
         | 
| 91 | 
            +
                    "cloud" => Hash.new
         | 
| 92 | 
            +
                  }
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                  subject.cloud?.should be_true
         | 
| 95 | 
            +
                end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
                it "returns false if the cloud automatic attribute is not set" do
         | 
| 98 | 
            +
                  subject.automatic.delete(:cloud)
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                  subject.cloud?.should be_false
         | 
| 101 | 
            +
                end
         | 
| 102 | 
            +
              end
         | 
| 103 | 
            +
             | 
| 88 104 | 
             
              describe "#eucalyptus?" do
         | 
| 89 | 
            -
                it "returns true if the  | 
| 105 | 
            +
                it "returns true if the node is a cloud node using the eucalyptus provider" do
         | 
| 90 106 | 
             
                  subject.automatic = {
         | 
| 91 | 
            -
                    " | 
| 107 | 
            +
                    "cloud" => {
         | 
| 108 | 
            +
                      "provider" => "eucalyptus"
         | 
| 109 | 
            +
                    }
         | 
| 92 110 | 
             
                  }
         | 
| 93 111 |  | 
| 94 112 | 
             
                  subject.eucalyptus?.should be_true
         | 
| 95 113 | 
             
                end
         | 
| 96 114 |  | 
| 97 | 
            -
                it "returns false if the  | 
| 98 | 
            -
                  subject.automatic.delete(: | 
| 115 | 
            +
                it "returns false if the node is not a cloud node" do
         | 
| 116 | 
            +
                  subject.automatic.delete(:cloud)
         | 
| 117 | 
            +
             | 
| 118 | 
            +
                  subject.eucalyptus?.should be_false
         | 
| 119 | 
            +
                end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                it "returns false if the node is a cloud node but not using the eucalyptus provider" do
         | 
| 122 | 
            +
                  subject.automatic = {
         | 
| 123 | 
            +
                    "cloud" => {
         | 
| 124 | 
            +
                      "provider" => "ec2"
         | 
| 125 | 
            +
                    }
         | 
| 126 | 
            +
                  }
         | 
| 99 127 |  | 
| 100 128 | 
             
                  subject.eucalyptus?.should be_false
         | 
| 101 129 | 
             
                end
         | 
| 102 130 | 
             
              end
         | 
| 103 131 |  | 
| 104 132 | 
             
              describe "#ec2?" do
         | 
| 105 | 
            -
                it "returns true if the  | 
| 133 | 
            +
                it "returns true if the node is a cloud node using the ec2 provider" do
         | 
| 106 134 | 
             
                  subject.automatic = {
         | 
| 107 | 
            -
                    " | 
| 135 | 
            +
                    "cloud" => {
         | 
| 136 | 
            +
                      "provider" => "ec2"
         | 
| 137 | 
            +
                    }
         | 
| 108 138 | 
             
                  }
         | 
| 109 139 |  | 
| 110 140 | 
             
                  subject.ec2?.should be_true
         | 
| 111 141 | 
             
                end
         | 
| 112 142 |  | 
| 113 | 
            -
                it "returns false if the  | 
| 114 | 
            -
                  subject.automatic.delete(: | 
| 143 | 
            +
                it "returns false if the node is not a cloud node" do
         | 
| 144 | 
            +
                  subject.automatic.delete(:cloud)
         | 
| 145 | 
            +
             | 
| 146 | 
            +
                  subject.ec2?.should be_false
         | 
| 147 | 
            +
                end
         | 
| 148 | 
            +
             | 
| 149 | 
            +
                it "returns false if the node is a cloud node but not using the ec2 provider" do
         | 
| 150 | 
            +
                  subject.automatic = {
         | 
| 151 | 
            +
                    "cloud" => {
         | 
| 152 | 
            +
                      "provider" => "rackspace"
         | 
| 153 | 
            +
                    }
         | 
| 154 | 
            +
                  }
         | 
| 115 155 |  | 
| 116 156 | 
             
                  subject.ec2?.should be_false
         | 
| 117 157 | 
             
                end
         | 
| 118 158 | 
             
              end
         | 
| 159 | 
            +
             | 
| 160 | 
            +
              describe "#rackspace?" do
         | 
| 161 | 
            +
                it "returns true if the node is a cloud node using the rackspace provider" do
         | 
| 162 | 
            +
                  subject.automatic = {
         | 
| 163 | 
            +
                    "cloud" => {
         | 
| 164 | 
            +
                      "provider" => "rackspace"
         | 
| 165 | 
            +
                    }
         | 
| 166 | 
            +
                  }
         | 
| 167 | 
            +
             | 
| 168 | 
            +
                  subject.rackspace?.should be_true
         | 
| 169 | 
            +
                end
         | 
| 170 | 
            +
             | 
| 171 | 
            +
                it "returns false if the node is not a cloud node" do
         | 
| 172 | 
            +
                  subject.automatic.delete(:cloud)
         | 
| 173 | 
            +
             | 
| 174 | 
            +
                  subject.rackspace?.should be_false
         | 
| 175 | 
            +
                end
         | 
| 176 | 
            +
             | 
| 177 | 
            +
                it "returns false if the node is a cloud node but not using the rackspace provider" do
         | 
| 178 | 
            +
                  subject.automatic = {
         | 
| 179 | 
            +
                    "cloud" => {
         | 
| 180 | 
            +
                      "provider" => "ec2"
         | 
| 181 | 
            +
                    }
         | 
| 182 | 
            +
                  }
         | 
| 183 | 
            +
             | 
| 184 | 
            +
                  subject.rackspace?.should be_false
         | 
| 185 | 
            +
                end
         | 
| 186 | 
            +
              end
         | 
| 187 | 
            +
             | 
| 188 | 
            +
              describe "#cloud_provider" do
         | 
| 189 | 
            +
                it "returns the cloud provider if the node is a cloud node" do
         | 
| 190 | 
            +
                  subject.automatic = {
         | 
| 191 | 
            +
                    "cloud" => {
         | 
| 192 | 
            +
                      "provider" => "ec2"
         | 
| 193 | 
            +
                    }
         | 
| 194 | 
            +
                  }
         | 
| 195 | 
            +
             | 
| 196 | 
            +
                  subject.cloud_provider.should eql("ec2")
         | 
| 197 | 
            +
                end
         | 
| 198 | 
            +
             | 
| 199 | 
            +
                it "returns nil if the node is not a cloud node" do
         | 
| 200 | 
            +
                  subject.automatic.delete(:cloud)
         | 
| 201 | 
            +
             | 
| 202 | 
            +
                  subject.cloud_provider.should be_nil
         | 
| 203 | 
            +
                end
         | 
| 204 | 
            +
              end
         | 
| 205 | 
            +
             | 
| 206 | 
            +
              describe "#public_ipv4" do
         | 
| 207 | 
            +
                it "returns the public ipv4 address if the node is a cloud node" do
         | 
| 208 | 
            +
                  subject.automatic = {
         | 
| 209 | 
            +
                    "cloud" => {
         | 
| 210 | 
            +
                      "provider" => "ec2",
         | 
| 211 | 
            +
                      "public_ipv4" => "10.0.0.1"
         | 
| 212 | 
            +
                    }
         | 
| 213 | 
            +
                  }
         | 
| 214 | 
            +
             | 
| 215 | 
            +
                  subject.public_ipv4.should eql("10.0.0.1")
         | 
| 216 | 
            +
                end
         | 
| 217 | 
            +
             | 
| 218 | 
            +
                it "returns the ipaddress if the node is not a cloud node" do
         | 
| 219 | 
            +
                  subject.automatic = {
         | 
| 220 | 
            +
                    "ipaddress" => "192.168.1.1"
         | 
| 221 | 
            +
                  }
         | 
| 222 | 
            +
                  subject.automatic.delete(:cloud)
         | 
| 223 | 
            +
             | 
| 224 | 
            +
                  subject.public_ipv4.should eql("192.168.1.1")
         | 
| 225 | 
            +
                end
         | 
| 226 | 
            +
              end
         | 
| 227 | 
            +
             | 
| 228 | 
            +
              describe "#public_hostname" do
         | 
| 229 | 
            +
                it "returns the public hostname if the node is a cloud node" do
         | 
| 230 | 
            +
                  subject.automatic = {
         | 
| 231 | 
            +
                    "cloud" => {
         | 
| 232 | 
            +
                      "public_hostname" => "reset.cloud.riotgames.com"
         | 
| 233 | 
            +
                    }
         | 
| 234 | 
            +
                  }
         | 
| 235 | 
            +
             | 
| 236 | 
            +
                  subject.public_hostname.should eql("reset.cloud.riotgames.com")
         | 
| 237 | 
            +
                end
         | 
| 238 | 
            +
             | 
| 239 | 
            +
                it "returns the FQDN if the node is not a cloud node" do
         | 
| 240 | 
            +
                  subject.automatic = {
         | 
| 241 | 
            +
                    "fqdn" => "reset.internal.riotgames.com"
         | 
| 242 | 
            +
                  }
         | 
| 243 | 
            +
                  subject.automatic.delete(:cloud)
         | 
| 244 | 
            +
             | 
| 245 | 
            +
                  subject.public_hostname.should eql("reset.internal.riotgames.com")
         | 
| 246 | 
            +
                end
         | 
| 247 | 
            +
              end
         | 
| 119 248 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: ridley
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.3. | 
| 4 | 
            +
              version: 0.3.2
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2012-10- | 
| 12 | 
            +
            date: 2012-10-25 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: chozo
         | 
| @@ -450,7 +450,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 450 450 | 
             
                  version: '0'
         | 
| 451 451 | 
             
                  segments:
         | 
| 452 452 | 
             
                  - 0
         | 
| 453 | 
            -
                  hash:  | 
| 453 | 
            +
                  hash: 2735262975561486812
         | 
| 454 454 | 
             
            requirements: []
         | 
| 455 455 | 
             
            rubyforge_project: 
         | 
| 456 456 | 
             
            rubygems_version: 1.8.23
         |