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(a)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/%{name}-%{version}.tar.gz
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(a)redhat.com> 1.10.2-1
+- Client tools able to pass up socket info
+
* Wed Mar 20 2013 Miroslav Suchý <msuchy(a)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(a)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/%{name}-%{version}.tar.gz
@@ -638,6 +638,10 @@ rm -f %{rhnconf}/rhnSecret.py*
# $Id$
%changelog
+* Mon Mar 25 2013 Stephen Herr <sherr(a)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(a)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/%{name}-%{version}.tar.gz
@@ -678,6 +678,10 @@ fi
%{jardir}/postgresql-jdbc.jar
%changelog
+* Mon Mar 25 2013 Stephen Herr <sherr(a)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(a)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(a)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(a)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(a)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