client/tools rel-eng/packages
by Milan Zazrivec
client/tools/rhncfg/rhncfg.spec | 5 ++++-
rel-eng/packages/rhncfg | 2 +-
2 files changed, 5 insertions(+), 2 deletions(-)
New commits:
commit a513bc974739843cf6177ba4ebae5334e0dd86bb
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Wed Aug 4 18:26:23 2010 +0200
Automatic commit of package [rhncfg] release [5.9.27-1].
diff --git a/client/tools/rhncfg/rhncfg.spec b/client/tools/rhncfg/rhncfg.spec
index caf7b0b..2957a64 100644
--- a/client/tools/rhncfg/rhncfg.spec
+++ b/client/tools/rhncfg/rhncfg.spec
@@ -8,7 +8,7 @@ Group: Applications/System
License: GPLv2 and Python
URL: https://fedorahosted.org/spacewalk
Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
-Version: 5.9.26
+Version: 5.9.27
Release: 1%{?dist}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
@@ -99,6 +99,9 @@ rm -rf $RPM_BUILD_ROOT
# $Id$
%changelog
+* Wed Aug 04 2010 Milan Zazrivec <mzazrivec(a)redhat.com> 5.9.27-1
+- 604615 - don't traceback if server does not send selinux_ctx
+
* Tue Aug 03 2010 Partha Aji <paji(a)redhat.com> 5.9.26-1
- Made the upload_channel and download_channel calls deal with symlinks
(paji(a)redhat.com)
diff --git a/rel-eng/packages/rhncfg b/rel-eng/packages/rhncfg
index b7045ef..c32770b 100644
--- a/rel-eng/packages/rhncfg
+++ b/rel-eng/packages/rhncfg
@@ -1 +1 @@
-5.9.26-1 client/tools/rhncfg/
+5.9.27-1 client/tools/rhncfg/
13 years, 10 months
client/tools
by Milan Zazrivec
client/tools/rhncfg/config_client/rhncfgcli_verify.py | 27 +++++++++---------
1 file changed, 14 insertions(+), 13 deletions(-)
New commits:
commit 5e60c4bcbcd6bae58c0dc161ad2886af4c115e95
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Wed Aug 4 18:23:15 2010 +0200
604615 - don't traceback if server does not send selinux_ctx
This is to support 'rhncfg-client verify' in case server side does not
send selinux_ctx (RHN, RHN Satellite 5.3 and older).
diff --git a/client/tools/rhncfg/config_client/rhncfgcli_verify.py b/client/tools/rhncfg/config_client/rhncfgcli_verify.py
index 3fbddf3..47f5b45 100644
--- a/client/tools/rhncfg/config_client/rhncfgcli_verify.py
+++ b/client/tools/rhncfg/config_client/rhncfgcli_verify.py
@@ -244,20 +244,21 @@ class Handler(handler_base.HandlerBase):
status.append('mode')
# compare selinux contexts
- src_selinux = info['selinux_ctx']
- if src_selinux:
- if not stat_err:
- dst_selinux = lgetfilecon(dst)[1]
- if dst_selinux == None:
- dst_selinux = ""
- else:
- dst_selinux = "missing"
+ if info.has_key('selinux_ctx'):
+ src_selinux = info['selinux_ctx']
+ if src_selinux:
+ if not stat_err:
+ dst_selinux = lgetfilecon(dst)[1]
+ if dst_selinux == None:
+ dst_selinux = ""
+ else:
+ dst_selinux = "missing"
- if src_selinux == dst_selinux:
- selinux_status = ""
- else:
- selinux_status = selinux_report % (src_selinux, dst_selinux)
- status.append('selinux')
+ if src_selinux == dst_selinux:
+ selinux_status = ""
+ else:
+ selinux_status = selinux_report % (src_selinux, dst_selinux)
+ status.append('selinux')
#figure out the ultimate value of status.
if stat_err:
13 years, 10 months
Branch 'taskomatic' - 21 commits - java/code schema/spacewalk
by Tomas Lestach
java/code/src/com/redhat/rhn/common/hibernate/ConnectionManager.java | 17
java/code/src/com/redhat/rhn/common/hibernate/HibernateFactory.java | 6
java/code/src/com/redhat/rhn/frontend/xmlrpc/taskomatic/TaskomaticHandler.java | 13
java/code/src/com/redhat/rhn/taskomatic/InvalidParamException.java | 8
java/code/src/com/redhat/rhn/taskomatic/NoSuchBunchTaskException.java | 4
java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java | 222 +++++--
java/code/src/com/redhat/rhn/taskomatic/TaskoJob.java | 15
java/code/src/com/redhat/rhn/taskomatic/TaskoQuartzHelper.java | 137 ++++
java/code/src/com/redhat/rhn/taskomatic/TaskoRun.hbm.xml | 6
java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java | 112 ++-
java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.hbm.xml | 12
java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.java | 34 +
java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java | 282 +++++++---
java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcInvoker.java | 3
java/code/src/com/redhat/rhn/taskomatic/core/SchedulerKernel.java | 42 -
java/code/src/com/redhat/rhn/taskomatic/serializer/TaskoRunSerializer.java | 6
java/code/src/com/redhat/rhn/taskomatic/task/RhnJavaJob.java | 6
java/code/src/com/redhat/rhn/taskomatic/task/RhnJob.java | 19
java/code/src/com/redhat/rhn/taskomatic/task/RhnJobAppender.java | 63 --
java/code/src/com/redhat/rhn/taskomatic/task/RhnQueueJob.java | 5
java/code/src/com/redhat/rhn/taskomatic/task/threaded/TaskQueue.java | 9
schema/spacewalk/common/data/rhnTaskoSchedule.sql | 96 +++
22 files changed, 816 insertions(+), 301 deletions(-)
New commits:
commit ef13db5ed295e0d0da27332ca2a2ef7e14a3dda7
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Wed Aug 4 14:17:53 2010 +0200
change log directory storage
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
index 91e7f09..3046f53 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
@@ -195,13 +195,12 @@ public class TaskoRun {
else {
dirName += "org" + orgId;
}
- dirName += "/";
+ dirName += "/" + template.getBunch().getName() + "/";
return dirName;
}
private String getStdLogFileName() {
- return template.getBunch().getName() + "_" + template.getTask().getName() +
- "_" + getId();
+ return template.getTask().getName() + "_" + getId();
}
private void deleteLogFileIfExists(String fileName) {
commit c37fa4738eee55b4a93514ea2a33b9d3feef5708
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Wed Aug 4 14:16:00 2010 +0200
remove duplicate entry
diff --git a/schema/spacewalk/common/data/rhnTaskoSchedule.sql b/schema/spacewalk/common/data/rhnTaskoSchedule.sql
index e5ed236..012ffa4 100644
--- a/schema/spacewalk/common/data/rhnTaskoSchedule.sql
+++ b/schema/spacewalk/common/data/rhnTaskoSchedule.sql
@@ -39,11 +39,6 @@ INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
(SELECT id FROM rhnTaskoBunch WHERE name='repo-sync-bunch'),
sysdate, '0 * * * * ?');
-INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
- VALUES(rhn_tasko_schedule_id_seq.nextval, 'repo-sync-default',
- (SELECT id FROM rhnTaskoBunch WHERE name='repo-sync-bunch'),
- sysdate, '0 * * * * ?');
-
-- Every 10 minutes
INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
commit c344618ab08403680d6f02dd97d9b04501960709
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Wed Aug 4 13:41:50 2010 +0200
return "" in case log file name is null
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
index 4b4a272..91e7f09 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
@@ -146,26 +146,29 @@ public class TaskoRun {
}
private String getTailOfFile(String fileName, Integer nBytes) {
- RandomAccessFile file;
- try {
- file = new RandomAccessFile(fileName, "r");
- if (nBytes >= 0) {
- file.seek(file.length() - nBytes);
+ if (fileName != null) {
+ RandomAccessFile file;
+ try {
+ file = new RandomAccessFile(fileName, "r");
+ if (nBytes >= 0) {
+ file.seek(file.length() - nBytes);
+ }
+ String tail = "";
+ String line;
+ while ((line = file.readLine()) != null) {
+ tail += line + "\n";
+ }
+ file.close();
+ return tail;
}
- String tail = "";
- String line;
- while ((line = file.readLine()) != null) {
- tail += line + "\n";
+ catch (FileNotFoundException e) {
+ // return "";
+ }
+ catch (IOException e) {
+ // return "";
}
- file.close();
- return tail;
- }
- catch (FileNotFoundException e) {
- return "";
- }
- catch (IOException e) {
- return "";
}
+ return "";
}
/**
commit dbcb512960f47ece19bbe69ac82fc13416a144f6
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Wed Aug 4 13:19:43 2010 +0200
default configuration and its loading
diff --git a/java/code/src/com/redhat/rhn/taskomatic/core/SchedulerKernel.java b/java/code/src/com/redhat/rhn/taskomatic/core/SchedulerKernel.java
index 7d934a4..ad2e04c 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/core/SchedulerKernel.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/core/SchedulerKernel.java
@@ -19,6 +19,9 @@ import com.redhat.rhn.common.conf.ConfigDefaults;
import com.redhat.rhn.common.conf.ConfigException;
import com.redhat.rhn.common.hibernate.HibernateFactory;
import com.redhat.rhn.common.messaging.MessageQueue;
+import com.redhat.rhn.taskomatic.TaskoFactory;
+import com.redhat.rhn.taskomatic.TaskoQuartzHelper;
+import com.redhat.rhn.taskomatic.TaskoSchedule;
import com.redhat.rhn.taskomatic.TaskoXmlRpcServer;
import org.apache.log4j.Logger;
@@ -28,6 +31,8 @@ import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
import java.net.UnknownHostException;
+import java.util.Arrays;
+import java.util.List;
import java.util.Properties;
/**
@@ -122,6 +127,7 @@ public class SchedulerKernel {
MessageQueue.configureDefaultActions();
try {
this.scheduler.start();
+ initializeAllSatSchedules();
synchronized (this.shutdownLock) {
try {
this.shutdownLock.wait();
@@ -174,25 +180,23 @@ public class SchedulerKernel {
}
- private void deleteAllJobs() {
- boolean done = false;
- while (!done) {
- try {
- String[] groups = this.scheduler.getJobGroupNames();
- if (groups == null || groups.length == 0) {
- done = true;
- }
- else {
- String group = groups[0];
- String[] jobs = this.scheduler.getJobNames(group);
- for (int x = jobs.length - 1; x > -1; x--) {
- this.scheduler.deleteJob(jobs[x], group);
- }
+ /**
+ * load DB schedule configuration
+ */
+ public void initializeAllSatSchedules() {
+ List jobNames;
+ try {
+ jobNames = Arrays.asList(
+ this.scheduler.getJobNames(TaskoQuartzHelper.getGroupName(null)));
+ for (TaskoSchedule schedule : TaskoFactory.listSchedulesByOrg(null)) {
+ if (!jobNames.contains(schedule.getJobLabel())) {
+ TaskoQuartzHelper.createJob(schedule);
}
}
- catch (SchedulerException e) {
- done = true;
- }
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ return;
}
}
}
diff --git a/schema/spacewalk/common/data/rhnTaskoSchedule.sql b/schema/spacewalk/common/data/rhnTaskoSchedule.sql
new file mode 100644
index 0000000..e5ed236
--- /dev/null
+++ b/schema/spacewalk/common/data/rhnTaskoSchedule.sql
@@ -0,0 +1,101 @@
+--
+-- Copyright (c) 2010 Red Hat, Inc.
+--
+-- This software is licensed to you under the GNU General Public License,
+-- version 2 (GPLv2). There is NO WARRANTY for this software, express or
+-- implied, including the implied warranties of MERCHANTABILITY or FITNESS
+-- FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
+-- along with this software; if not, see
+-- http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+--
+-- Red Hat trademarks are not licensed under GPLv2. No permission is
+-- granted to use or replicate Red Hat trademarks that are incorporated
+-- in this software or its documentation.
+--
+
+-- Top of every minute
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'sync-probe-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='sync-probe-bunch'),
+ sysdate, '0 * * * * ?');
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'errata-queue-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='errata-queue-bunch'),
+ sysdate, '0 * * * * ?');
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'cobbler-sync-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='cobbler-sync-bunch'),
+ sysdate, '0 * * * * ?');
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'channel-repodata-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='channel-repodata-bunch'),
+ sysdate, '0 * * * * ?');
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'repo-sync-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='repo-sync-bunch'),
+ sysdate, '0 * * * * ?');
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'repo-sync-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='repo-sync-bunch'),
+ sysdate, '0 * * * * ?');
+
+-- Every 10 minutes
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'package-cleanup-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='package-cleanup-bunch'),
+ sysdate, '0 0/10 * * * ?');
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'kickstart-cleanup-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='kickstart-cleanup-bunch'),
+ sysdate, '0 0/10 * * * ?');
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'errata-cache-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='errata-cache-bunch'),
+ sysdate, '0 0/10 * * * ?');
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'kickstartfile-sync-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='kickstartfile-sync-bunch'),
+ sysdate, '0 0/10 * * * ?');
+
+-- Every 15 minutes
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'session-cleanup-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='session-cleanup-bunch'),
+ sysdate, '0 0/15 * * * ?');
+
+-- Once a day at 4:05:00 AM (beware of 2AM cronjobs)
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'sandbox-cleanup-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='sandbox-cleanup-bunch'),
+ sysdate, '0 5 4 ? * *');
+
+-- Once a day at 4:35:00 AM (beware of 2AM cronjobs)
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'clean-alerts-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='clean-alerts-bunch'),
+ sysdate, '0 35 4 ? * *');
+
+-- Once a day at 11:00 PM
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'daily-status-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='daily-status-bunch'),
+ sysdate, '0 0 23 ? * *');
+
+INSERT INTO rhnTaskoSchedule (id, job_label, bunch_id, active_from, cron_expr)
+ VALUES(rhn_tasko_schedule_id_seq.nextval, 'compare-configs-default',
+ (SELECT id FROM rhnTaskoBunch WHERE name='compare-configs-bunch'),
+ sysdate, '0 0 23 ? * *');
+
commit 217f2766cc08591f82b466514f99a6af7b6aae8e
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Wed Aug 4 11:38:19 2010 +0200
fix some satellite schedule queries
+ separate usage of quartz into TaskoQuartzHelper
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java
index 778e1f3..949102f 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java
@@ -16,11 +16,8 @@ package com.redhat.rhn.taskomatic;
import com.redhat.rhn.common.hibernate.HibernateFactory;
-import com.redhat.rhn.taskomatic.core.SchedulerKernel;
import org.apache.log4j.Logger;
-import org.quartz.SchedulerException;
-import org.quartz.Trigger;
import java.io.File;
import java.util.Date;
@@ -243,9 +240,15 @@ public class TaskoFactory extends HibernateFactory {
*/
public static List<TaskoSchedule> listSchedulesByOrg(Integer orgId) {
Map params = new HashMap();
- params.put("org_id", orgId);
- return singleton.listObjectsByNamedQuery(
+ if (orgId == null) {
+ return singleton.listObjectsByNamedQuery(
+ "TaskoSchedule.listInSat", params);
+ }
+ else {
+ params.put("org_id", orgId);
+ return singleton.listObjectsByNamedQuery(
"TaskoSchedule.listByOrg", params);
+ }
}
/**
@@ -281,10 +284,16 @@ public class TaskoFactory extends HibernateFactory {
public static List<TaskoSchedule> listSchedulesByOrgAndBunch(Integer orgId,
TaskoBunch bunch) {
Map params = new HashMap();
- params.put("org_id", orgId);
params.put("bunch_id", bunch.getId());
- return singleton.listObjectsByNamedQuery(
+ if (orgId == null) {
+ return singleton.listObjectsByNamedQuery(
+ "TaskoSchedule.listInSatByBunch", params);
+ }
+ else {
+ params.put("org_id", orgId);
+ return singleton.listObjectsByNamedQuery(
"TaskoSchedule.listByOrgAndBunch", params);
+ }
}
/**
@@ -296,10 +305,16 @@ public class TaskoFactory extends HibernateFactory {
public static List<TaskoSchedule> listSchedulesByOrgAndLabel(Integer orgId,
String jobLabel) {
Map params = new HashMap();
- params.put("org_id", orgId);
params.put("job_label", jobLabel);
- return singleton.listObjectsByNamedQuery(
+ if (orgId == null) {
+ return singleton.listObjectsByNamedQuery(
+ "TaskoSchedule.listInSatByLabel", params);
+ }
+ else {
+ params.put("org_id", orgId);
+ return singleton.listObjectsByNamedQuery(
"TaskoSchedule.listByOrgAndLabel", params);
+ }
}
/**
@@ -347,20 +362,4 @@ public class TaskoFactory extends HibernateFactory {
}
return runs;
}
-
- /**
- * unschedule quartz trigger
- * just for sanity purposes
- * @param trigger trigger to unschedule
- */
- public static void unscheduleTrigger(Trigger trigger) {
- try {
- log.warn("Removing trigger " + trigger.getGroup() + "." + trigger.getName());
- SchedulerKernel.getScheduler().unscheduleJob(trigger.getName(),
- trigger.getGroup());
- }
- catch (SchedulerException e) {
- // be silent
- }
- }
}
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoJob.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoJob.java
index e04fd82..354288b 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoJob.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoJob.java
@@ -100,7 +100,7 @@ public class TaskoJob implements Job {
if (schedule == null) {
// means, that schedule was deleted (in the DB), but quartz still schedules it
log.error("No such schedule with id " + scheduleId);
- TaskoFactory.unscheduleTrigger(context.getTrigger());
+ TaskoQuartzHelper.unscheduleTrigger(context.getTrigger());
return;
}
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoQuartzHelper.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoQuartzHelper.java
new file mode 100644
index 0000000..d9ae5a4
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoQuartzHelper.java
@@ -0,0 +1,137 @@
+/**
+ * Copyright (c) 2010 Red Hat, Inc.
+ *
+ * This software is licensed to you under the GNU General Public License,
+ * version 2 (GPLv2). There is NO WARRANTY for this software, express or
+ * implied, including the implied warranties of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
+ * along with this software; if not, see
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ *
+ * Red Hat trademarks are not licensed under GPLv2. No permission is
+ * granted to use or replicate Red Hat trademarks that are incorporated
+ * in this software or its documentation.
+ */
+package com.redhat.rhn.taskomatic;
+
+import com.redhat.rhn.taskomatic.core.SchedulerKernel;
+
+import org.apache.log4j.Logger;
+import org.quartz.CronTrigger;
+import org.quartz.JobDetail;
+import org.quartz.SchedulerException;
+import org.quartz.SimpleTrigger;
+import org.quartz.Trigger;
+
+import java.text.ParseException;
+import java.util.Date;
+
+
+/**
+ * TaskoQuartzHelper
+ * @version $Rev$
+ */
+public class TaskoQuartzHelper {
+
+ private static Logger log = Logger.getLogger(TaskoQuartzHelper.class);
+
+ /**
+ * cann't construct
+ */
+ private TaskoQuartzHelper() {
+ }
+ /**
+ * unschedule quartz trigger
+ * just for sanity purposes
+ * @param trigger trigger to unschedule
+ */
+ public static void unscheduleTrigger(Trigger trigger) {
+ try {
+ log.warn("Removing trigger " + trigger.getGroup() + "." + trigger.getName());
+ SchedulerKernel.getScheduler().unscheduleJob(trigger.getName(),
+ trigger.getGroup());
+ }
+ catch (SchedulerException e) {
+ // be silent
+ }
+ }
+
+ /**
+ * creates a quartz job according to the schedule
+ * @param schedule schedule as a job template
+ * @return date of first schedule
+ * @throws InvalidParamException thrown in case of invalid cron expression
+ */
+ public static Date createJob(TaskoSchedule schedule) throws InvalidParamException {
+ // create trigger
+ Trigger trigger = null;
+ if (schedule.getCronExpr().isEmpty()) {
+ trigger = new SimpleTrigger(schedule.getJobLabel(),
+ getGroupName(schedule.getOrgId()), 1, 1);
+ trigger.setEndTime(new Date());
+ }
+ else {
+ try {
+ trigger = new CronTrigger(schedule.getJobLabel(),
+ getGroupName(schedule.getOrgId()),
+ schedule.getCronExpr());
+ trigger.setStartTime(schedule.getActiveFrom());
+ trigger.setEndTime(schedule.getActiveTill());
+ }
+ catch (ParseException e) {
+ throw new InvalidParamException("Invalid cron expression " +
+ schedule.getCronExpr());
+ }
+
+ }
+ // create job
+ JobDetail jobDetail = new JobDetail(schedule.getJobLabel(),
+ getGroupName(schedule.getOrgId()), TaskoJob.class);
+ // set job params
+ if (schedule.getDataMap() != null) {
+ jobDetail.getJobDataMap().putAll(schedule.getDataMap());
+ }
+ jobDetail.getJobDataMap().put("schedule_id", schedule.getId());
+
+ // schedule job
+ try {
+ Date date = SchedulerKernel.getScheduler().scheduleJob(jobDetail, trigger);
+ log.info("Job " + schedule.getJobLabel() + " scheduled succesfully.");
+ return date;
+ }
+ catch (SchedulerException e) {
+ log.warn("Job " + schedule.getJobLabel() + " failed to schedule.");
+ return null;
+ }
+ }
+
+ /**
+ * unschedules job
+ * @param orgId organization id
+ * @param jobLabel job name
+ * @return 1 if successful
+ */
+ public static Integer destroyJob(Integer orgId, String jobLabel) {
+ try {
+ SchedulerKernel.getScheduler().unscheduleJob(jobLabel,
+ getGroupName(orgId));
+ log.info("Job " + jobLabel + " unscheduled succesfully.");
+ return 1;
+ }
+ catch (SchedulerException e) {
+ return null;
+ }
+ }
+
+ /**
+ * return quartz group name
+ * @param orgId organizational id
+ * @return group name
+ */
+ public static String getGroupName(Integer orgId) {
+ if (orgId == null) {
+ return null;
+ }
+ return orgId.toString();
+ }
+}
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.hbm.xml b/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.hbm.xml
index 8009d15..35a294f 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.hbm.xml
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.hbm.xml
@@ -44,14 +44,26 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<![CDATA[FROM com.redhat.rhn.taskomatic.TaskoSchedule WHERE orgId = :org_id]]>
</query>
+ <query name="TaskoSchedule.listInSat">
+ <![CDATA[FROM com.redhat.rhn.taskomatic.TaskoSchedule WHERE orgId is null]]>
+ </query>
+
<query name="TaskoSchedule.listByOrgAndLabel">
<![CDATA[FROM com.redhat.rhn.taskomatic.TaskoSchedule WHERE orgId = :org_id AND jobLabel = :job_label]]>
</query>
+ <query name="TaskoSchedule.listInSatByLabel">
+ <![CDATA[FROM com.redhat.rhn.taskomatic.TaskoSchedule WHERE orgId is null AND jobLabel = :job_label]]>
+ </query>
+
<query name="TaskoSchedule.listByOrgAndBunch">
<![CDATA[FROM com.redhat.rhn.taskomatic.TaskoSchedule WHERE orgId = :org_id AND bunch.id = :bunch_id]]>
</query>
+ <query name="TaskoSchedule.listInSatByBunch">
+ <![CDATA[FROM com.redhat.rhn.taskomatic.TaskoSchedule WHERE orgId is null AND bunch.id = :bunch_id]]>
+ </query>
+
<query name="TaskoSchedule.listActiveByOrg">
<![CDATA[FROM com.redhat.rhn.taskomatic.TaskoSchedule WHERE orgId = :org_id AND (activeFrom < :timestamp AND (activeTill is null OR :timestamp < activeTill))]]>
</query>
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
index a6dc216..79930f7 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
@@ -16,13 +16,9 @@ package com.redhat.rhn.taskomatic;
import com.redhat.rhn.taskomatic.core.SchedulerKernel;
-import org.quartz.CronTrigger;
-import org.quartz.JobDetail;
import org.quartz.SchedulerException;
-import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
-import java.text.ParseException;
import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -91,7 +87,7 @@ public class TaskoXmlRpcHandler {
startTime, endTime, cronExpression);
TaskoFactory.save(schedule);
// create job
- Date scheduleDate = createJob(schedule);
+ Date scheduleDate = TaskoQuartzHelper.createJob(schedule);
if (scheduleDate == null) {
TaskoFactory.delete(schedule);
}
@@ -160,10 +156,10 @@ public class TaskoXmlRpcHandler {
throws NoSuchBunchTaskException, InvalidParamException, SchedulerException {
TaskoBunch bunch = checkBunchName(orgId, bunchName);
if (!TaskoFactory.listActiveSchedulesByOrgAndLabel(orgId, jobLabel).isEmpty() ||
- (SchedulerKernel.getScheduler().getTrigger(jobLabel, getGroupName(orgId)) !=
- null)) {
- String[] triggerNames =
- SchedulerKernel.getScheduler().getTriggerNames(getGroupName(orgId));
+ (SchedulerKernel.getScheduler().getTrigger(jobLabel,
+ TaskoQuartzHelper.getGroupName(orgId)) != null)) {
+ String[] triggerNames = SchedulerKernel.getScheduler().
+ getTriggerNames(TaskoQuartzHelper.getGroupName(orgId));
throw new InvalidParamException("jobLabel already in use");
}
return bunch;
@@ -178,12 +174,13 @@ public class TaskoXmlRpcHandler {
*/
public Integer unscheduleBunch(Integer orgId, String jobLabel)
throws InvalidParamException {
+ // one or none shall be returned
List<TaskoSchedule> scheduleList =
TaskoFactory.listActiveSchedulesByOrgAndLabel(orgId, jobLabel);
Trigger trigger;
try {
trigger = SchedulerKernel.getScheduler().getTrigger(jobLabel,
- getGroupName(orgId));
+ TaskoQuartzHelper.getGroupName(orgId));
}
catch (SchedulerException e) {
trigger = null;
@@ -198,7 +195,7 @@ public class TaskoXmlRpcHandler {
schedule.unschedule();
}
if (trigger != null) {
- return destroyJob(orgId, jobLabel);
+ return TaskoQuartzHelper.destroyJob(orgId, jobLabel);
}
return 1;
}
@@ -242,7 +239,7 @@ public class TaskoXmlRpcHandler {
start, null, "");
TaskoFactory.save(schedule);
// create job
- Date scheduleDate = createJob(schedule);
+ Date scheduleDate = TaskoQuartzHelper.createJob(schedule);
if (scheduleDate == null) {
TaskoFactory.delete(schedule);
}
@@ -297,58 +294,12 @@ public class TaskoXmlRpcHandler {
while (!TaskoFactory.listSchedulesByOrgAndLabel(orgId,
jobLabel + count.toString()).isEmpty() ||
(SchedulerKernel.getScheduler().getTrigger(jobLabel + count.toString(),
- getGroupName(orgId)) != null)) {
+ TaskoQuartzHelper.getGroupName(orgId)) != null)) {
count++;
}
return jobLabel + count.toString();
}
- private Date createJob(TaskoSchedule schedule) throws InvalidParamException {
- // create trigger
- Trigger trigger = null;
- if (schedule.getCronExpr().isEmpty()) {
- trigger = new SimpleTrigger(schedule.getJobLabel(),
- getGroupName(schedule.getOrgId()), 1, 1);
- trigger.setEndTime(new Date());
- }
- else {
- try {
- trigger = new CronTrigger(schedule.getJobLabel(),
- getGroupName(schedule.getOrgId()), schedule.getCronExpr());
- trigger.setStartTime(schedule.getActiveFrom());
- trigger.setEndTime(schedule.getActiveTill());
- }
- catch (ParseException e) {
- throw new InvalidParamException("Invalid cron expression");
- }
-
- }
- // create job
- JobDetail jobDetail = new JobDetail(schedule.getJobLabel(),
- getGroupName(schedule.getOrgId()), TaskoJob.class);
- // set job params
- jobDetail.getJobDataMap().putAll(schedule.getDataMap());
- jobDetail.getJobDataMap().put("schedule_id", schedule.getId());
-
- // schedule job
- try {
- return SchedulerKernel.getScheduler().scheduleJob(jobDetail, trigger);
- }
- catch (SchedulerException e) {
- return null;
- }
- }
-
- private Integer destroyJob(Integer orgId, String jobLabel) {
- try {
- SchedulerKernel.getScheduler().unscheduleJob(jobLabel, getGroupName(orgId));
- return 1;
- }
- catch (SchedulerException e) {
- return null;
- }
- }
-
private TaskoBunch checkBunchName(Integer orgId, String bunchName)
throws NoSuchBunchTaskException {
TaskoBunch bunch = null;
@@ -472,11 +423,4 @@ public class TaskoXmlRpcHandler {
throws InvalidParamException {
return getRunStdErrorLog(null, runId, nBytes);
}
-
- private String getGroupName(Integer orgId) {
- if (orgId == null) {
- return null;
- }
- return orgId.toString();
- }
}
commit 4c155727530e278a23cf6d8b74e62a51afb6f1cf
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Wed Aug 4 11:03:04 2010 +0200
change alternate path for hbm.xml files to additional
some of the taskomatic tasks require tomcat hibernate objects
diff --git a/java/code/src/com/redhat/rhn/common/hibernate/ConnectionManager.java b/java/code/src/com/redhat/rhn/common/hibernate/ConnectionManager.java
index 65bb469..b536aae 100644
--- a/java/code/src/com/redhat/rhn/common/hibernate/ConnectionManager.java
+++ b/java/code/src/com/redhat/rhn/common/hibernate/ConnectionManager.java
@@ -26,10 +26,13 @@ import org.hibernate.cfg.Configuration;
import org.hibernate.cfg.Environment;
import org.hibernate.metadata.ClassMetadata;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Properties;
+import java.util.Set;
/**
@@ -51,13 +54,15 @@ class ConnectionManager {
return result;
}
};
- private String[] packageNames = PACKAGE_NAMES;
+ private Set packageNames = new HashSet<String>(Arrays.asList(PACKAGE_NAMES));
/**
* enable possibility to load hbm.xml files from different path
*/
- void setAlternatePackageNames(String[] packageNamesIn) {
- packageNames = packageNamesIn;
+ void setAdditionalPackageNames(String[] packageNamesIn) {
+ for (String pn : packageNamesIn) {
+ packageNames.add(pn);
+ }
}
/**
@@ -137,9 +142,9 @@ class ConnectionManager {
List hbms = new LinkedList();
- for (int i = 0; i < packageNames.length; i++) {
- hbms.addAll(FinderFactory.getFinder(packageNames[i]).find(
- "hbm.xml"));
+ for (Iterator iter = packageNames.iterator(); iter.hasNext();) {
+ String pn = (String) iter.next();
+ hbms.addAll(FinderFactory.getFinder(pn).find("hbm.xml"));
if (LOG.isDebugEnabled()) {
LOG.debug("Found: " + hbms);
}
diff --git a/java/code/src/com/redhat/rhn/common/hibernate/HibernateFactory.java b/java/code/src/com/redhat/rhn/common/hibernate/HibernateFactory.java
index 2088ed2..80bf562 100644
--- a/java/code/src/com/redhat/rhn/common/hibernate/HibernateFactory.java
+++ b/java/code/src/com/redhat/rhn/common/hibernate/HibernateFactory.java
@@ -97,10 +97,10 @@ public abstract class HibernateFactory {
/**
* Create a SessionFactory, loading the hbm.xml files from alternate
* location
- * @param alternateLocation Alternate location for hbm.xml files
+ * @param additionalLocation Alternate location for hbm.xml files
*/
- public static void createSessionFactory(String[] alternateLocation) {
- connectionManager.setAlternatePackageNames(alternateLocation);
+ public static void createSessionFactory(String[] additionalLocation) {
+ connectionManager.setAdditionalPackageNames(additionalLocation);
connectionManager.initialize();
}
commit 350ba3f644af7e37d7bfa81deadfc3709ab9d2e7
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 19:29:18 2010 +0200
fixed run log api
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java
index 5be3f01..778e1f3 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java
@@ -321,10 +321,10 @@ public class TaskoFactory extends HibernateFactory {
* @return run
* @throws InvalidParamException thrown in case of wrong runId
*/
- public static TaskoRun lookupRunByOrgAndId(Integer orgId, Long runId)
+ public static TaskoRun lookupRunByOrgAndId(Integer orgId, Integer runId)
throws InvalidParamException {
- TaskoRun run = lookupRunById(runId);
- if ((run == null) || (!run.getOrgId().equals(orgId))) {
+ TaskoRun run = lookupRunById(runId.longValue());
+ if ((run == null) || (run.getOrgId() != orgId)) {
throw new InvalidParamException("No such run id");
}
return run;
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.hbm.xml b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.hbm.xml
index a45b0e8..3c17977 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.hbm.xml
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.hbm.xml
@@ -34,7 +34,7 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
</class>
<query name="TaskoRun.lookupById">
- <![CDATA[FROM com.redhat.rhn.taskomatic.TaskoRun WHERE id = :id]]>
+ <![CDATA[FROM com.redhat.rhn.taskomatic.TaskoRun WHERE id = :run_id]]>
</query>
<query name="TaskoRun.listBySchedule">
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
index f9e7779..4b4a272 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
@@ -52,7 +52,13 @@ public class TaskoRun {
private Date modified;
/**
- * default constructor
+ * default constructor required by hibernate
+ */
+ public TaskoRun() {
+ }
+
+ /**
+ * constructor
* run is always associated with organization, template and schedule
* @param orgIdIn organization id
* @param templateIn template id
@@ -126,7 +132,7 @@ public class TaskoRun {
* @param nBytes number of bytes
* @return last bytes of the output log
*/
- public String getTailOfStdOutput(Long nBytes) {
+ public String getTailOfStdOutput(Integer nBytes) {
return getTailOfFile(getStdOutputPath(), nBytes);
}
@@ -135,16 +141,22 @@ public class TaskoRun {
* @param nBytes number of bytes
* @return last bytes of the error log
*/
- public String getTailOfStdError(Long nBytes) {
+ public String getTailOfStdError(Integer nBytes) {
return getTailOfFile(getStdErrorPath(), nBytes);
}
- private String getTailOfFile(String fileName, Long nBytes) {
+ private String getTailOfFile(String fileName, Integer nBytes) {
RandomAccessFile file;
try {
file = new RandomAccessFile(fileName, "r");
- file.seek(file.length() - nBytes);
- String tail = file.readLine();
+ if (nBytes >= 0) {
+ file.seek(file.length() - nBytes);
+ }
+ String tail = "";
+ String line;
+ while ((line = file.readLine()) != null) {
+ tail += line + "\n";
+ }
file.close();
return tail;
}
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.java
index d1eed9b..c909c1f 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.java
@@ -48,7 +48,13 @@ public class TaskoSchedule {
/**
- * default constructor
+ * default constructor required by hibernate
+ */
+ public TaskoSchedule() {
+ }
+
+ /**
+ * constructor
* schedule is always associated with organization, bunch, job name, job parameter,
* time period when active and cron expression, how often is shall get scheduled
* @param orgIdIn organization id
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
index 9aac60d..a6dc216 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
@@ -426,7 +426,7 @@ public class TaskoXmlRpcHandler {
* @return last n bytes of a run log
* @throws InvalidParamException thrown if run id not known
*/
- public String getRunStdOutputLog(Integer orgId, Long runId, Long nBytes)
+ public String getRunStdOutputLog(Integer orgId, Integer runId, Integer nBytes)
throws InvalidParamException {
TaskoRun run = TaskoFactory.lookupRunByOrgAndId(orgId, runId);
return run.getTailOfStdOutput(nBytes);
@@ -440,7 +440,7 @@ public class TaskoXmlRpcHandler {
* @return last n bytes of a run log
* @throws InvalidParamException thrown if run id not known
*/
- public String getSatRunStdOutputLog(Long runId, Long nBytes)
+ public String getSatRunStdOutputLog(Integer runId, Integer nBytes)
throws InvalidParamException {
return getRunStdOutputLog(null, runId, nBytes);
}
@@ -454,7 +454,7 @@ public class TaskoXmlRpcHandler {
* @return last n bytes of a run log
* @throws InvalidParamException thrown if run id not known
*/
- public String getRunStdErrorLog(Integer orgId, Long runId, Long nBytes)
+ public String getRunStdErrorLog(Integer orgId, Integer runId, Integer nBytes)
throws InvalidParamException {
TaskoRun run = TaskoFactory.lookupRunByOrgAndId(orgId, runId);
return run.getTailOfStdError(nBytes);
@@ -468,7 +468,7 @@ public class TaskoXmlRpcHandler {
* @return last n bytes of a run log
* @throws InvalidParamException thrown if run id not known
*/
- public String getSatRunStdErrorLog(Long runId, Long nBytes)
+ public String getSatRunStdErrorLog(Integer runId, Integer nBytes)
throws InvalidParamException {
return getRunStdErrorLog(null, runId, nBytes);
}
diff --git a/java/code/src/com/redhat/rhn/taskomatic/serializer/TaskoRunSerializer.java b/java/code/src/com/redhat/rhn/taskomatic/serializer/TaskoRunSerializer.java
index 139a360..b874feb 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/serializer/TaskoRunSerializer.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/serializer/TaskoRunSerializer.java
@@ -54,6 +54,12 @@ public class TaskoRunSerializer implements XmlRpcCustomSerializer {
helper.add("start_time", run.getStartTime());
helper.add("end_time", run.getEndTime());
helper.add("status", run.getStatus());
+ if (run.getStdOutputPath() != null) {
+ helper.add("stdOutputPath", run.getStdOutputPath());
+ }
+ if (run.getStdErrorPath() != null) {
+ helper.add("stdErrorPath", run.getStdErrorPath());
+ }
helper.writeTo(output);
}
commit 25eae1fe178a4d4cd9a2231eff1ead2d0eb8a1a5
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 18:32:28 2010 +0200
javadoc for RhnQueueJob
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/RhnQueueJob.java b/java/code/src/com/redhat/rhn/taskomatic/task/RhnQueueJob.java
index 87ae6f4..d66afe6 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/RhnQueueJob.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/RhnQueueJob.java
@@ -44,12 +44,15 @@ public abstract class RhnQueueJob implements RhnJob {
protected abstract Logger getLogger();
+ /**
+ * {@inheritDoc}
+ */
public void appendExceptionToLogError(Exception e) {
getLogger().error(e.getMessage());
getLogger().error(e.getCause());
}
- void logToNewFile() {
+ private void logToNewFile() {
PatternLayout pattern =
new PatternLayout(DEFAULT_LOGGING_LAYOUT);
try {
commit 62b78294a147e593898336764b7451477480dd87
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 18:30:24 2010 +0200
removed RhnJobAppender
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/RhnJobAppender.java b/java/code/src/com/redhat/rhn/taskomatic/task/RhnJobAppender.java
deleted file mode 100644
index 8f45ea9..0000000
--- a/java/code/src/com/redhat/rhn/taskomatic/task/RhnJobAppender.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Copyright (c) 2010 Red Hat, Inc.
- *
- * This software is licensed to you under the GNU General Public License,
- * version 2 (GPLv2). There is NO WARRANTY for this software, express or
- * implied, including the implied warranties of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
- * along with this software; if not, see
- * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
- *
- * Red Hat trademarks are not licensed under GPLv2. No permission is
- * granted to use or replicate Red Hat trademarks that are incorporated
- * in this software or its documentation.
- */
-package com.redhat.rhn.taskomatic.task;
-
-import com.redhat.rhn.common.localization.LocalizationService;
-
-import org.apache.log4j.AppenderSkeleton;
-import org.apache.log4j.Level;
-import org.apache.log4j.spi.LoggingEvent;
-
-import java.util.Date;
-
-
-/**
- * RhnJobAppender
- * @version $Rev$
- */
-public class RhnJobAppender extends AppenderSkeleton {
- private StringBuffer outputBuffer = new StringBuffer();
- private StringBuffer errorBuffer = new StringBuffer();
-
- public String getOutputContent() {
- return outputBuffer.toString();
- }
-
- public String getErrorContent() {
- return errorBuffer.toString();
- }
-
- @Override
- protected void append(LoggingEvent event) {
- outputBuffer.append(logEvent(event));
- if (!Level.INFO.isGreaterOrEqual(event.getLevel())) {
- errorBuffer.append(logEvent(event));
- }
- }
-
- private String logEvent(LoggingEvent event) {
- return LocalizationService.getInstance().formatCustomDate(
- new Date(LoggingEvent.getStartTime())) + " [" + event.getThreadName() +
- "] " + event.getLevel() + " " + event.getClass().getName() + " " +
- event.getRenderedMessage() + '\n';
- }
-
- public void close() {
- }
-
- public boolean requiresLayout() {
- return false;
- }
-}
commit 59aae1690f5dd164a42af653f7cfebaebf275388
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 18:26:35 2010 +0200
javadoc for RhnJob
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/RhnJob.java b/java/code/src/com/redhat/rhn/taskomatic/task/RhnJob.java
index 856f89e..a387dd3 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/RhnJob.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/RhnJob.java
@@ -20,14 +20,27 @@ import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
-
+/**
+ * RhnJob
+ * @version $Rev$
+ */
public abstract interface RhnJob extends Job {
String DEFAULT_LOGGING_LAYOUT = "%d [%t] %-5p %c %x - %m%n";
+
+ /**
+ * execute method to be called
+ * @param context job context
+ * @param taskRun associated run
+ * @throws JobExecutionException thrown in case of any runtime exception
+ */
void execute(JobExecutionContext context, TaskoRun taskRun)
throws JobExecutionException;
- // abstract Logger getLogger();
-
+ /**
+ * appends an exception message to log error
+ * useful in case job failed to start
+ * @param e exception
+ */
void appendExceptionToLogError(Exception e);
}
commit f84736c1bd8380d564ccade513f7675abfffdfcd
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 18:24:56 2010 +0200
javadoc for RhnJavaJob
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/RhnJavaJob.java b/java/code/src/com/redhat/rhn/taskomatic/task/RhnJavaJob.java
index 3ba2d2b..0f0ae27 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/RhnJavaJob.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/RhnJavaJob.java
@@ -52,11 +52,17 @@ public abstract class RhnJavaJob implements RhnJob {
}
}
+ /**
+ * {@inheritDoc}
+ */
public void appendExceptionToLogError(Exception e) {
log.error(e.getMessage());
log.error(e.getCause());
}
+ /**
+ * {@inheritDoc}
+ */
public void execute(JobExecutionContext context, TaskoRun run)
throws JobExecutionException {
enableLogging(run);
commit b95e14fef970373f313eb5db0a17167abae95b38
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 18:22:10 2010 +0200
javadoc for TaskoXmlRpcInvoker
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcInvoker.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcInvoker.java
index 7e6e1da..72b7d07 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcInvoker.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcInvoker.java
@@ -48,6 +48,9 @@ public class TaskoXmlRpcInvoker implements ProtocolHandler {
server = xmlrpcServer;
}
+ /**
+ * {@inheritDoc}
+ */
public void handle(Request request, Response response) {
String uri = request.getURI();
InetAddress ip = request.getInetAddress();
commit 38f58299808e7076b3f35b817a2e6a86014aa6a2
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 18:21:24 2010 +0200
javadoc for TaskoXmlRpcHandler
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
index 03989b7..9aac60d 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
@@ -27,20 +27,54 @@ import java.util.Date;
import java.util.List;
import java.util.Map;
+
+/**
+ *
+ * TaskoXmlRpcHandler
+ * @version $Rev$
+ */
public class TaskoXmlRpcHandler {
+ /**
+ * dummy call
+ * @param orgId organization id
+ * @return 1
+ */
public int one(Integer orgId) {
return 1;
}
+ /**
+ * lists all available organizational bunches
+ * @param orgId organization id
+ * @return list of bunches
+ */
public List<TaskoBunch> listBunches(Integer orgId) {
return TaskoFactory.listOrgBunches();
}
+ /**
+ * lists all available satellite bunches
+ * @return list of bunches
+ */
public List<TaskoBunch> listSatBunches() {
return TaskoFactory.listSatBunches();
}
+ /**
+ * start scheduling a organizational bunch
+ * @param orgId organization id
+ * @param bunchName bunch name
+ * @param jobLabel job name
+ * @param startTime schedule from
+ * @param endTime schedule till
+ * @param cronExpression cron expression
+ * @param params job parameters
+ * @return date of the first schedule
+ * @throws NoSuchBunchTaskException thrown if bunch name not known
+ * @throws InvalidParamException thrown if job name already in use,
+ * invalid cron expression, ...
+ */
public Date scheduleBunch(Integer orgId, String bunchName, String jobLabel,
Date startTime, Date endTime, String cronExpression, Map params)
throws NoSuchBunchTaskException, InvalidParamException {
@@ -64,6 +98,19 @@ public class TaskoXmlRpcHandler {
return scheduleDate;
}
+ /**
+ * start scheduling a satellite bunch
+ * @param bunchName bunch name
+ * @param jobLabel job name
+ * @param startTime schedule from
+ * @param endTime scchedule till
+ * @param cronExpression crom expression
+ * @param params job parameters
+ * @return date of the first schedule
+ * @throws NoSuchBunchTaskException thrown if bunch name not known
+ * @throws InvalidParamException thrown if job name already in use,
+ * invalid cron expression, ...
+ */
public Date scheduleSatBunch(String bunchName, String jobLabel,
Date startTime, Date endTime, String cronExpression, Map params)
throws NoSuchBunchTaskException, InvalidParamException {
@@ -71,6 +118,18 @@ public class TaskoXmlRpcHandler {
cronExpression, params);
}
+ /**
+ * start scheduling a organizational bunch
+ * @param orgId organization id
+ * @param bunchName bunch name
+ * @param jobLabel job name
+ * @param cronExpression crom expression
+ * @param params job parameters
+ * @return date of the first schedule
+ * @throws NoSuchBunchTaskException thrown if bunch name not known
+ * @throws InvalidParamException thrown if job name already in use,
+ * invalid cron expression, ...
+ */
public Date scheduleBunch(Integer orgId, String bunchName, String jobLabel,
String cronExpression, Map params)
throws NoSuchBunchTaskException, InvalidParamException {
@@ -78,6 +137,17 @@ public class TaskoXmlRpcHandler {
cronExpression, params);
}
+ /**
+ * start scheduling a satellite bunch
+ * @param bunchName bunch name
+ * @param jobLabel job name
+ * @param cronExpression crom expression
+ * @param params job paramters
+ * @return date of the first schedule
+ * @throws NoSuchBunchTaskException thrown if bunch name not known
+ * @throws InvalidParamException thrown if job name already in use,
+ * invalid cron expression, ...
+ */
public Date scheduleSatBunch(String bunchName, String jobLabel,
String cronExpression, Map params)
throws NoSuchBunchTaskException, InvalidParamException {
@@ -99,6 +169,13 @@ public class TaskoXmlRpcHandler {
return bunch;
}
+ /**
+ * stop scheduling an organizational bunch
+ * @param orgId organization id
+ * @param jobLabel job name
+ * @return 1 if successful
+ * @throws InvalidParamException thrown if job name not known
+ */
public Integer unscheduleBunch(Integer orgId, String jobLabel)
throws InvalidParamException {
List<TaskoSchedule> scheduleList =
@@ -126,10 +203,26 @@ public class TaskoXmlRpcHandler {
return 1;
}
+ /**
+ * stop scheduling a satellite bunch
+ * @param jobLabel job name
+ * @return 1 if successful
+ * @throws InvalidParamException thrown if jobLabel not known
+ */
public Integer unscheduleSatBunch(String jobLabel) throws InvalidParamException {
return unscheduleBunch(null, jobLabel);
}
+ /**
+ * schedule a one time organizational bunch
+ * @param orgId organization id
+ * @param bunchName bunch name
+ * @param params job parameters
+ * @param start schedule time
+ * @return date of the schedule
+ * @throws NoSuchBunchTaskException thrown if bunch name not known
+ * @throws InvalidParamException shall not be thrown
+ */
public Date scheduleSingleBunchRun(Integer orgId, String bunchName, Map params,
Date start)
throws NoSuchBunchTaskException,
@@ -156,16 +249,42 @@ public class TaskoXmlRpcHandler {
return scheduleDate;
}
+ /**
+ * schedule a one time satellite bunch
+ * @param bunchName bunch name
+ * @param params job parameters
+ * @param start schedule time
+ * @return date of the schedule
+ * @throws NoSuchBunchTaskException thrown if bunch name not known
+ * @throws InvalidParamException shall not be thrown
+ */
public Date scheduleSingleSatBunchRun(String bunchName, Map params, Date start)
throws NoSuchBunchTaskException, InvalidParamException {
return scheduleSingleBunchRun(null, bunchName, params, start);
}
+ /**
+ * schedule a one time organizational bunch asap
+ * @param orgId organization id
+ * @param bunchName bunch name
+ * @param params job parameters
+ * @return date of the schedule
+ * @throws NoSuchBunchTaskException thrown if bunch name not known
+ * @throws InvalidParamException shall not be thrown
+ */
public Date scheduleSingleBunchRun(Integer orgId, String bunchName, Map params)
throws NoSuchBunchTaskException, InvalidParamException {
return scheduleSingleBunchRun(orgId, bunchName, params, new Date());
}
+ /**
+ * schedule a one time satellite bunch asap
+ * @param bunchName bunch name
+ * @param params job parameters
+ * @return date of the schedule
+ * @throws NoSuchBunchTaskException thrown if bunch name not known
+ * @throws InvalidParamException shall not be thrown
+ */
public Date scheduleSingleSatBunchRun(String bunchName, Map params)
throws NoSuchBunchTaskException, InvalidParamException {
return scheduleSingleBunchRun(null, bunchName, params, new Date());
@@ -245,47 +364,110 @@ public class TaskoXmlRpcHandler {
return bunch;
}
+ /**
+ * lists all organizational schedules
+ * @param orgId organization id
+ * @return list of schedules
+ */
public List<TaskoSchedule> listAllSchedules(Integer orgId) {
return TaskoFactory.listSchedulesByOrg(orgId);
}
+ /**
+ * lists all satellite schedules
+ * @return list of schedules
+ */
public List<TaskoSchedule> listAllSatSchedules() {
return listAllSchedules(null);
}
+ /**
+ * lists all active organizational schedules
+ * @param orgId organizational id
+ * @return list of schedules
+ */
public List<TaskoSchedule> listActiveSchedules(Integer orgId) {
return TaskoFactory.listActiveSchedulesByOrg(orgId);
}
+ /**
+ * lists all active satellite schedules
+ * @return list of schedules
+ */
public List<TaskoSchedule> listActiveSatSchedules() {
return listActiveSchedules(null);
}
+ /**
+ * lists all organizational runs of a give schedule
+ * @param orgId organizational id
+ * @param scheduleId schedule id
+ * @return list of runs
+ */
public List<TaskoRun> listScheduleRuns(Integer orgId, Integer scheduleId) {
return TaskoFactory.listRunsByOrgAndSchedule(orgId, scheduleId);
}
+ /**
+ * lists all satellite runs of a give schedule
+ * @param scheduleId schedule id
+ * @return list of runs
+ */
public List<TaskoRun> listScheduleSatRuns(Integer scheduleId) {
return listScheduleRuns(null, scheduleId);
}
+ /**
+ * get last specified number of bytes of the organizational run std output log
+ * whole log is returned if nBytes is negative
+ * @param orgId organization id
+ * @param runId run id
+ * @param nBytes number of bytes
+ * @return last n bytes of a run log
+ * @throws InvalidParamException thrown if run id not known
+ */
public String getRunStdOutputLog(Integer orgId, Long runId, Long nBytes)
throws InvalidParamException {
TaskoRun run = TaskoFactory.lookupRunByOrgAndId(orgId, runId);
return run.getTailOfStdOutput(nBytes);
}
+ /**
+ * get last specified number of bytes of the satellite run std output log
+ * whole log is returned if nBytes is negative
+ * @param runId run id
+ * @param nBytes number of bytes
+ * @return last n bytes of a run log
+ * @throws InvalidParamException thrown if run id not known
+ */
public String getSatRunStdOutputLog(Long runId, Long nBytes)
throws InvalidParamException {
return getRunStdOutputLog(null, runId, nBytes);
}
+ /**
+ * get last specified number of bytes of the organizational run std error log
+ * whole log is returned if nBytes is negative
+ * @param orgId organization id
+ * @param runId run id
+ * @param nBytes number of bytes
+ * @return last n bytes of a run log
+ * @throws InvalidParamException thrown if run id not known
+ */
public String getRunStdErrorLog(Integer orgId, Long runId, Long nBytes)
throws InvalidParamException {
TaskoRun run = TaskoFactory.lookupRunByOrgAndId(orgId, runId);
return run.getTailOfStdError(nBytes);
}
+ /**
+ * get last specified number of bytes of the satellite run std error log
+ * whole log is returned if nBytes is negative
+ * @param runId run id
+ * @param nBytes number of bytes
+ * @return last n bytes of a run log
+ * @throws InvalidParamException thrown if run id not known
+ */
public String getSatRunStdErrorLog(Long runId, Long nBytes)
throws InvalidParamException {
return getRunStdErrorLog(null, runId, nBytes);
commit a137179839921972d87bcd78cd631e04f35ab491
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 17:46:56 2010 +0200
javadoc for TaskQueue
diff --git a/java/code/src/com/redhat/rhn/taskomatic/task/threaded/TaskQueue.java b/java/code/src/com/redhat/rhn/taskomatic/task/threaded/TaskQueue.java
index 8e9f9c1..09f07b6 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/task/threaded/TaskQueue.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/task/threaded/TaskQueue.java
@@ -183,6 +183,15 @@ public class TaskQueue {
executor.createThreads(maxPoolSize);
}
+ /**
+ * - while there're workers in the queue,
+ * they will be executed as within the same run
+ * to get stored all the logs together
+ * - otherwise we would lose the logs,
+ * because worker execution get managed automatically by the queue
+ * @param runIn associated run
+ * @return whether run was changed
+ */
public boolean changeRun(TaskoRun runIn) {
if (runIn == null) {
queueRun = null;
commit 6d8e38d219cef43de7562af93c5ed1c094325248
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 17:42:37 2010 +0200
javadoc for SchedulerKernel
diff --git a/java/code/src/com/redhat/rhn/taskomatic/core/SchedulerKernel.java b/java/code/src/com/redhat/rhn/taskomatic/core/SchedulerKernel.java
index bb87bcf..7d934a4 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/core/SchedulerKernel.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/core/SchedulerKernel.java
@@ -100,6 +100,10 @@ public class SchedulerKernel {
}
}
+ /**
+ * returns scheduler
+ * @return scheduler
+ */
public static Scheduler getScheduler() {
return SchedulerKernel.scheduler;
}
commit b79193c154d1a80427a8ac73d9060aae43ed3711
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 17:41:24 2010 +0200
javadoc for TaskoSchedule
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.java
index 8dd78b9..d1eed9b 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoSchedule.java
@@ -27,7 +27,12 @@ import java.sql.Blob;
import java.util.Date;
import java.util.Map;
-
+/**
+ * a schedule represents a concrete bunch, that is scheduled with specified parameters,
+ * in specified time period with some periodicity
+ * TaskoSchedule
+ * @version $Rev$
+ */
public class TaskoSchedule {
private Long id;
@@ -41,9 +46,19 @@ public class TaskoSchedule {
private Date created;
private Date modified;
- public TaskoSchedule() {
- }
+ /**
+ * default constructor
+ * schedule is always associated with organization, bunch, job name, job parameter,
+ * time period when active and cron expression, how often is shall get scheduled
+ * @param orgIdIn organization id
+ * @param bunchIn bunch id
+ * @param jobLabelIn job name
+ * @param dataIn job parameter
+ * @param activeFromIn scheduled from
+ * @param activeTillIn scheduled till
+ * @param cronExprIn cron expression
+ */
public TaskoSchedule(Integer orgIdIn, TaskoBunch bunchIn, String jobLabelIn,
Map dataIn, Date activeFromIn, Date activeTillIn, String cronExprIn) {
setOrgId(orgIdIn);
@@ -66,6 +81,9 @@ public class TaskoSchedule {
}
}
+ /**
+ * unschedule this particular schedule
+ */
public void unschedule() {
setActiveTill(new Date());
}
@@ -106,10 +124,18 @@ public class TaskoSchedule {
return (Map) obj;
}
+ /**
+ * set job parameters
+ * @param dataMap job paramters
+ */
public void setDataMap(Map dataMap) {
data = serializeMap(dataMap);
}
+ /**
+ * get job parameters
+ * @return job paramters
+ */
public Map getDataMap() {
return getDataMapFromBlob(getData());
}
commit 85db473dfa9088c3842d516a255aaf890571983b
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 17:22:55 2010 +0200
javadoc for TaskoRun
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
index 39d5613..f9e7779 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.java
@@ -51,9 +51,13 @@ public class TaskoRun {
private Date created;
private Date modified;
- public TaskoRun() {
- }
-
+ /**
+ * default constructor
+ * run is always associated with organization, template and schedule
+ * @param orgIdIn organization id
+ * @param templateIn template id
+ * @param scheduleIdIn schedule id
+ */
public TaskoRun(Integer orgIdIn, TaskoTemplate templateIn, Long scheduleIdIn) {
setOrgId(orgIdIn);
setTemplate(templateIn);
@@ -67,6 +71,10 @@ public class TaskoRun {
saveStatus(STATUS_READY_TO_RUN);
}
+ /**
+ * run start method
+ * has to be called right before job execution
+ */
public void start() {
setStdOutputPath(buildStdOutputLogPath());
setStdErrorPath(buildStdErrorLogPath());
@@ -76,6 +84,10 @@ public class TaskoRun {
saveStatus(STATUS_RUNNING);
}
+ /**
+ * run finish method
+ * has to be called right after job execution
+ */
public void finished() {
setEndTime(new Date());
updateLogPaths();
@@ -91,23 +103,38 @@ public class TaskoRun {
TaskoFactory.save(this);
}
- private void appendToStdOutputLog(String out) {
- appendLogToFile(getStdOutputPath(), out);
- }
-
+ /**
+ * appends a string to error log
+ * usefull for exception logging when the run doesn't get executed at all
+ * @param errorLog error message to append
+ */
public void appendToErrorLog(String errorLog) {
appendLogToFile(getStdErrorPath(), errorLog);
}
+ /**
+ * sets run status
+ * @param statusIn status to set
+ */
public void saveStatus(String statusIn) {
setStatus(statusIn);
TaskoFactory.save(this);
}
+ /**
+ * returns last nBytes bytes of the std output log
+ * @param nBytes number of bytes
+ * @return last bytes of the output log
+ */
public String getTailOfStdOutput(Long nBytes) {
return getTailOfFile(getStdOutputPath(), nBytes);
}
+ /**
+ * returns last nBytes bytes of the std error log
+ * @param nBytes number of bytes
+ * @return last bytes of the error log
+ */
public String getTailOfStdError(Long nBytes) {
return getTailOfFile(getStdErrorPath(), nBytes);
}
@@ -129,10 +156,18 @@ public class TaskoRun {
}
}
+ /**
+ * builds path to std output log file
+ * @return path
+ */
public String buildStdOutputLogPath() {
return getStdLogDirName() + getStdLogFileName() + "_out";
}
+ /**
+ * builds path to std error log file
+ * @return path
+ */
public String buildStdErrorLogPath() {
return getStdLogDirName() + getStdLogFileName() + "_err";
}
@@ -183,7 +218,6 @@ public class TaskoRun {
return id;
}
-
/**
* @param idIn The id to set.
*/
@@ -191,7 +225,6 @@ public class TaskoRun {
this.id = idIn;
}
-
/**
* @return Returns the templateId.
*/
@@ -199,7 +232,6 @@ public class TaskoRun {
return template;
}
-
/**
* @param templateId The templateId to set.
*/
@@ -223,7 +255,6 @@ public class TaskoRun {
this.startTime = startTimeIn;
}
-
/**
* @return Returns the endTime.
*/
@@ -231,7 +262,6 @@ public class TaskoRun {
return endTime;
}
-
/**
* @param endTimeIn The endTime to set.
*/
@@ -239,7 +269,6 @@ public class TaskoRun {
this.endTime = endTimeIn;
}
-
/**
* @return Returns the stdOutputPath.
*/
@@ -247,7 +276,6 @@ public class TaskoRun {
return stdOutputPath;
}
-
/**
* @param stdOutputPathIn The stdOutputPath to set.
*/
@@ -255,7 +283,6 @@ public class TaskoRun {
this.stdOutputPath = stdOutputPathIn;
}
-
/**
* @return Returns the stdErrorPath.
*/
@@ -263,7 +290,6 @@ public class TaskoRun {
return stdErrorPath;
}
-
/**
* @param stdErrorPathIn The stdErrorPath to set.
*/
@@ -271,7 +297,6 @@ public class TaskoRun {
this.stdErrorPath = stdErrorPathIn;
}
-
/**
* @return Returns the status.
*/
@@ -279,7 +304,6 @@ public class TaskoRun {
return status;
}
-
/**
* @param statusIn The status to set.
*/
@@ -287,7 +311,6 @@ public class TaskoRun {
this.status = statusIn;
}
-
/**
* @return Returns the created.
*/
@@ -295,7 +318,6 @@ public class TaskoRun {
return created;
}
-
/**
* @param createdIn The created to set.
*/
@@ -303,7 +325,6 @@ public class TaskoRun {
this.created = createdIn;
}
-
/**
* @return Returns the modified.
*/
@@ -311,7 +332,6 @@ public class TaskoRun {
return modified;
}
-
/**
* @param modifiedIn The modified to set.
*/
@@ -319,7 +339,6 @@ public class TaskoRun {
this.modified = modifiedIn;
}
-
/**
* @return Returns the orgId.
*/
@@ -327,7 +346,6 @@ public class TaskoRun {
return orgId;
}
-
/**
* @param orgIdIn The orgId to set.
*/
commit 6abd5f9f26d79c15ea57821de8b53b5085129af0
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 16:24:49 2010 +0200
apidoc for TaskoJob
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoJob.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoJob.java
index bc905e5..e04fd82 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoJob.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoJob.java
@@ -27,6 +27,12 @@ import org.quartz.JobExecutionException;
import java.util.HashMap;
import java.util.Map;
+
+/**
+ *
+ * TaskoJob
+ * @version $Rev$
+ */
public class TaskoJob implements Job {
private static Logger log = Logger.getLogger(TaskoJob.class);
@@ -42,6 +48,11 @@ public class TaskoJob implements Job {
}
}
+ /**
+ * default constructor
+ * job is always associated with a schedule
+ * @param scheduleIdIn schedule id
+ */
public TaskoJob(Long scheduleIdIn) {
setScheduleId(scheduleIdIn);
}
@@ -174,6 +185,7 @@ public class TaskoJob implements Job {
}
/**
+ * setter for scheduleId
* @param scheduleIdIn The scheduleId to set.
*/
public void setScheduleId(Long scheduleIdIn) {
@@ -181,6 +193,7 @@ public class TaskoJob implements Job {
}
/**
+ * getter for scheduleId
* @return Returns the scheduleId.
*/
public Long getScheduleId() {
commit 1d39855931d3297c584e98b068c0bf26b9ca3e3b
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 15:12:18 2010 +0200
javadoc for TaskoFactory
+ some unused code removed
+ some methods renamed
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java
index 58ca02d..5be3f01 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoFactory.java
@@ -38,6 +38,9 @@ public class TaskoFactory extends HibernateFactory {
private static TaskoFactory singleton = new TaskoFactory();
private static Logger log = Logger.getLogger(TaskoFactory.class);
+ /**
+ * default constructor
+ */
TaskoFactory() {
super();
}
@@ -46,6 +49,11 @@ public class TaskoFactory extends HibernateFactory {
return log;
}
+ /**
+ * lookup a organization bunch by name
+ * @param bunchName bunch name
+ * @return bunch
+ */
public static TaskoBunch lookupOrgBunchByName(String bunchName) {
Map params = new HashMap();
params.put("name", bunchName);
@@ -53,6 +61,11 @@ public class TaskoFactory extends HibernateFactory {
"TaskoBunch.lookupOrgBunchByName", params);
}
+ /**
+ * lookup a satellite bunch by name
+ * @param bunchName bunch name
+ * @return bunch
+ */
public static TaskoBunch lookupSatBunchByName(String bunchName) {
Map params = new HashMap();
params.put("name", bunchName);
@@ -60,6 +73,12 @@ public class TaskoFactory extends HibernateFactory {
"TaskoBunch.lookupSatBunchByName", params);
}
+ /**
+ * lookup template by bunch id and position
+ * @param bunchId id of the bunch
+ * @param order position
+ * @return template
+ */
public static TaskoTemplate lookupTemplateByBunchAndOrder(Long bunchId, Long order) {
Map params = new HashMap();
params.put("bunch_id", bunchId);
@@ -68,50 +87,70 @@ public class TaskoFactory extends HibernateFactory {
"TaskoTemplate.lookupByBunchAndOrder", params);
}
+ /**
+ * list all available organizational bunches
+ * @return list of bunches
+ */
public static List<TaskoBunch> listOrgBunches() {
return (List) singleton.listObjectsByNamedQuery(
"TaskoBunch.listOrgBunches", null);
}
+ /**
+ * list all available satellite bunches
+ * @return list of bunches
+ */
public static List<TaskoBunch> listSatBunches() {
return (List) singleton.listObjectsByNamedQuery(
"TaskoBunch.listSatBunches", null);
}
+ /**
+ * hibernate save run
+ * @param taskoRun run to save
+ */
public static void save(TaskoRun taskoRun) {
singleton.saveObject(taskoRun);
}
+ /**
+ * hibernate delete run
+ * @param taskoRun run to delete
+ */
public static void delete(TaskoRun taskoRun) {
singleton.removeObject(taskoRun);
}
+ /**
+ * hibernate delete schedule
+ * @param taskoSchedule schadule to delete
+ */
public static void delete(TaskoSchedule taskoSchedule) {
singleton.removeObject(taskoSchedule);
}
- public static void save(TaskoTemplate taskoTemplate) {
- singleton.saveObject(taskoTemplate);
- }
-
+ /**
+ * hibernate save schedule
+ * @param taskoSchedule schedule to save
+ */
public static void save(TaskoSchedule taskoSchedule) {
singleton.saveObject(taskoSchedule);
}
- public static void sleep(long millis) {
- try {
- Thread.sleep(millis);
- }
- catch (InterruptedException e) {
- log.warn("InterruptedException");
- }
- }
-
+ /**
+ * lists all available tasks
+ * @return list of tasks
+ */
public static List<TaskoTask> listTasks() {
return (List<TaskoTask>) singleton.listObjectsByNamedQuery(
"TaskoTask.listTasks", new HashMap());
}
+ /**
+ * lists runs older than given date
+ * @param limitTime date of interest
+ * @return list of runs
+ */
public static List<TaskoRun> listRunsOlderThan(Date limitTime) {
Map params = new HashMap();
params.put("limit_time", limitTime);
@@ -119,37 +158,10 @@ public class TaskoFactory extends HibernateFactory {
"TaskoRun.listOlderThan", params);
}
- public static List<TaskoRun> listOrgRunsOlderThan(Integer orgId, Date limitTime) {
- Map params = new HashMap();
- params.put("org_id", orgId);
- params.put("limit_time", limitTime);
- return (List<TaskoRun>) singleton.listObjectsByNamedQuery(
- "TaskoRun.listOrgRunsOlderThan", params);
- }
-
- public static void clearOrgRunHistory(Integer orgId, Date limitTime)
- throws InvalidParamException {
- if (limitTime == null) {
- throw new InvalidParamException("Invalid limit date");
- }
- List<TaskoRun> runList = listOrgRunsOlderThan(orgId, limitTime);
- for (TaskoRun run : runList) {
- // delete history of runs
- TaskoFactory.deleteLogFiles(run);
- TaskoFactory.delete(run);
- }
-
- // delete outdated schedules
- List<TaskoSchedule> scheduleList = listSchedulesByOrg(orgId);
- for (TaskoSchedule schedule : scheduleList) {
- Date endTime = schedule.getActiveTill();
- if ((endTime != null) && (endTime.before(limitTime)) &&
- TaskoFactory.listRunsBySchedule(schedule.getId()).isEmpty()) {
- TaskoFactory.delete(schedule);
- }
- }
- }
-
+ /**
+ * delete log files associated with given run
+ * @param run run to delete logs
+ */
public static void deleteLogFiles(TaskoRun run) {
String out = run.getStdOutputPath();
if ((out != null) && (!out.isEmpty())) {
@@ -171,6 +183,11 @@ public class TaskoFactory extends HibernateFactory {
return false;
}
+ /**
+ * lists active schedules for a given org
+ * @param orgId organization id
+ * @return list of active schedules
+ */
public static List<TaskoSchedule> listActiveSchedulesByOrg(Integer orgId) {
Map params = new HashMap();
params.put("timestamp", new Date()); // use server time, not DB time
@@ -185,6 +202,12 @@ public class TaskoFactory extends HibernateFactory {
}
}
+ /**
+ * lists active schedules of given name for a given org
+ * @param orgId organization id
+ * @param jobLabel unique job name
+ * @return list of active schedules
+ */
public static List<TaskoSchedule> listActiveSchedulesByOrgAndLabel(Integer orgId,
String jobLabel) {
Map params = new HashMap();
@@ -201,6 +224,11 @@ public class TaskoFactory extends HibernateFactory {
}
}
+ /**
+ * lookup schedule by id
+ * @param scheduleId schedule id
+ * @return schedule
+ */
public static TaskoSchedule lookupScheduleById(Long scheduleId) {
Map params = new HashMap();
params.put("schedule_id", scheduleId);
@@ -208,6 +236,11 @@ public class TaskoFactory extends HibernateFactory {
"TaskoSchedule.lookupById", params);
}
+ /**
+ * lists all schedules for an org
+ * @param orgId organizational id
+ * @return list of all schedules
+ */
public static List<TaskoSchedule> listSchedulesByOrg(Integer orgId) {
Map params = new HashMap();
params.put("org_id", orgId);
@@ -215,6 +248,11 @@ public class TaskoFactory extends HibernateFactory {
"TaskoSchedule.listByOrg", params);
}
+ /**
+ * list all runs associated with a schedule
+ * @param scheduleId schedule id
+ * @return list of runs
+ */
public static List<TaskoRun> listRunsBySchedule(Long scheduleId) {
Map params = new HashMap();
params.put("schedule_id", scheduleId);
@@ -222,6 +260,11 @@ public class TaskoFactory extends HibernateFactory {
"TaskoRun.listBySchedule", params);
}
+ /**
+ * list schedules older than given date
+ * @param limitTime time of interest
+ * @return list of schedules
+ */
public static List<TaskoSchedule> listSchedulesOlderThan(Date limitTime) {
Map params = new HashMap();
params.put("limit_time", limitTime);
@@ -229,6 +272,12 @@ public class TaskoFactory extends HibernateFactory {
"TaskoSchedule.listOlderThan", params);
}
+ /**
+ * lists organizational schedules by bunch
+ * @param orgId organization id
+ * @param bunch type of schedules
+ * @return list of schedules
+ */
public static List<TaskoSchedule> listSchedulesByOrgAndBunch(Integer orgId,
TaskoBunch bunch) {
Map params = new HashMap();
@@ -238,6 +287,12 @@ public class TaskoFactory extends HibernateFactory {
"TaskoSchedule.listByOrgAndBunch", params);
}
+ /**
+ * lists organizational schedules by name
+ * @param orgId organization id
+ * @param jobLabel unique job name
+ * @return list of schedules
+ */
public static List<TaskoSchedule> listSchedulesByOrgAndLabel(Integer orgId,
String jobLabel) {
Map params = new HashMap();
@@ -247,6 +302,11 @@ public class TaskoFactory extends HibernateFactory {
"TaskoSchedule.listByOrgAndLabel", params);
}
+ /**
+ * lookup run by id
+ * @param runId run id
+ * @return run
+ */
public static TaskoRun lookupRunById(Long runId) {
Map params = new HashMap();
params.put("run_id", runId);
@@ -254,7 +314,14 @@ public class TaskoFactory extends HibernateFactory {
"TaskoRun.lookupById", params);
}
- public static TaskoRun getRunByOrgAndId(Integer orgId, Long runId)
+ /**
+ * lookup organizational run by id
+ * @param orgId organizational id
+ * @param runId run id
+ * @return run
+ * @throws InvalidParamException thrown in case of wrong runId
+ */
+ public static TaskoRun lookupRunByOrgAndId(Integer orgId, Long runId)
throws InvalidParamException {
TaskoRun run = lookupRunById(runId);
if ((run == null) || (!run.getOrgId().equals(orgId))) {
@@ -263,16 +330,13 @@ public class TaskoFactory extends HibernateFactory {
return run;
}
- public static TaskoSchedule getScheduleByOrgAndId(Integer orgId,
- Long scheduleId) throws InvalidParamException {
- TaskoSchedule schedule = lookupScheduleById(scheduleId);
- if ((schedule == null) || (!schedule.getOrgId().equals(orgId))) {
- throw new InvalidParamException("No such schedule id");
- }
- return schedule;
- }
-
- public static List<TaskoRun> getRunsByOrgAndSchedule(Integer orgId,
+ /**
+ * lists organizational runs by schedule
+ * @param orgId organization id
+ * @param scheduleId schedule id
+ * @return list of runs
+ */
+ public static List<TaskoRun> listRunsByOrgAndSchedule(Integer orgId,
Integer scheduleId) {
List<TaskoRun> runs = listRunsBySchedule(scheduleId.longValue());
// verify it belongs to the right org
@@ -284,6 +348,11 @@ public class TaskoFactory extends HibernateFactory {
return runs;
}
+ /**
+ * unschedule quartz trigger
+ * just for sanity purposes
+ * @param trigger trigger to unschedule
+ */
public static void unscheduleTrigger(Trigger trigger) {
try {
log.warn("Removing trigger " + trigger.getGroup() + "." + trigger.getName());
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.hbm.xml b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.hbm.xml
index 852d8ef..a45b0e8 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.hbm.xml
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoRun.hbm.xml
@@ -49,8 +49,4 @@ PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
<![CDATA[FROM com.redhat.rhn.taskomatic.TaskoRun WHERE endTime < :limit_time]]>
</query>
- <query name="TaskoRun.listOrgRunsOlderThan">
- <![CDATA[FROM com.redhat.rhn.taskomatic.TaskoRun WHERE orgId = :org_id AND endTime < :limit_time]]>
- </query>
-
</hibernate-mapping>
diff --git a/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java b/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
index 8ef16d1..03989b7 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/TaskoXmlRpcHandler.java
@@ -245,16 +245,6 @@ public class TaskoXmlRpcHandler {
return bunch;
}
- public int clearRunHistory(Integer orgId, Date limitTime) throws InvalidParamException {
- TaskoFactory.clearOrgRunHistory(orgId, limitTime);
- return 1;
- }
-
- public int clearSatRunHistory(Date limitTime) throws InvalidParamException {
- TaskoFactory.clearOrgRunHistory(null, limitTime);
- return 1;
- }
-
public List<TaskoSchedule> listAllSchedules(Integer orgId) {
return TaskoFactory.listSchedulesByOrg(orgId);
}
@@ -272,7 +262,7 @@ public class TaskoXmlRpcHandler {
}
public List<TaskoRun> listScheduleRuns(Integer orgId, Integer scheduleId) {
- return TaskoFactory.getRunsByOrgAndSchedule(orgId, scheduleId);
+ return TaskoFactory.listRunsByOrgAndSchedule(orgId, scheduleId);
}
public List<TaskoRun> listScheduleSatRuns(Integer scheduleId) {
@@ -281,7 +271,7 @@ public class TaskoXmlRpcHandler {
public String getRunStdOutputLog(Integer orgId, Long runId, Long nBytes)
throws InvalidParamException {
- TaskoRun run = TaskoFactory.getRunByOrgAndId(orgId, runId);
+ TaskoRun run = TaskoFactory.lookupRunByOrgAndId(orgId, runId);
return run.getTailOfStdOutput(nBytes);
}
@@ -292,7 +282,7 @@ public class TaskoXmlRpcHandler {
public String getRunStdErrorLog(Integer orgId, Long runId, Long nBytes)
throws InvalidParamException {
- TaskoRun run = TaskoFactory.getRunByOrgAndId(orgId, runId);
+ TaskoRun run = TaskoFactory.lookupRunByOrgAndId(orgId, runId);
return run.getTailOfStdError(nBytes);
}
commit e1bc61f74a5c78b247530eb85b36f524e9684409
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 14:17:01 2010 +0200
javadoc for taskomatic exceptions
diff --git a/java/code/src/com/redhat/rhn/taskomatic/InvalidParamException.java b/java/code/src/com/redhat/rhn/taskomatic/InvalidParamException.java
index 8e34c6d..b7295d0 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/InvalidParamException.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/InvalidParamException.java
@@ -15,6 +15,10 @@
package com.redhat.rhn.taskomatic;
+/**
+ * InvalidParamException
+ * @version $Rev$
+ */
public class InvalidParamException extends Exception {
/**
@@ -22,6 +26,10 @@ public class InvalidParamException extends Exception {
*/
private static final long serialVersionUID = -3100819288563720249L;
+ /**
+ * default constructor
+ * @param message exception message
+ */
public InvalidParamException(String message) {
super(message);
}
diff --git a/java/code/src/com/redhat/rhn/taskomatic/NoSuchBunchTaskException.java b/java/code/src/com/redhat/rhn/taskomatic/NoSuchBunchTaskException.java
index bb7b8b3..7f5e9e9 100644
--- a/java/code/src/com/redhat/rhn/taskomatic/NoSuchBunchTaskException.java
+++ b/java/code/src/com/redhat/rhn/taskomatic/NoSuchBunchTaskException.java
@@ -26,6 +26,10 @@ public class NoSuchBunchTaskException extends Exception {
*/
private static final long serialVersionUID = -1611165320092152311L;
+ /**
+ * default constructor
+ * @param message exception message
+ */
public NoSuchBunchTaskException(String message) {
super(message);
}
commit e1b3e853623b83efe835adfd4e6a55e3f3e6d809
Author: Tomas Lestach <tlestach(a)redhat.com>
Date: Mon Aug 2 13:58:16 2010 +0200
javadoc for TaskomaticHandler
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/taskomatic/TaskomaticHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/taskomatic/TaskomaticHandler.java
index a97c775..d91ad25 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/taskomatic/TaskomaticHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/taskomatic/TaskomaticHandler.java
@@ -31,7 +31,8 @@ import redstone.xmlrpc.XmlRpcFault;
/**
- * TaskoHandler
+ * TaskoHandler - translates all the taskomatic API calls to the internal
+ * taskomatic xmlrpc handler
* @version $Rev$
*/
public class TaskomaticHandler extends BaseHandler {
@@ -40,6 +41,9 @@ public class TaskomaticHandler extends BaseHandler {
private XmlRpcClient client;
private static Logger log = Logger.getLogger(TaskomaticHandler.class);
+ /**
+ * default constructor
+ */
public TaskomaticHandler() {
try {
client = new XmlRpcClient(ConfigDefaults.get().getTaskoServerUrl(), false);
@@ -49,6 +53,13 @@ public class TaskomaticHandler extends BaseHandler {
}
}
+ /**
+ * translates any taskomatic API call to the internal taskomatic xmlrpc hanlder
+ * @param methodCalled method to be forwarded
+ * @param arguments list of argumets to be translated
+ * @return forwarded result of the internal xmlrpc API
+ * @throws XmlRpcFault in case of any exception
+ */
public Object invoke(String methodCalled, List arguments) throws XmlRpcFault {
List params = new ArrayList(arguments);
String sessionKey = (String) params.remove(0);
13 years, 10 months
java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml | 12 +++++-----
1 file changed, 6 insertions(+), 6 deletions(-)
New commits:
commit b6108e3c249f2f2031e8c0d2fa6100bcf4767201
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Wed Aug 4 11:55:13 2010 -0400
575981 - fixing issue where non-user scheduled actions wouldnt show up in the scheduled list
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml
index d947cee..eede4fc 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Action_queries.xml
@@ -121,12 +121,12 @@ SELECT DISTINCT UAO.id AS ID,
(SELECT COUNT(server_id) FROM rhnServerAction WHERE action_id = UAO.id AND status IN (0,1)) AS "IN_PROGRESS_SYSTEMS",
(SELECT COUNT(server_id) FROM rhnServerAction WHERE action_id = UAO.id AND status = 2) AS "COMPLETED_SYSTEMS",
(SELECT COUNT(server_id) FROM rhnServerAction WHERE action_id = UAO.id AND status = 3) AS "FAILED_SYSTEMS"
- FROM rhnUserActionOverview UAO, web_contact WC
+ FROM rhnUserActionOverview UAO left join
+ web_contact WC on UAO.scheduler = WC.id
WHERE UAO.org_id = :org_id
AND UAO.user_id = :user_id
AND UAO.action_status_id IN (0,1)
AND UAO.archived = 0
- AND WC.id = UAO.scheduler
ORDER BY EARLIEST DESC
</query>
<elaborator name="action_list_elab" />
@@ -169,10 +169,10 @@ SELECT DISTINCT UAO.id AS ID,
(SELECT COUNT(server_id) FROM rhnServerAction WHERE action_id = UAO.id AND status IN (0,1)) AS "IN_PROGRESS_SYSTEMS",
(SELECT COUNT(server_id) FROM rhnServerAction WHERE action_id = UAO.id AND status = 2) AS "COMPLETED_SYSTEMS",
(SELECT COUNT(server_id) FROM rhnServerAction WHERE action_id = UAO.id AND status = 3) AS "FAILED_SYSTEMS"
- FROM rhnUserActionOverview UAO, web_contact WC
+ FROM rhnUserActionOverview UAO left join
+ web_contact WC on UAO.scheduler = WC.id
WHERE UAO.org_id = :org_id
AND UAO.user_id = :user_id
- AND WC.id = UAO.scheduler
ORDER BY EARLIEST DESC
</query>
@@ -192,12 +192,12 @@ SELECT DISTINCT UAO.id AS ID,
(SELECT COUNT(server_id) FROM rhnServerAction WHERE action_id = UAO.id AND status IN (0,1)) AS "IN_PROGRESS_SYSTEMS",
(SELECT COUNT(server_id) FROM rhnServerAction WHERE action_id = UAO.id AND status = 2) AS "COMPLETED_SYSTEMS",
(SELECT COUNT(server_id) FROM rhnServerAction WHERE action_id = UAO.id AND status = 3) AS "FAILED_SYSTEMS"
- FROM rhnUserActionOverview UAO, web_contact WC
+ FROM rhnUserActionOverview UAO left join
+ web_contact WC on UAO.scheduler = WC.id
WHERE UAO.org_id = :org_id
AND UAO.user_id = :user_id
AND UAO.action_status_id = 2
AND UAO.archived = 0
- AND WC.id = UAO.scheduler
ORDER BY EARLIEST DESC
</query>
13 years, 10 months
2 commits - java/code web/html
by Colin Coe
java/code/src/com/redhat/rhn/frontend/action/systems/sdc/SystemHardwareAction.java | 104 +++
java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml | 6
java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml | 147 ++++
java/code/webapp/WEB-INF/nav/system_detail.xml | 3
java/code/webapp/WEB-INF/pages/systems/sdc/hardware.jsp | 156 +++++
java/code/webapp/WEB-INF/struts-config.xml | 16
web/html/nav/system_detail.xml | 3
web/html/network/systems/details/hardware.pxt | 298 ----------
8 files changed, 431 insertions(+), 302 deletions(-)
New commits:
commit 03bac2f06987d7632b57b98a7ea2638c5ebcbe05
Author: Colin Coe <coec(a)spacey.coesta.com>
Date: Wed Aug 4 23:20:48 2010 +0800
Remove hardware.pxt
diff --git a/web/html/network/systems/details/hardware.pxt b/web/html/network/systems/details/hardware.pxt
deleted file mode 100644
index bf15eea..0000000
--- a/web/html/network/systems/details/hardware.pxt
+++ /dev/null
@@ -1,298 +0,0 @@
-<?xml version="1.0" encoding="utf8"?>
-<pxt-passthrough>
- <pxt-use class="Grail::Frame" />
- <pxt-use class="Sniglets::Servers" />
- <pxt-use class="Sniglets::Users" />
- <pxt-use class="Sniglets::HTML" />
-
- <grail-canvas-template base="/templates/c.pxt" mode="main_canvas">
-<pxt-formvar>
- <pxt-include-late file="/network/components/systems/system_details_toolbar.pxi" />
-</pxt-formvar>
-
- <rhn-navi-nav prefix="system_details" depth="0" file="/nav/system_detail.xml" style="contentnav" />
-
- <h2>Refresh Hardware List</h2>
-
-<pxt-include-late file="/network/components/message_queues/local.pxi" />
-<rhn-require acl="system_feature(ftr_hardware_refresh)">
-
- <div class="page-summary">The following list represents the detectable hardware on this system. If this list is incomplete, you may press the button below to schedule a hardware list refresh for this system.</div>
-<br />
- <div align="right">
- <pxt-form method="post">
- <input type="submit" name="hardware_list_refresh" value="Schedule Hardware Refresh" />
- <input type="hidden" name="pxt:trap" value="rhn:server_hardware_list_refresh_cb" />
- <pxt-hidden name="sid" />
- </pxt-form>
- </div>
-</rhn-require>
-
-<rhn-require acl="not system_feature(ftr_hardware_refresh)">
-
- <div class="page-summary">
-<pxt-formvar>
- The following list represents the detectable hardware on this system. If this list is incomplete, you must <a href="/rhn/systems/details/Overview.do?sid={formvar:sid}">entitle</a> this system before you can schedule a hardware list refresh.
-</pxt-formvar>
- </div>
-</rhn-require>
-
-<rhn-server-hardware-profile>
- <h2>General</h2>
-
- <div class="page-summary">({cpu_count}) {cpu_vendor} {cpu_model} {cpu_mhz} MHZ</div>
- <br />
- <table class="details">
- <tr>
- <th>Arch:</th>
- <td>{cpu_arch_name}</td>
- <th>Cache:</th>
- <td>{cpu_cache}</td>
- </tr>
-
- <tr>
- <th>Vendor:</th>
- <td>{cpu_vendor}</td>
- <th rowspan="2">Memory:</th>
- <td rowspan="2">{memory_ram} MB</td>
- </tr>
-
- <tr>
- <th>Stepping:</th>
- <td>{cpu_stepping}</td>
- </tr>
-
- <tr>
- <th>Family:</th>
- <td>{cpu_family}</td>
- <th>Swap:</th>
- <td>{memory_swap} MB</td>
- </tr>
- </table>
-
-
-<rhn-dmi-info>
- <h2>DMI Info</h2>
-
- <table class="details">
- <tr>
- <th>Vendor:</th>
- <td>{dmi_vendor}</td>
- <th rowspan="2">Bios:</th>
- <td rowspan="2">{dmi_bios_vendor} <br/>
- {dmi_bios_version} - {dmi_bios_release}</td>
- </tr>
-
- <tr>
- <th>System:</th>
- <td>{dmi_system}</td>
- </tr>
-
- <tr>
- <th rowspan="2">Product:</th>
- <td rowspan="2">{dmi_product}</td>
- <th valign="top">Asset Tag:</th>
- <td>{dmi_asset}</td>
- </tr>
-
- <tr>
- <th valign="top">Board:</th>
- <td>{dmi_board}</td>
- </tr>
- </table>
-</rhn-dmi-info>
-
-
- <h2>Networking</h2>
-
-
- <table class="details">
-<rhn-server-network-details>
- <tr>
- <th>Hostname{counter}:</th>
- <td>{hostname}</td>
- </tr>
-
- <tr>
- <th>IP Address{counter}:</th>
- <td>{ip}</td>
- </tr>
-</rhn-server-network-details>
- </table>
-
-<br />
-
-<rhn-server-network-interfaces>
- <table class="list" width="90%" cellspacing="0">
- <thead>
- <tr>
- <th>Interface</th>
- <th>IP Address</th>
- <th>Netmask</th>
- <th>Broadcast</th>
- <th>Hardware Address</th>
- <th>Driver Module</th>
- </tr>
- </thead>
- <rhn-interface-data>
- <tr class="{row_class}">
- <td class="first-column">{interface_name}</td>
- <td>{interface_ip_addr}</td>
- <td>{interface_netmask}</td>
- <td>{interface_broadcast}</td>
- <td>{interface_hw_addr}</td>
- <td class="last-column">{interface_module}</td>
- </tr>
- </rhn-interface-data>
- </table>
-</rhn-server-network-interfaces>
-
-<rhn-server-device class="HD">
- <h2>Storage</h2>
-
- <table class="list" width="90%" cellspacing="0">
- <thead>
- <tr>
- <th width="40%">Description</th>
- <th width="10%">Bus</th>
- <th width="25%">Device</th>
- <th width="25%">Physical</th>
- </tr>
- </thead>
-
-<rhn-device-data>
- <tr class="{row_class}">
- <td class="first-column">{hd_description}</td>
- <td>{hd_bus}</td>
- <td>{hd_device}</td>
- <td class="last-column">{hd_physical}</td>
- </tr>
-</rhn-device-data>
- </table>
-</rhn-server-device>
-
-<rhn-server-device class="VIDEO">
- <h2>Video</h2>
-
- <table class="list" width="90%" cellspacing="0">
- <thead>
- <tr>
- <th width="40%">Description</th>
- <th width="10%">Bus</th>
- <th width="10%">Vendor</th>
- <th width="40%">Driver</th>
- </tr>
- </thead>
-
-<rhn-device-data>
- <tr class="{row_class}">
- <td class="first-column" nowrap="1">{video_description}</td>
- <td>{video_bus}</td>
- <td>{video_vendorstring}</td>
- <td class="last-column" nowrap="1">{video_driver}</td>
- </tr>
-</rhn-device-data>
- </table>
-</rhn-server-device>
-
-<rhn-server-device class="AUDIO">
- <h2>Audio</h2>
-
- <table class="list" width="90%" cellspacing="0">
- <thead>
- <tr>
- <th width="40%">Description</th>
- <th width="10%">Bus</th>
- <th width="25%">Vendor</th>
- <th width="25%">Driver</th>
- </tr>
- </thead>
-
-<rhn-device-data>
- <tr class="{row_class}">
- <td class="first-column">{audio_description}</td>
- <td>{audio_bus}</td>
- <td>{audio_vendorstring}</td>
- <td class="last-column">{audio_driver}</td>
- </tr>
-</rhn-device-data>
- </table>
-</rhn-server-device>
-
-<rhn-server-device class="USB">
- <h2>USB</h2>
-
- <table class="list" width="90%" cellspacing="0">
- <thead>
- <tr>
- <th width="40%">Description</th>
- <th width="10%">Bus</th>
- <th width="25%">Vendor</th>
- <th width="25%">Driver</th>
- </tr>
- </thead>
-
-<rhn-device-data>
- <tr class="{row_class}">
- <td class="first-column">{usb_description}</td>
- <td>{usb_bus}</td>
- <td>{usb_vendorstring}</td>
- <td class="last-column">{usb_driver}</td>
- </tr>
-</rhn-device-data>
- </table>
-</rhn-server-device>
-
-<rhn-server-device class="CAPTURE">
- <h2>CAPTURE</h2>
-
- <table class="list" width="90%" cellspacing="0">
- <thead>
- <tr>
- <th width="40%">Description</th>
- <th width="10%">Bus</th>
- <th width="25%">Vendor</th>
- <th width="25%">Driver</th>
- </tr>
- </thead>
-
-<rhn-device-data>
- <tr class="{row_class}">
- <td class="first-column">{capture_description}</td>
- <td>{capture_bus}</td>
- <td>{capture_vendorstring}</td>
- <td class="last-column">{capture_driver}</td>
- </tr>
-</rhn-device-data>
- </table>
-</rhn-server-device>
-
-<rhn-server-device class="OTHER">
- <h2>Misc</h2>
-
- <table class="list" width="90%" cellspacing="0">
- <thead>
- <tr>
- <th width="40%">Description</th>
- <th width="10%">Bus</th>
- <th width="25%">Vendor</th>
- <th width="25%">Driver</th>
- </tr>
- </thead>
-
-<rhn-device-data>
- <tr class="{row_class}">
- <td class="first-column">{other_description}</td>
- <td>{other_bus}</td>
- <td>{other_vendorstring}</td>
- <td class="last-column">{other_driver}</td>
- </tr>
-</rhn-device-data>
- </table>
-
-</rhn-server-device>
-</rhn-server-hardware-profile>
-
- </grail-canvas-template>
-</pxt-passthrough>
-
commit 795d52de55dd1b3c1457a3447d982d56d542c073
Author: Colin Coe <coec(a)spacey.coesta.com>
Date: Wed Aug 4 23:20:00 2010 +0800
Convert hardware.pxt to Java
diff --git a/java/code/src/com/redhat/rhn/frontend/action/systems/sdc/SystemHardwareAction.java b/java/code/src/com/redhat/rhn/frontend/action/systems/sdc/SystemHardwareAction.java
new file mode 100644
index 0000000..25e0f2d
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/frontend/action/systems/sdc/SystemHardwareAction.java
@@ -0,0 +1,104 @@
+/**
+ * Copyright (c) 2009--2010 Red Hat, Inc.
+ *
+ * This software is licensed to you under the GNU General Public License,
+ * version 2 (GPLv2). There is NO WARRANTY for this software, express or
+ * implied, including the implied warranties of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. You should have received a copy of GPLv2
+ * along with this software; if not, see
+ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
+ *
+ * Red Hat trademarks are not licensed under GPLv2. No permission is
+ * granted to use or replicate Red Hat trademarks that are incorporated
+ * in this software or its documentation.
+ */
+package com.redhat.rhn.frontend.action.systems.sdc;
+
+import com.redhat.rhn.domain.action.Action;
+import com.redhat.rhn.domain.action.ActionFactory;
+import com.redhat.rhn.domain.server.CPU;
+import com.redhat.rhn.domain.server.Server;
+import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.struts.RequestContext;
+import com.redhat.rhn.frontend.struts.RhnAction;
+import com.redhat.rhn.manager.action.ActionManager;
+import com.redhat.rhn.manager.system.SystemManager;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.DynaActionForm;
+
+import java.util.Date;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * SystemHardwareAction handles the interaction of the ChannelDetails page.
+ * @version $Rev$
+ */
+public class SystemHardwareAction extends RhnAction {
+ public static final String SID = "sid";
+
+ /** {@inheritDoc} */
+ public ActionForward execute(ActionMapping mapping,
+ ActionForm formIn,
+ HttpServletRequest request,
+ HttpServletResponse response) {
+
+ DynaActionForm form = (DynaActionForm)formIn;
+ RequestContext ctx = new RequestContext(request);
+ User user = ctx.getLoggedInUser();
+ Map params = makeParamMap(request);
+ String fwd = "default";
+
+ Long sid = ctx.getRequiredParam(RequestContext.SID);
+ Server server = SystemManager.lookupByIdAndUser(sid, user);
+
+ CPU cpu = server.getCpu();
+ Date now = new Date();
+ request.setAttribute(SID, sid);
+
+ if (isSubmitted(form)) {
+ Action a = ActionManager.scheduleHardwareRefreshAction(user, server, now);
+ ActionFactory.save(a);
+
+ createSuccessMessage(request, "message.refeshScheduled", server.getName());
+
+ // No idea why I have to do this :(
+ params.put(SID, sid);
+
+ fwd = "success";
+ }
+
+ request.setAttribute("system", server);
+
+ request.setAttribute("cpu_model", cpu.getModel());
+ request.setAttribute("cpu_mhz", cpu.getMHz());
+ request.setAttribute("cpu_vendor", cpu.getVendor());
+ request.setAttribute("cpu_stepping", cpu.getStepping());
+ request.setAttribute("cpu_family", cpu.getFamily());
+ request.setAttribute("cpu_arch", cpu.getArch().getName());
+ request.setAttribute("cpu_cache", cpu.getCache());
+
+ request.setAttribute("system_ram", server.getRam());
+ request.setAttribute("system_swap", server.getSwap());
+
+ request.setAttribute("dmi_vendor", server.getDmi().getVendor());
+ request.setAttribute("dmi_system", server.getDmi().getSystem());
+ request.setAttribute("dmi_product", server.getDmi().getProduct());
+ request.setAttribute("dmi_bios", server.getDmi().getBios());
+ request.setAttribute("dmi_asset_tag", server.getDmi().getAsset());
+ request.setAttribute("dmi_board", server.getDmi().getBoard());
+
+ request.setAttribute("network_hostname", server.getHostname());
+ request.setAttribute("network_ip_addr", server.getIpAddress());
+
+ request.setAttribute("parentUrl", request.getRequestURI());
+
+ return getStrutsDelegate().forwardParams(
+ mapping.findForward(fwd), params);
+ }
+}
+
diff --git a/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml b/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
index 0bc0650..5894fe6 100644
--- a/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
+++ b/java/code/src/com/redhat/rhn/frontend/strings/java/StringResource_en_US.xml
@@ -1539,6 +1539,12 @@ http://www.oasis-open.org/committees/xliff/documents/xliff-core-1.1.xsd"
<context context-type="sourcefile">/rhn/users/AssignedSystemGroups</context>
</context-group>
</trans-unit>
+ <trans-unit id="message.refeshScheduled">
+<source>You have successfully scheduled a hardware profile refresh for {0}.</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/rhn/users/AssignedSystemGroups</context>
+ </context-group>
+ </trans-unit>
<trans-unit id="prefix">
<source>Prefix</source>
<context-group name="ctx">
diff --git a/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml b/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
index 7ee8a4c..ecf4eca 100644
--- a/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
+++ b/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml
@@ -18994,6 +18994,153 @@ performing a kickstart or creating a new kickstart distribution.</strong>
</context-group>
</trans-unit>
+ <trans-unit id="sdc.details.hardware.header">
+ <source>Refresh Hardware List</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.refresh">
+ <source>The following list represents the detectable hardware on this system. If this list is incomplete, you may press the button below to schedule a hardware list refresh for this system.</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.schedule">
+ <source>Schedule Hardware Refresh</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.arch">
+ <source>Arch:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.vendor">
+ <source>Vendor:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.stepping">
+ <source>Stepping:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.family">
+ <source>Family:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.cache">
+ <source>Cache:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.memory">
+ <source>Memory:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.swap">
+ <source>Swap:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.general">
+ <source>General</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.dmi">
+ <source>DMI Info</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.dmi_system">
+ <source>System:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.dmi_bios">
+ <source>Bios:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.dmi_asset_tag">
+ <source>Asset Tag:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.dmi_board">
+ <source>Board:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.dmi_product">
+ <source>Product:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.dmi_vendor">
+ <source>Vendor:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.networking">
+ <source>Networking</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.network_hostname">
+ <source>Hostname:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
+ <trans-unit id="sdc.details.hardware.network_ip_addr">
+ <source>IP Address:</source>
+ <context-group name="ctx">
+ <context context-type="sourcefile">/systems/details/SystemHardware.do</context>
+ </context-group>
+ </trans-unit>
+
<trans-unit id="methods.jsp.nomethods">
<source>No notification methods configured.</source>
<context-group name="ctx">
diff --git a/java/code/webapp/WEB-INF/nav/system_detail.xml b/java/code/webapp/WEB-INF/nav/system_detail.xml
index 60e4e99..d9c19a0 100644
--- a/java/code/webapp/WEB-INF/nav/system_detail.xml
+++ b/java/code/webapp/WEB-INF/nav/system_detail.xml
@@ -14,8 +14,7 @@
</rhn-tab>
<rhn-tab name="Reactivation" url="/network/systems/details/activation.pxt" acl="system_feature(ftr_agent_smith)"/>
<rhn-tab name="Hardware">
- <rhn-tab-url>/network/systems/details/hardware.pxt</rhn-tab-url>
- <rhn-tab-url>/network/systems/hardware_list_refresh_confirm.pxt</rhn-tab-url>
+ <rhn-tab-url>/rhn/systems/details/SystemHardware.do</rhn-tab-url>
</rhn-tab>
<rhn-tab name="Migrate" acl="user_role(org_admin)" url="/rhn/systems/details/SystemMigrate.do" />
<rhn-tab name="Notes">
diff --git a/java/code/webapp/WEB-INF/pages/systems/sdc/hardware.jsp b/java/code/webapp/WEB-INF/pages/systems/sdc/hardware.jsp
new file mode 100644
index 0000000..23b51c5
--- /dev/null
+++ b/java/code/webapp/WEB-INF/pages/systems/sdc/hardware.jsp
@@ -0,0 +1,156 @@
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+<%@ taglib uri="http://rhn.redhat.com/rhn" prefix="rhn" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
+<%@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>
+
+<html:html xhtml="true">
+ <body>
+ <%@ include file="/WEB-INF/pages/common/fragments/systems/system-header.jspf" %>
+ <h2><bean:message key="sdc.details.hardware.header"/></h2>
+
+ <bean:message key="sdc.details.hardware.refresh"/>
+
+ <html:form method="post" action="/systems/details/SystemHardware.do?sid=${sid}">
+ <html:hidden property="submitted" value="true"/>
+ <div align="right">
+ <html:submit>
+ <bean:message key="sdc.details.hardware.schedule"/>
+ </html:submit>
+ </div>
+ </html:form>
+
+ <h2><bean:message key="sdc.details.hardware.general"/></h2>
+ (COUNT) ${cpu_model} ${cpu_mhz} MHZ
+ <table class="details">
+ <tr>
+ <th>
+ <bean:message key="sdc.details.hardware.arch"/>
+ </th>
+ <td>
+ ${cpu_arch}
+ </td>
+ <th>
+ <bean:message key="sdc.details.hardware.cache"/>
+ </th>
+ <td>
+ ${cpu_cache}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ <bean:message key="sdc.details.hardware.vendor"/>
+ </th>
+ <td>
+ ${cpu_vendor}
+ </td>
+ <th rowspan="2">
+ <bean:message key="sdc.details.hardware.memory"/>
+ </th>
+ <td rowspan="2">
+ ${system_ram} MB
+ </td>
+ </tr>
+ <tr>
+ <th>
+ <bean:message key="sdc.details.hardware.stepping"/>
+ </th>
+ <td>
+ ${cpu_stepping}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ <bean:message key="sdc.details.hardware.family"/>
+ </th>
+ <td>
+ ${cpu_family}
+ </td>
+ <th rowspan="2">
+ <bean:message key="sdc.details.hardware.swap"/>
+ </th>
+ <td rowspan="2">
+ ${system_swap} MB
+ </td>
+ </tr>
+ </table>
+
+ <c:if test="${empty dmi_vendor}" var="no_vendor"/>
+ <c:if test="${empty dmi_bios}" var="no_bios"/>
+ <c:if test="${empty dmi_system}" var="no_system"/>
+ <c:if test="${empty dmi_product}" var="no_product"/>
+ <c:if test="${empty dmi_asset_tag}" var="no_asset_tag"/>
+ <c:if test="${empty dmi_board}" var="no_board"/>
+
+ <c:if test="${not (no_vendor or no_bios or no_system or no_product or no_asset_tag or no_board)}">
+ <h2><bean:message key="sdc.details.hardware.dmi"/></h2>
+ <table class="details">
+ <tr>
+ <th>
+ <bean:message key="sdc.details.hardware.dmi_vendor"/>
+ </th>
+ <td>
+ ${dmi_vendor}
+ </td>
+ <th rowspan="2">
+ <bean:message key="sdc.details.hardware.dmi_bios"/>
+ </th>
+ <td rowspan="2">
+ ${dmi_bios}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ <bean:message key="sdc.details.hardware.dmi_system"/>
+ </th>
+ <td>
+ ${dmi_system}
+ </td>
+ </tr>
+ <tr>
+ <th rowspan="2">
+ <bean:message key="sdc.details.hardware.dmi_product"/>
+ </th>
+ <td rowspan="2">
+ ${dmi_product}
+ </td>
+ <th>
+ <bean:message key="sdc.details.hardware.dmi_asset_tag"/>
+ </th>
+ <td>
+ ${dmi_asset_tag}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ <bean:message key="sdc.details.hardware.dmi_board"/>
+ </th>
+ <td>
+ ${dmi_board}
+ </td>
+ </tr>
+ </table>
+ </c:if>
+
+ <h2><bean:message key="sdc.details.hardware.networking"/></h2>
+
+ <table class="details">
+ <tr>
+ <th>
+ <bean:message key="sdc.details.hardware.network_hostname"/>
+ </th>
+ <td>
+ ${network_hostname}
+ </td>
+ </tr>
+ <tr>
+ <th>
+ <bean:message key="sdc.details.hardware.network_ip_addr"/>
+ </th>
+ <td>
+ ${network_ip_addr}
+ </td>
+ </tr>
+ </table>
+ </body>
+</html:html>
+
diff --git a/java/code/webapp/WEB-INF/struts-config.xml b/java/code/webapp/WEB-INF/struts-config.xml
index 79f713d..e3ee423 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -943,6 +943,11 @@
<form-property name="submitted" type="java.lang.Boolean"/>
</form-bean>
+ <form-bean name="systemHardwareForm"
+ type="com.redhat.rhn.frontend.struts.ScrubbingDynaActionForm">
+ <form-property name="sid" type="java.lang.Long"/>
+ <form-property name="submitted" type="java.lang.Boolean"/>
+ </form-bean>
<!--END ConfigChannel forms -->
@@ -2568,6 +2573,17 @@
path="/WEB-INF/pages/systems/registeredlist.jsp"/>
</action>
+ <action path="/systems/details/SystemHardware"
+ scope="request"
+ name="systemHardwareForm"
+ input="/WEB-INF/pages/systems/sdc/hardware.jsp"
+ type="com.redhat.rhn.frontend.action.systems.sdc.SystemHardwareAction">
+ <forward name="default"
+ path="/WEB-INF/pages/systems/sdc/hardware.jsp"/>
+ <forward name="success"
+ path="/systems/details/SystemHardware.do" redirect="true"/>
+ </action>
+
<action path="/systems/SystemCurrency"
scope="request"
name="systemCurrencyForm"
diff --git a/web/html/nav/system_detail.xml b/web/html/nav/system_detail.xml
index 43a5306..7ca4232 100644
--- a/web/html/nav/system_detail.xml
+++ b/web/html/nav/system_detail.xml
@@ -14,8 +14,7 @@
</rhn-tab>
<rhn-tab name="Reactivation" url="/network/systems/details/activation.pxt" acl="system_feature(ftr_agent_smith)"/>
<rhn-tab name="Hardware">
- <rhn-tab-url>/network/systems/details/hardware.pxt</rhn-tab-url>
- <rhn-tab-url>/network/systems/hardware_list_refresh_confirm.pxt</rhn-tab-url>
+ <rhn-tab-url>/rhn/systems/details/SystemHardware.do</rhn-tab-url>
</rhn-tab>
<rhn-tab name="Migrate" acl="user_role(org_admin)" url="/rhn/systems/details/SystemMigrate.do" />
<rhn-tab name="Notes">
13 years, 10 months
Changes to 'refs/tags/spacewalk-schema-1.1.27-1'
by Partha Aji
Tag 'spacewalk-schema-1.1.27-1' created by Partha Aji <paji(a)redhat.com> at 2010-08-04 14:54 +0000
Tagging package [spacewalk-schema] version [1.1.27-1] in directory [schema/spacewalk/].
Changes since osad-5.9.38-1:
Partha Aji (2):
Fixed a couple of schema bloopers on config stuff
Automatic commit of package [spacewalk-schema] release [1.1.27-1].
---
rel-eng/packages/spacewalk-schema | 2 +-
schema/spacewalk/common/tables/rhnConfigContent.sql | 4 ++--
schema/spacewalk/common/tables/rhnConfigRevision.sql | 4 ++--
schema/spacewalk/spacewalk-schema.spec | 5 ++++-
4 files changed, 9 insertions(+), 6 deletions(-)
---
13 years, 10 months
rel-eng/packages schema/spacewalk
by Partha Aji
rel-eng/packages/spacewalk-schema | 2 +-
schema/spacewalk/spacewalk-schema.spec | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
New commits:
commit 4c4391c461fceef2fd7e15e505d18abf97cd5467
Author: Partha Aji <paji(a)redhat.com>
Date: Wed Aug 4 10:54:00 2010 -0400
Automatic commit of package [spacewalk-schema] release [1.1.27-1].
diff --git a/rel-eng/packages/spacewalk-schema b/rel-eng/packages/spacewalk-schema
index 69d473a..ba0df86 100644
--- a/rel-eng/packages/spacewalk-schema
+++ b/rel-eng/packages/spacewalk-schema
@@ -1 +1 @@
-1.1.26-1 schema/spacewalk/
+1.1.27-1 schema/spacewalk/
diff --git a/schema/spacewalk/spacewalk-schema.spec b/schema/spacewalk/spacewalk-schema.spec
index 63d997b..6f0606b 100644
--- a/schema/spacewalk/spacewalk-schema.spec
+++ b/schema/spacewalk/spacewalk-schema.spec
@@ -2,7 +2,7 @@ Name: spacewalk-schema
Group: Applications/Internet
Summary: Oracle SQL schema for Spacewalk server
-Version: 1.1.26
+Version: 1.1.27
Release: 1%{?dist}
Source0: %{name}-%{version}.tar.gz
@@ -59,6 +59,9 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man1/spacewalk-schema-upgrade*
%changelog
+* Wed Aug 04 2010 Partha Aji <paji(a)redhat.com> 1.1.27-1
+- Fixed a couple of schema bloopers on config stuff (paji(a)redhat.com)
+
* Tue Aug 03 2010 Jan Pazdziora 1.1.26-1
- Chameleon does not support the NULL clause, fix source.
13 years, 10 months
schema/spacewalk
by Partha Aji
schema/spacewalk/common/tables/rhnConfigContent.sql | 4 ++--
schema/spacewalk/common/tables/rhnConfigRevision.sql | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
New commits:
commit 7c0e6037df55ebeb9797e1e3200e0095ae418e85
Author: Partha Aji <paji(a)redhat.com>
Date: Wed Aug 4 10:53:08 2010 -0400
Fixed a couple of schema bloopers on config stuff
diff --git a/schema/spacewalk/common/tables/rhnConfigContent.sql b/schema/spacewalk/common/tables/rhnConfigContent.sql
index b2c6e56..2c5f97d 100644
--- a/schema/spacewalk/common/tables/rhnConfigContent.sql
+++ b/schema/spacewalk/common/tables/rhnConfigContent.sql
@@ -28,8 +28,8 @@ CREATE TABLE rhnConfigContent
DEFAULT ('N') NOT NULL
CONSTRAINT rhn_confcontent_isbin_ck
CHECK (is_binary in ( 'Y' , 'N' )),
- delim_start VARCHAR2(16),
- delim_end VARCHAR2(16),
+ delim_start VARCHAR2(16) NOT NULL,
+ delim_end VARCHAR2(16) NOT NULL,
created DATE
DEFAULT (sysdate) NOT NULL,
modified DATE
diff --git a/schema/spacewalk/common/tables/rhnConfigRevision.sql b/schema/spacewalk/common/tables/rhnConfigRevision.sql
index eaa21f2..3934615 100644
--- a/schema/spacewalk/common/tables/rhnConfigRevision.sql
+++ b/schema/spacewalk/common/tables/rhnConfigRevision.sql
@@ -23,10 +23,10 @@ CREATE TABLE rhnConfigRevision
config_file_id NUMBER NOT NULL
CONSTRAINT rhn_confrevision_cfid_fk
REFERENCES rhnConfigFile (id),
- config_content_id NUMBER NOT NULL
+ config_content_id NUMBER
CONSTRAINT rhn_confrevision_ccid_fk
REFERENCES rhnConfigContent (id),
- config_info_id NUMBER
+ config_info_id NUMBER NOT NULL
CONSTRAINT rhn_confrevision_ciid_fk
REFERENCES rhnConfigInfo (id),
created DATE
13 years, 10 months
Changes to 'refs/tags/osad-5.9.38-1'
by Jan Pazdziora
Tag 'osad-5.9.38-1' created by Jan Pazdziora <jpazdziora(a)redhat.com> at 2010-08-04 12:02 +0000
Tagging package [osad] version [5.9.38-1] in directory [client/tools/osad/].
Changes since spacewalk-web-1.1.7-1:
Jan Pazdziora (2):
Allow osa-dispatcher to talk to PostgreSQL.
Automatic commit of package [osad] release [5.9.38-1].
Miroslav Suchý (1):
618267 - all data in F12+ should be in unicode, lets decode it
---
client/rhel/rhn-client-tools/src/up2date_client/rhnreg.py | 2 +-
client/tools/osad/osa-dispatcher-selinux/osa-dispatcher.te | 2 ++
client/tools/osad/osad.spec | 5 ++++-
rel-eng/packages/osad | 2 +-
4 files changed, 8 insertions(+), 3 deletions(-)
---
13 years, 10 months
2 commits - client/tools rel-eng/packages
by Jan Pazdziora
client/tools/osad/osa-dispatcher-selinux/osa-dispatcher.te | 2 ++
client/tools/osad/osad.spec | 5 ++++-
rel-eng/packages/osad | 2 +-
3 files changed, 7 insertions(+), 2 deletions(-)
New commits:
commit d2d599b643229dba78c1805cdd16992dac3e91a3
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Wed Aug 4 14:02:19 2010 +0200
Automatic commit of package [osad] release [5.9.38-1].
diff --git a/client/tools/osad/osad.spec b/client/tools/osad/osad.spec
index 9fa1595..a8b07ea 100644
--- a/client/tools/osad/osad.spec
+++ b/client/tools/osad/osad.spec
@@ -9,7 +9,7 @@ Group: System Environment/Daemons
License: GPLv2
URL: https://fedorahosted.org/spacewalk
Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
-Version: 5.9.37
+Version: 5.9.38
Release: 1%{?dist}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
@@ -247,6 +247,9 @@ rpm -ql osa-dispatcher | xargs -n 1 /sbin/restorecon -rvi {}
# $Id$
%changelog
+* Wed Aug 04 2010 Jan Pazdziora 5.9.38-1
+- Allow osa-dispatcher to talk to PostgreSQL.
+
* Mon Jul 26 2010 Milan Zazrivec <mzazrivec(a)redhat.com> 5.9.37-1
- 618300 - default_db is no longer needed
diff --git a/rel-eng/packages/osad b/rel-eng/packages/osad
index e2c4912..308837b 100644
--- a/rel-eng/packages/osad
+++ b/rel-eng/packages/osad
@@ -1 +1 @@
-5.9.37-1 client/tools/osad/
+5.9.38-1 client/tools/osad/
commit 04f22abe2502aa4a8a6ac6466607f73cc1ba4534
Author: Jan Pazdziora <jpazdziora(a)redhat.com>
Date: Wed Aug 4 14:00:58 2010 +0200
Allow osa-dispatcher to talk to PostgreSQL.
Addressing
avc: denied { name_connect } for pid=12935 comm="osa-dispatcher" dest=5432 scontext=system_u:system_r:osa_dispatcher_t:s0 tcontext=system_u:object_r:postgresql_port_t:s0 tclass=tcp_socket
diff --git a/client/tools/osad/osa-dispatcher-selinux/osa-dispatcher.te b/client/tools/osad/osa-dispatcher-selinux/osa-dispatcher.te
index 3cb9c6b..a0cabd4 100644
--- a/client/tools/osad/osa-dispatcher-selinux/osa-dispatcher.te
+++ b/client/tools/osad/osa-dispatcher-selinux/osa-dispatcher.te
@@ -7,6 +7,7 @@ require {
type oracle_port_t;
type jabber_client_port_t;
type inaddr_any_node_t;
+ type postgresql_port_t;
}
type osa_dispatcher_t;
@@ -63,6 +64,7 @@ sysnet_dns_name_resolve(osa_dispatcher_t)
allow osa_dispatcher_t oracle_port_t:tcp_socket name_connect;
allow osa_dispatcher_t jabber_client_port_t:tcp_socket name_connect;
+allow osa_dispatcher_t postgresql_port_t:tcp_socket name_connect;
corenet_all_recvfrom_unlabeled(osa_dispatcher_t)
corenet_all_recvfrom_netlabel(osa_dispatcher_t)
13 years, 10 months