Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix detection of whether app is running in cloud (#16045)
Browse files Browse the repository at this point in the history
awaelchli committed Dec 19, 2022

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent f0b462e commit febf03b
Showing 4 changed files with 23 additions and 10 deletions.
3 changes: 2 additions & 1 deletion src/lightning_app/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -21,7 +21,8 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).

### Changed

-

- The utility `lightning.app.utilities.cloud.is_running_in_cloud` now returns `True` during loading of the app locally when running with `--cloud` ([#16045](https://github.com/Lightning-AI/lightning/pull/16045))


### Deprecated
7 changes: 7 additions & 0 deletions src/lightning_app/runners/cloud.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import fnmatch
import json
import os
import random
import re
import string
@@ -589,6 +590,10 @@ def _project_has_sufficient_credits(self, project: V1Membership, app: Optional[L
@classmethod
def load_app_from_file(cls, filepath: str) -> "LightningApp":
"""Load a LightningApp from a file, mocking the imports."""

# Pretend we are running in the cloud when loading the app locally
os.environ["LAI_RUNNING_IN_CLOUD"] = "1"

try:
app = load_app_from_file(filepath, raise_exception=True, mock_imports=True)
except FileNotFoundError as e:
@@ -599,6 +604,8 @@ def load_app_from_file(cls, filepath: str) -> "LightningApp":
# Create a generic app.
logger.info("Could not load the app locally. Starting the app directly on the cloud.")
app = LightningApp(EmptyFlow())
finally:
del os.environ["LAI_RUNNING_IN_CLOUD"]
return app

@staticmethod
2 changes: 1 addition & 1 deletion src/lightning_app/utilities/cloud.py
Original file line number Diff line number Diff line change
@@ -39,4 +39,4 @@ def _sigterm_flow_handler(*_, app: "lightning_app.LightningApp"):

def is_running_in_cloud() -> bool:
"""Returns True if the Lightning App is running in the cloud."""
return "LIGHTNING_APP_STATE_URL" in os.environ
return bool(int(os.environ.get("LAI_RUNNING_IN_CLOUD", "0"))) or "LIGHTNING_APP_STATE_URL" in os.environ
21 changes: 13 additions & 8 deletions tests/tests_app/utilities/test_cloud.py
Original file line number Diff line number Diff line change
@@ -4,13 +4,18 @@
from lightning_app.utilities.cloud import is_running_in_cloud


@mock.patch.dict(os.environ, clear=True)
def test_is_running_locally():
"""We can determine if Lightning is running locally."""
assert not is_running_in_cloud()


@mock.patch.dict(os.environ, {"LIGHTNING_APP_STATE_URL": "127.0.0.1"})
def test_is_running_cloud():
"""We can determine if Lightning is running in the cloud."""
assert is_running_in_cloud()
with mock.patch.dict(os.environ, {}, clear=True):
assert not is_running_in_cloud()

with mock.patch.dict(os.environ, {"LAI_RUNNING_IN_CLOUD": "0"}, clear=True):
assert not is_running_in_cloud()

# in the cloud, LIGHTNING_APP_STATE_URL is defined
with mock.patch.dict(os.environ, {"LIGHTNING_APP_STATE_URL": "defined"}, clear=True):
assert is_running_in_cloud()

# LAI_RUNNING_IN_CLOUD is used to fake the value of `is_running_in_cloud` when loading the app for --cloud
with mock.patch.dict(os.environ, {"LAI_RUNNING_IN_CLOUD": "1"}):
assert is_running_in_cloud()

0 comments on commit febf03b

Please sign in to comment.