backend/po/ru.po | 87 backend/satellite_exporter/handlers/non_auth_dumper.py | 285 + backend/satellite_tools/disk_dumper/dumper.py | 253 - backend/server/importlib/headerSource.py | 1 backend/server/importlib/packageImport.py | 4 backend/server/rhnPackage.py | 3 backend/spacewalk-backend.spec | 12 client/rhel/rhn-client-tools/po/zh_CN.po | 1438 ---------- client/rhel/rhn-client-tools/rhn-client-tools.spec | 93 client/rhel/rhn-client-tools/src/up2date_client/hardware.py | 6 client/rhel/rhn-client-tools/src/up2date_client/tui.py | 2 client/rhel/yum-rhn-plugin/po/zh_CN.po | 30 client/rhel/yum-rhn-plugin/rhnplugin.py | 2 client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec | 15 java/build.xml | 4 java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml | 4 java/code/src/com/redhat/rhn/frontend/action/common/DownloadFile.java | 5 java/code/src/com/redhat/rhn/frontend/action/systems/entitlements/VirtualizationEntitlementsAction.java | 19 java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_en_US.xml | 3 java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java | 22 java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java | 10 java/code/src/com/redhat/rhn/frontend/xmlrpc/system/SystemHandler.java | 53 java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java | 1 java/code/src/com/redhat/rhn/manager/system/VirtEntitlementsManagerImpl.java | 67 java/code/src/com/redhat/rhn/manager/system/VirtualizationEntitlementsManager.java | 37 java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp | 14 java/spacewalk-java.spec | 77 rel-eng/packages/rhn-client-tools | 2 rel-eng/packages/spacewalk-backend | 2 rel-eng/packages/spacewalk-java | 2 rel-eng/packages/spacewalk-setup | 2 rel-eng/packages/yum-rhn-plugin | 2 schema/spacewalk/oracle/packages/rhn_channel.pkb | 17 schema/spacewalk/oracle/packages/rhn_channel.pks | 3 schema/spacewalk/postgres/packages/rhn_channel.pkb | 29 spacewalk/setup/bin/spacewalk-setup | 2 spacewalk/setup/spacewalk-setup.spec | 5 web/html/network/software/channels/license.pxt | 45 web/html/network/systems/ssm/channels/index.pxt | 79 web/html/network/systems/ssm/channels/license.pxt | 60 web/modules/rhn/RHN/DB/Server.pm | 60 web/modules/rhn/RHN/DB/ServerActions.pm | 42 web/modules/sniglets/Sniglets/Channel.pm | 68 web/modules/sniglets/Sniglets/ListView/SystemList.pm | 84 44 files changed, 723 insertions(+), 2328 deletions(-)
New commits: commit bdef4563edb2a5881ea55779f07e8121a740ba3b Merge: 0806217... 5bab334... Author: Shannon Hughes shughes@redhat.com Date: Thu Jun 17 13:30:41 2010 -0400
Merge branch 'master' into repo
commit 5bab33477f780b55dc2ac0ec1b122ad78ee62861 Author: Michael Mraka michael.mraka@redhat.com Date: Thu Jun 17 16:59:06 2010 +0200
fixed wording for incompatible checksum error
diff --git a/backend/satellite_tools/disk_dumper/dumper.py b/backend/satellite_tools/disk_dumper/dumper.py index 91a7e98..d79693d 100644 --- a/backend/satellite_tools/disk_dumper/dumper.py +++ b/backend/satellite_tools/disk_dumper/dumper.py @@ -483,7 +483,10 @@ class XML_Dumper: label) if not (iss_slave_sha256_capable or all_channels_hash[label]['checksum_type'] in [None, 'sha1']): - raise rhnFault(3001, "Channel %s has incompatible checksum (%)" % + raise rhnFault(3001, + "Channel %s has incompatible rpm checksum (%s). Please contact\n" + + "Red Hat support for information about upgrade to newer version\n" + + "of Satellite Server which supports it." % (label, all_channels_hash[label]['checksum_type'])) channels[label] = all_channels_hash[label]
commit b8d4a0529b816b95e83964003cb9b148600f8505 Author: Jan Pazdziora jpazdziora@redhat.com Date: Thu Jun 17 14:53:04 2010 +0200
Getopt::Long not used in spacewalk-setup, removing.
We parse the options in Spacewalk::Setup now.
diff --git a/spacewalk/setup/bin/spacewalk-setup b/spacewalk/setup/bin/spacewalk-setup index de75201..7cd94d7 100755 --- a/spacewalk/setup/bin/spacewalk-setup +++ b/spacewalk/setup/bin/spacewalk-setup @@ -34,7 +34,6 @@ use DBI; use Digest::MD5 qw/md5_hex/; use DateTime; use Sys::Hostname; -use Getopt::Long; use Spacewalk::Setup; use Fcntl qw(F_GETFD F_SETFD FD_CLOEXEC);
commit 16fe1a3fc81c43b4b86879653d8a1b7c672931af Author: Jan Pazdziora jpazdziora@redhat.com Date: Thu Jun 17 14:29:01 2010 +0200
ReadLine nor ReadMode not used in spacewalk-setup, removing.
diff --git a/spacewalk/setup/bin/spacewalk-setup b/spacewalk/setup/bin/spacewalk-setup index 868c42f..de75201 100755 --- a/spacewalk/setup/bin/spacewalk-setup +++ b/spacewalk/setup/bin/spacewalk-setup @@ -28,7 +28,6 @@ foreach my $t (@ARGV) { use Params::Validate; Params::Validate::validation_options(strip_leading => "-");
-use Term::ReadKey qw/ReadLine ReadMode/; use Mail::RFC822::Address; use File::Spec; use DBI;
commit 560bf5df6ee6d2daa1f98cf972c6e76e2c3d77ad Author: Miroslav Suchý msuchy@redhat.com Date: Thu Jun 17 10:41:08 2010 +0200
Automatic commit of package [spacewalk-setup] release [1.1.2-1].
diff --git a/rel-eng/packages/spacewalk-setup b/rel-eng/packages/spacewalk-setup index 4ec6856..25c8244 100644 --- a/rel-eng/packages/spacewalk-setup +++ b/rel-eng/packages/spacewalk-setup @@ -1 +1 @@ -1.1.1-1 spacewalk/setup/ +1.1.2-1 spacewalk/setup/ diff --git a/spacewalk/setup/spacewalk-setup.spec b/spacewalk/setup/spacewalk-setup.spec index 7ed0915..69947d9 100644 --- a/spacewalk/setup/spacewalk-setup.spec +++ b/spacewalk/setup/spacewalk-setup.spec @@ -1,5 +1,5 @@ Name: spacewalk-setup -Version: 1.1.1 +Version: 1.1.2 Release: 1%{?dist} Summary: Initial setup tools for Red Hat Spacewalk
@@ -99,6 +99,9 @@ rm -rf %{buildroot} %attr(755, apache, root) %{_var}/spacewalk
%changelog +* Thu Jun 17 2010 Miroslav Suchý msuchy@redhat.com 1.1.2-1 +- fun aside, swimmer meet shark (msuchy@redhat.com) + * Mon Apr 19 2010 Michael Mraka michael.mraka@redhat.com 1.1.1-1 - bumping spec files to 1.1 packages - Move systemlogs directory out of /var/satellite
commit 2409f5250c2a3c96d71c610251875eca929979a0 Author: Miroslav Suchý msuchy@redhat.com Date: Thu Jun 17 10:39:33 2010 +0200
Automatic commit of package [spacewalk-java] release [1.1.12-1].
diff --git a/java/spacewalk-java.spec b/java/spacewalk-java.spec index d822f54..04a69d3 100644 --- a/java/spacewalk-java.spec +++ b/java/spacewalk-java.spec @@ -19,7 +19,7 @@ Name: spacewalk-java Summary: Spacewalk Java site packages Group: Applications/Internet License: GPLv2 -Version: 1.1.11 +Version: 1.1.12 Release: 1%{?dist} URL: https://fedorahosted.org/spacewalk Source0: https://fedorahosted.org/releases/s/p/spacewalk/%%7Bname%7D-%%7Bversion%7D.t... @@ -321,6 +321,81 @@ fi %{jardir}/postgresql-jdbc.jar
%changelog +* Thu Jun 17 2010 Miroslav Suchý msuchy@redhat.com 1.1.12-1 +- Made the duplicate compares page do confirm delete differently + (paji@redhat.com) +- Added a sort of 'confirm' logic for delete systems in dup compares page + (paji@redhat.com) +- 602591 - "Content-Length" added to response header for different download + contents (tlestach@redhat.com) +- 603890 - fix/rewrite system.listSubscribableBaseChannels API + (tlestach@redhat.com) +- 576314 - fix for errata being added to the email queue multiple times before + it can be run (jsherril@redhat.com) +- bumping up heap to 512m for jsp compiles (shughes@redhat.com) +- bumping up build heap to 512m (shughes@redhat.com) +- Removed an unnecessary abstraction for VirtEntitlements (paji@redhat.com) +- 591291 - associate packages also (when mergeing errata) (tlestach@redhat.com) +- 601656 - fix channel permission check for errata.clone (tlestach@redhat.com) +- 601656 - fix channel permission check for channel.software.mergePackages + (tlestach@redhat.com) +- fixing issue where package summary could be null, causing NPE + (jsherril@redhat.com) +- 601656 - fix channel permission check (tlestach@redhat.com) +- 591291 - clone errata instead of associating them to custom channels + (tlestach@redhat.com) +- fixing hashCode for Errata (tlestach@redhat.com) +- 529359: Fixed a couple of bugs related to Remote Command Package upgrade + (paji@redhat.com) +- 595473 525588 - fixing small query issue and moving the ssm operation + creation to before the (jsherril@redhat.com) +- 595473 525588 - fixing issue where child channel subscription changes would + not use the stored procedure and would instead update rhnServerChannel table + directly, bypassing all entitelment logic (jsherril@redhat.com) +- 525588 - changing SSM child channel subscription page to not use hibernate + when doing subscribng (jsherril@redhat.com) +- Correct 'checkstyle' errors (colin.coe@gmail.com) +- checkstyle fixes (jsherril@redhat.com) +- Update errata.setDetails to allow setting CVEs (colin.coe@gmail.com) +- Allow CVEs to be set on unpublished errata (colin.coe@gmail.com) +- 585176 - fixing issue where packages were excluded from update on SSM + upgradable packages page when the packages had multiple arches + (jsherril@redhat.com) +- 585965 - fixing issue with multilib packages and errata-cache generation, + where updating one arch of a package would indicate that the other one was + updated as well (jsherril@redhat.com) +- 563859 - fixing issue where adding errata to x86_64 channels would only get + packages of one arch, even if the errata had two (lib packages) + (jsherril@redhat.com) +- unit test fix (jsherril@redhat.com) +- Adding the correct checkstyle for inactive systems (paji@redhat.com) +- 576953 - fixing errata search case sensitivity and not searching on partial + cve name (jsherril@redhat.com) +- 588367 - introducing systemgroup.scheduleApplyErrataToActive API call + (tlestach@redhat.com) +- 588367 move applyErrataHelper to ErrataManager (tlestach@redhat.com) +- Added the dupe compare css and javascript magic (paji@redhat.com) +- 590204 - fixing issue where pagination wasnt working properly on normal user + list page (jsherril@redhat.com) +- Made the default dups compare page preselect a bunch of items + (paji@redhat.com) +- Improved a error message on Dups systems page (paji@redhat.com) +- Fix style of commit c4e387bbb1c5cf16f54a2fa968a5613121bc1d7a + (lukas.durfina@gmail.com) +- A more functional dupes compare page (paji@redhat.com) +- adding distro deletion to cleanup script (jsherril@redhat.com) +- Removed a no white space after a type cast check since we are not enforcing + it anywhere (paji@redhat.com) +- unit test fix (jsherril@redhat.com) +- Generate Debian repository (lukas.durfina@gmail.com) +- Fixed broken unit tests (paji@redhat.com) +- checkstyle fix (joshua.roys@gtri.gatech.edu) +- Updated a typo in the string (paji@redhat.com) +- Updated a resource string (paji@redhat.com) +- Added i18n strings for the systemdetails page (paji@redhat.com) +- Limit automatic config comparisons to diff enabled systems + (joshua.roys@gtri.gatech.edu) + * Mon May 10 2010 Partha Aji paji@redhat.com 1.1.11-1 - Added an option to selectively delete instead of reactivate when a system is being reprovisioned (paji@redhat.com) diff --git a/rel-eng/packages/spacewalk-java b/rel-eng/packages/spacewalk-java index 67345d2..e81a753 100644 --- a/rel-eng/packages/spacewalk-java +++ b/rel-eng/packages/spacewalk-java @@ -1 +1 @@ -1.1.11-1 java/ +1.1.12-1 java/
commit 4f00896f58070f65fb5c16a371c89ebbc3a47d20 Author: Miroslav Suchý msuchy@redhat.com Date: Thu Jun 17 10:37:56 2010 +0200
Automatic commit of package [rhn-client-tools] release [1.1.7-1].
diff --git a/client/rhel/rhn-client-tools/rhn-client-tools.spec b/client/rhel/rhn-client-tools/rhn-client-tools.spec index 768eeee..9064605 100644 --- a/client/rhel/rhn-client-tools/rhn-client-tools.spec +++ b/client/rhel/rhn-client-tools/rhn-client-tools.spec @@ -4,7 +4,7 @@ Group: System Environment/Base Source0: https://fedorahosted.org/releases/s/p/spacewalk/%%7Bname%7D-%%7Bversion%7D.t... URL: https://fedorahosted.org/spacewalk Name: rhn-client-tools -Version: 1.1.6 +Version: 1.1.7 Release: 1%{?dist} BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildArch: noarch @@ -280,6 +280,97 @@ make -f Makefile.rhn-client-tools test %endif
%changelog +* Thu Jun 17 2010 Miroslav Suchý msuchy@redhat.com 1.1.7-1 +- l10n: Updates to Chinese (China) (zh_CN) translation + (leahliu@fedoraproject.org) +- 601683 - properly import get_computer_info routine (mzazrivec@redhat.com) +- 596237 - use correct constant in HardwareWindow (tui) (mzazrivec@redhat.com) +- 596237 - use constants in SendingWindow (mzazrivec@redhat.com) +- 596237 - use constants in SendWindow (mzazrivec@redhat.com) +- 596237 - use constants in PackagesWindow (mzazrivec@redhat.com) +- 596237 - use constants in HardwareWindow (mzazrivec@redhat.com) +- 596237 - use constants in OSReleaseWindow & AlreadyRegisteredWindow + (mzazrivec@redhat.com) +- l10n: Updates to Russian (ru) translation (ypoyarko@fedoraproject.org) +- 600316 - don't traceback for zero subscribed channels (mzazrivec@redhat.com) +- l10n: Updates to Russian (ru) translation (ypoyarko@fedoraproject.org) +- l10n: Updates to Russian (ru) translation (ypoyarko@fedoraproject.org) +- l10n: Updates to Russian (ru) translation (ypoyarko@fedoraproject.org) +- l10n: Updates to Spanish (Castilian) (es) translation + (gguerrer@fedoraproject.org) +- 598890 - always return product version as string (mzazrivec@redhat.com) +- l10n: Updates to Spanish (Castilian) (es) translation + (gguerrer@fedoraproject.org) +- Remove three more exceptions that are not used in our code base. + (jpazdziora@redhat.com) +- The rhn-client-tools ChangeLog has't been updated since 2002, removing. + (jpazdziora@redhat.com) +- Removing WarningDialog, OkDialog, and QuestionDialog that are not used in our + code. (jpazdziora@redhat.com) +- Remove 23 exceptions that are not used in our code base. + (jpazdziora@redhat.com) +- Method resetServerList not used in our code, removing. + (jpazdziora@redhat.com) +- When startRhnCheck was replaced by spawnRhnCheckForUI, it became unused, + removing. (jpazdziora@redhat.com) +- Method getFailedSystemSlots not used in our code, removing. + (jpazdziora@redhat.com) +- get_device_property not used in our code, removing. (jpazdziora@redhat.com) +- termsAndConditions not used in our code, removing. (jpazdziora@redhat.com) +- sat_supports_virt_guest_registration not used in our code, removing. + (jpazdziora@redhat.com) +- finishMessage not used in our code, removing. (jpazdziora@redhat.com) +- When autoActivateNumbersOnce was removed, autoActivatedHardwareInfo was made + unused, removing. (jpazdziora@redhat.com) +- When ActivateSubscriptionPage was removed, activatedRegistrationNumber was + made unused, removing. (jpazdziora@redhat.com) +- 597263 - give the focus to the ButtonBar (and thus to the Yes button), to + behave as RHEL 5 did. (jpazdziora@redhat.com) +- 596101 - skip the chooseChannelPage when going Back as well, if it should not + be shown. (jpazdziora@redhat.com) +- 596102 - fit hw profile into a 2x6 table (mzazrivec@redhat.com) +- 595688 - cancel busy cursor after ValidationError (michael.mraka@redhat.com) +- 595837 - write nice error in case of "connection reset by peer" and xmlrpc + protocol error (msuchy@redhat.com) +- 585188 - we need to implement fatalError for loginPageApply and + createProfilePageApply. (jpazdziora@redhat.com) +- Remove except which cannot be reached. (jpazdziora@redhat.com) +- 585188 - refactor the RHN Register firstboot code to match firstboot 1.110 on + Fedora 12 and RHEL 6. (jpazdziora@redhat.com) +- 585188 - only install legacy firstboot on RHEL 5 (and earlier), the new + firstboot for other systems. (jpazdziora@redhat.com) +- 585188 - the firstboot modules for RHEL 5 shall retire in firstboot-legacy- + rhel5. (jpazdziora@redhat.com) +- 593194 - fix creating the $(PREFIX)/usr/share/setuptool/setuptool.d when + building the package. (jpazdziora@redhat.com) +- 595669 - fix regexp and do not fail if regexp do not match + (msuchy@redhat.com) +- whitespace cleanup (msuchy@redhat.com) +- We don't need hwdata target anymore (mzazrivec@redhat.com) +- 580493 - use correct product logos in rhn_register (gui) + (mzazrivec@redhat.com) +- 557059 - do not fail on IBM-ESXS controler where ID_PATH is not set + (msuchy@redhat.com) +- 580489 - fix requires for rhn-setup-gnome (mzazrivec@redhat.com) +- python-hwdata finaly made it into Fedora and Epel so we can remove from this + package and depend on python-hwdata (msuchy@redhat.com) +- 593194 - 99rhn_register to add RHN Register to setup's list of tools. + (jpazdziora@redhat.com) +- The bugzilla 556290 had errata released, python-setuptools should be pulled + in by python-coverage. (jpazdziora@redhat.com) +- 584780 - move the firstboot _gui.* files to rhn-setup-gnome. + (jpazdziora@redhat.com) +- 557059 - we cannot have class None. (jpazdziora@redhat.com) +- 591798 - Completly remove hal code from rhn-client-tools for F-13 and RHEL-6 + (msuchy@redhat.com) +- 591422 - add hwdata.py to rhn-client-tools. (jpazdziora@redhat.com) +- l10n: Updates to German (de) translation (ttrinks@fedoraproject.org) +- l10n update .pot and .po files for rhn-client-tools (msuchy@redhat.com) +- l10n - translate desktop file too (msuchy@redhat.com) +- cleanup - removing translation file, which does not match any language code + (msuchy@redhat.com) +- update po files for rhn-client-tools (msuchy@redhat.com) + * Wed May 05 2010 Jan Pazdziora 1.1.3-1 - 589100 - address issue when clients were not able to register to the server.
diff --git a/rel-eng/packages/rhn-client-tools b/rel-eng/packages/rhn-client-tools index 9233bb1..e3e11da 100644 --- a/rel-eng/packages/rhn-client-tools +++ b/rel-eng/packages/rhn-client-tools @@ -1 +1 @@ -1.1.6-1 client/rhel/rhn-client-tools/ +1.1.7-1 client/rhel/rhn-client-tools/
commit eb16cc52acc136b856718b85e1300ffaec1f4c0f Author: Partha Aji paji@redhat.com Date: Wed Jun 16 17:49:25 2010 -0400
Made the duplicate compares page do confirm delete differently
diff --git a/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp b/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp index 5c17997..1d7e75c 100644 --- a/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp +++ b/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp @@ -28,16 +28,11 @@ toggleElement(document.getElementById(linkId + 'Hide')); } - function handle_delete(chk_id, div_id, form) { - var delete_chk_box = document.getElementById(chk_id); - if (delete_chk_box.checked == true) { - return form.submit(); - } - - var delete_chk_box_div = document.getElementById(div_id); - if (delete_chk_box_div.style.display == 'none') { - delete_chk_box_div.style.display = ''; - } + function handle_delete(div_del_id, div_confirm_id, form) { + var div_del = document.getElementById(div_del_id); + var div_confirm = document.getElementById(div_confirm_id); + div_del.style.display = 'none'; + div_confirm.style.display = ''; return false; } @@ -105,8 +100,9 @@ </c:when> <c:otherwise><td></c:otherwise> </c:choose> - <div style="display:none" id='div${current.value}'> <input type="checkbox" id="chk_id_${current.value}" name="chk${current.value}" value="${current.value}"/> - <bean:message key="Check to Confirm Delete"/></div> - <input type="submit" name="btn${current.value}" value="${rhn:localize('Delete System Profile')}" onclick="return handle_delete('chk_id_${current.value}','div${current.value}', this.form);"/><br/> + <div style="display:none" id='div_confirm${current.value}'><input type="submit" name="btn${current.value}" value="${rhn:localize('ssm.delete.systems.confirmbutton')}"/></div> + <div id='div_del${current.value}'><input type="submit" name="delbtn${current.value}" value="${rhn:localize('Delete System Profile')}" + onclick="return handle_delete('div_del${current.value}','div_confirm${current.value}', this.form);"/></div> </td> </c:forEach> </tr>
commit 4d96b504e378bac2d3361900a94a8ec20b51b18e Author: Partha Aji paji@redhat.com Date: Tue Jun 15 15:44:26 2010 -0400
Added a sort of 'confirm' logic for delete systems in dup compares page
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 1f04705..7613e05 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 @@ -5797,6 +5797,9 @@ value for this entitlement, excluding the default organization's consumption.</s </trans-unit> <trans-unit id="System Identity Properties"> <source>System Identity Properties</source> + </trans-unit> + <trans-unit id="Check to Confirm Delete"> + <source>Select to Confirm Deletion</source> </trans-unit> <trans-unit id="System Content And Monitoring"> <source>System Content And Monitoring</source> diff --git a/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp b/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp index 0c9b449..5c17997 100644 --- a/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp +++ b/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp @@ -19,6 +19,7 @@ } }
+ function pageToggleRows(linkId, ids){ for (var i = 0 ; i < ids.length; i++) { toggleElement(document.getElementById(ids[i])); @@ -27,6 +28,19 @@ toggleElement(document.getElementById(linkId + 'Hide')); } + function handle_delete(chk_id, div_id, form) { + var delete_chk_box = document.getElementById(chk_id); + if (delete_chk_box.checked == true) { + return form.submit(); + } + + var delete_chk_box_div = document.getElementById(div_id); + if (delete_chk_box_div.style.display == 'none') { + delete_chk_box_div.style.display = ''; + } + return false; + } + </script> </head> <body> @@ -91,7 +105,9 @@ </c:when> <c:otherwise><td></c:otherwise> </c:choose> - <input type="submit" name="btn${current.value}" value="${rhn:localize('Delete System Profile')}"/></td> + <div style="display:none" id='div${current.value}'> <input type="checkbox" id="chk_id_${current.value}" name="chk${current.value}" value="${current.value}"/> - <bean:message key="Check to Confirm Delete"/></div> + <input type="submit" name="btn${current.value}" value="${rhn:localize('Delete System Profile')}" onclick="return handle_delete('chk_id_${current.value}','div${current.value}', this.form);"/><br/> + </td> </c:forEach> </tr> <tr>
commit a66747190151e01e482b30e7d627f7f833947f70 Author: Tomas Lestach tlestach@redhat.com Date: Tue Jun 15 16:17:20 2010 +0200
602591 - "Content-Length" added to response header for different download contents
added for: - package - srpm - patchreadme - patchsetreadme - repolog
diff --git a/java/code/src/com/redhat/rhn/frontend/action/common/DownloadFile.java b/java/code/src/com/redhat/rhn/frontend/action/common/DownloadFile.java index 592297f..f747bd9 100644 --- a/java/code/src/com/redhat/rhn/frontend/action/common/DownloadFile.java +++ b/java/code/src/com/redhat/rhn/frontend/action/common/DownloadFile.java @@ -341,6 +341,7 @@ public class DownloadFile extends DownloadAction { User user = UserFactory.lookupById(userid); if (type.equals(DownloadManager.DOWNLOAD_TYPE_PACKAGE)) { Package pack = PackageFactory.lookupByIdAndOrg(fileId, user.getOrg()); + response.addHeader("Content-Length", pack.getPackageSize() + ""); path = Config.get().getString(ConfigDefaults.MOUNT_POINT) + "/" + pack.getPath(); return getStreamForBinary(path); @@ -349,6 +350,7 @@ public class DownloadFile extends DownloadAction { Package pack = PackageFactory.lookupByIdAndOrg(fileId, user.getOrg()); List<PackageSource> src = PackageFactory.lookupPackageSources(pack); if (!src.isEmpty()) { + response.addHeader("Content-Length", src.get(0).getPackageSize() + ""); path = Config.get().getString(ConfigDefaults.MOUNT_POINT) + "/" + src.get(0).getPath(); return getStreamForBinary(path); @@ -357,6 +359,7 @@ public class DownloadFile extends DownloadAction { else if (type.equals(DownloadManager.DOWNLOAD_TYPE_PATCH_README)) { Patch patch = (Patch) PackageFactory.lookupByIdAndOrg(fileId, user.getOrg()); + response.addHeader("Content-Length", patch.getPackageSize() + ""); return getStreamForText(patch.getReadme().getBytes(1L, (int) patch.getReadme().length()));
@@ -364,6 +367,7 @@ public class DownloadFile extends DownloadAction { else if (type.equals(DownloadManager.DOWNLOAD_TYPE_PATCH_SET_README)) { PatchSet patch = (PatchSet) PackageFactory.lookupByIdAndOrg(fileId, user.getOrg()); + response.addHeader("Content-Length", patch.getPackageSize() + ""); return getStreamForText(patch.getReadme().getBytes(1L, (int) patch.getReadme().length())); } @@ -380,6 +384,7 @@ public class DownloadFile extends DownloadAction { output.append("\n"); }
+ response.addHeader("Content-Length", output.length() + ""); return getStreamForText(output.toString().getBytes()); } }
commit 2b195123a9503541543ac3d335a7a69f4b2c4d38 Author: Tomas Lestach tlestach@redhat.com Date: Tue Jun 15 13:49:07 2010 +0200
603890 - fix/rewrite system.listSubscribableBaseChannels API
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 90d054d..6421bef 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 @@ -71,6 +71,7 @@ import com.redhat.rhn.domain.token.ActivationKeyFactory; import com.redhat.rhn.domain.user.User; import com.redhat.rhn.frontend.dto.ActivationKeyDto; import com.redhat.rhn.frontend.dto.ErrataOverview; +import com.redhat.rhn.frontend.dto.EssentialChannelDto; import com.redhat.rhn.frontend.dto.ServerPath; import com.redhat.rhn.frontend.dto.SystemOverview; import com.redhat.rhn.frontend.events.SsmDeleteServersEvent; @@ -527,32 +528,13 @@ public class SystemHandler extends BaseHandler { Server server = lookupServer(loggedInUser, sid); Channel baseChannel = server.getBaseChannel(); List returnList = new ArrayList(); - - if (baseChannel != null) { - //Add the current base channel to the list - Map base = new HashMap(); - - base.put("id", baseChannel.getId()); - base.put("name", baseChannel.getName()); - base.put("label", baseChannel.getLabel()); - base.put("current_base", new Integer(1)); - returnList.add(base); - } - - DataResult dr = ChannelManager.userSubscribableBaseChannelsForSystem(loggedInUser, - server); - //Loop through the results and put into returnList. This is because we have to - //set the CURRENT_BASE field. - for (Iterator itr = dr.iterator(); itr.hasNext();) { - Map map = (Map) itr.next(); - if (baseChannel != null && - baseChannel.getId().intValue() == ((Long) map.get("id")).intValue()) { - continue; //we've already added the base channel - } - - returnList.add(createChannelMap(map)); + + List<EssentialChannelDto> list = ChannelManager.listBaseChannelsForSystem(loggedInUser, server); + for (EssentialChannelDto ch : list) { + Boolean currentBase = (baseChannel != null) && baseChannel.getId().equals(ch.getId()); + returnList.add(createChannelMap(ch, currentBase)); } - + return returnList.toArray(); }
@@ -607,24 +589,17 @@ public class SystemHandler extends BaseHandler { } return returnList.toArray(); } - - - - private Map createChannelMap(Map map) { + + private Map createChannelMap(EssentialChannelDto channel, Boolean currentBase) { Map ret = new HashMap();
- ret.put("ID", map.get("id")); - ret.put("NAME", map.get("name")); - ret.put("LABEL", map.get("label")); - ret.put("CURRENT_BASE", new Integer(0)); - - ret.put("id", map.get("id")); - ret.put("name", map.get("name")); - ret.put("label", map.get("label")); - ret.put("current_base", new Integer(0)); + ret.put("id", channel.getId()); + ret.put("name", channel.getName()); + ret.put("label", channel.getLabel()); + ret.put("current_base", currentBase ? new Integer(1) : new Integer(0)); return ret; } - + /** * List the child channels that this system can subscribe to. * @param sessionKey The sessionKey containing the logged in user diff --git a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java index 72bb0a2..253676b 100644 --- a/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java +++ b/java/code/src/com/redhat/rhn/manager/channel/ChannelManager.java @@ -2079,6 +2079,7 @@ public class ChannelManager extends BaseManager {
EssentialChannelDto guessed = new EssentialChannelDto(); guessed.setId(guessedBase.getId()); + guessed.setLabel(guessedBase.getLabel()); guessed.setName(guessedBase.getName()); channelDtos.add(0, guessed); }
commit 4db18650d691d6a0c0bfd03983368f37d13b55dc Author: leahliu leahliu@fedoraproject.org Date: Tue Jun 15 03:50:43 2010 +0000
l10n: Updates to Chinese (China) (zh_CN) translation
Transmitted-via: Transifex (translate.fedoraproject.org)
diff --git a/client/rhel/rhn-client-tools/po/zh_CN.po b/client/rhel/rhn-client-tools/po/zh_CN.po index d0e8541..f484a1f 100644 --- a/client/rhel/rhn-client-tools/po/zh_CN.po +++ b/client/rhel/rhn-client-tools/po/zh_CN.po @@ -1,18 +1,20 @@ +# translation of spacewalk.rhn-client-tools.po to Wei Liu # translation of zh_CN.po to -# Copyright (C) 2002,2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc. +# Copyright (C) 2002,2003, 2004, 2005, 2006, 2007, 2010 Free Software Foundation, Inc. # # Sarah Wang sarahs@redhat.com, 2003, 2004. # Tony Fu tfu@redhat.com, 2004, 2006. # Leah Liu weliu@redhat.com, 2005, 2006. # Xi HUANG xhuang@redhat.com, 2007. +# Leah Liu lliu@redhat.com, 2010. msgid "" msgstr "" -"Project-Id-Version: zh_CN\n" +"Project-Id-Version: spacewalk.rhn-client-tools\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-05-07 13:34+0200\n" -"PO-Revision-Date: 2007-02-01 11:42+1000\n" -"Last-Translator: Xi HUANG xhuang@redhat.com\n" -"Language-Team: en@li.org\n" +"PO-Revision-Date: 2010-06-10 13:14+1000\n" +"Last-Translator: Leah Liu lliu@redhat.com\n" +"Language-Team: Wei Liu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" @@ -42,10 +44,9 @@ msgstr "完成软件更新的设置"
#: ../src/up2date_client/gui.py:301 msgid "_Exit" -msgstr "" +msgstr "退出(_)"
#: ../src/up2date_client/gui.py:302 -#, fuzzy msgid "Software updates setup unsuccessful" msgstr "软件更新设置不成功"
@@ -100,7 +101,7 @@ msgstr "问题对话框:"
#: ../src/up2date_client/rhnChannel.py:97 msgid "Unable to Locate SystemId" -msgstr "" +msgstr "无法定位 SystemId"
#: ../src/up2date_client/rhnChannel.py:114 msgid "This system may not be updated until it is associated with a channel." @@ -136,14 +137,13 @@ msgid "An unexpected OS error occurred: %s\n" msgstr "发生了一个意外的操作系统错误:%s\n"
#: ../src/up2date_client/rhncli.py:83 -#, fuzzy msgid "A connection was attempted with a malformed URI.\n" -msgstr "格式不正确的 URI。\n" +msgstr "尝试使用异常 URI 连接。\n"
#: ../src/up2date_client/rhncli.py:85 -#, fuzzy, python-format +#, python-format msgid "A connection was attempted with a malformed URI: %s.\n" -msgstr "使用了一个格式不正确的 URI: %s。\n" +msgstr "尝试使用异常 URI 连接:%s。\n"
#: ../src/up2date_client/rhncli.py:87 #, python-format @@ -181,15 +181,15 @@ msgid "Unable to open gui. Try `up2date --nox`" msgstr "无法打开 gui,请尝试“up2date --nox”"
#: ../src/up2date_client/rhncli.py:184 -#, fuzzy, python-format +#, python-format msgid "" "%%prog (Red Hat Network Client Tools) %s\n" "Copyright (C) 1999--2010 Red Hat, Inc.\n" "Licensed under the terms of the GPLv2." msgstr "" "%%prog (Red Hat Network Client Tools) %s\n" -"Copyright (C) 1999-2006 Red Hat, Inc.\n" -"Licensed under the terms of the GPL." +"版权所有 (C) 1999-2006 Red Hat, Inc.\n" +"根据 GPL 中的条款获准使用。"
#: ../src/up2date_client/rhncli.py:204 msgid "An error has occurred:" @@ -200,9 +200,8 @@ msgid "See /var/log/up2date for more information" msgstr "查看 /var/log/up2date 来获得详悉信息"
#: ../src/up2date_client/rhnreg_constants.py:13 -#, fuzzy msgid "Copyright © 2006--2010 Red Hat, Inc. All rights reserved." -msgstr "Copyright © 2006 Red Hat, Inc. All rights reserved." +msgstr "版权 © 2006 Red Hat, Inc. 版权所有。"
#. Connect Window #: ../src/up2date_client/rhnreg_constants.py:16 @@ -299,8 +298,7 @@ msgstr "联系红帽或红帽合作伙伴的技术支持专家来帮助您解决 msgid "" "Stay in compliance with your subscription agreement and manage subscriptions " "for systems connected to your account at http://rhn.redhat.com/." -msgstr "" -"遵循您的订阅协议并管理连接到您在 http://rhn.redhat.com 上的帐号的系统订阅。" +msgstr "遵循您的订阅协议并管理连接到您在 http://rhn.redhat.com 上的帐号的系统订阅。"
#: ../src/up2date_client/rhnreg_constants.py:54 msgid "" @@ -319,20 +317,16 @@ msgid "Software update setup unsuccessful" msgstr "软件更新设置不成功"
#: ../src/up2date_client/rhnreg_constants.py:60 -#, fuzzy msgid "" "Are you sure you don't want to connect your system to Red Hat Network? " "You'll miss out on the benefits of a Red Hat Enterprise Linux subscription:\n" -msgstr "" -"您确认不希望把您的系统连接到红帽网络吗?您将无法获得红帽企业 Linux 订阅所提供" -"的益处:" +msgstr "您确认不希望将您的系统连接到红帽网络吗?您将无法获得红帽企业 Linux 订阅所提供的:\n"
#: ../src/up2date_client/rhnreg_constants.py:62 -#, fuzzy msgid "" "You will not be able to take advantage of these subscription privileges " "without connecting your system to Red Hat Network.\n" -msgstr "没有在红帽网络上注册系统,您将 <b>无法</b> 获得这些订阅所提供的益处。" +msgstr "不将您的系统与红帽网络相连,您将无法获得这些订阅所提供的益处。\n"
#: ../src/up2date_client/rhnreg_constants.py:65 msgid "I'll register later." @@ -390,13 +384,10 @@ msgstr "" "\n"
#: ../src/up2date_client/rhnreg_constants.py:82 -#, fuzzy msgid "" "Tip: Forgot your login or password? Visit: https://rhn.redhat.com/rhn/sales/" "LoginInfo.do" -msgstr "" -"<small>忘记了您的登录或口令?访问 \n" -"https://www.redhat.com/wapps/sso/rhn/lostPassword.html</small>" +msgstr "窍门:忘记您的登录或者密码?请访问 Visit: https://rhn.redhat.com/rhn/sales/LoginInfo.do"
#: ../src/up2date_client/rhnreg_constants.py:84 msgid "*Email Address:" @@ -419,9 +410,9 @@ msgid "" ""Cancel" and no information will be sent. You can run the registration " "program later by typing `rhn_register` at the command line." msgstr "" -"我们已经完成了为系统配置档案收集信息的过程。\n" +"我们已经完成了为系统侧写收集信息的过程。\n" "\n" -"点 "下一步" 来把这个系统配置档案发送到红帽网络。点 "取消" 则不会有任何信" +"点 "下一步" 来把这个系统侧写发送到红帽网络。点 "取消" 则不会有任何信" "息被发送。您可以以后通过在命令行中输入 `rhn_register` 来运行注册程序。"
#: ../src/up2date_client/rhnreg_constants.py:98 @@ -527,7 +518,7 @@ msgstr "" "一个不活跃的系统释放一个权利。\n" "(2) 通过 http://www.redhat.com/store/ 购买新的权利。\n" "(3) 在 http://www.redhat.com/now/ 上激活一个新的安装码。一旦您的帐号中有了有" -"效的激活订阅,您可以通过 RHN 网站界面来查看这个系统的配置档案,并通过 软件 > " +"效的激活订阅,您可以通过 RHN 网站界面来查看这个系统的侧写,并通过 软件 > " "软件频道 标签页来把这个系统订阅到软件频道。"
#: ../src/up2date_client/rhnreg_constants.py:155 @@ -559,14 +550,13 @@ msgstr "更新模块:每个系统的更新,电子邮件勘误通知,勘误 msgid "" "Management module: automatic updates, systems grouping, systems permissions, " "system package profiling" -msgstr "管理模块:自动更新、系统组群、系统访问权限、软件包配置档案" +msgstr "管理模块:自动更新、系统组群、系统访问权限、软件包侧写"
#: ../src/up2date_client/rhnreg_constants.py:167 msgid "" "Provisioning module: bare-metal provisioning, existing state provisioning, " "rollbacks, configuration management" -msgstr "" -"Provision 模块:全新系统 provision、已存在状态 provision、系统恢复、配置管理" +msgstr "Provision 模块:全新系统 provision、已存在状态 provision、系统恢复、配置管理"
#: ../src/up2date_client/rhnreg_constants.py:169 msgid "" @@ -625,7 +615,7 @@ msgstr "" "一个不活跃的系统释放一个权利。\n" "(2) 通过 http://www.redhat.com/store/ 购买新的权利。\n" "(3) 在 http://www.redhat.com/now/ 上激活一个新的安装码。一旦您的帐号中有了有" -"效的激活订阅,您可以通过 RHN 网站界面来查看这个系统的配置档案,并通过 软件 > " +"效的激活订阅,您可以通过 RHN 网站界面来查看这个系统的侧写,并通过 软件 > " "软件频道 标签页来把这个系统订阅到软件频道。"
#: ../src/up2date_client/rhnreg_constants.py:200 @@ -693,7 +683,7 @@ msgstr "" "服务器。"
#: ../src/up2date_client/rhnreg_constants.py:229 -#, fuzzy, python-format +#, python-format msgid "" "<b><span size="16000">Incompatible Certificate File</span></b>\n" "\n" @@ -706,7 +696,7 @@ msgid "" msgstr "" "<b><span size="16000">不兼容的证书文件</span></b>\n" "\n" -"您所提供的证书 <b>%s</b> 与 <b>%s</b> 中的红帽网络服务器不兼容。您确定您所提" +"您所提供的证书 <b>%s</b> 与 <b>%s</b> 中的红帽网络服务器不兼容。您可能希望确认您提供了有效的证书文件。您确定您所提" "供的证书是正确的,并且证书文件没有被破坏吗?\n" "\n" "请尝试使用一个不同的证书文件。" @@ -718,6 +708,9 @@ msgid "" " The certificate is expired. Please ensure you have the correct certificate " "and your system time is correct." msgstr "" +"<b><span size="12000">不兼容的证书文件</span></b>\n" +"\n" +"该证书已经过期。请确定您使用了正确的证书文件,且您的系统时间是正确的。"
#: ../src/up2date_client/rhnreg_constants.py:241 msgid "Please verify the value of sslCACert in /etc/sysconfig/rhn/up2date" @@ -747,12 +740,15 @@ msgid "" " Tip: Minor releases with a '*' are currently supported by Red Hat.\n" "\n" msgstr "" +"\n" +"窍门:目前红帽支持使用 '*' 的次要版本。\n" +"\n"
#: ../src/up2date_client/rhnreg_constants.py:260 msgid "" "Warning:You will not be able to limit this system to minor release that is " "older than the recent minor release if you select this option.\n" -msgstr "" +msgstr "警告:如果您选择这个选择,您将无法将这个系统限定为比最近次要版本旧的次要版本。\n"
#: ../src/up2date_client/rhnreg_constants.py:265 #, python-format @@ -763,6 +759,11 @@ msgid "" "(you will be able to move to a newer release.)\n" "Are you sure you Would like to Continue?" msgstr "" +"您的系统必须订阅 %s 基本\n" +"软件频道。您将无法将该系统\n" +"迁移到之前的版本\n" +"(您将可以迁移到较新的版本。)\n" +"您确定要继续吗?"
#. Navigation #: ../src/up2date_client/rhnreg_constants.py:274 @@ -812,20 +813,18 @@ msgid "Notice" msgstr "注意"
#: ../src/up2date_client/rhnregGui.py:261 -#, fuzzy msgid "There was an error while applying your choice." -msgstr "在产生配置档案时出现了一个错误。" +msgstr "在应用您的选择时出错。"
#: ../src/up2date_client/rhnregGui.py:287 msgid "You specified an invalid protocol. Only https and http are allowed." msgstr "您指定了一个无效的协议。只允许使用 https 和 http。"
#: ../src/up2date_client/rhnregGui.py:300 -#, fuzzy msgid "" "You will not be able to successfully register this system without contacting " "a Red Hat Network server." -msgstr "没有在红帽网络上注册系统,您将 <b>无法</b> 获得这些订阅所提供的益处。" +msgstr "不联络红帽网络服务器您将无法成功注册这个系统。"
#: ../src/up2date_client/rhnregGui.py:325 #, python-format @@ -870,13 +869,11 @@ msgid "You may be running a client that is incompatible with the server." msgstr "您可能正在运行一个与服务器不兼容的客户端系统。"
#: ../src/up2date_client/rhnregGui.py:396 -#, fuzzy, python-format +#, python-format msgid "" "Please enter your account information for the <b>%s</b> Red Hat Network " "Satellite:" -msgstr "" -"请输入您的 %s 红帽网络 Satellite 的登录信息:\n" -"\n" +msgstr "请输入您的 <b>%s</b> 红帽网络 Satellite 的帐户信息:"
#: ../src/up2date_client/rhnregGui.py:445 msgid "You must enter a login." @@ -887,9 +884,8 @@ msgid "You must enter a password." msgstr "您必须输入一个口令。"
#: ../src/up2date_client/rhnregGui.py:465 -#, fuzzy msgid "There was an error while logging in." -msgstr "登录时出现问题。" +msgstr "登录时出错。"
#: ../src/up2date_client/rhnregGui.py:489 msgid "" @@ -898,9 +894,8 @@ msgid "" msgstr "在与注册服务器联络时出现了一个致命错误。 错误消息是:\n"
#: ../src/up2date_client/rhnregGui.py:631 -#, fuzzy msgid "There was an error while assembling information for the profile." -msgstr "在产生配置档案时出现了一个错误。" +msgstr "在为侧写收集信息时出错。"
#: ../src/up2date_client/rhnregGui.py:652 msgid "Error running hardware profile" @@ -908,16 +903,15 @@ msgstr "运行硬件档案时出错"
#: ../src/up2date_client/rhnregGui.py:679 msgid "There was an error while populating the profile." -msgstr "在产生配置档案时出现了一个错误。" +msgstr "在产生侧写时出现了一个错误。"
#: ../src/up2date_client/rhnregGui.py:699 msgid "You must choose a name for this profile." msgstr "您必须为这个档案选择一个名称。"
#: ../src/up2date_client/rhnregGui.py:714 -#, fuzzy msgid "There was an error while creating the profile." -msgstr "在产生配置档案时出现了一个错误。" +msgstr "在生成侧写时出现了一个错误。"
#: ../src/up2date_client/rhnregGui.py:725 msgid "Sending your profile information to Red Hat Network. Please wait." @@ -991,9 +985,8 @@ msgid "Problem registering personal information" msgstr "注册个人信息时出现问题"
#: ../src/up2date_client/rhnregGui.py:940 -#, fuzzy msgid "There was an error while installing the certificate." -msgstr "在产生配置档案时出现了一个错误。" +msgstr "安装证书时出错。"
#: ../src/up2date_client/rhnregGui.py:966 msgid "You must select a certificate." @@ -1019,9 +1012,8 @@ msgid "unknown" msgstr "未知"
#: ../src/up2date_client/rhnregGui.py:1138 -#, fuzzy msgid "There was an error getting the list of hardware." -msgstr "在产生配置档案时出现了一个错误。" +msgstr "获得硬件列表时出错。"
#: ../src/up2date_client/rhnregGui.py:1150 ../src/up2date_client/tui.py:631 #, python-format @@ -1034,9 +1026,8 @@ msgid "%s MB" msgstr "%s MB"
#: ../src/up2date_client/rhnregGui.py:1198 -#, fuzzy msgid "There was an error building the list of packages." -msgstr "在安装软件包时出现了一个致命错误:\n" +msgstr "构建软件包列表时出错。"
#: ../src/up2date_client/rhnregGui.py:1213 msgid "Package" @@ -1082,13 +1073,12 @@ msgid "Warning: unable to enable rhnsd with chkconfig" msgstr "警告:无法使用 chkconfig 来启用 rhnsd"
#: ../src/up2date_client/rhnreg.py:65 -#, fuzzy msgid "Warning: unable to run rhn_check" -msgstr "警告:无法使用 chkconfig 来启用 rhnsd" +msgstr "警告:无法运行 rhn_check"
#: ../src/up2date_client/rpcServer.py:47 msgid "Error: Server Unavailable. Please try later." -msgstr "" +msgstr "错误:服务器不可用,请稍后再试。"
#: ../src/up2date_client/rpcServer.py:171 msgid "ERROR: can not find RHNS CA file" @@ -1111,59 +1101,54 @@ msgid "System software updates already set up" msgstr "系统软件更新已被设置"
#: ../src/up2date_client/tui.py:115 -#, fuzzy msgid "Red Hat Network Location:" -msgstr "红帽网络位置(_L):" +msgstr "红帽网络位置:"
#: ../src/up2date_client/tui.py:117 -#, fuzzy msgid "System ID:" -msgstr "" -"\n" -"系统 ID: " +msgstr "系统 ID: "
#: ../src/up2date_client/tui.py:371 msgid "The server indicated an error:\n" msgstr "服务器标明一个错误:\n"
#: ../src/up2date_client/tui.py:375 -#, fuzzy msgid "There was an error communicating with the registration server:\n" -msgstr "在与注册服务器联络时出现了一个致命错误。 错误消息是:\n" +msgstr "在与注册服务器联络时出错:\n"
#: ../src/up2date_client/tui.py:434 msgid "Select Operating System Release" -msgstr "" +msgstr "选择操作系统发行本"
#: ../src/up2date_client/tui.py:438 msgid "Operating System version:" -msgstr "" +msgstr "操作系统版本:"
#: ../src/up2date_client/tui.py:440 msgid "Limited Updates Only" -msgstr "" +msgstr "仅限有限更新"
#: ../src/up2date_client/tui.py:452 msgid " Minor Release: " -msgstr "" +msgstr "次要版本:"
#: ../src/up2date_client/tui.py:467 msgid "All available updates" -msgstr "" +msgstr "所有可用更新"
#: ../src/up2date_client/tui.py:520 msgid "Confirm operating system release selection" -msgstr "" +msgstr "确认操作系统发行本选择"
#: ../src/up2date_client/tui.py:528 msgid "" "Your system will be subscribed to the base software channel to receive all " "available updates." -msgstr "" +msgstr "您的系统将订阅基本软件频道以便接收所有可用更新。"
#: ../src/up2date_client/tui.py:572 msgid "Register a System Profile - Hardware" -msgstr "注册系统配置档案 - 硬件" +msgstr "注册系统侧写 - 硬件"
#: ../src/up2date_client/tui.py:575 msgid "" @@ -1219,7 +1204,7 @@ msgstr "该档案中还会包括其它硬件信息,包括 PCI 设备、磁盘
#: ../src/up2date_client/tui.py:685 msgid "Register a System Profile - Packages" -msgstr "注册系统配置档案 - 软件包" +msgstr "注册系统侧写 - 软件包"
#: ../src/up2date_client/tui.py:690 msgid "" @@ -1272,8 +1257,7 @@ msgid "You specified an invalid protocol." msgstr "您指定了一个无效的协议。"
#: ../src/up2date_client/tui.py:1106 -msgid "" -" <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen" +msgid " <Tab>/<Alt-Tab> between elements | <Space> selects | <F12> next screen" msgstr " <Tab>/<Alt-Tab> 在元素间切换 | <Space> 选择 | <F12> 下一屏幕"
#: ../src/up2date_client/tui.py:1200 @@ -1347,8 +1331,7 @@ msgid "GPG is not installed properly." msgstr "GPG 没有被正确安装。"
#: ../src/up2date_client/up2dateErrors.py:237 -msgid "" -"GPG keyring does not include the Red Hat, Inc. public package-signing key" +msgid "GPG keyring does not include the Red Hat, Inc. public package-signing key" msgstr "GPG 钥匙圈不包括 Red Hat, Inc. 软件包签名公钥"
#: ../src/up2date_client/up2dateErrors.py:249 @@ -1417,7 +1400,7 @@ msgstr "选择一个红帽网络服务器"
#: ../src/firstboot/rhn_create_profile_gui.py:48 msgid "Create Profile" -msgstr "创建配置档案" +msgstr "创建侧写"
#: ../src/firstboot/rhn_create_profile_gui.py:50 #: ../src/firstboot/rhn_finish_gui.py:41 ../src/firstboot/rhn_review_gui.py:40 @@ -1442,8 +1425,7 @@ msgid "There was a communication error with the server: %s" msgstr "在与服务器联络时出现错误:%s"
#: ../src/firstboot/rhn_login_gui.py:106 -msgid "" -"Would you like to try changing the network configuration and trying again?" +msgid "Would you like to try changing the network configuration and trying again?" msgstr "你是否希望更改网络设置,然后重试一次?"
#: ../src/firstboot/rhn_provide_certificate_gui.py:40 @@ -1478,7 +1460,7 @@ msgstr "正在更新硬件档案..."
#: ../src/bin/rhn-profile-sync.py:49 msgid "Updating virtualization profile..." -msgstr "更新虚拟化配置档案..." +msgstr "更新虚拟化侧写..."
#: ../src/bin/rhn_register.py:36 msgid "Do not attempt to use X" @@ -1486,7 +1468,7 @@ msgstr "不要试图使用 X"
#: ../src/bin/rhnreg_ks.py:44 msgid "Specify a profilename" -msgstr "指定配置档案名" +msgstr "指定侧写名"
#: ../src/bin/rhnreg_ks.py:46 msgid "Specify a username" @@ -1513,14 +1495,12 @@ msgid "Specify an activation key" msgstr "指定一个激活码"
#: ../src/bin/rhnreg_ks.py:58 -msgid "" -"Subscribe this system to the EUS channel tied to the system's redhat-release" +msgid "Subscribe this system to the EUS channel tied to the system's redhat-release" msgstr ""
#: ../src/bin/rhnreg_ks.py:60 -#, fuzzy msgid "[Deprecated] Read contact info from stdin" -msgstr "从标准输入中读取联系信息" +msgstr "[过时的] 从标准输入中读取联系信息"
#: ../src/bin/rhnreg_ks.py:62 msgid "Do not probe or upload any hardware info" @@ -1554,18 +1534,17 @@ msgstr "该系统已经注册了。使用 --force 来超越" msgid "" "Usage of --use-eus-channel option with --activationkey is not supported. " "Please use username and password instead." -msgstr "" +msgstr "不支持在 --activationkey 中使用 --use-eus-channel 选项。请使用 username 和 password。"
#: ../src/bin/rhnreg_ks.py:122 -#, fuzzy msgid "The server you are registering against does not support EUS." -msgstr "您要注册的服务器不支持这个版本的客户端。" +msgstr "您订阅的服务器不支持 EUS。"
#: ../src/bin/rhnreg_ks.py:152 msgid "" "Warning: --contactinfo option has been deprecated. Please login to the " "server web user Interface and update your contactinfo. " -msgstr "" +msgstr "警告:--contactinfo 选项已经过时。请登录到服务器网页用户界面并更新您的联络信息。"
#: ../src/bin/rhnreg_ks.py:192 msgid "" @@ -1595,22 +1574,23 @@ msgstr "软件更新注册"
#: ../data/gui.glade.h:7 msgid "Select operating system release" -msgstr "" +msgstr "选择操作系统发行本"
#: ../data/progress.glade.h:1 msgid "Progress Dialog" msgstr "进度对话框"
#: ../data/rh_register.glade.h:1 -#, fuzzy msgid "" "\n" "Are you sure you would like to continue?" -msgstr "您确定要继续吗?" +msgstr "" +"\n" +"您确定要继续吗?"
#: ../data/rh_register.glade.h:3 msgid " " -msgstr "" +msgstr " "
#: ../data/rh_register.glade.h:4 msgid "<b>Compliance:</b>" @@ -1654,14 +1634,14 @@ msgstr "<b>您系统的网络连接没有正常工作。您的系统无法设置 msgid "" "<b>Tip:</b> Minor releases with a '*' are currently fully supported by Red " "Hat." -msgstr "" +msgstr "<b>窍门:</b>红帽完全支持带 '*' 的次要版本。"
#: ../data/rh_register.glade.h:14 msgid "" "<b>Warning:</b> You will <b>not</b> be able to limit this system to a minor " "release that is older than the most recent minor release if you select this " "option." -msgstr "" +msgstr "<b>警告:如果您选择这个选项,</b>您将<b>无法</b>将这个系统限制为比最新次要版本旧的次要版本。"
#: ../data/rh_register.glade.h:15 msgid "" @@ -1674,7 +1654,7 @@ msgstr ""
#: ../data/rh_register.glade.h:16 msgid "<b>Your system was registered for updates during installation.</b>" -msgstr "" +msgstr "<b>在安装过程中已将您的系统注册了更新。</b>"
#: ../data/rh_register.glade.h:17 msgid "" @@ -1682,7 +1662,7 @@ msgid "" "if kept updated, will always be equivalent to the latest available minor " "release of Red Hat Enterprise Linux 5. It will be registered to the main " "'Red Hat Enterprise Linux 5' software channel." -msgstr "" +msgstr "经为这个系统提供<b>所有可用更新(_A)</b>。如果一直更新则这个系统将总是等同于红帽企业版 Linux 5 的最新可用次要版本。要将其在主要‘红帽就企业版 Linux 5’软件频道中注册。"
#: ../data/rh_register.glade.h:18 msgid "" @@ -1697,7 +1677,7 @@ msgstr ""
#: ../data/rh_register.glade.h:20 msgid "<big><b>Profile Data</b></big>" -msgstr "<big><b>配置档案数据</b></big>" +msgstr "<big><b>侧写数据</b></big>"
#: ../data/rh_register.glade.h:21 msgid "<big><b>System Name</b></big>" @@ -1726,8 +1706,7 @@ msgstr "红帽尊重您的隐私权:http://www.redhat.com/legal/privacy_statem msgid "" "<small>Tip: Forgot your login or password? Contact your Satellite's " "<i>Organization Administrator</i>.</small>" -msgstr "" -"<small>忘记了您的用户名或口令?联系您的 Satellite <i>机构管理员</i>。</small>" +msgstr "<small>忘记了您的用户名或口令?联系您的 Satellite <i>机构管理员</i>。</small>"
#: ../data/rh_register.glade.h:27 msgid "" @@ -1753,8 +1732,7 @@ msgstr "" "和口令)的安全。"
#: ../data/rh_register.glade.h:34 -msgid "" -"Activate a previously purchased subscription you have not yet activated." +msgid "Activate a previously purchased subscription you have not yet activated." msgstr "激活一个您以前购买的、但还没有激活的订阅。"
#: ../data/rh_register.glade.h:35 @@ -1903,8 +1881,7 @@ msgstr "代理服务器用户名(_U):" msgid "" "Purchase an additional Red Hat Enterprise Linux subscription at http://www." "redhat.com/store/." -msgstr "" -"购买一个额外的红帽企业 Linux 订阅(通过 http://www.redhat.com/store/%EF%BC%89%E3%80%82" +msgstr "购买一个额外的红帽企业 Linux 订阅(通过 http://www.redhat.com/store/%EF%BC%89%E3%80%82"
#: ../data/rh_register.glade.h:72 msgid "" @@ -1932,11 +1909,11 @@ msgstr "选择一个文件"
#: ../data/rh_register.glade.h:77 msgid "Send _hardware profile" -msgstr "发送(_h)硬件配置档案" +msgstr "发送(_h)硬件侧写"
#: ../data/rh_register.glade.h:78 msgid "Send _package profile" -msgstr "发送软件包配置档案(_p)" +msgstr "发送软件包侧写(_p)"
#: ../data/rh_register.glade.h:79 msgid "Software update setup has been completed for this system." @@ -1979,7 +1956,7 @@ msgstr "使用 HTTP 代理服务器进行验证(_t)"
#: ../data/rh_register.glade.h:89 msgid "V_iew Package Profile ..." -msgstr "查看软件包配置档案(_i)" +msgstr "查看软件包侧写(_i)"
#: ../data/rh_register.glade.h:90 msgid "Why Register" @@ -2025,8 +2002,7 @@ msgstr "" msgid "" "You'll need to send us a profile of what packages and hardware are installed " "on your system so we can determine what updates are available." -msgstr "" -"您需要发送给我们一个系统配置档案,从而使我们可以决定哪些更新适用您的系统。" +msgstr "您需要发送给我们一个系统侧写,从而使我们可以决定哪些更新适用您的系统。"
#: ../data/rh_register.glade.h:99 msgid "" @@ -2132,7 +2108,7 @@ msgstr "(_T)返回到设置过程。"
#: ../data/rh_register.glade.h:121 msgid "_View Hardware Profile ..." -msgstr "(_V)查看硬件配置档案 ..." +msgstr "(_V)查看硬件侧写 ..."
#: ../data/rh_register.glade.h:122 msgid "_Why Should I Connect to RHN? ..." @@ -2156,7 +2132,7 @@ msgstr "•"
#: ../data/rh_register.glade.h:127 msgid "• A name for your system's Red Hat Network profile" -msgstr "您系统的红帽网络配置档案名" +msgstr "您系统的红帽网络侧写名"
#: ../data/rh_register.glade.h:128 msgid "• The address to your Red Hat Network Satellite (optional)" @@ -2180,1227 +2156,3 @@ msgstr "" msgid "Register to Spacewalk/Satellite/Red Hat Network." msgstr "在 Red Hat 网络上注册"
-#~ msgid "_Exit software update setup" -#~ msgstr "退出软件更新设置(_E)" - -#~ msgid "software updates setup unsuccessful" -#~ msgstr "软件更新设置不成功" - -#~ msgid "" -#~ "If you do not have a Red Hat Login, this assistant will allow you to " -#~ "create one." -#~ msgstr "如果您还没有红帽登录帐号,它将帮助您建立一个。" - -#~ msgid "Step 1: Review the Red Hat Privacy Statement" -#~ msgstr "步骤 1:查阅 Red Hat 的隐私声明" - -#~ msgid "Review the Red Hat Network Terms And Conditions" -#~ msgstr "回顾 Red Hat 网络的条件" - -#~ msgid "" -#~ "Are you sure you don't want to connect your system to Red Hat Network? " -#~ "You'll miss out on the benefits of a Red Hat Enterprise Linux " -#~ "subscription:\n" -#~ "\n" -#~ "Security & Updates:\n" -#~ "Receive the latest software updates, including security updates, keeping " -#~ "this Red Hat Enterprise Linux system updated and secure.\n" -#~ "\n" -#~ "Downloads & Upgrades:\n" -#~ "Download installation images for Red Hat Enterprise Linux releases, " -#~ "including new releases.\n" -#~ "\n" -#~ "Support:\n" -#~ "Access to the technical support experts at Red Hat or Red Hat's partners " -#~ "for help with any issues you might encounter with this system.\n" -#~ "\n" -#~ "Compliance:\n" -#~ "Stay in compliance with your subscription agreement and manage " -#~ "subscriptions for systems connected to your account at http://rhn.redhat." -#~ "com/.\n" -#~ "\n" -#~ "You will not be able to take advantage of these subscription privileges " -#~ "without connecting your system to Red Hat Network.\n" -#~ "\n" -#~ "Tip: Red Hat values your privacy: http://www.redhat.com/legal/" -#~ "privacy_statement.html" -#~ msgstr "" -#~ "您确定不想把您的系统连接到红帽网络吗?您将无法获得红帽企业 Linux 订阅为您" -#~ "提供的以下好处:\n" -#~ "\n" -#~ "安全和更新:\n" -#~ "接收包括安全更新在内的软件更新,使您的红帽企业 Linux 系统保持在最新的、安" -#~ "全的状态\n" -#~ "\n" -#~ "下载和升级:\n" -#~ "下载包括最新的发行版本在内的红帽企业 Linux 安装映像。\n" -#~ "\n" -#~ "支持:\n" -#~ "在您的系统遇到问题时获得红帽或红帽合作伙伴提供的专家级的技术支持。\n" -#~ "\n" -#~ "遵守使用条款:\n" -#~ "遵守您的订阅的使用条款,并管理与您在 http://rhn.redhat.com/ 中的帐号相连的" -#~ "系统订阅。\n" -#~ "\n" -#~ "如果您的系统没有与红帽网络相连,您将无法完全获得这些订阅所带给您的好处。\n" -#~ "\n" -#~ "红帽尊重您的隐私权:http://www.redhat.com/legal/privacy_statement.html" - -#~ msgid "No thanks. I'll connect later." -#~ msgstr "不,我将在以后连接。" - -#~ msgid "Create a New Login ..." -#~ msgstr "创建一个新登录 ..." - -#~ msgid "" -#~ "The two passwords you entered don't match. Please re-type your passwords." -#~ msgstr "您输入的两个口令不匹配。请重新输入您的口令。" - -#~ msgid "Create a new Red Hat login" -#~ msgstr "建立一个新的红帽登录" - -#~ msgid "" -#~ "Fill in the form below to create a new Red Hat login for use with Red Hat " -#~ "Network (http://rhn.redhat.com/). Required information is marked with a " -#~ "'*':" -#~ msgstr "" -#~ "填写以下表格来创建一个使用红帽网络 (http://rhn.redhat.com/) 的红帽登录。必" -#~ "需的信息以 '*' 标记:" - -#~ msgid "*Desired Login:" -#~ msgstr "*登录:" - -#~ msgid "Examples: user@domain.com" -#~ msgstr "例如:user@domain.com" - -#~ msgid "*Desired Password:" -#~ msgstr "* 口令:" - -#~ msgid "*Confirm Password:" -#~ msgstr "* 确认口令:" - -#~ msgid "Tip: Leave blank if not with a company." -#~ msgstr "如果您是个人用户,把它留为空。" - -#~ msgid "" -#~ "Tip: Red Hat values your privacy. View our privacy policy at: http://" -#~ msgstr "红帽尊重您的隐私权。在这里查看红帽的隐私条款:http://" - -#~ msgid "Please enter your first name." -#~ msgstr "您必须输入姓名。" - -#~ msgid "Please enter your last name." -#~ msgstr "请输入您的姓。" - -#~ msgid "Please enter your email address." -#~ msgstr "请输入您的电子邮件地址。" - -#~ msgid "Please enter a valid email address." -#~ msgstr "请输入一个有效的电子邮件地址。" - -#~ msgid "Please enter your country." -#~ msgstr "请输入您所在的国家。" - -#~ msgid "Please enter a longer login." -#~ msgstr "请输入一个较长的登录。" - -#~ msgid "Please enter a longer password." -#~ msgstr "请输入一个较长的口令。" - -#~ msgid "Please enter a shorter password." -#~ msgstr "请输入一个较短的口令。" - -#~ msgid "" -#~ "It appears this system has attempted to register to the Red Hat Network.\n" -#~ "The system may already be set up for software updates.\n" -#~ "\n" -#~ "Are you sure you would like to continue?" -#~ msgstr "" -#~ "这个系统可能已经和红帽网络进行了注册。\n" -#~ "这个系统可能已经设置了软件更新。\n" -#~ "\n" -#~ "您确定要继续吗?" - -#~ msgid "Select Organization" -#~ msgstr "选择机构" - -#~ msgid "" -#~ "Your login, %s, is associated with multiple organizations. You will need " -#~ "to select an organization to connect this system to." -#~ msgstr "您的登录 %s 与多个机构相连。您需要选择一个机构来与这个系统相连。" - -#~ msgid "Organization:" -#~ msgstr "机构:" - -#~ msgid "You must select an organization." -#~ msgstr "您必须选择一个机构。" - -#~ msgid "Access a subscription" -#~ msgstr "访问一个订阅" - -#~ msgid "" -#~ "You have no active subscriptions available in your account. You will " -#~ "need to do one of the following to create an active subscription in your " -#~ "account before this system can connect to Red Hat Network:" -#~ msgstr "" -#~ "您还没有激活您帐号内的订阅。您在把这个系统连接到红帽网络前需要使用以下的方" -#~ "法之一在您帐号内创建一个激活的订阅:" - -#~ msgid "Activate a new subscription with an installation number:" -#~ msgstr "使用一个安装码来激活一个新订阅:" - -#~ msgid "" -#~ "You have already activated this installation number during this " -#~ "registration." -#~ msgstr "您在注册时已经激活了这个安装号。" - -#~ msgid "Installation Number:" -#~ msgstr "安装号:" - -#, fuzzy -#~ msgid "Example: XXXX-XXXX-XXXX-XXXX" -#~ msgstr "例如:XXXX-XXXX-XXXX-XXXX-XXXX" - -#~ msgid "" -#~ "Congratulations, you have successfully completed software updates set up " -#~ "for this system.\n" -#~ "\n" -#~ "Your system is now ready to receive the software updates that will keep " -#~ "it secure and supported.\n" -#~ "\n" -#~ "You'll know when software updates are available when a package icon " -#~ "appears in the notification area of you desktop (usually in the upper-" -#~ "right corner.) Clicking on this icon, when available, will guide you " -#~ "through applying any updates that are available." -#~ msgstr "" -#~ "恭喜您,您已经成功地为这个系统设置了软件更新。\n" -#~ "\n" -#~ "您的系统现在可以接收软件更新。\n" -#~ "\n" -#~ "当有新的软件更新时,一个软件包图标会出现在您的桌面的通知区域上。点这个图标" -#~ "将可以应用有效的更新。" - -#~ msgid "Subscriptions Activated:" -#~ msgstr "激活的订阅:" - -#~ msgid "" -#~ "A subscription-activating installation number was found on disk, but we " -#~ "were not able to activate it (An unknown error occurred.) We used " -#~ "existing active subscription slots available in the rhn account instead. " -#~ "You may wish to contact Red Hat customer service regarding this issue: " -#~ "http://www.redhat.com/apps/support/" -#~ msgstr "" -#~ "在磁盘上发现了一个订阅激活安装号,但是我们无法激活它(发生了一个未知的错" -#~ "误。)我们将使用 rhn 帐号中的有效的激活订阅来代替它。您可以使用以下网址联" -#~ "系红帽的客户服务部门来解决这个问题:http://www.redhat.com/apps/support/" - -#~ msgid "A installation number was found on disk, but we " -#~ msgstr "在磁盘中发现了一个订阅激活安装码,但是我们" - -#~ msgid "" -#~ "The installation number you have provided (%s) is invalid.\n" -#~ "\n" -#~ "Please check the number and try again or try another option listed on the " -#~ "'Access a Subscription' screen." -#~ msgstr "" -#~ "您所提供的安装号 (%s) 无效。\n" -#~ "\n" -#~ "请检查这个安装号后再试,或使用 '访问一个订阅' 屏幕所列出的另一个选项。" - -#~ msgid "" -#~ "The installation number you provided is valid but was already activated " -#~ "and the subscriptions have already been used by systems in your " -#~ "organization or is not usable for this system.\n" -#~ "\n" -#~ "Please try a different number or try another option listed on the 'Access " -#~ "a Subscription' screen." -#~ msgstr "" -#~ "您所提供的安装号是正确的,但它已经被激活,这个订阅已经被您的机构内的系统所" -#~ "使用,或无法在这个系统上使用。\n" -#~ "\n" -#~ "请使用一个不同的安装号,或使用 '访问一个订阅' 屏幕所列出的另一个选项。" - -#~ msgid "" -#~ "The installation number you provided does not have subscriptions " -#~ "associated with it.\n" -#~ "\n" -#~ "Please try a different number or try another option listed in the 'Access " -#~ "a Subscription' screen." -#~ msgstr "" -#~ "您所提供的安装号并没有与它相关联的订阅。\n" -#~ "\n" -#~ "请使用一个不同的安装号,或使用 '访问一个订阅' 屏幕所列出的另一个选项。" - -#~ msgid "" -#~ "There was a problem logging in:\n" -#~ "%s" -#~ msgstr "" -#~ "登录时出现问题:\n" -#~ "%s" - -#~ msgid "There was problem logging in." -#~ msgstr "登录时出现问题。" - -#, fuzzy -#~ msgid "There was an error while getting the list of organizations." -#~ msgstr "在产生配置档案时出现了一个错误。" - -#, fuzzy -#~ msgid "You must enter an installation number." -#~ msgstr "您必须输入一个安装号。" - -#, fuzzy -#~ msgid "There was an error activating your number." -#~ msgstr "在与红帽网络连接时出现错误。" - -#~ msgid "This installation number has already been activated." -#~ msgstr "这个安装码已经被激活。" - -#, fuzzy -#~ msgid "There was an error retrieving the privacy statement." -#~ msgstr "在产生配置档案时出现了一个错误。" - -#~ msgid "Unable to access the server. Please check your network settings." -#~ msgstr "无法访问这个服务器。请检查您的网络配置。" - -#~ msgid "" -#~ "The server you are attempting to register against does not support this " -#~ "version of the client." -#~ msgstr "您要注册的服务器不支持这个版本的客户端。" - -#~ msgid "You must enter an Installation Number that " -#~ msgstr "您必须输入注册号码" - -#~ msgid "Problem registering login name:\n" -#~ msgstr "注册登录名时出现问题:\n" - -#~ msgid "Problem registering login name." -#~ msgstr "注册登录名时出现问题。" - -#~ msgid ", quantity:" -#~ msgstr "数量:" - -#~ msgid "" -#~ "\n" -#~ "\n" -#~ "Red Hat Network Location: " -#~ msgstr "" -#~ "\n" -#~ "\n" -#~ "红帽网络位置:" - -#~ msgid "" -#~ "\n" -#~ "RHN Login: " -#~ msgstr "" -#~ "\n" -#~ "红帽登录:" - -#~ msgid "Access Subscription" -#~ msgstr "访问订阅" - -#~ msgid "Choose Organization" -#~ msgstr "选择机构" - -#~ msgid "Choose an organization to use with this username" -#~ msgstr "选择一个机构来使用这个用户名" - -#~ msgid "Specify an email address" -#~ msgstr "指定一个电子邮件地址" - -#, fuzzy -#~ msgid "Specify a installation number to use" -#~ msgstr "指定一个要使用的订阅号" - -#~ msgid "Important Registration Info" -#~ msgstr "重要的注册信息" - -#~ msgid "Registration information" -#~ msgstr "登录信息" - -#~ msgid "Select organization" -#~ msgstr "选择组织" - -#~ msgid "<small><b>Tip:</b> Red Hat values your privacy.</small>" -#~ msgstr "<small><b>信息:</b> 红帽尊重您的隐私权。</small>" - -#~ msgid "Privacy Statement" -#~ msgstr "隐私声明" - -#~ msgid "Red Hat Privacy Statement" -#~ msgstr "红帽隐私声明" - -#, fuzzy -#~ msgid "" -#~ "Your account is associated with multiple <b>organizations</b>. You will " -#~ "need to select an organization to register this system to." -#~ msgstr "您的帐号与多个 <b>机构</b> 相连。您需要选择一个机构来注册这个系统。" - -#~ msgid "_Organization:" -#~ msgstr "(_O)机构:" - -#~ msgid "" -#~ "were not able to activate it (An unknown error occurred.) We used " -#~ "existing " -#~ msgstr "无法激活它(存在一个未知的错误。)使用在" - -#~ msgid "" -#~ "active subscription slots available in the rhn account instead. You may " -#~ "wish " -#~ msgstr "rhn 帐号中有效的激活订阅。您也可以联系" - -#~ msgid "to contact Red Hat customer service regarding this issue: " -#~ msgstr "红帽客户服务部门来解决这个问题:" - -#~ msgid "http://www.redhat.com/apps/support/" -#~ msgstr "http://www.redhat.com/apps/support/" - -#~ msgid "activates subscriptions in your account." -#~ msgstr "来在您的帐号中激活订阅。" - -#~ msgid "Only https and http are allowed." -#~ msgstr "只允许使用 https 和 http。" - -#~ msgid "Error reading hardware information:" -#~ msgstr "读取硬件信息时出错:" - -#~ msgid "Error reading DMI information:" -#~ msgstr "读取 DMI 信息时出错:" - -#~ msgid "That user account and password is not valid\n" -#~ msgstr "用户帐号和口令无效\n" - -#~ msgid "You must enter a user name." -#~ msgstr "您必须输入用户名。" - -#~ msgid "You must enter and verify a password." -#~ msgstr "您必须输入并校验一个口令。" - -#~ msgid "" -#~ "Problem registering login:\n" -#~ "%s" -#~ msgstr "" -#~ "注册登录时出现问题:\n" -#~ "%s" - -#~ msgid "Problem registering login." -#~ msgstr "注册登录时出现问题。" - -#~ msgid "United States" -#~ msgstr "美国" - -#~ msgid "Canada" -#~ msgstr "加拿大" - -#~ msgid "Login Information:" -#~ msgstr "登录信息:" - -#~ msgid "Account Information:" -#~ msgstr "帐号信息:" - -#~ msgid "*First Name:" -#~ msgstr "*名字:" - -#~ msgid "*Last Name:" -#~ msgstr "*姓:" - -#~ msgid "*Company Name:" -#~ msgstr "*公司名:" - -#~ msgid "Street Address:" -#~ msgstr "街道地址:" - -#~ msgid "City:" -#~ msgstr "城市:" - -#~ msgid "State/Province:" -#~ msgstr "州/省:" - -#~ msgid "Zip/Post Code:" -#~ msgstr "邮政编码:" - -#~ msgid "*Country:" -#~ msgstr "*国家:" - -#~ msgid " Address 2:" -#~ msgstr " 地址行 2:" - -#~ msgid " Address:" -#~ msgstr "地址:" - -#~ msgid " C_ity:" -#~ msgstr "(_i)城市:" - -#~ msgid " Co_mpany Name:" -#~ msgstr "(_m)公司名:" - -#~ msgid " _State/Province:" -#~ msgstr "(_S)州/省:" - -#~ msgid " _Zip/Postal code:" -#~ msgstr "(_Z)邮政编码:" - -#~ msgid "* C_onfirm password: " -#~ msgstr "* 确认口令 (_o): " - -#~ msgid "* Co_untry:" -#~ msgstr "* (_u)国家:" - -#~ msgid "* Desired _Login:" -#~ msgstr "* (_L)登录:" - -#~ msgid "* Desired _Password:" -#~ msgstr "* 口令 (_P):" - -#~ msgid "* Last _Name:" -#~ msgstr "*(_N)姓:" - -#~ msgid "* _Email Address: " -#~ msgstr "* 电子邮件地址 (_E): " - -#~ msgid "* _First Name:" -#~ msgstr "*(_F)名:" - -#~ msgid "<b>Account Information:</b>" -#~ msgstr "<b>帐号信息:</b>" - -#~ msgid "<b>Login Information:</b>" -#~ msgstr "<b>登录信息:</b>" - -#~ msgid "<small><b>Examples:</b> user@domain.com</small>" -#~ msgstr "<small><b>例如:</b> user@domain.com</small>" - -#~ msgid "<small><b>Tip:</b> Leave blank if not with a company.</small>" -#~ msgstr "<small><b>信息:</b> 如果是一个个人用户,请把它留为空。</small>" - -#~ msgid "Afghanistan" -#~ msgstr "阿富汗" - -#~ msgid "Albania" -#~ msgstr "阿尔巴尼亚" - -#~ msgid "Algeria" -#~ msgstr "阿尔及利亚" - -#~ msgid "American Samoa" -#~ msgstr "美属萨摩尔" - -#~ msgid "Andorra" -#~ msgstr "安道尔" - -#~ msgid "Angola" -#~ msgstr "安格拉" - -#~ msgid "Anguilla" -#~ msgstr "安圭拉" - -#~ msgid "Antarctica" -#~ msgstr "南极洲" - -#~ msgid "Antigua and Barbuda" -#~ msgstr "安提瓜和巴布达" - -#~ msgid "Argentina" -#~ msgstr "阿根廷" - -#~ msgid "Armenia" -#~ msgstr "亚美尼亚" - -#~ msgid "Aruba" -#~ msgstr "阿鲁巴" - -#~ msgid "Australia" -#~ msgstr "澳大利亚" - -#~ msgid "Austria" -#~ msgstr "奥地利" - -#~ msgid "Azerbaijan" -#~ msgstr "阿塞拜疆" - -#~ msgid "Bahamas" -#~ msgstr "巴哈马" - -#~ msgid "Bahrain" -#~ msgstr "巴林" - -#~ msgid "Bangladesh" -#~ msgstr "孟加拉国" - -#~ msgid "Barbados" -#~ msgstr "巴巴多斯" - -#~ msgid "Belarus" -#~ msgstr "白俄罗斯" - -#~ msgid "Belgium" -#~ msgstr "比利时" - -#~ msgid "Belize" -#~ msgstr "伯利兹" - -#~ msgid "Benin" -#~ msgstr "贝宁" - -#~ msgid "Bermuda" -#~ msgstr "百慕大" - -#~ msgid "Bhutan" -#~ msgstr "不丹" - -#~ msgid "Bolivia" -#~ msgstr "玻利维亚" - -#~ msgid "Bosnia and Herzegovina" -#~ msgstr "波斯尼亚和黑塞哥维那" - -#~ msgid "Botswana" -#~ msgstr "博茨瓦那" - -#~ msgid "Bouvet Island" -#~ msgstr "布维岛" - -#~ msgid "Brazil" -#~ msgstr "巴西" - -#~ msgid "British Indian Ocean Territory" -#~ msgstr "英联邦的印度洋领域" - -#~ msgid "Brunei Darussalam" -#~ msgstr "文莱" - -#~ msgid "Bulgaria" -#~ msgstr "保加利亚" - -#~ msgid "Burkina Faso" -#~ msgstr "布其纳法索" - -#~ msgid "Burundi" -#~ msgstr "布隆迪" - -#~ msgid "C_reate new login" -#~ msgstr "(_r)建立新登录" - -#~ msgid "Cambodia" -#~ msgstr "柬埔寨" - -#~ msgid "Cameroon" -#~ msgstr "喀麦隆" - -#~ msgid "Cape Verde" -#~ msgstr "佛得角" - -#~ msgid "Cayman Islands" -#~ msgstr "开曼群岛" - -#~ msgid "Central African Republic" -#~ msgstr "中非共和国" - -#~ msgid "Chad" -#~ msgstr "乍得" - -#~ msgid "Chile" -#~ msgstr "智利" - -#~ msgid "China" -#~ msgstr "中国" - -#~ msgid "Christmas Island" -#~ msgstr "圣诞岛" - -#~ msgid "Cocos (Keeling) Islands" -#~ msgstr "可可岛" - -#~ msgid "Colombia" -#~ msgstr "哥伦比亚" - -#~ msgid "Comoros" -#~ msgstr "科摩罗" - -#~ msgid "Congo" -#~ msgstr "刚果" - -#~ msgid "Cook Islands" -#~ msgstr "库克群岛" - -#~ msgid "Costa Rica" -#~ msgstr "哥斯达黎加" - -#~ msgid "Cote d'Ivoire" -#~ msgstr "科特迪瓦" - -#~ msgid "Create a _New Login" -#~ msgstr "创建一个新登录(_N)" - -#~ msgid "Create a new Red Hat Network login" -#~ msgstr "建立一个新的红帽网络登录" - -#~ msgid "Croatia" -#~ msgstr "克罗地亚" - -#~ msgid "Cuba" -#~ msgstr "古巴" - -#~ msgid "Cyprus" -#~ msgstr "塞浦路斯" - -#~ msgid "Czech Republic" -#~ msgstr "捷克共和国" - -#~ msgid "Denmark" -#~ msgstr "丹麦" - -#~ msgid "Djibouti" -#~ msgstr "吉布提" - -#~ msgid "Dominica" -#~ msgstr "多米尼加" - -#~ msgid "Dominican Republic" -#~ msgstr "多米尼加共和国" - -#~ msgid "East Timor" -#~ msgstr "东帝汶" - -#~ msgid "Ecuador" -#~ msgstr "厄瓜多尔" - -#~ msgid "Egypt" -#~ msgstr "埃及" - -#~ msgid "El Salvador" -#~ msgstr "萨尔瓦多" - -#~ msgid "Equatorial Guinea" -#~ msgstr "赤道几内亚" - -#~ msgid "Eritrea" -#~ msgstr "厄立特里亚" - -#~ msgid "Estonia" -#~ msgstr "爱沙尼亚" - -#~ msgid "Ethiopia" -#~ msgstr "埃塞俄比亚" - -#~ msgid "Falkland Islands (Malvinas)" -#~ msgstr "福克兰群岛" - -#~ msgid "Faroe Islands" -#~ msgstr "法罗群岛" - -#~ msgid "Fiji" -#~ msgstr "斐济" - -#~ msgid "" -#~ "Fill in the form below to create a new Red Hat login. Required " -#~ "information is marked with a '*':" -#~ msgstr "填写以下表格来创建一个新的红帽网络登录。必需的信息以 '*' 标记:" - -#~ msgid "Finland" -#~ msgstr "芬兰" - -#~ msgid "France" -#~ msgstr "法国" - -#~ msgid "France, Metropolitan" -#~ msgstr "法国,本土" - -#~ msgid "French Guiana" -#~ msgstr "法属圭亚那" - -#~ msgid "French Polynesia" -#~ msgstr "法属玻里尼西亚" - -#~ msgid "French Southern Territories" -#~ msgstr "法属南部领土" - -#~ msgid "Gabon" -#~ msgstr "加蓬" - -#~ msgid "Gambia" -#~ msgstr "甘比亚" - -#~ msgid "Georgia" -#~ msgstr "乔治亚州" - -#~ msgid "Germany" -#~ msgstr "德国" - -#~ msgid "Ghana" -#~ msgstr "加纳" - -#~ msgid "Gibraltar" -#~ msgstr "直布罗陀" - -#~ msgid "Greece" -#~ msgstr "希腊" - -#~ msgid "Greenland" -#~ msgstr "格陵兰" - -#~ msgid "Grenada" -#~ msgstr "格林纳达" - -#~ msgid "Guadeloupe" -#~ msgstr "瓜德罗普" - -#~ msgid "Guam" -#~ msgstr "关岛" - -#~ msgid "Guatemala" -#~ msgstr "瓜地马拉" - -#~ msgid "Guinea" -#~ msgstr "几内亚" - -#~ msgid "Guinea-Bissau" -#~ msgstr "几内亚比绍" - -#~ msgid "Guyana" -#~ msgstr "圭亚那" - -#~ msgid "Haiti" -#~ msgstr "海地" - -#~ msgid "Heard Island and McDonald Islands" -#~ msgstr "赫德与麦克唐纳群岛" - -#~ msgid "Honduras" -#~ msgstr "洪都拉斯" - -#~ msgid "Hong Kong" -#~ msgstr "中国香港" - -#~ msgid "Hungary" -#~ msgstr "匈牙利" - -#~ msgid "Iceland" -#~ msgstr "冰岛" - -#~ msgid "India" -#~ msgstr "印度" - -#~ msgid "Indonesia" -#~ msgstr "印度尼西亚" - -#~ msgid "Iran (Islamic Republic of)" -#~ msgstr "伊朗 (伊斯兰共和国)" - -#~ msgid "Iraq" -#~ msgstr "伊拉克" - -#~ msgid "Ireland" -#~ msgstr "爱尔兰" - -#~ msgid "Israel" -#~ msgstr "以色列" - -#~ msgid "Italy" -#~ msgstr "意大利" - -#~ msgid "Jamaica" -#~ msgstr "牙买加" - -#~ msgid "Japan" -#~ msgstr "日本" - -#~ msgid "Jordan" -#~ msgstr "约旦" - -#~ msgid "Kazakhstan" -#~ msgstr "哈萨克斯坦" - -#~ msgid "Kenya" -#~ msgstr "肯尼亚" - -#~ msgid "Kiribati" -#~ msgstr "基里巴斯" - -#~ msgid "Korea, Democratic People's Republic of" -#~ msgstr "朝鲜人民民主共和国" - -#~ msgid "Korea, Republic of" -#~ msgstr "朝鲜共和国" - -#~ msgid "Kuwait" -#~ msgstr "科威特" - -#~ msgid "Kyrgyzstan" -#~ msgstr "吉尔吉斯斯坦" - -#~ msgid "Lao People's Democratic Republic" -#~ msgstr "老挝人民民主共和国" - -#~ msgid "Latin America" -#~ msgstr "拉丁美洲" - -#~ msgid "Latvia" -#~ msgstr "拉托维亚" - -#~ msgid "Lebanon" -#~ msgstr "黎巴嫩" - -#~ msgid "Lesotho" -#~ msgstr "莱索脱" - -#~ msgid "Liberia" -#~ msgstr "利比里亚" - -#~ msgid "Libyan Arab Jamahiriya" -#~ msgstr "阿拉伯利比亚民众国" - -#~ msgid "Liechtenstein" -#~ msgstr "列支敦士登" - -#~ msgid "Lithuania" -#~ msgstr "立陶宛" - -#~ msgid "Luxembourg" -#~ msgstr "卢森堡" - -#~ msgid "Macau" -#~ msgstr "中国澳门" - -#~ msgid "Macedonia" -#~ msgstr "马塞多尼亚" - -#~ msgid "Madagascar" -#~ msgstr "马达加斯加" - -#~ msgid "Malawi" -#~ msgstr "马拉威" - -#~ msgid "Malaysia" -#~ msgstr "马来西亚" - -#~ msgid "Maldives" -#~ msgstr "马尔代夫" - -#~ msgid "Mali" -#~ msgstr "马里" - -#~ msgid "Malta" -#~ msgstr "马耳他" - -#~ msgid "Marshall Islands" -#~ msgstr "马绍尔群岛" - -#~ msgid "Martinique" -#~ msgstr "马提尼克" - -#~ msgid "Mauritania" -#~ msgstr "毛里塔尼亚" - -#~ msgid "Mauritius" -#~ msgstr "毛里求斯" - -#~ msgid "Mayotte" -#~ msgstr "马约特岛" - -#~ msgid "Mexico" -#~ msgstr "墨西哥" - -#~ msgid "Micronesia (Federated States of)" -#~ msgstr "密克罗尼西亚联邦" - -#~ msgid "Moldova" -#~ msgstr "摩尔多瓦" - -#~ msgid "Monaco" -#~ msgstr "摩纳哥" - -#~ msgid "Mongolia" -#~ msgstr "蒙古" - -#~ msgid "Montserrat" -#~ msgstr "蒙特塞拉特岛" - -#~ msgid "Morocco" -#~ msgstr "摩洛哥" - -#~ msgid "Mozambique" -#~ msgstr "莫桑比克" - -#~ msgid "Myanmar" -#~ msgstr "缅甸" - -#~ msgid "Namibia" -#~ msgstr "纳米比亚" - -#~ msgid "Nauru" -#~ msgstr "瑙鲁" - -#~ msgid "Nepal" -#~ msgstr "尼泊尔" - -#~ msgid "Netherlands" -#~ msgstr "荷兰" - -#~ msgid "Netherlands Antilles" -#~ msgstr "荷属安的列斯" - -#~ msgid "New Caledonia" -#~ msgstr "新喀里多尼亚" - -#~ msgid "New Zealand" -#~ msgstr "新西兰" - -#~ msgid "Nicaragua" -#~ msgstr "尼加拉瓜" - -#~ msgid "Niger" -#~ msgstr "尼日尔" - -#~ msgid "Nigeria" -#~ msgstr "尼日利亚" - -#~ msgid "Niue" -#~ msgstr "纽埃" - -#~ msgid "Norfolk Island" -#~ msgstr "诺福克群岛" - -#~ msgid "Northern Mariana Islands" -#~ msgstr "北马里亚纳群岛" - -#~ msgid "Norway" -#~ msgstr "挪威" - -#~ msgid "Oman" -#~ msgstr "阿曼" - -#~ msgid "Pakistan" -#~ msgstr "巴基斯坦" - -#~ msgid "Palau" -#~ msgstr "帕劳" - -#~ msgid "Panama" -#~ msgstr "巴拿马" - -#~ msgid "Papua New Guinea" -#~ msgstr "巴布亚新几内亚" - -#~ msgid "Paraguay" -#~ msgstr "巴拉圭" - -#~ msgid "Peru" -#~ msgstr "秘鲁" - -#~ msgid "Philippines" -#~ msgstr "菲律宾" - -#~ msgid "Pitcairn" -#~ msgstr "皮特开恩群岛" - -#~ msgid "Poland" -#~ msgstr "波兰" - -#~ msgid "Portugal" -#~ msgstr "葡萄牙" - -#~ msgid "Puerto Rico" -#~ msgstr "波多黎各" - -#~ msgid "Qatar" -#~ msgstr "卡塔尔" - -#~ msgid "" -#~ "Red Hat Logins and Passwords must be at least 5 alphanumeric characters" -#~ msgstr "Red Hat 登录名和密码必须至少5个字母或数字" - -#~ msgid "Reunion" -#~ msgstr "留尼汪岛" - -#~ msgid "Romania" -#~ msgstr "罗马尼亚" - -#~ msgid "Russian Federation" -#~ msgstr "俄罗斯联邦" - -#~ msgid "Rwanda" -#~ msgstr "卢旺达" - -#~ msgid "Saint Helena" -#~ msgstr "圣赫勒那" - -#~ msgid "Saint Kitts and Nevis" -#~ msgstr "圣基茨和尼维斯联邦" - -#~ msgid "Saint Lucia" -#~ msgstr "圣卢西亚" - -#~ msgid "Saint Pierre and Miquelon " -#~ msgstr "圣皮埃尔和密克隆" - -#~ msgid "Saint Vincent and the Grenadines" -#~ msgstr "圣文森特和格林纳丁斯" - -#~ msgid "Samoa" -#~ msgstr "萨摩亚" - -#~ msgid "San Marino" -#~ msgstr "圣马利诺" - -#~ msgid "Sao Tome and Principe" -#~ msgstr "圣多美与普林西比" - -#~ msgid "Saudi Arabia" -#~ msgstr "沙特阿拉伯" - -#~ msgid "Senegal" -#~ msgstr "塞内加尔" - -#~ msgid "Seychelles" -#~ msgstr "塞舌尔" - -#~ msgid "Sierra Leone" -#~ msgstr "塞拉利昂" - -#~ msgid "Singapore" -#~ msgstr "新加坡" - -#~ msgid "Slovakia" -#~ msgstr "斯洛伐克" - -#~ msgid "Slovenia" -#~ msgstr "斯洛文尼亚" - -#~ msgid "Solomon Islands" -#~ msgstr "所罗门群岛" - -#~ msgid "Somalia" -#~ msgstr "索马里" - -#~ msgid "South Africa" -#~ msgstr "南非" - -#~ msgid "South Georgia and the South Sandwich Island" -#~ msgstr "南乔治亚岛和南桑德韦奇岛" - -#~ msgid "Spain" -#~ msgstr "西班牙" - -#~ msgid "Sri Lanka" -#~ msgstr "斯里兰卡" - -#~ msgid "Sudan" -#~ msgstr "苏丹" - -#~ msgid "Suriname" -#~ msgstr "苏里南" - -#~ msgid "Svalbard and Jan Mayen Islands" -#~ msgstr "斯马尔巴特和扬马延岛" - -#~ msgid "Swaziland" -#~ msgstr "斯威士兰" - -#~ msgid "Sweden" -#~ msgstr "瑞典" - -#~ msgid "Switzerland" -#~ msgstr "瑞士" - -#~ msgid "Syrian Arab Republic" -#~ msgstr "叙利亚阿拉伯共和国" - -#~ msgid "Taiwan" -#~ msgstr "台湾" - -#~ msgid "Tajikistan" -#~ msgstr "塔吉克斯坦" - -#~ msgid "Tanzania, United Republic of" -#~ msgstr "坦赞尼亚联合共和国" - -#~ msgid "Thailand" -#~ msgstr "泰国" - -#~ msgid "Togo" -#~ msgstr "多哥" - -#~ msgid "Tokelau" -#~ msgstr "托克劳" - -#~ msgid "Tonga" -#~ msgstr "汤加" - -#~ msgid "Trinidad and Tobago" -#~ msgstr "特立尼达和多巴哥" - -#~ msgid "Tunisia" -#~ msgstr "突尼斯" - -#~ msgid "Turkey" -#~ msgstr "土耳其" - -#~ msgid "Turkmenistan" -#~ msgstr "土库曼斯坦" - -#~ msgid "Turks and Caicos Islands" -#~ msgstr "特克斯群岛与凯科斯群岛" - -#~ msgid "Tuvalu" -#~ msgstr "图瓦卢" - -#~ msgid "Uganda" -#~ msgstr "乌干达" - -#~ msgid "Ukraine" -#~ msgstr "乌克兰" - -#~ msgid "United Arab Emirates" -#~ msgstr "阿拉伯联合酋长国" - -#~ msgid "United Kingdom" -#~ msgstr "英国" - -#~ msgid "United States Minor Outlying Islands" -#~ msgstr "美属群岛" - -#~ msgid "Uruguay" -#~ msgstr "乌拉圭" - -#~ msgid "Uzbekistan" -#~ msgstr "乌兹别克斯坦" - -#~ msgid "Vanuatu" -#~ msgstr "瓦努阿图" - -#~ msgid "Vatican City State (Holy See)" -#~ msgstr "梵蒂冈" - -#~ msgid "Venezuela" -#~ msgstr "委内瑞拉" - -#~ msgid "Viet Nam" -#~ msgstr "越南" - -#~ msgid "Virgin Islands (British)" -#~ msgstr "维尔京群岛 (英属)" - -#~ msgid "Virgin Islands (U.S.)" -#~ msgstr "维尔京群岛 (美属)" - -#~ msgid "Wallis and Futuna Islands" -#~ msgstr "瓦里斯和富土那群岛" - -#~ msgid "Western Sahara" -#~ msgstr "西部撒哈拉" - -#~ msgid "Yemen" -#~ msgstr "也门" - -#~ msgid "Yugoslavia" -#~ msgstr "南斯拉夫" - -#~ msgid "Zaire" -#~ msgstr "扎伊尔" - -#~ msgid "Zambia" -#~ msgstr "赞比亚" - -#~ msgid "Zimbabwe" -#~ msgstr "津巴布韦"
commit c454b5c47e9cb7f1a0faa9e3ced6419c38663824 Author: ypoyarko ypoyarko@fedoraproject.org Date: Mon Jun 14 22:21:05 2010 +0000
l10n: Updates to Russian (ru) translation
Transmitted-via: Transifex (translate.fedoraproject.org)
diff --git a/backend/po/ru.po b/backend/po/ru.po index e5543f7..e868937 100644 --- a/backend/po/ru.po +++ b/backend/po/ru.po @@ -2,19 +2,20 @@ # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # +# Yulia ypoyarko@redhat.com, 2010. msgid "" msgstr "" "Project-Id-Version: ru\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-05-06 16:29+0200\n" -"PO-Revision-Date: 2010-05-06 11:54+1000\n" +"PO-Revision-Date: 2010-06-15 08:04\n" "Language-Team: Russian\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Generator: KBabel 1.11.4\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%" -"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" +"Last-Translator: Yulia ypoyarko@redhat.com\n"
#: ../server/rhnSQL/sql_lib.py:81 ../server/handlers/xmlrpc/up2date.py:540 #, python-format @@ -39,7 +40,7 @@ msgstr "" #: ../server/rhnPackage.py:203 ../server/rhnPackage.py:291 #: ../server/rhnPackage.py:357 msgid "Package not found" -msgstr "" +msgstr "Пакет не найден"
#: ../server/apacheAuth.py:55 #, python-format @@ -49,16 +50,16 @@ msgstr "" #: ../server/apacheAuth.py:71 #, python-format msgid "Sent proxy signature %s does not match ours %s." -msgstr "" +msgstr "Отправленная подпись прокси-сервера %s не соответствует %s."
#: ../server/apacheAuth.py:102 msgid "declined proxy authentication" -msgstr "" +msgstr "отказано в аутентификации прокси"
#: ../server/apacheRequest.py:47 #, python-format msgid "Invalid request received (%s)." -msgstr "" +msgstr "Получен недопустимый запрос (%s)."
#: ../server/apacheRequest.py:105 #, python-format @@ -66,6 +67,8 @@ msgid "" "IMPORTANT MESSAGE FOLLOWS:\n" "%s" msgstr "" +"ВАЖНО:\n" +"%s"
#: ../server/apacheRequest.py:130 #, python-format @@ -77,12 +80,12 @@ msgstr "" #: ../server/apacheRequest.py:556 #, python-format msgid "Invalid URI %s" -msgstr "" +msgstr "Недопустимый URI %s"
#. ignore ORA-20277: (product_no_service) #: ../server/rhnServer/server_lib.py:66 msgid "Attempt to register a system failed" -msgstr "" +msgstr "Не удалось зарегистрировать систему"
#: ../server/rhnServer/server_token.py:84 #, python-format @@ -91,12 +94,12 @@ msgstr ""
#: ../server/rhnServer/server_token.py:86 msgid "Conflicting base channels" -msgstr "" +msgstr "Конфликт основных каналов"
#: ../server/rhnServer/server_token.py:210 #, python-format msgid "Failed to add server to group %s" -msgstr "" +msgstr "Не удалось добавить сервер в группу %s"
#: ../server/rhnServer/server_token.py:517 #, python-format @@ -104,9 +107,8 @@ msgid "Maximum usage count of %s reached" msgstr ""
#: ../server/rhnServer/server_token.py:648 -msgid "" -"Registration failed: RHN Software Management service entitlements exhausted" -msgstr "" +msgid "Registration failed: RHN Software Management service entitlements exhausted" +msgstr "Ошибка регистрации: недостаточно полномочий управления RHN"
#: ../server/rhnServer/server_token.py:762 msgid "" @@ -117,7 +119,7 @@ msgstr "" #: ../server/rhnServer/server_token.py:840 #, python-format msgid "Could not find token '%s'" -msgstr "" +msgstr "Токен «%s» не найден"
#. Cannot use activation keys from different orgs #: ../server/rhnServer/server_token.py:872 @@ -127,7 +129,7 @@ msgstr "" #. Two tokens with different kickstart sessions #: ../server/rhnServer/server_token.py:882 msgid "Kickstart session mismatch" -msgstr "" +msgstr "Несоответствие сеанса кикстарта"
#: ../server/rhnServer/server_token.py:902 msgid "Stacking of re-registration tokens is not supported" @@ -136,11 +138,11 @@ msgstr "" #: ../server/rhnServer/server_class.py:98 #, python-format msgid "Architecture `%s' is not supported" -msgstr "" +msgstr "Архитектура «%s» не поддерживается"
#: ../server/rhnUser.py:382 ../server/rhnUser.py:385 msgid "Invalid username/password combination" -msgstr "" +msgstr "Неверная комбинация имени и пароля"
#. nope, not reserved either #: ../server/rhnUser.py:543 @@ -151,7 +153,7 @@ msgstr "" #. New accounts have to specify an e-mail address #: ../server/rhnUser.py:549 msgid "E-mail address not specified" -msgstr "" +msgstr "Не указан электронный адрес"
#. wrong organization #. Invalid org password @@ -162,22 +164,22 @@ msgstr "" #: ../server/rhnUser.py:614 #, python-format msgid "User `%s' not a member of organization %s" -msgstr "" +msgstr "Пользователь «%s» не входит в состав организации %s"
#: ../server/rhnUser.py:642 #, python-format msgid "username should be at least %d characters" -msgstr "" +msgstr "имя пользователя должно содержать не меньше %d символов"
#: ../server/rhnUser.py:645 #, python-format msgid "username should be less than %d characters" -msgstr "" +msgstr "имя пользователя должно содержать не больше %d символов"
#: ../server/rhnUser.py:656 #, python-format msgid "username = `%s', invalid character `%s'" -msgstr "" +msgstr "имя пользователя — «%s», недопустимый символ — «%s»"
#: ../server/rhnUser.py:674 #, python-format @@ -194,27 +196,27 @@ msgstr "" #: ../server/rhnUser.py:762 #, python-format msgid "password must be at least %d characters" -msgstr "" +msgstr "пароль должен содержать не меньше %d символов"
#: ../server/rhnUser.py:765 #, python-format msgid "Password must be shorter than %d characters" -msgstr "" +msgstr "пароль должен содержать не больше %d символов"
#: ../server/rhnUser.py:783 #, python-format msgid "password contains character `%s'" -msgstr "" +msgstr "пароль содержит символ «%s»"
#: ../server/rhnUser.py:790 #, python-format msgid "username should be at least %d characters long" -msgstr "" +msgstr "имя пользователя должно содержать не меньше %d символов"
#: ../server/rhnUser.py:801 #, python-format msgid "Cannot register usernames ending with %s" -msgstr "" +msgstr "Не удалось зарегистрировать имена, заканчивающиеся на %s"
#: ../server/rhnChannel.py:1967 #, python-format @@ -234,7 +236,7 @@ msgstr "" #: ../server/rhnChannel.py:1987 #, python-format msgid "Insufficient subscription permissions for release (%s, %s" -msgstr "" +msgstr "Недостаточные разрешения подписки (%s, %s"
#. Various messages that can be reused #. @@ -243,7 +245,7 @@ msgstr "" #: ../server/rhnChannel.py:2258 ../server/rhnChannel.py:2269 #: ../server/rhnChannel.py:2284 ../server/rhnChannel.py:2292 msgid "System Registered but Inactive" -msgstr "" +msgstr "Система зарегистрирована, но неактивна"
#: ../server/rhnChannel.py:2259 #, python-format @@ -440,8 +442,7 @@ msgstr ""
#: ../server/importlib/userAuth.py:146 #, python-format -msgid "" -"You are not allowed to manage channel %s, or that channel does not exist" +msgid "You are not allowed to manage channel %s, or that channel does not exist" msgstr ""
#: ../common/rhnException.py:43 @@ -820,8 +821,7 @@ msgid "Unable to entitle system" msgstr ""
#: ../common/rhnException.py:201 -msgid "" -"Registration token unable to entitle system: maximum membership exceeded" +msgid "Registration token unable to entitle system: maximum membership exceeded" msgstr ""
#. 100-109: e-mail and uuid related faults @@ -1098,15 +1098,15 @@ msgstr ""
#: ../common/rhnException.py:313 msgid "File contains binary data" -msgstr "" +msgstr "Файл содержит двоичные данные"
#: ../common/rhnException.py:314 msgid "Configuration channel is not empty" -msgstr "" +msgstr "Непустой канал конфигурации"
#: ../common/rhnException.py:315 msgid "Permission error" -msgstr "" +msgstr "Ошибка разрешений"
#: ../common/rhnException.py:316 msgid "Content missing for configuration file" @@ -1118,11 +1118,11 @@ msgstr ""
#: ../common/rhnException.py:318 msgid "Configuration channel does not exist" -msgstr "" +msgstr "Канал конфигурации не существует"
#: ../common/rhnException.py:319 msgid "Configuration channel already exists" -msgstr "" +msgstr "Канал конфигурации уже существует"
#: ../common/rhnException.py:320 msgid "File missing from configuration channel" @@ -1142,7 +1142,7 @@ msgstr ""
#: ../common/rhnException.py:324 msgid "Full path of file must be specified" -msgstr "" +msgstr "Необходимо указать абсолютный путь к файлу"
#. 5000 - 5099: entitlement mapper errors #: ../common/rhnException.py:327 @@ -1155,11 +1155,11 @@ msgstr ""
#: ../common/rhnException.py:329 msgid "Invalid user role" -msgstr "" +msgstr "Недопустимая роль пользователя"
#: ../common/rhnException.py:330 msgid "Invalid server group" -msgstr "" +msgstr "Недопустимая группа серверов"
#: ../common/rhnException.py:331 msgid "Invalid channel family" @@ -1181,6 +1181,8 @@ msgid "" "Error Message:\n" " %s\n" msgstr "" +"Сообщение:\n" +" %s\n"
#: ../common/rhnException.py:431 #, python-format @@ -1196,3 +1198,4 @@ msgstr "" #, python-format msgid "Explanation: %s" msgstr "" +
commit a124fd8e3259e3af2f2e0ccaa25062a52d5f4371 Author: Justin Sherrill jsherril@redhat.com Date: Mon Jun 14 17:28:20 2010 -0400
576314 - fix for errata being added to the email queue multiple times before it can be run
diff --git a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml index e6514d7..2638cee 100644 --- a/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml +++ b/java/code/src/com/redhat/rhn/common/db/datasource/xml/Task_queries.xml @@ -111,6 +111,10 @@ SELECT DISTINCT FROM web_customer wc, rhnChannelErrata CE WHERE CE.errata_id = :errata_id + and not exists (select q2.errata_id + from rhnErrataNotificationQueue Q2 + where Q2.errata_id = :errata_id and + Q2.org_id = wc.id) </query> </write-mode>
commit 81a159731c75763d1c2eacf31055df3eb14fa9fc Author: Miroslav Suchý msuchy@redhat.com Date: Mon Jun 14 16:50:02 2010 +0200
Automatic commit of package [yum-rhn-plugin] release [1.1.3-1].
diff --git a/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec b/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec index 7afb4e6..15f0141 100644 --- a/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec +++ b/client/rhel/yum-rhn-plugin/yum-rhn-plugin.spec @@ -1,6 +1,6 @@ Summary: RHN support for yum Name: yum-rhn-plugin -Version: 1.1.2 +Version: 1.1.3 Release: 1%{?dist} License: GPLv2 Group: System Environment/Base @@ -53,6 +53,19 @@ rm -rf $RPM_BUILD_ROOT %doc LICENSE
%changelog +* Mon Jun 14 2010 Miroslav Suchý msuchy@redhat.com 1.1.3-1 +- 598323 - yumex do not set version (msuchy@redhat.com) +- l10n: Updates to Chinese (China) (zh_CN) translation + (leahliu@fedoraproject.org) +- l10n: Updates to Spanish (Castilian) (es) translation + (gguerrer@fedoraproject.org) +- l10n: Updates to Russian (ru) translation (ypoyarko@fedoraproject.org) +- cleanup - removing translation file, which does not match any language code + (msuchy@redhat.com) +- update po files for yum-rhn-plugin (msuchy@redhat.com) +- l10n: Updates to German (de) translation (ttrinks@fedoraproject.org) +- l10n: Updates to Polish (pl) translation (raven@fedoraproject.org) + * Wed May 05 2010 Justin Sherrill jsherril@redhat.com 1.1.2-1 - 589120 - fixing issue with traceback from rhn_chec "no attribute cfg" (jsherril@redhat.com) diff --git a/rel-eng/packages/yum-rhn-plugin b/rel-eng/packages/yum-rhn-plugin index 191c38b..b4664b0 100644 --- a/rel-eng/packages/yum-rhn-plugin +++ b/rel-eng/packages/yum-rhn-plugin @@ -1 +1 @@ -1.1.2-1 client/rhel/yum-rhn-plugin/ +1.1.3-1 client/rhel/yum-rhn-plugin/
commit f3fbab86131955dfc5fc162aed47c8da474f0e5c Author: Miroslav Suchý msuchy@redhat.com Date: Mon Jun 14 16:46:18 2010 +0200
598323 - yumex do not set version
addressing: YUM: Loaded plugins: multithread, rhnplugin YUM: Traceback (most recent call last): YUM: File "/usr/share/yumex/yum_childtask.py", line 61, in <module> YUM: my = YumServer(debuglevel, plugins, offline, repos) YUM: File "/usr/lib/python2.6/site-packages/yumexbackend/yum_server.py", line 158, in __init__ YUM: self.doLock() YUM: File "/usr/lib/python2.6/site-packages/yumexbackend/yum_server.py", line 226, in doLock YUM: yum.YumBase.doLock(self) YUM: File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 1377, in doLock YUM: if self.conf.uid != 0: YUM: File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 778, in <lambda> YUM: conf = property(fget=lambda self: self._getConfig(), YUM: File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 311, in _getConfig YUM: self.plugins.run('init') YUM: File "/usr/lib/python2.6/site-packages/yum/plugins.py", line 177, in run YUM: func(conduitcls(self, self.base, conf, **kwargs)) YUM: File "/usr/share/yum-plugins/rhnplugin.py", line 110, in init_hook YUM: if opts.version or (len(commands) == 0): YUM: AttributeError: Values instance has no attribute 'version'
diff --git a/client/rhel/yum-rhn-plugin/rhnplugin.py b/client/rhel/yum-rhn-plugin/rhnplugin.py index c7ab606..595b1ca 100644 --- a/client/rhel/yum-rhn-plugin/rhnplugin.py +++ b/client/rhel/yum-rhn-plugin/rhnplugin.py @@ -107,7 +107,7 @@ def init_hook(conduit): "\n" + RHN_DISABLED) return
- if opts.version or (len(commands) == 0): + if (hasattr(opts,'version') and opts.version) or (len(commands) == 0): rhn_enabled = False conduit.info(10, _("Either --version, or no commands entered") + "\n" + RHN_DISABLED)
commit b7a9bfb131d18432763bff021ccd1f85e664e9ac Author: Shannon Hughes shughes@redhat.com Date: Mon Jun 14 09:47:36 2010 -0400
bumping up heap to 512m for jsp compiles
diff --git a/java/build.xml b/java/build.xml index a88c955..fbee15a 100644 --- a/java/build.xml +++ b/java/build.xml @@ -608,7 +608,7 @@ target="1.5" deprecation="${deprecation}" fork="yes" - memoryMaximumSize="256m" + memoryMaximumSize="512m" classpathref="alljars"> <src path="${build.dir}/jsp-temp"/> </javac>
commit 11bb67104f1163479915deb0b82d115f5c4a0a8d Author: Shannon Hughes shughes@redhat.com Date: Mon Jun 14 09:43:22 2010 -0400
bumping up build heap to 512m
diff --git a/java/build.xml b/java/build.xml index 5f903e4..a88c955 100644 --- a/java/build.xml +++ b/java/build.xml @@ -456,7 +456,7 @@ nowarn="${nowarn}" encoding="utf-8" fork="yes" - memoryMaximumSize="256m" + memoryMaximumSize="512m" classpathref="buildjars" > <src> <path location="${build.dir}/src" />
commit d93e338a8649dfe18718b9302f675eed787708f3 Author: Milan Zazrivec mzazrivec@redhat.com Date: Thu Jun 10 10:47:57 2010 +0200
601683 - properly import get_computer_info routine
diff --git a/client/rhel/rhn-client-tools/src/up2date_client/hardware.py b/client/rhel/rhn-client-tools/src/up2date_client/hardware.py index 34109b4..8355305 100644 --- a/client/rhel/rhn-client-tools/src/up2date_client/hardware.py +++ b/client/rhel/rhn-client-tools/src/up2date_client/hardware.py @@ -33,7 +33,7 @@ import dmidecode import up2dateLog
try: # F13 and EL6 - from hardware_gudev import get_devices + from hardware_gudev import get_devices, get_computer_info using_gudev = 1 except ImportError: from hardware_hal import check_hal_dbus_status, get_hal_computer, read_hal @@ -581,9 +581,9 @@ def get_hal_system_and_smbios(): else: computer = get_hal_computer() props = computer.GetAllProperties() - except: + except Exception, e: log = up2dateLog.initLog() - msg = "Error reading system and smbios information: %s\n" % (sys.exc_type) + msg = "Error reading system and smbios information: %s\n" % (e) log.log_debug(msg) return {} system_and_smbios = {}
commit a36bd6133813cdea36c60f7da69370ca83ee8a1c Author: Justin Sherrill jsherril@redhat.com Date: Wed Jun 9 22:26:34 2010 -0400
Automatic commit of package [spacewalk-backend] release [1.1.21-1].
diff --git a/backend/spacewalk-backend.spec b/backend/spacewalk-backend.spec index 3347bfb..4f57d4a 100644 --- a/backend/spacewalk-backend.spec +++ b/backend/spacewalk-backend.spec @@ -8,7 +8,7 @@ Name: spacewalk-backend Summary: Common programs needed to be installed on the Spacewalk servers/proxies Group: Applications/Internet License: GPLv2 -Version: 1.1.20 +Version: 1.1.21 Release: 1%{?dist} URL: https://fedorahosted.org/spacewalk Source0: https://fedorahosted.org/releases/s/p/spacewalk/%%7Bname%7D-%%7Bversion%7D.t... @@ -631,6 +631,12 @@ rm -f %{rhnconf}/rhnSecret.py*
# $Id$ %changelog +* Wed Jun 09 2010 Justin Sherrill jsherril@redhat.com 1.1.21-1 +- 600323 - fixing checksums KeyError with rhnpush and channel association + (jsherril@redhat.com) +- fix broken solaris package downloads +- 600323 - fixing checksums KeyError with rhnpush (jsherril@redhat.com) + * Tue Jun 08 2010 Michael Mraka michael.mraka@redhat.com 1.1.20-1 - more exporter code cleanup - 589524 - select packages, erratas and kickstart trees according to import diff --git a/rel-eng/packages/spacewalk-backend b/rel-eng/packages/spacewalk-backend index e29d7aa..2b35ab5 100644 --- a/rel-eng/packages/spacewalk-backend +++ b/rel-eng/packages/spacewalk-backend @@ -1 +1 @@ -1.1.20-1 backend/ +1.1.21-1 backend/
commit 76ca64fd8d40383d4dee4577ce03cc78d8607e1d Author: leahliu leahliu@fedoraproject.org Date: Thu Jun 10 02:11:11 2010 +0000
l10n: Updates to Chinese (China) (zh_CN) translation
Transmitted-via: Transifex (translate.fedoraproject.org)
diff --git a/client/rhel/yum-rhn-plugin/po/zh_CN.po b/client/rhel/yum-rhn-plugin/po/zh_CN.po index efc3eda..c82244d 100644 --- a/client/rhel/yum-rhn-plugin/po/zh_CN.po +++ b/client/rhel/yum-rhn-plugin/po/zh_CN.po @@ -1,22 +1,24 @@ -# translation of zh_CN.po to +# translation of spacewalk.yum-rhn-plugin.po to Wei Liu +# translation of zh_CN.po to # translation of zh_CN.po to # This file is distributed under the same license as the PACKAGE package. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# # Tony Fu tfu@redhat.com, 2006. # Xi Huang xhuang@redhat.com, 2006. -# +# Leah Liu lliu@redhat.com, 2010. msgid "" msgstr "" -"Project-Id-Version: zh_CN\n" +"Project-Id-Version: spacewalk.yum-rhn-plugin\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-05-06 16:28+0200\n" -"PO-Revision-Date: 2006-11-30 17:57+1000\n" -"Last-Translator: Xi Huang xhuang@redhat.com\n" -"Language-Team: zh@li.org\n" +"PO-Revision-Date: 2010-06-10 12:08+1000\n" +"Last-Translator: Leah Liu lliu@redhat.com\n" +"Language-Team: Wei Liu\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Generator: KBabel 1.9.1\n" +"X-Generator: KBabel 1.11.4\n"
#: ../rhnplugin.py:47 msgid "There was an error communicating with RHN." @@ -31,7 +33,7 @@ msgstr "RHN 支持将被禁用。" msgid "" "*Note* Red Hat Network repositories are not listed below. You must run this " "command as root to access RHN repositories." -msgstr "" +msgstr "*备注* 以下没有列出红帽网络程序库。您必须以根用户身份运行这个命令方可进入 RHN 程序库。"
#: ../rhnplugin.py:95 msgid "There was an error parsing the RHN proxy settings." @@ -39,7 +41,7 @@ msgstr "RHN 代理服务器设置解释错误。"
#: ../rhnplugin.py:106 msgid "Cleaning" -msgstr "" +msgstr "清除中"
#: ../rhnplugin.py:112 msgid "Either --version, or no commands entered" @@ -58,9 +60,8 @@ msgid "This system is not subscribed to any channels." msgstr "这个系统没有订阅到任何频道。"
#: ../rhnplugin.py:139 -msgid "" -"This system may not be a registered to RHN. SystemId could not be acquired.\n" -msgstr "" +msgid "This system may not be a registered to RHN. SystemId could not be acquired.\n" +msgstr "这个系统可能没有在 RHN 注册。无法获得 SystemId。\n"
#: ../rhnplugin.py:213 msgid "Package profile information could not be sent." @@ -71,13 +72,14 @@ msgstr "软件包配置档案信息无法发送。" #. bz: 438175 #: ../rhnplugin.py:220 msgid "Error Message:" -msgstr "" +msgstr "出错信息:"
#: ../rhnplugin.py:221 msgid "Please run rhn_register as root on this client" -msgstr "" +msgstr "请在客户端中以根用户身份运行 rhn_register"
#: ../rhnplugin.py:298 #, python-format msgid "Missing required login information for RHN: %s" msgstr "缺少 RHN: %s 所要求的登录信息" +
commit 2dbd5c022449f548a162639652821e119a5553ce Author: Justin Sherrill jsherril@redhat.com Date: Wed Jun 9 19:38:02 2010 -0400
600323 - fixing checksums KeyError with rhnpush and channel association
diff --git a/backend/server/importlib/packageImport.py b/backend/server/importlib/packageImport.py index 8d0d1c4..dd0640a 100644 --- a/backend/server/importlib/packageImport.py +++ b/backend/server/importlib/packageImport.py @@ -45,6 +45,10 @@ class ChannelPackageSubscription(GenericPackageImport): # Processes the package batch to a form more suitable for database # operations for package in self.batch: + # if package object doesn't have multiple checksums (like satellite-sync objects) + # then let's fake it + if not package.has_key('checksums'): + package['checksums'] = {package['checksum_type']: package['checksum']} if not isinstance(package, IncompletePackage): raise TypeError("Expected an IncompletePackage instance, " "got %s" % package.__class__.__name__)
commit c26badc4599ecf076c364bf70b44b3ace0242178 Author: Justin Sherrill jsherril@redhat.com Date: Wed Jun 9 19:30:13 2010 -0400
fix broken solaris package downloads, due to much needed and urgent change of package parsing going from NVREA to NEVRA from january (commit 1db6ede50c55b44bc464119d9c29d4bc1b9c4df7 & 18b077ab79d7b19df0f29434156feca9b646e4bd)
diff --git a/backend/server/rhnPackage.py b/backend/server/rhnPackage.py index 5b1e3a6..8821159 100644 --- a/backend/server/rhnPackage.py +++ b/backend/server/rhnPackage.py @@ -33,7 +33,8 @@ def get_package_path(server_id, pkg_spec, channel): log_debug(3, server_id, pkg_spec, channel) if isinstance(pkg_spec, ListType): pkg = pkg_spec[:4] - pkg.insert(3, None) + #Insert EPOCH + pkg.insert(1, None) else: pkg = parseRPMFilename(pkg_spec) if pkg is None:
commit 5fdb54728df2c9bdad02eb1dc739e91b07988374 Author: Partha Aji paji@redhat.com Date: Wed Jun 9 18:13:56 2010 -0400
Removed an unnecessary abstraction for VirtEntitlements
diff --git a/java/code/src/com/redhat/rhn/frontend/action/systems/entitlements/VirtualizationEntitlementsAction.java b/java/code/src/com/redhat/rhn/frontend/action/systems/entitlements/VirtualizationEntitlementsAction.java index 6e564e8..e4d03fa 100644 --- a/java/code/src/com/redhat/rhn/frontend/action/systems/entitlements/VirtualizationEntitlementsAction.java +++ b/java/code/src/com/redhat/rhn/frontend/action/systems/entitlements/VirtualizationEntitlementsAction.java @@ -16,7 +16,6 @@ package com.redhat.rhn.frontend.action.systems.entitlements;
import com.redhat.rhn.domain.user.User; import com.redhat.rhn.frontend.struts.RequestContext; -import com.redhat.rhn.manager.system.VirtEntitlementsManagerImpl; import com.redhat.rhn.manager.system.VirtualizationEntitlementsManager;
import org.apache.struts.action.ActionForm; @@ -56,13 +55,13 @@ public class VirtualizationEntitlementsAction extends MappingDispatchAction { */ public ActionForward listGuestLimited(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - VirtualizationEntitlementsManager entitlementsMgr = - new VirtEntitlementsManagerImpl(); + request.setAttribute("parentUrl", request.getRequestURI()); RequestContext rctx = new RequestContext(request); User user = rctx.getLoggedInUser(); request.setAttribute(PAGELIST, - entitlementsMgr.findGuestLimitedHostsByOrg(user.getOrg())); + VirtualizationEntitlementsManager.getInstance(). + findGuestLimitedHostsByOrg(user.getOrg())); return mapping.findForward("success"); }
@@ -78,13 +77,13 @@ public class VirtualizationEntitlementsAction extends MappingDispatchAction { */ public ActionForward listGuestUnlimited(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - VirtualizationEntitlementsManager entitlementsMgr = - new VirtEntitlementsManagerImpl(); + request.setAttribute("parentUrl", request.getRequestURI()); RequestContext context = new RequestContext(request); User user = context.getLoggedInUser(); request.setAttribute(PAGELIST, - entitlementsMgr.findGuestUnlimitedHostsByOrg(user.getOrg())); + VirtualizationEntitlementsManager.getInstance(). + findGuestUnlimitedHostsByOrg(user.getOrg()));
return mapping.findForward("success"); } @@ -101,13 +100,13 @@ public class VirtualizationEntitlementsAction extends MappingDispatchAction { */ public ActionForward listPhysicalHosts(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { - VirtualizationEntitlementsManager entitlementsMgr = - new VirtEntitlementsManagerImpl(); + request.setAttribute("parentUrl", request.getRequestURI()); RequestContext rctx = new RequestContext(request); User user = rctx.getLoggedInUser(); request.setAttribute(PAGELIST, - entitlementsMgr.findGuestsWithoutHostsByOrg(user.getOrg())); + VirtualizationEntitlementsManager.getInstance(). + findGuestsWithoutHostsByOrg(user.getOrg())); return mapping.findForward("success"); } } diff --git a/java/code/src/com/redhat/rhn/manager/system/VirtEntitlementsManagerImpl.java b/java/code/src/com/redhat/rhn/manager/system/VirtEntitlementsManagerImpl.java deleted file mode 100644 index e766862..0000000 --- a/java/code/src/com/redhat/rhn/manager/system/VirtEntitlementsManagerImpl.java +++ /dev/null @@ -1,67 +0,0 @@ -/** - * 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.manager.system; - -import com.redhat.rhn.domain.org.Org; -import com.redhat.rhn.domain.server.ServerFactory; -import com.redhat.rhn.domain.server.VirtualInstanceFactory; - -import java.util.LinkedList; -import java.util.List; - - -/** - * VirtEntitlementsManagerImpl - * - * @version $Rev$ - */ -public class VirtEntitlementsManagerImpl implements VirtualizationEntitlementsManager { - - private VirtualInstanceFactory virtualInstanceDAO; - - /** - * Initializes the manager. - */ - public VirtEntitlementsManagerImpl() { - virtualInstanceDAO = new VirtualInstanceFactory(); - } - - /** - * {@inheritDoc} - */ - public List findGuestUnlimitedHostsByOrg(Org org) { - return ServerFactory.findVirtPlatformHostsByOrg(org); - } - - /** - * {@inheritDoc} - */ - public List findGuestLimitedHostsByOrg(Org org) { - return ServerFactory.findVirtHostsExceedingGuestLimitByOrg(org); - } - - /** - * {@inheritDoc} - */ - public List findGuestsWithoutHostsByOrg(Org org) { - List guestsWithoutHosts = new LinkedList(); - - guestsWithoutHosts.addAll(virtualInstanceDAO.findGuestsWithNonVirtHostByOrg(org)); - guestsWithoutHosts.addAll(virtualInstanceDAO.findGuestsWithoutAHostByOrg(org)); - - return guestsWithoutHosts; - } - -} diff --git a/java/code/src/com/redhat/rhn/manager/system/VirtualizationEntitlementsManager.java b/java/code/src/com/redhat/rhn/manager/system/VirtualizationEntitlementsManager.java index 460775b..b18368c 100644 --- a/java/code/src/com/redhat/rhn/manager/system/VirtualizationEntitlementsManager.java +++ b/java/code/src/com/redhat/rhn/manager/system/VirtualizationEntitlementsManager.java @@ -15,7 +15,10 @@ package com.redhat.rhn.manager.system;
import com.redhat.rhn.domain.org.Org; +import com.redhat.rhn.domain.server.ServerFactory; +import com.redhat.rhn.domain.server.VirtualInstanceFactory;
+import java.util.LinkedList; import java.util.List;
@@ -23,7 +26,21 @@ import java.util.List; * VirtualizationEntitlementsService * @version $Rev$ */ -public interface VirtualizationEntitlementsManager { +public class VirtualizationEntitlementsManager { + private static final VirtualizationEntitlementsManager INSTANCE = + new VirtualizationEntitlementsManager(); + /** + * Initializes the manager. + */ + private VirtualizationEntitlementsManager() { + } + + /** + * @return an instance + */ + public static VirtualizationEntitlementsManager getInstance() { + return INSTANCE; + }
/** * Queries an org for host systems, having the 'Unlimited Virtualization' entitlement, @@ -35,7 +52,9 @@ public interface VirtualizationEntitlementsManager { * * @see com.redhat.rhn.domain.server.HostAndGuestCountView */ - List findGuestUnlimitedHostsByOrg(Org org); + public List findGuestUnlimitedHostsByOrg(Org org) { + return ServerFactory.findVirtPlatformHostsByOrg(org); + }
/** * Queries an org for host systems, having the 'Limited Virtualization' entitlement that @@ -47,7 +66,9 @@ public interface VirtualizationEntitlementsManager { * * @see com.redhat.rhn.domain.server.HostAndGuestCountView */ - List findGuestLimitedHostsByOrg(Org org); + public List findGuestLimitedHostsByOrg(Org org) { + return ServerFactory.findVirtHostsExceedingGuestLimitByOrg(org); + }
/** * Queries an org for guest systems whose hosts either do not have any virtualization @@ -59,6 +80,14 @@ public interface VirtualizationEntitlementsManager { * * @see com.redhat.rhn.domain.server.GuestAndNonVirtHostView */ - List findGuestsWithoutHostsByOrg(Org org); + public List findGuestsWithoutHostsByOrg(Org org) { + List guestsWithoutHosts = new LinkedList(); + guestsWithoutHosts.addAll(VirtualInstanceFactory.getInstance(). + findGuestsWithNonVirtHostByOrg(org)); + guestsWithoutHosts.addAll(VirtualInstanceFactory.getInstance(). + findGuestsWithoutAHostByOrg(org)); + + return guestsWithoutHosts; + }
}
commit b59a49c806f68d4d6b2b239fc983218645d8b6ac Author: Justin Sherrill jsherril@redhat.com Date: Wed Jun 9 17:13:34 2010 -0400
600323 - fixing checksums KeyError with rhnpush
Satellite-sync provides multiple checksums that we have to go through, whereas rhnpush only provides one (the one we need), so we need to simulate multiple with the one we need
diff --git a/backend/server/importlib/headerSource.py b/backend/server/importlib/headerSource.py index 9fed42f..b4b12b4 100644 --- a/backend/server/importlib/headerSource.py +++ b/backend/server/importlib/headerSource.py @@ -72,6 +72,7 @@ class rpmPackage(IncompletePackage): self['package_size'] = size self['checksum_type'] = checksum_type self['checksum'] = checksum + self['checksums'] = {checksum_type:checksum} self['path'] = path self['org_id'] = org_id self['header_start'] = header_start
commit fb8359fe5932a6d8f3d46fb57b55e7092c6738e1 Author: Milan Zazrivec mzazrivec@redhat.com Date: Wed Jun 9 14:24:45 2010 +0200
596237 - use correct constant in HardwareWindow (tui)
diff --git a/client/rhel/rhn-client-tools/src/up2date_client/tui.py b/client/rhel/rhn-client-tools/src/up2date_client/tui.py index cb64223..4aa213b 100644 --- a/client/rhel/rhn-client-tools/src/up2date_client/tui.py +++ b/client/rhel/rhn-client-tools/src/up2date_client/tui.py @@ -566,7 +566,7 @@ class HardwareWindow:
toplevel = snack.GridForm(screen, HARDWARE_WINDOW, 1, 7)
- text = snack.TextboxReflowed(70, HARDWARE_WINDOW_DESCRIPTION) + text = snack.TextboxReflowed(70, HARDWARE_WINDOW_DESC1)
toplevel.add(text, 0, 0, anchorLeft = 1)
commit 59a24c76ec52099cdea609e94923d3af4e34c57e Author: Partha Aji paji@redhat.com Date: Fri May 28 19:09:01 2010 -0400
Removed the bulk-subscribe and unsubscribe which is not used anywhere
diff --git a/schema/spacewalk/oracle/packages/rhn_channel.pkb b/schema/spacewalk/oracle/packages/rhn_channel.pkb index 925dddd..f5d5c96 100644 --- a/schema/spacewalk/oracle/packages/rhn_channel.pkb +++ b/schema/spacewalk/oracle/packages/rhn_channel.pkb @@ -240,15 +240,6 @@ IS end;
- PROCEDURE bulk_subscribe_server(channel_id_in IN NUMBER, set_label_in IN VARCHAR2, set_uid_in IN NUMBER) - IS - BEGIN - FOR server IN rhn_set.set_iterator(set_label_in, set_uid_in) - LOOP - rhn_channel.subscribe_server(server.element, channel_id_in, 0, set_uid_in); - END LOOP server; - END bulk_subscribe_server; - PROCEDURE bulk_server_base_change(channel_id_in IN NUMBER, set_label_in IN VARCHAR2, set_uid_in IN NUMBER) IS BEGIN @@ -606,14 +597,6 @@ IS end if; END unsubscribe_server;
- PROCEDURE bulk_unsubscribe_server(channel_id_in IN NUMBER, set_label_in IN VARCHAR2, set_uid_in IN NUMBER) - IS - BEGIN - FOR server IN rhn_set.set_iterator(set_label_in, set_uid_in) - LOOP - rhn_channel.unsubscribe_server(server.element, channel_id_in, 0); - END LOOP server; - END bulk_unsubscribe_server;
FUNCTION family_for_channel(channel_id_in IN NUMBER) RETURN NUMBER diff --git a/schema/spacewalk/oracle/packages/rhn_channel.pks b/schema/spacewalk/oracle/packages/rhn_channel.pks index a6de86d..2036f9a 100644 --- a/schema/spacewalk/oracle/packages/rhn_channel.pks +++ b/schema/spacewalk/oracle/packages/rhn_channel.pks @@ -72,9 +72,6 @@ IS
FUNCTION channel_priority(channel_id_in in number) RETURN number;
- PROCEDURE bulk_subscribe_server(channel_id_in IN NUMBER, set_label_in IN VARCHAR2, set_uid_in IN NUMBER); - PROCEDURE bulk_unsubscribe_server(channel_id_in IN NUMBER, set_label_in IN VARCHAR2, set_uid_in IN NUMBER); - PROCEDURE bulk_server_base_change(channel_id_in IN NUMBER, set_label_in IN VARCHAR2, set_uid_in IN NUMBER); procedure bulk_server_basechange_from( set_label_in in varchar2, diff --git a/schema/spacewalk/postgres/packages/rhn_channel.pkb b/schema/spacewalk/postgres/packages/rhn_channel.pkb index be74ba0..09f78f9 100644 --- a/schema/spacewalk/postgres/packages/rhn_channel.pkb +++ b/schema/spacewalk/postgres/packages/rhn_channel.pkb @@ -218,20 +218,6 @@ update pg_settings set setting = 'rhn_channel,' || setting where name = 'search_ end$$ language plpgsql;
- CREATE OR REPLACE FUNCTION bulk_subscribe_server(channel_id_in IN NUMERIC, set_label_in IN VARCHAR, set_uid_in IN NUMERIC) returns void - AS $$ - DECLARE - server RECORD; - BEGIN - FOR server IN - SELECT user_id, label, element, element_two - FROM rhnSet - WHERE label = set_label_in - AND user_id = set_uid_in - LOOP - perform rhn_channel.subscribe_server(server.element, channel_id_in, 0, set_uid_in); - END LOOP; - END$$ language plpgsql;
CREATE OR REPLACE FUNCTION bulk_server_base_change(channel_id_in IN NUMERIC, set_label_in IN VARCHAR, set_uid_in IN NUMERIC) returns void AS $$ @@ -643,21 +629,6 @@ update pg_settings set setting = 'rhn_channel,' || setting where name = 'search_ perform rhn_channel.update_family_counts(channel_family_id_val, server_org_id_val); END$$ language plpgsql;
- CREATE OR REPLACE FUNCTION bulk_unsubscribe_server(channel_id_in IN NUMERIC, set_label_in IN VARCHAR, set_uid_in IN NUMERIC) returns void - AS $$ - DECLARE - server RECORD; - BEGIN - FOR server IN - SELECT user_id, label, element, element_two - FROM rhnSet - WHERE label = set_label_in - AND user_id = set_uid_in - LOOP - perform rhn_channel.unsubscribe_server(server.element, channel_id_in, 0); - END LOOP; - END$$ language plpgsql; - CREATE OR REPLACE FUNCTION family_for_channel(channel_id_in IN NUMERIC) RETURNS NUMERIC AS $$ diff --git a/web/html/network/software/channels/license.pxt b/web/html/network/software/channels/license.pxt deleted file mode 100644 index 2e4e7ee..0000000 --- a/web/html/network/software/channels/license.pxt +++ /dev/null @@ -1,45 +0,0 @@ -<?xml version="1.0" encoding="utf8"?> -<pxt-passthrough> - <pxt-use class="Grail::Frame" /> - <pxt-use class="Sniglets::Channel" /> - <pxt-use class="Sniglets::ChannelLicense" /> - <pxt-use class="Sniglets::Users" /> - <pxt-use class="Sniglets::HTML" /> - - <grail-canvas-template base="/templates/c.pxt" mode="main_canvas"> - -<rhn-channel-details> - <h1><img src="/img/rhn-icon-channels.gif" /> {channel_name} <rhn-help href="s1-sm-channels-packages.jsp" /></h1> -</rhn-channel-details> - - <rhn-navi-nav prefix="channel_details" depth="0" file="/nav/channel_detail.xml" style="contentnav" /> - - <h2>End User License Agreement</h2> - -<rhn-channel-license-dialog> - <div class="page-summary"> - <p>Please read and accept the following End User Licensing Agreement (EULA) to subscribe the selected systems to this channel.</p> - <br /> - <pre>{channel_license}</pre> - <br /> - </div> - -<pxt-include-late file="/network/components/message_queues/local.pxi" /> - - <pxt-form method="POST"> - <div align="right"> - <hr /> - <input type="submit" name="cancel" value="Cancel" /> - <input type="submit" name="accept" value="Accept" /> - <input type="hidden" name="pxt:trap" value="rhn:channel_license_dialog_cb" /> - <input type="hidden" name="cdc" value="1" /> - <input type="hidden" name="subscribe_to" value="{channel_id}" /> - {additional_channels} - <pxt-hidden name="cid" /> - <pxt-hidden name="set_label" /> - </div> - </pxt-form> -</rhn-channel-license-dialog> - - </grail-canvas-template> -</pxt-passthrough> diff --git a/web/html/network/systems/ssm/channels/index.pxt b/web/html/network/systems/ssm/channels/index.pxt deleted file mode 100644 index 78139b7..0000000 --- a/web/html/network/systems/ssm/channels/index.pxt +++ /dev/null @@ -1,79 +0,0 @@ -<?xml version="1.0" encoding="utf8"?> -<pxt-passthrough> - <pxt-use class="Grail::Frame" /> - <pxt-use class="Sniglets::ListUtils" /> - <pxt-use class="Sniglets::Channel" /> - <pxt-use class="Sniglets::HTML" /> - - <grail-canvas-template base="/templates/c.pxt" mode="main_canvas"> - - <h1><img src="/img/rhn-icon-system_group.gif" alt="system set" /> System Set Manager <rhn-help href="s1-sm-systems.jsp#s2-sm-ssm" /></h1> - - <rhn-navi-nav prefix="system_set_manager" depth="0" file="/nav/ssm.xml" style="contentnav" /> - - -<h2>Channel Subscriptions</h2> - - <div class="page-summary"> - <p> - Below is a list of channels in your organization. - </p> - <ul> - <li>To subscribe selected systems to a channel, check Subscribe for that channel.</li> - <li>To unsubscribe selected systems from a channel, check Unsubscribe for that channel.</li> - <li>Check No Change to leave the selected systems unaffected relative to that channel.</li> - </ul> - <p> - <strong>Note:</strong> attempts to assign a system to an incompatible channel will fail. - </p> - </div> - -<rhn-resubscribe-warning-ssm> -<div class="resubscribe-warning-big"> -<p> - <img src="/img/rhn-icon-warning.gif" title="Resubscription Warning" /> You do not have subscription rights to the marked channels below. You will not be able to resubscribe any systems to such channels without administrator intervention. -</p> -</div> -</rhn-resubscribe-warning-ssm> - - -<pxt-include-late file="/network/components/message_queues/local.pxi" /> - -<rhn-fix-list list_type="channel"> -<empty_list_mesg>No relevant channels</empty_list_mesg> - -<pxt-form method="post" action="/network/systems/ssm/channels/alter_subscriptions_conf.pxt"> - -<table width="96%" cellspacing="0" cellpadding="0" class="list" align="center"> - <thead> - <tr> - <th>Channel</th> - <th>Subscribe</th> - <th>Unsubscribe</th> - <th>No Change</th> - </tr> - </thead> -<rhn-tri-state-channel-list> - <tr class="{class}"> - <td class="first-column">{channel_name}</td> - <td align="center">{subscribe_column}</td> - <td align="center"><input type="radio" name="{channel_id}" value="unsubscribe" /></td> - <td class="last-column" align="center"><input type="radio" name="{channel_id}" value="do_nothing" checked="1" /></td> - </tr> -</rhn-tri-state-channel-list> -</table> - -<input type="hidden" name="pxt:trap" value="rhn:sscd_alter_channel_membership_cb" /> - -<div align="right"> -<hr /> -<input type="submit" name="channel_actions" value="Alter Subscriptions" /> -</div> - -</pxt-form> -</rhn-fix-list> - - - </grail-canvas-template> - -</pxt-passthrough> diff --git a/web/html/network/systems/ssm/channels/license.pxt b/web/html/network/systems/ssm/channels/license.pxt deleted file mode 100644 index 3d4872b..0000000 --- a/web/html/network/systems/ssm/channels/license.pxt +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="utf8"?> -<pxt-passthrough> - <pxt-use class="Grail::Frame" /> - <pxt-use class="Sniglets::ChannelLicense" /> - <pxt-use class="Sniglets::Lists" /> - <pxt-use class="Sniglets::HTML" /> - - <grail-canvas-template base="/templates/c.pxt" mode="main_canvas"> - - <h1><img src="/img/rhn-icon-system_group.gif" alt="system set" /> System Set Manager <rhn-help href="s1-sm-systems.jsp#s2-sm-ssm" /></h1> - - <rhn-navi-nav prefix="system_set_manager" depth="0" - file="/nav/ssm.xml" style="contentnav" /> - - -<h2>End User License Agreement</h2> - -<rhn-channel-license-dialog> -<p><strong>{channel_name}</strong></p> - -<p>You must agree to the following EULA before you may subscribe the systems listed at the bottom of the page:</p> - -<br /> - -<pre>{channel_license}</pre> - -<br /> - - -<rhn-listview class="Sniglets::ListView::SystemList" -mode="target_systems_for_channel_in_set"> - <formvar> - <var>cid</var> - <var>additional_channel</var> - </formvar> - <column name="Name" label="server_name" align="left" /> -</rhn-listview> - - -<pxt-include-late file="/network/components/message_queues/local.pxi" /> - -<pxt-form method="POST"> -<div align="right"> -<hr /> -<input type="submit" name="cancel" value="Cancel" /> -<input type="submit" name="accept" value="Accept" /> -</div> - -<input type="hidden" name="pxt:trap" value="rhn:channel_license_dialog_cb" /> - -<input type="hidden" name="cid" value="{channel_id}" /> -{additional_channels} - -<input type="hidden" name="ssm" value="1" /> -</pxt-form> -</rhn-channel-license-dialog> - -</grail-canvas-template> - -</pxt-passthrough> diff --git a/web/modules/rhn/RHN/DB/ServerActions.pm b/web/modules/rhn/RHN/DB/ServerActions.pm index 7007c6d..ffe0007 100644 --- a/web/modules/rhn/RHN/DB/ServerActions.pm +++ b/web/modules/rhn/RHN/DB/ServerActions.pm @@ -92,46 +92,4 @@ sub remove_set_from_group { }
-sub subscribe_set_to_channel { - my $class = shift; - my $set = shift; - my $channel_id = shift; - my $transaction = shift; - - my $query = <<EOQ; -BEGIN - rhn_channel.bulk_subscribe_server(?, ?, ?); -END; -EOQ - - my $dbh = $transaction || RHN::DB->connect(); - my $sth = $dbh->prepare($query); - $sth->execute($channel_id, $set->label, $set->uid); - - $dbh->commit unless $transaction; - - return $dbh; -} - -sub unsubscribe_set_from_channel { - my $class = shift; - my $set = shift; - my $channel_id = shift; - my $transaction = shift; - - my $query = <<EOQ; -BEGIN - rhn_channel.bulk_unsubscribe_server(?, ?, ?); -END; -EOQ - - my $dbh = $transaction || RHN::DB->connect(); - my $sth = $dbh->prepare($query); - $sth->execute($channel_id, $set->label, $set->uid); - - $dbh->commit unless $transaction; - - return $dbh; -} - 1; diff --git a/web/modules/sniglets/Sniglets/Channel.pm b/web/modules/sniglets/Sniglets/Channel.pm index 67bb5a2..4ca6b59 100644 --- a/web/modules/sniglets/Sniglets/Channel.pm +++ b/web/modules/sniglets/Sniglets/Channel.pm @@ -49,8 +49,6 @@ sub register_callbacks { my $class = shift; my $pxt = shift;
- # sscd - $pxt->register_callback('rhn:sscd_alter_channel_membership_cb' => &sscd_alter_channel_membership_cb); $pxt->register_callback('rhn:globally_subscribable_cb' => &globally_subscribable_cb); }
@@ -99,72 +97,6 @@ sub channel_gpg_key { return PXT::Utils->perform_substitutions($block, %subst); }
-sub sscd_alter_channel_membership_cb { - my $pxt = shift; - - - PXT::Debug->log(7, "in sscd_alter_channel_membership_cb..."); - - my @to_subscribe; - my @to_unsubscribe; - my $channel_set = new RHN::DB::Set 'channel_list', $pxt->user->id; - - my @params = $pxt->param; - - # warn "setting channel_list for un/subscriptions..."; - PXT::Debug->log(7, "setting channel_list for un/subscriptions..."); - - $channel_set->empty; - $channel_set->commit; - foreach my $param (grep {m/(\d)+?/} @params) { - my $value = $pxt->dirty_param($param); - - push @to_subscribe, $param if ($value eq 'subscribe'); - push @to_unsubscribe, $param if ($value eq 'unsubscribe'); - } - - - # see if any of the requested channels are no longer allowed to be subscribed, - # also protects against forged requests... - if (not $pxt->user->verify_channel_subscribe(@to_subscribe)) { - my $error_msg = <<EOM; -You no longer have subscription access to some of the channels you selected.<br /> -Please review your selections and try again. -EOM - $pxt->push_message(local_alert => $error_msg); - $pxt->redirect("/network/systems/ssm/channels/index.pxt"); - } - - $channel_set->add( map { [ $_, $SUBSCRIBE ] } @to_subscribe ); - $channel_set->add( map { [ $_, $UNSUBSCRIBE ] } @to_unsubscribe ); - $channel_set->commit; - - PXT::Debug->log(7, "channel set committed..."); - PXT::Debug->log_dump(7, $channel_set); - - my @license_channels = RHN::Channel->available_channels_with_license($pxt->user->org_id); - my %consent_required = map { $_->[0] => 1 } @license_channels; - - my @channels_needing_consent; - - foreach my $channel_to_subscribe (@to_subscribe) { - if ($consent_required{$channel_to_subscribe}) { - push @channels_needing_consent, $channel_to_subscribe; - } - } - - my $cid; - if (@channels_needing_consent) { - my $cid = pop @channels_needing_consent; - my $params = $cid; - - if (@channels_needing_consent) { - $params .= "&additional_channel=" . join("&additional_channel=", @channels_needing_consent); - } - $pxt->redirect("/network/systems/ssm/channels/license.pxt?cid=$cid¤t_channel=$params"); - } -} -
sub tri_state_channel_list { my $pxt = shift; diff --git a/web/modules/sniglets/Sniglets/ListView/SystemList.pm b/web/modules/sniglets/Sniglets/ListView/SystemList.pm index 70f422a..647b058 100644 --- a/web/modules/sniglets/Sniglets/ListView/SystemList.pm +++ b/web/modules/sniglets/Sniglets/ListView/SystemList.pm @@ -85,11 +85,6 @@ sub _register_modes { -datasource => RHN::DataSource::System->new, -provider => &visible_to_uid_provider);
- Sniglets::ListView::List->add_mode(-mode => "ssm_channel_change_conf", - -datasource => RHN::DataSource::System->new, - -provider => &ssm_channel_change_conf_provider, - -action_callback => &ssm_channel_change_conf_cb); - Sniglets::ListView::List->add_mode(-mode => "systems_with_package_nvre_in_set", -datasource => RHN::DataSource::System->new);
@@ -663,85 +658,6 @@ sub ssm_channel_change_conf_provider { return %ret; }
-sub ssm_channel_change_conf_cb { - my $self = shift; - my $pxt = shift; - - # think big red button - my %action = @_; - - if ($action{label} eq 'ssm_change_channel_subscriptions') { - - my $SUBSCRIBE = 1; - my $UNSUBSCRIBE = 2; - - my @to_subscribe; - my @to_unsubscribe; - my $channel_set = new RHN::DB::Set 'channel_list', $pxt->user->id; - - my $system_set = new RHN::DB::Set 'system_list', $pxt->user->id; - - @to_subscribe = map { $_->[0] } grep { $_->[1] eq $SUBSCRIBE } $channel_set->contents(); - @to_unsubscribe = map { $_->[0] } grep { $_->[1] eq $UNSUBSCRIBE } $channel_set->contents(); - - # for safety's sake, filter out any rhn-satellite or rhn-proxy id that might have found their way in... - my %rhn_satellite_ids; - my %rhn_proxy_ids; - - %rhn_proxy_ids = map { $_ => 1 } RHN::Channel->rhn_proxy_channels; - %rhn_satellite_ids = map { $_ => 1 } RHN::Channel->rhn_satellite_channels; - - @to_subscribe = grep {!$rhn_proxy_ids{$_} and !$rhn_satellite_ids{$_}} @to_subscribe; - @to_unsubscribe = grep {!$rhn_proxy_ids{$_} and !$rhn_satellite_ids{$_}} @to_unsubscribe; - - my $transaction = RHN::DB->connect; - - eval { - foreach my $channel_to_subscribe_to (@to_subscribe) { - $transaction = RHN::ServerActions->subscribe_set_to_channel($system_set, $channel_to_subscribe_to, $transaction); - } - - foreach my $channel_to_unsubscribe_from (@to_unsubscribe) { - $transaction = RHN::ServerActions->unsubscribe_set_from_channel($system_set, $channel_to_unsubscribe_from, $transaction); - } - - # w/ groups, we're probably over-snapshotting a little bit, but we're - # likely to do far more here, due to more no-ops depending upon base-child channel - # relationships... therefore, fix this one first. - $transaction = RHN::Server->snapshot_set(-reason => "Channel subscription alterations", - -set_label => 'system_list', - -user_id => $pxt->user->id, - -transaction => $transaction); - }; - - if ($@ and catchable($@)) { - my $E = $@; - - $transaction->rollback; - - # What could go here? What exceptions might we run into? Not enough entitlements? - if ($E->is_rhn_exception('channel_family_no_subscriptions')) { - $pxt->push_message(local_alert => "Channel subscriptions would be exceeded, no systems subscribed. Please contact Red Hat for more channel entitlements (1-866-2-REDHAT)."); - } - else { - throw $E; - } - } - elsif ($@) { - $transaction->rollback(); - die $@; - } - else { - $transaction->commit; - - $channel_set->empty; - $channel_set->commit; - $pxt->push_message(site_info => "Channel subscriptions changed."); - $pxt->redirect('/network/systems/ssm/channels/index.pxt'); - } - } -} - sub row_callback { my $self = shift; my $row = shift;
commit 9a8fd0ea078028d26f273d1c61f2f2409e7a119d Author: Partha Aji paji@redhat.com Date: Thu May 27 20:23:29 2010 -0400
removed an unused method
diff --git a/web/modules/rhn/RHN/DB/Server.pm b/web/modules/rhn/RHN/DB/Server.pm index 2163844..1bde1f5 100644 --- a/web/modules/rhn/RHN/DB/Server.pm +++ b/web/modules/rhn/RHN/DB/Server.pm @@ -1764,66 +1764,6 @@ sub can_entitle_server { return $can ? 1 : 0; }
-sub set_channels { - my $self = shift; - my %params = validate(@_, {user_id => 1, channels => 1}); - my %new_channels = map { $_ => 1 } @{$params{channels}}; - my $user_id = $params{user_id}; - - my @remove; - my @add; - - my $dbh = RHN::DB->connect; - my $query = <<EOS; -SELECT SC.channel_id - FROM rhnServerChannel SC - WHERE SC.server_id = ? -EOS - - my $sth = $dbh->prepare($query); - $sth->execute($self->id); - - while (my ($cid) = $sth->fetchrow) { - if (exists $new_channels{$cid}) { - delete $new_channels{$cid}; - } - else { - push @remove, $cid; - } - } - - @add = keys %new_channels; - foreach my $add (@add) { - - # do quick unsubscribe + quick subscribe - my $sth = $dbh->prepare(<<EOS); -BEGIN - rhn_channel.unsubscribe_server(:server_id, :cid, 0); - rhn_channel.subscribe_server(:server_id, :cid, 0, :user_id); -END; -EOS - $sth->execute_h(server_id => $self->id, cid => $add, user_id => $user_id); - } - - foreach my $remove (@remove) { - # do quick unsubscribes - my $sth = $dbh->prepare(<<EOS); -BEGIN - rhn_channel.unsubscribe_server(:server_id, :cid, 0); -END; -EOS - $sth->execute_h(server_id => $self->id, cid => $remove); - } - - # manually recompute the cache so that it's immediate - my ($add, $remove, $unc) = RHN::DB::Server->update_cache_for_server($dbh, $self->id); - - $dbh->commit; - - return { added => [ @add ], - removed => [ @remove ], - }; -}
sub entitle_server { my $self_or_class = shift;
commit ee10f6731672b225976fdb70a5123f40f6d8cf89 Author: Tomas Lestach tlestach@redhat.com Date: Tue Jun 8 17:09:05 2010 +0200
591291 - associate packages also (when mergeing errata)
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java index f8072e2..92767ef 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java @@ -1844,7 +1844,14 @@ public class ChannelSoftwareHandler extends BaseHandler { }
ErrataManager.publishErrataToChannel(toChannel, getErrataIds(diffErrata), user); + for (Errata errata : diffErrata) { + for (Iterator iter = errata.getPackages().iterator(); iter.hasNext();) { + Package pkg = (Package) iter.next(); + toChannel.addPackage(pkg, user); + } + } ChannelFactory.save(toChannel); + ChannelManager.refreshWithNewestPackages(toChannel, "api");
return diffErrata; }
commit 7e92f8c7ae1254400cc7285a47166e980922982e Author: Michael Mraka michael.mraka@redhat.com Date: Tue Jun 8 16:51:46 2010 +0200
Automatic commit of package [spacewalk-backend] release [1.1.20-1].
diff --git a/backend/spacewalk-backend.spec b/backend/spacewalk-backend.spec index 103f39f..3347bfb 100644 --- a/backend/spacewalk-backend.spec +++ b/backend/spacewalk-backend.spec @@ -8,7 +8,7 @@ Name: spacewalk-backend Summary: Common programs needed to be installed on the Spacewalk servers/proxies Group: Applications/Internet License: GPLv2 -Version: 1.1.19 +Version: 1.1.20 Release: 1%{?dist} URL: https://fedorahosted.org/spacewalk Source0: https://fedorahosted.org/releases/s/p/spacewalk/%%7Bname%7D-%%7Bversion%7D.t... @@ -631,6 +631,10 @@ rm -f %{rhnconf}/rhnSecret.py*
# $Id$ %changelog +* Tue Jun 08 2010 Michael Mraka michael.mraka@redhat.com 1.1.20-1 +- more exporter code cleanup +- 589524 - select packages, erratas and kickstart trees according to import + * Thu Jun 03 2010 Michael Mraka michael.mraka@redhat.com 1.1.19-1 - removed duplicated code from export routines * Mon May 31 2010 Michael Mraka michael.mraka@redhat.com 1.1.18-1 diff --git a/rel-eng/packages/spacewalk-backend b/rel-eng/packages/spacewalk-backend index 3d31023..e29d7aa 100644 --- a/rel-eng/packages/spacewalk-backend +++ b/rel-eng/packages/spacewalk-backend @@ -1 +1 @@ -1.1.19-1 backend/ +1.1.20-1 backend/
commit 2b1c8029989b474914326754b4e2b97475c8fe92 Author: Michael Mraka michael.mraka@redhat.com Date: Tue Jun 8 16:48:10 2010 +0200
_get_package_id() not used anywhere
diff --git a/backend/satellite_exporter/handlers/non_auth_dumper.py b/backend/satellite_exporter/handlers/non_auth_dumper.py index b7f70f0..e52f93a 100644 --- a/backend/satellite_exporter/handlers/non_auth_dumper.py +++ b/backend/satellite_exporter/handlers/non_auth_dumper.py @@ -657,21 +657,6 @@ class NonAuthenticatedDumper(rhnHandler, dumper.XML_Dumper): def close_rpm(self): self._is_closed = 1
- def _get_package_id(package, prefix): - """ Extracts the package id from a string rhn-package-12345 """ - log_debug(4, package, prefix) - if package[:len(prefix)] != prefix: - raise rhnFault(3002, "Invalid package name %s" % package) - package_id = package[len(prefix):] - try: - package_id = int(package_id) - except ValueError: - raise rhnFault(3002, "Invalid package id %s" % package) - return package_id - - _get_package_id = staticmethod(_get_package_id) - - def _respond_xmlrpc(self, data): # Marshal s = xmlrpclib.dumps((data, ))
commit 1a55283cc3dbbe182f8e41a8836b9aa794650762 Author: Michael Mraka michael.mraka@redhat.com Date: Tue Jun 8 16:41:30 2010 +0200
if we inherit from dumper.ChannelsDumper, we can even remove set_iterator()
diff --git a/backend/satellite_exporter/handlers/non_auth_dumper.py b/backend/satellite_exporter/handlers/non_auth_dumper.py index e503ac9..b7f70f0 100644 --- a/backend/satellite_exporter/handlers/non_auth_dumper.py +++ b/backend/satellite_exporter/handlers/non_auth_dumper.py @@ -734,16 +734,7 @@ class ContainerWriter: # Overwrite the ChannelsDumper class to filter packages/source packages/errata # based on the creation date # XXX No caching for now -class ChannelsDumper(exportLib.ChannelsDumper): - def set_iterator(self): - if not self._channels: - # Nothing to do - return - - # Import the query from the dumper.ChannelsDumper class - h = rhnSQL.prepare(dumper.ChannelsDumper._query_list_channels) - return dumper.QueryIterator(statement=h, params=self._channels) - +class ChannelsDumper(dumper.ChannelsDumper): def dump_subelement(self, data): c = exportLib.ChannelDumper(self._writer, data) c.dump()
commit b3a48f60786a4db76b51b66b4978139e4db65086 Author: Michael Mraka michael.mraka@redhat.com Date: Tue Jun 8 16:35:42 2010 +0200
removed useless try-except
diff --git a/backend/satellite_exporter/handlers/non_auth_dumper.py b/backend/satellite_exporter/handlers/non_auth_dumper.py index f23c355..e503ac9 100644 --- a/backend/satellite_exporter/handlers/non_auth_dumper.py +++ b/backend/satellite_exporter/handlers/non_auth_dumper.py @@ -746,10 +746,7 @@ class ChannelsDumper(exportLib.ChannelsDumper):
def dump_subelement(self, data): c = exportLib.ChannelDumper(self._writer, data) - try: - c.dump() - except: - raise + c.dump()
_query_lookup_last_modified_packages = rhnSQL.Statement(""" select TO_CHAR(last_modified, 'YYYY-MM-DD HH24:MI:SS') last_modified
commit 974fff4e84936810a33a54bfceaa8b7b312ac2ce Author: Michael Mraka michael.mraka@redhat.com Date: Tue Jun 8 16:34:29 2010 +0200
superclass' __init__() is called by default
diff --git a/backend/satellite_exporter/handlers/non_auth_dumper.py b/backend/satellite_exporter/handlers/non_auth_dumper.py index c9efa0f..f23c355 100644 --- a/backend/satellite_exporter/handlers/non_auth_dumper.py +++ b/backend/satellite_exporter/handlers/non_auth_dumper.py @@ -735,11 +735,6 @@ class ContainerWriter: # based on the creation date # XXX No caching for now class ChannelsDumper(exportLib.ChannelsDumper): - def __init__(self, writer, channels): - # if snapshot is None, then all the objects from the channel are - # returned - this is useful for snapshotting - exportLib.ChannelsDumper.__init__(self, writer, channels) - def set_iterator(self): if not self._channels: # Nothing to do
commit db705d2b3bae84b7abaedc647a6d8880c6188cb5 Author: Michael Mraka michael.mraka@redhat.com Date: Tue Jun 8 16:22:38 2010 +0200
fixed namespace in moved funcitions
diff --git a/backend/satellite_exporter/handlers/non_auth_dumper.py b/backend/satellite_exporter/handlers/non_auth_dumper.py index c4bd142..c9efa0f 100644 --- a/backend/satellite_exporter/handlers/non_auth_dumper.py +++ b/backend/satellite_exporter/handlers/non_auth_dumper.py @@ -285,10 +285,10 @@ class NonAuthenticatedDumper(rhnHandler, dumper.XML_Dumper): h.execute()
writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, + d = dumper.SatelliteDumper(writer, exportLib.ChannelFamiliesDumper(writer, data_iterator=h, null_max_members=0, virt_filter=virt_filter),) - dumper.dump() + d.dump() writer.flush() log_debug(4, "OK") self.close() @@ -299,9 +299,9 @@ class NonAuthenticatedDumper(rhnHandler, dumper.XML_Dumper): channels = self._validate_channels(channel_labels=channel_labels)
writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, ChannelsDumperEx(writer, + d = dumper.SatelliteDumper(writer, dumper.ChannelsDumperEx(writer, channels=channels.values())) - dumper.dump() + d.dump() writer.flush() log_debug(4, "OK") self.close() @@ -352,7 +352,7 @@ class NonAuthenticatedDumper(rhnHandler, dumper.XML_Dumper): except IOError: log_error("Client disconnected prematurely") self.close() - raise ClosedConnectionError + raise dumper.ClosedConnectionError # We're done return 0
@@ -384,9 +384,9 @@ class NonAuthenticatedDumper(rhnHandler, dumper.XML_Dumper): packages_hash[package_id] = row
writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, + d = dumper.SatelliteDumper(writer, dump_class(writer, packages_hash.values())) - dumper.dump() + d.dump() writer.flush() log_debug(4, "OK") self.close() @@ -420,9 +420,9 @@ class NonAuthenticatedDumper(rhnHandler, dumper.XML_Dumper): errata_hash[errata_id] = row
writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, - ErrataDumper(writer, errata_hash.values())) - dumper.dump() + d = dumper.SatelliteDumper(writer, + dumper.ErrataDumper(writer, errata_hash.values())) + d.dump() writer.flush() log_debug(4, "OK") self.close() @@ -434,9 +434,9 @@ class NonAuthenticatedDumper(rhnHandler, dumper.XML_Dumper): kickstart_labels=kickstart_labels)
writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, - KickstartableTreesDumper(writer, kickstarts=kickstarts)) - dumper.dump() + d = dumper.SatelliteDumper(writer, + dumper.KickstartableTreesDumper(writer, kickstarts=kickstarts)) + d.dump() writer.flush() log_debug(4, "OK") self.close() @@ -445,8 +445,8 @@ class NonAuthenticatedDumper(rhnHandler, dumper.XML_Dumper): def dump_product_names(self): log_debug(4) writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, exportLib.ProductNamesDumper(writer)) - dumper.dump() + d = dumper.SatelliteDumper(writer, exportLib.ProductNamesDumper(writer)) + d.dump() writer.flush() self.close() return 0
commit f44cda03d238d7cc4742258538bf0fa7466d5797 Author: Michael Mraka michael.mraka@redhat.com Date: Tue Jun 8 16:00:53 2010 +0200
removed empty XML_DumperEx
diff --git a/backend/satellite_exporter/handlers/non_auth_dumper.py b/backend/satellite_exporter/handlers/non_auth_dumper.py index 6c36381..c4bd142 100644 --- a/backend/satellite_exporter/handlers/non_auth_dumper.py +++ b/backend/satellite_exporter/handlers/non_auth_dumper.py @@ -38,7 +38,7 @@ class NullPathPackageError(Exception): class MissingPackageError(Exception): pass
-class NonAuthenticatedDumper(rhnHandler, dumper.XML_DumperEx): +class NonAuthenticatedDumper(rhnHandler, dumper.XML_Dumper): def __init__(self, req): rhnHandler.__init__(self) self.compress_level = 5 diff --git a/backend/satellite_tools/disk_dumper/dumper.py b/backend/satellite_tools/disk_dumper/dumper.py index e9dbaaa..91a7e98 100644 --- a/backend/satellite_tools/disk_dumper/dumper.py +++ b/backend/satellite_tools/disk_dumper/dumper.py @@ -533,9 +533,6 @@ class XML_Dumper:
return result
-class XML_DumperEx(XML_Dumper): - pass - class SatelliteDumper(exportLib.SatelliteDumper): def set_attributes(self): """ Overriding with our own version """
commit c7c71e8bed064746f6ba8d60aed5fd605a9ef8f2 Author: Michael Mraka michael.mraka@redhat.com Date: Tue Jun 8 15:58:29 2010 +0200
moved dump_channel_families(), dump_channels(), dump_channel_packages_short(), _packages(), dump_errata(), dump_kickstartable_trees() and dump_product_names() to NonAuthenticatedDumper
diff --git a/backend/satellite_exporter/handlers/non_auth_dumper.py b/backend/satellite_exporter/handlers/non_auth_dumper.py index 3177bb0..6c36381 100644 --- a/backend/satellite_exporter/handlers/non_auth_dumper.py +++ b/backend/satellite_exporter/handlers/non_auth_dumper.py @@ -277,6 +277,180 @@ class NonAuthenticatedDumper(rhnHandler, dumper.XML_DumperEx): h.executemany(snapshot_channel_id=snapshot_channel_ids, obj_id=obj_ids, last_modified=last_modifieds)
+ # Dumper functions here + def dump_channel_families(self, virt_filter=0): + log_debug(2) + + h = self.get_channel_families_statement() + h.execute() + + writer = self._get_xml_writer() + dumper = SatelliteDumper(writer, + exportLib.ChannelFamiliesDumper(writer, + data_iterator=h, null_max_members=0, virt_filter=virt_filter),) + dumper.dump() + writer.flush() + log_debug(4, "OK") + self.close() + return 0 + + def dump_channels(self, channel_labels=None): + log_debug(2) + channels = self._validate_channels(channel_labels=channel_labels) + + writer = self._get_xml_writer() + dumper = SatelliteDumper(writer, ChannelsDumperEx(writer, + channels=channels.values())) + dumper.dump() + writer.flush() + log_debug(4, "OK") + self.close() + return 0 + + def dump_channel_packages_short(self, channel_label, last_modified): + log_debug(2, channel_label) + channels = self._validate_channels(channel_labels=[channel_label]) + channel_obj = channels[channel_label] + db_last_modified = int(rhnLib.timestamp(channel_obj['last_modified'])) + last_modified = int(rhnLib.timestamp(last_modified)) + log_debug(3, "last modified", last_modified, "db last modified", + db_last_modified) + if last_modified != db_last_modified: + raise rhnFault(3013, "The requested channel version does not match" + " the upstream version", explain=0) + channel_id = channel_obj['channel_id'] + key = "xml-channel-packages/rhn-channel-%d.data" % channel_id + # Try to get everything off of the cache + val = rhnCache.get(key, compressed=0, raw=1, modified=last_modified) + if val is None: + # Not generated yet + log_debug(4, "Cache MISS for %s (%s)" % (channel_label, + channel_id)) + stream = self._cache_channel_packages_short(channel_id, key, + last_modified) + else: + log_debug(4, "Cache HIT for %s (%s)" % (channel_label, + channel_id)) + temp_stream = tempfile.TemporaryFile() + temp_stream.write(val) + temp_stream.flush() + stream = self._normalize_compressed_stream(temp_stream) + + # Copy the results to the output stream + # They shold be already compressed if they were requested to be + # compressed + buffer_size = 16384 + # Send the HTTP headers - but don't init the compressed stream since + # we send the data ourselves + self._send_headers(init_compressed_stream=0) + while 1: + buff = stream.read(buffer_size) + if not buff: + break + try: + self._raw_stream.write(buff) + except IOError: + log_error("Client disconnected prematurely") + self.close() + raise ClosedConnectionError + # We're done + return 0 + + def _packages(self, packages, prefix, dump_class, sources=0): + if sources: + h = self.get_source_packages_statement() + else: + h = self.get_packages_statement() + + packages_hash = {} + for package in packages: + package = str(package) + if package[:len(prefix)] != prefix: + raise rhnFault(3002, "Invalid package name %s" % package) + package_id = package[len(prefix):] + try: + package_id = int(package_id) + except ValueError: + raise rhnFault(3002, "Invalid package name %s" % package) + if packages_hash.has_key(package_id): + # Already verified + continue + h.execute(package_id=package_id) + row = h.fetchone_dict() + if not row: + # XXX Silently ignore it? + raise rhnFault(3003, "No such package %s" % package) + # Saving the row, it's handy later when we create the iterator + packages_hash[package_id] = row + + writer = self._get_xml_writer() + dumper = SatelliteDumper(writer, + dump_class(writer, packages_hash.values())) + dumper.dump() + writer.flush() + log_debug(4, "OK") + self.close() + return 0 + + def dump_errata(self, errata): + log_debug(2) + + h = self.get_errata_statement() + + errata_hash = {} + prefix = 'rhn-erratum-' + for erratum in errata: + erratum = str(erratum) + if erratum[:len(prefix)] != prefix: + raise rhnFault(3004, "Wrong erratum name %s" % erratum) + errata_id = erratum[len(prefix):] + try: + errata_id = int(errata_id) + except ValueError: + raise rhnFault(3004, "Wrong erratum name %s" % erratum) + if errata_hash.has_key(errata_id): + # Already verified + continue + h.execute(errata_id=errata_id) + row = h.fetchone_dict() + if not row: + # XXX Silently ignore it? + raise rhnFault(3005, "No such erratum %s" % erratum) + # Saving the row, it's handy later when we create the iterator + errata_hash[errata_id] = row + + writer = self._get_xml_writer() + dumper = SatelliteDumper(writer, + ErrataDumper(writer, errata_hash.values())) + dumper.dump() + writer.flush() + log_debug(4, "OK") + self.close() + return 0 + + def dump_kickstartable_trees(self, kickstart_labels=None): + log_debug(2) + kickstarts = self._validate_kickstarts( + kickstart_labels=kickstart_labels) + + writer = self._get_xml_writer() + dumper = SatelliteDumper(writer, + KickstartableTreesDumper(writer, kickstarts=kickstarts)) + dumper.dump() + writer.flush() + log_debug(4, "OK") + self.close() + return 0 + + def dump_product_names(self): + log_debug(4) + writer = self._get_xml_writer() + dumper = SatelliteDumper(writer, exportLib.ProductNamesDumper(writer)) + dumper.dump() + writer.flush() + self.close() + return 0 + def arches(self): return self.dump_arches(rpm_arch_type_only=1)
diff --git a/backend/satellite_tools/disk_dumper/dumper.py b/backend/satellite_tools/disk_dumper/dumper.py index c081212..e9dbaaa 100644 --- a/backend/satellite_tools/disk_dumper/dumper.py +++ b/backend/satellite_tools/disk_dumper/dumper.py @@ -534,179 +534,7 @@ class XML_Dumper: return result
class XML_DumperEx(XML_Dumper): - # Dumper functions here - def dump_channel_families(self, virt_filter=0): - log_debug(2) - - h = self.get_channel_families_statement() - h.execute() - - writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, - exportLib.ChannelFamiliesDumper(writer, - data_iterator=h, null_max_members=0, virt_filter=virt_filter),) - dumper.dump() - writer.flush() - log_debug(4, "OK") - self.close() - return 0 - - def dump_channels(self, channel_labels=None): - log_debug(2) - channels = self._validate_channels(channel_labels=channel_labels) - - writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, ChannelsDumperEx(writer, - channels=channels.values())) - dumper.dump() - writer.flush() - log_debug(4, "OK") - self.close() - return 0 - - def dump_channel_packages_short(self, channel_label, last_modified): - log_debug(2, channel_label) - channels = self._validate_channels(channel_labels=[channel_label]) - channel_obj = channels[channel_label] - db_last_modified = int(rhnLib.timestamp(channel_obj['last_modified'])) - last_modified = int(rhnLib.timestamp(last_modified)) - log_debug(3, "last modified", last_modified, "db last modified", - db_last_modified) - if last_modified != db_last_modified: - raise rhnFault(3013, "The requested channel version does not match" - " the upstream version", explain=0) - channel_id = channel_obj['channel_id'] - key = "xml-channel-packages/rhn-channel-%d.data" % channel_id - # Try to get everything off of the cache - val = rhnCache.get(key, compressed=0, raw=1, modified=last_modified) - if val is None: - # Not generated yet - log_debug(4, "Cache MISS for %s (%s)" % (channel_label, - channel_id)) - stream = self._cache_channel_packages_short(channel_id, key, - last_modified) - else: - log_debug(4, "Cache HIT for %s (%s)" % (channel_label, - channel_id)) - temp_stream = tempfile.TemporaryFile() - temp_stream.write(val) - temp_stream.flush() - stream = self._normalize_compressed_stream(temp_stream) - - # Copy the results to the output stream - # They shold be already compressed if they were requested to be - # compressed - buffer_size = 16384 - # Send the HTTP headers - but don't init the compressed stream since - # we send the data ourselves - self._send_headers(init_compressed_stream=0) - while 1: - buff = stream.read(buffer_size) - if not buff: - break - try: - self._raw_stream.write(buff) - except IOError: - log_error("Client disconnected prematurely") - self.close() - raise ClosedConnectionError - # We're done - return 0 - - def _packages(self, packages, prefix, dump_class, sources=0): - if sources: - h = self.get_source_packages_statement() - else: - h = self.get_packages_statement() - - packages_hash = {} - for package in packages: - package = str(package) - if package[:len(prefix)] != prefix: - raise rhnFault(3002, "Invalid package name %s" % package) - package_id = package[len(prefix):] - try: - package_id = int(package_id) - except ValueError: - raise rhnFault(3002, "Invalid package name %s" % package) - if packages_hash.has_key(package_id): - # Already verified - continue - h.execute(package_id=package_id) - row = h.fetchone_dict() - if not row: - # XXX Silently ignore it? - raise rhnFault(3003, "No such package %s" % package) - # Saving the row, it's handy later when we create the iterator - packages_hash[package_id] = row - - writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, - dump_class(writer, packages_hash.values())) - dumper.dump() - writer.flush() - log_debug(4, "OK") - self.close() - return 0 - - def dump_errata(self, errata): - log_debug(2) - - h = self.get_errata_statement() - - errata_hash = {} - prefix = 'rhn-erratum-' - for erratum in errata: - erratum = str(erratum) - if erratum[:len(prefix)] != prefix: - raise rhnFault(3004, "Wrong erratum name %s" % erratum) - errata_id = erratum[len(prefix):] - try: - errata_id = int(errata_id) - except ValueError: - raise rhnFault(3004, "Wrong erratum name %s" % erratum) - if errata_hash.has_key(errata_id): - # Already verified - continue - h.execute(errata_id=errata_id) - row = h.fetchone_dict() - if not row: - # XXX Silently ignore it? - raise rhnFault(3005, "No such erratum %s" % erratum) - # Saving the row, it's handy later when we create the iterator - errata_hash[errata_id] = row - - writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, - ErrataDumper(writer, errata_hash.values())) - dumper.dump() - writer.flush() - log_debug(4, "OK") - self.close() - return 0 - - def dump_kickstartable_trees(self, kickstart_labels=None): - log_debug(2) - kickstarts = self._validate_kickstarts( - kickstart_labels=kickstart_labels) - - writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, - KickstartableTreesDumper(writer, kickstarts=kickstarts)) - dumper.dump() - writer.flush() - log_debug(4, "OK") - self.close() - return 0 - - def dump_product_names(self): - log_debug(4) - writer = self._get_xml_writer() - dumper = SatelliteDumper(writer, exportLib.ProductNamesDumper(writer)) - dumper.dump() - writer.flush() - self.close() - return 0 + pass
class SatelliteDumper(exportLib.SatelliteDumper): def set_attributes(self):
commit 6fd98337fdef099a67fa9a32dd98d7fc5e5f3537 Author: Michael Mraka michael.mraka@redhat.com Date: Tue Jun 8 15:47:50 2010 +0200
moved _send_headers(), send() and close() to NonAuthenticatedDumper
diff --git a/backend/satellite_exporter/handlers/non_auth_dumper.py b/backend/satellite_exporter/handlers/non_auth_dumper.py index 34197c3..3177bb0 100644 --- a/backend/satellite_exporter/handlers/non_auth_dumper.py +++ b/backend/satellite_exporter/handlers/non_auth_dumper.py @@ -97,6 +97,64 @@ class NonAuthenticatedDumper(rhnHandler, dumper.XML_DumperEx): """ self._channel_family_query = None
+ def _send_headers(self, error=0, init_compressed_stream=1): + log_debug(4, "is_closed", self._is_closed) + if self._is_closed: + raise Exception, "Trying to write to a closed connection" + if self._headers_sent: + return + self._headers_sent = 1 + if self.compress_level: + self.headers_out['Content-Encoding'] = 'gzip' + # Send the headers + if error: + # No compression + self.compress_level = 0 + self._raw_stream.content_type = 'text/xml' + for h, v in self.headers_out.items(): + self._raw_stream.headers_out[h] = str(v) + self._raw_stream.send_http_header() + # If need be, start gzipping + if self.compress_level and init_compressed_stream: + log_debug(4, "Compressing with factor %s" % self.compress_level) + self._compressed_stream = gzip.GzipFile(None, "wb", + self.compress_level, self._raw_stream) + + def send(self, data): + log_debug(3, "Sending %d bytes" % len(data)) + try: + self._send_headers() + if self._compressed_stream: + log_debug(4, "Sending through a compressed stream") + self._compressed_stream.write(data) + else: + self._raw_stream.write(data) + except IOError: + log_error("Client appears to have closed connection") + self.close() + raise dumper.ClosedConnectionError + log_debug(5, "Bytes sent", len(data)) + + write = send + + def close(self): + log_debug(2, "Closing") + if self._is_closed: + log_debug(3, "Already closed") + return + + if self._compressed_stream: + log_debug(5, "Closing a compressed stream") + try: + self._compressed_stream.close() + except IOError, e: + # Remote end has closed connection already + log_error("Error closing the stream", str(e)) + pass + self._compressed_stream = None + self._is_closed = 1 + log_debug(3, "Closed") + def set_channel_family_query(self, channel_labels=[]): if not channel_labels: # All null-pwned channel families diff --git a/backend/satellite_tools/disk_dumper/dumper.py b/backend/satellite_tools/disk_dumper/dumper.py index 57abde4..c081212 100644 --- a/backend/satellite_tools/disk_dumper/dumper.py +++ b/backend/satellite_tools/disk_dumper/dumper.py @@ -534,64 +534,6 @@ class XML_Dumper: return result
class XML_DumperEx(XML_Dumper): - def _send_headers(self, error=0, init_compressed_stream=1): - log_debug(4, "is_closed", self._is_closed) - if self._is_closed: - raise Exception, "Trying to write to a closed connection" - if self._headers_sent: - return - self._headers_sent = 1 - if self.compress_level: - self.headers_out['Content-Encoding'] = 'gzip' - # Send the headers - if error: - # No compression - self.compress_level = 0 - self._raw_stream.content_type = 'text/xml' - for h, v in self.headers_out.items(): - self._raw_stream.headers_out[h] = str(v) - self._raw_stream.send_http_header() - # If need be, start gzipping - if self.compress_level and init_compressed_stream: - log_debug(4, "Compressing with factor %s" % self.compress_level) - self._compressed_stream = gzip.GzipFile(None, "wb", - self.compress_level, self._raw_stream) - - def send(self, data): - log_debug(3, "Sending %d bytes" % len(data)) - try: - self._send_headers() - if self._compressed_stream: - log_debug(4, "Sending through a compressed stream") - self._compressed_stream.write(data) - else: - self._raw_stream.write(data) - except IOError: - log_error("Client appears to have closed connection") - self.close() - raise ClosedConnectionError - log_debug(5, "Bytes sent", len(data)) - - write = send - - def close(self): - log_debug(2, "Closing") - if self._is_closed: - log_debug(3, "Already closed") - return - - if self._compressed_stream: - log_debug(5, "Closing a compressed stream") - try: - self._compressed_stream.close() - except IOError, e: - # Remote end has closed connection already - log_error("Error closing the stream", str(e)) - pass - self._compressed_stream = None - self._is_closed = 1 - log_debug(3, "Closed") - # Dumper functions here def dump_channel_families(self, virt_filter=0): log_debug(2)
commit d8bdbfb07fc386882d7dced778aea6a2ae446bec Author: Michael Mraka michael.mraka@redhat.com Date: Tue Jun 8 15:36:15 2010 +0200
let's move XML_DumperEx methods to NonAuthenticatedDumper as it's the only subclass and then remove XML_DumperEx completely
diff --git a/backend/satellite_exporter/handlers/non_auth_dumper.py b/backend/satellite_exporter/handlers/non_auth_dumper.py index 9030af9..34197c3 100644 --- a/backend/satellite_exporter/handlers/non_auth_dumper.py +++ b/backend/satellite_exporter/handlers/non_auth_dumper.py @@ -41,7 +41,20 @@ class MissingPackageError(Exception): class NonAuthenticatedDumper(rhnHandler, dumper.XML_DumperEx): def __init__(self, req): rhnHandler.__init__(self) - dumper.XML_DumperEx.__init__(self, req) + self.compress_level = 5 + self.headers_out = UserDictCase() + self._raw_stream = req + self._raw_stream.content_type = 'application/octet-stream' + # State machine + self._headers_sent = 0 + self._is_closed = 0 + self._compressed_stream = None + # Redefine in subclasses + self._channel_family_query = """ + select pcf.channel_family_id, to_number(null) quantity + from rhnPublicChannelFamily pcf + """ + # Don't check for abuse self.check_for_abuse = 0
diff --git a/backend/satellite_tools/disk_dumper/dumper.py b/backend/satellite_tools/disk_dumper/dumper.py index b8d9b16..57abde4 100644 --- a/backend/satellite_tools/disk_dumper/dumper.py +++ b/backend/satellite_tools/disk_dumper/dumper.py @@ -534,21 +534,6 @@ class XML_Dumper: return result
class XML_DumperEx(XML_Dumper): - def __init__(self, req): - self.compress_level = 5 - self.headers_out = UserDictCase() - self._raw_stream = req - self._raw_stream.content_type = 'application/octet-stream' - # State machine - self._headers_sent = 0 - self._is_closed = 0 - self._compressed_stream = None - # Redefine in subclasses - self._channel_family_query = """ - select pcf.channel_family_id, to_number(null) quantity - from rhnPublicChannelFamily pcf - """ - def _send_headers(self, error=0, init_compressed_stream=1): log_debug(4, "is_closed", self._is_closed) if self._is_closed:
commit 924fd71169227161d3d804c7261a399392ca0145 Author: Tomas Lestach tlestach@redhat.com Date: Tue Jun 8 15:35:29 2010 +0200
601656 - fix channel permission check for errata.clone
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java index da694e3..1015da7 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/errata/ErrataHandler.java @@ -42,11 +42,13 @@ import com.redhat.rhn.frontend.xmlrpc.InvalidPackageException; import com.redhat.rhn.frontend.xmlrpc.MissingErrataAttributeException; import com.redhat.rhn.frontend.xmlrpc.NoChannelsSelectedException; import com.redhat.rhn.frontend.xmlrpc.NoSuchChannelException; +import com.redhat.rhn.frontend.xmlrpc.PermissionCheckFailureException; import com.redhat.rhn.frontend.xmlrpc.packages.PackageHelper; import com.redhat.rhn.manager.channel.ChannelManager; import com.redhat.rhn.manager.errata.ErrataManager; import com.redhat.rhn.manager.errata.cache.ErrataCacheManager; import com.redhat.rhn.manager.rhnpackage.PackageManager; +import com.redhat.rhn.manager.user.UserManager;
import org.apache.commons.collections.IteratorUtils; import org.apache.commons.lang.StringUtils; @@ -869,13 +871,11 @@ public class ErrataHandler extends BaseHandler { if (channel == null) { throw new NoSuchChannelException(); } - //do a user permission check - if (!ChannelManager.verifyChannelAdmin(loggedInUser, channel.getId())) { - throw new InvalidChannelRoleException(channel.getLabel()); + + if (!UserManager.verifyChannelAdmin(loggedInUser, channel)) { + throw new PermissionCheckFailureException(); }
- channel = ChannelFactory.lookupByIdAndUser(channel.getId(), loggedInUser); - List errataToClone = new ArrayList(); List toReturn = new ArrayList();
commit 878dcf859c4c87891c10537dea726305ea1d4b5d Author: Tomas Lestach tlestach@redhat.com Date: Tue Jun 8 14:39:18 2010 +0200
601656 - fix channel permission check for channel.software.mergePackages
diff --git a/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java index bf6b001..f8072e2 100644 --- a/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java +++ b/java/code/src/com/redhat/rhn/frontend/xmlrpc/channel/software/ChannelSoftwareHandler.java @@ -20,7 +20,6 @@ import com.redhat.rhn.common.db.datasource.ModeFactory; import com.redhat.rhn.common.db.datasource.SelectMode; import com.redhat.rhn.common.db.datasource.WriteMode; import com.redhat.rhn.common.hibernate.LookupException; -import com.redhat.rhn.common.localization.LocalizationService; import com.redhat.rhn.common.messaging.MessageQueue; import com.redhat.rhn.common.security.PermissionException; import com.redhat.rhn.domain.channel.Channel; @@ -1904,17 +1903,11 @@ public class ChannelSoftwareHandler extends BaseHandler {
Channel mergeFrom = lookupChannelByLabel(loggedInUser, mergeFromLabel); Channel mergeTo = lookupChannelByLabel(loggedInUser, mergeToLabel); - - try { - ChannelManager.verifyChannelAdmin(loggedInUser, mergeTo.getId()); - } - catch (InvalidChannelRoleException e) { - LocalizationService ls = LocalizationService.getInstance(); - throw new PermissionException(ls.getMessage( - "frontend.xmlrpc.channels.software.merge.permsfailure", - mergeTo.getLabel())); + + if (!UserManager.verifyChannelAdmin(loggedInUser, mergeTo)) { + throw new PermissionCheckFailureException(); } - + List<Package> differentPackages = new ArrayList<Package>();
Set<Package> toPacks = mergeTo.getPackages();
spacewalk-commits@lists.fedorahosted.org