vcloud-rest 1.0.0 → 1.1.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/lib/vcloud-rest/vcloud/vm.rb +135 -0
- data/lib/vcloud-rest/version.rb +1 -1
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 7c2eb998fce7438cab0aceb5308024a7c660b487
         | 
| 4 | 
            +
              data.tar.gz: b7d09d0d744be363ef4dbe172c0d9d31474625eb
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ccab7973655779b11498d5df9da2c50626f6aa199ac0d97ca1417f0285e30b9d486a0a7f1aff43b84a132d76bd0d1bc9b80b3b2a8c6776fc86343f0c512014ac
         | 
| 7 | 
            +
              data.tar.gz: 64a015a7b3803fdedfc30efe46c31ecced6f797a2036227eefe3cedb0811f17ae671433d87e13754104f723ad49faa91ea5b034d5eb146c9dc5db775b90975b7
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
| @@ -116,9 +116,144 @@ module VCloudClient | |
| 116 116 | 
             
                  task_id
         | 
| 117 117 | 
             
                end
         | 
| 118 118 |  | 
| 119 | 
            +
                ##
         | 
| 120 | 
            +
                # Edit VM Network Config
         | 
| 121 | 
            +
                #
         | 
| 122 | 
            +
                # Retrieve the existing network config section and edit it
         | 
| 123 | 
            +
                # to ensure settings are not lost
         | 
| 124 | 
            +
                def edit_vm_network(vmId, network, config={})
         | 
| 125 | 
            +
                  params = {
         | 
| 126 | 
            +
                    'method' => :get,
         | 
| 127 | 
            +
                    'command' => "/vApp/vm-#{vmId}/networkConnectionSection"
         | 
| 128 | 
            +
                  }
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                  netconfig_response, headers = send_request(params)
         | 
| 131 | 
            +
             | 
| 132 | 
            +
                  picked_network = netconfig_response.css("NetworkConnection").select do |net|
         | 
| 133 | 
            +
                    net.attribute('network').text == network[:name]
         | 
| 134 | 
            +
                  end.first
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                  raise WrongItemIDError, "Network named #{network[:name]} not found." unless picked_network
         | 
| 137 | 
            +
             | 
| 138 | 
            +
                  if config[:ip_allocation_mode]
         | 
| 139 | 
            +
                    node = picked_network.css('IpAddressAllocationMode').first
         | 
| 140 | 
            +
                    node.content = config[:ip_allocation_mode]
         | 
| 141 | 
            +
                  end
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                  if config[:network_index]
         | 
| 144 | 
            +
                    node = picked_network.css('NetworkConnectionIndex').first
         | 
| 145 | 
            +
                    node.content = config[:network_index]
         | 
| 146 | 
            +
                  end
         | 
| 147 | 
            +
             | 
| 148 | 
            +
                  if config[:is_connected]
         | 
| 149 | 
            +
                    node = picked_network.css('IsConnected').first
         | 
| 150 | 
            +
                    node.content = config[:is_connected]
         | 
| 151 | 
            +
                  end
         | 
| 152 | 
            +
             | 
| 153 | 
            +
                  if config[:ip]
         | 
| 154 | 
            +
                    node = picked_network.css('IpAddress').first
         | 
| 155 | 
            +
                    node.content = config[:ip]
         | 
| 156 | 
            +
                  end
         | 
| 157 | 
            +
             | 
| 158 | 
            +
                  params = {
         | 
| 159 | 
            +
                    'method' => :put,
         | 
| 160 | 
            +
                    'command' => "/vApp/vm-#{vmId}/networkConnectionSection"
         | 
| 161 | 
            +
                  }
         | 
| 162 | 
            +
             | 
| 163 | 
            +
                  response, headers = send_request(params, netconfig_response.to_xml, "application/vnd.vmware.vcloud.networkConnectionSection+xml")
         | 
| 164 | 
            +
             | 
| 165 | 
            +
                  task_id = headers[:location].gsub(/.*\/task\//, "")
         | 
| 166 | 
            +
                  task_id
         | 
| 167 | 
            +
                end
         | 
| 168 | 
            +
             | 
| 169 | 
            +
                ##
         | 
| 170 | 
            +
                # Add a new network to a VM
         | 
| 171 | 
            +
                def add_vm_network(vmId, network, config={})
         | 
| 172 | 
            +
                  params = {
         | 
| 173 | 
            +
                    'method' => :get,
         | 
| 174 | 
            +
                    'command' => "/vApp/vm-#{vmId}/networkConnectionSection"
         | 
| 175 | 
            +
                  }
         | 
| 176 | 
            +
             | 
| 177 | 
            +
                  netconfig_response, headers = send_request(params)
         | 
| 178 | 
            +
             | 
| 179 | 
            +
                  parent_section = netconfig_response.css('NetworkConnectionSection').first
         | 
| 180 | 
            +
             | 
| 181 | 
            +
                  # For some reasons these elements must be removed
         | 
| 182 | 
            +
                  netconfig_response.css("Link").each {|n| n.remove}
         | 
| 183 | 
            +
             | 
| 184 | 
            +
                  networks_count = netconfig_response.css('NetworkConnection').count
         | 
| 185 | 
            +
             | 
| 186 | 
            +
                  new_network = Nokogiri::XML::Node.new "NetworkConnection", parent_section
         | 
| 187 | 
            +
                  new_network["network"] = network[:name]
         | 
| 188 | 
            +
                  new_network["needsCustomization"] = true
         | 
| 189 | 
            +
             | 
| 190 | 
            +
                  idx_node = Nokogiri::XML::Node.new "NetworkConnectionIndex", new_network
         | 
| 191 | 
            +
                  idx_node.content = config[:network_index] || networks_count
         | 
| 192 | 
            +
                  new_network.add_child(idx_node)
         | 
| 193 | 
            +
             | 
| 194 | 
            +
                  is_connected_node = Nokogiri::XML::Node.new "IsConnected", new_network
         | 
| 195 | 
            +
                  is_connected_node.content = config[:is_connected] || true
         | 
| 196 | 
            +
                  new_network.add_child(is_connected_node)
         | 
| 197 | 
            +
             | 
| 198 | 
            +
                  allocation_node = Nokogiri::XML::Node.new "IpAddressAllocationMode", new_network
         | 
| 199 | 
            +
                  allocation_node.content = config[:ip_allocation_mode] || "POOL"
         | 
| 200 | 
            +
                  new_network.add_child(allocation_node)
         | 
| 201 | 
            +
             | 
| 202 | 
            +
                  if config[:ip]
         | 
| 203 | 
            +
                    ip_node = Nokogiri::XML::Node.new "IpAddress", new_network
         | 
| 204 | 
            +
                    ip_node.content = config[:ip]
         | 
| 205 | 
            +
                    new_network.add_child(ip_node)
         | 
| 206 | 
            +
                  end
         | 
| 207 | 
            +
             | 
| 208 | 
            +
                  parent_section.add_child(new_network)
         | 
| 209 | 
            +
             | 
| 210 | 
            +
                  params = {
         | 
| 211 | 
            +
                    'method' => :put,
         | 
| 212 | 
            +
                    'command' => "/vApp/vm-#{vmId}/networkConnectionSection"
         | 
| 213 | 
            +
                  }
         | 
| 214 | 
            +
             | 
| 215 | 
            +
                  put_response, headers = send_request(params, netconfig_response.to_xml, "application/vnd.vmware.vcloud.networkConnectionSection+xml")
         | 
| 216 | 
            +
             | 
| 217 | 
            +
                  task_id = headers[:location].gsub(/.*\/task\//, "")
         | 
| 218 | 
            +
                  task_id
         | 
| 219 | 
            +
                end
         | 
| 220 | 
            +
             | 
| 221 | 
            +
                ##
         | 
| 222 | 
            +
                # Remove an existing network
         | 
| 223 | 
            +
                def delete_vm_network(vmId, network)
         | 
| 224 | 
            +
                  params = {
         | 
| 225 | 
            +
                    'method' => :get,
         | 
| 226 | 
            +
                    'command' => "/vApp/vm-#{vmId}/networkConnectionSection"
         | 
| 227 | 
            +
                  }
         | 
| 228 | 
            +
             | 
| 229 | 
            +
                  netconfig_response, headers = send_request(params)
         | 
| 230 | 
            +
             | 
| 231 | 
            +
                  picked_network = netconfig_response.css("NetworkConnection").select do |net|
         | 
| 232 | 
            +
                    net.attribute('network').text == network[:name]
         | 
| 233 | 
            +
                  end.first
         | 
| 234 | 
            +
             | 
| 235 | 
            +
                  raise WrongItemIDError, "Network #{network[:name]} not found on this VM." unless picked_network
         | 
| 236 | 
            +
             | 
| 237 | 
            +
                  picked_network.remove
         | 
| 238 | 
            +
             | 
| 239 | 
            +
                  params = {
         | 
| 240 | 
            +
                    'method' => :put,
         | 
| 241 | 
            +
                    'command' => "/vApp/vm-#{vmId}/networkConnectionSection"
         | 
| 242 | 
            +
                  }
         | 
| 243 | 
            +
             | 
| 244 | 
            +
                  put_response, headers = send_request(params, netconfig_response.to_xml, "application/vnd.vmware.vcloud.networkConnectionSection+xml")
         | 
| 245 | 
            +
             | 
| 246 | 
            +
                  task_id = headers[:location].gsub(/.*\/task\//, "")
         | 
| 247 | 
            +
                  task_id
         | 
| 248 | 
            +
                end
         | 
| 249 | 
            +
             | 
| 119 250 | 
             
                ##
         | 
| 120 251 | 
             
                # Set VM Network Config
         | 
| 252 | 
            +
                #
         | 
| 253 | 
            +
                # DEPRECATED: use set_vm_network
         | 
| 121 254 | 
             
                def set_vm_network_config(vmid, network_name, config={})
         | 
| 255 | 
            +
                  @logger.warn 'DEPRECATION WARNING: use [add,delete,edit]_vm_network instead.'
         | 
| 256 | 
            +
             | 
| 122 257 | 
             
                  builder = Nokogiri::XML::Builder.new do |xml|
         | 
| 123 258 | 
             
                  xml.NetworkConnectionSection(
         | 
| 124 259 | 
             
                    "xmlns" => "http://www.vmware.com/vcloud/v1.5",
         | 
    
        data/lib/vcloud-rest/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: vcloud-rest
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 1. | 
| 4 | 
            +
              version: 1.1.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Stefano Tortarolo
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2013- | 
| 11 | 
            +
            date: 2013-12-13 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: nokogiri
         | 
| @@ -111,3 +111,4 @@ signing_key: | |
| 111 111 | 
             
            specification_version: 4
         | 
| 112 112 | 
             
            summary: Unofficial ruby bindings for VMWare vCloud's API
         | 
| 113 113 | 
             
            test_files: []
         | 
| 114 | 
            +
            has_rdoc: 
         |