title: gcloud preview app deploy returns 400 error
body: <p>Trying to deploy some static content to GAE, since they removed the push-to-deploy pipeline feature. I've setup a brand new project. It's in the US region. Did <code>gcloud auth login</code> again. Still getting the same response. </p>
  
  <p>Verbose debug output below. [REDACTED] is my addition to the code. </p>
  
  <pre><code>$ gcloud preview app deploy dist/app.yaml --verbosity debug
  DEBUG: Running gcloud.preview.app.deploy with Namespace(__calliope_internal_deepest_parser=ArgumentParser(prog='gcloud.preview.app.deploy', usage=None, description="*(BETA)* This command is used to deploy both code and configuration to the App Engine\nserver.  As an input it takes one or more ``DEPLOYABLES'' that should be\nuploaded.  A ``DEPLOYABLE'' can be a module's .yaml file or a configuration's\n.yaml file.", version=None, formatter_class=&lt;class 'argparse.HelpFormatter'&gt;, conflict_handler='error', add_help=False), cmd_func=&lt;bound method Command.Run of &lt;googlecloudsdk.calliope.backend.Command object at 0x10bf14290&gt;&gt;, command_path=['gcloud', 'preview', 'app', 'deploy'], deployables=['dist/app.yaml'], document=None, env_vars=None, force=False, format=None, h=None, help=None, http_timeout=None, log_http=None, markdown=None, project=None, quiet=None, remote=False, server=None, set_default=False, trace_token=None, user_output_enabled=None, verbosity='debug', version=None).
  You are about to deploy the following modules:
   - [PROJECT_ID]/default/20150612t130942  From: [/Users/[ME]/Dropbox/Sites/[PROJECT_ID]/site/dist/app.yaml]
  Do you want to continue (Y/n)?  Y
  
  Updating module [default]...DEBUG: Host: appengine.google.com
  DEBUG: Host: appengine.google.com
  DEBUG: Getting current resource limits.
  DEBUG: Send: /api/appversion/getresourcelimits, params={'version': '20150612t130942', 'app_id': '[PROJECT_ID]'}
  DEBUG: _Authenticate configuring auth; needs_auth=False
  DEBUG: Sending request to https://appengine.google.com/api/appversion/getresourcelimits?app_id=[PROJECT_ID]&amp;version=20150612t130942 headers={'X-appcfg-api-version': '1', 'content-length': '0', 'Content-Type': 'application/octet-stream'} body=
  INFO: Attempting refresh to obtain initial access_token
  INFO: Refreshing access_token
  DEBUG: Got response: max_file_size: 32000000
  max_blob_size: 32000000
  max_files_to_clone: 2000
  max_total_file_size: 9223372036854775807
  max_file_count: 10000
  
  DEBUG: Using resource limits: {'max_file_size': 32000000, 'max_total_file_size': 9223372036854775807, 'max_blob_size': 32000000, 'max_files_to_clone': 2000, 'max_file_count': 10000}
  INFO: Reading app configuration.
  DEBUG: 
  Starting update of app: [PROJECT_ID], version: 20150612t130942
  DEBUG: Scanning files on local disk.
  INFO: Processing file [app.yaml]
  INFO: Processing file [index.html]
  INFO: Processing file [views/6a0e56b1.main.html]
  INFO: Processing file [views/partials/90bc29e6.case-study.html]
  INFO: Processing file [views/partials/cc69dea5.home.html]
  INFO: Processing file [styles/9960b040.main.css]
  INFO: Processing file [scripts/8a12aff1.scripts.js]
  INFO: Processing file [scripts/8e6de882.libraries.js]
  DEBUG: Send: /api/appversion/create, params={'version': '20150612t130942', 'app_id': '[PROJECT_ID]', 'module': 'default'}
  DEBUG: _Authenticate configuring auth; needs_auth=False
  DEBUG: Sending request to https://appengine.google.com/api/appversion/create?app_id=[PROJECT_ID]&amp;module=default&amp;version=20150612t130942 headers={'X-appcfg-api-version': '1', 'content-length': '633', 'Content-Type': 'application/octet-stream'} body=api_version: '1'
  application: [PROJECT_ID]
  auto_id_policy: default
  builtins:
  - default: 'on'
  derived_file_type:
  - python_precompiled
  handlers:
  - script: index.html
    secure: optional
    url: /
  - secure: optional
    static_dir: styles
    url: /styles
  - secure: optional
    static_dir: scripts
    url: /scripts
  - secure: optional
    static_dir: views
    url: /views
  - secure: optional
    static_dir: fonts
    url: /fonts
  - secure: optional
    static_dir: images
    url: /images
  - secure: optional
    static_dir: res
    url: /res
  module: default
  runtime: php
  threadsafe: true
  version: 20150612t130942
  vm_settings:
    module_yaml_path: app.yaml
  
  INFO: Attempting refresh to obtain initial access_token
  INFO: Refreshing access_token
  Updating module [default].../DEBUG: Got http error 400.
  DEBUG: Unexpected results: {'status': '400', 'alternate-protocol': '443:quic,p=1', 'content-length': '318', 'expires': 'Fri, 01 Jan 1990 00:00:00 GMT', 'server': 'Google Frontend', 'cache-control': 'no-cache', 'date': 'Fri, 12 Jun 2015 18:09:47 GMT', 'content-type': 'text/plain'}
  Updating module [default]...done.
  DEBUG: (gcloud.preview.app.deploy) Server responded with code [400]:
    Bad Request Unexpected HTTP status 400
  Traceback (most recent call last):
    File "/Users/[ME]/Applications/google-cloud-sdk/./lib/googlecloudsdk/calliope/cli.py", line 538, in Execute
      result = args.cmd_func(cli=self, args=args)
    File "/Users/[ME]/Applications/google-cloud-sdk/./lib/googlecloudsdk/calliope/backend.py", line 1124, in Run
      result = command_instance.Run(args)
    File "/Users/[ME]/Applications/google-cloud-sdk/lib/googlecloudsdk/appengine/app_commands/deploy.py", line 119, in Run
      client.DeployModule(module, version, info.parsed, info.file)
    File "/Users/[ME]/Applications/google-cloud-sdk/./lib/googlecloudsdk/appengine/lib/appengine_client.py", line 276, in DeployModule
      return appversion.DoUpload()
    File "/Users/[ME]/Applications/google-cloud-sdk/./lib/googlecloudsdk/appengine/lib/appengine_deployments.py", line 1016, in DoUpload
      missing_files = self.Begin()
    File "/Users/[ME]/Applications/google-cloud-sdk/./lib/googlecloudsdk/appengine/lib/appengine_deployments.py", line 561, in Begin
      payload=config_copy.ToYAML())
    File "/Users/[ME]/Applications/google-cloud-sdk/./lib/googlecloudsdk/appengine/lib/util.py", line 288, in Send
      result = self.rpcserver.Send(url, payload=payload, **kwargs)
    File "/Users/[ME]/Applications/google-cloud-sdk/./lib/googlecloudsdk/appengine/lib/util.py", line 353, in Send
      response = self._server.Send(*args, **kwargs)
    File "/Users/[ME]/Applications/google-cloud-sdk/./lib/googlecloudsdk/appengine/lib/external/tools/appengine_rpc_httplib2.py", line 269, in Send
      'Unexpected HTTP status %s' % status)
    File "/Users/[ME]/Applications/google-cloud-sdk/./lib/googlecloudsdk/appengine/lib/external/tools/appengine_rpc_httplib2.py", line 67, in RaiseHttpError
      raise urllib2.HTTPError(url, response_info.status, msg, response_info, stream)
  RPCError: Server responded with code [400]:
    Bad Request Unexpected HTTP status 400
  ERROR: (gcloud.preview.app.deploy) Server responded with code [400]:
    Bad Request Unexpected HTTP status 400
  </code></pre>