# File lib/fog/softlayer/models/compute/server.rb, line 407
        def wait_for_id(timeout=14400, delay=30)
          # Cannot use self.wait_for because it calls reload which requires

          # self.id which is not initially available for bare metal.

          filterStr = Fog::JSON.encode({
            "hardware" => {
              "hostname" => {
                "operation" => self.name,
              },
              "domain" => {
                "operation" => self.domain,
              },
              "globalIdentifier" => {
                "operation" => self.uid,
              },
            }
          })

          Fog.wait_for(timeout, delay) do
            res = service.request(:account, 'getHardware', :query => {
              :objectMask => 'mask[id,fullyQualifiedDomainName,provisionDate,hardwareStatus,lastTransaction[elapsedSeconds,transactionStatus[friendlyName]],operatingSystem[id,passwords[password,username]]]',
              :objectFilter => filterStr,
            })

            server = res.body.first

            yield server if block_given?

            if server and server["provisionDate"]
                attributes[:id] = server['id']
                true
            else
                false
            end
          end

          self.reload
          true
        end