def virtual_server_order
      product_order = {
        'packageId'        => @package.id,
        'useHourlyPricing' => !!@hourly,
        'virtualGuests'    => [{
                                 'domain'   => @domain,
                                 'hostname' => @hostname
                               }]
      }

      #Note that the use of image_template and SoftLayer::ProductPackage os/guest_diskX configuration category
      #item prices is mutually exclusive.
      product_order['imageTemplateGlobalIdentifier']  = @image_template.global_id         if @image_template
      product_order['location']                       = @datacenter.id                    if @datacenter
      product_order['provisionScripts']               = [@provision_script_URI.to_s]      if @provision_script_URI
      product_order['provisionScripts']               = [@provision_script_uri.to_s]      if @provision_script_uri
      product_order['sshKeys']                        = [{ 'sshKeyIds' => @ssh_key_ids }] if @ssh_key_ids
      product_order['virtualGuests'][0]['userData']   = @user_metadata                    if @user_metadata
      product_order['primaryNetworkComponent']        = { "networkVlan" => { "id" => @public_vlan_id.to_i } } if @public_vlan_id
      product_order['primaryBackendNetworkComponent'] = { "networkVlan" => {"id" => @private_vlan_id.to_i } } if @private_vlan_id

      product_order['prices'] = @configuration_options.collect do |key, value|
        if value.respond_to?(:price_id)
          price_id = value.price_id
        else
          price_id = value.to_i
        end

        { 'id' => price_id }
      end

      product_order
    end
def virtual_server_order
      product_order = {
        'packageId'        => @package.id,
        'useHourlyPricing' => !!@hourly,
        'virtualGuests'    => [{
                                 'domain'   => @domain,
                                 'hostname' => @hostname
                               }]
      }

      #Note that the use of image_template and SoftLayer::ProductPackage os/guest_diskX configuration category
      #item prices is mutually exclusive.
      product_order['imageTemplateGlobalIdentifier']  = @image_template.global_id         if @image_template
      product_order['location']                       = @datacenter.id                    if @datacenter
      product_order['provisionScripts']               = [@provision_script_URI.to_s]      if @provision_script_URI
      product_order['provisionScripts']               = [@provision_script_uri.to_s]      if @provision_script_uri
      product_order['sshKeys']                        = [{ 'sshKeyIds' => @ssh_key_ids }] if @ssh_key_ids
      product_order['virtualGuests'][0]['userData']   = @user_metadata                    if @user_metadata
      product_order['primaryNetworkComponent']        = { "networkVlan" => { "id" => @public_vlan_id.to_i } } if @public_vlan_id
      product_order['primaryBackendNetworkComponent'] = { "networkVlan" => {"id" => @private_vlan_id.to_i } } if @private_vlan_id

      product_order['prices'] = @configuration_options.collect do |key, value|
        if value.respond_to?(:price_id)
          price_id = value.price_id
        else
          price_id = value.to_i
        end

        { 'id' => price_id }
      end

      product_order
    end
Construct and return a hash representing a +SoftLayer_Container_Product_Order_Virtual_Guest+
 based on the configuration options given.