backend/server/rhnServer/server_hardware.py | 6 backend/spacewalk-backend.spec | 6 client/rhel/rhn-client-tools/rhn-client-tools.spec | 5 client/rhel/rhn-client-tools/src/up2date_client/hardware.py | 67 ++++++++++ java/code/src/com/redhat/rhn/domain/server/CPU.hbm.xml | 3 java/code/src/com/redhat/rhn/domain/server/CPU.java | 15 ++ java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/CpuSerializer.java | 2 java/spacewalk-java.spec | 6 rel-eng/packages/rhn-client-tools | 2 rel-eng/packages/spacewalk-backend | 2 rel-eng/packages/spacewalk-java | 2 schema/spacewalk/common/tables/rhnCpu.sql | 2 schema/spacewalk/upgrade/spacewalk-schema-1.9-to-spacewalk-schema-1.10/010-add_rhncpu_nrsocket.sql.oracle | 2 schema/spacewalk/upgrade/spacewalk-schema-1.9-to-spacewalk-schema-1.10/010-add_rhncpu_nrsocket.sql.postgresql | 3 14 files changed, 114 insertions(+), 9 deletions(-)
New commits: commit 66737d83778f4962d248201b7fa66ef73839e650 Author: Stephen Herr sherr@redhat.com Date: Mon Mar 25 17:45:37 2013 -0400
Automatic commit of package [rhn-client-tools] release [1.10.2-1].
diff --git a/client/rhel/rhn-client-tools/rhn-client-tools.spec b/client/rhel/rhn-client-tools/rhn-client-tools.spec index 7556ec3..7703196 100644 --- a/client/rhel/rhn-client-tools/rhn-client-tools.spec +++ b/client/rhel/rhn-client-tools/rhn-client-tools.spec @@ -4,7 +4,7 @@ Group: System Environment/Base Source0: https://fedorahosted.org/releases/s/p/spacewalk/%%7Bname%7D-%%7Bversion%7D.t... URL: https://fedorahosted.org/spacewalk Name: rhn-client-tools -Version: 1.10.1 +Version: 1.10.2 Release: 1%{?dist} BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch @@ -339,6 +339,9 @@ make -f Makefile.rhn-client-tools test %endif
%changelog +* Mon Mar 25 2013 Stephen Herr sherr@redhat.com 1.10.2-1 +- Client tools able to pass up socket info + * Wed Mar 20 2013 Miroslav Suchý msuchy@redhat.com 1.10.1-1 - rpm macros must not be marked as config file - Bumping package versions for 1.9 diff --git a/rel-eng/packages/rhn-client-tools b/rel-eng/packages/rhn-client-tools index e616101..4366590 100644 --- a/rel-eng/packages/rhn-client-tools +++ b/rel-eng/packages/rhn-client-tools @@ -1 +1 @@ -1.10.1-1 client/rhel/rhn-client-tools/ +1.10.2-1 client/rhel/rhn-client-tools/
commit bc6254afffde208f648f03ea2f52200ff0731f44 Author: Stephen Herr sherr@redhat.com Date: Mon Mar 25 17:45:28 2013 -0400
Automatic commit of package [spacewalk-backend] release [1.10.11-1].
diff --git a/backend/spacewalk-backend.spec b/backend/spacewalk-backend.spec index 60e4f65..673b131 100644 --- a/backend/spacewalk-backend.spec +++ b/backend/spacewalk-backend.spec @@ -12,7 +12,7 @@ Name: spacewalk-backend Summary: Common programs needed to be installed on the Spacewalk servers/proxies Group: Applications/Internet License: GPLv2 -Version: 1.10.10 +Version: 1.10.11 Release: 1%{?dist} URL: https://fedorahosted.org/spacewalk Source0: https://fedorahosted.org/releases/s/p/spacewalk/%%7Bname%7D-%%7Bversion%7D.t... @@ -638,6 +638,10 @@ rm -f %{rhnconf}/rhnSecret.py*
# $Id$ %changelog +* Mon Mar 25 2013 Stephen Herr sherr@redhat.com 1.10.11-1 +- Client tools able to pass up socket info +- add python and java xmlrpc handlers for cpu socket info + * Thu Mar 21 2013 Jan Pazdziora 1.10.10-1 - abrt: store crash uuid
diff --git a/rel-eng/packages/spacewalk-backend b/rel-eng/packages/spacewalk-backend index 7819201..83a34d6 100644 --- a/rel-eng/packages/spacewalk-backend +++ b/rel-eng/packages/spacewalk-backend @@ -1 +1 @@ -1.10.10-1 backend/ +1.10.11-1 backend/
commit 27188cd8ffe7225b253b9bcf4d53c400d6c64eff Author: Stephen Herr sherr@redhat.com Date: Mon Mar 25 17:45:14 2013 -0400
Automatic commit of package [spacewalk-java] release [1.10.28-1].
diff --git a/java/spacewalk-java.spec b/java/spacewalk-java.spec index 7bc1884..ba9de20 100644 --- a/java/spacewalk-java.spec +++ b/java/spacewalk-java.spec @@ -28,7 +28,7 @@ Name: spacewalk-java Summary: Spacewalk Java site packages Group: Applications/Internet License: GPLv2 -Version: 1.10.27 +Version: 1.10.28 Release: 1%{?dist} URL: https://fedorahosted.org/spacewalk Source0: https://fedorahosted.org/releases/s/p/spacewalk/%%7Bname%7D-%%7Bversion%7D.t... @@ -678,6 +678,10 @@ fi %{jardir}/postgresql-jdbc.jar
%changelog +* Mon Mar 25 2013 Stephen Herr sherr@redhat.com 1.10.28-1 +- Client tools able to pass up socket info +- add python and java xmlrpc handlers for cpu socket info + * Mon Mar 25 2013 Jan Dobes jdobes@redhat.com 1.10.27-1 - Adding sudo Requires for spacewalk-java-lib
diff --git a/rel-eng/packages/spacewalk-java b/rel-eng/packages/spacewalk-java index 638b3c6..31cb019 100644 --- a/rel-eng/packages/spacewalk-java +++ b/rel-eng/packages/spacewalk-java @@ -1 +1 @@ -1.10.27-1 java/ +1.10.28-1 java/
commit 36c64513d68cad3a3973d76de91529f473afdd15 Author: Stephen Herr sherr@redhat.com Date: Fri Mar 22 15:34:41 2013 -0400
Client tools able to pass up socket info
diff --git a/backend/server/handlers/xmlrpc/up2date.py b/backend/server/handlers/xmlrpc/up2date.py index 83ca23b..def45d9 100644 --- a/backend/server/handlers/xmlrpc/up2date.py +++ b/backend/server/handlers/xmlrpc/up2date.py @@ -18,7 +18,6 @@ # system module import import time import string -import inspect
from rhn import rpclib from types import ListType, TupleType, StringType, IntType @@ -30,8 +29,8 @@ from spacewalk.common.rhnTranslate import _ from spacewalk.server.rhnLib import computeSignature from spacewalk.server.rhnHandler import rhnHandler from spacewalk.server import rhnChannel, rhnPackage, rhnDependency,\ - rhnCapability, rhnServer, rhnSQL -from spacewalk.server.rhnServer import server_route, server_hardware + rhnCapability +from spacewalk.server.rhnServer import server_route
import re NONSUBSCRIBABLE_CHANNELS = re.compile("(rhn-proxy|rhn-satellite)") @@ -54,7 +53,6 @@ class Up2date(rhnHandler): # (getting headers, source and packages done with GETs now). self.functions.append('login') self.functions.append('listChannels') - self.functions.append('reportSockets') self.functions.append('subscribeChannels') self.functions.append('unsubscribeChannels') self.functions.append('history') @@ -145,26 +143,6 @@ class Up2date(rhnHandler): return loginDict
- def reportSockets(self, system_id, num_sockets): - """ Clients v2+ """ - log_debug(5, system_id) - # Authenticate the system certificate - self.auth_system('reportSockets', system_id) - server = rhnServer.search(self.server_id) - server.reload_hardware() - # there can only be one CPUDevice per system, - # see hash fe46f64d - [cpu_device] = server.hardware_by_class(server_hardware.CPUDevice) - cpu_device.data["nrsocket"] = num_sockets - cpu_device.status = 1 # mark as dirty - # log the entry - log_debug(1, "about to save %s" % self.server_id) - cpu_device.save(self.server_id) - rhnSQL.commit() - log_debug(1, "saved %s" % self.server_id) - return "reported %s sockets" % num_sockets - - def listChannels(self, system_id): """ Clients v2+ """ log_debug(5, system_id) diff --git a/client/rhel/rhn-client-tools/src/up2date_client/hardware.py b/client/rhel/rhn-client-tools/src/up2date_client/hardware.py index bee609c..2b9e5ba 100644 --- a/client/rhel/rhn-client-tools/src/up2date_client/hardware.py +++ b/client/rhel/rhn-client-tools/src/up2date_client/hardware.py @@ -50,6 +50,13 @@ try: except ImportError: locale = None
+sys.path.append("/usr/share/rhsm") +try: + from subscription_manager.hwprobe import Hardware as SubManHardware + subscription_manager_available = True +except ImportError: + subscription_manager_available = False + # this does not change, we can cache it _dmi_data = None _dmi_not_available = 0 @@ -157,6 +164,61 @@ def cpu_count(): re_cpu = re.compile(r"^cpu[0-9]+$") return len([i for i in cpu_dir if re_cpu.match(i)])
+# get the number of sockets available on this machine +def __get_number_sockets(): + try: + if subscription_manager_available: + return SubManHardware().getCpuInfo()['cpu.cpu_socket(s)'] + except: + pass # something went wrong, let's figure it out ourselves + + number_sockets = 0 + # Try lscpu command if available + if os.access("/usr/bin/lscpu", os.X_OK): + try: + lines = os.popen("/usr/bin/lscpu -p").readlines() + max_socket_index = -1 + for line in lines: + if line.startswith('#'): + continue + # get the socket index from the output + socket_index = int(line.split(',')[2]) + if socket_index > max_socket_index: + max_socket_index = socket_index + if max_socket_index > -1: + return 1 + max_socket_index + except: + pass + + # Next try parsing /proc/cpuinfo + if os.access("/proc/cpuinfo", os.R_OK): + try: + lines = open("/proc/cpuinfo", 'r').readlines() + max_socket_index = -1 + for line in lines: + if 'physical id' in line: + socket_index = int(line.split(':')[1].strip()) + if socket_index > max_socket_index: + max_socket_index = socket_index + if max_socket_index > -1: + return 1 + max_socket_index + except: + pass + + # Next try dmidecode + if os.access("/usr/sbin/dmidecode", os.X_OK): + try: + lines = os.popen("/usr/sbin/dmidecode -t processor").readlines() + count = 0 + for line in lines: + if 'Processor Information' in line: + count += 1 + if count > 0: + return count + except: + pass + + return None
# This has got to be one of the ugliest fucntions alive def read_cpuinfo(): @@ -337,6 +399,11 @@ def read_cpuinfo(): else: if hwdict["count"] == 0: # we have at least one hwdict["count"] = 1 + + # If we know it add in the number of sockets + number_sockets = __get_number_sockets() + if number_sockets: + hwdict['socket_count'] = number_sockets
# This whole things hurts a lot. return hwdict diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/CpuSerializer.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/CpuSerializer.java index 7236b4e..1c598dc 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/CpuSerializer.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/CpuSerializer.java @@ -39,6 +39,7 @@ import redstone.xmlrpc.XmlRpcSerializer; * #prop("string", "arch") * #prop("string", "stepping") * #prop("string", "count") + * #prop("int", "socket_count (if available)") * #struct_end() * */
commit 69016b8a4d4a07d2869d92e35ea90e939a291b96 Author: Christopher Duryee cduryee@redhat.com Date: Fri Mar 22 14:40:49 2013 -0400
add python and java xmlrpc handlers for cpu socket info (cherry picked from commit f61ada6151905dd2c6a7219faae99ae1a4f69e1d)
diff --git a/backend/server/handlers/xmlrpc/up2date.py b/backend/server/handlers/xmlrpc/up2date.py index def45d9..83ca23b 100644 --- a/backend/server/handlers/xmlrpc/up2date.py +++ b/backend/server/handlers/xmlrpc/up2date.py @@ -18,6 +18,7 @@ # system module import import time import string +import inspect
from rhn import rpclib from types import ListType, TupleType, StringType, IntType @@ -29,8 +30,8 @@ from spacewalk.common.rhnTranslate import _ from spacewalk.server.rhnLib import computeSignature from spacewalk.server.rhnHandler import rhnHandler from spacewalk.server import rhnChannel, rhnPackage, rhnDependency,\ - rhnCapability -from spacewalk.server.rhnServer import server_route + rhnCapability, rhnServer, rhnSQL +from spacewalk.server.rhnServer import server_route, server_hardware
import re NONSUBSCRIBABLE_CHANNELS = re.compile("(rhn-proxy|rhn-satellite)") @@ -53,6 +54,7 @@ class Up2date(rhnHandler): # (getting headers, source and packages done with GETs now). self.functions.append('login') self.functions.append('listChannels') + self.functions.append('reportSockets') self.functions.append('subscribeChannels') self.functions.append('unsubscribeChannels') self.functions.append('history') @@ -143,6 +145,26 @@ class Up2date(rhnHandler): return loginDict
+ def reportSockets(self, system_id, num_sockets): + """ Clients v2+ """ + log_debug(5, system_id) + # Authenticate the system certificate + self.auth_system('reportSockets', system_id) + server = rhnServer.search(self.server_id) + server.reload_hardware() + # there can only be one CPUDevice per system, + # see hash fe46f64d + [cpu_device] = server.hardware_by_class(server_hardware.CPUDevice) + cpu_device.data["nrsocket"] = num_sockets + cpu_device.status = 1 # mark as dirty + # log the entry + log_debug(1, "about to save %s" % self.server_id) + cpu_device.save(self.server_id) + rhnSQL.commit() + log_debug(1, "saved %s" % self.server_id) + return "reported %s sockets" % num_sockets + + def listChannels(self, system_id): """ Clients v2+ """ log_debug(5, system_id) diff --git a/backend/server/rhnServer/server_hardware.py b/backend/server/rhnServer/server_hardware.py index 8d44e1a..744a75a 100644 --- a/backend/server/rhnServer/server_hardware.py +++ b/backend/server/rhnServer/server_hardware.py @@ -326,7 +326,7 @@ class CPUDevice(Device): fields = ['cpu_arch_id', 'architecture', 'bogomips', 'cache', 'family', 'mhz', 'stepping', 'flags', 'model', 'version', 'vendor', 'nrcpu', 'acpiVersion', - 'apic', 'apmVersion', 'chipset'] + 'apic', 'apmVersion', 'chipset', 'nrsocket'] mapping = { "bogomips" : "bogomips", "cache" : "cache", @@ -339,6 +339,7 @@ class CPUDevice(Device): "model_version" : "version", "speed" : "mhz", "count" : "nrcpu", + "socket_count" : "nrsocket", "other" : "flags", "desc" : None, 'class' : None, @@ -904,7 +905,8 @@ class Hardware: _l.append(new_dev) self.__changed = 1 return 0 - + + def delete_hardware(self, sysid = None): """ This function deletes all hardware. """ log_debug(4, sysid) diff --git a/java/code/src/com/redhat/rhn/domain/server/CPU.hbm.xml b/java/code/src/com/redhat/rhn/domain/server/CPU.hbm.xml index 57d4193..a1a90a8 100644 --- a/java/code/src/com/redhat/rhn/domain/server/CPU.hbm.xml +++ b/java/code/src/com/redhat/rhn/domain/server/CPU.hbm.xml @@ -27,6 +27,7 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" <property name="chipSet" column="chipset" type="string" length="64" />
<property name="nrCPU" column="nrcpu" type="long"/> + <property name="nrsocket" column="nrsocket" type="long"/>
<property name="created" column="created" type="timestamp" insert="false" update="false"/> @@ -46,4 +47,4 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
</class> -</hibernate-mapping> \ No newline at end of file +</hibernate-mapping> diff --git a/java/code/src/com/redhat/rhn/domain/server/CPU.java b/java/code/src/com/redhat/rhn/domain/server/CPU.java index 581c3ac..6fc5cfa 100644 --- a/java/code/src/com/redhat/rhn/domain/server/CPU.java +++ b/java/code/src/com/redhat/rhn/domain/server/CPU.java @@ -34,6 +34,7 @@ public class CPU extends BaseDomainHelper { private String version; private String vendor; private Long nrCPU; + private Long nrsocket; private String acpiVersion; private String apic; private String apmVersion; @@ -224,6 +225,20 @@ public class CPU extends BaseDomainHelper { }
/** + * @return Returns the nrsocket. + */ + public Long getNrsocket() { + return nrsocket; + } + + /** + * @param nrSocketIn The nrSocket to set. + */ + public void setNrsocket(Long nrsocketIn) { + this.nrsocket = nrsocketIn; + } + + /** * @return Returns the server. */ public Server getServer() { diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/CpuSerializer.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/CpuSerializer.java index 9ab31ac..7236b4e 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/CpuSerializer.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/serializer/CpuSerializer.java @@ -68,6 +68,7 @@ public class CpuSerializer implements XmlRpcCustomSerializer { helper.add("arch", cpu.getArchName()); helper.add("stepping", cpu.getStepping()); helper.add("count", cpu.getNrCPU()); + helper.add("socket_count", cpu.getNrsocket()); helper.writeTo(output); }
commit 7ccda3c0bc634e96a572c4530d6839c4b7e00505 Author: Christopher Duryee cduryee@redhat.com Date: Fri Mar 22 14:34:15 2013 -0400
add nrsocket to rhncpu (cherry picked from commit 57167b36447816d0e26a1cc6301c6a4276e2239a)
diff --git a/schema/spacewalk/common/tables/rhnCpu.sql b/schema/spacewalk/common/tables/rhnCpu.sql index 85b9924..36231d0 100644 --- a/schema/spacewalk/common/tables/rhnCpu.sql +++ b/schema/spacewalk/common/tables/rhnCpu.sql @@ -36,6 +36,8 @@ CREATE TABLE rhnCpu vendor VARCHAR2(32), nrcpu NUMBER DEFAULT (1), + nrsocket NUMBER + DEFAULT (1), acpiVersion VARCHAR2(64), apic VARCHAR2(32), apmVersion VARCHAR2(32), diff --git a/schema/spacewalk/upgrade/spacewalk-schema-1.9-to-spacewalk-schema-1.10/010-add_rhncpu_nrsocket.sql.oracle b/schema/spacewalk/upgrade/spacewalk-schema-1.9-to-spacewalk-schema-1.10/010-add_rhncpu_nrsocket.sql.oracle new file mode 100644 index 0000000..36cf0c6 --- /dev/null +++ b/schema/spacewalk/upgrade/spacewalk-schema-1.9-to-spacewalk-schema-1.10/010-add_rhncpu_nrsocket.sql.oracle @@ -0,0 +1,2 @@ +ALTER TABLE rhnCpu + ADD nrsocket NUMBER; diff --git a/schema/spacewalk/upgrade/spacewalk-schema-1.9-to-spacewalk-schema-1.10/010-add_rhncpu_nrsocket.sql.postgresql b/schema/spacewalk/upgrade/spacewalk-schema-1.9-to-spacewalk-schema-1.10/010-add_rhncpu_nrsocket.sql.postgresql new file mode 100644 index 0000000..9eb1edc --- /dev/null +++ b/schema/spacewalk/upgrade/spacewalk-schema-1.9-to-spacewalk-schema-1.10/010-add_rhncpu_nrsocket.sql.postgresql @@ -0,0 +1,3 @@ +-- oracle equivalent source sha1 c9998dc4e416dc187bd61828c345991580dac5dd + +alter table rhnCpu add column nrsocket NUMERIC
spacewalk-commits@lists.fedorahosted.org