Yuvipanda has submitted this change and it was merged.

Change subject: Vastly simplify Shingen
......................................................................


Vastly simplify Shingen

- hostgroups don't need to be explicitly declared, apparently :)
  Are implicitly picked up if they exist in a host definition.
- Collaps shingen script into one file. Originally shingen was
  supposed to be much more featurefull, similar to naggen2. However,
  that is no longer the case - it simply generates hosts definitions
  with appropriate hostgroups. So simplify architecture to fit
  purpose

Change-Id: Ied6ac68384c26443c067851517b65ef72f83cbde
---
M scripts/shingen
M setup.py
D shingen/generators/__init__.py
D shingen/generators/generator.py
D shingen/generators/hostgroups.py
D shingen/generators/hosts.py
D shingen/generators/run.py
7 files changed, 27 insertions(+), 79 deletions(-)

Approvals:
  Yuvipanda: Verified; Looks good to me, approved



diff --git a/scripts/shingen b/scripts/shingen
index 032d055..9538110 100755
--- a/scripts/shingen
+++ b/scripts/shingen
@@ -1,17 +1,30 @@
 #!/usr/bin/python3
 import os
 import yaml
-from shingen.generators.generator import GeneratorRunner
-from shingen.generators.hostgroups import generate_hostgroups_config
-from shingen.generators.hosts import generate_host_config
 
-default_config = {
-    'projects': ['tools'],
-    'base_path': '.'
-}
-if os.path.exists('/etc/shinkengen.yaml'):
-    config = yaml.load(open('/etc/shinkengen.yaml'))
-else:
-    config = default_config
-gr = GeneratorRunner(config, generate_host_config, generate_hostgroups_config)
-gr.generate()
+from shingen.ldapsource import LDAPSource
+from shingen.shinkenconfig import ConfigObject
+
+config = yaml.load(open('/etc/shinkengen.yaml'))
+
+ldapsource = LDAPSource(config['ldap']['server'],
+                        config['ldap']['bindas'],
+                        config['ldap']['password'])
+
+for project in config['projects']:
+    instances = ldapsource.get_hostsinfo(project)
+    host_configs = []
+    for instance in instances:
+        co = ConfigObject('host')
+        co.properties['use'] = 'generic-host'
+        co.properties['host_name'] = instance['name']
+        co.properties['address'] = instance['ip']
+        co.properties['hostgroups'] = ','.join([project] + 
instance['puppetClasses'])
+        co.properties['contact_groups'] = project
+        co.properties['notes'] = project  # Used for auto deriving graphite 
path
+        host_configs.append(co)
+    hosts_config_path = '%s/%s.cfg' % (
+        config['base_path'], project
+    )
+    with open(hosts_config_path, 'w') as hostsfile:
+        hostsfile.write('\n'.join([str(co) for co in host_configs]))
diff --git a/setup.py b/setup.py
index f38b2d5..a0950c4 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@
 
 setup(
     name="shinkengen",
-    version='0.2',
+    version='0.3',
     author="Yuvi Panda",
     author_email="yuvipa...@gmail.com",
     description=("A shinken config generator for Wikimedia Labs"),
diff --git a/shingen/generators/__init__.py b/shingen/generators/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/shingen/generators/__init__.py
+++ /dev/null
diff --git a/shingen/generators/generator.py b/shingen/generators/generator.py
deleted file mode 100644
index 3890b3a..0000000
--- a/shingen/generators/generator.py
+++ /dev/null
@@ -1,38 +0,0 @@
-"""
-Generator script that generates hosts and service configuration.
-
-1. Checks config to figure out which projects to monitor
-2. Fetches instance information from ldap
-3. Generates hosts info and hostgroups info for the instances
-"""
-from ..ldapsource import LDAPSource
-
-
-class GeneratorRunner():
-    def __init__(self, config, instances_generator=None, 
hostgroups_generator=None):
-        self.config = config
-        self.instance_generator = instances_generator
-        self.hostgroups_generator = hostgroups_generator
-
-    def generate(self):
-        ldapsource = LDAPSource(self.config['ldap']['server'],
-                                self.config['ldap']['bindas'],
-                                self.config['ldap']['password'])
-        all_host_configs = []
-        for project in self.config['projects']:
-            instances = ldapsource.get_hostsinfo(project)
-            host_configs = []
-            for instance in instances:
-                hostconfig = self.instance_generator(self.config, project, 
instance)
-                host_configs.append(hostconfig)
-            hosts_config_path = '%s/%s.cfg' % (
-                self.config['base_path'], project
-            )
-            with open(hosts_config_path, 'w') as hostsfile:
-                hostsfile.write('\n'.join([str(co) for co in host_configs]))
-            all_host_configs += host_configs
-
-        hostgroup_configs = self.hostgroups_generator(all_host_configs)
-        hostgroups_config_path = '%s/hostgroups.cfg' % self.config['base_path']
-        with open(hostgroups_config_path, 'w') as hostgroupsfile:
-            hostgroupsfile.write('\n'.join([str(co) for co in 
hostgroup_configs]))
diff --git a/shingen/generators/hostgroups.py b/shingen/generators/hostgroups.py
deleted file mode 100644
index 2236f2c..0000000
--- a/shingen/generators/hostgroups.py
+++ /dev/null
@@ -1,15 +0,0 @@
-from ..shinkenconfig import ConfigObject
-
-def generate_hostgroups_config(config_objects):
-    hostgroup_names = set()
-    hostgroups = set()
-
-    for cob in config_objects:
-        hostgroup_names = 
hostgroup_names.union(set(cob.properties.get('hostgroups', '').split(',')))
-
-    for hostgroup_name in hostgroup_names:
-        hostgroup = ConfigObject('hostgroup')
-        hostgroup.properties['hostgroup_name'] = hostgroup_name
-        hostgroup.properties['alias'] = hostgroup_name
-        hostgroups.add(hostgroup)
-    return hostgroups
diff --git a/shingen/generators/hosts.py b/shingen/generators/hosts.py
deleted file mode 100644
index 06dd736..0000000
--- a/shingen/generators/hosts.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from ..shinkenconfig import ConfigObject
-
-def generate_host_config(config, project_name, instance):
-    co = ConfigObject('host')
-    co.properties['use'] = 'generic-host'
-    co.properties['host_name'] = instance['name']
-    co.properties['address'] = instance['ip']
-    hostgroups = [project_name] + instance['puppetClasses']
-    co.properties['hostgroups'] = ','.join(hostgroups)
-    co.properties['contact_groups'] = project_name
-    co.properties['notes'] = project_name  # Used for auto deriving graphite 
path
-    return co
diff --git a/shingen/generators/run.py b/shingen/generators/run.py
deleted file mode 100644
index e69de29..0000000
--- a/shingen/generators/run.py
+++ /dev/null

-- 
To view, visit https://gerrit.wikimedia.org/r/182055
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Ied6ac68384c26443c067851517b65ef72f83cbde
Gerrit-PatchSet: 5
Gerrit-Project: operations/software/shinkengen
Gerrit-Branch: master
Gerrit-Owner: Yuvipanda <yuvipa...@gmail.com>
Gerrit-Reviewer: Yuvipanda <yuvipa...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to