Sha256: 0cb291c0f5b045ebc90e916be93b185aa806dbf821cc6bf1a67c8aeae96d9b13

Contents?: true

Size: 1.62 KB

Versions: 44

Compression:

Stored size: 1.62 KB

Contents

module Fog
  class Vcloud
    module Terremark
      class Ecloud

        class Real

          def validate_clone_vapp_options(options)
            valid_opts = [:name, :poweron]
            unless valid_opts.all? { |opt| options.keys.include?(opt) }
              raise ArgumentError.new("Required data missing: #{(valid_opts - options.keys).map(&:inspect).join(", ")}")
            end
          end

          def generate_clone_vapp_request(uri, options)
            xml = Builder::XmlMarkup.new
            xml.CloneVAppParams(xmlns.merge!(:name => options[:name], :deploy => "true", :powerOn => options[:poweron])) {
              xml.VApp( :href => uri, :type => "application/vnd.vmware.vcloud.vApp+xml",
                        :xmlns => "http://www.vmware.com/vcloud/v0.8")
            }
          end

          def clone_vapp(vdc_uri, vapp_uri, options = {})
            unless options.has_key?(:poweron)
              options[:poweron] = "false"
            end

            validate_clone_vapp_options(options)

            request(
              :body     => generate_clone_vapp_request(vapp_uri, options),
              :expects  => 202,
              :headers  => {'Content-Type' => 'application/vnd.vmware.vcloud.cloneVAppParams+xml'},
              :method   => 'POST',
              :uri      => vdc_uri + '/action/clonevapp',
              :parse    => true
            )
          end
        end

        class Mock
          def clone_vapp(vdc_uri, vapp_uri, customization_data)
            validate_customization_data(customization_data)
            Fog::Mock.not_implemented
          end
        end
      end
    end
  end
end

Version data entries

44 entries across 44 versions & 3 rubygems

Version Path
fog-0.5.1 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.5.0 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
phpfog-fog-0.4.1.3 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
phpfog-fog-0.4.1.2 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
phpfog-fog-0.4.1.1 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
phpfog-fog-0.4.1 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.4.1 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.4.0 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.3.34 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.3.33 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.3.32 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.3.31 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.3.30 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.3.29 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.3.28 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.3.27 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.3.26 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.3.25 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.3.24 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
bbcloud-0.8.1 lib/bbcloud/vendor/fog-0.3.23/lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb