From 3de9b869ac0d66e232af3e50f6801bc33189f615 Mon Sep 17 00:00:00 2001
From: Steven Armstrong <steven@icarus.ethz.ch>
Date: Thu, 29 Aug 2013 21:56:53 +0200
Subject: [PATCH] there is no such thing as cdist install in master

remove all traces of it to prevent the ongoing merge issues when using the real thing

Signed-off-by: Steven Armstrong <steven@icarus.ethz.ch>
---
 cdist/config.py                               | 251 +++++++++++++++-
 cdist/config_install.py                       | 271 ------------------
 cdist/core/cdist_type.py                      |   5 -
 cdist/emulator.py                             |   5 -
 cdist/install.py                              |  33 ---
 cdist/shell.py                                |   3 -
 cdist/test/cdist_type/__init__.py             |  10 -
 .../{config_install => config}/__init__.py    |   2 +-
 .../fixtures/object/__first/.keep             |   0
 .../fixtures/object/__first/man/.cdist/.keep  |   0
 .../fixtures/object/__second/.keep            |   0
 .../object/__second/on-the/.cdist/.keep       |   0
 .../fixtures/object/__third/.keep             |   0
 .../fixtures/object/__third/moon/.cdist/.keep |   0
 .../object/__third/moon/.cdist/parameter/name |   0
 .../__third/moon/.cdist/parameter/planet      |   0
 .../fixtures/type/__first/.keep               |   0
 .../fixtures/type/__second/.keep              |   0
 .../fixtures/type/__singleton_test/singleton  |   0
 .../fixtures/type/__third/.keep               |   0
 scripts/cdist                                 |  38 +--
 21 files changed, 261 insertions(+), 357 deletions(-)
 delete mode 100644 cdist/config_install.py
 delete mode 100644 cdist/install.py
 rename cdist/test/{config_install => config}/__init__.py (99%)
 rename cdist/test/{config_install => config}/fixtures/object/__first/.keep (100%)
 rename cdist/test/{config_install => config}/fixtures/object/__first/man/.cdist/.keep (100%)
 rename cdist/test/{config_install => config}/fixtures/object/__second/.keep (100%)
 rename cdist/test/{config_install => config}/fixtures/object/__second/on-the/.cdist/.keep (100%)
 rename cdist/test/{config_install => config}/fixtures/object/__third/.keep (100%)
 rename cdist/test/{config_install => config}/fixtures/object/__third/moon/.cdist/.keep (100%)
 rename cdist/test/{config_install => config}/fixtures/object/__third/moon/.cdist/parameter/name (100%)
 rename cdist/test/{config_install => config}/fixtures/object/__third/moon/.cdist/parameter/planet (100%)
 rename cdist/test/{config_install => config}/fixtures/type/__first/.keep (100%)
 rename cdist/test/{config_install => config}/fixtures/type/__second/.keep (100%)
 rename cdist/test/{config_install => config}/fixtures/type/__singleton_test/singleton (100%)
 rename cdist/test/{config_install => config}/fixtures/type/__third/.keep (100%)

diff --git a/cdist/config.py b/cdist/config.py
index 2c6c2e6d..019f2cc7 100644
--- a/cdist/config.py
+++ b/cdist/config.py
@@ -20,7 +20,252 @@
 #
 #
 
-import cdist.config_install
+import logging
+import os
+import shutil
+import sys
+import time
+import pprint
 
-class Config(cdist.config_install.ConfigInstall):
-    pass
+import cdist
+
+import cdist.exec.local
+import cdist.exec.remote
+
+from cdist import core
+
+class Config(object):
+    """Cdist main class to hold arbitrary data"""
+
+    def __init__(self, local, remote, dry_run=False):
+
+        self.local      = local
+        self.remote     = remote
+        self.log        = logging.getLogger(self.local.target_host)
+        self.dry_run    = dry_run
+
+        self.explorer = core.Explorer(self.local.target_host, self.local, self.remote)
+        self.manifest = core.Manifest(self.local.target_host, self.local)
+        self.code     = core.Code(self.local.target_host, self.local, self.remote)
+
+    def _init_files_dirs(self):
+        """Prepare files and directories for the run"""
+        self.local.create_files_dirs()
+        self.remote.create_files_dirs()
+
+    @classmethod
+    def commandline(cls, args):
+        """Configure remote system"""
+        import multiprocessing
+
+        # FIXME: Refactor relict - remove later
+        log = logging.getLogger("cdist")
+    
+        initial_manifest_tempfile = None
+        if args.manifest == '-':
+            # read initial manifest from stdin
+            import tempfile
+            try:
+                handle, initial_manifest_temp_path = tempfile.mkstemp(prefix='cdist.stdin.')
+                with os.fdopen(handle, 'w') as fd:
+                    fd.write(sys.stdin.read())
+            except (IOError, OSError) as e:
+                raise cdist.Error("Creating tempfile for stdin data failed: %s" % e)
+    
+            args.manifest = initial_manifest_temp_path
+            import atexit
+            atexit.register(lambda: os.remove(initial_manifest_temp_path))
+    
+        process = {}
+        failed_hosts = []
+        time_start = time.time()
+    
+        for host in args.host:
+            if args.parallel:
+                log.debug("Creating child process for %s", host)
+                process[host] = multiprocessing.Process(target=cls.onehost, args=(host, args, True))
+                process[host].start()
+            else:
+                try:
+                    cls.onehost(host, args, parallel=False)
+                except cdist.Error as e:
+                    failed_hosts.append(host)
+    
+        # Catch errors in parallel mode when joining
+        if args.parallel:
+            for host in process.keys():
+                log.debug("Joining process %s", host)
+                process[host].join()
+    
+                if not process[host].exitcode == 0:
+                    failed_hosts.append(host)
+    
+        time_end = time.time()
+        log.info("Total processing time for %s host(s): %s", len(args.host),
+                    (time_end - time_start))
+    
+        if len(failed_hosts) > 0:
+            raise cdist.Error("Failed to configure the following hosts: " + 
+                " ".join(failed_hosts))
+    
+    @classmethod
+    def onehost(cls, host, args, parallel):
+        """Configure ONE system"""
+
+        log = logging.getLogger(host)
+    
+        try:
+            local = cdist.exec.local.Local(
+                target_host=host,
+                initial_manifest=args.manifest,
+                out_path=args.out_path,
+                add_conf_dirs=args.conf_dir)
+
+            remote = cdist.exec.remote.Remote(
+                target_host=host,
+                remote_exec=args.remote_exec,
+                remote_copy=args.remote_copy)
+    
+            c = cls(local, remote)
+            c.run()
+    
+        except cdist.Error as e:
+            log.error(e)
+            if parallel:
+                # We are running in our own process here, need to sys.exit!
+                sys.exit(1)
+            else:
+                raise
+    
+        except KeyboardInterrupt:
+            # Ignore in parallel mode, we are existing anyway
+            if parallel:
+                sys.exit(0)
+            # Pass back to controlling code in sequential mode
+            else:
+                raise
+
+    def run(self):
+        """Do what is most often done: deploy & cleanup"""
+        start_time = time.time()
+
+        self._init_files_dirs()
+
+        self.explorer.run_global_explorers(self.local.global_explorer_out_path)
+        self.manifest.run_initial_manifest(self.local.initial_manifest)
+        self.iterate_until_finished()
+
+        self.local.save_cache()
+        self.log.info("Finished successful run in %s seconds", time.time() - start_time)
+
+
+    def object_list(self):
+        """Short name for object list retrieval"""
+        for cdist_object in core.CdistObject.list_objects(self.local.object_path,
+                                                         self.local.type_path):
+            yield cdist_object
+
+    def iterate_once(self):
+        """
+            Iterate over the objects once - helper method for 
+            iterate_until_finished
+        """
+        objects_changed  = False
+
+        for cdist_object in self.object_list():
+            if cdist_object.requirements_unfinished(cdist_object.requirements):
+                """We cannot do anything for this poor object"""
+                continue
+        
+            if cdist_object.state == core.CdistObject.STATE_UNDEF:
+                """Prepare the virgin object"""
+        
+                self.object_prepare(cdist_object)
+                objects_changed = True
+        
+            if cdist_object.requirements_unfinished(cdist_object.autorequire):
+                """The previous step created objects we depend on - wait for them"""
+                continue
+        
+            if cdist_object.state == core.CdistObject.STATE_PREPARED:
+                self.object_run(cdist_object)
+                objects_changed = True
+
+        return objects_changed
+
+
+    def iterate_until_finished(self):
+        """
+            Go through all objects and solve them
+            one after another
+        """
+
+        objects_changed = True
+
+        while objects_changed:
+            objects_changed = self.iterate_once()
+
+        # Check whether all objects have been finished
+        unfinished_objects = []
+        for cdist_object in self.object_list():
+            if not cdist_object.state == cdist_object.STATE_DONE:
+                unfinished_objects.append(cdist_object)
+
+        if unfinished_objects:
+            info_string = []
+
+            for cdist_object in unfinished_objects:
+
+                requirement_names = []
+                autorequire_names = []
+
+                for requirement in cdist_object.requirements_unfinished(cdist_object.requirements):
+                    requirement_names.append(requirement.name)
+
+                for requirement in cdist_object.requirements_unfinished(cdist_object.autorequire):
+                    autorequire_names.append(requirement.name)
+
+                requirements = ", ".join(requirement_names)
+                autorequire  = ", ".join(autorequire_names)
+                info_string.append("%s requires: %s autorequires: %s" % (cdist_object.name, requirements, autorequire))
+
+            raise cdist.UnresolvableRequirementsError("The requirements of the following objects could not be resolved: %s" %
+                ("; ".join(info_string)))
+
+    def object_prepare(self, cdist_object):
+        """Prepare object: Run type explorer + manifest"""
+        self.log.info("Running manifest and explorers for " + cdist_object.name)
+        self.explorer.run_type_explorers(cdist_object)
+        self.manifest.run_type_manifest(cdist_object)
+        cdist_object.state = core.CdistObject.STATE_PREPARED
+
+    def object_run(self, cdist_object):
+        """Run gencode and code for an object"""
+
+        self.log.debug("Trying to run object %s" % (cdist_object.name))
+        if cdist_object.state == core.CdistObject.STATE_DONE:
+            raise cdist.Error("Attempting to run an already finished object: %s", cdist_object)
+
+        cdist_type = cdist_object.cdist_type
+
+        # Generate
+        self.log.info("Generating and executing code for %s" % (cdist_object.name))
+        cdist_object.code_local = self.code.run_gencode_local(cdist_object)
+        cdist_object.code_remote = self.code.run_gencode_remote(cdist_object)
+        if cdist_object.code_local or cdist_object.code_remote:
+            cdist_object.changed = True
+
+        # Execute
+        if not self.dry_run:
+            if cdist_object.code_local:
+                self.code.run_code_local(cdist_object)
+            if cdist_object.code_remote:
+                self.code.transfer_code_remote(cdist_object)
+                self.code.run_code_remote(cdist_object)
+        else:
+            self.log.info("Skipping code execution due to DRY RUN")
+
+
+        # Mark this object as done
+        self.log.debug("Finishing run of " + cdist_object.name)
+        cdist_object.state = core.CdistObject.STATE_DONE
diff --git a/cdist/config_install.py b/cdist/config_install.py
deleted file mode 100644
index 2db4c4af..00000000
--- a/cdist/config_install.py
+++ /dev/null
@@ -1,271 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-#
-# 2010-2013 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/>.
-#
-#
-
-import logging
-import os
-import shutil
-import sys
-import time
-import pprint
-
-import cdist
-
-import cdist.exec.local
-import cdist.exec.remote
-
-from cdist import core
-
-class ConfigInstall(object):
-    """Cdist main class to hold arbitrary data"""
-
-    def __init__(self, local, remote, dry_run=False):
-
-        self.local      = local
-        self.remote     = remote
-        self.log        = logging.getLogger(self.local.target_host)
-        self.dry_run    = dry_run
-
-        self.explorer = core.Explorer(self.local.target_host, self.local, self.remote)
-        self.manifest = core.Manifest(self.local.target_host, self.local)
-        self.code     = core.Code(self.local.target_host, self.local, self.remote)
-
-    def _init_files_dirs(self):
-        """Prepare files and directories for the run"""
-        self.local.create_files_dirs()
-        self.remote.create_files_dirs()
-
-    @classmethod
-    def commandline(cls, args):
-        """Configure or install remote system"""
-        import multiprocessing
-
-        # FIXME: Refactor relict - remove later
-        log = logging.getLogger("cdist")
-    
-        initial_manifest_tempfile = None
-        if args.manifest == '-':
-            # read initial manifest from stdin
-            import tempfile
-            try:
-                handle, initial_manifest_temp_path = tempfile.mkstemp(prefix='cdist.stdin.')
-                with os.fdopen(handle, 'w') as fd:
-                    fd.write(sys.stdin.read())
-            except (IOError, OSError) as e:
-                raise cdist.Error("Creating tempfile for stdin data failed: %s" % e)
-    
-            args.manifest = initial_manifest_temp_path
-            import atexit
-            atexit.register(lambda: os.remove(initial_manifest_temp_path))
-    
-        process = {}
-        failed_hosts = []
-        time_start = time.time()
-    
-        for host in args.host:
-            if args.parallel:
-                log.debug("Creating child process for %s", host)
-                process[host] = multiprocessing.Process(target=cls.onehost, args=(host, args, True))
-                process[host].start()
-            else:
-                try:
-                    cls.onehost(host, args, parallel=False)
-                except cdist.Error as e:
-                    failed_hosts.append(host)
-    
-        # Catch errors in parallel mode when joining
-        if args.parallel:
-            for host in process.keys():
-                log.debug("Joining process %s", host)
-                process[host].join()
-    
-                if not process[host].exitcode == 0:
-                    failed_hosts.append(host)
-    
-        time_end = time.time()
-        log.info("Total processing time for %s host(s): %s", len(args.host),
-                    (time_end - time_start))
-    
-        if len(failed_hosts) > 0:
-            raise cdist.Error("Failed to configure the following hosts: " + 
-                " ".join(failed_hosts))
-    
-    @classmethod
-    def onehost(cls, host, args, parallel):
-        """Configure or install ONE system"""
-
-        log = logging.getLogger(host)
-    
-        try:
-            local = cdist.exec.local.Local(
-                target_host=host,
-                initial_manifest=args.manifest,
-                out_path=args.out_path,
-                add_conf_dirs=args.conf_dir)
-
-            remote = cdist.exec.remote.Remote(
-                target_host=host,
-                remote_exec=args.remote_exec,
-                remote_copy=args.remote_copy)
-    
-            c = cls(local, remote)
-            c.run()
-    
-        except cdist.Error as e:
-            log.error(e)
-            if parallel:
-                # We are running in our own process here, need to sys.exit!
-                sys.exit(1)
-            else:
-                raise
-    
-        except KeyboardInterrupt:
-            # Ignore in parallel mode, we are existing anyway
-            if parallel:
-                sys.exit(0)
-            # Pass back to controlling code in sequential mode
-            else:
-                raise
-
-    def run(self):
-        """Do what is most often done: deploy & cleanup"""
-        start_time = time.time()
-
-        self._init_files_dirs()
-
-        self.explorer.run_global_explorers(self.local.global_explorer_out_path)
-        self.manifest.run_initial_manifest(self.local.initial_manifest)
-        self.iterate_until_finished()
-
-        self.local.save_cache()
-        self.log.info("Finished successful run in %s seconds", time.time() - start_time)
-
-
-    def object_list(self):
-        """Short name for object list retrieval"""
-        for cdist_object in core.CdistObject.list_objects(self.local.object_path,
-                                                         self.local.type_path):
-            yield cdist_object
-
-    def iterate_once(self):
-        """
-            Iterate over the objects once - helper method for 
-            iterate_until_finished
-        """
-        objects_changed  = False
-
-        for cdist_object in self.object_list():
-            if cdist_object.requirements_unfinished(cdist_object.requirements):
-                """We cannot do anything for this poor object"""
-                continue
-        
-            if cdist_object.state == core.CdistObject.STATE_UNDEF:
-                """Prepare the virgin object"""
-        
-                self.object_prepare(cdist_object)
-                objects_changed = True
-        
-            if cdist_object.requirements_unfinished(cdist_object.autorequire):
-                """The previous step created objects we depend on - wait for them"""
-                continue
-        
-            if cdist_object.state == core.CdistObject.STATE_PREPARED:
-                self.object_run(cdist_object)
-                objects_changed = True
-
-        return objects_changed
-
-
-    def iterate_until_finished(self):
-        """
-            Go through all objects and solve them
-            one after another
-        """
-
-        objects_changed = True
-
-        while objects_changed:
-            objects_changed = self.iterate_once()
-
-        # Check whether all objects have been finished
-        unfinished_objects = []
-        for cdist_object in self.object_list():
-            if not cdist_object.state == cdist_object.STATE_DONE:
-                unfinished_objects.append(cdist_object)
-
-        if unfinished_objects:
-            info_string = []
-
-            for cdist_object in unfinished_objects:
-
-                requirement_names = []
-                autorequire_names = []
-
-                for requirement in cdist_object.requirements_unfinished(cdist_object.requirements):
-                    requirement_names.append(requirement.name)
-
-                for requirement in cdist_object.requirements_unfinished(cdist_object.autorequire):
-                    autorequire_names.append(requirement.name)
-
-                requirements = ", ".join(requirement_names)
-                autorequire  = ", ".join(autorequire_names)
-                info_string.append("%s requires: %s autorequires: %s" % (cdist_object.name, requirements, autorequire))
-
-            raise cdist.UnresolvableRequirementsError("The requirements of the following objects could not be resolved: %s" %
-                ("; ".join(info_string)))
-
-    def object_prepare(self, cdist_object):
-        """Prepare object: Run type explorer + manifest"""
-        self.log.info("Running manifest and explorers for " + cdist_object.name)
-        self.explorer.run_type_explorers(cdist_object)
-        self.manifest.run_type_manifest(cdist_object)
-        cdist_object.state = core.CdistObject.STATE_PREPARED
-
-    def object_run(self, cdist_object):
-        """Run gencode and code for an object"""
-
-        self.log.debug("Trying to run object %s" % (cdist_object.name))
-        if cdist_object.state == core.CdistObject.STATE_DONE:
-            raise cdist.Error("Attempting to run an already finished object: %s", cdist_object)
-
-        cdist_type = cdist_object.cdist_type
-
-        # Generate
-        self.log.info("Generating and executing code for %s" % (cdist_object.name))
-        cdist_object.code_local = self.code.run_gencode_local(cdist_object)
-        cdist_object.code_remote = self.code.run_gencode_remote(cdist_object)
-        if cdist_object.code_local or cdist_object.code_remote:
-            cdist_object.changed = True
-
-        # Execute
-        if not self.dry_run:
-            if cdist_object.code_local:
-                self.code.run_code_local(cdist_object)
-            if cdist_object.code_remote:
-                self.code.transfer_code_remote(cdist_object)
-                self.code.run_code_remote(cdist_object)
-        else:
-            self.log.info("Skipping code execution due to DRY RUN")
-
-
-        # Mark this object as done
-        self.log.debug("Finishing run of " + cdist_object.name)
-        cdist_object.state = core.CdistObject.STATE_DONE
diff --git a/cdist/core/cdist_type.py b/cdist/core/cdist_type.py
index 0efb10f4..864970a9 100644
--- a/cdist/core/cdist_type.py
+++ b/cdist/core/cdist_type.py
@@ -99,11 +99,6 @@ class CdistType(object):
         """Check whether a type is a singleton."""
         return os.path.isfile(os.path.join(self.absolute_path, "singleton"))
 
-    @property
-    def is_install(self):
-        """Check whether a type is used for installation (if not: for configuration)"""
-        return os.path.isfile(os.path.join(self.absolute_path, "install"))
-
     @property
     def explorers(self):
         """Return a list of available explorers"""
diff --git a/cdist/emulator.py b/cdist/emulator.py
index bbc246a6..5b0ff1f6 100644
--- a/cdist/emulator.py
+++ b/cdist/emulator.py
@@ -78,11 +78,6 @@ class Emulator(object):
     def run(self):
         """Emulate type commands (i.e. __file and co)"""
 
-        if '__install' in self.env:
-            if not self.cdist_type.is_install:
-                self.log.debug("Running in install mode, ignoring non install type")
-                return True
-
         self.commandline()
         self.setup_object()
         self.save_stdin()
diff --git a/cdist/install.py b/cdist/install.py
deleted file mode 100644
index 0f06f5e7..00000000
--- a/cdist/install.py
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env python3
-# -*- coding: utf-8 -*-
-#
-# 2010-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/>.
-#
-#
-
-import os
-import cdist.config_install
-
-class Install(cdist.config_install.ConfigInstall):
-    def __init__(self, *args, **kargs):
-        """Enhance config install with install support"""
-
-        # Setup environ to be used in emulator
-        os.environ['__install'] = "yes"
-
-        super().__init__(*args, **kargs)
diff --git a/cdist/shell.py b/cdist/shell.py
index 4b8edbe8..b88c3ccd 100644
--- a/cdist/shell.py
+++ b/cdist/shell.py
@@ -27,9 +27,6 @@ import subprocess
 import cdist.exec.local
 
 
-# FIXME: only considering config here - enable
-# command line switch for using install object
-# when it is available
 import cdist.config
 
 log = logging.getLogger(__name__)
diff --git a/cdist/test/cdist_type/__init__.py b/cdist/test/cdist_type/__init__.py
index 5e774aa9..e97ce7e6 100644
--- a/cdist/test/cdist_type/__init__.py
+++ b/cdist/test/cdist_type/__init__.py
@@ -106,16 +106,6 @@ class TypeTestCase(test.CdistTestCase):
         cdist_type = core.CdistType(base_path, '__not_singleton')
         self.assertFalse(cdist_type.is_singleton)
 
-    def test_install_is_install(self):
-        base_path = fixtures
-        cdist_type = core.CdistType(base_path, '__install')
-        self.assertTrue(cdist_type.is_install)
-
-    def test_not_install_is_install(self):
-        base_path = fixtures
-        cdist_type = core.CdistType(base_path, '__not_install')
-        self.assertFalse(cdist_type.is_install)
-
     def test_with_explorers(self):
         base_path = fixtures
         cdist_type = core.CdistType(base_path, '__with_explorers')
diff --git a/cdist/test/config_install/__init__.py b/cdist/test/config/__init__.py
similarity index 99%
rename from cdist/test/config_install/__init__.py
rename to cdist/test/config/__init__.py
index a66eaa13..80a45d9b 100644
--- a/cdist/test/config_install/__init__.py
+++ b/cdist/test/config/__init__.py
@@ -38,7 +38,7 @@ object_base_path = op.join(fixtures, 'object')
 type_base_path = op.join(fixtures, 'type')
 add_conf_dir = op.join(fixtures, 'conf')
 
-class ConfigInstallRunTestCase(test.CdistTestCase):
+class ConfigRunTestCase(test.CdistTestCase):
 
     def setUp(self):
 
diff --git a/cdist/test/config_install/fixtures/object/__first/.keep b/cdist/test/config/fixtures/object/__first/.keep
similarity index 100%
rename from cdist/test/config_install/fixtures/object/__first/.keep
rename to cdist/test/config/fixtures/object/__first/.keep
diff --git a/cdist/test/config_install/fixtures/object/__first/man/.cdist/.keep b/cdist/test/config/fixtures/object/__first/man/.cdist/.keep
similarity index 100%
rename from cdist/test/config_install/fixtures/object/__first/man/.cdist/.keep
rename to cdist/test/config/fixtures/object/__first/man/.cdist/.keep
diff --git a/cdist/test/config_install/fixtures/object/__second/.keep b/cdist/test/config/fixtures/object/__second/.keep
similarity index 100%
rename from cdist/test/config_install/fixtures/object/__second/.keep
rename to cdist/test/config/fixtures/object/__second/.keep
diff --git a/cdist/test/config_install/fixtures/object/__second/on-the/.cdist/.keep b/cdist/test/config/fixtures/object/__second/on-the/.cdist/.keep
similarity index 100%
rename from cdist/test/config_install/fixtures/object/__second/on-the/.cdist/.keep
rename to cdist/test/config/fixtures/object/__second/on-the/.cdist/.keep
diff --git a/cdist/test/config_install/fixtures/object/__third/.keep b/cdist/test/config/fixtures/object/__third/.keep
similarity index 100%
rename from cdist/test/config_install/fixtures/object/__third/.keep
rename to cdist/test/config/fixtures/object/__third/.keep
diff --git a/cdist/test/config_install/fixtures/object/__third/moon/.cdist/.keep b/cdist/test/config/fixtures/object/__third/moon/.cdist/.keep
similarity index 100%
rename from cdist/test/config_install/fixtures/object/__third/moon/.cdist/.keep
rename to cdist/test/config/fixtures/object/__third/moon/.cdist/.keep
diff --git a/cdist/test/config_install/fixtures/object/__third/moon/.cdist/parameter/name b/cdist/test/config/fixtures/object/__third/moon/.cdist/parameter/name
similarity index 100%
rename from cdist/test/config_install/fixtures/object/__third/moon/.cdist/parameter/name
rename to cdist/test/config/fixtures/object/__third/moon/.cdist/parameter/name
diff --git a/cdist/test/config_install/fixtures/object/__third/moon/.cdist/parameter/planet b/cdist/test/config/fixtures/object/__third/moon/.cdist/parameter/planet
similarity index 100%
rename from cdist/test/config_install/fixtures/object/__third/moon/.cdist/parameter/planet
rename to cdist/test/config/fixtures/object/__third/moon/.cdist/parameter/planet
diff --git a/cdist/test/config_install/fixtures/type/__first/.keep b/cdist/test/config/fixtures/type/__first/.keep
similarity index 100%
rename from cdist/test/config_install/fixtures/type/__first/.keep
rename to cdist/test/config/fixtures/type/__first/.keep
diff --git a/cdist/test/config_install/fixtures/type/__second/.keep b/cdist/test/config/fixtures/type/__second/.keep
similarity index 100%
rename from cdist/test/config_install/fixtures/type/__second/.keep
rename to cdist/test/config/fixtures/type/__second/.keep
diff --git a/cdist/test/config_install/fixtures/type/__singleton_test/singleton b/cdist/test/config/fixtures/type/__singleton_test/singleton
similarity index 100%
rename from cdist/test/config_install/fixtures/type/__singleton_test/singleton
rename to cdist/test/config/fixtures/type/__singleton_test/singleton
diff --git a/cdist/test/config_install/fixtures/type/__third/.keep b/cdist/test/config/fixtures/type/__third/.keep
similarity index 100%
rename from cdist/test/config_install/fixtures/type/__third/.keep
rename to cdist/test/config/fixtures/type/__third/.keep
diff --git a/scripts/cdist b/scripts/cdist
index d138faba..6f6f13fe 100755
--- a/scripts/cdist
+++ b/scripts/cdist
@@ -26,7 +26,6 @@ def commandline():
 
     import cdist.banner
     import cdist.config
-    # import cdist.install
     import cdist.shell
 
     # Construct parser others can reuse
@@ -53,39 +52,35 @@ def commandline():
         parents=[parser['loglevel']])
     parser['banner'].set_defaults(func=cdist.banner.banner)
 
-    # Config and install (common stuff)
-    parser['configinstall'] = argparse.ArgumentParser(add_help=False)
-    parser['configinstall'].add_argument('host', nargs='+',
+    # Config
+    parser['config'] = parser['sub'].add_parser('config',
+        parents=[parser['loglevel']])
+    parser['config'].add_argument('host', nargs='+',
         help='one or more hosts to operate on')
-    parser['configinstall'].add_argument('-c', '--conf-dir',
+    parser['config'].add_argument('-c', '--conf-dir',
          help='Add configuration directory (can be repeated, last one wins)',
          action='append')
-    parser['configinstall'].add_argument('-i', '--initial-manifest', 
+    parser['config'].add_argument('-i', '--initial-manifest', 
          help='Path to a cdist manifest or \'-\' to read from stdin.',
          dest='manifest', required=False)
-    parser['configinstall'].add_argument('-n', '--dry-run',
+    parser['config'].add_argument('-n', '--dry-run',
          help='Do not execute code', action='store_true')
-    parser['configinstall'].add_argument('-o', '--out-dir',
+    parser['config'].add_argument('-o', '--out-dir',
          help='Directory to save cdist output in', dest="out_path")
-    parser['configinstall'].add_argument('-p', '--parallel',
+    parser['config'].add_argument('-p', '--parallel',
          help='Operate on multiple hosts in parallel',
          action='store_true', dest='parallel')
-    parser['configinstall'].add_argument('-s', '--sequential',
+    parser['config'].add_argument('-s', '--sequential',
          help='Operate on multiple hosts sequentially (default)',
          action='store_false', dest='parallel')
-
-    parser['configinstall'].add_argument('--remote-copy',
+    parser['config'].add_argument('--remote-copy',
          help='Command to use for remote copy (should behave like scp)',
          action='store', dest='remote_copy',
          default=cdist.REMOTE_COPY)
-    parser['configinstall'].add_argument('--remote-exec',
+    parser['config'].add_argument('--remote-exec',
          help='Command to use for remote execution (should behave like ssh)',
          action='store', dest='remote_exec',
          default=cdist.REMOTE_EXEC)
-
-    # Config
-    parser['config'] = parser['sub'].add_parser('config',
-        parents=[parser['loglevel'], parser['configinstall']])
     parser['config'].set_defaults(func=cdist.config.Config.commandline)
 
     # Shell
@@ -96,12 +91,6 @@ def commandline():
     parser['shell'].set_defaults(func=cdist.shell.Shell.commandline)
 
 
-    # Install
-    # 20120525/sar: commented until it actually does something
-    #parser['install'] = parser['sub'].add_parser('install',
-    #    parents=[parser['loglevel'], parser['configinstall']])
-    #parser['install'].set_defaults(func=install)
-
     for p in parser:
         parser[p].epilog = "Get cdist at http://www.nico.schottelius.org/software/cdist/"
 
@@ -133,9 +122,6 @@ def commandline():
 
     args.func(args)
 
-#def install(args):
-#    configinstall(args, mode=cdist.install.Install)
-
 def emulator():
     """Prepare and run emulator"""
     import cdist.emulator