From 16297b048fc17a4d4f9d4bb968f38af772812045 Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Tue, 14 Nov 2017 16:05:03 -0500 Subject: [PATCH] Add nodegroupdefine and nodegroupremove With these, a user can noow largely ignore confetty for most abosuletly universal functions. --- confluent_client/bin/nodegroupdefine | 58 +++++++++++++++++++ confluent_client/bin/nodegroupremove | 52 +++++++++++++++++ confluent_client/confluent_env.sh | 2 + confluent_client/doc/man/nodegroupdefine.ronn | 23 ++++++++ confluent_client/doc/man/nodegroupremove.ronn | 18 ++++++ 5 files changed, 153 insertions(+) create mode 100755 confluent_client/bin/nodegroupdefine create mode 100755 confluent_client/bin/nodegroupremove create mode 100644 confluent_client/doc/man/nodegroupdefine.ronn create mode 100644 confluent_client/doc/man/nodegroupremove.ronn diff --git a/confluent_client/bin/nodegroupdefine b/confluent_client/bin/nodegroupdefine new file mode 100755 index 00000000..bf79d5e5 --- /dev/null +++ b/confluent_client/bin/nodegroupdefine @@ -0,0 +1,58 @@ +#!/usr/bin/env python +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2017 Lenovo +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import optparse +import os +import signal +import sys + +try: + signal.signal(signal.SIGPIPE, signal.SIG_DFL) +except AttributeError: + pass + +path = os.path.dirname(os.path.realpath(__file__)) +path = os.path.realpath(os.path.join(path, '..', 'lib', 'python')) +if path.startswith('/opt'): + sys.path.append(path) + +import confluent.client as client + +argparser = optparse.OptionParser( + usage='''\n %prog noderange attribute1=value1 attribute2=value,... + \n ''') +(options, args) = argparser.parse_args() +requestargs=None +try: + noderange = args[0] +except IndexError: + argparser.print_help() + sys.exit(1) +client.check_globbing(noderange) +session = client.Command() +exitcode = 0 +attribs = {'name': noderange} +for arg in args[1:]: + key, val = arg.split('=') + attribs[key] = val +for r in session.create('/nodegroups/', attribs): + if 'error' in r: + sys.stderr.write(r['error'] + '\n') + exitcode |= 1 + if 'created' in r: + print('{0}: created'.format(r['created'])) +sys.exit(exitcode) \ No newline at end of file diff --git a/confluent_client/bin/nodegroupremove b/confluent_client/bin/nodegroupremove new file mode 100755 index 00000000..1c7c8d3f --- /dev/null +++ b/confluent_client/bin/nodegroupremove @@ -0,0 +1,52 @@ +#!/usr/bin/env python +# vim: tabstop=4 shiftwidth=4 softtabstop=4 + +# Copyright 2017 Lenovo +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import optparse +import os +import signal +import sys + +try: + signal.signal(signal.SIGPIPE, signal.SIG_DFL) +except AttributeError: + pass + +path = os.path.dirname(os.path.realpath(__file__)) +path = os.path.realpath(os.path.join(path, '..', 'lib', 'python')) +if path.startswith('/opt'): + sys.path.append(path) + +import confluent.client as client + +argparser = optparse.OptionParser( + usage='''\n %prog noderange + \n ''') +(options, args) = argparser.parse_args() +if len(args) != 1: + argparser.print_help() + sys.exit(1) +noderange = args[0] +client.check_globbing(noderange) +session = client.Command() +exitcode = 0 +for r in session.delete('/nodegroups/{0}'.format(noderange)): + if 'error' in r: + sys.stderr.write(r['error'] + '\n') + exitcode |= 1 + if 'deleted' in r: + print('{0}: deleted'.format(r['deleted'])) +sys.exit(exitcode) \ No newline at end of file diff --git a/confluent_client/confluent_env.sh b/confluent_client/confluent_env.sh index 916634c9..55a0cd02 100644 --- a/confluent_client/confluent_env.sh +++ b/confluent_client/confluent_env.sh @@ -23,6 +23,8 @@ alias nodedefine='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export C alias nodeeventlog='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodeeventlog' alias nodefirmware='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodefirmware' alias nodegroupattrib='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodegroupattrib' +alias nodegroupdefine='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodegroupdefine' +alias nodegroupremove='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodegroupremove' alias nodehealth='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodehealth' alias nodeidentify='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodeidentify' alias nodeinventory='CURRENT_CMDLINE=$(HISTTIMEFORMAT= builtin history 1); export CURRENT_CMDLINE; nodeinventory' diff --git a/confluent_client/doc/man/nodegroupdefine.ronn b/confluent_client/doc/man/nodegroupdefine.ronn new file mode 100644 index 00000000..a990f8ff --- /dev/null +++ b/confluent_client/doc/man/nodegroupdefine.ronn @@ -0,0 +1,23 @@ +nodegroupdefine(8) -- Define new confluent node group + +## SYNOPSIS + +`nodegroupdefine [nodeattribute1=value1> ...]` + +## DESCRIPTION + +`nodegroupdefine` allows the definition of a new node for the confluent management +service. It may only define a single group name at a time. +It has the same syntax as `nodegroupattrib(8)`, and the commands differ in +that `nodegroupattrib(8)` will error if a node group does not exist. + +## EXAMPLES + +* Create a group called `compute`: + `# nodegroupdefine compute` + `compute: created` + + +## SEE ALSO + +nodeattribexpressions(8), nodegroupattrib(8), nodegroupremove(8) diff --git a/confluent_client/doc/man/nodegroupremove.ronn b/confluent_client/doc/man/nodegroupremove.ronn new file mode 100644 index 00000000..be0a5967 --- /dev/null +++ b/confluent_client/doc/man/nodegroupremove.ronn @@ -0,0 +1,18 @@ +nodegroupremove(8) -- Remove a nodegroup from the confluent database +==================================================================== + +## SYNOPSIS + +`nodegroupremove ` + +## DESCRIPTION + +`nodegroupremove` simply removes the given single nodegroup from the confluent database. + + +## EXAMPLES + +* Remove group called testgroup + `# nodegroupremove testgroup` + `testgroup: deleted` +