forked from ungleich-public/cdist
begin to make home configurable
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
parent
1598e18c28
commit
1cc7600c9c
1 changed files with 27 additions and 24 deletions
51
bin/cdist
51
bin/cdist
|
@ -46,13 +46,6 @@ BANNER = """
|
||||||
"""
|
"""
|
||||||
|
|
||||||
# Given paths from installation
|
# Given paths from installation
|
||||||
BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
|
|
||||||
CONF_DIR = os.path.join(BASE_DIR, "conf")
|
|
||||||
GLOBAL_EXPLORER_DIR = os.path.join(CONF_DIR, "explorer")
|
|
||||||
LIB_DIR = os.path.join(BASE_DIR, "lib")
|
|
||||||
MANIFEST_DIR = os.path.join(CONF_DIR, "manifest")
|
|
||||||
TYPE_DIR = os.path.join(CONF_DIR, "type")
|
|
||||||
|
|
||||||
REMOTE_BASE_DIR = "/var/lib/cdist"
|
REMOTE_BASE_DIR = "/var/lib/cdist"
|
||||||
REMOTE_CONF_DIR = os.path.join(REMOTE_BASE_DIR, "conf")
|
REMOTE_CONF_DIR = os.path.join(REMOTE_BASE_DIR, "conf")
|
||||||
REMOTE_OBJECT_DIR = os.path.join(REMOTE_BASE_DIR, "object")
|
REMOTE_OBJECT_DIR = os.path.join(REMOTE_BASE_DIR, "object")
|
||||||
|
@ -87,10 +80,6 @@ VERSION = "2.0.0"
|
||||||
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
|
logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')
|
||||||
log = logging.getLogger()
|
log = logging.getLogger()
|
||||||
|
|
||||||
# List types
|
|
||||||
def list_types():
|
|
||||||
return os.listdir(TYPE_DIR)
|
|
||||||
|
|
||||||
def banner():
|
def banner():
|
||||||
"""Guess what :-)"""
|
"""Guess what :-)"""
|
||||||
print(BANNER)
|
print(BANNER)
|
||||||
|
@ -106,6 +95,17 @@ class Cdist:
|
||||||
# Setup directory paths
|
# Setup directory paths
|
||||||
self.temp_dir = tempfile.mkdtemp()
|
self.temp_dir = tempfile.mkdtemp()
|
||||||
|
|
||||||
|
|
||||||
|
if home:
|
||||||
|
self.base_dir = home
|
||||||
|
else:
|
||||||
|
self.base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
|
||||||
|
self.conf_dir = os.path.join(self.base_dir, "conf")
|
||||||
|
self.global_explorer_dir = os.path.join(self.conf_dir, "explorer")
|
||||||
|
self.lib_dir = os.path.join(self.base_dir, "lib")
|
||||||
|
self.manifest_dir = os.path.join(self.conf_dir, "manifest")
|
||||||
|
self.type_base_dir = os.path.join(self.conf_dir, "type")
|
||||||
|
|
||||||
self.out_dir = os.path.join(self.temp_dir, "out")
|
self.out_dir = os.path.join(self.temp_dir, "out")
|
||||||
os.mkdir(self.out_dir)
|
os.mkdir(self.out_dir)
|
||||||
|
|
||||||
|
@ -131,7 +131,7 @@ class Cdist:
|
||||||
if initial_manifest:
|
if initial_manifest:
|
||||||
self.initial_manifest = initial_manifest
|
self.initial_manifest = initial_manifest
|
||||||
else:
|
else:
|
||||||
self.initial_manifest = os.path.join(MANIFEST_DIR, "init")
|
self.initial_manifest = os.path.join(self.manifest_dir, "init")
|
||||||
|
|
||||||
def cleanup(self):
|
def cleanup(self):
|
||||||
# Do not use in __del__:
|
# Do not use in __del__:
|
||||||
|
@ -231,7 +231,7 @@ class Cdist:
|
||||||
|
|
||||||
def list_global_explorers(self):
|
def list_global_explorers(self):
|
||||||
"""Return list of available explorers"""
|
"""Return list of available explorers"""
|
||||||
return os.listdir(GLOBAL_EXPLORER_DIR)
|
return os.listdir(self.global_explorer_dir)
|
||||||
|
|
||||||
def list_type_explorers(self, type):
|
def list_type_explorers(self, type):
|
||||||
"""Return list of available explorers for a specific type"""
|
"""Return list of available explorers for a specific type"""
|
||||||
|
@ -245,6 +245,9 @@ class Cdist:
|
||||||
|
|
||||||
return list
|
return list
|
||||||
|
|
||||||
|
def list_types(self):
|
||||||
|
return os.listdir(self.type_base_dir)
|
||||||
|
|
||||||
def list_object_paths(self, starting_point):
|
def list_object_paths(self, starting_point):
|
||||||
"""Return list of paths of existing objects"""
|
"""Return list of paths of existing objects"""
|
||||||
object_paths = []
|
object_paths = []
|
||||||
|
@ -303,7 +306,7 @@ class Cdist:
|
||||||
|
|
||||||
def type_dir(self, type):
|
def type_dir(self, type):
|
||||||
"""Return directory the type"""
|
"""Return directory the type"""
|
||||||
return os.path.join(TYPE_DIR, type)
|
return os.path.join(self.type_base_dir, type)
|
||||||
|
|
||||||
def type_explorer_dir(self, type):
|
def type_explorer_dir(self, type):
|
||||||
"""Return directory that holds the explorers of a type"""
|
"""Return directory that holds the explorers of a type"""
|
||||||
|
@ -311,12 +314,12 @@ class Cdist:
|
||||||
|
|
||||||
def type_gencode_paths(self, type):
|
def type_gencode_paths(self, type):
|
||||||
"""Return paths to gencode scripts of type"""
|
"""Return paths to gencode scripts of type"""
|
||||||
return [os.path.join(TYPE_DIR, type, "gencode-local"),
|
return [os.path.join(self.type_base_dir, type, "gencode-local"),
|
||||||
os.path.join(TYPE_DIR, type, "gencode-remote")]
|
os.path.join(self.type_base_dir, type, "gencode-remote")]
|
||||||
|
|
||||||
def type_manifest_path(self, type):
|
def type_manifest_path(self, type):
|
||||||
"""Return path to manifest of type"""
|
"""Return path to manifest of type"""
|
||||||
return os.path.join(TYPE_DIR, type, "manifest")
|
return os.path.join(self.type_base_dir, type, "manifest")
|
||||||
|
|
||||||
def remote_type_explorer_dir(self, type):
|
def remote_type_explorer_dir(self, type):
|
||||||
"""Return remote directory that holds the explorers of a type"""
|
"""Return remote directory that holds the explorers of a type"""
|
||||||
|
@ -343,7 +346,7 @@ class Cdist:
|
||||||
|
|
||||||
def transfer_global_explorers(self):
|
def transfer_global_explorers(self):
|
||||||
"""Transfer the global explorers"""
|
"""Transfer the global explorers"""
|
||||||
self.transfer_dir(GLOBAL_EXPLORER_DIR, REMOTE_GLOBAL_EXPLORER_DIR)
|
self.transfer_dir(self.global_explorer_dir, REMOTE_GLOBAL_EXPLORER_DIR)
|
||||||
|
|
||||||
def transfer_type_explorers(self, type):
|
def transfer_type_explorers(self, type):
|
||||||
"""Transfer explorers of a type, but only once"""
|
"""Transfer explorers of a type, but only once"""
|
||||||
|
@ -367,8 +370,8 @@ class Cdist:
|
||||||
|
|
||||||
def link_type_to_emulator(self):
|
def link_type_to_emulator(self):
|
||||||
"""Link type names to cdist-type-emulator"""
|
"""Link type names to cdist-type-emulator"""
|
||||||
for type in list_types():
|
for type in self.list_types():
|
||||||
source = os.path.join(LIB_DIR, "cdist-type-emulator")
|
source = os.path.join(self.lib_dir, "cdist-type-emulator")
|
||||||
destination = os.path.join(self.bin_dir, type)
|
destination = os.path.join(self.bin_dir, type)
|
||||||
log.debug("Linking %s to %s", source, destination)
|
log.debug("Linking %s to %s", source, destination)
|
||||||
os.symlink(source, destination)
|
os.symlink(source, destination)
|
||||||
|
@ -377,7 +380,7 @@ class Cdist:
|
||||||
"""Run global explorers"""
|
"""Run global explorers"""
|
||||||
explorers = self.list_global_explorers()
|
explorers = self.list_global_explorers()
|
||||||
if(len(explorers) == 0):
|
if(len(explorers) == 0):
|
||||||
self.exit_error("No explorers found in", GLOBAL_EXPLORER_DIR)
|
self.exit_error("No explorers found in", self.global_explorer_dir)
|
||||||
|
|
||||||
self.transfer_global_explorers()
|
self.transfer_global_explorers()
|
||||||
for explorer in explorers:
|
for explorer in explorers:
|
||||||
|
@ -433,7 +436,7 @@ class Cdist:
|
||||||
|
|
||||||
def run_initial_manifest(self):
|
def run_initial_manifest(self):
|
||||||
"""Run the initial manifest"""
|
"""Run the initial manifest"""
|
||||||
env = { "__manifest" : MANIFEST_DIR }
|
env = { "__manifest" : self.manifest_dir }
|
||||||
self.run_manifest(self.initial_manifest, extra_env=env)
|
self.run_manifest(self.initial_manifest, extra_env=env)
|
||||||
|
|
||||||
def run_type_manifest(self, cdist_object):
|
def run_type_manifest(self, cdist_object):
|
||||||
|
@ -461,8 +464,8 @@ class Cdist:
|
||||||
env['__global'] = self.out_dir
|
env['__global'] = self.out_dir
|
||||||
|
|
||||||
# Legacy stuff to make cdist-type-emulator work
|
# Legacy stuff to make cdist-type-emulator work
|
||||||
env['__cdist_conf_dir'] = CONF_DIR
|
env['__cdist_conf_dir'] = self.conf_dir
|
||||||
env['__cdist_core_dir'] = os.path.join(BASE_DIR, "core")
|
env['__cdist_core_dir'] = os.path.join(self.base_dir, "core")
|
||||||
env['__cdist_local_base_dir'] = self.temp_dir
|
env['__cdist_local_base_dir'] = self.temp_dir
|
||||||
env['__cdist_manifest'] = self.initial_manifest
|
env['__cdist_manifest'] = self.initial_manifest
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue