Sha256: ca6b8763f212910b7f6d211306055b1f816d2b44f6758fb5e8b7e6ca4e45dde7

Contents?: true

Size: 1.62 KB

Versions: 22

Compression:

Stored size: 1.62 KB

Contents

module Fog
  module Vcloud
    module Terremark
      module Ecloud

        module 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

        module 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

22 entries across 22 versions & 2 rubygems

Version Path
fog-0.2.30 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.28 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.27 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.26 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.25 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.24 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
tecnh-fog-0.2.23.vpc lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.23 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.22 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.21 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.20 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.19 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.18 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.17 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.16 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.15 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.14 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.13 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.12 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb
fog-0.2.11 lib/fog/vcloud/terremark/ecloud/requests/clone_vapp.rb