prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  `deis run` generates ugly error if app code not yet pushed
  I ran `deis run ls -la` after I had created the app, but before I had pushed the code with `git push deis master`. Here is the error I received:
  
  ```
  ben$ example-python-flask > deis run ls -la
  Warning: non-zero return code 255
  lxc-start: No such file or directory - failed to mount '/opt/deis/runtime/slugs/hushed-sailfish-1/app' on '/usr/lib/lxc/root///app'
  lxc-start: failed to setup the mount entries for '5f4f4d932501338fa2062d52e5893dfbd3933fa09102c67493a169a2a87ee479'
  lxc-start: failed to setup the container
  lxc-start: invalid sequence number 1. expected 2
  lxc-start: failed to spawn '5f4f4d932501338fa2062d52e5893dfbd3933fa09102c67493a169a2a87ee479'
  lxc-start: Device or resource busy - failed to remove cgroup '/sys/fs/cgroup/cpuset//lxc/5f4f4d932501338fa2062d52e5893dfbd3933fa09102c67493a169a2a87ee479'
  ```
  
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `api/tasks.py`
  Content:
  ```
  1 
  2 from __future__ import unicode_literals
  3 import importlib
  4 
  5 from celery import task
  6 from celery.canvas import group
  7 
  8 from deis import settings
  9 from provider import import_provider_module
  10 
  11 # import user-defined config management module
  12 CM = importlib.import_module(settings.CM_MODULE)
  13 
  14 
  15 @task
  16 def build_layer(layer):
  17     provider = import_provider_module(layer.flavor.provider.type)
  18     provider.build_layer(layer.flat())
  19 
  20 
  21 @task
  22 def destroy_layer(layer):
  23     provider = import_provider_module(layer.flavor.provider.type)
  24     provider.destroy_layer(layer.flat())
  25     layer.delete()
  26 
  27 
  28 @task
  29 def build_node(node):
  30     provider = import_provider_module(node.layer.flavor.provider.type)
  31     provider_id, fqdn, metadata = provider.build_node(node.flat())
  32     node.provider_id = provider_id
  33     node.fqdn = fqdn
  34     node.metadata = metadata
  35     node.save()
  36     CM.bootstrap_node(node.flat())
  37 
  38 
  39 @task
  40 def destroy_node(node):
  41     provider = import_provider_module(node.layer.flavor.provider.type)
  42     provider.destroy_node(node.flat())
  43     CM.purge_node(node.flat())
  44     node.delete()
  45 
  46 
  47 @task
  48 def converge_node(node):
  49     output, rc = CM.converge_node(node.flat())
  50     return output, rc
  51 
  52 
  53 @task
  54 def run_node(node, command):
  55     output, rc = CM.run_node(node.flat(), command)
  56     return output, rc
  57 
  58 
  59 @task
  60 def build_formation(formation):
  61     return
  62 
  63 
  64 @task
  65 def destroy_formation(formation):
  66     app_tasks = [destroy_app.si(a) for a in formation.app_set.all()]
  67     node_tasks = [destroy_node.si(n) for n in formation.node_set.all()]
  68     layer_tasks = [destroy_layer.si(l) for l in formation.layer_set.all()]
  69     group(app_tasks + node_tasks).apply_async().join()
  70     group(layer_tasks).apply_async().join()
  71     CM.purge_formation(formation.flat())
  72     formation.delete()
  73 
  74 
  75 @task
  76 def converge_formation(formation):
  77     nodes = formation.node_set.all()
  78     subtasks = []
  79     for n in nodes:
  80         subtask = converge_node.si(n)
  81         subtasks.append(subtask)
  82     group(*subtasks).apply_async().join()
  83 
  84 
  85 @task
  86 def build_app(app):
  87     return
  88 
  89 
  90 @task
  91 def destroy_app(app):
  92     CM.purge_app(app.flat())
  93     app.delete()
  94     app.formation.publish()
  95 
  96 
  97 @task
  98 def converge_controller():
  99     CM.converge_controller()
  100     return None
  101
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/api/tasks.py b/api/tasks.py
  --- a/api/tasks.py
  +++ b/api/tasks.py
  @@ -53,6 +53,8 @@
   @task
   def run_node(node, command):
       output, rc = CM.run_node(node.flat(), command)
  +    if rc != 0 and 'failed to setup the container' in output:
  +        output = '\033[35mPlease run `git push deis master` first.\033[0m\n' + output
       return output, rc
  
verification_info: {"golden_diff": "diff --git a/api/tasks.py b/api/tasks.py\n--- a/api/tasks.py\n+++ b/api/tasks.py\n@@ -53,6 +53,8 @@\n @task\n def run_node(node, command):\n     output, rc = CM.run_node(node.flat(), command)\n+    if rc != 0 and 'failed to setup the container' in output:\n+        output = '\\033[35mPlease run `git push deis master` first.\\033[0m\\n' + output\n     return output, rc\n", "issue": "`deis run` generates ugly error if app code not yet pushed\nI ran `deis run ls -la` after I had created the app, but before I had pushed the code with `git push deis master`. Here is the error I received:\n\n```\nben$ example-python-flask > deis run ls -la\nWarning: non-zero return code 255\nlxc-start: No such file or directory - failed to mount '/opt/deis/runtime/slugs/hushed-sailfish-1/app' on '/usr/lib/lxc/root///app'\nlxc-start: failed to setup the mount entries for '5f4f4d932501338fa2062d52e5893dfbd3933fa09102c67493a169a2a87ee479'\nlxc-start: failed to setup the container\nlxc-start: invalid sequence number 1. expected 2\nlxc-start: failed to spawn '5f4f4d932501338fa2062d52e5893dfbd3933fa09102c67493a169a2a87ee479'\nlxc-start: Device or resource busy - failed to remove cgroup '/sys/fs/cgroup/cpuset//lxc/5f4f4d932501338fa2062d52e5893dfbd3933fa09102c67493a169a2a87ee479'\n```\n\n", "before_files": [{"content": "\nfrom __future__ import unicode_literals\nimport importlib\n\nfrom celery import task\nfrom celery.canvas import group\n\nfrom deis import settings\nfrom provider import import_provider_module\n\n# import user-defined config management module\nCM = importlib.import_module(settings.CM_MODULE)\n\n\n@task\ndef build_layer(layer):\n    provider = import_provider_module(layer.flavor.provider.type)\n    provider.build_layer(layer.flat())\n\n\n@task\ndef destroy_layer(layer):\n    provider = import_provider_module(layer.flavor.provider.type)\n    provider.destroy_layer(layer.flat())\n    layer.delete()\n\n\n@task\ndef build_node(node):\n    provider = import_provider_module(node.layer.flavor.provider.type)\n    provider_id, fqdn, metadata = provider.build_node(node.flat())\n    node.provider_id = provider_id\n    node.fqdn = fqdn\n    node.metadata = metadata\n    node.save()\n    CM.bootstrap_node(node.flat())\n\n\n@task\ndef destroy_node(node):\n    provider = import_provider_module(node.layer.flavor.provider.type)\n    provider.destroy_node(node.flat())\n    CM.purge_node(node.flat())\n    node.delete()\n\n\n@task\ndef converge_node(node):\n    output, rc = CM.converge_node(node.flat())\n    return output, rc\n\n\n@task\ndef run_node(node, command):\n    output, rc = CM.run_node(node.flat(), command)\n    return output, rc\n\n\n@task\ndef build_formation(formation):\n    return\n\n\n@task\ndef destroy_formation(formation):\n    app_tasks = [destroy_app.si(a) for a in formation.app_set.all()]\n    node_tasks = [destroy_node.si(n) for n in formation.node_set.all()]\n    layer_tasks = [destroy_layer.si(l) for l in formation.layer_set.all()]\n    group(app_tasks + node_tasks).apply_async().join()\n    group(layer_tasks).apply_async().join()\n    CM.purge_formation(formation.flat())\n    formation.delete()\n\n\n@task\ndef converge_formation(formation):\n    nodes = formation.node_set.all()\n    subtasks = []\n    for n in nodes:\n        subtask = converge_node.si(n)\n        subtasks.append(subtask)\n    group(*subtasks).apply_async().join()\n\n\n@task\ndef build_app(app):\n    return\n\n\n@task\ndef destroy_app(app):\n    CM.purge_app(app.flat())\n    app.delete()\n    app.formation.publish()\n\n\n@task\ndef converge_controller():\n    CM.converge_controller()\n    return None\n", "path": "api/tasks.py"}], "after_files": [{"content": "\nfrom __future__ import unicode_literals\nimport importlib\n\nfrom celery import task\nfrom celery.canvas import group\n\nfrom deis import settings\nfrom provider import import_provider_module\n\n# import user-defined config management module\nCM = importlib.import_module(settings.CM_MODULE)\n\n\n@task\ndef build_layer(layer):\n    provider = import_provider_module(layer.flavor.provider.type)\n    provider.build_layer(layer.flat())\n\n\n@task\ndef destroy_layer(layer):\n    provider = import_provider_module(layer.flavor.provider.type)\n    provider.destroy_layer(layer.flat())\n    layer.delete()\n\n\n@task\ndef build_node(node):\n    provider = import_provider_module(node.layer.flavor.provider.type)\n    provider_id, fqdn, metadata = provider.build_node(node.flat())\n    node.provider_id = provider_id\n    node.fqdn = fqdn\n    node.metadata = metadata\n    node.save()\n    CM.bootstrap_node(node.flat())\n\n\n@task\ndef destroy_node(node):\n    provider = import_provider_module(node.layer.flavor.provider.type)\n    provider.destroy_node(node.flat())\n    CM.purge_node(node.flat())\n    node.delete()\n\n\n@task\ndef converge_node(node):\n    output, rc = CM.converge_node(node.flat())\n    return output, rc\n\n\n@task\ndef run_node(node, command):\n    output, rc = CM.run_node(node.flat(), command)\n    if rc != 0 and 'failed to setup the container' in output:\n        output = '\\033[35mPlease run `git push deis master` first.\\033[0m\\n' + output\n    return output, rc\n\n\n@task\ndef build_formation(formation):\n    return\n\n\n@task\ndef destroy_formation(formation):\n    app_tasks = [destroy_app.si(a) for a in formation.app_set.all()]\n    node_tasks = [destroy_node.si(n) for n in formation.node_set.all()]\n    layer_tasks = [destroy_layer.si(l) for l in formation.layer_set.all()]\n    group(app_tasks + node_tasks).apply_async().join()\n    group(layer_tasks).apply_async().join()\n    CM.purge_formation(formation.flat())\n    formation.delete()\n\n\n@task\ndef converge_formation(formation):\n    nodes = formation.node_set.all()\n    subtasks = []\n    for n in nodes:\n        subtask = converge_node.si(n)\n        subtasks.append(subtask)\n    group(*subtasks).apply_async().join()\n\n\n@task\ndef build_app(app):\n    return\n\n\n@task\ndef destroy_app(app):\n    CM.purge_app(app.flat())\n    app.delete()\n    app.formation.publish()\n\n\n@task\ndef converge_controller():\n    CM.converge_controller()\n    return None\n", "path": "api/tasks.py"}]}