Skip to content

Commit

Permalink
Change OSB Config directory from ~/.benchmark to ~/.osb (#732)
Browse files Browse the repository at this point in the history
Signed-off-by: Michael Oviedo <[email protected]>
  • Loading branch information
OVI3D0 authored Jan 21, 2025
1 parent 4d96c35 commit ec150c0
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 4 deletions.
4 changes: 2 additions & 2 deletions it/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@

import pytest

from osbenchmark import client, config, version
from osbenchmark import client, config, version, paths
from osbenchmark.utils import process

CONFIG_NAMES = ["in-memory-it", "os-it"]
Expand Down Expand Up @@ -150,7 +150,7 @@ def check_prerequisites():
class ConfigFile:
def __init__(self, config_name):
self.user_home = os.getenv("BENCHMARK_HOME", os.path.expanduser("~"))
self.benchmark_home = os.path.join(self.user_home, ".benchmark")
self.benchmark_home = paths.benchmark_confdir()
if config_name is not None:
self.config_file_name = f"benchmark-{config_name}.ini"
else:
Expand Down
23 changes: 21 additions & 2 deletions osbenchmark/paths.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,31 @@
# specific language governing permissions and limitations
# under the License.
import os

from osbenchmark.utils.io import ensure_dir, ensure_symlink
from osbenchmark.utils import console

def benchmark_confdir():
default_home = os.path.expanduser("~")
return os.path.join(os.getenv("BENCHMARK_HOME", default_home), ".benchmark")
old_path = os.path.join(default_home, ".benchmark")
new_path = os.path.join(default_home, ".osb")

try:
# Ensure .benchmark directory exists
ensure_dir(old_path)

# Ensure symlink from .osb to .benchmark
ensure_symlink(old_path, new_path)

benchmark_confdir_path = os.path.join(os.getenv("BENCHMARK_HOME", default_home), ".osb")

return benchmark_confdir_path

except FileNotFoundError as e:
console.print("Error in benchmark_confdir: ", str(e))
raise
# fallback exception
except Exception as e:
console.print("Unexpected error in benchmark_confdir: ", str(e))

def benchmark_root():
return os.path.dirname(os.path.realpath(__file__))
Expand Down
28 changes: 28 additions & 0 deletions osbenchmark/utils/io.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,34 @@ def ensure_dir(directory, mode=0o777):
if directory:
os.makedirs(directory, mode, exist_ok=True)

def ensure_symlink(source, link_name):
"""
Ensure that a symlink exists from link_name to source.
If link_name already exists, it will be updated or replaced as necessary.
:param source: The target of the symlink
:param link_name: The path where the symlink should be created
"""
logger = logging.getLogger(__name__)
if os.path.exists(link_name):
if os.path.islink(link_name):
if os.readlink(link_name) != source:
os.remove(link_name)
os.symlink(source, link_name)
logger.info("Updated symlink: %s -> %s", link_name, source)
else:
logger.info("Symlink already correct: %s -> %s", link_name, source)
elif os.path.isdir(link_name):
shutil.rmtree(link_name)
os.symlink(source, link_name)
logger.info("Replaced directory with symlink: %s -> %s", link_name, source)
else:
os.remove(link_name)
os.symlink(source, link_name)
logger.info("Replaced file with symlink: %s -> %s", link_name, source)
else:
os.symlink(source, link_name)
logger.info("Created symlink: %s -> %s", link_name, source)

def _zipdir(source_directory, archive):
for root, _, files in os.walk(source_directory):
Expand Down

0 comments on commit ec150c0

Please sign in to comment.