This is an automated email from the git hooks/post-receive script.
firstyear pushed a change to branch master in repository lib389.
from e8dc7f1 Issue 16 - Reset InstScriptsEnabled argument during the init new 87eb62a Ticket 14 - Remane dsadm to dsctl new cc6e810 Ticket 19 - Missing file and improve make
The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference.
Summary of changes: Makefile | 12 +-- cli/{dscreate => dsctl} | 49 ++++++++---- lib389/{cli_conf => cli_ctl}/__init__.py | 0 lib389/cli_ctl/dbtasks.py | 18 +++++ lib389/cli_ctl/instance.py | 133 +++++++++++++++++++++++++++++++ python-lib389.spec | 2 +- 6 files changed, 191 insertions(+), 23 deletions(-) copy cli/{dscreate => dsctl} (52%) copy lib389/{cli_conf => cli_ctl}/__init__.py (100%) create mode 100644 lib389/cli_ctl/dbtasks.py create mode 100644 lib389/cli_ctl/instance.py
This is an automated email from the git hooks/post-receive script.
firstyear pushed a commit to branch master in repository lib389.
commit 87eb62a4117ea5b864d4e75694ca6f82dfafb34d Author: William Brown firstyear@redhat.com Date: Thu Apr 6 11:31:47 2017 +1000
Ticket 14 - Remane dsadm to dsctl
Bug Description: Rename dsadm to dsctl I forgot to provide the dsctl files. They are in this commit.
https://pagure.io/lib389/issue/14
Author: wibrown
Review by: spichugi (Thanks!) --- cli/dsctl | 101 ++++++++++++++++++++++++++++++++++ lib389/cli_ctl/__init__.py | 8 +++ lib389/cli_ctl/dbtasks.py | 18 ++++++ lib389/cli_ctl/instance.py | 133 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 260 insertions(+)
diff --git a/cli/dsctl b/cli/dsctl new file mode 100755 index 0000000..6c38bce --- /dev/null +++ b/cli/dsctl @@ -0,0 +1,101 @@ +#!/usr/bin/python + +# --- BEGIN COPYRIGHT BLOCK --- +# Copyright (C) 2016 Red Hat, Inc. +# All rights reserved. +# +# License: GPL (version 3 or any later version). +# See LICENSE for details. +# --- END COPYRIGHT BLOCK --- + +import argparse +import logging +import sys + +# This has to happen before we import DirSrv else it tramples our config ... :( +logging.basicConfig(format='%(message)s') + +from lib389.cli_base import _get_arg +from lib389 import DirSrv +from lib389.cli_ctl import instance as cli_instance +from lib389.cli_ctl import dbtasks as cli_dbtasks +from lib389.cli_base import disconnect_instance + +log = logging.getLogger("dsadm") + +if __name__ == '__main__': + + parser = argparse.ArgumentParser() + + parser.add_argument('-v', '--verbose', + help="Display verbose operation tracing during command execution", + action='store_true', default=False + ) + parser.add_argument('instance', + help="The name of the instance to act upon", + ) + + subparsers = parser.add_subparsers(help="action") + + # We stack our needed options in via submodules. + + cli_instance.create_parser(subparsers) + cli_dbtasks.create_parser(subparsers) + + # Then we tell it to execute. + + args = parser.parse_args() + + if args.verbose: + log.setLevel(logging.DEBUG) + else: + log.setLevel(logging.INFO) + + log.debug("The 389 Directory Server Administration Tool") + # Leave this comment here: UofA let me take this code with me provided + # I gave attribution. -- wibrown + log.debug("Inspired by works of: ITS, The University of Adelaide") + + log.debug("Called with: %s", args) + + # Assert we have a resources to work on. + if not hasattr(args, 'func'): + log.error("No action provided") + log.error("USAGE: dsadm [options] <resource> <action> [action options]") + sys.exit(1) + + # Connect + # inst = None + inst = DirSrv(verbose=args.verbose) + + result = True + + # Allocate the instance based on name + insts = inst.list(serverid=args.instance) + if len(insts) != 1: + raise ValueError("No such instance %s" % args.instance) + + inst.allocate(insts[0]) + log.debug('Instance allocated') + + if args.verbose: + result = args.func(inst, log, args) + else: + try: + result = args.func(inst, log, args) + except Exception as e: + log.debug(e, exc_info=True) + log.error("Error: %s" % e.message) + disconnect_instance(inst) + + if result is True: + log.info('FINISH: Command succeeded') + elif result is False: + log.info('FAIL: Command failed. See output for details.') + + # Done! + log.debug("dsadm is brought to you by the letter R and the number 27.") + + if result is False: + sys.exit(1) + diff --git a/lib389/cli_ctl/__init__.py b/lib389/cli_ctl/__init__.py new file mode 100644 index 0000000..d57ac33 --- /dev/null +++ b/lib389/cli_ctl/__init__.py @@ -0,0 +1,8 @@ +# --- BEGIN COPYRIGHT BLOCK --- +# Copyright (C) 2016 Red Hat, Inc. +# All rights reserved. +# +# License: GPL (version 3 or any later version). +# See LICENSE for details. +# --- END COPYRIGHT BLOCK --- + diff --git a/lib389/cli_ctl/dbtasks.py b/lib389/cli_ctl/dbtasks.py new file mode 100644 index 0000000..276f478 --- /dev/null +++ b/lib389/cli_ctl/dbtasks.py @@ -0,0 +1,18 @@ +# --- BEGIN COPYRIGHT BLOCK --- +# Copyright (C) 2016 Red Hat, Inc. +# All rights reserved. +# +# License: GPL (version 3 or any later version). +# See LICENSE for details. +# --- END COPYRIGHT BLOCK --- + +def dbtasks_db2index(inst, log, args): + # inst.db2index(suffixes=[args.suffix,]) + inst.db2index(bename=args.backend) + +def create_parser(subcommands): + db2index_parser = subcommands.add_parser('db2index', help="Initialise a reindex of the server database. The server must be stopped for this to proceed.") + # db2index_parser.add_argument('suffix', help="The suffix to reindex. IE dc=example,dc=com.") + db2index_parser.add_argument('backend', help="The backend to reindex. IE userRoot") + db2index_parser.set_defaults(func=dbtasks_db2index) + diff --git a/lib389/cli_ctl/instance.py b/lib389/cli_ctl/instance.py new file mode 100644 index 0000000..f59fb2b --- /dev/null +++ b/lib389/cli_ctl/instance.py @@ -0,0 +1,133 @@ +# --- BEGIN COPYRIGHT BLOCK --- +# Copyright (C) 2016 Red Hat, Inc. +# All rights reserved. +# +# License: GPL (version 3 or any later version). +# See LICENSE for details. +# --- END COPYRIGHT BLOCK --- + +from lib389._constants import * + +from lib389.tools import DirSrvTools +from lib389.instance.setup import SetupDs +from getpass import getpass +import os +import time +import sys + +from lib389.instance.options import General2Base, Slapd2Base + +def instance_list(inst, log, args): + instances = inst.list(all=True) + + try: + if len(instances) > 0: + for instance in instances: + log.info("instance: %s" % instance[CONF_SERVER_ID]) + else: + log.info("No instances of Directory Server") + except IOError as e: + log.info(e) + log.info("Perhaps you need to be a different user?") + +def instance_restart(inst, log, args): + inst.restart(post_open=False) + +def instance_start(inst, log, args): + inst.start(post_open=False) + +def instance_stop(inst, log, args): + inst.stop() + +def instance_status(inst, log, args): + if inst.status() is True: + log.info("Instance is running") + else: + log.info("Instance is not running") + +def instance_create(inst, log, args): + if not args.ack: + sys.exit(0) + else: + log.info(""" + _________________________________________ +/ This is not what you want! Press ctrl-c \ +\ now ... / + ----------------------------------------- + \ / \ //\ + \ |\___/| / \// \\ + /0 0 \__ / // | \ \ + / / \/_/ // | \ \ + @_^_@'/ \/_ // | \ \ + //_^_/ \/_ // | \ \ + ( //) | \/// | \ \ + ( / /) _|_ / ) // | \ _\ + ( // /) '/,_ _ _/ ( ; -. | _ _\.-~ .-~~~^-. + (( / / )) ,-{ _ `-.|.-~-. .~ `. + (( // / )) '/\ / ~-. _ .-~ .-~^-. \ + (( /// )) `. { } / \ \ + (( / )) .----~-.\ \-' .~ \ `. \^-. + ///.----..> \ _ -~ `. ^-` ^-_ + ///-._ _ _ _ _ _ _}^ - - - - ~ ~-- ,.-~ + /.-~ + """) + for i in range(1,6): + log.info('%s ...' % (5 - int(i))) + time.sleep(1) + log.info('Launching ...') + if args.containerised: + log.debug("Containerised features requested.") + sd = SetupDs(args.verbose, args.dryrun, log, args.containerised) + ### If args.file is not set, we need to interactively get answers! + if sd.create_from_inf(args.file): + # print("Sucessfully created instance") + return True + else: + # print("Failed to create instance") + return False + +def instance_example(inst, log, args): + print(""" +; --- BEGIN COPYRIGHT BLOCK --- +; Copyright (C) 2015 Red Hat, Inc. +; All rights reserved. +; +; License: GPL (version 3 or any later version). +; See LICENSE for details. +; --- END COPYRIGHT BLOCK --- + +; Author: firstyear at redhat.com + +; This is a version 2 ds setup inf file. +; It is used by the python versions of setup-ds-* +; Most options map 1 to 1 to the original .inf file. +; However, there are some differences that I envision +; For example, note the split backend section. +; You should be able to create, one, many or no backends in an install +; +; The special value {instance_name} is substituted at installation time. +; + + """) + g2b = General2Base(log) + s2b = Slapd2Base(log) + print(g2b.collect_help()) + print(s2b.collect_help()) + +def create_parser(subcommands): + # list_parser = subcommands.add_parser('list', help="List installed instances of Directory Server") + # list_parser.set_defaults(func=instance_list) + # list_parser.set_defaults(noinst=True) + restart_parser = subcommands.add_parser('restart', help="Restart an instance of Directory Server, if it is running: else start it.") + restart_parser.set_defaults(func=instance_restart) + + start_parser = subcommands.add_parser('start', help="Start an instance of Directory Server, if it is not currently running") + start_parser.set_defaults(func=instance_start) + + stop_parser = subcommands.add_parser('stop', help="Stop an instance of Directory Server, if it is currently running") + stop_parser.set_defaults(func=instance_stop) + + status_parser = subcommands.add_parser('status', help="Check running status of an instance of Directory Server") + status_parser.set_defaults(func=instance_status) + +
This is an automated email from the git hooks/post-receive script.
firstyear pushed a commit to branch master in repository lib389.
commit cc6e81080af6cbc58fe6e7fa2a5cd0c89da53fe1 Author: William Brown firstyear@redhat.com Date: Thu Apr 6 15:04:03 2017 +1000
Ticket 19 - Missing file and improve make
Bug Description: This fixes a missing file in the RPM specfile. This also makes the local makefile better for docker containers.
Fix Description: Fix the renamed README line in spec, and improve the topdir in rpmbuild
https://pagure.io/lib389/issue/19
Author: wibrown
Review by: vashirov (Thanks!) --- Makefile | 12 ++++++------ python-lib389.spec | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/Makefile b/Makefile index e6a577d..5e4332c 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@
LIB389_VERS ?= $(shell cat ./VERSION | head -n 1) PYTHON ?= /usr/bin/python +RPMBUILD ?= $(shell pwd)/rpmbuild
all: build
@@ -13,17 +14,16 @@ install:
rpmbuild-prep: mkdir -p ./dist/ - mkdir -p ~/rpmbuild/SOURCES - mkdir -p ~/rpmbuild/SPECS + mkdir -p $(RPMBUILD)/SOURCES + mkdir -p $(RPMBUILD)/SPECS git archive --prefix=python-lib389-$(LIB389_VERS)-1/ HEAD | bzip2 > ./dist/python-lib389-$(LIB389_VERS)-1.tar.bz2 - cp ./dist/python-lib389-$(LIB389_VERS)-1.tar.bz2 ~/rpmbuild/SOURCES/ + cp ./dist/python-lib389-$(LIB389_VERS)-1.tar.bz2 $(RPMBUILD)/SOURCES/
srpm: rpmbuild-prep - rpmbuild -bs python-lib389.spec - cp ~/rpmbuild/SRPMS/python-lib389*.src.rpm ./dist/ + rpmbuild --define "_topdir $(RPMBUILD)" -bs python-lib389.spec
rpm: rpmbuild-prep - rpmbuild -bb python-lib389.spec + rpmbuild --define "_topdir $(RPMBUILD)" -bb python-lib389.spec
pep8: pep8 --max-line-length=160 ./lib389 diff --git a/python-lib389.spec b/python-lib389.spec index 95a300b..68394ad 100644 --- a/python-lib389.spec +++ b/python-lib389.spec @@ -93,7 +93,7 @@ and configuring the 389 Directory Server.
%files -n python2-%{srcname} %license LICENSE -%doc README +%doc README.md %{python2_sitelib}/* %if 0%{?rhel} >= 8 || 0%{?fedora} %exclude %{_sbindir}/*
389-commits@lists.fedoraproject.org