summaryrefslogtreecommitdiffstats
path: root/cli-tools/cura
diff options
context:
space:
mode:
Diffstat (limited to 'cli-tools/cura')
-rw-r--r--cli-tools/cura/__init__.py0
-rw-r--r--cli-tools/cura/cura_address.py79
-rw-r--r--cli-tools/cura/cura_client_power.py72
-rw-r--r--cli-tools/cura/cura_client_service.py135
-rw-r--r--cli-tools/cura/cura_client_user.py154
-rw-r--r--cli-tools/cura/cura_options.py62
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 ""