~smoser/cloud-init/lp-1077700

« back to all changes in this revision

Viewing changes to setup.py

  • Committer: Scott Moser
  • Date: 2012-07-06 21:03:11 UTC
  • mto: This revision was merged to the branch mainline in revision 564.
  • Revision ID: smoser@ubuntu.com-20120706210311-lxirwxwd2fufebvv
setup.py: rename "daemon type" to "init system"

This brings with it other changes, and also makes an install
install all of the requisite init files. (ie, cloud-init needs the -local and
the non-local)

Show diffs side-by-side

added added

removed removed

Lines of Context:
38
38
    return os.path.isfile(p)
39
39
 
40
40
 
41
 
DAEMON_FILES = {
42
 
    'initd': filter((lambda x: is_f(x)
43
 
                     and x.find('local') == -1), glob('initd/*')),
44
 
    'initd-local': filter((lambda x: is_f(x)
45
 
                     and not x.endswith('cloud-init')), glob('initd/*')),
 
41
INITSYS_FILES = {
 
42
    'sysvinit': filter((lambda x: is_f(x)), glob('sysvinit/*')),
46
43
    'systemd': filter((lambda x: is_f(x)), glob('systemd/*')),
47
 
    'upstart': filter((lambda x: is_f(x)
48
 
                     and x.find('local') == -1
49
 
                     and x.find('nonet') == -1), glob('upstart/*')),
50
 
    'upstart-nonet': filter((lambda x: is_f(x)
51
 
                        and x.find('local') == -1
52
 
                        and not x.endswith('cloud-init.conf')), glob('upstart/*')),
53
 
    'upstart-local': filter((lambda x: is_f(x)
54
 
                        and x.find('nonet') == -1
55
 
                        and not x.endswith('cloud-init.conf')), glob('upstart/*')),
 
44
    'upstart': filter((lambda x: is_f(x)), glob('upstart/*')),
56
45
}
57
 
DAEMON_ROOTS = {
58
 
    'initd': '/etc/rc.d/init.d',
59
 
    'initd-local': '/etc/rc.d/init.d',
 
46
INITSYS_ROOTS = {
 
47
    'sysvinit': '/etc/rc.d/init.d',
60
48
    'systemd': '/etc/systemd/system/',
61
49
    'upstart': '/etc/init/',
62
 
    'upstart-nonet': '/etc/init/',
63
 
    'upstart-local': '/etc/init/',
64
50
}
65
 
DAEMON_TYPES = sorted(list(DAEMON_ROOTS.keys()))
 
51
INITSYS_TYPES = sorted(list(INITSYS_ROOTS.keys()))
66
52
 
67
53
 
68
54
def tiny_p(cmd, capture=True):
94
80
 
95
81
 
96
82
# TODO: Is there a better way to do this??
97
 
class DaemonInstallData(install):
 
83
class InitsysInstallData(install):
98
84
    user_options = install.user_options + [
99
 
        # This will magically show up in member variable 'daemon_type'
100
 
        ('daemon-type=', None,
101
 
            ('daemon type to configure (%s) [default: None]') %
102
 
                (", ".join(DAEMON_TYPES))
 
85
        # This will magically show up in member variable 'init_sys'
 
86
        ('init-system=', None,
 
87
            ('init system to configure (%s) [default: None]') %
 
88
                (", ".join(INITSYS_TYPES))
103
89
        ),
104
90
    ]
105
91
 
106
92
    def initialize_options(self):
107
93
        install.initialize_options(self)
108
 
        self.daemon_type = None
 
94
        self.initsys = None
109
95
 
110
96
    def finalize_options(self):
111
97
        install.finalize_options(self)
112
 
        if self.daemon_type and self.daemon_type not in DAEMON_TYPES:
 
98
        if self.initsys and self.initsys not in INITSYS_TYPES:
113
99
                raise DistutilsArgError(
114
100
                    ("You must specify one of (%s) when"
115
 
                     " specifying a daemon type!") % (", ".join(DAEMON_TYPES))
 
101
                     " specifying a init system!") % (", ".join(INITSYS_TYPES))
116
102
                )
117
 
        elif self.daemon_type:
118
 
            self.distribution.data_files.append((DAEMON_ROOTS[self.daemon_type], 
119
 
                                                 DAEMON_FILES[self.daemon_type]))
 
103
        elif self.initsys:
 
104
            self.distribution.data_files.append((INITSYS_ROOTS[self.initsys], 
 
105
                                                 INITSYS_FILES[self.initsys]))
120
106
            # Force that command to reinitalize (with new file list)
121
107
            self.distribution.reinitialize_command('install_data', True)
122
108
 
145
131
      install_requires=read_requires(),
146
132
      cmdclass = {
147
133
          # Use a subclass for install that handles
148
 
          # adding on the right daemon configuration files
149
 
          'install': DaemonInstallData,
 
134
          # adding on the right init system configuration files
 
135
          'install': InitsysInstallData,
150
136
      },
151
137
      )