mirror of
https://github.com/saltstack/salt.git
synced 2025-04-17 10:10:20 +00:00
Allow salt's paths to be configurable at build time.
This commit is contained in:
parent
10e635c4d2
commit
0288ae6046
2 changed files with 138 additions and 3 deletions
45
salt/syspaths.py
Normal file
45
salt/syspaths.py
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
'''
|
||||||
|
salt.syspaths
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Salt's defaults system paths
|
||||||
|
|
||||||
|
:codeauthor: :email:`Pedro Algarvio (pedro@algarvio.me)`
|
||||||
|
:copyright: © 2013 by the SaltStack Team, see AUTHORS for more details.
|
||||||
|
:license: Apache 2.0, see LICENSE for more details.
|
||||||
|
'''
|
||||||
|
|
||||||
|
# Import python libs
|
||||||
|
import sys
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
try:
|
||||||
|
# Let's try loading the system paths from the generated module at
|
||||||
|
# installation time.
|
||||||
|
from salt._syspaths import (
|
||||||
|
ROOT_DIR,
|
||||||
|
CONFIG_DIR,
|
||||||
|
CACHE_DIR,
|
||||||
|
SOCK_DIR,
|
||||||
|
BASE_FILE_ROOTS_DIR,
|
||||||
|
BASE_PILLAR_ROOTS_DIR,
|
||||||
|
BASE_MASTER_ROOTS_DIR,
|
||||||
|
LOGS_DIR,
|
||||||
|
PIDFILE_DIR,
|
||||||
|
)
|
||||||
|
except ImportError:
|
||||||
|
# The installation time was not generated, let's define the default values
|
||||||
|
if sys.platform.startswith('win'):
|
||||||
|
ROOT_DIR = r'c:\salt' or '/'
|
||||||
|
CONFIG_DIR = os.path.join(ROOT_DIR, 'conf')
|
||||||
|
else:
|
||||||
|
ROOT_DIR = '/'
|
||||||
|
CONFIG_DIR = os.path.join(ROOT_DIR, 'etc', 'salt')
|
||||||
|
CACHE_DIR = os.path.join(ROOT_DIR, 'var', 'cache', 'salt')
|
||||||
|
SOCK_DIR = os.path.join(ROOT_DIR, 'var', 'run', 'salt')
|
||||||
|
BASE_FILE_ROOTS_DIR = os.path.join(ROOT_DIR, 'srv', 'salt')
|
||||||
|
BASE_PILLAR_ROOTS_DIR = os.path.join(ROOT_DIR, 'srv', 'pillar')
|
||||||
|
BASE_MASTER_ROOTS_DIR = os.path.join(ROOT_DIR, 'srv', 'salt-master')
|
||||||
|
LOGS_DIR = os.path.join(ROOT_DIR, 'var', 'logs', 'salt')
|
||||||
|
PIDFILE_DIR = os.path.join(ROOT_DIR, 'var', 'run')
|
96
setup.py
96
setup.py
|
@ -24,6 +24,9 @@ except NameError:
|
||||||
if SETUP_DIRNAME != '':
|
if SETUP_DIRNAME != '':
|
||||||
os.chdir(SETUP_DIRNAME)
|
os.chdir(SETUP_DIRNAME)
|
||||||
|
|
||||||
|
# Store a reference to the executing platform
|
||||||
|
IS_WINDOWS_PLATFORM = sys.platform.startswith('win')
|
||||||
|
|
||||||
# Use setuptools only if the user opts-in by setting the USE_SETUPTOOLS env var
|
# Use setuptools only if the user opts-in by setting the USE_SETUPTOOLS env var
|
||||||
# Or if setuptools was previously imported (which is the case when using
|
# Or if setuptools was previously imported (which is the case when using
|
||||||
# 'distribute')
|
# 'distribute')
|
||||||
|
@ -67,7 +70,12 @@ SALT_REQS = os.path.join(
|
||||||
os.path.abspath(SETUP_DIRNAME), 'requirements.txt'
|
os.path.abspath(SETUP_DIRNAME), 'requirements.txt'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
SALT_SYSPATHS = os.path.join(
|
||||||
|
os.path.abspath(SETUP_DIRNAME), 'salt', 'syspaths.py'
|
||||||
|
)
|
||||||
|
|
||||||
exec(compile(open(SALT_VERSION).read(), SALT_VERSION, 'exec'))
|
exec(compile(open(SALT_VERSION).read(), SALT_VERSION, 'exec'))
|
||||||
|
exec(compile(open(SALT_SYSPATHS).read(), SALT_SYSPATHS, 'exec'))
|
||||||
|
|
||||||
|
|
||||||
class TestCommand(Command):
|
class TestCommand(Command):
|
||||||
|
@ -125,13 +133,31 @@ __version_info__ = {version_info!r}
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
|
||||||
|
install_syspaths_template = '''\
|
||||||
|
# This file was auto-generated by salt's setup on \
|
||||||
|
{date:%A, %d %B %Y @ %H:%m:%S UTC}.
|
||||||
|
|
||||||
|
ROOT_DIR = {root_dir!r}
|
||||||
|
CONFIG_DIR = {config_dir!r}
|
||||||
|
CACHE_DIR = {cache_dir!r}
|
||||||
|
SOCK_DIR = {sock_dir!r}
|
||||||
|
BASE_FILE_ROOTS_DIR = {base_file_roots_dir!r}
|
||||||
|
BASE_PILLAR_ROOTS_DIR = {base_pillar_roots_dir!r}
|
||||||
|
BASE_MASTER_ROOTS_DIR = {base_master_roots_dir!r}
|
||||||
|
LOGS_DIR = {logs_dir!r}
|
||||||
|
PIDFILE_DIR = {pidfile_dir!r}
|
||||||
|
'''
|
||||||
|
|
||||||
|
|
||||||
class Build(build):
|
class Build(build):
|
||||||
def run(self):
|
def run(self):
|
||||||
# Run build.run function
|
# Run build.run function
|
||||||
build.run(self)
|
build.run(self)
|
||||||
# If our install attribute is present and set to True, we'll go ahead
|
|
||||||
# and write our install time _version.py file.
|
|
||||||
if getattr(self.distribution, 'running_salt_install', False):
|
if getattr(self.distribution, 'running_salt_install', False):
|
||||||
|
# If our install attribute is present and set to True, we'll go
|
||||||
|
# ahead and write our install time python modules.
|
||||||
|
|
||||||
|
# Write the version file
|
||||||
version_file_path = os.path.join(
|
version_file_path = os.path.join(
|
||||||
self.build_lib, 'salt', '_version.py'
|
self.build_lib, 'salt', '_version.py'
|
||||||
)
|
)
|
||||||
|
@ -143,8 +169,72 @@ class Build(build):
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Write the system paths file
|
||||||
|
system_paths_file_path = os.path.join(
|
||||||
|
self.build_lib, 'salt', '_syspaths.py'
|
||||||
|
)
|
||||||
|
open(system_paths_file_path, 'w').write(
|
||||||
|
install_syspaths_template.format(
|
||||||
|
date=datetime.utcnow(),
|
||||||
|
root_dir=self.salt_root_dir,
|
||||||
|
config_dir=self.salt_config_dir,
|
||||||
|
cache_dir=self.salt_cache_dir,
|
||||||
|
sock_dir=self.salt_sock_dir,
|
||||||
|
base_file_roots_dir=self.salt_base_file_roots_dir,
|
||||||
|
base_pillar_roots_dir=self.salt_base_pillar_roots_dir,
|
||||||
|
base_master_roots_dir=self.salt_base_master_roots_dir,
|
||||||
|
logs_dir=self.salt_logs_dir,
|
||||||
|
pidfile_dir=self.salt_pidfile_dir,
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class Install(install):
|
class Install(install):
|
||||||
|
user_options = install.user_options + [
|
||||||
|
('salt-root-dir=', None,
|
||||||
|
'Salt\'s pre-configured root directory'),
|
||||||
|
('salt-config-dir=', None,
|
||||||
|
'Salt\'s pre-configured configuration directory'),
|
||||||
|
('salt-cache-dir=', None,
|
||||||
|
'Salt\'s pre-configured cache directory'),
|
||||||
|
('salt-sock-dir=', None,
|
||||||
|
'Salt\'s pre-configured socket directory'),
|
||||||
|
('salt-base-file-roots-dir=', None,
|
||||||
|
'Salt\'s pre-configured file roots directory'),
|
||||||
|
('salt-base-pillar-roots-dir=', None,
|
||||||
|
'Salt\'s pre-configured pillar roots directory'),
|
||||||
|
('salt-base-master-roots-dir=', None,
|
||||||
|
'Salt\'s pre-configured master roots directory'),
|
||||||
|
('salt-logs-dir=', None,
|
||||||
|
'Salt\'s pre-configured logs directory'),
|
||||||
|
('salt-pidfile-dir=', None,
|
||||||
|
'Salt\'s pre-configured pidfiles directory'),
|
||||||
|
]
|
||||||
|
|
||||||
|
def initialize_options(self):
|
||||||
|
install.initialize_options(self)
|
||||||
|
self.salt_root_dir = ROOT_DIR
|
||||||
|
self.salt_config_dir = CONFIG_DIR
|
||||||
|
self.salt_cache_dir = CACHE_DIR
|
||||||
|
self.salt_sock_dir = SOCK_DIR
|
||||||
|
self.salt_base_file_roots_dir = BASE_FILE_ROOTS_DIR
|
||||||
|
self.salt_base_pillar_roots_dir = BASE_PILLAR_ROOTS_DIR
|
||||||
|
self.salt_base_master_roots_dir = BASE_MASTER_ROOTS_DIR
|
||||||
|
self.salt_logs_dir = LOGS_DIR
|
||||||
|
self.salt_pidfile_dir = PIDFILE_DIR
|
||||||
|
|
||||||
|
def finalize_options(self):
|
||||||
|
install.finalize_options(self)
|
||||||
|
for optname in ('root_dir', 'config_dir', 'cache_dir', 'sock_dir',
|
||||||
|
'base_file_roots_dir', 'base_pillar_roots_dir',
|
||||||
|
'base_master_roots_dir', 'logs_dir', 'pidfile_dir'):
|
||||||
|
if not getattr(self, 'salt_{0}'.format(optname)):
|
||||||
|
raise RuntimeError(
|
||||||
|
'The value of --salt-{0} needs a proper path value'.format(
|
||||||
|
optname.replace('_', '-')
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def run(self):
|
def run(self):
|
||||||
# Let's set the running_salt_install attribute so we can add
|
# Let's set the running_salt_install attribute so we can add
|
||||||
# _version.py in the build command
|
# _version.py in the build command
|
||||||
|
@ -248,7 +338,7 @@ FREEZER_INCLUDES = [
|
||||||
'json',
|
'json',
|
||||||
]
|
]
|
||||||
|
|
||||||
if sys.platform.startswith('win'):
|
if IS_WINDOWS_PLATFORM:
|
||||||
FREEZER_INCLUDES.extend([
|
FREEZER_INCLUDES.extend([
|
||||||
'win32api',
|
'win32api',
|
||||||
'win32file',
|
'win32file',
|
||||||
|
|
Loading…
Add table
Reference in a new issue