Ejemplo n.º 1
0
def serve(etcd_discovery=None, size=3, *args, **kwargs):
    cluster_name = '-'.join(ifilter(None, ('etcd2', kwargs['cluster_name'])))

    status = run('status {cluster_name}'.format(cluster_name=cluster_name), warn_only=True, quiet=True)
    if status.succeeded and status.endswith('start/running'):
        sudo('stop {cluster_name}'.format(cluster_name=cluster_name))
        if 'start/running' in run('status {cluster_name}'.format(cluster_name=cluster_name),
                                  warn_only=True, quiet=True):
            raise RuntimeError('Cluster hasn\'t stopped')
    etcd_discovery = shared_serve(etcd_discovery, size, kwargs)
    append('/etc/environment', 'ETCD_DISCOVERY={etcd_discovery}'.format(etcd_discovery=etcd_discovery),
           use_sudo=True)

    data_dir = '/var/{cluster_name}_data_dir'.format(cluster_name=cluster_name)
    sudo('mkdir -p "{data_dir}"'.format(data_dir=data_dir))

    upload_template(
        path.join(path.dirname(resource_filename('offregister_etcd', '__init__.py')), 'data',
                  'etcd2.upstart.conf'),
        '/etc/init/{cluster_name}.conf'.format(cluster_name=cluster_name),
        context={k: str(v) for k, v in update_d(kwargs, locals()).iteritems()}, use_sudo=True
    )

    sudo('initctl reload-configuration')
    sudo('start {cluster_name}'.format(cluster_name=cluster_name), warn_only=True)
    return etcd_discovery
Ejemplo n.º 2
0
def serve(etcd_discovery=None, size=3, *args, **kwargs):
    if kwargs['cluster_name']:
        raise NotImplementedError('Running multiple etcd clusters not yet implemented for CoreOS')

    cluster_name = 'etcd2'  # '-'.join(ifilter(None, ('etcd2', kwargs['cluster_name'])))
    if run('systemctl status {cluster_name}.service'.format(cluster_name=cluster_name),
           warn_only=True, quiet=True).succeeded:
        sudo('systemctl stop {cluster_name}.service'.format(cluster_name=cluster_name))

    etcd_discovery = shared_serve(etcd_discovery, size, cluster_name, kwargs)

    data_dir = '/var/{cluster_name}_data_dir'.format(cluster_name=cluster_name)
    sudo('mkdir -p "{data_dir}"'.format(data_dir=data_dir))

    upload_template(
        path.join(path.dirname(resource_filename('offregister.aux_recipes', '__init__.py')),
                  'templates', 'etcd2.systemd.conf'),
        '/run/systemd/system/{cluster_name}.service.d/10-oem.conf'.format(cluster_name=cluster_name),
        context=locals(), use_sudo=True
    )

    sudo('systemctl daemon-reload')
    sudo('systemctl start {cluster_name}.service'.format(cluster_name=cluster_name))
    run('systemctl status {cluster_name}.service'.format(cluster_name=cluster_name))