forked from ungleich-public/cdist
add support for the banner :-)
Signed-off-by: Nico Schottelius <nico@kr.ethz.ch>
This commit is contained in:
parent
f31f33418f
commit
ab0cd9430f
2 changed files with 56 additions and 35 deletions
61
bin/cdist
61
bin/cdist
|
@ -28,6 +28,21 @@ import shutil
|
||||||
import sys
|
import sys
|
||||||
import tempfile
|
import tempfile
|
||||||
|
|
||||||
|
BANNER = """
|
||||||
|
.. . .x+=:. s
|
||||||
|
dF @88> z` ^% :8
|
||||||
|
'88bu. %8P . <k .88
|
||||||
|
. '*88888bu . .@8Ned8" :888ooo
|
||||||
|
.udR88N ^"*8888N .@88u .@^%8888" -*8888888
|
||||||
|
<888'888k beWE "888L ''888E` x88: `)8b. 8888
|
||||||
|
9888 'Y" 888E 888E 888E 8888N=*8888 8888
|
||||||
|
9888 888E 888E 888E %8" R88 8888
|
||||||
|
9888 888E 888F 888E @8Wou 9% .8888Lu=
|
||||||
|
?8888u../ .888N..888 888& .888888P` ^%888*
|
||||||
|
"8888P' `"888*"" R888" ` ^"F 'Y"
|
||||||
|
"P' "" ""
|
||||||
|
"""
|
||||||
|
|
||||||
# Given paths from installation
|
# Given paths from installation
|
||||||
BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
|
BASE_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
|
||||||
CONF_DIR = os.path.join(BASE_DIR, "conf")
|
CONF_DIR = os.path.join(BASE_DIR, "conf")
|
||||||
|
@ -72,6 +87,12 @@ log = logging.getLogger()
|
||||||
def list_types():
|
def list_types():
|
||||||
return os.listdir(TYPE_DIR)
|
return os.listdir(TYPE_DIR)
|
||||||
|
|
||||||
|
def banner():
|
||||||
|
"""Guess what :-)"""
|
||||||
|
print(BANNER)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Cdist:
|
class Cdist:
|
||||||
"""Cdist main class to hold arbitrary data"""
|
"""Cdist main class to hold arbitrary data"""
|
||||||
|
|
||||||
|
@ -166,6 +187,10 @@ class Cdist:
|
||||||
"""Return list of available explorers"""
|
"""Return list of available explorers"""
|
||||||
return os.listdir(GLOBAL_EXPLORER_DIR)
|
return os.listdir(GLOBAL_EXPLORER_DIR)
|
||||||
|
|
||||||
|
def list_type_explorers(self, type):
|
||||||
|
"""Return list of available explorers for a specific type"""
|
||||||
|
return os.listdir(type_explorer_dir(type))
|
||||||
|
|
||||||
def list_object_paths(self, starting_point = False):
|
def list_object_paths(self, starting_point = False):
|
||||||
"""Return list of paths of existing objects"""
|
"""Return list of paths of existing objects"""
|
||||||
object_paths = []
|
object_paths = []
|
||||||
|
@ -199,27 +224,35 @@ class Cdist:
|
||||||
object_paths = self.list_object_paths(starting_point)
|
object_paths = self.list_object_paths(starting_point)
|
||||||
objects = []
|
objects = []
|
||||||
log.debug("Paths recieved: %s", object_paths)
|
log.debug("Paths recieved: %s", object_paths)
|
||||||
log.debug("And te starting point: %s", starting_point)
|
|
||||||
|
|
||||||
for path in object_paths:
|
for path in object_paths:
|
||||||
objects.append(os.path.relpath(path, starting_point))
|
objects.append(os.path.relpath(path, starting_point))
|
||||||
|
|
||||||
return objects
|
return objects
|
||||||
|
|
||||||
|
def type_explorer_dir(self, type):
|
||||||
|
"""Return directory that holds the explorers of a type"""
|
||||||
|
return os.path.join(TYPE_DIR, type, "explorer")
|
||||||
|
|
||||||
|
def remote_type_explorer_dir(type):
|
||||||
|
"""Return remote directory that holds the explorers of a type"""
|
||||||
|
return os.path.join(REMOTE_TYPE_DIR, type, "explorer")
|
||||||
|
|
||||||
def transfer_global_explorers(self):
|
def transfer_global_explorers(self):
|
||||||
self.transfer_dir(GLOBAL_EXPLORER_DIR, REMOTE_GLOBAL_EXPLORER_DIR)
|
self.transfer_dir(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"""
|
||||||
if type in self.type_explorers_transferred:
|
if type in self.type_explorers_transferred:
|
||||||
|
log.debug("Skipping retransfer for %s", type)
|
||||||
return
|
return
|
||||||
|
|
||||||
src = os.path.join(TYPE_DIR, type)
|
src = self.type_explorer_dir(type)
|
||||||
base = os.path.join(REMOTE_TYPE_DIR, type)
|
remote_base = os.path.join(REMOTE_TYPE_DIR, type)
|
||||||
dst = os.path.join(base, "explorer")
|
dst = self.type_explorer_dir(type)
|
||||||
|
|
||||||
# Ensure the path path exists
|
# Ensure the path path exists
|
||||||
self.remote_run_or_fail(["mkdir", "-p", base])
|
self.remote_run_or_fail(["mkdir", "-p", remote_base])
|
||||||
self.transfer_dir(src, dst)
|
self.transfer_dir(src, dst)
|
||||||
|
|
||||||
# Do not retransfer
|
# Do not retransfer
|
||||||
|
@ -258,6 +291,17 @@ class Cdist:
|
||||||
type = self.get_type_from_object(cdist_object)
|
type = self.get_type_from_object(cdist_object)
|
||||||
self.transfer_type_explorers(type)
|
self.transfer_type_explorers(type)
|
||||||
|
|
||||||
|
cmd = []
|
||||||
|
cmd.append("__explorer=" + REMOTE_GLOBAL_EXPLORER_DIR)
|
||||||
|
cmd.append("__type_explorer=" + remote_type_explorer_dir(type))
|
||||||
|
|
||||||
|
explorers = list_type_explorers(type)
|
||||||
|
for explorer in explorers:
|
||||||
|
remote_cmd = cmd
|
||||||
|
remote_cmd.append(os.path.join(remote_type_explorer_dir(type), explorer))
|
||||||
|
|
||||||
|
self.remote_run_or_fail(remote_cmd)
|
||||||
|
|
||||||
def init_deploy(self):
|
def init_deploy(self):
|
||||||
log.info("Creating clean directory structure")
|
log.info("Creating clean directory structure")
|
||||||
|
|
||||||
|
@ -306,6 +350,9 @@ class Cdist:
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
parser = argparse.ArgumentParser(description='cdist ' + VERSION)
|
parser = argparse.ArgumentParser(description='cdist ' + VERSION)
|
||||||
parser.add_argument('host', nargs='+', help='one or more hosts to operate on')
|
parser.add_argument('host', nargs='+', help='one or more hosts to operate on')
|
||||||
|
parser.add_argument('-b', '--banner',
|
||||||
|
help='Show cdist banner',
|
||||||
|
action='store_true', dest='banner')
|
||||||
parser.add_argument('-d', '--debug', help='set log level to debug',
|
parser.add_argument('-d', '--debug', help='set log level to debug',
|
||||||
action='store_true')
|
action='store_true')
|
||||||
parser.add_argument('-i', '--initial-manifest',
|
parser.add_argument('-i', '--initial-manifest',
|
||||||
|
@ -321,6 +368,10 @@ if __name__ == "__main__":
|
||||||
args = parser.parse_args(sys.argv[1:])
|
args = parser.parse_args(sys.argv[1:])
|
||||||
if args.debug:
|
if args.debug:
|
||||||
logging.root.setLevel(logging.DEBUG)
|
logging.root.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
if args.banner:
|
||||||
|
banner()
|
||||||
|
sys.exit(0)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
log.debug(args)
|
log.debug(args)
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
#!/bin/sh
|
|
||||||
#
|
|
||||||
# 2011 Nico Schottelius (nico-cdist at schottelius.org)
|
|
||||||
#
|
|
||||||
# This file is part of cdist.
|
|
||||||
#
|
|
||||||
# cdist is free software: you can redistribute it and/or modify
|
|
||||||
# it under the terms of the GNU General Public License as published by
|
|
||||||
# the Free Software Foundation, either version 3 of the License, or
|
|
||||||
# (at your option) any later version.
|
|
||||||
#
|
|
||||||
# cdist is distributed in the hope that it will be useful,
|
|
||||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
# GNU General Public License for more details.
|
|
||||||
#
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with cdist. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
#
|
|
||||||
#
|
|
||||||
# Check whether file exists or not
|
|
||||||
#
|
|
||||||
|
|
||||||
destination="/$__object_id"
|
|
||||||
|
|
||||||
if [ -e "$destination" ]; then
|
|
||||||
echo yes
|
|
||||||
else
|
|
||||||
echo no
|
|
||||||
fi
|
|
Loading…
Reference in a new issue