azure-armrest 0.3.3 → 0.3.4
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.
- checksums.yaml +4 -4
- data/CHANGES +14 -0
- data/lib/azure/armrest.rb +4 -0
- data/lib/azure/armrest/model/base_model.rb +6 -0
- data/lib/azure/armrest/model/storage_account.rb +92 -18
- data/lib/azure/armrest/network/inbound_nat_service.rb +12 -0
- data/lib/azure/armrest/network/load_balancer_service.rb +14 -0
- data/lib/azure/armrest/network/route_service.rb +12 -0
- data/lib/azure/armrest/network/route_table_service.rb +14 -0
- data/lib/azure/armrest/resource_group_based_service.rb +16 -2
- data/lib/azure/armrest/version.rb +1 -1
- metadata +6 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 25599bb89027a9662c3f4b47a582db0bb112c9ef
         | 
| 4 | 
            +
              data.tar.gz: 80c069a284b706e81c139f2c1ae64f276084aba5
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a91dfecc724c56d950fd4b33a90a3efed24c1a58b22fa63b1ea003bf02c0594792978d8643ee97cc7897f04139f0e9ef1905de2c81774bc7f4d45ffb05ecba94
         | 
| 7 | 
            +
              data.tar.gz: 9473b0a19e8275664d39afb7f264a37fbd47fdcccd7a93a7ef3fc2df36b446a5a8407efb7407eaab757d41297c5713c6d4016c09ab5f2cdb5b6d590938e03705
         | 
    
        data/CHANGES
    CHANGED
    
    | @@ -1,3 +1,13 @@ | |
| 1 | 
            +
            = 0.3.4 - 9-Aug-2016
         | 
| 2 | 
            +
            * Modified the StorageAccount#blobs and StorageAccount#containers method. Both
         | 
| 3 | 
            +
              now accept a hash of options that you can use to modify the results. Also,
         | 
| 4 | 
            +
              both now automatically handle continuation tokens to collect all results.
         | 
| 5 | 
            +
            * The ResourceGroupBasedService#delete method now returns a ResponseHeaders
         | 
| 6 | 
            +
              object instead of nil. Furthermore, it will raise an error on a 204 response
         | 
| 7 | 
            +
              which indicates that the resource wasn't actually found.
         | 
| 8 | 
            +
            * Added the Network::LoadBalancerService and Network::InboundNatService classes.
         | 
| 9 | 
            +
            * Added the Network::RouteService and Network::RouteTableService classes.
         | 
| 10 | 
            +
             | 
| 1 11 | 
             
            = 0.3.3 - 1-Aug-2016
         | 
| 2 12 | 
             
            * Added the :max_threads configuration option. This is used internally wherever
         | 
| 3 13 | 
             
              the Parallel gem is used.
         | 
| @@ -39,6 +49,10 @@ | |
| 39 49 | 
             
            * StorageAccountService no longer does account type validation.
         | 
| 40 50 | 
             
            * Added the StorageAccountService#list_all_private_images method.
         | 
| 41 51 |  | 
| 52 | 
            +
            = 0.2.8 - 22-Jul-2016
         | 
| 53 | 
            +
            * Backported PR #188 (add list_all_private_images method).
         | 
| 54 | 
            +
            * Backported PR #194 (updated .travis.yml).
         | 
| 55 | 
            +
             | 
| 42 56 | 
             
            = 0.2.7 - 20-Jun-2016
         | 
| 43 57 | 
             
            * All internal calls to rest-client are now explicitly URI.encoded.
         | 
| 44 58 |  | 
    
        data/lib/azure/armrest.rb
    CHANGED
    
    | @@ -40,10 +40,14 @@ require 'azure/armrest/resource_provider_service' | |
| 40 40 | 
             
            require 'azure/armrest/insights/alert_service'
         | 
| 41 41 | 
             
            require 'azure/armrest/insights/event_service'
         | 
| 42 42 | 
             
            require 'azure/armrest/insights/metrics_service'
         | 
| 43 | 
            +
            require 'azure/armrest/network/load_balancer_service'
         | 
| 44 | 
            +
            require 'azure/armrest/network/inbound_nat_service'
         | 
| 43 45 | 
             
            require 'azure/armrest/network/ip_address_service'
         | 
| 44 46 | 
             
            require 'azure/armrest/network/network_interface_service'
         | 
| 45 47 | 
             
            require 'azure/armrest/network/network_security_group_service'
         | 
| 46 48 | 
             
            require 'azure/armrest/network/network_security_rule_service'
         | 
| 49 | 
            +
            require 'azure/armrest/network/route_table_service'
         | 
| 50 | 
            +
            require 'azure/armrest/network/route_service'
         | 
| 47 51 | 
             
            require 'azure/armrest/network/virtual_network_service'
         | 
| 48 52 | 
             
            require 'azure/armrest/network/subnet_service'
         | 
| 49 53 | 
             
            require 'azure/armrest/role/assignment_service'
         | 
| @@ -194,6 +194,8 @@ module Azure | |
| 194 194 | 
             
                class Sku < BaseModel; end
         | 
| 195 195 | 
             
                class Usage < BaseModel; end
         | 
| 196 196 |  | 
| 197 | 
            +
                class ResponseHeaders < BaseModel; end
         | 
| 198 | 
            +
             | 
| 197 199 | 
             
                class StorageAccount < BaseModel; end
         | 
| 198 200 | 
             
                class StorageAccountKey < StorageAccount
         | 
| 199 201 | 
             
                  def key1; key_name == 'key1' ? value : nil; end
         | 
| @@ -222,10 +224,14 @@ module Azure | |
| 222 224 | 
             
                end
         | 
| 223 225 |  | 
| 224 226 | 
             
                module Network
         | 
| 227 | 
            +
                  class LoadBalancer < BaseModel; end
         | 
| 228 | 
            +
                  class InboundNat < LoadBalancer; end
         | 
| 225 229 | 
             
                  class IpAddress < BaseModel; end
         | 
| 226 230 | 
             
                  class NetworkInterface < BaseModel; end
         | 
| 227 231 | 
             
                  class NetworkSecurityGroup < BaseModel; end
         | 
| 228 232 | 
             
                  class NetworkSecurityRule < NetworkSecurityGroup; end
         | 
| 233 | 
            +
                  class RouteTable < BaseModel; end
         | 
| 234 | 
            +
                  class Route < RouteTable; end
         | 
| 229 235 | 
             
                  class VirtualNetwork < BaseModel; end
         | 
| 230 236 | 
             
                  class Subnet < VirtualNetwork; end
         | 
| 231 237 | 
             
                end
         | 
| @@ -119,14 +119,51 @@ module Azure | |
| 119 119 | 
             
                  # If no key is provided, it is assumed that the StorageAccount object
         | 
| 120 120 | 
             
                  # includes the key1 property.
         | 
| 121 121 | 
             
                  #
         | 
| 122 | 
            -
                   | 
| 122 | 
            +
                  # # The following options are supported:
         | 
| 123 | 
            +
                  #
         | 
| 124 | 
            +
                  # * prefix
         | 
| 125 | 
            +
                  # * delimiter
         | 
| 126 | 
            +
                  # * maxresults
         | 
| 127 | 
            +
                  # * include
         | 
| 128 | 
            +
                  # * timeout
         | 
| 129 | 
            +
                  #
         | 
| 130 | 
            +
                  # By default Azure uses a value of 5000 for :maxresults.
         | 
| 131 | 
            +
                  #
         | 
| 132 | 
            +
                  # If the :include option is specified, it should contain an array of
         | 
| 133 | 
            +
                  # one element: metadata. More options may be added by Microsoft
         | 
| 134 | 
            +
                  # at a later date.
         | 
| 135 | 
            +
                  #
         | 
| 136 | 
            +
                  # Example:
         | 
| 137 | 
            +
                  #
         | 
| 138 | 
            +
                  #   sas  = Azure::Armrest::StorageAccountService.new(conf)
         | 
| 139 | 
            +
                  #   key  = sas.list_account_keys['key1']
         | 
| 140 | 
            +
                  #   acct = sas.get('your_storage_account', 'your_resource_group')
         | 
| 141 | 
            +
                  #
         | 
| 142 | 
            +
                  #   p acct.containers(key)
         | 
| 143 | 
            +
                  #   p acct.containers(key, :include => ['metadata'])
         | 
| 144 | 
            +
                  #   p acct.containers(key, :maxresults => 1)
         | 
| 145 | 
            +
                  #
         | 
| 146 | 
            +
                  # In cases where a NextMarker element is found in the original response,
         | 
| 147 | 
            +
                  # another call will automatically be made with the marker value included
         | 
| 148 | 
            +
                  # in the URL so that you don't have to perform such a step manually.
         | 
| 149 | 
            +
                  #
         | 
| 150 | 
            +
                  def containers(key = nil, options = {})
         | 
| 123 151 | 
             
                    key ||= properties.key1
         | 
| 124 152 |  | 
| 125 | 
            -
                     | 
| 153 | 
            +
                    query = "comp=list"
         | 
| 154 | 
            +
                    options.each { |okey, ovalue| query += "&#{okey}=#{[ovalue].flatten.join(',')}" }
         | 
| 155 | 
            +
             | 
| 156 | 
            +
                    response = blob_response(key, query)
         | 
| 126 157 |  | 
| 127 | 
            -
                    Nokogiri::XML(response.body) | 
| 158 | 
            +
                    doc = Nokogiri::XML(response.body)
         | 
| 159 | 
            +
             | 
| 160 | 
            +
                    results = doc.xpath('//Containers/Container').collect do |element|
         | 
| 128 161 | 
             
                      Container.new(Hash.from_xml(element.to_s)['Container'])
         | 
| 129 162 | 
             
                    end
         | 
| 163 | 
            +
             | 
| 164 | 
            +
                    results << next_marker_results(doc, :containers, key, options)
         | 
| 165 | 
            +
             | 
| 166 | 
            +
                    results.flatten
         | 
| 130 167 | 
             
                  end
         | 
| 131 168 |  | 
| 132 169 | 
             
                  # Returns the properties for the given container +name+ using account +key+.
         | 
| @@ -184,30 +221,52 @@ module Azure | |
| 184 221 | 
             
                  # Return a list of blobs for the given +container+ using the given +key+
         | 
| 185 222 | 
             
                  # or the key1 property of the StorageAccount object.
         | 
| 186 223 | 
             
                  #
         | 
| 187 | 
            -
                   | 
| 224 | 
            +
                  # The following options are supported:
         | 
| 225 | 
            +
                  #
         | 
| 226 | 
            +
                  # * prefix
         | 
| 227 | 
            +
                  # * delimiter
         | 
| 228 | 
            +
                  # * maxresults
         | 
| 229 | 
            +
                  # * include
         | 
| 230 | 
            +
                  # * timeout
         | 
| 231 | 
            +
                  #
         | 
| 232 | 
            +
                  # By default Azure uses a value of 5000 for :maxresults.
         | 
| 233 | 
            +
                  #
         | 
| 234 | 
            +
                  # If the :include option is specified, it should contain an array of
         | 
| 235 | 
            +
                  # one or more of the following values: snapshots, metadata, copy or
         | 
| 236 | 
            +
                  # uncommittedblobs.
         | 
| 237 | 
            +
                  #
         | 
| 238 | 
            +
                  # Example:
         | 
| 239 | 
            +
                  #
         | 
| 240 | 
            +
                  #   sas  = Azure::Armrest::StorageAccountService.new(conf)
         | 
| 241 | 
            +
                  #   key  = sas.list_account_keys['key1']
         | 
| 242 | 
            +
                  #   acct = sas.get('your_storage_account', 'your_resource_group')
         | 
| 243 | 
            +
                  #
         | 
| 244 | 
            +
                  #   p acct.blobs('vhds', key)
         | 
| 245 | 
            +
                  #   p acct.blobs('vhds', key, :timeout => 30)
         | 
| 246 | 
            +
                  #   p acct.blobs('vhds', key, :include => ['snapshots', 'metadata'])
         | 
| 247 | 
            +
                  #
         | 
| 248 | 
            +
                  # In cases where a NextMarker element is found in the original response,
         | 
| 249 | 
            +
                  # another call will automatically be made with the marker value included
         | 
| 250 | 
            +
                  # in the URL so that you don't have to perform such a step manually.
         | 
| 251 | 
            +
                  #
         | 
| 252 | 
            +
                  def blobs(container, key = nil, options = {})
         | 
| 188 253 | 
             
                    key ||= properties.key1
         | 
| 189 254 |  | 
| 190 | 
            -
                     | 
| 191 | 
            -
                     | 
| 192 | 
            -
                    url += "&include=snapshots" if include_snapshot
         | 
| 255 | 
            +
                    query = "restype=container&comp=list"
         | 
| 256 | 
            +
                    options.each { |okey, ovalue| query += "&#{okey}=#{[ovalue].flatten.join(',')}" }
         | 
| 193 257 |  | 
| 194 | 
            -
                     | 
| 195 | 
            -
             | 
| 196 | 
            -
                    response = ArmrestService.send(
         | 
| 197 | 
            -
                      :rest_get,
         | 
| 198 | 
            -
                      :url         => url,
         | 
| 199 | 
            -
                      :headers     => headers,
         | 
| 200 | 
            -
                      :proxy       => proxy,
         | 
| 201 | 
            -
                      :ssl_version => ssl_version,
         | 
| 202 | 
            -
                      :ssl_verify  => ssl_verify
         | 
| 203 | 
            -
                    )
         | 
| 258 | 
            +
                    response = blob_response(key, query, container)
         | 
| 204 259 |  | 
| 205 260 | 
             
                    doc = Nokogiri::XML(response.body)
         | 
| 206 261 |  | 
| 207 | 
            -
                    doc.xpath('//Blobs/Blob'). | 
| 262 | 
            +
                    results = doc.xpath('//Blobs/Blob').collect do |node|
         | 
| 208 263 | 
             
                      hash = Hash.from_xml(node.to_s)['Blob'].merge(:container => container)
         | 
| 209 264 | 
             
                      hash.key?('Snapshot') ? BlobSnapshot.new(hash) : Blob.new(hash)
         | 
| 210 265 | 
             
                    end
         | 
| 266 | 
            +
             | 
| 267 | 
            +
                    results << next_marker_results(doc, :blobs, container, key, options)
         | 
| 268 | 
            +
             | 
| 269 | 
            +
                    results.flatten
         | 
| 211 270 | 
             
                  end
         | 
| 212 271 |  | 
| 213 272 | 
             
                  # Returns an array of all blobs for all containers.
         | 
| @@ -545,6 +604,21 @@ module Azure | |
| 545 604 |  | 
| 546 605 | 
             
                    headers
         | 
| 547 606 | 
             
                  end
         | 
| 607 | 
            +
             | 
| 608 | 
            +
                  # Generic method to handle NextMarker token. The +doc+ should be an
         | 
| 609 | 
            +
                  # XML object that responds to .xpath, followed by a method name,
         | 
| 610 | 
            +
                  # followed by any arguments to pass to that method.
         | 
| 611 | 
            +
                  #
         | 
| 612 | 
            +
                  def next_marker_results(doc, method_name, *args)
         | 
| 613 | 
            +
                    xmarker = doc.xpath('//NextMarker').first # There is only one
         | 
| 614 | 
            +
                    if xmarker.children.empty?
         | 
| 615 | 
            +
                      return []
         | 
| 616 | 
            +
                    else
         | 
| 617 | 
            +
                      args = args.dup # Avoid modifying original argument
         | 
| 618 | 
            +
                      args.last[:marker] = xmarker.children.first.to_s
         | 
| 619 | 
            +
                      return send(method_name, *args)
         | 
| 620 | 
            +
                    end
         | 
| 621 | 
            +
                  end
         | 
| 548 622 | 
             
                end
         | 
| 549 623 | 
             
              end
         | 
| 550 624 | 
             
            end
         | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            module Azure
         | 
| 2 | 
            +
              module Armrest
         | 
| 3 | 
            +
                module Network
         | 
| 4 | 
            +
                  # Base class for managing subnets
         | 
| 5 | 
            +
                  class InboundNatService < ResourceGroupBasedSubservice
         | 
| 6 | 
            +
                    def initialize(armrest_configuration, options = {})
         | 
| 7 | 
            +
                      super(armrest_configuration, 'loadBalancers', 'inboundNatRules', 'Microsoft.Network', options)
         | 
| 8 | 
            +
                    end
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
                end # Network
         | 
| 11 | 
            +
              end # Armrest
         | 
| 12 | 
            +
            end # Azure
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            module Azure
         | 
| 2 | 
            +
              module Armrest
         | 
| 3 | 
            +
                module Network
         | 
| 4 | 
            +
                  # Class for managing load balancers
         | 
| 5 | 
            +
                  class LoadBalancerService < ResourceGroupBasedService
         | 
| 6 | 
            +
                    # Creates and returns a new LoadBalancerService instance.
         | 
| 7 | 
            +
                    #
         | 
| 8 | 
            +
                    def initialize(armrest_configuration, options = {})
         | 
| 9 | 
            +
                      super(armrest_configuration, 'loadBalancers', 'Microsoft.Network', options)
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
                end # Network
         | 
| 13 | 
            +
              end # Armrest
         | 
| 14 | 
            +
            end # Azure
         | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            module Azure
         | 
| 2 | 
            +
              module Armrest
         | 
| 3 | 
            +
                module Network
         | 
| 4 | 
            +
                  # Base class for managing subnets
         | 
| 5 | 
            +
                  class RouteService < ResourceGroupBasedSubservice
         | 
| 6 | 
            +
                    def initialize(armrest_configuration, options = {})
         | 
| 7 | 
            +
                      super(armrest_configuration, 'routeTables', 'routes', 'Microsoft.Network', options)
         | 
| 8 | 
            +
                    end
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
                end # Network
         | 
| 11 | 
            +
              end # Armrest
         | 
| 12 | 
            +
            end # Azure
         | 
| @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            module Azure
         | 
| 2 | 
            +
              module Armrest
         | 
| 3 | 
            +
                module Network
         | 
| 4 | 
            +
                  # Class for managing load balancers
         | 
| 5 | 
            +
                  class RouteTableService < ResourceGroupBasedService
         | 
| 6 | 
            +
                    # Creates and returns a new LoadBalancerService instance.
         | 
| 7 | 
            +
                    #
         | 
| 8 | 
            +
                    def initialize(armrest_configuration, options = {})
         | 
| 9 | 
            +
                      super(armrest_configuration, 'routeTables', 'Microsoft.Network', options)
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
                end # Network
         | 
| 13 | 
            +
              end # Armrest
         | 
| 14 | 
            +
            end # Azure
         | 
| @@ -50,14 +50,28 @@ module Azure | |
| 50 50 | 
             
                    model_class.new(response)
         | 
| 51 51 | 
             
                  end
         | 
| 52 52 |  | 
| 53 | 
            +
                  # Delete the resource with the given +name+ for the provided +resource_group+,
         | 
| 54 | 
            +
                  # or the resource group specified in your original configuration object. If
         | 
| 55 | 
            +
                  # successful, returns a ResponseHeaders object.
         | 
| 56 | 
            +
                  #
         | 
| 57 | 
            +
                  # If the delete operation returns a 204 (no body), which is what the Azure
         | 
| 58 | 
            +
                  # REST API typically returns if the resource is not found, it is treated
         | 
| 59 | 
            +
                  # as an error and a ResourceNotFoundException is raised.
         | 
| 60 | 
            +
                  #
         | 
| 53 61 | 
             
                  def delete(name, rgroup = configuration.resource_group)
         | 
| 54 62 | 
             
                    validate_resource_group(rgroup)
         | 
| 55 63 | 
             
                    validate_resource(name)
         | 
| 56 64 |  | 
| 57 65 | 
             
                    url = build_url(rgroup, name)
         | 
| 58 66 | 
             
                    url = yield(url) || url if block_given?
         | 
| 59 | 
            -
                    rest_delete(url)
         | 
| 60 | 
            -
             | 
| 67 | 
            +
                    response = rest_delete(url)
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                    if response.code == 204
         | 
| 70 | 
            +
                      msg = "#{self.class} resource #{rgroup}/#{name} not found"
         | 
| 71 | 
            +
                      raise Azure::Armrest::ResourceNotFoundException.new(response.code, msg, response)
         | 
| 72 | 
            +
                    end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                    Azure::Armrest::ResponseHeaders.new(response.headers)
         | 
| 61 75 | 
             
                  end
         | 
| 62 76 |  | 
| 63 77 | 
             
                  private
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: azure-armrest
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.3. | 
| 4 | 
            +
              version: 0.3.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Daniel J. Berger
         | 
| @@ -11,7 +11,7 @@ authors: | |
| 11 11 | 
             
            autorequire: 
         | 
| 12 12 | 
             
            bindir: bin
         | 
| 13 13 | 
             
            cert_chain: []
         | 
| 14 | 
            -
            date: 2016-08- | 
| 14 | 
            +
            date: 2016-08-09 00:00:00.000000000 Z
         | 
| 15 15 | 
             
            dependencies:
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 17 17 | 
             
              name: json
         | 
| @@ -230,10 +230,14 @@ files: | |
| 230 230 | 
             
            - lib/azure/armrest/insights/metrics_service.rb
         | 
| 231 231 | 
             
            - lib/azure/armrest/model/base_model.rb
         | 
| 232 232 | 
             
            - lib/azure/armrest/model/storage_account.rb
         | 
| 233 | 
            +
            - lib/azure/armrest/network/inbound_nat_service.rb
         | 
| 233 234 | 
             
            - lib/azure/armrest/network/ip_address_service.rb
         | 
| 235 | 
            +
            - lib/azure/armrest/network/load_balancer_service.rb
         | 
| 234 236 | 
             
            - lib/azure/armrest/network/network_interface_service.rb
         | 
| 235 237 | 
             
            - lib/azure/armrest/network/network_security_group_service.rb
         | 
| 236 238 | 
             
            - lib/azure/armrest/network/network_security_rule_service.rb
         | 
| 239 | 
            +
            - lib/azure/armrest/network/route_service.rb
         | 
| 240 | 
            +
            - lib/azure/armrest/network/route_table_service.rb
         | 
| 237 241 | 
             
            - lib/azure/armrest/network/subnet_service.rb
         | 
| 238 242 | 
             
            - lib/azure/armrest/network/virtual_network_service.rb
         | 
| 239 243 | 
             
            - lib/azure/armrest/resource_group_based_service.rb
         |