Skip to content

Commit 1ae7b9c

Browse files
authored
Adding on_docker and is_local methods (#1731)
* Adding on_docker check and get_mapdl_envvar * removing get_mapdl_envvar. It will go to another PR. * Adding 'is_local' method. * Adding unit tests * fixing coverage
1 parent 8e711b7 commit 1ae7b9c

File tree

2 files changed

+60
-0
lines changed

2 files changed

+60
-0
lines changed

src/ansys/mapdl/core/mapdl.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,8 @@ def __init__(
194194
self._cached_routine = None
195195
self._geometry = None
196196
self._kylov = None
197+
self._on_docker = None
198+
self._platform = None
197199

198200
# Setting up loggers
199201
self._log = logger.add_instance_logger(
@@ -3867,3 +3869,49 @@ def set(
38673869
)
38683870
else:
38693871
return output
3872+
3873+
def _check_mapdl_os(self):
3874+
platform = self.get_value("active", 0, "platform").strip()
3875+
if "l" in platform.lower():
3876+
self._platform = "linux"
3877+
elif "w" in platform.lower(): # pragma: no cover
3878+
self._platform = "windows"
3879+
else: # pragma: no cover
3880+
raise MapdlRuntimeError("Unknown platform: {}".format(platform))
3881+
3882+
@property
3883+
def platform(self):
3884+
"""Return the platform where MAPDL is running."""
3885+
if self._platform is None:
3886+
self._check_mapdl_os()
3887+
return self._platform
3888+
3889+
def _check_on_docker(self):
3890+
"""Check if MAPDL is running on docker."""
3891+
# self.get_mapdl_envvar("ON_DOCKER") # for later
3892+
3893+
if self.platform == "linux":
3894+
self.sys(
3895+
"if grep -sq 'docker\|lxc' /proc/1/cgroup; then echo 'true' > __outputcmd__.txt; else echo 'false' > __outputcmd__.txt;fi;"
3896+
)
3897+
elif self.platform == "windows": # pragma: no cover
3898+
return False # TODO: check if it is running a windows docker container. So far it is not supported.
3899+
3900+
if self.is_grpc and not self.is_local:
3901+
return self._download_as_raw("__outputcmd__.txt").decode().strip() == "true"
3902+
else: # pragma: no cover
3903+
file_ = os.path.join(self.directory, "__outputcmd__.txt")
3904+
with open(file_, "r") as f:
3905+
return f.read().strip() == "true"
3906+
3907+
@property
3908+
def on_docker(self):
3909+
"""Check if MAPDL is running on docker."""
3910+
if self._on_docker is None:
3911+
self._on_docker = self._check_on_docker()
3912+
return self._on_docker
3913+
3914+
@property
3915+
def is_local(self):
3916+
"""Check if the instance is running locally or remotely."""
3917+
return self._local

tests/test_mapdl.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1668,3 +1668,15 @@ def test_remove_lock_file(mapdl, tmpdir):
16681668

16691669
mapdl._remove_lock_file(tmpdir_)
16701670
assert not os.path.exists(lock_file)
1671+
1672+
1673+
def test_is_local(mapdl):
1674+
assert mapdl.is_local == mapdl._local
1675+
1676+
1677+
def test_on_docker(mapdl):
1678+
assert mapdl.on_docker == mapdl._on_docker
1679+
if os.getenv("PYMAPDL_START_INSTANCE", "false") == "true":
1680+
assert mapdl.on_docker
1681+
else:
1682+
assert not mapdl.on_docker

0 commit comments

Comments
 (0)