diff options
Diffstat (limited to 'cli-tools/cura')
-rw-r--r-- | cli-tools/cura/__init__.py | 0 | ||||
-rw-r--r-- | cli-tools/cura/cura_address.py | 79 | ||||
-rw-r--r-- | cli-tools/cura/cura_client_power.py | 72 | ||||
-rw-r--r-- | cli-tools/cura/cura_client_service.py | 135 | ||||
-rw-r--r-- | cli-tools/cura/cura_client_user.py | 154 | ||||
-rw-r--r-- | cli-tools/cura/cura_options.py | 62 |
6 files changed, 0 insertions, 502 deletions
diff --git a/cli-tools/cura/__init__.py b/cli-tools/cura/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/cli-tools/cura/__init__.py +++ /dev/null diff --git a/cli-tools/cura/cura_address.py b/cli-tools/cura/cura_address.py deleted file mode 100644 index 467a1c2..0000000 --- a/cli-tools/cura/cura_address.py +++ /dev/null @@ -1,79 +0,0 @@ -#!/usr/bin/env python -# Copyright (C) 2012 Peter Hatina <phatina@redhat.com> -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see <http://www.gnu.org/licenses/>. - -import re -import sys -import itertools - -class CuraIpv4Addr: - class CuraIpv4Member: - def __init__(self, member): - self.m_member = member - - def enumerate(self): - pattern = re.compile("^{(.*)}$") - match = pattern.search(self.m_member) - member = match.group(1) if match else [] - if not member: - return [self.m_member] - ranges = (x.split("-") for x in member.split(";")) - try: - members = [] - for r in ranges: - if not 0 <= int(r[0]) <= 255 or not 0 <= int(r[-1]) <= 255: - return [] - low = int(r[0]) - high = int(r[-1]) - if low > high: - low, high = high, low - members += [str(i) for i in range(low, high + 1)] - except ValueError: - return [] - return members - - def __init__(self, addr_pattern): - self.m_addr_pattern = addr_pattern - - def enumerate(self): - str_members = self.m_addr_pattern.split(".") - if len(str_members) != 4: - return [] - members = [] - for m in str_members: - ipm = CuraIpv4Addr.CuraIpv4Member(m) - members.append(ipm) - addresses = members[3].enumerate() - if not addresses: - return [] - for i in reversed(range(0, 3)): - combined = [] - members_to_combine = members[i].enumerate() - if not members_to_combine: - return [] - for r in itertools.product(members_to_combine, addresses): - combined.append(".".join([r[0], r[1]])) - addresses = combined - return sorted(set(addresses)) - -class CuraIpv4AddrGenerator: - def __init__(self, addresses): - self.m_addresses = addresses - - def enumerate(self): - rval = [] - for addr in self.m_addresses.split(","): - rval += CuraIpv4Addr(addr).enumerate() - return rval diff --git a/cli-tools/cura/cura_client_power.py b/cli-tools/cura/cura_client_power.py deleted file mode 100644 index c2e7b27..0000000 --- a/cli-tools/cura/cura_client_power.py +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env python -# Copyright (C) 2012 Peter Hatina <phatina@redhat.com> -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see <http://www.gnu.org/licenses/>. - -import pywbem - -class CuraPowerClient(): - POWER_CLASS_NAME = "LMI_PowerManagementService" - POWER_STATE_SUSPEND = 4 - POWER_STATE_FORCE_REBOOT = 5 - POWER_STATE_HIBERNATE = 7 - POWER_STATE_FORCE_POWEROFF = 8 - POWER_STATE_POWEROFF = 12 - POWER_STATE_REBOOT = 15 - - def __init__(self, hostname, username="", password=""): - self.m_hostname = hostname - self.m_username = username - self.m_password = password - self.m_cliconn = pywbem.WBEMConnection("https://" + self.m_hostname, - (self.m_username, self.m_password)) - - def __getPowerInstance(self): - try: - inst_name_list = self.m_cliconn.EnumerateInstanceNames( - CuraPowerClient.POWER_CLASS_NAME) - except pywbem.cim_operations.CIMError, e: - return (None, e.args[1]) - except pywbem.cim_http.AuthError, e: - return (None, e.args[0]) - inst_list = self.m_cliconn.GetInstance(inst_name_list[0], - LocalOnly=False) - return (inst_list, "") - - def __powerCallMethod(self, method, **params): - (inst, rparam) = self.__getPowerInstance() - if not inst: - return (False, rparam) - try: - (rval, rparams) = self.m_cliconn.InvokeMethod(method, - inst.path, **params) - except pywbem.cim_operations.CIMError, e: - return (False, e.args[1]) - return (rval in (0, 4096), "") - - def poweroff(self): - return self.__powerCallMethod("RequestPowerStateChange", - PowerState=pywbem.Uint16(CuraPowerClient.POWER_STATE_POWEROFF)) - - def reboot(self): - return self.__powerCallMethod("RequestPowerStateChange", - PowerState=pywbem.Uint16(CuraPowerClient.POWER_STATE_REBOOT)) - - def suspend(self): - return self.__powerCallMethod("RequestPowerStateChange", - PowerState=pywbem.Uint16(CuraPowerClient.POWER_STATE_SUSPEND)) - - def hibernate(self): - return self.__powerCallMethod("RequestPowerStateChange", - PowerState=pywbem.Uint16(CuraPowerClient.POWER_STATE_HIBERNATE)) diff --git a/cli-tools/cura/cura_client_service.py b/cli-tools/cura/cura_client_service.py deleted file mode 100644 index cf2235e..0000000 --- a/cli-tools/cura/cura_client_service.py +++ /dev/null @@ -1,135 +0,0 @@ -#!/usr/bin/env python -# Copyright (C) 2012 Peter Hatina <phatina@redhat.com> -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see <http://www.gnu.org/licenses/>. - -import pywbem - -class CuraService(): - def __init__(self, client, inst): - self.m_client = client - self.m_instance = inst - - def start(self): - return self.m_client.serviceStart(self.m_instance) - - def stop(self): - return self.m_client.serviceStop(self.m_instance) - - def restart(self): - return self.m_client.serviceRestart(self.m_instance) - - def enable(self): - return self.m_client.serviceEnable(self.m_instance) - - def disable(self): - return self.m_client.serviceDisable(self.m_instance) - - def reload(self): - return self.m_client.serviceReload(self.m_instance) - - def tryRestart(self): - return self.m_client.serviceTryRestart(self.m_instance) - - def condRestart(self): - return self.m_client.serviceCondRestart(self.m_instance) - - def reloadRestart(self): - return self.m_client.serviceReloadRestart(self.m_instance) - - def reloadTryRestart(self): - return self.m_client.serviceReloadTryRestart(self.m_instance) - - def status(self): - return self.m_client.serviceStatus(self.m_instance) - -class CuraServiceClient(): - SERVICE_CLASS_NAME = "LMI_Service" - - def __init__(self, hostname, username = "", password = ""): - self.m_hostname = hostname - self.m_username = username - self.m_password = password - self.m_cliconn = pywbem.WBEMConnection("https://" + self.m_hostname, - (self.m_username, self.m_password)) - - def __serviceGetInstance(self, service): - try: - inst_name_list = self.m_cliconn.EnumerateInstanceNames( - CuraServiceClient.SERVICE_CLASS_NAME) - except pywbem.cim_operations.CIMError, e: - return (None, e.args[1]) - except pywbem.cim_http.AuthError, e: - return (None, e.args[0]) - inst_name = filter(lambda n: n["Name"] == service, inst_name_list) - if not len(inst_name): - return (None, "No such service '" + service + "' found.") - inst_list = self.m_cliconn.GetInstance(inst_name[0], - LocalOnly = False) - return (inst_list, "") - - def __serviceCallMethod(self, service, method): - (inst, rparam) = self.__serviceGetInstance(service) if type(service) == str else (service, "") - if not inst: - return (False, rparam) - try: - (rval, params) = self.m_cliconn.InvokeMethod(method, inst.path) - except pywbem.cim_operations.CIMError, e: - return (False, e.args[1] + ": '" + method + "'") - return (rval == 0, "") - - def __serviceGetProperty(self, service, prop): - (inst, rparam) = self.__serviceGetInstance(service) if type(service) == str else (service, "") - if not inst or not prop in inst: - return (False, rparam) - return (True, inst[prop]) - - def serviceFind(self, service): - (inst, rparam) = self.__serviceGetInstance(service) - if not inst: - return (None, rparam) - return (CuraService(self, inst), "") - - def serviceStart(self, service): - return self.__serviceCallMethod(service, "StartService") - - def serviceStop(self, service): - return self.__serviceCallMethod(service, "StopService") - - def serviceRestart(self, service): - return self.__serviceCallMethod(service, "RestartService") - - def serviceEnable(self, service): - return self.__serviceCallMethod(service, "TurnServiceOn") - - def serviceDisable(self, service): - return self.__serviceCallMethod(service, "TurnServiceOff") - - def serviceReload(self, service): - return self.__serviceCallMethod(service, "ReloadService") - - def serviceTryRestart(self, service): - return self.__serviceCallMethod(service, "TryRestartService") - - def serviceCondRestart(self, service): - return self.__serviceCallMethod(service, "CondRestartService") - - def serviceReloadRestart(self, service): - return self.__serviceCallMethod(service, "ReloadOrRestartService") - - def serviceReloadTryRestart(self, service): - return self.__serviceCallMethod(service, "ReloadOrTryRestartService") - - def serviceStatus(self, service): - return self.__serviceGetProperty(service, "Status") diff --git a/cli-tools/cura/cura_client_user.py b/cli-tools/cura/cura_client_user.py deleted file mode 100644 index 3f92dc3..0000000 --- a/cli-tools/cura/cura_client_user.py +++ /dev/null @@ -1,154 +0,0 @@ -#!/usr/bin/env python -# Copyright (C) 2012 Peter Hatina <phatina@redhat.com> -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see <http://www.gnu.org/licenses/>. - -import sys -import pywbem - -class CuraUserClient(): - USER_CLASS_NAME = "LMI_Account" - GROUP_CLASS_NAME = "LMI_Group" - MEMBER_OF_GROUP_CLASS_NAME = "LMI_MemberOfGroup" - ASSIGNED_IDENTITY_CLASS_NAME = "LMI_AssignedAccountIdentity" - ACCOUNT_MANAGEMENT_SERVICE_CLASS_NAME = "LMI_AccountManagementService" - COMPUTER_SYSTEM_CLASS_NAME = "CIM_ComputerSystem" - - def __init__(self, hostname, username = "", password = ""): - self.m_hostname = hostname - self.m_username = username - self.m_password = password - self.m_cliconn = pywbem.WBEMConnection("https://" + self.m_hostname, - (self.m_username, self.m_password)) - - def __getInstances(self, klass, filter_name = ""): - try: - inst_name_list = self.m_cliconn.EnumerateInstanceNames(klass) - except pywbem.cim_operations.CIMError, e: - return (None, e.args[1]) - except pywbem.cim_http.AuthError, e: - return (None, e.args[0]) - inst_names = inst_name_list - if len(filter_name): - inst_names = filter(lambda n: n["Name"] == filter_name, inst_name_list) - inst_list = [] - for i in inst_names: - inst_list.append(self.m_cliconn.GetInstance(i, LocalOnly = False)) - if not len(inst_list): - return (None, "Not found") - return (inst_list, "") - - def __getUserInstances(self): - return self.__getInstances(CuraUserClient.USER_CLASS_NAME) - - def __getGroupInstances(self): - return self.__getInstances(CuraUserClient.GROUP_CLASS_NAME) - - def __getAccountManagementInstance(self): - return self.__getInstances(CuraUserClient.ACCOUNT_MANAGEMENT_SERVICE_CLASS_NAME) - - def __getComputerSystemInstance(self): - return self.__getInstances(CuraUserClient.COMPUTER_SYSTEM_CLASS_NAME) - - def __getMemberGroups(self, inst): - members = [] - identities = self.m_cliconn.Associators(inst.path, - AssocClass = CuraUserClient.ASSIGNED_IDENTITY_CLASS_NAME) - for identity in identities: - accounts = self.m_cliconn.Associators(identity.path, - AssocClass = CuraUserClient.MEMBER_OF_GROUP_CLASS_NAME) - members.extend(accounts) - return members - - def __getGroupMembers(self, inst): - members = [] - for g in inst: - identities = self.m_cliconn.Associators(g.path, - AssocClass = CuraUserClient.MEMBER_OF_GROUP_CLASS_NAME) - for i in identities: - accounts = self.m_cliconn.Associators(i.path, - AssocClass = CuraUserClient.ASSIGNED_IDENTITY_CLASS_NAME) - for a in accounts: - members.append(a["Name"]) - return members - - def listUsers(self): - (inst_list, rparam) = self.__getUserInstances() - if not inst_list: - return (False, "No users found") - sys.stdout.write("%s:\n" % self.m_hostname) - try: - for i in inst_list: - groups = self.__getMemberGroups(i) - gid = groups[0]["InstanceID"].split(":")[-1] - sys.stdout.write("%s:x:%s:%s:%s:%s:%s\n" % - (i["Name"], i["UserID"], gid, i["ElementName"], - i["HomeDirectory"], i["LoginShell"])) - except pywbem.cim_operations.CIMError, e: - return (False, e.args[1]) - return (True, "") - - def listGroups(self): - (inst_list, rparam) = self.__getGroupInstances() - if not inst_list: - return (False, "No groups found") - for i in inst_list: - sys.stdout.write("%s:%s\n" % - (i["Name"], i["InstanceID"].split(":")[-1])) - return (True, "") - - def listGroupMembers(self, member): - (inst_list, rparam) = self.__getInstances( - CuraUserClient.GROUP_CLASS_NAME, member) - if not inst_list: - return (False, "No such group '%s' found" % member) - members = self.__getGroupMembers(inst_list) - for m in members: - sys.stdout.write("%s\n" % m) - return (True, "") - - def userAdd(self, user_name, **params): - (inst_management, rparam) = self.__getAccountManagementInstance() - if not inst_management: - return (False, rparam) - # We are using the first and only instance present. - # For KVM_ComputerSystem, there has be some CLI option added. - inst_management = inst_management[0] - (inst_computer_system, rparam) = self.__getComputerSystemInstance() - if not inst_computer_system: - return (False, rparam) - user_params = { "Name" : user_name } - user_params["DontCreateHome"] = not params["createHome"] - user_params["System"] = inst_computer_system[0].path - user_params["DontCreateGroup"] = not params["createGroup"] - if params["shell"]: - user_params["Shell"] = params["shell"] - if params["systemAccount"]: - user_params["SystemAccount"] = params["systemAccount"] - if params["gid"]: - user_params["GID"] = pywbem.Uint32(params["gid"]) - if params["gecos"]: - user_params["GECOS"] = params["gecos"] - if params["homeDir"]: - user_params["HomeDirectory"] = params["homeDir"] - if params["password"]: - user_params["Password"] = params["password"] - if params["uid"]: - user_params["UID"] = pywbem.Uint32(params["uid"]) - try: - (account, identity) = self.m_cliconn.InvokeMethod( - "CreateAccount", inst_management.path, **user_params) - except pywbem.CIMError, e: - return (False, e.args[1]) - return (account != None, "") diff --git a/cli-tools/cura/cura_options.py b/cli-tools/cura/cura_options.py deleted file mode 100644 index 429740a..0000000 --- a/cli-tools/cura/cura_options.py +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env python -# Copyright (C) 2012 Peter Hatina <phatina@redhat.com> -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see <http://www.gnu.org/licenses/>. - -import sys -import optparse - -class CuraBasicOptions(object): - def __init__(self, epil = ""): - optparse.OptionParser.format_epilog = lambda self, formatter: self.epilog - self.m_parser = optparse.OptionParser( - add_help_option = False, - epilog = epil) - self.m_parser.add_option("", "--help", - action="help", - help = "print this message") - self.m_parser.add_option("-h", "--hostname", - action = "store", - dest = "hostname", - help = "remote machine hostname") - self.m_parser.add_option("-u", "--username", - action = "store", - dest = "username", - help = "remote machine username") - self.m_parser.add_option("-p", "--password", - action = "store", - dest = "password", - help = "remote machine password") - - def parse(self, argv): - (self.m_options, self.m_pos_options) = self.m_parser.parse_args(argv[1:]) - - def printHelp(self): - self.m_parser.print_help() - - @property - def good(self): - return len(self.m_pos_options) == 0 - - @property - def hostname(self): - return self.m_options.hostname if self.m_options.hostname else "" - - @property - def username(self): - return self.m_options.username if self.m_options.username else "" - - @property - def password(self): - return self.m_options.password if self.m_options.password else "" |