# File lib/fog/xenserver/requests/compute/create_server.rb, line 74
        def create_server( name_label, template = nil, networks = [], extra_args = {})
          if !networks.kind_of? Array
            raise "Invalid networks argument"
          end

          if template.kind_of? String
            template_string = template
            # try template by UUID 
            template = servers.templates.find { |s| s.uuid == template_string }
            if template.nil?
              # Try with the template name just in case
              template = servers.get get_vm_by_name(template_string)
            end
          end

          if template.nil?
            raise "Invalid template"
          end

          raise "Template #{template_string} does not exist" if template.allowed_operations.nil?
          raise 'Clone Operation not Allowed' unless template.allowed_operations.include?('clone')

          # Clone the VM template
          ref = clone_server name_label, template.reference
          # Add additional NICs
          networks.each do |n|
            create_vif ref, n.reference
          end
          if !extra_args[:auto_start] == false
            @connection.request({:parser => Fog::Parsers::XenServer::Base.new, :method => 'VM.provision'}, ref)
            start_vm( ref ) 
          end
          
          ref
        end