Branch 'ssm-kickstart' - java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/manager/kickstart/SSMScheduleCommand.java | 210 ++++++++++
1 file changed, 210 insertions(+)
New commits:
commit c28975ef1bd27167d49b3bac4f95bd2abd3b8811
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Wed Jul 1 18:50:44 2009 -0400
adding ssmScheduleCommand
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/SSMScheduleCommand.java b/java/code/src/com/redhat/rhn/manager/kickstart/SSMScheduleCommand.java
new file mode 100644
index 0000000..e3a85e8
--- /dev/null
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/SSMScheduleCommand.java
@@ -0,0 +1,210 @@
+/**
+ * Copyright (c) 2009 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.manager.kickstart;
+
+import com.redhat.rhn.common.validator.ValidatorError;
+import com.redhat.rhn.domain.action.Action;
+import com.redhat.rhn.domain.kickstart.KickstartData;
+import com.redhat.rhn.domain.server.Server;
+import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.dto.SystemOverview;
+import com.redhat.rhn.manager.system.SystemManager;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+/**
+ *
+ * SSMScheduleCommand
+ * @version $Rev$
+ */
+public class SSMScheduleCommand {
+
+
+
+ // Required attributes
+ private User user;
+ private Date scheduleDate;
+ private String kickstartServerName;
+ private List<SystemOverview> systems;
+ private boolean isCobblerOnly = false;
+ private boolean isIpBasedKs = false;
+
+ //Optional
+ private String cobblerProfileName;
+ private KickstartData ksdata;
+
+ private String profileType;
+ private Long packageProfileId;
+ private Long serverProfileId;
+
+
+ private String kernelOptions;
+ private String postKernelOptions;
+
+ private List<Action> scheduledActions = new ArrayList<Action>();
+
+
+
+ /**
+ * Constructor for SSMScheduleCommand when we've selected a kickstart
+ * profile
+ * @param userIn the user
+ * @param systemsIn List of SystemOverview's to provision
+ * @param dateIn the date to schedule it for
+ * @param kickstartHostIn the kickstart hostname (proxy's or satellite's)
+ * @param ksdataIn the kickstartData
+ */
+ public SSMScheduleCommand(User userIn, List<SystemOverview> systemsIn, Date dateIn,
+ String kickstartHostIn, KickstartData ksdataIn) {
+ user = userIn;
+ systems = systemsIn;
+ scheduleDate = dateIn;
+ kickstartServerName = kickstartHostIn;
+ ksdata = ksdataIn;
+ }
+
+ /**
+ * Constructor for SSMScheduleCommand when we've selected a cobbler-only
+ * profile
+ * @param userIn the user
+ * @param systemsIn List of SystemOverview's to provision
+ * @param dateIn the date to schedule it for
+ * @param kickstartHostIn the kickstart hostname (proxy's or satellite's)
+ * @param cobblerProfileNameIn the cobbler profile's name
+ */
+ public SSMScheduleCommand(User userIn, List<SystemOverview> systemsIn, Date dateIn,
+ String kickstartHostIn, String cobblerProfileNameIn) {
+ user = userIn;
+ systems = systemsIn;
+ scheduleDate = dateIn;
+ kickstartServerName = kickstartHostIn;
+ cobblerProfileName = cobblerProfileNameIn;
+ isCobblerOnly = true;
+ }
+
+ /**
+ * Constructor for SSMScheduleCommand when were using IP ADDRESS
+ * base kickstarting
+ * @param userIn the user
+ * @param systemsIn List of SystemOverview's to provision
+ * @param dateIn the date to schedule it for
+ * @param kickstartHostIn the kickstart hostname (proxy's or satellite's)
+ */
+ public SSMScheduleCommand(User userIn, List<SystemOverview> systemsIn, Date dateIn,
+ String kickstartHostIn) {
+ user = userIn;
+ systems = systemsIn;
+ scheduleDate = dateIn;
+ kickstartServerName = kickstartHostIn;
+ isIpBasedKs = true;
+ }
+
+
+
+ /**
+ * @param profileTypeIn The profileType to set.
+ */
+ public void setProfileType(String profileTypeIn) {
+ this.profileType = profileTypeIn;
+ }
+
+ /**
+ * @param packageProfileIdIn The packageProfileId to set.
+ */
+ public void setPackageProfileId(Long packageProfileIdIn) {
+ this.packageProfileId = packageProfileIdIn;
+ }
+
+ /**
+ * @param serverProfileIdIn The serverProfileId to set.
+ */
+ public void setServerProfileId(Long serverProfileIdIn) {
+ this.serverProfileId = serverProfileIdIn;
+ }
+
+ /**
+ * @param kernelOptionsIn The kernelOptions to set.
+ */
+ public void setKernelOptions(String kernelOptionsIn) {
+ this.kernelOptions = kernelOptionsIn;
+ }
+
+ /**
+ * @param postKernelOptionsIn The postKernelOptions to set.
+ */
+ public void setPostKernelOptions(String postKernelOptionsIn) {
+ this.postKernelOptions = postKernelOptionsIn;
+ }
+
+ /**
+ * @return Returns the storedActions.
+ */
+ public List<Action> getScheduledActions() {
+ return scheduledActions;
+ }
+
+
+ /**
+ * Store the Command
+ * @return list of ValidatorErrors that were encountered
+ */
+ public List<ValidatorError> store() {
+ List<ValidatorError> errors = new ArrayList<ValidatorError>();
+
+ for (SystemOverview sys : systems) {
+ ValidatorError e = scheduleSystem(sys.getId());
+ if (e != null) {
+ errors.add(e);
+ }
+ }
+ return errors;
+ }
+
+
+
+ private ValidatorError scheduleSystem(Long sid) {
+
+ KickstartData uniqueKs = ksdata;
+
+ if (isIpBasedKs) {
+ Server ser = SystemManager.lookupByIdAndUser(sid, user);
+ uniqueKs = KickstartManager.findProfileForServersNetwork(ser);
+ }
+
+ KickstartScheduleCommand com;
+ if (isCobblerOnly) {
+ com = KickstartScheduleCommand.createCobblerScheduleCommand(sid,
+ cobblerProfileName, user, scheduleDate, kickstartServerName);
+ }
+ else {
+ com = new KickstartScheduleCommand(sid, uniqueKs, user, scheduleDate,
+ kickstartServerName);
+ }
+
+ com.setKernelOptions(kernelOptions);
+ com.setPostKernelOptions(postKernelOptions);
+ com.setProfileType(profileType);
+ com.setProfileId(packageProfileId);
+ com.setServerProfileId(serverProfileId);
+ ValidatorError error = com.store();
+
+ this.scheduledActions.add(com.getScheduledAction());
+ return error;
+ }
+
+
+}
14 years, 10 months
Branch 'ssm-kickstart' - java/code web/html
by Partha Aji
java/code/webapp/WEB-INF/nav/ssm.xml | 7 +++++--
java/code/webapp/WEB-INF/struts-config.xml | 14 +++++++-------
web/html/nav/ssm.xml | 7 +++++--
web/html/network/systems/ssm/index.pxt | 2 +-
4 files changed, 18 insertions(+), 12 deletions(-)
New commits:
commit 79a6e7eeb3a0dc243005da1cdb31734ffe3b5f45
Author: Partha Aji <paji(a)redhat.com>
Date: Wed Jul 1 18:48:58 2009 -0400
Fixed nav entries
diff --git a/java/code/webapp/WEB-INF/nav/ssm.xml b/java/code/webapp/WEB-INF/nav/ssm.xml
index 038c293..27d57b1 100644
--- a/java/code/webapp/WEB-INF/nav/ssm.xml
+++ b/java/code/webapp/WEB-INF/nav/ssm.xml
@@ -104,8 +104,11 @@
</rhn-tab>
</rhn-tab>
- <rhn-tab name="Provisioning" acl="org_entitlement(rhn_provisioning)" url="/network/systems/ssm/provisioning/kickstart.pxt">
- <rhn-tab name="Kickstart" url="/network/systems/ssm/provisioning/kickstart.pxt" />
+ <rhn-tab name="Provisioning" acl="org_entitlement(rhn_provisioning)" url="/rhn/systems/ssm/kickstart/KickstartableSystems.do">
+ <rhn-tab name="Kickstart" url="/rhn/systems/ssm/kickstart/KickstartableSystems.do" >
+ <rhn-tab-url>/rhn/systems/ssm/kickstart/ScheduleByProfile.do</rhn-tab-url>
+ <rhn-tab-url>/rhn/systems/ssm/kickstart/ScheduleByIp.do</rhn-tab-url>
+ </rhn-tab>
<rhn-tab name="Tag Systems" url="/network/systems/ssm/provisioning/tag_systems.pxt" />
<rhn-tab name="Rollback" url="/network/systems/ssm/provisioning/rollback.pxt">
<rhn-tab-url>/network/systems/ssm/provisioning/rollback_by_tag_conf.pxt</rhn-tab-url>
diff --git a/java/code/webapp/WEB-INF/struts-config.xml b/java/code/webapp/WEB-INF/struts-config.xml
index 3b41109..2e4399c 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -4604,7 +4604,7 @@
</action>
<!-- Kickstart Pages SSM -->
- <action path="/ssm/kickstart/KickstartableSystems"
+ <action path="/systems/ssm/kickstart/KickstartableSystems"
scope="request"
input="/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp"
type="com.redhat.rhn.frontend.action.kickstart.ssm.SsmKickstartableSystemsAction"
@@ -4613,13 +4613,13 @@
<forward name="default"
path="/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp"/>
<forward name="scheduleByIp"
- path="/ssm/kickstart/ScheduleByIp.do"
+ path="/systems/ssm/kickstart/ScheduleByIp.do"
redirect= "true"/>
<forward name="scheduleByProfile"
- path="/ssm/kickstart/ScheduleByProfile.do"
+ path="/systems/ssm/kickstart/ScheduleByProfile.do"
redirect= "true"/>
</action>
- <action path="/ssm/kickstart/ScheduleByProfile"
+ <action path="/systems/ssm/kickstart/ScheduleByProfile"
name ="datePickerForm"
scope="request"
input="/WEB-INF/pages/kickstart/ssm/schedule.jsp"
@@ -4630,10 +4630,10 @@
<forward name="default"
path="/WEB-INF/pages/kickstart/ssm/schedule.jsp"/>
<forward name="success" redirect= "true"
- path="/ssm/kickstart/KickstartableSystems.do"/>
+ path="/systems/ssm/kickstart/KickstartableSystems.do"/>
</action>
- <action path="/ssm/kickstart/ScheduleByIp"
+ <action path="/systems/ssm/kickstart/ScheduleByIp"
name ="datePickerForm"
scope="request"
input="/WEB-INF/pages/kickstart/ssm/schedule.jsp"
@@ -4644,7 +4644,7 @@
<forward name="default"
path="/WEB-INF/pages/kickstart/ssm/schedule.jsp"/>
<forward name="success" redirect= "true"
- path="/ssm/kickstart/KickstartableSystems.do"/>
+ path="/systems/ssm/kickstart/KickstartableSystems.do"/>
</action>
<!-- Kickstart Pages -->
diff --git a/web/html/nav/ssm.xml b/web/html/nav/ssm.xml
index 333a665..094e53e 100644
--- a/web/html/nav/ssm.xml
+++ b/web/html/nav/ssm.xml
@@ -89,8 +89,11 @@
<rhn-tab name="Enable Configuration" url="/rhn/systems/ssm/config/Enable.do" />
</rhn-tab>
- <rhn-tab name="Provisioning" acl="org_entitlement(rhn_provisioning)" url="/network/systems/ssm/provisioning/kickstart.pxt">
- <rhn-tab name="Kickstart" url="/network/systems/ssm/provisioning/kickstart.pxt" />
+ <rhn-tab name="Provisioning" acl="org_entitlement(rhn_provisioning)" url="/rhn/systems/ssm/kickstart/KickstartableSystems.do">
+ <rhn-tab name="Kickstart" url="/rhn/systems/ssm/kickstart/KickstartableSystems.do" >
+ <rhn-tab-url>/rhn/systems/ssm/kickstart/ScheduleByProfile.do</rhn-tab-url>
+ <rhn-tab-url>/rhn/systems/ssm/kickstart/ScheduleByIp.do</rhn-tab-url>
+ </rhn-tab>
<rhn-tab name="Tag Systems" url="/network/systems/ssm/provisioning/tag_systems.pxt" />
<rhn-tab name="Rollback" url="/network/systems/ssm/provisioning/rollback.pxt">
<rhn-tab-url>/network/systems/ssm/provisioning/rollback_by_tag_conf.pxt</rhn-tab-url>
diff --git a/web/html/network/systems/ssm/index.pxt b/web/html/network/systems/ssm/index.pxt
index a2650fe..bb8da81 100644
--- a/web/html/network/systems/ssm/index.pxt
+++ b/web/html/network/systems/ssm/index.pxt
@@ -102,7 +102,7 @@
alt="Provisioning" /></td>
<th>Provisioning:</th>
<td>
- <a href="/network/systems/ssm/provisioning/kickstart.pxt">Kickstart</a> systems <br />
+ <a href="/rhn/systems/ssm/kickstart/KickstartableSystems.do">Kickstart</a> systems <br />
<a href="/network/systems/ssm/provisioning/tag_systems.pxt">Tag</a> systems for <a href="/network/systems/ssm/provisioning/rollback.pxt">snapshot rollback</a><br />
Run <a href="/network/systems/ssm/provisioning/remote_command.pxt">remote commands</a><br />
</td>
14 years, 10 months
Branch 'sha256-support' - backend/satellite_exporter backend/satellite_tools backend/server
by Pradeep Kilambi
backend/satellite_exporter/exporter/dumper.py | 22 +++++----
backend/satellite_exporter/exporter/exportLib.py | 52 +++++++++++++++++------
backend/satellite_tools/disk_dumper/dumper.py | 12 +++--
backend/satellite_tools/exporter/exportLib.py | 42 +++++++++++++++---
backend/satellite_tools/xmlSource.py | 13 +++++
backend/server/importlib/backend.py | 11 ++++
backend/server/importlib/importLib.py | 4 -
backend/server/importlib/packageImport.py | 10 +++-
8 files changed, 130 insertions(+), 36 deletions(-)
New commits:
commit 924c1466da044d171627b426fbcfbf3c86ac1462
Author: Pradeep Kilambi <pkilambi(a)redhat.com>
Date: Wed Jul 1 18:35:39 2009 -0400
Sha256 support exporter/importer. Should export the checksum as a separate dumper and handle the inserts. More work follows
diff --git a/backend/satellite_exporter/exporter/dumper.py b/backend/satellite_exporter/exporter/dumper.py
index 1f95d34..c08f8ee 100644
--- a/backend/satellite_exporter/exporter/dumper.py
+++ b/backend/satellite_exporter/exporter/dumper.py
@@ -777,15 +777,17 @@ class ShortPackagesDumper(CachedDumper, exportLib.ShortPackagesDumper):
pe.evr.release release,
pe.evr.epoch epoch,
pa.label package_arch,
- p.md5sum,
+ pcs.checksum as md5sum,
p.package_size,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
- from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa
- where p.id = :package_id
+ from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
+ rhnPackageArch pa,
+ rhnPackageChecksum pcs
+ where p.id = :package_id
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
+ and pcs.package_id = p.id
""")
CachedDumper.__init__(self, writer, statement=h, params=packages)
@@ -817,8 +819,8 @@ class PackagesDumper(CachedDumper, exportLib.PackagesDumper):
p.payload_size,
p.build_host,
TO_CHAR(p.build_time, 'YYYYMMDDHH24MISS') build_time,
- sr.name source_rpm,
- p.md5sum,
+ sr.name source_rpm,
+ pcs.checksum as md5sum,
p.vendor,
p.payload_format,
p.compat,
@@ -828,14 +830,16 @@ class PackagesDumper(CachedDumper, exportLib.PackagesDumper):
p.copyright,
p.cookie,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
- from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr
- where p.id = :package_id
+ from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
+ rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr,
+ rhnPackageChecksum pcs
+ where p.id = :package_id
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.package_group = pg.id
and p.source_rpm_id = sr.id
+ and pcs.package_id = p.id
""")
CachedDumper.__init__(self, writer, statement=h, params=packages)
diff --git a/backend/satellite_exporter/exporter/exportLib.py b/backend/satellite_exporter/exporter/exportLib.py
index 3b0ce75..201df43 100644
--- a/backend/satellite_exporter/exporter/exportLib.py
+++ b/backend/satellite_exporter/exporter/exportLib.py
@@ -557,7 +557,6 @@ class PackagesDumper(BaseDumper):
p.build_host,
TO_CHAR(p.build_time, 'YYYYMMDDHH24MISS') build_time,
sr.name source_rpm,
- p.md5sum,
p.vendor,
p.payload_format,
p.compat,
@@ -566,14 +565,17 @@ class PackagesDumper(BaseDumper):
p.cookie,
p.header_start,
p.header_end,
+ pcs.checksum as md5sum,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
- from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr
+ from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
+ rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr,
+ rhnPackageChecksum pcs
where p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.package_group = pg.id
and p.source_rpm_id = sr.id
+ and pcs.package_id = p.id
and p.path is not null
and rownum < 3
""")
@@ -590,8 +592,8 @@ class _PackageDumper(BaseRowDumper):
def set_attributes(self):
attrs = ["name", "version", "release", "package_arch",
- "package_group", "rpm_version", "package_size", "payload_size",
- "build_host", "source_rpm", "md5sum", "payload_format",
+ "package_group", "rpm_version", "package_size", "payload_size",
+ "build_host", "source_rpm", "md5sum", "payload_format",
"compat", "cookie"]
attrdict = {
'id' : "rhn-package-%s" % self._row['id'],
@@ -627,6 +629,18 @@ class _PackageDumper(BaseRowDumper):
""")
h.execute(package_id = self._row['id'])
arr.append(_ChangelogDumper(self._writer, data_iterator=h))
+
+ # checksum
+ h = rhnSQL.prepare("""
+ select cst.label, pcs.checksum
+ from rhnPackageChecksum pcs,
+ rhnChecksumType cst
+ where pcs.package_id = :package_id
+ and pcs.checksum_type_id = cst.id
+ """)
+ h.execute(package_id = self._row['id'])
+ arr.append(_PackageChecksumDumper(self._writer, data_iterator=h))
+
# Dependency information
mappings = [
@@ -657,7 +671,8 @@ class _PackageDumper(BaseRowDumper):
pc.name, pf.device, pf.inode, pf.file_mode, pf.username,
pf.groupname, pf.rdev, pf.file_size,
TO_CHAR(mtime, 'YYYYMMDDHH24MISS') mtime,
- pf.md5, pf.linkto, pf.flags, pf.verifyflags, pf.lang
+ pf.checksum,
+ pf.linkto, pf.flags, pf.verifyflags, pf.lang
from rhnPackageFile pf, rhnPackageCapability pc
where pf.capability_id = pc.id
and pf.package_id = :package_id
@@ -683,14 +698,16 @@ class ShortPackagesDumper(BaseDumper):
pe.evr.release release,
pe.evr.epoch epoch,
pa.label package_arch,
- p.md5sum,
+ pcs.checksum as md5sum,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
- from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa
+ from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
+ rhnPackageArch pa,
+ rhnPackageChecksum pcs
where p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.path is not null
+ and pcs.package_id = p.id
and rownum < 3
""")
h.execute()
@@ -699,8 +716,8 @@ class ShortPackagesDumper(BaseDumper):
def dump_subelement(self, data):
attributes = {}
attrs = [
- "id", "name", "version", "release", "epoch",
- "package_arch", "md5sum", "package_size",
+ "id", "name", "version", "release", "epoch",
+ "package_arch", "package_size", "md5sum"
]
for attr in attrs:
attributes[attr.replace('_', '-')] = data[attr]
@@ -801,13 +818,24 @@ class _DependencyDumper(BaseDumper):
})
d.dump()
+class _PackageChecksumDumper(BaseDumper):
+ tag_name = 'rhn-package-checksum'
+
+ def dump_subelement(self, data):
+ data['checksum_type'] = data['label'] or ""
+ data['checksum'] = data['checksum'] or ""
+ d = EmptyDumper(self._writer, 'rhn-package-checksum',
+ attributes=data)
+ d.dump()
+
+
## Files
class _PackageFilesDumper(BaseDumper):
tag_name = 'rhn-package-files'
def dump_subelement(self, data):
data['mtime'] = _dbtime2timestamp(data['mtime'])
- data['md5'] = data['md5'] or ""
+ data['checksum'] = data['checksum'] or ""
data['linkto'] = data['linkto'] or ""
data['lang'] = data['lang'] or ""
d = EmptyDumper(self._writer, 'rhn-package-file',
diff --git a/backend/satellite_tools/disk_dumper/dumper.py b/backend/satellite_tools/disk_dumper/dumper.py
index 42bda4c..b67e0c9 100644
--- a/backend/satellite_tools/disk_dumper/dumper.py
+++ b/backend/satellite_tools/disk_dumper/dumper.py
@@ -923,15 +923,17 @@ class ShortPackagesDumper(CachedDumper, exportLib.ShortPackagesDumper):
pe.evr.release release,
pe.evr.epoch epoch,
pa.label package_arch,
- p.md5sum,
+ pcs.checksum as md5sum,
p.package_size,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa
+ rhnPackageArch pa,
+ rhnPackageChecksum pcs
where p.id = :package_id
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
+ and pcs.package_id = p.id
""")
CachedDumper.__init__(self, writer, statement=h, params=packages)
@@ -965,7 +967,7 @@ class PackagesDumper(CachedDumper, exportLib.PackagesDumper):
p.build_host,
TO_CHAR(p.build_time, 'YYYYMMDDHH24MISS') build_time,
sr.name source_rpm,
- p.md5sum,
+ pcs.checksum as md5sum,
p.vendor,
p.payload_format,
p.compat,
@@ -976,13 +978,15 @@ class PackagesDumper(CachedDumper, exportLib.PackagesDumper):
p.cookie,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr
+ rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr,
+ rhnPackageChecksum pcs
where p.id = :package_id
and p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.package_group = pg.id
and p.source_rpm_id = sr.id
+ and pcs.package_id = p.id
""")
CachedDumper.__init__(self, writer, statement=h, params=packages)
diff --git a/backend/satellite_tools/exporter/exportLib.py b/backend/satellite_tools/exporter/exportLib.py
index cd88b52..9cb6dcb 100644
--- a/backend/satellite_tools/exporter/exportLib.py
+++ b/backend/satellite_tools/exporter/exportLib.py
@@ -520,7 +520,6 @@ class PackagesDumper(BaseDumper):
p.build_host,
TO_CHAR(p.build_time, 'YYYYMMDDHH24MISS') build_time,
sr.name source_rpm,
- p.md5sum,
p.vendor,
p.payload_format,
p.compat,
@@ -529,14 +528,17 @@ class PackagesDumper(BaseDumper):
p.cookie,
p.header_start,
p.header_end,
+ pcs.checksum as md5sum,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr
+ rhnPackageArch pa, rhnPackageGroup pg, rhnSourceRPM sr,
+ rhnPackageChecksum pcs
where p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.package_group = pg.id
and p.source_rpm_id = sr.id
+ and pcs.package_id = p.id
and p.path is not null
and rownum < 3
""")
@@ -591,6 +593,18 @@ class _PackageDumper(BaseRowDumper):
""")
h.execute(package_id = self._row['id'])
arr.append(_ChangelogDumper(self._writer, data_iterator=h))
+
+ # checksum
+ h = rhnSQL.prepare("""
+ select cst.label, pcs.checksum
+ from rhnPackageChecksum pcs,
+ rhnChecksumType cst
+ where pcs.package_id = :package_id
+ and pcs.checksum_type_id = cst.id
+ """)
+ h.execute(package_id = self._row['id'])
+ arr.append(_PackageChecksumDumper(self._writer, data_iterator=h))
+
# Dependency information
mappings = [
@@ -621,7 +635,8 @@ class _PackageDumper(BaseRowDumper):
pc.name, pf.device, pf.inode, pf.file_mode, pf.username,
pf.groupname, pf.rdev, pf.file_size,
TO_CHAR(mtime, 'YYYYMMDDHH24MISS') mtime,
- pf.md5, pf.linkto, pf.flags, pf.verifyflags, pf.lang
+ pf.checksum,
+ pf.linkto, pf.flags, pf.verifyflags, pf.lang
from rhnPackageFile pf, rhnPackageCapability pc
where pf.capability_id = pc.id
and pf.package_id = :package_id
@@ -647,14 +662,16 @@ class ShortPackagesDumper(BaseDumper):
pe.evr.release release,
pe.evr.epoch epoch,
pa.label package_arch,
- p.md5sum,
+ pcs.checksum as md5sum,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
- rhnPackageArch pa
+ rhnPackageArch pa,
+ rhnPackageChecksum pcs
where p.name_id = pn.id
and p.evr_id = pe.id
and p.package_arch_id = pa.id
and p.path is not null
+ and pcs.package_id = p.id
and rownum < 3
""")
h.execute()
@@ -664,7 +681,7 @@ class ShortPackagesDumper(BaseDumper):
attributes = {}
attrs = [
"id", "name", "version", "release", "epoch",
- "package_arch", "md5sum", "package_size",
+ "package_arch", "package_size", "md5sum"
]
for attr in attrs:
attributes[string.replace(attr, '_', '-')] = data[attr]
@@ -765,13 +782,24 @@ class _DependencyDumper(BaseDumper):
})
d.dump()
+class _PackageChecksumDumper(BaseDumper):
+ tag_name = 'rhn-package-checksum'
+
+ def dump_subelement(self, data):
+ data['checksum_type'] = data['label'] or ""
+ data['checksum'] = data['checksum'] or ""
+ d = EmptyDumper(self._writer, 'rhn-package-checksum',
+ attributes=data)
+ d.dump()
+
+
## Files
class _PackageFilesDumper(BaseDumper):
tag_name = 'rhn-package-files'
def dump_subelement(self, data):
data['mtime'] = _dbtime2timestamp(data['mtime'])
- data['md5'] = data['md5'] or ""
+ data['checksum'] = data['checksum'] or ""
data['linkto'] = data['linkto'] or ""
data['lang'] = data['lang'] or ""
d = EmptyDumper(self._writer, 'rhn-package-file',
diff --git a/backend/satellite_tools/xmlSource.py b/backend/satellite_tools/xmlSource.py
index 0bfbda2..a12c6f6 100644
--- a/backend/satellite_tools/xmlSource.py
+++ b/backend/satellite_tools/xmlSource.py
@@ -517,6 +517,7 @@ class PackageItem(IncompletePackageItem):
'rhn-package-conflicts' : 'conflicts',
'rhn-package-obsoletes' : 'obsoletes',
'rhn-package-changelog' : 'changelog',
+ 'rhn-package-checksum' : 'checksum',
}
tagMap.update(IncompletePackageItem.tagMap)
addItem(PackageItem)
@@ -556,6 +557,16 @@ class ChangelogItem(BaseItem):
}
addItem(ChangelogItem)
+class ChecksumItem(BaseItem):
+ item_name = 'rhn-package-checksum'
+ item_class = importLib.Checksum
+ tagMap = {
+ 'checksum_type' : 'checksum_type',
+ 'checksum' : 'checksum',
+ }
+addItem(ChecksumItem)
+
+
class ProvidesItem(BaseItem):
item_name = 'rhn-package-provides-entry'
item_class = importLib.Dependency
@@ -600,7 +611,7 @@ class FileItem(BaseItem):
'rhn-package-file-rdev' : 'rdev',
'rhn-package-file-file_size': 'file_size',
'rhn-package-file-mtime' : 'mtime',
- 'rhn-package-file-md5' : 'md5',
+ 'rhn-package-file-md5' : 'checksum',
'rhn-package-file-linkto' : 'linkto',
'rhn-package-file-flags' : 'flags',
'rhn-package-file-verifyflags': 'verifyflags',
diff --git a/backend/server/importlib/backend.py b/backend/server/importlib/backend.py
index 55d0390..99df7c2 100644
--- a/backend/server/importlib/backend.py
+++ b/backend/server/importlib/backend.py
@@ -540,6 +540,16 @@ class Backend:
return self._lookup_in_table('rhnKSInstallType',
'rhn_ksinstalltype_id_seq', hash)
+ def lookup_checksum_type(self, checksums):
+ sql = "select id from rhnChecksumType where label = :ctype"
+ h = self.dbmodule.prepare(sql)
+ for checksum in checksums:
+ h.execute(ctype = checksum['checksum_type'])
+ row = h.fetchone_dict()
+ if row:
+ checksum['checksum_type_id'] = row['id']
+
+
def _lookup_in_table(self, table_name, sequence_name, hash):
t = self.dbmodule.Table(table_name, 'label')
seq = self.dbmodule.Sequence(sequence_name)
@@ -697,6 +707,7 @@ class Backend:
'rhnPackageObsoletes': 'package_id',
'rhnPackageFile': 'package_id',
'rhnPackageChangeLog': 'package_id',
+ 'rhnpackageChecksum' : 'package_id',
}
solarisChildTables = {
diff --git a/backend/server/importlib/importLib.py b/backend/server/importlib/importLib.py
index 1900cb6..cd54578 100644
--- a/backend/server/importlib/importLib.py
+++ b/backend/server/importlib/importLib.py
@@ -262,7 +262,7 @@ class ChangeLog(Item):
class Checksum(Information):
attributeTypes = {
- 'checksum_type_id' : StringType,
+ 'checksum_type' : StringType,
'checksum' : StringType,
}
@@ -348,7 +348,7 @@ class Package(IncompletePackage):
'obsoletes' : [Dependency],
'changelog' : [ChangeLog],
'channels' : [StringType],
- #'checksum' : [Checksum],
+ 'checksum' : [Checksum],
}
def __init__(self):
# Inherit from IncompletePackage
diff --git a/backend/server/importlib/packageImport.py b/backend/server/importlib/packageImport.py
index a1fb009..ee17c6d 100644
--- a/backend/server/importlib/packageImport.py
+++ b/backend/server/importlib/packageImport.py
@@ -113,7 +113,7 @@ class ChannelPackageSubscription(GenericPackageImport):
def submit(self):
self.backend.lookupPackages(self.batch)
- self.backend.processPackageChecksum(self.batch)
+ #self.backend.processPackageChecksum(self.batch)
try:
affected_channels = self.backend.subscribeToChannels(self.batch,
strict=self._strict_subscription)
@@ -271,6 +271,14 @@ class PackageImport(ChannelPackageSubscription):
cmp(a['name'], b['name']))
package['changelog'] = changelogs
+ checksums = {}
+ for checksum in package['checksum']:
+ self.backend.lookup_checksum_type(package['checksum'])
+ key = (checksum['checksum_type_id'], checksum['checksum'])
+ checksums[key] = checksum
+ package['checksum'] = checksums
+
+
if 'solaris_patch_set' in package:
if package.arch.startswith("sparc"):
self.package_arches['sparc-solaris-patch'] = None
14 years, 10 months
Branch 'ssm-kickstart' - java/code
by Partha Aji
java/code/src/com/redhat/rhn/frontend/action/kickstart/ScheduleKickstartWizardAction.java | 62 ++++-----
java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKSScheduleAction.java | 63 +++++++++-
java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKickstartableSystemsAction.java | 16 ++
java/code/src/com/redhat/rhn/frontend/action/kickstart/test/ScheduleKickstartWizardTest.java | 4
java/code/src/com/redhat/rhn/frontend/struts/StrutsDelegate.java | 1
java/code/src/com/redhat/rhn/manager/kickstart/KickstartLister.java | 15 ++
java/code/src/com/redhat/rhn/manager/kickstart/KickstartScheduleCommand.java | 14 --
java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartScheduleCommandTest.java | 5
java/code/src/com/redhat/rhn/manager/system/SystemManager.java | 18 ++
java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/ks-wizard.jspf | 22 ---
java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/profile-sync.jspf | 2
java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/proxy-options.jspf | 27 ++++
java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp | 11 -
java/code/webapp/WEB-INF/pages/kickstart/ssm/schedule.jsp | 54 ++++++++
java/code/webapp/WEB-INF/struts-config.xml | 12 +
15 files changed, 242 insertions(+), 84 deletions(-)
New commits:
commit b8b5ed3e011bf4e741563fa64921e778520f0bab
Author: Partha Aji <paji(a)redhat.com>
Date: Wed Jul 1 18:31:10 2009 -0400
Made the schedule page functional.
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/ScheduleKickstartWizardAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/ScheduleKickstartWizardAction.java
index 1524c6e..de7735a 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/ScheduleKickstartWizardAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/ScheduleKickstartWizardAction.java
@@ -45,12 +45,12 @@ import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.DynaActionForm;
+import org.apache.struts.util.LabelValueBean;
import org.cobbler.CobblerConnection;
import org.cobbler.Distro;
import org.cobbler.SystemRecord;
import java.lang.reflect.Method;
-import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
@@ -151,23 +151,32 @@ public class ScheduleKickstartWizardAction extends RhnWizardAction {
}
}
+
- private List getProxies(KickstartScheduleCommand cmd) {
- List proxies = cmd.getProxies();
- if (proxies == null) {
- return Collections.EMPTY_LIST;
+ /**
+ * Sets up the proxy information for the wizard.
+ * its public in this class because we reuse this in SSM
+ * and only this class knows how to format the name nicely.
+ * @param ctx the request context needed for user info and
+ * things to bind to the request
+ */
+ public static void setupProxyInfo(RequestContext ctx) {
+ List<OrgProxyServer> proxies = SystemManager.
+ listProxies(ctx.getLoggedInUser().getOrg());
+ if (proxies != null && proxies.size() > 0) {
+ List<LabelValueBean> formatted = new LinkedList<LabelValueBean>();
+
+ formatted.add(lvl10n("kickstart.schedule.default.proxy.jsp", ""));
+ for (OrgProxyServer serv : proxies) {
+ formatted.add(lv(serv.getName() + " (" + serv.getCheckin() + ")",
+ serv.getId().toString()));
+ }
+ ctx.getRequest().setAttribute(HAS_PROXIES, Boolean.TRUE.toString());
+ ctx.getRequest().setAttribute(PROXIES, formatted);
}
-
- List formatted = new LinkedList();
-
- formatted.add(lvl10n("kickstart.schedule.default.proxy.jsp", ""));
- for (Iterator itr = proxies.iterator(); itr.hasNext();) {
- OrgProxyServer serv = (OrgProxyServer) itr.next();
-
- formatted.add(lv(serv.getName() + " (" + serv.getCheckin() + ")",
- serv.getId().toString()));
+ else {
+ ctx.getRequest().setAttribute(HAS_PROXIES, Boolean.FALSE.toString());
}
- return formatted;
}
/**
@@ -212,26 +221,15 @@ public class ScheduleKickstartWizardAction extends RhnWizardAction {
addRequestAttributes(ctx, cmd, form);
checkForKickstart(form, cmd, ctx);
- List proxies = getProxies(cmd);
- if (proxies != null && proxies.size() > 0) {
- ctx.getRequest().setAttribute(HAS_PROXIES, Boolean.TRUE.toString());
- ctx.getRequest().setAttribute(PROXIES, proxies);
- if (form.get(PROXY_HOST) == null) {
- form.set(PROXY_HOST, "");
- }
+ setupProxyInfo(ctx);
+ if (StringUtils.isBlank(form.getString(PROXY_HOST))) {
+ form.set(PROXY_HOST, "");
}
- else {
- ctx.getRequest()
- .setAttribute(HAS_PROXIES, Boolean.FALSE.toString());
- }
-
// create and prepopulate the date picker.
- DatePicker picker = getStrutsDelegate().prepopulateDatePicker(
+ getStrutsDelegate().prepopulateDatePicker(
ctx.getRequest(), form, "date", DatePicker.YEAR_RANGE_POSITIVE);
SdcHelper.ssmCheck(ctx.getRequest(), system.getId(), user);
- ctx.getRequest().setAttribute("date", picker);
-
Map params = new HashMap<String, String>();
params.put(RequestContext.SID, sid);
ListHelper helper = new ListHelper(new Profiles(), ctx.getRequest(),
@@ -292,12 +290,12 @@ public class ScheduleKickstartWizardAction extends RhnWizardAction {
ctx.getRequest().setAttribute(SYNC_SYSTEM_DISABLED, syncSystemDisabled);
if (StringUtils.isEmpty(form.getString(USE_EXISTING_PROFILE))) {
- form.set(USE_EXISTING_PROFILE, Boolean.TRUE.toString());
+ form.set(USE_EXISTING_PROFILE, Boolean.FALSE.toString());
}
if (StringUtils.isEmpty(form.getString(TARGET_PROFILE_TYPE))) {
form.set(TARGET_PROFILE_TYPE,
- KickstartScheduleCommand.TARGET_PROFILE_TYPE_EXISTING);
+ KickstartScheduleCommand.TARGET_PROFILE_TYPE_NONE);
}
if (StringUtils.isEmpty(form.getString(KERNEL_PARAMS_TYPE))) {
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKSScheduleAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKSScheduleAction.java
index 46937df..688baae 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKSScheduleAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKSScheduleAction.java
@@ -14,13 +14,74 @@
*/
package com.redhat.rhn.frontend.action.kickstart.ssm;
+import com.redhat.rhn.common.util.DatePicker;
+import com.redhat.rhn.domain.user.User;
+import com.redhat.rhn.frontend.action.kickstart.ScheduleKickstartWizardAction;
+import com.redhat.rhn.frontend.struts.RequestContext;
import com.redhat.rhn.frontend.struts.RhnAction;
+import com.redhat.rhn.frontend.struts.RhnHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.ListHelper;
+import com.redhat.rhn.frontend.taglibs.list.helper.Listable;
+import com.redhat.rhn.manager.kickstart.KickstartLister;
+
+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.List;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
/**
* ScheduleKickstartAction
* @version $Rev$
*/
-public class SsmKSScheduleAction extends RhnAction {
+public class SsmKSScheduleAction extends RhnAction implements Listable {
+ private static final String SCHEDULE_TYPE_IP = "isIP";
+
+ private boolean isIP(HttpServletRequest request) {
+ return Boolean.TRUE.equals(request.getAttribute(SCHEDULE_TYPE_IP));
+ }
+
+ /**
+ * ${@inheritDoc}
+ */
+ public ActionForward execute(ActionMapping mapping, ActionForm form,
+ HttpServletRequest request, HttpServletResponse response) throws Exception {
+ RequestContext context = new RequestContext(request);
+ User user = context.getLoggedInUser();
+
+ if ("ip".equals(mapping.getParameter())) {
+ request.setAttribute(SCHEDULE_TYPE_IP, Boolean.TRUE);
+ }
+ if (!isIP(request)) {
+ ListHelper helper = new ListHelper(this, request);
+ helper.execute();
+ }
+ ScheduleKickstartWizardAction.setupProxyInfo(context);
+ // create and prepopulate the date picker.
+ getStrutsDelegate().prepopulateDatePicker(
+ request, (DynaActionForm)form, "date", DatePicker.YEAR_RANGE_POSITIVE);
+ return mapping.findForward(RhnHelper.DEFAULT_FORWARD);
+ }
+ /**
+ * {@inheritDoc}
+ */
+ public List getResult(RequestContext ctx) {
+ User user = ctx.getLoggedInUser();
+ List profiles = KickstartLister.getInstance().listProfilesForSsm(user);
+
+ if (profiles.isEmpty()) {
+ addMessage(ctx.getRequest(), "kickstart.schedule.noprofiles");
+ }
+ else {
+ ctx.getRequest().setAttribute(ScheduleKickstartWizardAction.HAS_PROFILES,
+ Boolean.TRUE);
+ }
+ return profiles;
+ }
}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKickstartableSystemsAction.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKickstartableSystemsAction.java
index 2269ab8..ab41252 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKickstartableSystemsAction.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/ssm/SsmKickstartableSystemsAction.java
@@ -21,6 +21,7 @@ import com.redhat.rhn.frontend.struts.RhnAction;
import com.redhat.rhn.frontend.struts.RhnHelper;
import com.redhat.rhn.frontend.taglibs.list.helper.ListHelper;
import com.redhat.rhn.frontend.taglibs.list.helper.Listable;
+import com.redhat.rhn.manager.kickstart.KickstartLister;
import com.redhat.rhn.manager.kickstart.KickstartManager;
import org.apache.struts.action.ActionForm;
@@ -39,12 +40,20 @@ import javax.servlet.http.HttpServletResponse;
*/
public class SsmKickstartableSystemsAction extends RhnAction implements Listable {
private static final String DISABLE_RANGES = "disableRanges";
+ private static final String DISABLE_PROFILES = "disableProfiles";
/**
* ${@inheritDoc}
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws Exception {
RequestContext context = new RequestContext(request);
+ if (context.wasDispatched("ssm.config.subscribe.jsp.continue")) {
+ if (Boolean.TRUE.toString().equals(request.getParameter("scheduleManual"))) {
+ return mapping.findForward("scheduleByProfile");
+ }
+ return mapping.findForward("scheduleByIp");
+ }
+
ListHelper helper = new ListHelper(this, request);
helper.execute();
@@ -53,6 +62,13 @@ public class SsmKickstartableSystemsAction extends RhnAction implements Listable
if (range.isEmpty()) {
request.setAttribute(DISABLE_RANGES, Boolean.TRUE);
}
+ List profiles = KickstartLister.getInstance().
+ listProfilesForSsm(context.getLoggedInUser());
+
+ if (profiles.isEmpty()) {
+ request.setAttribute(DISABLE_PROFILES, Boolean.TRUE);
+
+ }
return mapping.findForward(RhnHelper.DEFAULT_FORWARD);
}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/ScheduleKickstartWizardTest.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/ScheduleKickstartWizardTest.java
index bdab4ac..4126d17 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/ScheduleKickstartWizardTest.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/test/ScheduleKickstartWizardTest.java
@@ -43,6 +43,7 @@ import com.redhat.rhn.manager.kickstart.KickstartLister;
import com.redhat.rhn.manager.kickstart.KickstartScheduleCommand;
import com.redhat.rhn.manager.profile.test.ProfileManagerTest;
import com.redhat.rhn.manager.rhnpackage.test.PackageManagerTest;
+import com.redhat.rhn.manager.system.SystemManager;
import com.redhat.rhn.testing.RhnMockStrutsTestCase;
import com.redhat.rhn.testing.TestUtils;
@@ -106,8 +107,7 @@ public class ScheduleKickstartWizardTest extends RhnMockStrutsTestCase {
proxy.addNetwork(NetworkTest.createNetworkInstance());
ServerFactory.save(proxy);
TestUtils.flushAndEvict(proxy);
- KickstartScheduleCommand cmd = new KickstartScheduleCommand(s.getId(), user);
- assertTrue(cmd.getProxies().size() == 1);
+ assertTrue(SystemManager.listProxies(user.getOrg()).size() == 1);
return proxy;
}
diff --git a/java/code/src/com/redhat/rhn/frontend/struts/StrutsDelegate.java b/java/code/src/com/redhat/rhn/frontend/struts/StrutsDelegate.java
index c1eb7d3..96336af 100644
--- a/java/code/src/com/redhat/rhn/frontend/struts/StrutsDelegate.java
+++ b/java/code/src/com/redhat/rhn/frontend/struts/StrutsDelegate.java
@@ -357,6 +357,7 @@ public class StrutsDelegate {
else if (form.getMap().containsKey(DatePicker.USE_DATE)) {
form.set(DatePicker.USE_DATE, Boolean.FALSE);
}
+ request.setAttribute(name, p);
//give back the date picker
return p;
}
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartLister.java b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartLister.java
index f91f43f..ed2d0c5 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartLister.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartLister.java
@@ -414,4 +414,19 @@ public class KickstartLister extends BaseManager {
}
}
}
+
+ /**
+ * Returns a list of all the kickstart profiles
+ * available to the user
+ * Spacewalk Managed + Cobbler Only profiles
+ * @param user the user object needed to get access to cobbler
+ * @return a list of cobbler profiles or empty list.
+ */
+ public List <KickstartDto> listProfilesForSsm(User user) {
+ List <KickstartDto> ret = new LinkedList<KickstartDto>();
+ ret.addAll(kickstartsInOrg(user.getOrg(), null));
+ ret.addAll(listCobblerProfiles(user));
+ return ret;
+ }
+
}
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartScheduleCommand.java b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartScheduleCommand.java
index 74e0e42..8495ad7 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartScheduleCommand.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartScheduleCommand.java
@@ -429,20 +429,6 @@ public class KickstartScheduleCommand extends BaseSystemOperation {
/**
*
- * @return list of proxies for org
- */
- public DataResult getProxies() {
- DataResult retval = null;
- SelectMode mode = ModeFactory.getMode("System_queries",
- "org_proxy_servers");
- Map params = new HashMap();
- params.put("org_id", this.user.getOrg().getId().toString());
- retval = mode.execute(params);
- return retval;
- }
-
- /**
- *
* @return primary proxy for server
*/
public String getPrimaryProxy() {
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartScheduleCommandTest.java b/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartScheduleCommandTest.java
index c701637..794e023 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartScheduleCommandTest.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/test/KickstartScheduleCommandTest.java
@@ -47,6 +47,7 @@ import com.redhat.rhn.manager.action.ActionManager;
import com.redhat.rhn.manager.kickstart.KickstartScheduleCommand;
import com.redhat.rhn.manager.profile.ProfileManager;
import com.redhat.rhn.manager.rhnpackage.test.PackageManagerTest;
+import com.redhat.rhn.manager.system.SystemManager;
import com.redhat.rhn.testing.TestUtils;
import java.util.Date;
@@ -185,8 +186,8 @@ public class KickstartScheduleCommandTest extends BaseKickstartCommandTestCase {
KickstartScheduleCommand.ACTIVATION_TYPE_EXISTING, server,
ksdata, profileType, activationKeyIds, otherServerId, profileId);
assertNull(cmd.store());
- assertNotNull(cmd.getProxies());
- assertEquals(0, cmd.getProxies().size());
+ assertNotNull(SystemManager.listProxies(user.getOrg()));
+ assertEquals(0, SystemManager.listProxies(user.getOrg()));
}
public void testCommandPackageProfile() throws Exception {
diff --git a/java/code/src/com/redhat/rhn/manager/system/SystemManager.java b/java/code/src/com/redhat/rhn/manager/system/SystemManager.java
index 1fe3ed9..9910619 100644
--- a/java/code/src/com/redhat/rhn/manager/system/SystemManager.java
+++ b/java/code/src/com/redhat/rhn/manager/system/SystemManager.java
@@ -54,6 +54,7 @@ import com.redhat.rhn.domain.user.UserFactory;
import com.redhat.rhn.frontend.dto.CustomDataKeyOverview;
import com.redhat.rhn.frontend.dto.ErrataOverview;
import com.redhat.rhn.frontend.dto.HardwareDeviceDto;
+import com.redhat.rhn.frontend.dto.OrgProxyServer;
import com.redhat.rhn.frontend.dto.SystemOverview;
import com.redhat.rhn.frontend.dto.kickstart.KickstartSessionDto;
import com.redhat.rhn.frontend.listview.ListControl;
@@ -2569,6 +2570,19 @@ public class SystemManager extends BaseManager {
params.put("name", packageName);
return m.execute(params);
}
-
-
+
+ /**
+ * returns a List proxies available in the given org
+ * @param org needed for org information
+ * @return list of proxies for org
+ */
+ public static DataResult<OrgProxyServer> listProxies(Org org) {
+ DataResult retval = null;
+ SelectMode mode = ModeFactory.getMode("System_queries",
+ "org_proxy_servers");
+ Map params = new HashMap();
+ params.put("org_id", org.getId());
+ retval = mode.execute(params);
+ return retval;
+ }
}
diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/ks-wizard.jspf b/java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/ks-wizard.jspf
index 82dfcaf..cd01468 100644
--- a/java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/ks-wizard.jspf
+++ b/java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/ks-wizard.jspf
@@ -23,28 +23,8 @@
<input type="hidden" name="localStorageMegabytes" value="${form.localStorageMegabytes}" />
<input type="hidden" name="diskPath" value="${form.diskPath}" />
</c:if>
+ <%@ include file="/WEB-INF/pages/common/fragments/kickstart/schedule/proxy-options.jspf" %>
- <c:if test="${requestScope.hasProxies == 'true'}">
- <h2>
- <img src="/img/rhn-icon-proxy.gif"
- alt="<bean:message key='system.common.proxyAlt' />" />
- <bean:message key="kickstart.schedule.heading.proxy.jsp"/>
- </h2>
- <p>
- <bean:message key="kickstart.schedule.msg.proxy.jsp"/>
- </p>
- <p>
- <select name="proxyHost">
- <c:forEach var="proxy" items="${proxies}">
- <option
- <c:if test="${proxy.value == param.proxyHost}">selected="selected"</c:if>
- value='${proxy.value}'>${proxy.label}</option>
- </c:forEach>
- </select>
- <br />
- <bean:message key="kickstart.schedule.tip.proxy.jsp"/>
- </p>
- </c:if>
<c:if test="${requestScope.hasProfiles == 'true'}">
<%@ include file="/WEB-INF/pages/common/fragments/kickstart/schedule/schedule-options.jspf" %>
<table width="100%">
diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/profile-sync.jspf b/java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/profile-sync.jspf
index 23ae53a..60fdf40 100644
--- a/java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/profile-sync.jspf
+++ b/java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/profile-sync.jspf
@@ -36,6 +36,6 @@
<br /><br />
<html:radio styleId="syncNone" value="none" property="targetProfileType"
onclick="form.syncPackageSelect.disabled = true; form.syncSystemSelect.disabled = true;">
- <bean:message key="kickstart.schedule.sync.pkg.profile.option4.jsp" /></html:radio><br />
+ <bean:message key="kickstart.schedule.sync.pkg.profile.option4.jsp" /></html:radio><br />
</td>
</tr>
diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/proxy-options.jspf b/java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/proxy-options.jspf
new file mode 100644
index 0000000..7304559
--- /dev/null
+++ b/java/code/webapp/WEB-INF/pages/common/fragments/kickstart/schedule/proxy-options.jspf
@@ -0,0 +1,27 @@
+<%@ 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" %>
+ <c:if test="${not empty proxies}">
+ <h2>
+ <img src="/img/rhn-icon-proxy.gif"
+ alt="<bean:message key='system.common.proxyAlt' />" />
+ <bean:message key="kickstart.schedule.heading.proxy.jsp"/>
+ </h2>
+ <c:choose>
+ <c:when test="${empty proxyMessageKey}"><p><bean:message key="kickstart.schedule.msg.proxy.jsp"/></p></c:when>
+ <c:otherwise><p><bean:message key="${proxyMessageKey}"/></p></c:otherwise>
+
+ </c:choose>
+ <p>
+ <select name="proxyHost">
+ <c:forEach var="proxy" items="${proxies}">
+ <option
+ <c:if test="${proxy.value == param.proxyHost}">selected="selected"</c:if>
+ value='${proxy.value}'>${proxy.label}</option>
+ </c:forEach>
+ </select>
+ <br />
+ <bean:message key="kickstart.schedule.tip.proxy.jsp"/>
+ </p>
+ </c:if>
\ No newline at end of file
diff --git a/java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp b/java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp
index d12cb9c..d273799 100644
--- a/java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp
+++ b/java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp
@@ -53,12 +53,13 @@
</th>
<td>
- <input type="radio" name="scheduleManual" value="true"
+ <input type="radio" name="scheduleManual" value="true"
+ <c:if test="${not empty disableProfiles}">disabled="true"</c:if>
<c:if test="${empty param.scheduleManual or param.scheduleManual =='true' }">checked="checked" </c:if> />
<strong><bean:message key="ssm.kickstartable-systems.jsp.manual-summary"/>:<strong>
<br/>
<input type="radio" name="scheduleManual" value="false" id="ipId"
- <c:if test="${not empty disableRanges}">disabled="true"</c:if>
+ <c:if test="${not empty disableProfiles or not empty disableRanges}">disabled="true"</c:if>
<c:if test="${param.scheduleManual =='false'}">checked="checked" </c:if> />
<strong><bean:message key="ssm.kickstartable-systems.jsp.ip-summary"/></strong>
<br/>
@@ -70,11 +71,11 @@
</table>
<div align="right">
<hr />
-<input type="submit" name="dispatch" value="${rhn:localize('ssm.config.subscribe.jsp.continue')}"/>
+<input type="submit" name="dispatch" value="${rhn:localize('ssm.config.subscribe.jsp.continue')}"
+ <c:if test="${not empty disableProfiles}">disabled="true"</c:if>
+ />
</div>
<rhn:submitted/>
-</div>
-
</rl:listset>
</body>
diff --git a/java/code/webapp/WEB-INF/pages/kickstart/ssm/schedule.jsp b/java/code/webapp/WEB-INF/pages/kickstart/ssm/schedule.jsp
index e69de29..4a562e2 100644
--- a/java/code/webapp/WEB-INF/pages/kickstart/ssm/schedule.jsp
+++ b/java/code/webapp/WEB-INF/pages/kickstart/ssm/schedule.jsp
@@ -0,0 +1,54 @@
+<%@ 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" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
+<%@ taglib uri="http://rhn.redhat.com/tags/list" prefix="rl" %>
+
+<html:xhtml/>
+<html>
+<body>
+<%@ include file="/WEB-INF/pages/common/fragments/ssm/header.jspf" %>
+<h2><bean:message key="ssm.kickstartable-systems.jsp.title"/></h2>
+ <div class="page-summary">
+ <p>
+ <bean:message key="ssm.kickstartable-systems.jsp.summary"/>
+ </p>
+ </div>
+
+<br />
+<h2>
+ <img src="/img/icon_kickstart_session-medium.gif"
+ alt="<bean:message key='system.common.kickstartAlt' />" />
+ <bean:message key="kickstart.schedule.heading1.jsp" />
+</h2>
+
+ <div class="page-summary">
+ <p>
+ <bean:message key="ssm.kickstart.schedule.heading1.text.jsp" />
+ </p>
+ <h2><bean:message key="kickstart.schedule.heading2.jsp" /></h2>
+ </div>
+
+ <div class="page-summary">
+ <p>
+ <bean:message key="ssm.kickstart.schedule.heading2.text.jsp" />
+ </p>
+ </div>
+<rl:listset name="form">
+ <c:if test="${empty requestScope.isIP}">
+ <%@ include file="/WEB-INF/pages/common/fragments/kickstart/schedule/profile-list.jspf" %>
+ </c:if>
+ <%@ include file="/WEB-INF/pages/common/fragments/kickstart/schedule/proxy-options.jspf" %>
+ <%@ include file="/WEB-INF/pages/common/fragments/kickstart/schedule/schedule-options.jspf" %>
+<div align="right">
+<hr />
+<input type="submit" name="dispatch" value="${rhn:localize('kickstart.schedule.button2.jsp')}"/>
+</div>
+
+<rhn:submitted/>
+</rl:listset>
+
+
+</body>
+</html>
diff --git a/java/code/webapp/WEB-INF/struts-config.xml b/java/code/webapp/WEB-INF/struts-config.xml
index d0013ff..3b41109 100644
--- a/java/code/webapp/WEB-INF/struts-config.xml
+++ b/java/code/webapp/WEB-INF/struts-config.xml
@@ -4613,11 +4613,14 @@
<forward name="default"
path="/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp"/>
<forward name="scheduleByIp"
- path="/ssm/kickstart/ScheduleByIp.do"/>
+ path="/ssm/kickstart/ScheduleByIp.do"
+ redirect= "true"/>
<forward name="scheduleByProfile"
- path="/ssm/kickstart/ScheduleByProfile.do"/>
+ path="/ssm/kickstart/ScheduleByProfile.do"
+ redirect= "true"/>
</action>
<action path="/ssm/kickstart/ScheduleByProfile"
+ name ="datePickerForm"
scope="request"
input="/WEB-INF/pages/kickstart/ssm/schedule.jsp"
type="com.redhat.rhn.frontend.action.kickstart.ssm.SsmKSScheduleAction"
@@ -4626,11 +4629,12 @@
<set-property property="acls" value="org_entitlement(rhn_provisioning); user_role(config_admin)"/>
<forward name="default"
path="/WEB-INF/pages/kickstart/ssm/schedule.jsp"/>
- <forward name="success"
+ <forward name="success" redirect= "true"
path="/ssm/kickstart/KickstartableSystems.do"/>
</action>
<action path="/ssm/kickstart/ScheduleByIp"
+ name ="datePickerForm"
scope="request"
input="/WEB-INF/pages/kickstart/ssm/schedule.jsp"
type="com.redhat.rhn.frontend.action.kickstart.ssm.SsmKSScheduleAction"
@@ -4639,7 +4643,7 @@
<set-property property="acls" value="org_entitlement(rhn_provisioning); user_role(config_admin)"/>
<forward name="default"
path="/WEB-INF/pages/kickstart/ssm/schedule.jsp"/>
- <forward name="success"
+ <forward name="success" redirect= "true"
path="/ssm/kickstart/KickstartableSystems.do"/>
</action>
14 years, 10 months
Branch 'ssm-kickstart' - 2 commits - java/code
by Justin Sherrill
java/code/src/com/redhat/rhn/domain/server/Server.java | 18 ++
java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartHelper.java | 44 -----
java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java | 4
java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java | 80 ++++++++++
java/code/src/com/redhat/rhn/manager/kickstart/KickstartScheduleCommand.java | 47 +----
5 files changed, 112 insertions(+), 81 deletions(-)
New commits:
commit a50c248c7ad9757748f6728dc2d21970e1688175
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Wed Jul 1 18:30:10 2009 -0400
import fixes from conflict
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java
index 079e88e..4291fb5 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java
@@ -24,7 +24,9 @@ import com.redhat.rhn.common.util.download.DownloadUtils;
import com.redhat.rhn.common.validator.ValidatorException;
import com.redhat.rhn.domain.kickstart.KickstartData;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
+import com.redhat.rhn.domain.kickstart.KickstartIpRange;
import com.redhat.rhn.domain.org.Org;
+import com.redhat.rhn.domain.role.RoleFactory;
import com.redhat.rhn.domain.server.NetworkInterface;
import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
commit 6d0af27706d8d6dae8b1ee1f68ecd59333eaba6f
Author: Justin Sherrill <jsherril(a)redhat.com>
Date: Wed Jul 1 18:27:10 2009 -0400
adding commands and manager layer for SSM provisioning
diff --git a/java/code/src/com/redhat/rhn/domain/server/Server.java b/java/code/src/com/redhat/rhn/domain/server/Server.java
index 4df50ef..6fcaf36 100644
--- a/java/code/src/com/redhat/rhn/domain/server/Server.java
+++ b/java/code/src/com/redhat/rhn/domain/server/Server.java
@@ -729,7 +729,7 @@ public class Server extends BaseDomainHelper implements Identifiable {
/**
* @return Returns the networks
*/
- public Set getNetworks() {
+ public Set<Network> getNetworks() {
return networks;
}
@@ -1685,4 +1685,20 @@ public class Server extends BaseDomainHelper implements Identifiable {
public void setIgnoreEntitlementsForMigration(Boolean ignoreIn) {
this.ignoreEntitlementsForMigration = ignoreIn;
}
+
+ /**
+ * Get the NetworkInteface with the given name (i.e. eth0)
+ * @param ifName the interface name (i.e. eth0)
+ * @return the NetworkInterface, otherwise null
+ */
+ public NetworkInterface getNetworkInterface(String ifName) {
+ for (NetworkInterface nic : getNetworkInterfaces()) {
+ if (nic.getName().equals(ifName)) {
+ return nic;
+ }
+ }
+ return null;
+ }
+
+
}
diff --git a/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartHelper.java b/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartHelper.java
index 97052e0..c712db5 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartHelper.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/kickstart/KickstartHelper.java
@@ -15,9 +15,6 @@
package com.redhat.rhn.frontend.action.kickstart;
import com.redhat.rhn.common.conf.Config;
-import com.redhat.rhn.common.db.datasource.DataResult;
-import com.redhat.rhn.common.db.datasource.ModeFactory;
-import com.redhat.rhn.common.db.datasource.SelectMode;
import com.redhat.rhn.common.localization.LocalizationService;
import com.redhat.rhn.common.security.SessionSwap;
import com.redhat.rhn.domain.channel.Channel;
@@ -26,11 +23,10 @@ import com.redhat.rhn.domain.kickstart.KickstartFactory;
import com.redhat.rhn.domain.org.Org;
import com.redhat.rhn.domain.org.OrgFactory;
import com.redhat.rhn.domain.user.User;
-import com.redhat.rhn.frontend.dto.kickstart.KickstartIpRangeDto;
import com.redhat.rhn.manager.channel.ChannelManager;
import com.redhat.rhn.manager.kickstart.IpAddress;
-import com.redhat.rhn.manager.kickstart.IpAddressRange;
import com.redhat.rhn.manager.kickstart.KickstartFormatter;
+import com.redhat.rhn.manager.kickstart.KickstartManager;
import com.redhat.rhn.manager.kickstart.KickstartSessionCreateCommand;
import com.redhat.rhn.manager.kickstart.KickstartSessionUpdateCommand;
@@ -172,7 +168,7 @@ public class KickstartHelper {
else if (mode.equals(IP_RANGE)) {
log.debug("Ip_range mode");
IpAddress clientIp = new IpAddress(remoteAddr);
- ksdata = findBestFitProfile(clientIp, org);
+ ksdata = KickstartManager.findProfileForIpAddress(clientIp, org);
}
else if (mode.equals(ORG_DEFAULT)) {
//process org_default
@@ -241,42 +237,6 @@ public class KickstartHelper {
return remoteAddr;
}
- /**
- * Finds the profile which is a best fit.
- * @param clientIpIn IpAddress to search ip ranges for
- * @param orgIn Org coming in from the url
- * @return best KickstartData Profile
- */
- protected KickstartData findBestFitProfile(IpAddress clientIpIn, Org orgIn) {
- DataResult ipRanges = null;
- SelectMode mode = ModeFactory.getMode("General_queries",
- "org_ks_ip_ranges_for_ip");
- Map params = new HashMap();
- params.put("org_id", orgIn.getId().toString());
- params.put("ip", clientIpIn.getLongNumber().toString());
- ipRanges = mode.execute(params);
-
- IpAddressRange bestRange = null;
-
- log.debug("ipranges.size: " + ipRanges.size());
-
- // find innermost range and return profile
- for (Iterator itr = ipRanges.iterator(); itr.hasNext();) {
- KickstartIpRangeDto range = (KickstartIpRangeDto)itr.next();
- IpAddressRange iprange = new IpAddressRange(range.getMin().longValue(),
- range.getMax().longValue(),
- range.getId().longValue());
- //seed range if null
- bestRange = (bestRange == null) ? iprange : bestRange;
- if (iprange.isSubset(bestRange)) {
- log.debug("found a range");
- bestRange = iprange;
- }
- }
-
- return (bestRange == null) ? getOrgDefaultProfile(orgIn) :
- KickstartFactory.lookupKickstartDataByIdAndOrg(orgIn, bestRange.getKsid());
- }
/**
*
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java
index ed29fd5..0f269f8 100644
--- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java
+++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java
@@ -1967,7 +1967,7 @@ public class SystemHandler extends BaseHandler {
throw new FaultException(-2, "provisionError",
LocalizationService.getInstance().getMessage(ve.getKey()));
}
- return cmd.getKickstartActionId().intValue();
+ return cmd.getScheduledAction().getId().intValue();
}
/**
@@ -2020,7 +2020,7 @@ public class SystemHandler extends BaseHandler {
throw new FaultException(-2, "provisionError",
LocalizationService.getInstance().getMessage(ve.getKey()));
}
- return cmd.getKickstartActionId().intValue();
+ return cmd.getScheduledAction().getId().intValue();
}
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java
index dc2ecbf..079e88e 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartManager.java
@@ -24,15 +24,18 @@ import com.redhat.rhn.common.util.download.DownloadUtils;
import com.redhat.rhn.common.validator.ValidatorException;
import com.redhat.rhn.domain.kickstart.KickstartData;
import com.redhat.rhn.domain.kickstart.KickstartFactory;
-import com.redhat.rhn.domain.kickstart.KickstartIpRange;
-import com.redhat.rhn.domain.role.RoleFactory;
+import com.redhat.rhn.domain.org.Org;
+import com.redhat.rhn.domain.server.NetworkInterface;
+import com.redhat.rhn.domain.server.Server;
import com.redhat.rhn.domain.user.User;
import com.redhat.rhn.frontend.dto.SystemOverview;
+import com.redhat.rhn.frontend.dto.kickstart.KickstartIpRangeDto;
import com.redhat.rhn.manager.BaseManager;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
+import java.util.Iterator;
import java.util.Map;
/**
@@ -130,4 +133,79 @@ public class KickstartManager extends BaseManager {
throw new PermissionException(RoleFactory.CONFIG_ADMIN);
}
}
+
+
+ /**
+ * Find a kickstart profile for a given server by searching by IP addresses
+ * @param server the server to find the ksdata for
+ * @return the kickstartData or 'null' if nothing found
+ */
+ public static KickstartData findProfileForServersNetwork(Server server) {
+ KickstartData ks = null;
+ /*
+ * So first get the IP address for eth0 and see if there's
+ * A kickstart that corresponds to it
+ */
+ NetworkInterface nic = server.getNetworkInterface("eth0");
+ if (nic != null && isPublicIpAddress(nic.getIpaddr())) {
+ IpAddress ip = new IpAddress(nic.getIpaddr());
+ ks = findProfileForIpAddress(ip, server.getOrg());
+ }
+ /*
+ * If there wasn't, then lets just take the first good ip address we can find
+ */
+ if (ks == null) {
+ for (NetworkInterface tmp : server.getNetworkInterfaces()) {
+ if (isPublicIpAddress(tmp.getIpaddr())) {
+ IpAddress ip = new IpAddress(tmp.getIpaddr());
+ ks = findProfileForIpAddress(ip, server.getOrg());
+ if (ks != null) {
+ break;
+ }
+ }
+ }
+ }
+ return ks;
+ }
+
+ private static boolean isPublicIpAddress(String ip) {
+ return !(ip.equals("127.0.0.1") || ip.equals("0.0.0.0") || ip.equals(""));
+ }
+
+ /**
+ * Finds the profile which is a best fit.
+ * @param clientIpIn IpAddress to search ip ranges for
+ * @param orgIn Org coming in from the url
+ * @return best KickstartData Profile
+ */
+ public static KickstartData findProfileForIpAddress(IpAddress clientIpIn, Org orgIn) {
+ DataResult ipRanges = null;
+ SelectMode mode = ModeFactory.getMode("General_queries",
+ "org_ks_ip_ranges_for_ip");
+ Map params = new HashMap();
+ params.put("org_id", orgIn.getId().toString());
+ params.put("ip", clientIpIn.getLongNumber().toString());
+ ipRanges = mode.execute(params);
+
+ IpAddressRange bestRange = null;
+
+ // find innermost range and return profile
+ for (Iterator itr = ipRanges.iterator(); itr.hasNext();) {
+ KickstartIpRangeDto range = (KickstartIpRangeDto)itr.next();
+ IpAddressRange iprange = new IpAddressRange(range.getMin().longValue(),
+ range.getMax().longValue(),
+ range.getId().longValue());
+ //seed range if null
+ bestRange = (bestRange == null) ? iprange : bestRange;
+ if (iprange.isSubset(bestRange)) {
+ bestRange = iprange;
+ }
+ }
+
+ return (bestRange == null) ? KickstartFactory.lookupOrgDefault(orgIn) :
+ KickstartFactory.lookupKickstartDataByIdAndOrg(orgIn, bestRange.getKsid());
+ }
+
+
+
}
diff --git a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartScheduleCommand.java b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartScheduleCommand.java
index 434b8f2..74e0e42 100644
--- a/java/code/src/com/redhat/rhn/manager/kickstart/KickstartScheduleCommand.java
+++ b/java/code/src/com/redhat/rhn/manager/kickstart/KickstartScheduleCommand.java
@@ -151,7 +151,7 @@ public class KickstartScheduleCommand extends BaseSystemOperation {
// The server who serves the kickstarts
private String kickstartServerName;
// The id of the action scheduled to perform the kickstart
- private Long kickstartActionId;
+ private Action scheduledAction;
/**
* Constructor for a kickstart where the host and the target are the same system.
@@ -301,36 +301,7 @@ public class KickstartScheduleCommand extends BaseSystemOperation {
this.setKickstartServerName(kickstartServerNameIn);
}
- /**
- * Creates the Kickstart Sechdule command that works with a cobbler only
- * kickstart where the host and the target may or may *not* be
- * the same system. If the target system does not yet exist, selectedTargetServer
- * should be null. To be used when you want to call the store() method.
- *
- * @param selectedHostServer server to host the kickstart
- * @param selectedTargetServer server to be kickstarted
- * @param label cobbler only profile label.
- * @param userIn user performing the kickstart
- * @param scheduleDateIn Date to schedule the KS.
- * @param kickstartServerNameIn the name of the server who is serving the kickstart
- * @return the created cobbler only profile aware kickstartScheduleCommand
- */
- public static KickstartScheduleCommand createCobblerScheduleCommand(
- Long selectedHostServer,
- Long selectedTargetServer,
- String label,
- User userIn,
- Date scheduleDateIn,
- String kickstartServerNameIn) {
-
- KickstartScheduleCommand cmd = new KickstartScheduleCommand(selectedHostServer,
- selectedTargetServer, (KickstartData)null,
- userIn, scheduleDateIn, kickstartServerNameIn);
- cmd.cobblerProfileLabel = label;
- cmd.cobblerOnly = true;
- return cmd;
-
- }
+
/**
* Creates the Kickstart Sechdule command that works with a cobbler only
@@ -350,8 +321,12 @@ public class KickstartScheduleCommand extends BaseSystemOperation {
User userIn,
Date scheduleDateIn,
String kickstartServerNameIn) {
- return createCobblerScheduleCommand(selectedHostServer, selectedHostServer, label,
- userIn, scheduleDateIn, kickstartServerNameIn);
+ KickstartScheduleCommand cmd = new KickstartScheduleCommand(selectedHostServer,
+ selectedHostServer, (KickstartData)null,
+ userIn, scheduleDateIn, kickstartServerNameIn);
+ cmd.cobblerProfileLabel = label;
+ cmd.cobblerOnly = true;
+ return cmd;
}
@@ -510,8 +485,8 @@ public class KickstartScheduleCommand extends BaseSystemOperation {
/**
* @return Returns the id of the action scheduled to perform the kickstart.
*/
- public Long getKickstartActionId() {
- return this.kickstartActionId;
+ public Action getScheduledAction() {
+ return this.scheduledAction;
}
/**
@@ -643,7 +618,7 @@ public class KickstartScheduleCommand extends BaseSystemOperation {
ActionFactory.save(kickstartAction);
log.debug("** Created ksaction: " + kickstartAction.getId());
- this.kickstartActionId = kickstartAction.getId();
+ this.scheduledAction = kickstartAction;
log.debug("** Done scheduling kickstart session");
return null;
14 years, 10 months
backend/satellite_tools
by Pradeep Kilambi
backend/satellite_tools/satsync.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
New commits:
commit adcdf558ce0912ad3936bd9bb8c729768fc72301
Author: Pradeep Kilambi <pkilambi(a)redhat.com>
Date: Wed Jul 1 17:56:55 2009 -0400
some clean up
diff --git a/backend/satellite_tools/satsync.py b/backend/satellite_tools/satsync.py
index 41a55a8..9be12e9 100644
--- a/backend/satellite_tools/satsync.py
+++ b/backend/satellite_tools/satsync.py
@@ -1645,6 +1645,7 @@ Please contact your RHN representative""" % (generation, sat_cert.generation))
chunk = ss.getChunk()
item_count = len(chunk)
batch = self._get_cached_package_batch(chunk)
+ # check to make sure the orgs exported are valid
_validate_package_org(batch)
try:
sync_handlers.import_packages(batch)
@@ -1689,6 +1690,7 @@ Please contact your RHN representative""" % (generation, sat_cert.generation))
uq_packages[pid] = package
uq_pkg_data = uq_packages.values()
+ # check to make sure the orgs exported are valid
_validate_package_org(uq_pkg_data)
try:
if OPTIONS.mount_point:
@@ -1997,14 +1999,16 @@ def _verifyPkgRepMountPoint():
sys.exit(26)
def _validate_package_org(batch):
+ """Validate the orgids associated with packages.
+ If its redhat channel default to Null org
+ If custom channel and org is specified use that.
+ If custom and package org is not valid default to org 1
+ """
orgid = OPTIONS.orgid or None
orgs = map(lambda a: a['id'], satCerts.get_all_orgs())
- #if orgid is not None and orgid not in orgs:
- # orgid = 1
for pkg in batch:
if pkg['org_id'] is not None and pkg['org_id'] not in orgs:
orgid = 1
- print "Default ORG ID",orgid
if orgid is not None and pkg['org_id'] is not None and \
pkg['org_id'] != orgid:
pkg['org_id'] = orgid
14 years, 10 months
Branch 'VADER' - backend/satellite_tools
by Pradeep Kilambi
backend/satellite_tools/satsync.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
New commits:
commit 21c1cbd9f16612968b0cb8453d8ea2f5855e912e
Author: Pradeep Kilambi <pkilambi(a)redhat.com>
Date: Wed Jul 1 17:56:55 2009 -0400
some clean up
diff --git a/backend/satellite_tools/satsync.py b/backend/satellite_tools/satsync.py
index 41a55a8..9be12e9 100644
--- a/backend/satellite_tools/satsync.py
+++ b/backend/satellite_tools/satsync.py
@@ -1645,6 +1645,7 @@ Please contact your RHN representative""" % (generation, sat_cert.generation))
chunk = ss.getChunk()
item_count = len(chunk)
batch = self._get_cached_package_batch(chunk)
+ # check to make sure the orgs exported are valid
_validate_package_org(batch)
try:
sync_handlers.import_packages(batch)
@@ -1689,6 +1690,7 @@ Please contact your RHN representative""" % (generation, sat_cert.generation))
uq_packages[pid] = package
uq_pkg_data = uq_packages.values()
+ # check to make sure the orgs exported are valid
_validate_package_org(uq_pkg_data)
try:
if OPTIONS.mount_point:
@@ -1997,14 +1999,16 @@ def _verifyPkgRepMountPoint():
sys.exit(26)
def _validate_package_org(batch):
+ """Validate the orgids associated with packages.
+ If its redhat channel default to Null org
+ If custom channel and org is specified use that.
+ If custom and package org is not valid default to org 1
+ """
orgid = OPTIONS.orgid or None
orgs = map(lambda a: a['id'], satCerts.get_all_orgs())
- #if orgid is not None and orgid not in orgs:
- # orgid = 1
for pkg in batch:
if pkg['org_id'] is not None and pkg['org_id'] not in orgs:
orgid = 1
- print "Default ORG ID",orgid
if orgid is not None and pkg['org_id'] is not None and \
pkg['org_id'] != orgid:
pkg['org_id'] = orgid
14 years, 10 months
Branch 'VADER' - backend/satellite_exporter backend/satellite_tools
by Pradeep Kilambi
backend/satellite_exporter/exporter/dumper.py | 2 ++
backend/satellite_exporter/exporter/exportLib.py | 6 ++++--
backend/satellite_tools/satsync.py | 22 +++++++++++++++++++---
backend/satellite_tools/sync_handlers.py | 6 +++++-
4 files changed, 30 insertions(+), 6 deletions(-)
New commits:
commit aeab6f0598734f3e13ad8f4aee4a5107f21f122d
Author: Pradeep Kilambi <pkilambi(a)redhat.com>
Date: Wed Jul 1 17:41:53 2009 -0400
509187 - Resolves the parent key constraint issue. The package org was not accounted causing constraints if the org is not on the source satellite. This fix should default the org to 1 if the org is not present for custom channels.
509194
Fixes the ISE issue on UI which is caused due to mismatched package org id.
509195 - Fixes the Channel permissions issue on UI as its was defaulting to Null org instead of org 1.
diff --git a/backend/satellite_exporter/exporter/dumper.py b/backend/satellite_exporter/exporter/dumper.py
index 1f95d34..b505dea 100644
--- a/backend/satellite_exporter/exporter/dumper.py
+++ b/backend/satellite_exporter/exporter/dumper.py
@@ -772,6 +772,7 @@ class ShortPackagesDumper(CachedDumper, exportLib.ShortPackagesDumper):
h = rhnSQL.prepare("""
select
p.id,
+ p.org_id,
pn.name,
pe.evr.version version,
pe.evr.release release,
@@ -805,6 +806,7 @@ class PackagesDumper(CachedDumper, exportLib.PackagesDumper):
select
p.id,
pn.name,
+ p.org_id,
pe.evr.version version,
pe.evr.release release,
pe.evr.epoch epoch,
diff --git a/backend/satellite_exporter/exporter/exportLib.py b/backend/satellite_exporter/exporter/exportLib.py
index 3b0ce75..d0e2d82 100644
--- a/backend/satellite_exporter/exporter/exportLib.py
+++ b/backend/satellite_exporter/exporter/exportLib.py
@@ -544,6 +544,7 @@ class PackagesDumper(BaseDumper):
select
p.id,
pn.name,
+ p.org_id,
pe.evr.version version,
pe.evr.release release,
pe.evr.epoch epoch,
@@ -592,7 +593,7 @@ class _PackageDumper(BaseRowDumper):
attrs = ["name", "version", "release", "package_arch",
"package_group", "rpm_version", "package_size", "payload_size",
"build_host", "source_rpm", "md5sum", "payload_format",
- "compat", "cookie"]
+ "compat", "cookie", "org_id"]
attrdict = {
'id' : "rhn-package-%s" % self._row['id'],
'epoch' : self._row['epoch'] or "",
@@ -684,6 +685,7 @@ class ShortPackagesDumper(BaseDumper):
pe.evr.epoch epoch,
pa.label package_arch,
p.md5sum,
+ p.org_id,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
rhnPackageArch pa
@@ -700,7 +702,7 @@ class ShortPackagesDumper(BaseDumper):
attributes = {}
attrs = [
"id", "name", "version", "release", "epoch",
- "package_arch", "md5sum", "package_size",
+ "package_arch", "md5sum", "package_size", "org_id",
]
for attr in attrs:
attributes[attr.replace('_', '-')] = data[attr]
diff --git a/backend/satellite_tools/satsync.py b/backend/satellite_tools/satsync.py
index cc39ac6..41a55a8 100644
--- a/backend/satellite_tools/satsync.py
+++ b/backend/satellite_tools/satsync.py
@@ -876,6 +876,7 @@ Please contact your RHN representative""" % (generation, sat_cert.generation))
if OPTIONS.orgid is not None:
nevra['org_id'] = OPTIONS.orgid
+ package['org_id'] = OPTIONS.orgid
else:
nevra['org_id'] = package['org_id']
@@ -1644,6 +1645,7 @@ Please contact your RHN representative""" % (generation, sat_cert.generation))
chunk = ss.getChunk()
item_count = len(chunk)
batch = self._get_cached_package_batch(chunk)
+ _validate_package_org(batch)
try:
sync_handlers.import_packages(batch)
except (SQLError, SQLSchemaError, SQLConnectError), e:
@@ -1686,12 +1688,13 @@ Please contact your RHN representative""" % (generation, sat_cert.generation))
package['channels'] = [channel_obj]
uq_packages[pid] = package
+ uq_pkg_data = uq_packages.values()
+ _validate_package_org(uq_pkg_data)
try:
if OPTIONS.mount_point:
- importer = sync_handlers.link_channel_packages(uq_packages.values(), strict=0)
+ importer = sync_handlers.link_channel_packages(uq_pkg_data, strict=0)
else:
- importer = sync_handlers.link_channel_packages(uq_packages.values())
-
+ importer = sync_handlers.link_channel_packages(uq_pkg_data)
except (SQLError, SQLSchemaError, SQLConnectError), e:
tbOut = cStringIO.StringIO()
Traceback(mail=0, ostream=tbOut, with_locals=1)
@@ -1993,6 +1996,19 @@ def _verifyPkgRepMountPoint():
log(-1, "ERROR: server.mount_point not set in the configuration file")
sys.exit(26)
+def _validate_package_org(batch):
+ orgid = OPTIONS.orgid or None
+ orgs = map(lambda a: a['id'], satCerts.get_all_orgs())
+ #if orgid is not None and orgid not in orgs:
+ # orgid = 1
+ for pkg in batch:
+ if pkg['org_id'] is not None and pkg['org_id'] not in orgs:
+ orgid = 1
+ print "Default ORG ID",orgid
+ if orgid is not None and pkg['org_id'] is not None and \
+ pkg['org_id'] != orgid:
+ pkg['org_id'] = orgid
+
def _getImportedChannels():
"Retrieves the channels already imported in the satellite's database"
diff --git a/backend/satellite_tools/sync_handlers.py b/backend/satellite_tools/sync_handlers.py
index bcaf31c..f2488a7 100644
--- a/backend/satellite_tools/sync_handlers.py
+++ b/backend/satellite_tools/sync_handlers.py
@@ -182,7 +182,7 @@ def get_channel_handler():
def import_channels(channels, orgid=None):
collection = ChannelCollection()
batch = []
-
+ import satCerts
for c in channels:
try:
timestamp = collection.get_channel_timestamp(c)
@@ -196,6 +196,10 @@ def import_channels(channels, orgid=None):
# make sure the org from the export is not null org,
# finally if the orgs differ so we might wanna use
# requested org's channel-family.
+ orgs = map(lambda a: a['id'], satCerts.get_all_orgs())
+ if c_obj['org_id'] is not None and c_obj['org_id'] not in orgs:
+ #If the src org is not present default to org 1
+ orgid = str(1)
if orgid is not None and c_obj['org_id'] is not None and \
c_obj['org_id'] != orgid:
c_obj['org_id'] = orgid
14 years, 10 months
backend/satellite_exporter backend/satellite_tools
by Pradeep Kilambi
backend/satellite_exporter/exporter/dumper.py | 2 ++
backend/satellite_exporter/exporter/exportLib.py | 6 ++++--
backend/satellite_tools/satsync.py | 22 +++++++++++++++++++---
backend/satellite_tools/sync_handlers.py | 6 +++++-
4 files changed, 30 insertions(+), 6 deletions(-)
New commits:
commit 0985d35c7b29c786346f262f109131a6c3cd5412
Author: Pradeep Kilambi <pkilambi(a)redhat.com>
Date: Wed Jul 1 17:41:53 2009 -0400
509187 - Resolves the parent key constraint issue. The package org was not accounted causing constraints if the org is not on the source satellite. This fix should default the org to 1 if the org is not present for custom channels.
509194
Fixes the ISE issue on UI which is caused due to mismatched package org id.
509195 - Fixes the Channel permissions issue on UI as its was defaulting to Null org instead of org 1.
diff --git a/backend/satellite_exporter/exporter/dumper.py b/backend/satellite_exporter/exporter/dumper.py
index 1f95d34..b505dea 100644
--- a/backend/satellite_exporter/exporter/dumper.py
+++ b/backend/satellite_exporter/exporter/dumper.py
@@ -772,6 +772,7 @@ class ShortPackagesDumper(CachedDumper, exportLib.ShortPackagesDumper):
h = rhnSQL.prepare("""
select
p.id,
+ p.org_id,
pn.name,
pe.evr.version version,
pe.evr.release release,
@@ -805,6 +806,7 @@ class PackagesDumper(CachedDumper, exportLib.PackagesDumper):
select
p.id,
pn.name,
+ p.org_id,
pe.evr.version version,
pe.evr.release release,
pe.evr.epoch epoch,
diff --git a/backend/satellite_exporter/exporter/exportLib.py b/backend/satellite_exporter/exporter/exportLib.py
index 3b0ce75..d0e2d82 100644
--- a/backend/satellite_exporter/exporter/exportLib.py
+++ b/backend/satellite_exporter/exporter/exportLib.py
@@ -544,6 +544,7 @@ class PackagesDumper(BaseDumper):
select
p.id,
pn.name,
+ p.org_id,
pe.evr.version version,
pe.evr.release release,
pe.evr.epoch epoch,
@@ -592,7 +593,7 @@ class _PackageDumper(BaseRowDumper):
attrs = ["name", "version", "release", "package_arch",
"package_group", "rpm_version", "package_size", "payload_size",
"build_host", "source_rpm", "md5sum", "payload_format",
- "compat", "cookie"]
+ "compat", "cookie", "org_id"]
attrdict = {
'id' : "rhn-package-%s" % self._row['id'],
'epoch' : self._row['epoch'] or "",
@@ -684,6 +685,7 @@ class ShortPackagesDumper(BaseDumper):
pe.evr.epoch epoch,
pa.label package_arch,
p.md5sum,
+ p.org_id,
TO_CHAR(p.last_modified, 'YYYYMMDDHH24MISS') last_modified
from rhnPackage p, rhnPackageName pn, rhnPackageEVR pe,
rhnPackageArch pa
@@ -700,7 +702,7 @@ class ShortPackagesDumper(BaseDumper):
attributes = {}
attrs = [
"id", "name", "version", "release", "epoch",
- "package_arch", "md5sum", "package_size",
+ "package_arch", "md5sum", "package_size", "org_id",
]
for attr in attrs:
attributes[attr.replace('_', '-')] = data[attr]
diff --git a/backend/satellite_tools/satsync.py b/backend/satellite_tools/satsync.py
index cc39ac6..41a55a8 100644
--- a/backend/satellite_tools/satsync.py
+++ b/backend/satellite_tools/satsync.py
@@ -876,6 +876,7 @@ Please contact your RHN representative""" % (generation, sat_cert.generation))
if OPTIONS.orgid is not None:
nevra['org_id'] = OPTIONS.orgid
+ package['org_id'] = OPTIONS.orgid
else:
nevra['org_id'] = package['org_id']
@@ -1644,6 +1645,7 @@ Please contact your RHN representative""" % (generation, sat_cert.generation))
chunk = ss.getChunk()
item_count = len(chunk)
batch = self._get_cached_package_batch(chunk)
+ _validate_package_org(batch)
try:
sync_handlers.import_packages(batch)
except (SQLError, SQLSchemaError, SQLConnectError), e:
@@ -1686,12 +1688,13 @@ Please contact your RHN representative""" % (generation, sat_cert.generation))
package['channels'] = [channel_obj]
uq_packages[pid] = package
+ uq_pkg_data = uq_packages.values()
+ _validate_package_org(uq_pkg_data)
try:
if OPTIONS.mount_point:
- importer = sync_handlers.link_channel_packages(uq_packages.values(), strict=0)
+ importer = sync_handlers.link_channel_packages(uq_pkg_data, strict=0)
else:
- importer = sync_handlers.link_channel_packages(uq_packages.values())
-
+ importer = sync_handlers.link_channel_packages(uq_pkg_data)
except (SQLError, SQLSchemaError, SQLConnectError), e:
tbOut = cStringIO.StringIO()
Traceback(mail=0, ostream=tbOut, with_locals=1)
@@ -1993,6 +1996,19 @@ def _verifyPkgRepMountPoint():
log(-1, "ERROR: server.mount_point not set in the configuration file")
sys.exit(26)
+def _validate_package_org(batch):
+ orgid = OPTIONS.orgid or None
+ orgs = map(lambda a: a['id'], satCerts.get_all_orgs())
+ #if orgid is not None and orgid not in orgs:
+ # orgid = 1
+ for pkg in batch:
+ if pkg['org_id'] is not None and pkg['org_id'] not in orgs:
+ orgid = 1
+ print "Default ORG ID",orgid
+ if orgid is not None and pkg['org_id'] is not None and \
+ pkg['org_id'] != orgid:
+ pkg['org_id'] = orgid
+
def _getImportedChannels():
"Retrieves the channels already imported in the satellite's database"
diff --git a/backend/satellite_tools/sync_handlers.py b/backend/satellite_tools/sync_handlers.py
index bcaf31c..f2488a7 100644
--- a/backend/satellite_tools/sync_handlers.py
+++ b/backend/satellite_tools/sync_handlers.py
@@ -182,7 +182,7 @@ def get_channel_handler():
def import_channels(channels, orgid=None):
collection = ChannelCollection()
batch = []
-
+ import satCerts
for c in channels:
try:
timestamp = collection.get_channel_timestamp(c)
@@ -196,6 +196,10 @@ def import_channels(channels, orgid=None):
# make sure the org from the export is not null org,
# finally if the orgs differ so we might wanna use
# requested org's channel-family.
+ orgs = map(lambda a: a['id'], satCerts.get_all_orgs())
+ if c_obj['org_id'] is not None and c_obj['org_id'] not in orgs:
+ #If the src org is not present default to org 1
+ orgid = str(1)
if orgid is not None and c_obj['org_id'] is not None and \
c_obj['org_id'] != orgid:
c_obj['org_id'] = orgid
14 years, 10 months
Branch 'VADER' - java/code
by Brad Buckingham
java/code/src/com/redhat/rhn/common/db/datasource/xml/Package_queries.xml | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
New commits:
commit e7e79d422c363f81508192e6acc6e0e2bb007f08
Author: Brad Buckingham <bbuckingham(a)redhat.com>
Date: Wed Jul 1 16:35:56 2009 -0400
509221 - System->Package->Install incorrectly using arch name vs label
The Package->Install page was using the rhnPackageArch.name to list the
package architecture; however, other pages (e.g. Package->List/Remove)
uses rhnPackageArch.label which is the more correct value.
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Package_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Package_queries.xml
index 14459dd..9355c70 100644
--- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Package_queries.xml
+++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Package_queries.xml
@@ -635,10 +635,10 @@ SELECT P.id, P.summary, PP.name as provider
SELECT distinct pn.name AS NAME,
pn.name || '-' || full_list.evr.version || '-' || full_list.evr.release || DECODE(full_list.evr.epoch, NULL, '', ':' || full_list.evr.epoch) AS NVRE,
pn.id || '|' || lookup_evr(full_list.evr.epoch, full_list.evr.version, full_list.evr.release) || '|' || full_list.arch_id AS ID_COMBO,
- full_list.arch_name as ARCH
+ full_list.arch_label as ARCH
FROM (
SELECT p.name_id name_id, max(pe.evr) evr,
- pa.name as arch_name, pa.id as arch_id
+ pa.label as arch_label, pa.id as arch_id
FROM rhnPackageEVR PE, rhnPackage P,
rhnChannelPackage CP, rhnServerChannel SC,
rhnPackageArch PA
@@ -647,7 +647,7 @@ SELECT distinct pn.name AS NAME,
AND cp.package_id = p.id
AND p.evr_id = pe.id
AND p.package_arch_id = pa.id
- GROUP BY p.name_id, pa.name, pa.id
+ GROUP BY p.name_id, pa.label, pa.id
) full_list,
rhnPackageName pn
INNER JOIN rhnPackage PKG ON pkg.name_id = pn.id
14 years, 10 months