# File lib/fog/softlayer/requests/compute/create_bare_metal_server.rb, line 35
        def create_bare_metal_server(opts)
          raise ArgumentError, "Fog::Compute::Softlayer#create_bare_metal_server expects argument of type Hash" unless opts.kind_of?(Hash)
          response = Excon::Response.new
          required = %w{hostname domain processorCoreAmount memoryCapacity hourlyBillingFlag operatingSystemReferenceCode}

          begin
            Fog::Softlayer.valid_request?(required, opts) or raise MissingRequiredParameter
            response.status = 201
            # a real response comes back with lots of nil values like this too, it takes 1 - 2 hours for a real BMC server to provision
            response.body = {
                'accountId' =>  Fog::Softlayer.mock_account_id,
                'createDate' => Time.now.iso8601,
                'dedicatedAccountHostOnlyFlag' => false,
                'domain' => nil,
                'fullyQualifiedDomainName' => nil,
                'hostname' => nil,
                'id' => Fog::Softlayer.mock_vm_id,
                'lastPowerStateId' => nil,
                'lastVerifiedDate' => nil,
                'maxCpu' => nil,
                'maxCpuUnits' => "CORE",
                'maxMemory' => nil,
                'metricPollDate' => nil,
                'modifyDate' => nil,
                'startCpus' => nil,
                'statusId' => 1001,
                'primaryIpAddress' => Fog::Mock.random_ip,
                'globalIdentifier' => Fog::Softlayer.mock_global_identifier
            }
          rescue MissingRequiredParameter
            response.status = 500
            response.body = {
                "code" => "SoftLayer_Exception_MissingCreationProperty",
                "error" => "Properties #{required.join(', ')} ALL must be set to create an instance of 'SoftLayer_Hardware'."
            }
          end
          @bare_metal_servers.push(response.body).flatten!
          response
        end