backend/satellite_tools
by Pradeep Kilambi
backend/satellite_tools/spacewalk-debug | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
New commits:
commit 2581fc52c598cda311bc959d4f306ce0c60e44c3
Author: Pradeep Kilambi <pkilambi(a)redhat.com>
Date: Fri Jul 31 12:57:37 2009 -0400
505559 - spacewalk-debug now captures database tablespace usage report
diff --git a/backend/satellite_tools/spacewalk-debug b/backend/satellite_tools/spacewalk-debug
index 68e5d7e..8372440 100755
--- a/backend/satellite_tools/spacewalk-debug
+++ b/backend/satellite_tools/spacewalk-debug
@@ -192,9 +192,12 @@ echo " * querying RPM database (versioning of Spacewalk, etc.)"
rpm -qa --last > $DIR/rpm-manifest
rpm -qa | sort > $DIR/rpm-manifest-clean
-echo " * querying schema version and database charactersets"
+echo " * querying schema version, database charactersets and database"
/usr/bin/rhn-schema-version > $DIR/database-schema-version
/usr/bin/rhn-charsets > $DIR/database-character-sets
+if [ -f /usr/bin/db-control ] ; then
+ /bin/su - oracle -c "/usr/bin/db-control report" > $DIR/db-control-report
+fi
echo " * get diskspace available"
df -h > $DIR/diskinfo
14 years, 8 months
Branch 'VADER' - java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartManagerTest.java | 5 +++++
1 file changed, 5 insertions(+)
New commits:
commit 27f8d3d4ffdaed9563d86827984579a3355337d7
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Fri Jul 31 11:38:59 2009 -0400
unit test fixes
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartManagerTest.java b/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartManagerTest.java
index be5055b..02db5a1 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartManagerTest.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartManagerTest.java
@@ -43,6 +43,7 @@ public class KickstartManagerTest extends BaseTestCaseWithUser {
NetworkInterface nic = new NetworkInterface();
nic.setName("eth0");
nic.setIpaddr("192.168.0.5");
+ nic.setHwaddr("aa:aa:aa");
nic.setServer(serv);
serv.getNetworkInterfaces().add(nic);
@@ -71,12 +72,14 @@ public class KickstartManagerTest extends BaseTestCaseWithUser {
NetworkInterface nic = new NetworkInterface();
nic.setName("eth0");
nic.setIpaddr("192.168.1.5"); //not in range
+ nic.setHwaddr("aa:aa:aa");
nic.setServer(serv);
serv.getNetworkInterfaces().add(nic);
nic = new NetworkInterface();
nic.setName("eth1");
nic.setIpaddr("192.168.0.5"); //in range
+ nic.setHwaddr("aa:aa:aa");
nic.setServer(serv);
serv.getNetworkInterfaces().add(nic);
@@ -109,6 +112,7 @@ public class KickstartManagerTest extends BaseTestCaseWithUser {
Server serv = ServerFactoryTest.createTestServer(user);
NetworkInterface nic = new NetworkInterface();
nic.setName("eth0");
+ nic.setHwaddr("aa:aa:aa");
nic.setIpaddr("192.168.1.5"); //not in range
nic.setServer(serv);
serv.getNetworkInterfaces().add(nic);
@@ -139,6 +143,7 @@ public class KickstartManagerTest extends BaseTestCaseWithUser {
NetworkInterface nic = new NetworkInterface();
nic.setName("eth0");
nic.setIpaddr("192.168.1.5"); //not in range
+ nic.setHwaddr("aa:aa:aa");
nic.setServer(serv);
serv.getNetworkInterfaces().add(nic);
14 years, 8 months
java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartManagerTest.java | 5 +++++
1 file changed, 5 insertions(+)
New commits:
commit 11cf2cb61449b72fe97e1604170387cc9045ced3
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Fri Jul 31 11:38:59 2009 -0400
unit test fixes
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartManagerTest.java b/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartManagerTest.java
index be5055b..02db5a1 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartManagerTest.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartManagerTest.java
@@ -43,6 +43,7 @@ public class KickstartManagerTest extends BaseTestCaseWithUser {
NetworkInterface nic = new NetworkInterface();
nic.setName("eth0");
nic.setIpaddr("192.168.0.5");
+ nic.setHwaddr("aa:aa:aa");
nic.setServer(serv);
serv.getNetworkInterfaces().add(nic);
@@ -71,12 +72,14 @@ public class KickstartManagerTest extends BaseTestCaseWithUser {
NetworkInterface nic = new NetworkInterface();
nic.setName("eth0");
nic.setIpaddr("192.168.1.5"); //not in range
+ nic.setHwaddr("aa:aa:aa");
nic.setServer(serv);
serv.getNetworkInterfaces().add(nic);
nic = new NetworkInterface();
nic.setName("eth1");
nic.setIpaddr("192.168.0.5"); //in range
+ nic.setHwaddr("aa:aa:aa");
nic.setServer(serv);
serv.getNetworkInterfaces().add(nic);
@@ -109,6 +112,7 @@ public class KickstartManagerTest extends BaseTestCaseWithUser {
Server serv = ServerFactoryTest.createTestServer(user);
NetworkInterface nic = new NetworkInterface();
nic.setName("eth0");
+ nic.setHwaddr("aa:aa:aa");
nic.setIpaddr("192.168.1.5"); //not in range
nic.setServer(serv);
serv.getNetworkInterfaces().add(nic);
@@ -139,6 +143,7 @@ public class KickstartManagerTest extends BaseTestCaseWithUser {
NetworkInterface nic = new NetworkInterface();
nic.setName("eth0");
nic.setIpaddr("192.168.1.5"); //not in range
+ nic.setHwaddr("aa:aa:aa");
nic.setServer(serv);
serv.getNetworkInterfaces().add(nic);
14 years, 8 months
selinux/oracle-xe-selinux
by Jan Pazdziora
selinux/oracle-xe-selinux/oracle-xe.te | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
New commits:
commit 7e3ec61738a5a858eebeffceee00681f8c15ef37
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Fri Jul 31 16:08:58 2009 +0200
Use rw_files_pattern instead of direct allows, to get open on Fedora 12.
Addressing:
avc: denied { open } for pid=2673 comm="oracle" name="init.ora" dev=dm-0 ino=133004 scontext=unconfined_u:system_r:oracle_db_t:s0 tcontext=user_u:object_r:oracle_sqlplus_log_t:s0 tclass=file
diff --git a/selinux/oracle-xe-selinux/oracle-xe.te b/selinux/oracle-xe-selinux/oracle-xe.te
index db49772..7094acf 100644
--- a/selinux/oracle-xe-selinux/oracle-xe.te
+++ b/selinux/oracle-xe-selinux/oracle-xe.te
@@ -12,8 +12,7 @@ require {
type initrc_t;
}
-allow oracle_db_t oracle_sqlplus_log_t:file { read write getattr };
-allow oracle_db_t oracle_sqlplus_log_t:dir { search };
+rw_files_pattern(oracle_db_t, oracle_sqlplus_log_t, oracle_sqlplus_log_t)
dontaudit oracle_db_t devpts_t:chr_file { ioctl };
14 years, 8 months
selinux/oracle-xe-selinux
by Jan Pazdziora
selinux/oracle-xe-selinux/oracle-xe.te | 2 --
1 file changed, 2 deletions(-)
New commits:
commit 5fedf9d61819ca5707682be6e5c28115b5421f38
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Fri Jul 31 15:58:31 2009 +0200
The allow oracle_db_t oracle_sqlplus_log_t:file { write } is already specified above.
diff --git a/selinux/oracle-xe-selinux/oracle-xe.te b/selinux/oracle-xe-selinux/oracle-xe.te
index 1e83875..db49772 100644
--- a/selinux/oracle-xe-selinux/oracle-xe.te
+++ b/selinux/oracle-xe-selinux/oracle-xe.te
@@ -27,8 +27,6 @@ allow oracle_tnslsnr_t oracle_db_t:unix_stream_socket connectto;
allow oracle_sqlplus_t oracle_db_log_t:dir search;
-allow oracle_db_t oracle_sqlplus_log_t:file write;
-
dontaudit oracle_tnslsnr_t http_cache_port_t:tcp_socket name_bind;
allow oracle_db_t initrc_t:fifo_file { read ioctl };
14 years, 8 months
selinux/oracle-selinux
by Jan Pazdziora
selinux/oracle-selinux/oracle-selinux.spec | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
New commits:
commit 9d00a40b9096c1fc02305cc3c65b9f320992a600
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Fri Jul 31 15:15:31 2009 +0200
/usr/sbin/oracle-nofcontext-selinux-enable needs semanage, let's add it to Requires everywhere.
diff --git a/selinux/oracle-selinux/oracle-selinux.spec b/selinux/oracle-selinux/oracle-selinux.spec
index ec31aa0..760d25e 100644
--- a/selinux/oracle-selinux/oracle-selinux.spec
+++ b/selinux/oracle-selinux/oracle-selinux.spec
@@ -36,8 +36,8 @@ BuildArch: noarch
%if "%{selinux_policyver}" != ""
Requires: selinux-policy >= %{selinux_policyver}
%endif
-Requires(post): /usr/sbin/semodule, /sbin/restorecon
-Requires(postun): /usr/sbin/semodule, /sbin/restorecon
+Requires(post): /usr/sbin/semanage, /usr/sbin/semodule, /sbin/restorecon
+Requires(postun): /usr/sbin/semanage, /usr/sbin/semodule, /sbin/restorecon
Obsoletes: oracle-10gR2-selinux
%description
@@ -52,8 +52,8 @@ Requires: selinux-policy >= %{selinux_policyver}
%if 0%{?rhel} == 5
Requires: selinux-policy >= 2.4.6-80
%endif
-Requires(post): /usr/sbin/semodule, /sbin/restorecon, /usr/sbin/selinuxenabled
-Requires(postun): /usr/sbin/semodule, /sbin/restorecon
+Requires(post): /usr/sbin/semanage, /usr/sbin/semodule, /sbin/restorecon, /usr/sbin/selinuxenabled
+Requires(postun): /usr/sbin/semanage, /usr/sbin/semodule, /sbin/restorecon
Conflicts: oracle-selinux
%description -n oracle-nofcontext-selinux
14 years, 8 months
spacewalk/setup
by Jan Pazdziora
spacewalk/setup/lib/Spacewalk/Setup.pm | 1 -
1 file changed, 1 deletion(-)
New commits:
commit 86a120213c5626cf0024aae93381f23e9e84fe8e
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Fri Jul 31 12:53:22 2009 +0200
No --log option, print_progress does logging for us, sqlplus should print to STDOUT/STDERR.
Addressing:
avc: denied { write } for pid=4773 comm="sqlplus" path="/var/log/rhn/populate_db.log" dev=xvda1 ino=1036318 scontext=root:system_r:oracle_sqlplus_t:s0-s0:c0.c1023 tcontext=system_u:object_r:spacewalk_install_log_t:s0 tclass=file
diff --git a/spacewalk/setup/lib/Spacewalk/Setup.pm b/spacewalk/setup/lib/Spacewalk/Setup.pm
index 08601d0..ed86b8e 100644
--- a/spacewalk/setup/lib/Spacewalk/Setup.pm
+++ b/spacewalk/setup/lib/Spacewalk/Setup.pm
@@ -1240,7 +1240,6 @@ sub oracle_populate_db {
sprintf('--database=%s', @{$answers}{'db-sid'}),
sprintf('--host=%s', @{$answers}{'db-host'}),
sprintf("--schema-deploy-file=$sat_schema_deploy"),
- sprintf("--log=$logfile"),
sprintf('--nofork'),
);
14 years, 8 months
Branch 'repo-sync' - 3 commits - backend/satellite_tools java/code
by Justin Sherrill
backend/satellite_tools/reposync.py | 4 -
java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java | 3 -
java/code/src/com/redhat/rhn/frontend/action/channel/manage/EditChannelAction.java | 8 ++
java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java | 27 ++++++----
4 files changed, 28 insertions(+), 14 deletions(-)
New commits:
commit cb96846c44dd4a9edb6bebf809043f4b38206d6f
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Jul 30 18:11:31 2009 -0400
some repo sync task fixes
diff --git a/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java b/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java
index 4160ba1..1002d2f 100644
--- a/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java
+++ b/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java
@@ -145,7 +145,8 @@ public class ConfigDefaults {
public static final String VIRT_DISK = "kickstart.virt_disk_size_gb";
public static final String KICKSTART_NETWORK_INTERFACE = "kickstart.default_interface";
- public static final String SPACEWALK_REPO_SYNC_PATH = "spacewalk_repo_sync_path";
+ public static final String SPACEWALK_REPOSYNC_PATH = "spacewalk_reposync_path";
+ public static final String SPACEWALK_REPOSYNC_LOG_FILE = "spacewalk_reposync_logfile";
private ConfigDefaults() {
}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/channel/manage/EditChannelAction.java b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/EditChannelAction.java
index 6f913d1..ba3ae7d 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/channel/manage/EditChannelAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/EditChannelAction.java
@@ -335,7 +335,9 @@ public class EditChannelAction extends RhnAction implements Listable {
ucc.setAccess((String)form.get("org_sharing"));
ucc.setYumUrl((String) form.getString("yum_repo"));
ucc.setRepoLabel((String) form.getString("repo_label"));
- ucc.setSyncRepo((Boolean)form.get("sync_repo"));
+ if (form.get("sync_repo") != null) {
+ ucc.setSyncRepo((Boolean)form.get("sync_repo"));
+ }
String parent = (String)form.get("parent");
if (parent == null || parent.equals("")) {
@@ -408,7 +410,9 @@ public class EditChannelAction extends RhnAction implements Listable {
ccc.setAccess((String)form.get("org_sharing"));
ccc.setYumUrl((String) form.getString("yum_repo"));
ccc.setRepoLabel((String) form.getString("repo_label"));
- ccc.setSyncRepo((Boolean)form.get("sync_repo"));
+ if (form.get("sync_repo") != null) {
+ ccc.setSyncRepo((Boolean)form.get("sync_repo"));
+ }
String parent = (String)form.get("parent");
if (parent == null || parent.equals("")) {
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java b/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
index 98c3272..40a4c2c 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
@@ -95,18 +95,19 @@ public class RepoSyncTask implements Job {
private static List<String> getSyncCommand(ContentSource src) {
List<String> cmd = new ArrayList<String>();
- cmd.add(Config.get().getString(ConfigDefaults.SPACEWALK_REPO_SYNC_PATH,
+ cmd.add(Config.get().getString(ConfigDefaults.SPACEWALK_REPOSYNC_PATH,
"/usr/bin/spacewalk-repo-sync"));
- cmd.add("-c");
+ cmd.add("--channel");
cmd.add(src.getChannel().getLabel());
- cmd.add("-u");
+ cmd.add("--url");
cmd.add(src.getSourceUrl());
- cmd.add("-t");
+ cmd.add("--type");
cmd.add(src.getType().getLabel());
- cmd.add("-l");
+ cmd.add("--label");
cmd.add(src.getLabel());
- cmd.add("-g");
- cmd.add("/var/log/rhn/rhn_reposync.log");
+ cmd.add("--logfile");
+ cmd.add(Config.get().getString(ConfigDefaults.SPACEWALK_REPOSYNC_LOG_FILE,
+ "/var/log/rhn/rhn_reposync.log"));
return cmd;
}
commit 0c0b1227c5e534232f49d435ff7e8f7f0b0c1938
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Jul 30 17:39:06 2009 -0400
updating task to include log file and more logging
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java b/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
index fdbe9e4..98c3272 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
@@ -27,6 +27,7 @@ import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -63,23 +64,28 @@ public class RepoSyncTask implements Job {
throws JobExecutionException {
for (Task task : TaskFactory.listTasks(DISPLAY_NAME)) {
-
ContentSource src = ChannelFactory.lookupContentSource(task.getData());
+ if (log.isInfoEnabled()) {
+ log.info("Syncing repo " + src.getSourceUrl() + " to channel "
+ + src.getChannel().getLabel());
+ }
if (src == null) {
log.error("Content Source could not be found: " + task.getData());
continue;
}
try {
-
Process p = Runtime.getRuntime().exec(
- (String[]) getSyncCommand(src).toArray());
+ getSyncCommand(src).toArray(new String[0]));
p.waitFor();
+
}
catch (IOException e) {
+ log.fatal(e.getMessage());
e.printStackTrace();
}
catch (InterruptedException e) {
+ log.fatal(e.getMessage());
e.printStackTrace();
}
src.setLastSynced(new Date());
@@ -90,7 +96,7 @@ public class RepoSyncTask implements Job {
private static List<String> getSyncCommand(ContentSource src) {
List<String> cmd = new ArrayList<String>();
cmd.add(Config.get().getString(ConfigDefaults.SPACEWALK_REPO_SYNC_PATH,
- "/usr/sbin/spacewalk-repo-sync"));
+ "/usr/bin/spacewalk-repo-sync"));
cmd.add("-c");
cmd.add(src.getChannel().getLabel());
cmd.add("-u");
@@ -99,6 +105,8 @@ public class RepoSyncTask implements Job {
cmd.add(src.getType().getLabel());
cmd.add("-l");
cmd.add(src.getLabel());
+ cmd.add("-g");
+ cmd.add("/var/log/rhn/rhn_reposync.log");
return cmd;
}
commit 57112cb536f9142d35aa1030b41cb27b34863627
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Jul 30 17:38:38 2009 -0400
making the logging a bit cleaner
diff --git a/backend/satellite_tools/reposync.py b/backend/satellite_tools/reposync.py
index 053a8c4..9418a78 100644
--- a/backend/satellite_tools/reposync.py
+++ b/backend/satellite_tools/reposync.py
@@ -203,13 +203,13 @@ class RepoSync:
def print_msg(self, message):
if self.log_file:
- rhnLog.log_debug(0, message)
+ rhnLog.log_clean(0, message)
print message
def error_msg(self, message):
if self.log_file:
- rhnLog.log_debug(0, message)
+ rhnLog.log_clean(0, message)
sys.stderr.write(message)
class ContentPackage:
14 years, 8 months
Branch 'repo-sync' - backend/satellite_tools
by Justin Sherrill
backend/satellite_tools/repo_plugins/yum_src.py | 2 +-
backend/satellite_tools/reposync.py | 15 ++++++++++-----
2 files changed, 11 insertions(+), 6 deletions(-)
New commits:
commit 2280dc149ddc31deca55e97c8bd1b7393e0ccf20
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Jul 30 16:09:15 2009 -0400
fixing some import things to actually work on an installed system
diff --git a/backend/satellite_tools/repo_plugins/yum_src.py b/backend/satellite_tools/repo_plugins/yum_src.py
index 77c6f57..a9c0ad6 100644
--- a/backend/satellite_tools/repo_plugins/yum_src.py
+++ b/backend/satellite_tools/repo_plugins/yum_src.py
@@ -16,7 +16,7 @@
import yum
import shutil
from yum import config
-from reposync import ContentPackage
+from satellite_tools.reposync import ContentPackage
class ContentSource:
url = None
diff --git a/backend/satellite_tools/reposync.py b/backend/satellite_tools/reposync.py
index e5074b0..053a8c4 100644
--- a/backend/satellite_tools/reposync.py
+++ b/backend/satellite_tools/reposync.py
@@ -39,6 +39,7 @@ class RepoSync:
rhnSQL.initDB(db_string)
(options, args) = self.process_args()
+
quit = False
if not options.url:
quit = True
@@ -53,6 +54,12 @@ class RepoSync:
quit = True
print("--label must be specified")
+ self.log_file = options.logfile
+ if self.log_file:
+ rhnLog.initLOG(self.log_file)
+
+ self.error_msg(str(sys.argv))
+
if quit:
sys.exit(1)
@@ -71,8 +78,6 @@ class RepoSync:
sys.exit(1)
- if self.log_file:
- rhnLog.initLOG(self.log_file)
self.plugin = self.load_plugin()(self.url, self.channel_label + "-" + self.repo_label)
self.import_packages(self.plugin.list_packages())
@@ -88,10 +93,10 @@ class RepoSync:
return self.parser.parse_args()
def load_plugin(self):
- sys.path.append("repo_plugins")
name = self.type + "_src"
- mod = __import__(name)
- return getattr(mod, "ContentSource")
+ mod = __import__('satellite_tools.repo_plugins', globals(), locals(), [name])
+ submod = getattr(mod, name)
+ return getattr(submod, "ContentSource")
def import_packages(self, packages):
to_link = []
14 years, 8 months
Branch 'repo-sync' - 2 commits - backend/satellite_tools java/code
by Justin Sherrill
backend/satellite_tools/repo_plugins/yum_src.py | 17 +-
backend/satellite_tools/reposync.py | 69 +++++++---
java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java | 2
java/code/src/com/redhat/rhn/frontend/action/channel/manage/EditChannelAction.java | 2
java/code/src/com/redhat/rhn/manager/channel/CreateChannelCommand.java | 18 ++
java/code/src/com/redhat/rhn/manager/channel/UpdateChannelCommand.java | 8 -
java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java | 20 ++
java/code/webapp/WEB-INF/pages/channel/manage/edit.jsp | 16 +-
8 files changed, 112 insertions(+), 40 deletions(-)
New commits:
commit f842a5b42266b3ad09929a9b5d524cbd65470bb7
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Jul 30 13:23:47 2009 -0400
adding sync repo option to channel details, and taskomatic task
diff --git a/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java b/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java
index d1e5065..4160ba1 100644
--- a/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java
+++ b/java/code/src/com/redhat/rhn/common/conf/ConfigDefaults.java
@@ -145,6 +145,8 @@ public class ConfigDefaults {
public static final String VIRT_DISK = "kickstart.virt_disk_size_gb";
public static final String KICKSTART_NETWORK_INTERFACE = "kickstart.default_interface";
+ public static final String SPACEWALK_REPO_SYNC_PATH = "spacewalk_repo_sync_path";
+
private ConfigDefaults() {
}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/channel/manage/EditChannelAction.java b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/EditChannelAction.java
index baa0737..6f913d1 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/channel/manage/EditChannelAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/channel/manage/EditChannelAction.java
@@ -335,6 +335,7 @@ public class EditChannelAction extends RhnAction implements Listable {
ucc.setAccess((String)form.get("org_sharing"));
ucc.setYumUrl((String) form.getString("yum_repo"));
ucc.setRepoLabel((String) form.getString("repo_label"));
+ ucc.setSyncRepo((Boolean)form.get("sync_repo"));
String parent = (String)form.get("parent");
if (parent == null || parent.equals("")) {
@@ -407,6 +408,7 @@ public class EditChannelAction extends RhnAction implements Listable {
ccc.setAccess((String)form.get("org_sharing"));
ccc.setYumUrl((String) form.getString("yum_repo"));
ccc.setRepoLabel((String) form.getString("repo_label"));
+ ccc.setSyncRepo((Boolean)form.get("sync_repo"));
String parent = (String)form.get("parent");
if (parent == null || parent.equals("")) {
diff --git a/java/code/src/com/redhat/rhn/manager/channel/CreateChannelCommand.java b/java/code/src/com/redhat/rhn/manager/channel/CreateChannelCommand.java
index 0ea6469..275dd45 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/CreateChannelCommand.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/CreateChannelCommand.java
@@ -18,12 +18,14 @@ import com.redhat.rhn.domain.channel.Channel;
import com.redhat.rhn.domain.channel.ChannelArch;
import com.redhat.rhn.domain.channel.ChannelFactory;
import com.redhat.rhn.domain.role.RoleFactory;
+import com.redhat.rhn.domain.task.TaskFactory;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.frontend.xmlrpc.InvalidChannelLabelException;
import com.redhat.rhn.frontend.xmlrpc.InvalidChannelNameException;
import com.redhat.rhn.frontend.xmlrpc.InvalidGPGKeyException;
import com.redhat.rhn.frontend.xmlrpc.InvalidGPGUrlException;
import com.redhat.rhn.frontend.xmlrpc.InvalidParentChannelException;
+import com.redhat.rhn.taskomatic.task.RepoSyncTask;
import org.apache.commons.lang.StringUtils;
@@ -69,6 +71,7 @@ public class CreateChannelCommand {
protected String access = Channel.PRIVATE;
protected String yumUrl;
protected String repoLabel;
+ protected boolean syncRepo = false;
@@ -261,6 +264,7 @@ public class CreateChannelCommand {
c.setMaintainerEmail(maintainerEmail);
c.setMaintainerPhone(maintainerPhone);
c.setSupportPolicy(supportPolicy);
+ c.setYumContentSource(yumUrl, repoLabel);
// handles either parent id or label
setParentChannel(c, user, parentLabel, parentId);
@@ -271,9 +275,11 @@ public class CreateChannelCommand {
ChannelFactory.save(c);
ChannelFactory.refreshNewestPackageCache(c, WEB_CHANNEL_CREATED);
-
- c.setYumContentSource(yumUrl, repoLabel);
+ if (syncRepo && !c.getContentSources().isEmpty()) {
+ TaskFactory.createTask(user.getOrg(), RepoSyncTask.DISPLAY_NAME,
+ c.getContentSources().iterator().next().getId());
+ }
return c;
}
@@ -449,5 +455,13 @@ public class CreateChannelCommand {
public void setRepoLabel(String repoLabelIn) {
this.repoLabel = repoLabelIn;
}
+
+
+ /**
+ * @param syncRepoIn The syncRepo to set.
+ */
+ public void setSyncRepo(boolean syncRepoIn) {
+ this.syncRepo = syncRepoIn;
+ }
}
diff --git a/java/code/src/com/redhat/rhn/manager/channel/UpdateChannelCommand.java b/java/code/src/com/redhat/rhn/manager/channel/UpdateChannelCommand.java
index 79764aa..80b8e80 100644
--- a/java/code/src/com/redhat/rhn/manager/channel/UpdateChannelCommand.java
+++ b/java/code/src/com/redhat/rhn/manager/channel/UpdateChannelCommand.java
@@ -17,9 +17,11 @@ package com.redhat.rhn.manager.channel;
import com.redhat.rhn.domain.channel.Channel;
import com.redhat.rhn.domain.channel.ChannelFactory;
+import com.redhat.rhn.domain.task.TaskFactory;
import com.redhat.rhn.frontend.xmlrpc.InvalidChannelLabelException;
import com.redhat.rhn.frontend.xmlrpc.InvalidChannelNameException;
import com.redhat.rhn.frontend.xmlrpc.InvalidParentChannelException;
+import com.redhat.rhn.taskomatic.task.RepoSyncTask;
/**
* UpdateChannelCommand - command to create a new channel.
@@ -77,10 +79,12 @@ public class UpdateChannelCommand extends CreateChannelCommand {
c.setMaintainerEmail(maintainerEmail);
c.setMaintainerPhone(maintainerPhone);
c.setSupportPolicy(supportPolicy);
-
-
c.setYumContentSource(yumUrl, repoLabel);
+ if (syncRepo && !c.getContentSources().isEmpty()) {
+ TaskFactory.createTask(user.getOrg(), RepoSyncTask.DISPLAY_NAME,
+ c.getContentSources().iterator().next().getId());
+ }
// need to save before calling stored proc below
ChannelFactory.save(c);
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java b/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
index ae382a5..fdbe9e4 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/RepoSyncTask.java
@@ -14,6 +14,8 @@
*/
package com.redhat.rhn.taskomatic.task;
+import com.redhat.rhn.common.conf.Config;
+import com.redhat.rhn.common.conf.ConfigDefaults;
import com.redhat.rhn.domain.channel.ChannelFactory;
import com.redhat.rhn.domain.channel.ContentSource;
import com.redhat.rhn.domain.task.Task;
@@ -29,6 +31,7 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
+
/**
* Repo Sync
* Used for syncing repos (like yum repos) to a channel
@@ -59,7 +62,7 @@ public class RepoSyncTask implements Job {
public void execute(JobExecutionContext context)
throws JobExecutionException {
- for (Task task : TaskFactory.listTasks("repo_sync")) {
+ for (Task task : TaskFactory.listTasks(DISPLAY_NAME)) {
ContentSource src = ChannelFactory.lookupContentSource(task.getData());
if (src == null) {
@@ -68,10 +71,16 @@ public class RepoSyncTask implements Job {
}
try {
- Process p = Runtime.getRuntime().exec("");
+
+ Process p = Runtime.getRuntime().exec(
+ (String[]) getSyncCommand(src).toArray());
+ p.waitFor();
}
catch (IOException e) {
-
+ e.printStackTrace();
+ }
+ catch (InterruptedException e) {
+ e.printStackTrace();
}
src.setLastSynced(new Date());
TaskFactory.removeTask(task);
@@ -80,13 +89,16 @@ public class RepoSyncTask implements Job {
private static List<String> getSyncCommand(ContentSource src) {
List<String> cmd = new ArrayList<String>();
- cmd.add("/usr/sbin/spacewalk-repo-sync");
+ cmd.add(Config.get().getString(ConfigDefaults.SPACEWALK_REPO_SYNC_PATH,
+ "/usr/sbin/spacewalk-repo-sync"));
cmd.add("-c");
cmd.add(src.getChannel().getLabel());
cmd.add("-u");
cmd.add(src.getSourceUrl());
cmd.add("-t");
cmd.add(src.getType().getLabel());
+ cmd.add("-l");
+ cmd.add(src.getLabel());
return cmd;
}
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/edit.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/edit.jsp
index adda2fb..ee51f22 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/edit.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/edit.jsp
@@ -120,6 +120,14 @@
<html:text property="yum_repo" maxlength="512" size="64" />
</td>
</tr>
+ <tr>
+ <th>
+ <bean:message key="channel.edit.jsp.repolabel"/>:
+ </th>
+ <td>
+ <html:text property="repo_label" maxlength="64" size="20" />
+ </td>
+ </tr>
<c:if test='${not empty param.cid}'>
<tr>
<th>
@@ -132,14 +140,6 @@
</c:if>
<tr>
<th>
- <bean:message key="channel.edit.jsp.repolabel"/>:
- </th>
- <td>
- <html:text property="repo_label" maxlength="64" size="20" />
- </td>
- </tr>
- <tr>
- <th>
<bean:message key="channel.edit.jsp.sync"/>:
</th>
<td>
commit a75f22ad634db6631b56582018a81d723a61c257
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Thu Jul 30 13:21:41 2009 -0400
adding logging, cache clearing, and a few fixes to reposync
diff --git a/backend/satellite_tools/repo_plugins/yum_src.py b/backend/satellite_tools/repo_plugins/yum_src.py
index fb3859f..77c6f57 100644
--- a/backend/satellite_tools/repo_plugins/yum_src.py
+++ b/backend/satellite_tools/repo_plugins/yum_src.py
@@ -14,6 +14,7 @@
# in this software or its documentation.
#
import yum
+import shutil
from yum import config
from reposync import ContentPackage
@@ -21,10 +22,11 @@ class ContentSource:
url = None
name = None
repo = None
-
+ cache_dir = '/var/cache/rhn/reposync/'
def __init__(self, url, name):
self.url = url
self.name = name
+ self._clean_cache(self.cache_dir + name)
def list_packages(self):
""" list packages"""
@@ -33,8 +35,8 @@ class ContentSource:
repo.cache = 0
repo.metadata_expire = 0
repo.baseurl = [self.url]
- repo.basecachedir = '/var/cache/rhn/reposync/'
-# repo.cachedir = '/var/cache/rhn/reposync/'
+ repo.basecachedir = self.cache_dir
+ repo.baseurlSetup()
repo.setup(False)
sack = repo.getPackageSack()
sack.populate(repo, 'metadata', None, 0)
@@ -52,4 +54,11 @@ class ContentSource:
def get_package(self, package):
""" get package """
- return self.repo.getPackage(package.unique_id)
+ check = (self.verify_pkg, (package.unique_id ,1), {})
+ return self.repo.getPackage(package.unique_id, checkfunc=check)
+
+ def verify_pkg(self, fo, pkg, fail):
+ return pkg.verifyLocalPkg()
+
+ def _clean_cache(self, directory):
+ shutil.rmtree(directory, True)
diff --git a/backend/satellite_tools/reposync.py b/backend/satellite_tools/reposync.py
index 0fd24d2..e5074b0 100644
--- a/backend/satellite_tools/reposync.py
+++ b/backend/satellite_tools/reposync.py
@@ -17,7 +17,8 @@ import sys, os
from optparse import OptionParser
from common import rhnLib
from server import rhnPackage, rhnSQL, rhnChannel, rhnPackageUpload
-from common import CFG, initCFG, rhn_rpm
+from common import CFG, initCFG, rhn_rpm, rhnLog, fetchTraceback
+from common.rhn_mpm import InvalidPackageError
from server.importlib.importLib import IncompletePackage
from server.importlib.backendOracle import OracleBackend
from server.importlib.packageImport import ChannelPackageSubscription
@@ -38,15 +39,22 @@ class RepoSync:
rhnSQL.initDB(db_string)
(options, args) = self.process_args()
-
+ quit = False
if not options.url:
+ quit = True
print("--url must be specified")
if not options.type:
+ quit = True
print("--type must be specified")
if not options.channel_label:
+ quit = True
print("--channel must be specified")
if not options.label:
- print("--label must be specified")
+ quit = True
+ print("--label must be specified")
+
+ if quit:
+ sys.exit(1)
self.type = options.type
@@ -55,12 +63,17 @@ class RepoSync:
self.fail = options.fail
self.repo_label = options.label
self.channel = self.load_channel()
-
+ self.log_file = options.logfile
+
if not self.channel or not \
rhnChannel.isCustomChannel(self.channel['id']):
print "Channel does not exist or is not custom"
sys.exit(1)
+
+ if self.log_file:
+ rhnLog.initLOG(self.log_file)
+
self.plugin = self.load_plugin()(self.url, self.channel_label + "-" + self.repo_label)
self.import_packages(self.plugin.list_packages())
@@ -71,6 +84,7 @@ class RepoSync:
self.parser.add_option('-t', '--type', action='store', dest='type', help='The type of repo, currently only "yum" is supported')
self.parser.add_option('-l', '--label', action='store', dest='label', help='A friendly label to refer to the repo')
self.parser.add_option('-f', '--fail', action='store_true', dest='fail', default=False , help="If a package import fails, fail the entire operation")
+ self.parser.add_option('-g', '--logfile', action='store', dest='logfile', help="The log file to log to. Default is to stderr and stdout.")
return self.parser.parse_args()
def load_plugin(self):
@@ -82,6 +96,7 @@ class RepoSync:
def import_packages(self, packages):
to_link = []
to_download = []
+ self.print_msg("Repo " + self.url + " has " + str(len(packages)) + ".")
for pack in packages:
pid = None
if pack.checksums.has_key('md5sum'):
@@ -101,7 +116,7 @@ class RepoSync:
for (index, pack) in enumerate(to_download):
"""download each package"""
try:
- print(str(index) + "/" + str(len(to_download)) + " : "+ \
+ self.print_msg(str(index+1) + "/" + str(len(to_download)) + " : "+ \
pack.getNVREA())
path = self.plugin.get_package(pack)
md5 = rhnLib.getFileMD5(filename=path)
@@ -112,9 +127,13 @@ class RepoSync:
self.associate_package(pack, md5)
else:
to_link.append(pack)
+ if self.url.find("file://") < 0:
+ os.remove(path)
+
except KeyboardInterrupt:
raise
except:
+ self.error_msg("ERROR" + fetchTraceback())
if self.fail:
raise
continue
@@ -124,6 +143,7 @@ class RepoSync:
except KeyboardInterrupt:
raise
except:
+ self.error_msg(fetchTraceback())
if self.fail:
raise
continue
@@ -142,9 +162,6 @@ class RepoSync:
relative_path=rel_package_path,
org_id=self.channel['org_id'])
temp_file.close()
- if self.url.find("file://") < 0:
- os.remove(path)
-
def associate_package(self, pack, md5sum):
caller = "server.app.yumreposync"
@@ -154,32 +171,42 @@ class RepoSync:
package['name'] = pack.name
package['version'] = pack.version
package['release'] = pack.release
- if pack.epoch == 0:
- package['epoch'] = ""
- else:
- package['epoch'] = pack.epoch
+ package['epoch'] = pack.epoch
package['arch'] = pack.arch
package['md5sum'] = md5sum
package['channels'] = [{'label':self.channel_label,
'id':self.channel['id']}]
package['org_id'] = self.channel['org_id']
-
try:
- importer = ChannelPackageSubscription(
- [IncompletePackage().populate(package)],
- backend, caller=caller)
- importer.run()
+ self._importer_run(package, caller, backend)
except:
- package['epoch'] = '0'
+ package['epoch'] = ''
+ self._importer_run(package, caller, backend)
+
+ backend.commit()
+
+ def _importer_run(self, package, caller, backend):
importer = ChannelPackageSubscription(
- [IncompletePackage().populate(package)],
+ [IncompletePackage().populate(package)],
backend, caller=caller)
importer.run()
- backend.commit()
+
def load_channel(self):
return rhnChannel.channel_info(self.channel_label)
+
+ def print_msg(self, message):
+ if self.log_file:
+ rhnLog.log_debug(0, message)
+ print message
+
+
+ def error_msg(self, message):
+ if self.log_file:
+ rhnLog.log_debug(0, message)
+ sys.stderr.write(message)
+
class ContentPackage:
#map of checksums. Valid keys are 'md5sum' & 'sha256'
@@ -199,9 +226,11 @@ class ContentPackage:
self.version = version
self.release = release
self.arch = arch
+ self.epoch = epoch
def getNVREA(self):
if self.epoch:
return self.name + '-' + self.version + '-' + self.release + '-' + self.epoch + '.' + self.arch
else:
return self.name + '-' + self.version + '-' + self.release + '.' + self.arch
+
14 years, 8 months