Changes to 'refs/tags/spacewalk-schema-2.1.40-1'
by Milan Zazrivec
Tag 'spacewalk-schema-2.1.40-1' created by Milan Zazrivec <mzazrivec(a)redhat.com> at 2014-02-11 14:02 +0000
Tagging package [spacewalk-schema] version [2.1.40-1] in directory [schema/spacewalk/].
Changes since spacewalk-java-2.1.147-1:
Bo Maryniuk (1):
Datepicker UI unification: Errata pages
Matej Kollar (2):
Unified space before slash in void tags
Removed duplicate colons
Milan Zazrivec (4):
1063821 - avoid deadlocks when altering base channels via ssm
1063821 - fix rhn_channel.update_needed_cache() deadlock
1063821 - schema upgrade scripts
Automatic commit of package [spacewalk-schema] release [2.1.40-1].
Silvio Moioli (1):
Fix an ISE that could happen after clearing cookies (elaborator not bound)
Tomas Kasparek (1):
use normal checkbox
---
java/code/src/com/redhat/rhn/frontend/action/ssm/ProvisioningRemoteCommand.java | 2
java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp | 120
java/code/webapp/WEB-INF/pages/ssm/provisioning-remote-command.jsp | 1
java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp | 137 -
java/code/webapp/WEB-INF/pages/systems/probes/details.jsp | 2
rel-eng/packages/spacewalk-schema | 2
schema/spacewalk/oracle/packages/rhn_channel.pkb | 13
schema/spacewalk/oracle/packages/rhn_server.pkb | 6
schema/spacewalk/postgres/packages/rhn_channel.pkb | 15
schema/spacewalk/postgres/packages/rhn_server.pkb | 9
schema/spacewalk/spacewalk-schema.spec | 5
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/048-rhn_channel.pkb.oracle | 1252 +++++++++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/048-rhn_channel.pkb.postgresql | 1275 ++++++++++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/049-rhn_server.pkb.oracle | 790 ++++++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/049-rhn_server.pkb.postgresql | 829 ++++++
15 files changed, 4305 insertions(+), 153 deletions(-)
---
10 years, 3 months
rel-eng/packages schema/spacewalk
by Milan Zazrivec
rel-eng/packages/spacewalk-schema | 2 +-
schema/spacewalk/spacewalk-schema.spec | 5 ++++-
2 files changed, 5 insertions(+), 2 deletions(-)
New commits:
commit 1b6d0329d362b033e848f6d9169c99764bc90b72
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Tue Feb 11 15:02:50 2014 +0100
Automatic commit of package [spacewalk-schema] release [2.1.40-1].
diff --git a/rel-eng/packages/spacewalk-schema b/rel-eng/packages/spacewalk-schema
index 8dc827e..b41f0ad 100644
--- a/rel-eng/packages/spacewalk-schema
+++ b/rel-eng/packages/spacewalk-schema
@@ -1 +1 @@
-2.1.39-1 schema/spacewalk/
+2.1.40-1 schema/spacewalk/
diff --git a/schema/spacewalk/spacewalk-schema.spec b/schema/spacewalk/spacewalk-schema.spec
index bccf455..5e2187e 100644
--- a/schema/spacewalk/spacewalk-schema.spec
+++ b/schema/spacewalk/spacewalk-schema.spec
@@ -4,7 +4,7 @@ Name: spacewalk-schema
Group: Applications/Internet
Summary: Oracle SQL schema for Spacewalk server
-Version: 2.1.39
+Version: 2.1.40
Release: 1%{?dist}
Source0: %{name}-%{version}.tar.gz
@@ -71,6 +71,9 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man1/spacewalk-sql*
%changelog
+* Tue Feb 11 2014 Milan Zazrivec <mzazrivec(a)redhat.com> 2.1.40-1
+- 1063821 - deadlock fix
+
* Tue Feb 04 2014 Milan Zazrivec <mzazrivec(a)redhat.com> 2.1.39-1
- upgrade script for Fedora 20 GPG key
10 years, 3 months
3 commits - schema/spacewalk
by Milan Zazrivec
schema/spacewalk/oracle/packages/rhn_channel.pkb | 13
schema/spacewalk/oracle/packages/rhn_server.pkb | 6
schema/spacewalk/postgres/packages/rhn_channel.pkb | 15
schema/spacewalk/postgres/packages/rhn_server.pkb | 9
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/048-rhn_channel.pkb.oracle | 1252 +++++++++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/048-rhn_channel.pkb.postgresql | 1275 ++++++++++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/049-rhn_server.pkb.oracle | 790 ++++++
schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/049-rhn_server.pkb.postgresql | 829 ++++++
8 files changed, 4187 insertions(+), 2 deletions(-)
New commits:
commit 79d339ffcd42e5e02b464097fea5be595fbe26c3
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Tue Feb 11 14:59:28 2014 +0100
1063821 - schema upgrade scripts
diff --git a/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/048-rhn_channel.pkb.oracle b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/048-rhn_channel.pkb.oracle
new file mode 100644
index 0000000..74680f3
--- /dev/null
+++ b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/048-rhn_channel.pkb.oracle
@@ -0,0 +1,1252 @@
+--
+-- Copyright (c) 2008--2013 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.
+--
+
+CREATE OR REPLACE
+PACKAGE BODY rhn_channel
+IS
+ body_version varchar2(100) := '';
+
+ -- Cursor that fetches all the possible base channels for a
+ -- (server_arch_id, release, org_id) combination
+ cursor base_channel_cursor(
+ release_in in varchar2,
+ server_arch_id_in in number,
+ org_id_in in number
+ ) return rhnChannel%ROWTYPE is
+ select distinct c.*
+ from rhnOrgDistChannelMap odcm,
+ rhnServerChannelArchCompat scac,
+ rhnChannel c
+ where c.parent_channel is null
+ and c.id = odcm.channel_id
+ and c.channel_arch_id = odcm.channel_arch_id
+ and odcm.release = release_in
+ and odcm.for_org_id = org_id_in
+ and scac.server_arch_id = server_arch_id_in
+ and scac.channel_arch_id = c.channel_arch_id;
+
+ procedure obtain_read_lock(channel_family_id_in in number, org_id_in in number)
+ is
+ read_lock timestamp with local time zone;
+
+ begin
+ select created into read_lock
+ from rhnPrivateChannelFamily
+ where channel_family_id = channel_family_id_in and org_id = org_id_in
+ for update;
+ end obtain_read_lock;
+
+ PROCEDURE subscribe_server(server_id_in IN NUMBER, channel_id_in NUMBER, immediate_in NUMBER := 1, user_id_in in number := null, recalcfamily_in number := 1)
+ IS
+ channel_parent_val rhnChannel.parent_channel%TYPE;
+ parent_subscribed BOOLEAN;
+ server_has_base_chan BOOLEAN;
+ server_already_in_chan BOOLEAN;
+ channel_family_id_val NUMBER;
+ server_org_id_val NUMBER;
+ available_subscriptions NUMBER;
+ available_fve_subs NUMBER;
+ consenting_user NUMBER;
+ allowed number := 0;
+ is_fve CHAR(1) := 'N';
+ update_lock number;
+ BEGIN
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
+ if user_id_in is not null then
+ allowed := rhn_channel.user_role_check(channel_id_in, user_id_in, 'subscribe');
+ else
+ allowed := 1;
+ end if;
+
+ if allowed = 0 then
+ rhn_exception.raise_exception('no_subscribe_permissions');
+ end if;
+
+
+ SELECT parent_channel INTO channel_parent_val FROM rhnChannel WHERE id = channel_id_in;
+
+ IF channel_parent_val IS NOT NULL
+ THEN
+ -- child channel; if attempting to cross-subscribe a child to the wrong base, silently ignore
+ parent_subscribed := FALSE;
+
+ FOR check_subscription IN check_server_subscription(server_id_in, channel_parent_val)
+ LOOP
+ parent_subscribed := TRUE;
+ END LOOP check_subscription;
+
+ IF NOT parent_subscribed
+ THEN
+ RETURN;
+ END IF;
+ ELSE
+ -- base channel
+ server_has_base_chan := FALSE;
+ FOR base IN server_base_subscriptions(server_id_in)
+ LOOP
+ server_has_base_chan := TRUE;
+ END LOOP base;
+
+ IF server_has_base_chan
+ THEN
+ rhn_exception.raise_exception('channel_server_one_base');
+ END IF;
+ END IF;
+
+ FOR check_subscription IN check_server_subscription(server_id_in, channel_id_in)
+ LOOP
+ server_already_in_chan := TRUE;
+ END LOOP check_subscription;
+
+ IF server_already_in_chan
+ THEN
+ RETURN;
+ END IF;
+
+ channel_family_id_val := rhn_channel.family_for_channel(channel_id_in);
+ IF channel_family_id_val IS NULL
+ THEN
+ rhn_exception.raise_exception('channel_subscribe_no_family');
+ END IF;
+
+ --
+ -- Use the org_id of the server only if the org_id of the channel = NULL.
+ -- This is required for subscribing to shared channels.
+ --
+ SELECT NVL(org_id, (SELECT org_id FROM rhnServer WHERE id = server_id_in))
+ INTO server_org_id_val
+ FROM rhnChannel
+ WHERE id = channel_id_in;
+
+ begin
+ obtain_read_lock(channel_family_id_val, server_org_id_val);
+ exception
+ when no_data_found then
+ rhn_exception.raise_exception('channel_family_no_subscriptions');
+ end;
+
+ available_subscriptions := rhn_channel.available_family_subscriptions(channel_family_id_val, server_org_id_val);
+ available_fve_subs := rhn_channel.available_fve_family_subs(channel_family_id_val, server_org_id_val);
+
+ IF available_subscriptions IS NULL OR
+ available_subscriptions > 0 or
+ can_server_consume_virt_channl(server_id_in, channel_family_id_val) = 1 OR
+ (available_fve_subs > 0 AND can_server_consume_fve(server_id_in) = 1)
+ THEN
+ if can_server_consume_virt_channl(server_id_in, channel_family_id_val) = 0 AND available_fve_subs > 0 AND can_server_consume_fve(server_id_in) = 1 THEN
+ is_fve := 'Y';
+ END IF;
+ insert into rhnServerHistory (id,server_id,summary,details) (
+ select rhn_event_id_seq.nextval,
+ server_id_in,
+ 'subscribed to channel ' || SUBSTR(c.label, 0, 106),
+ c.label
+ from rhnChannel c
+ where c.id = channel_id_in
+ );
+ UPDATE rhnServer SET channels_changed = current_timestamp WHERE id = server_id_in;
+ INSERT INTO rhnServerChannel (server_id, channel_id, is_fve) VALUES (server_id_in, channel_id_in, is_fve);
+ IF recalcfamily_in > 0
+ THEN
+ rhn_channel.update_family_counts(channel_family_id_val, server_org_id_val);
+ END IF;
+ queue_server(server_id_in, immediate_in);
+ ELSE
+ rhn_exception.raise_exception('channel_family_no_subscriptions');
+ END IF;
+
+ END subscribe_server;
+
+
+
+ FUNCTION can_convert_to_fve(server_id_in IN NUMBER, channel_family_id_val IN NUMBER)
+ RETURN NUMBER
+ IS
+ CURSOR fve_convertible_entries IS
+ select 1 from
+ rhnServerFveCapable cap
+ where cap.server_id = server_id_in
+ AND cap.channel_family_id = channel_family_id_val;
+ BEGIN
+ FOR entry IN fve_convertible_entries LOOP
+ return 1;
+ END LOOP;
+ RETURN 0;
+ END can_convert_to_fve;
+
+
+
+ -- Converts server channel_family to use a flex entitlement
+ PROCEDURE convert_to_fve(server_id_in IN NUMBER, channel_family_id_val IN NUMBER)
+ IS
+ available_fve_subs NUMBER;
+ server_org_id_val NUMBER;
+ BEGIN
+
+ --
+ -- Use the org_id of the server only if the org_id of the channel = NULL.
+ -- This is required for subscribing to shared channels.
+ --
+ SELECT org_id
+ INTO server_org_id_val
+ FROM rhnServer
+ WHERE id = server_id_in;
+
+ begin
+ obtain_read_lock(channel_family_id_val, server_org_id_val);
+ exception
+ when no_data_found then
+ rhn_exception.raise_exception('channel_family_no_subscriptions');
+ end;
+ IF (can_convert_to_fve(server_id_in, channel_family_id_val ) = 0)
+ THEN
+ rhn_exception.raise_exception('server_cannot_convert_to_flex');
+ END IF;
+
+ available_fve_subs := rhn_channel.available_fve_family_subs(channel_family_id_val, server_org_id_val);
+
+ IF (available_fve_subs > 0)
+ THEN
+
+ insert into rhnServerHistory (id,server_id,summary,details) (
+ select rhn_event_id_seq.nextval,
+ server_id_in,
+ 'converted to flex entitlement' || SUBSTR(cf.label, 0, 99),
+ cf.label
+ from rhnChannelFamily cf
+ where cf.id = channel_family_id_val
+ );
+
+ UPDATE rhnServerChannel sc set sc.is_fve = 'Y'
+ where sc.server_id = server_id_in and
+ sc.channel_id in
+ (select cfm.channel_id from rhnChannelFamilyMembers cfm
+ where cfm.CHANNEL_FAMILY_ID = channel_family_id_val);
+
+ rhn_channel.update_family_counts(channel_family_id_val, server_org_id_val);
+ ELSE
+ rhn_exception.raise_exception('not_enough_flex_entitlements');
+ END IF;
+
+ END convert_to_fve;
+
+ function can_server_consume_virt_channl(
+ server_id_in in number,
+ family_id_in in number )
+ return number
+ is
+
+ cursor server_virt_families is
+ select vi.virtual_system_id, cfvsl.channel_family_id
+ from
+ rhnChannelFamilyVirtSubLevel cfvsl,
+ rhnSGTypeVirtSubLevel sgtvsl,
+ rhnVirtualInstance vi
+ where
+ vi.virtual_system_id = server_id_in
+ and sgtvsl.virt_sub_level_id = cfvsl.virt_sub_level_id
+ and cfvsl.channel_family_id = family_id_in
+ and exists (
+ select 1
+ from rhnServerEntitlementView sev
+ where vi.host_system_id = sev.server_id
+ and sev.server_group_type_id = sgtvsl.server_group_type_id );
+ begin
+
+ for server_virt_family in server_virt_families loop
+ return 1;
+ end loop;
+
+ return 0;
+
+ end;
+
+ FUNCTION can_server_consume_fve(server_id_in IN NUMBER)
+ RETURN NUMBER
+ IS
+ CURSOR vi_entries IS
+ SELECT 1
+ FROM rhnVirtualInstance vi
+ WHERE vi.virtual_system_id = server_id_in;
+ vi_count NUMBER;
+
+ BEGIN
+ FOR vi_entry IN VI_ENTRIES LOOP
+ return 1;
+ END LOOP;
+ RETURN 0;
+ END;
+
+ function guess_server_base(
+ server_id_in in number
+ ) RETURN number is
+ cursor server_cursor is
+ select s.server_arch_id, s.release, s.org_id
+ from rhnServer s
+ where s.id = server_id_in;
+ begin
+ for s in server_cursor loop
+ for channel in base_channel_cursor(s.release,
+ s.server_arch_id, s.org_id)
+ loop
+ return channel.id;
+ end loop base_channel_cursor;
+ end loop server_cursor;
+ -- Server not found, or no base channel applies to it
+ return null;
+ end;
+
+ -- Private function
+ function normalize_server_arch(server_arch_in in varchar2)
+ return varchar2
+ deterministic
+ is
+ suffix VARCHAR2(128) := '-redhat-linux';
+ suffix_len NUMBER := length(suffix);
+ begin
+ if server_arch_in is NULL then
+ return NULL;
+ end if;
+ if instr(server_arch_in, '-') > 0
+ then
+ -- Suffix already present
+ return server_arch_in;
+ end if;
+ return server_arch_in || suffix;
+ end normalize_server_arch;
+
+ --
+ --
+ -- Raises:
+ -- server_arch_not_found
+ -- no_subscribe_permissions
+ function base_channel_for_release_arch(
+ release_in in varchar2,
+ server_arch_in in varchar2,
+ org_id_in in number := -1,
+ user_id_in in number := null
+ ) return number is
+ server_arch varchar2(256) := normalize_server_arch(server_arch_in);
+ server_arch_id number;
+ begin
+ -- Look up the server arch
+ begin
+ select id
+ into server_arch_id
+ from rhnServerArch
+ where label = server_arch;
+ exception
+ when no_data_found then
+ rhn_exception.raise_exception('server_arch_not_found');
+ end;
+ return base_channel_rel_archid(release_in, server_arch_id,
+ org_id_in, user_id_in);
+ end base_channel_for_release_arch;
+
+ function base_channel_rel_archid(
+ release_in in varchar2,
+ server_arch_id_in in number,
+ org_id_in in number := -1,
+ user_id_in in number := null
+ ) return number is
+ denied_channel_id number := null;
+ valid_org_id number := org_id_in;
+ valid_user_id number := user_id_in;
+ channel_subscribable number;
+ begin
+ if org_id_in = -1 and user_id_in is not null then
+ -- Get the org id from the user id
+ begin
+ select org_id
+ into valid_org_id
+ from web_contact
+ where id = user_id_in;
+ exception
+ when no_data_found then
+ -- User doesn't exist
+ -- XXX Only list public stuff for now
+ valid_user_id := null;
+ valid_org_id := -1;
+ end;
+ end if;
+
+ for c in base_channel_cursor(release_in, server_arch_id_in, valid_org_id)
+ loop
+ -- This row is a possible match
+ if valid_user_id is null then
+ -- User ID not specified, so no user to channel permissions to
+ -- check
+ return c.id;
+ end if;
+
+ -- Check user to channel permissions
+ select loose_user_role_check(c.id, user_id_in, 'subscribe')
+ into channel_subscribable
+ from dual;
+
+ if channel_subscribable = 1 then
+ return c.id;
+ end if;
+
+ -- Base channel exists, but is not subscribable; keep trying
+ denied_channel_id := c.id;
+ end loop base_channel_fetch;
+
+ if denied_channel_id is not null then
+ rhn_exception.raise_exception('no_subscribe_permissions');
+ end if;
+ -- No base channel applies
+ return NULL;
+ end base_channel_rel_archid;
+
+ PROCEDURE clear_subscriptions(server_id_in IN NUMBER, deleting_server IN NUMBER := 0,
+ update_family_countsYN IN NUMBER := 1)
+ IS
+ cursor server_channels(server_id_in in number) is
+ select s.org_id, sc.channel_id, cfm.channel_family_id
+ from rhnServer s,
+ rhnServerChannel sc,
+ rhnChannelFamilyMembers cfm
+ where s.id = server_id_in
+ and s.id = sc.server_id
+ and sc.channel_id = cfm.channel_id
+ order by cfm.channel_family_id;
+ last_channel_family_id rhnChannelFamilyMembers.channel_family_id%type := -1;
+ last_channel_org_id rhnServer.org_id%type := -1;
+ BEGIN
+ for channel in server_channels(server_id_in)
+ loop
+ unsubscribe_server(server_id_in, channel.channel_id, 1, 1, deleting_server, 0);
+ if update_family_countsYN > 0
+ and channel.channel_family_id != last_channel_family_id then
+ -- update family counts only once
+ -- after all channels with same family has been fetched
+ if last_channel_family_id != -1 then
+ update_family_counts(last_channel_family_id, last_channel_org_id);
+ end if;
+ last_channel_family_id := channel.channel_family_id;
+ last_channel_org_id := channel.org_id;
+ end if;
+ end loop channel;
+ if update_family_countsYN > 0 and last_channel_family_id != -1 then
+ -- update the last family fetched
+ update_family_counts(last_channel_family_id, last_channel_org_id);
+ end if;
+ END clear_subscriptions;
+
+ PROCEDURE unsubscribe_server(server_id_in IN NUMBER, channel_id_in NUMBER, immediate_in NUMBER := 1, unsubscribe_children_in number := 0,
+ deleting_server IN NUMBER := 0,
+ update_family_countsYN IN NUMBER := 1)
+ IS
+ channel_family_id_val NUMBER;
+ server_org_id_val NUMBER;
+ available_subscriptions NUMBER;
+ server_already_in_chan BOOLEAN;
+ update_lock number;
+ cursor channel_family_is_proxy(channel_family_id_in in number) is
+ select 1
+ from rhnChannelFamily
+ where id = channel_family_id_in
+ and label = 'rhn-proxy';
+ cursor channel_family_is_satellite(channel_family_id_in in number) is
+ select 1
+ from rhnChannelFamily
+ where id = channel_family_id_in
+ and label = 'rhn-satellite';
+ -- this is *EXACTLY* like check_server_parent_membership, but if we recurse
+ -- with the package-level one, we get a "cursor already open", so we need a
+ -- copy on our call stack instead. GROAN.
+ cursor local_chk_server_parent_memb (
+ server_id_in number,
+ channel_id_in number ) is
+ select c.id
+ from rhnChannel c,
+ rhnServerChannel sc
+ where 1=1
+ and c.parent_channel = channel_id_in
+ and c.id = sc.channel_id
+ and sc.server_id = server_id_in;
+ BEGIN
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
+ FOR child IN local_chk_server_parent_memb(server_id_in, channel_id_in)
+ LOOP
+ if unsubscribe_children_in = 1 then
+ unsubscribe_server(server_id_in => server_id_in,
+ channel_id_in => child.id,
+ immediate_in => immediate_in,
+ unsubscribe_children_in => unsubscribe_children_in,
+ deleting_server => deleting_server,
+ update_family_countsYN => update_family_countsYN);
+ else
+ rhn_exception.raise_exception('channel_unsubscribe_child_exists');
+ end if;
+ END LOOP child;
+
+ server_already_in_chan := FALSE;
+
+ FOR check_subscription IN check_server_subscription(server_id_in, channel_id_in)
+ LOOP
+ server_already_in_chan := TRUE;
+ END LOOP check_subscription;
+
+ IF NOT server_already_in_chan
+ THEN
+ RETURN;
+ END IF;
+
+ if deleting_server = 0 then
+
+ insert into rhnServerHistory (id,server_id,summary,details) (
+ select rhn_event_id_seq.nextval,
+ server_id_in,
+ 'unsubscribed from channel ' || SUBSTR(c.label, 0, 106),
+ c.label
+ from rhnChannel c
+ where c.id = channel_id_in
+ );
+
+ UPDATE rhnServer SET channels_changed = current_timestamp WHERE id = server_id_in;
+ end if;
+
+ DELETE FROM rhnServerChannel WHERE server_id = server_id_in AND channel_id = channel_id_in;
+
+ if deleting_server = 0 then
+ queue_server(server_id_in, immediate_in);
+ end if;
+
+ channel_family_id_val := rhn_channel.family_for_channel(channel_id_in);
+ IF channel_family_id_val IS NULL
+ THEN
+ rhn_exception.raise_exception('channel_unsubscribe_no_family');
+ END IF;
+
+ for ignore in channel_family_is_satellite(channel_family_id_val) loop
+ delete from rhnSatelliteInfo where server_id = server_id_in;
+ end loop;
+
+ for ignore in channel_family_is_proxy(channel_family_id_val) loop
+ delete from rhnProxyInfo where server_id = server_id_in;
+ end loop;
+ SELECT org_id INTO server_org_id_val
+ FROM rhnServer
+ WHERE id = server_id_in;
+
+ if update_family_countsYN = 1 then
+ rhn_channel.update_family_counts(channel_family_id_val, server_org_id_val);
+ end if;
+ END unsubscribe_server;
+
+
+ FUNCTION family_for_channel(channel_id_in IN NUMBER)
+ RETURN NUMBER
+ IS
+ channel_family_id_val NUMBER;
+ BEGIN
+ SELECT channel_family_id INTO channel_family_id_val
+ FROM rhnChannelFamilyMembers
+ WHERE channel_id = channel_id_in;
+
+ RETURN channel_family_id_val;
+ EXCEPTION
+ WHEN NO_DATA_FOUND
+ THEN
+ RETURN NULL;
+ END family_for_channel;
+
+ FUNCTION available_family_subscriptions(channel_family_id_in IN NUMBER, org_id_in IN NUMBER)
+ RETURN NUMBER
+ IS
+ cfp channel_family_perm_cursor%ROWTYPE;
+ current_members_val NUMBER;
+ max_members_val NUMBER;
+ found NUMBER;
+ BEGIN
+ IF NOT channel_family_perm_cursor%ISOPEN
+ THEN
+ OPEN channel_family_perm_cursor(channel_family_id_in, org_id_in);
+ END IF;
+
+ FETCH channel_family_perm_cursor INTO cfp;
+
+ WHILE channel_family_perm_cursor%FOUND
+ LOOP
+ found := 1;
+
+ current_members_val := cfp.current_members;
+ max_members_val := cfp.max_members;
+
+ FETCH channel_family_perm_cursor INTO cfp;
+ END LOOP;
+
+ IF channel_family_perm_cursor%ISOPEN
+ THEN
+ CLOSE channel_family_perm_cursor;
+ END IF;
+
+ -- not found: either the channel fam doesn't have an entry in cfp, or the org doesn't have access to it.
+ -- either way, there are no available subscriptions
+
+ IF found IS NULL
+ THEN
+ RETURN 0;
+ END IF;
+
+ -- null max members? in that case, pass it on; NULL means infinite
+ IF max_members_val IS NULL
+ THEN
+ RETURN NULL;
+ END IF;
+
+ -- otherwise, return the delta
+ RETURN max_members_val - current_members_val;
+ END available_family_subscriptions;
+
+ FUNCTION available_fve_family_subs(channel_family_id_in IN NUMBER, org_id_in IN NUMBER)
+ RETURN NUMBER
+ IS
+ cfp channel_family_perm_cursor%ROWTYPE;
+ fve_current_members_val NUMBER;
+ fve_max_members_val NUMBER;
+ found NUMBER;
+
+ BEGIN
+ IF NOT channel_family_perm_cursor%ISOPEN THEN
+ OPEN channel_family_perm_cursor(channel_family_id_in, org_id_in);
+ END IF;
+
+ FETCH channel_family_perm_cursor INTO cfp;
+
+ WHILE channel_family_perm_cursor%FOUND LOOP
+ found := 1;
+ fve_current_members_val := cfp.fve_current_members;
+ fve_max_members_val := cfp.fve_max_members;
+ FETCH channel_family_perm_cursor INTO cfp;
+ END LOOP;
+
+ IF channel_family_perm_cursor%ISOPEN THEN
+ CLOSE channel_family_perm_cursor;
+ END IF;
+
+ IF found IS NULL THEN
+ RETURN 0;
+ END IF;
+
+ IF fve_max_members_val IS NULL THEN
+ RETURN NULL;
+ END IF;
+
+ RETURN fve_max_members_val - fve_current_members_val;
+
+ END available_fve_family_subs;
+
+
+ -- *******************************************************************
+ -- FUNCTION: channel_family_current_members
+ -- Calculates and returns the actual count of systems consuming
+ -- physical channel subscriptions.
+ -- Called by: update_family_counts
+ -- rhn_entitlements.repoll_virt_guest_entitlements
+ -- *******************************************************************
+ function channel_family_current_members(channel_family_id_in IN NUMBER,
+ org_id_in IN NUMBER)
+ return number
+ is
+ current_members_count number := 0;
+ begin
+ select count(distinct server_id)
+ into current_members_count
+ from rhnChannelFamilyServerPhysical cfsp
+ where cfsp.channel_family_id = channel_family_id_in
+ and cfsp.customer_id = org_id_in;
+ return current_members_count;
+ end;
+
+
+ function cfam_curr_fve_members(
+ channel_family_id_in IN NUMBER,
+ org_id_in IN NUMBER)
+ return number
+ is
+ current_members_count number := 0;
+
+ begin
+ select count(sc.server_id)
+ into current_members_count
+ from rhnServerChannel sc,
+ rhnChannelFamilyMembers cfm,
+ rhnServer s
+ where s.org_id = org_id_in
+ and s.id = sc.server_id
+ and cfm.channel_family_id = channel_family_id_in
+ and cfm.channel_id = sc.channel_id
+ and exists (
+ select 1
+ from rhnChannelFamilyServerFve cfsp
+ where cfsp.CHANNEL_FAMILY_ID = channel_family_id_in
+ and cfsp.server_id = s.id
+ );
+
+ return current_members_count;
+ end;
+ PROCEDURE update_family_counts(channel_family_id_in IN NUMBER,
+ org_id_in IN NUMBER)
+ IS
+ BEGIN
+ update rhnPrivateChannelFamily
+ set current_members = ( channel_family_current_members(channel_family_id_in, org_id_in)),
+ fve_current_members = ( cfam_curr_fve_members(channel_family_id_in, org_id_in))
+ where org_id = org_id_in
+ and channel_family_id = channel_family_id_in;
+ END update_family_counts;
+
+ PROCEDURE update_group_family_counts(group_label_in IN VARCHAR2,
+ org_id_in IN NUMBER)
+ IS
+ BEGIN
+ FOR i IN (
+ SELECT DISTINCT CFM.channel_family_id, SG.org_id
+ FROM rhnChannelFamilyMembers CFM
+ JOIN rhnServerChannel SC
+ ON SC.channel_id = CFM.channel_id
+ JOIN rhnServerGroupMembers SGM
+ ON SC.server_id = SGM.server_id
+ JOIN rhnServerGroup SG
+ ON SGM.server_group_id = SG.id
+ JOIN rhnServerGroupType SGT
+ ON SG.group_type = SGT.id
+ WHERE SGT.label = group_label_in
+ AND SG.org_id = org_id_in
+ AND SGT.is_base = 'Y'
+ ) LOOP
+ rhn_channel.update_family_counts(i.channel_family_id, i.org_id);
+ END LOOP;
+ END update_group_family_counts;
+
+ FUNCTION available_chan_subscriptions(channel_id_in IN NUMBER,
+ org_id_in IN NUMBER)
+ RETURN NUMBER
+ IS
+ channel_family_id_val NUMBER;
+ BEGIN
+ SELECT channel_family_id INTO channel_family_id_val
+ FROM rhnChannelFamilyMembers
+ WHERE channel_id = channel_id_in;
+
+ RETURN rhn_channel.available_family_subscriptions(
+ channel_family_id_val, org_id_in);
+ END available_chan_subscriptions;
+
+ FUNCTION available_fve_chan_subs(channel_id_in IN NUMBER,
+ org_id_in IN NUMBER)
+ RETURN NUMBER
+ IS
+ channel_family_id_val NUMBER;
+
+ BEGIN
+ SELECT channel_family_id INTO channel_family_id_val
+ FROM rhnChannelFamilyMembers
+ WHERE channel_id = channel_id_in;
+
+ RETURN rhn_channel.available_fve_family_subs( channel_family_id_val, org_id_in);
+ END available_fve_chan_subs;
+
+ procedure unsubscribe_server_from_family(server_id_in in number,
+ channel_family_id_in in number)
+ is
+ begin
+ delete
+ from rhnServerChannel rsc
+ where rsc.server_id = server_id_in
+ and channel_id in (
+ select rcfm.channel_id
+ from rhnChannelFamilyMembers rcfm
+ where rcfm.channel_family_id = channel_family_id_in);
+ end;
+
+ function get_org_id(channel_id_in in number)
+ return number
+ is
+ org_id_out number;
+ begin
+ select org_id into org_id_out
+ from rhnChannel
+ where id = channel_id_in;
+
+ return org_id_out;
+ end get_org_id;
+
+ function get_cfam_org_access(cfam_id_in in number, org_id_in in number)
+ return number
+ is
+ cursor families is
+ select 1
+ from rhnOrgChannelFamilyPermissions cfp
+ where cfp.org_id = org_id_in;
+ begin
+ -- the idea: if we get past this query,
+ -- the user has the role, else catch the exception and return 0
+ for family in families loop
+ return 1;
+ end loop;
+ return 0;
+ end;
+
+ function get_org_access(channel_id_in in number, org_id_in in number)
+ return number
+ is
+ throwaway number;
+ begin
+ -- the idea: if we get past this query,
+ -- the org has access to the channel, else catch the exception and return 0
+ select distinct 1 into throwaway
+ from rhnChannelFamilyMembers CFM,
+ rhnOrgChannelFamilyPermissions CFP
+ where cfp.org_id = org_id_in
+ and CFM.channel_family_id = CFP.channel_family_id
+ and CFM.channel_id = channel_id_in
+ and (CFP.max_members > 0 or CFP.max_members is null or CFP.fve_max_members > 0 or CFP.fve_max_members is null or CFP.org_id = 1);
+
+ return 1;
+ exception
+ when no_data_found
+ then
+ return 0;
+ end;
+
+ -- check if a user has a given role, or if such a role is inferrable
+ -- returns NULL if OK, error message otherwise
+ function user_role_check_debug(channel_id_in in number,
+ user_id_in in number,
+ role_in in varchar2)
+ return varchar2
+ is
+ org_id number;
+ begin
+ org_id := rhn_user.get_org_id(user_id_in);
+
+ -- channel might be shared
+ if role_in = 'subscribe' and
+ rhn_channel.shared_user_role_check(channel_id_in, user_id_in, role_in) = 1 then
+ return NULL;
+ end if;
+
+ if role_in = 'manage' and
+ NVL(rhn_channel.get_org_id(channel_id_in), -1) <> org_id then
+ return 'channel_not_owned';
+ end if;
+
+ if role_in = 'subscribe' and
+ rhn_channel.get_org_access(channel_id_in, org_id) = 0 then
+ return 'channel_not_available';
+ end if;
+
+ -- channel admins have all roles
+ if rhn_user.check_role_implied(user_id_in, 'channel_admin') = 1 then
+ return NULL;
+ end if;
+
+ -- the subscribe permission is inferred
+ -- UNLESS the not_globally_subscribable flag is set
+ if role_in = 'subscribe'
+ then
+ if rhn_channel.org_channel_setting(channel_id_in,
+ org_id,
+ 'not_globally_subscribable') = 0 then
+ return NULL;
+ end if;
+ end if;
+
+ -- all other roles (manage right now) are explicitly granted
+ if rhn_channel.direct_user_role_check(channel_id_in,
+ user_id_in, role_in) = 1 then
+ return NULL;
+ end if;
+ return 'direct_permission';
+ end;
+
+ -- same as above, but with 1/0 output; useful in views, etc
+ function user_role_check(channel_id_in in number, user_id_in in number, role_in in varchar2)
+ return number
+ is
+ begin
+ if rhn_channel.user_role_check_debug(channel_id_in,
+ user_id_in, role_in) is NULL then
+ return 1;
+ else
+ return 0;
+ end if;
+ end;
+
+ --
+ -- For multiorg phase II, this function simply checks to see if the user's
+ -- has a trust relationship that includes this channel by id.
+ --
+ function shared_user_role_check(channel_id in number, user_id in number, role in varchar2)
+ return number
+ is
+ n number;
+ oid number;
+ begin
+ oid := rhn_user.get_org_id(user_id);
+ select 1 into n
+ from rhnSharedChannelView s
+ where s.id = channel_id and s.org_trust_id = oid;
+ return 1;
+ exception
+ when no_data_found then
+ return 0;
+ end;
+
+ -- same as above, but returns 1 if user_id_in is null
+ -- This is useful in queries where user_id is not specified
+ function loose_user_role_check(channel_id_in in number, user_id_in in number, role_in in varchar2)
+ return number
+ is
+ begin
+ if user_id_in is null then
+ return 1;
+ end if;
+ return user_role_check(channel_id_in, user_id_in, role_in);
+ end loose_user_role_check;
+
+ -- directly checks the table, no inferred permissions
+ function direct_user_role_check(channel_id_in in number, user_id_in in number, role_in in varchar2)
+ return number
+ is
+ throwaway number;
+ begin
+ -- the idea: if we get past this query, the user has the role, else catch the exception and return 0
+ select 1 into throwaway
+ from rhnChannelPermissionRole CPR,
+ rhnChannelPermission CP
+ where CP.user_id = user_id_in
+ and CP.channel_id = channel_id_in
+ and CPR.label = role_in
+ and CP.role_id = CPR.id;
+
+ return 1;
+ exception
+ when no_data_found
+ then
+ return 0;
+ end;
+
+ -- check if an org has a certain setting
+ function org_channel_setting(channel_id_in in number, org_id_in in number, setting_in in varchar2)
+ return number
+ is
+ throwaway number;
+ begin
+ -- the idea: if we get past this query, the org has the setting, else catch the exception and return 0
+ select 1 into throwaway
+ from rhnOrgChannelSettingsType OCST,
+ rhnOrgChannelSettings OCS
+ where OCS.org_id = org_id_in
+ and OCS.channel_id = channel_id_in
+ and OCST.label = setting_in
+ and OCS.setting_id = OCST.id;
+
+ return 1;
+ exception
+ when no_data_found
+ then
+ return 0;
+ end;
+
+ FUNCTION channel_priority(channel_id_in IN number)
+ RETURN number
+ IS
+ channel_name varchar2(256);
+ priority number;
+ end_of_life_val timestamp with local time zone;
+ org_id_val number;
+ BEGIN
+
+ select name, end_of_life, org_id
+ into channel_name, end_of_life_val, org_id_val
+ from rhnChannel
+ where id = channel_id_in;
+
+ if end_of_life_val is not null then
+ return -400;
+ end if;
+
+ if channel_name like 'Red Hat Enterprise Linux%' or channel_name like 'RHEL%' then
+ priority := 1000;
+ if channel_name not like '%Beta%' then
+ priority := priority + 1000;
+ end if;
+
+ priority := priority +
+ case
+ when channel_name like '%v. 5%' then 600
+ when channel_name like '%v. 4%' then 500
+ when channel_name like '%v. 3%' then 400
+ when channel_name like '%v. 2%' then 300
+ when channel_name like '%v. 1%' then 200
+ else 0
+ end;
+
+ priority := priority +
+ case
+ when channel_name like 'Red Hat Enterprise Linux (v. 5%' then 60
+ when (channel_name like '%AS%' and channel_name not like '%Extras%') then 50
+ when (channel_name like '%ES%' and channel_name not like '%Extras%') then 40
+ when (channel_name like '%WS%' and channel_name not like '%Extras%') then 30
+ when (channel_name like '%Desktop%' and channel_name not like '%Extras%') then 20
+ when channel_name like '%Extras%' then 10
+ else 0
+ end;
+
+ priority := priority +
+ case
+ when channel_name like '%)' then 5
+ else 0
+ end;
+
+ priority := priority +
+ case
+ when channel_name like '%32-bit x86%' then 4
+ when channel_name like '%64-bit Intel Itanium%' then 3
+ when channel_name like '%64-bit AMD64/Intel EM64T%' then 2
+ else 0
+ end;
+ elsif channel_name like 'Red Hat Desktop%' then
+ priority := 900;
+
+ if channel_name not like '%Beta%' then
+ priority := priority + 50;
+ end if;
+
+ priority := priority +
+ case
+ when channel_name like '%v. 4%' then 40
+ when channel_name like '%v. 3%' then 30
+ when channel_name like '%v. 2%' then 20
+ when channel_name like '%v. 1%' then 10
+ else 0
+ end;
+
+ priority := priority +
+ case
+ when channel_name like '%32-bit x86%' then 4
+ when channel_name like '%64-bit Intel Itanium%' then 3
+ when channel_name like '%64-bit AMD64/Intel EM64T%' then 2
+ else 0
+ end;
+
+ elsif org_id_val is not null then
+ priority := 600;
+ else
+ priority := 500;
+ end if;
+
+ return -priority;
+
+ end channel_priority;
+
+ -- right now this only does the accounting changes; the cascade
+ -- actually does the rhnServerChannel delete.
+ procedure delete_server_channels(server_id_in in number)
+ is
+ begin
+ update rhnPrivateChannelFamily
+ set current_members = current_members -1
+ where org_id in (
+ select org_id
+ from rhnServer
+ where id = server_id_in
+ )
+ and channel_family_id in (
+ select rcfm.channel_family_id
+ from rhnChannelFamilyMembers rcfm,
+ rhnServerChannel rsc
+ where rsc.server_id = server_id_in
+ and rsc.channel_id = rcfm.channel_id
+ and not exists (
+ select 1
+ from
+ rhnChannelFamilyVirtSubLevel cfvsl,
+ rhnSGTypeVirtSubLevel sgtvsl,
+ rhnServerEntitlementView sev,
+ rhnVirtualInstance vi
+ where
+ -- system is a virtual instance
+ vi.virtual_system_id = server_id_in
+ and vi.host_system_id = sev.server_id
+ -- system's host has a virt ent
+ and sev.label in ('virtualization_host',
+ 'virtualization_host_platform')
+ and sev.server_group_type_id =
+ sgtvsl.server_group_type_id
+ -- the host's virt ent grants a cf virt sub level
+ and sgtvsl.virt_sub_level_id = cfvsl.virt_sub_level_id
+ -- the cf is in that virt sub level
+ and cfvsl.channel_family_id = rcfm.channel_family_id
+ )
+ );
+ end;
+
+ -- this could certainly be optimized to do updates if needs be
+ procedure refresh_newest_package(channel_id_in in number,
+ caller_in in varchar2 := '(unknown)',
+ package_name_id_in in number := null)
+ is
+ -- procedure refreshes rows for name_id = package_name_id_in or
+ -- all rows if package_name_id_in is null
+ begin
+ delete from rhnChannelNewestPackage
+ where channel_id = channel_id_in
+ and (package_name_id_in is null
+ or name_id = package_name_id_in);
+ insert into rhnChannelNewestPackage
+ (channel_id, name_id, evr_id, package_id, package_arch_id)
+ (select channel_id,
+ name_id, evr_id,
+ package_id, package_arch_id
+ from rhnChannelNewestPackageView
+ where channel_id = channel_id_in
+ and (package_name_id_in is null
+ or name_id = package_name_id_in)
+ );
+ insert into rhnChannelNewestPackageAudit (channel_id, caller)
+ values (channel_id_in, caller_in);
+ update rhnChannel
+ set last_modified = greatest(current_timestamp, last_modified + interval '1' second)
+ where id = channel_id_in;
+ end;
+
+ procedure update_channel ( channel_id_in in number, invalidate_ss in number := 0,
+ date_to_use in timestamp with local time zone := current_timestamp )
+ is
+
+ channel_last_modified timestamp with local time zone;
+ last_modified_value timestamp with local time zone;
+
+ cursor snapshots is
+ select snapshot_id id
+ from rhnSnapshotChannel
+ where channel_id = channel_id_in;
+
+ begin
+
+ select last_modified
+ into channel_last_modified
+ from rhnChannel
+ where id = channel_id_in;
+
+ last_modified_value := date_to_use;
+
+ if last_modified_value <= channel_last_modified then
+ last_modified_value := last_modified_value + 1/86400;
+ end if;
+
+ update rhnChannel set last_modified = last_modified_value
+ where id = channel_id_in;
+
+ if invalidate_ss = 1 then
+ for snapshot in snapshots loop
+ update rhnSnapshot
+ set invalid = lookup_snapshot_invalid_reason('channel_modified')
+ where id = snapshot.id;
+ end loop;
+ end if;
+
+ end update_channel;
+
+ procedure update_channels_by_package ( package_id_in in number, date_to_use in timestamp with local time zone := current_timestamp )
+ is
+
+ cursor channels is
+ select channel_id
+ from rhnChannelPackage
+ where package_id = package_id_in
+ order by channel_id;
+
+ begin
+ for channel in channels loop
+ -- we want to invalidate the snapshot assocated with the channel when we
+ -- do this b/c we know we've added or removed or packages
+ rhn_channel.update_channel ( channel.channel_id, 1, date_to_use );
+ end loop;
+ end update_channels_by_package;
+
+
+ procedure update_channels_by_errata ( errata_id_in number, date_to_use in timestamp with local time zone := current_timestamp )
+ is
+
+ cursor channels is
+ select channel_id
+ from rhnChannelErrata
+ where errata_id = errata_id_in
+ order by channel_id;
+
+ begin
+ for channel in channels loop
+ -- we won't invalidate snapshots, b/c just changing the errata associated with
+ -- a channel shouldn't invalidate snapshots
+ rhn_channel.update_channel ( channel.channel_id, 0, date_to_use );
+ end loop;
+ end update_channels_by_errata;
+
+ procedure update_needed_cache(channel_id_in in number)
+ is
+ -- update of needed cache ican be commited on a per server basis
+ -- b/c failure of update for a server means nothing for the other servers
+ begin
+ -- we intentionaly do a loop here instead of one huge select
+ -- b/c we want to break update into smaller transaction to unblock other sessions
+ -- querying rhnServerNeededCache
+ for server in (
+ select sc.server_id as id
+ from rhnServerChannel sc
+ where sc.channel_id = channel_id_in
+ order by id asc
+ ) loop
+ rhn_server.update_needed_cache(server.id);
+ commit;
+ end loop;
+ end update_needed_cache;
+
+ procedure set_comps(channel_id_in in number, path_in in varchar2, timestamp_in in varchar2)
+ is
+ begin
+ for row in (
+ select relative_filename, last_modified
+ from rhnChannelComps
+ where channel_id = channel_id_in
+ ) loop
+ if row.relative_filename = path_in
+ and row.last_modified = to_date(timestamp_in, 'YYYYMMDDHH24MISS') then
+ return;
+ end if;
+ end loop;
+ delete from rhnChannelComps
+ where channel_id = channel_id_in;
+ insert into rhnChannelComps (id, channel_id, relative_filename, last_modified, created, modified)
+ values (sequence_nextval('rhn_channelcomps_id_seq'), channel_id_in, path_in, to_date(timestamp_in, 'YYYYMMDDHH24MISS'), current_timestamp, current_timestamp);
+ end set_comps;
+
+END rhn_channel;
+/
+SHOW ERRORS
diff --git a/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/048-rhn_channel.pkb.postgresql b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/048-rhn_channel.pkb.postgresql
new file mode 100644
index 0000000..4ab5d2e
--- /dev/null
+++ b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/048-rhn_channel.pkb.postgresql
@@ -0,0 +1,1275 @@
+-- oracle equivalent source sha1 cc1b86fd8db5758d5f3a7ccc146f38954454def1
+--
+-- Copyright (c) 2008--2013 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.
+--
+--
+--
+--
+
+-- create schema rhn_channel;
+
+--update pg_setting
+update pg_settings set setting = 'rhn_channel,' || setting where name = 'search_path';
+
+ create or replace function obtain_read_lock(channel_family_id_in in numeric, org_id_in in numeric)
+ returns void as $$
+ declare
+ read_lock timestamptz;
+ begin
+ select created into read_lock
+ from rhnPrivateChannelFamily
+ where channel_family_id = channel_family_id_in and org_id = org_id_in
+ for update;
+ end$$ language plpgsql;
+
+ -- this "emulates" cursor server_base_subscriptions defined in oracle/rhn_channel.pks
+ create or replace function server_base_subscriptions(server_id_in NUMERIC)
+ returns boolean as $$
+ begin
+ return exists(SELECT C.id FROM rhnChannel C, rhnServerChannel SC
+ WHERE C.id = SC.channel_id
+ AND SC.server_id = server_id_in
+ AND C.parent_channel IS NULL);
+ end$$ language plpgsql;
+
+ -- this "emulates" cursor server_base_subscriptions defined in oracle/rhn_channel.pks
+ create or replace function check_server_subscription(server_id_in NUMERIC, channel_id_in NUMERIC)
+ returns boolean as $$
+ begin
+ return exists(SELECT channel_id FROM rhnServerChannel WHERE server_id = server_id_in AND channel_id = channel_id_in);
+ end$$ language plpgsql;
+
+
+ CREATE OR REPLACE FUNCTION subscribe_server(server_id_in IN NUMERIC, channel_id_in NUMERIC, immediate_in NUMERIC default 1, user_id_in in numeric default null, recalcfamily_in NUMERIC default 1) returns void
+ AS $$
+ declare
+ channel_parent_val rhnChannel.parent_channel%TYPE;
+ parent_subscribed BOOLEAN;
+ server_has_base_chan BOOLEAN;
+ server_already_in_chan BOOLEAN;
+ channel_family_id_val NUMERIC;
+ server_org_id_val NUMERIC;
+ available_subscriptions NUMERIC;
+ available_fve_subs numeric;
+ consenting_user NUMERIC;
+ allowed numeric;
+ is_fve_char char(1) := 'N';
+ update_lock numeric;
+ BEGIN
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
+ if user_id_in is not null then
+ allowed := rhn_channel.user_role_check(channel_id_in, user_id_in, 'subscribe');
+ else
+ allowed := 1;
+ end if;
+
+ if allowed = 0 then
+ perform rhn_exception.raise_exception('no_subscribe_permissions');
+ end if;
+
+
+ SELECT parent_channel INTO channel_parent_val FROM rhnChannel WHERE id = channel_id_in;
+
+ IF channel_parent_val IS NOT NULL
+ THEN
+ -- child channel; if attempting to cross-subscribe a child to the wrong base, silently ignore
+ parent_subscribed := rhn_channel.check_server_subscription(server_id_in, channel_parent_val);
+
+ IF NOT parent_subscribed
+ THEN
+ RETURN;
+ END IF;
+ ELSE
+ -- base channel
+ server_has_base_chan := rhn_channel.server_base_subscriptions(server_id_in);
+
+ IF server_has_base_chan
+ THEN
+ perform rhn_exception.raise_exception('channel_server_one_base');
+ END IF;
+ END IF;
+
+ server_already_in_chan := rhn_channel.check_server_subscription(server_id_in, channel_id_in);
+
+ IF server_already_in_chan
+ THEN
+ RETURN;
+ END IF;
+
+ channel_family_id_val := rhn_channel.family_for_channel(channel_id_in);
+ IF channel_family_id_val IS NULL
+ THEN
+ perform rhn_exception.raise_exception('channel_subscribe_no_family');
+ END IF;
+
+ --
+ -- Use the org_id of the server only if the org_id of the channel = NULL.
+ -- This is required for subscribing to shared channels.
+ --
+ SELECT COALESCE(org_id, (SELECT org_id FROM rhnServer WHERE id = server_id_in))
+ INTO server_org_id_val
+ FROM rhnChannel
+ WHERE id = channel_id_in;
+
+ begin
+ perform rhn_channel.obtain_read_lock(channel_family_id_val, server_org_id_val);
+ exception
+ when no_data_found then
+ perform rhn_exception.raise_exception('channel_family_no_subscriptions');
+ end;
+
+ available_subscriptions := rhn_channel.available_family_subscriptions(channel_family_id_val, server_org_id_val);
+ available_fve_subs := rhn_channel.available_fve_family_subs(channel_family_id_val, server_org_id_val);
+
+ IF available_subscriptions IS NULL OR
+ available_subscriptions > 0 or
+ rhn_channel.can_server_consume_virt_channl(server_id_in, channel_family_id_val) = 1 OR
+ (available_fve_subs > 0 AND rhn_channel.can_server_consume_fve(server_id_in) = 1)
+ THEN
+ if rhn_channel.can_server_consume_virt_channl(server_id_in, channel_family_id_val) = 0 AND available_fve_subs > 0 AND rhn_channel.can_server_consume_fve(server_id_in) = 1 THEN
+ is_fve_char := 'Y';
+ end if;
+
+ insert into rhnServerHistory (id,server_id,summary,details) (
+ select nextval('rhn_event_id_seq'),
+ server_id_in,
+ 'subscribed to channel ' || SUBSTR(c.label, 0, 106),
+ c.label
+ from rhnChannel c
+ where c.id = channel_id_in
+ );
+ UPDATE rhnServer SET channels_changed = current_timestamp WHERE id = server_id_in;
+ INSERT INTO rhnServerChannel (server_id, channel_id, is_fve) VALUES (server_id_in, channel_id_in, is_fve_char);
+ IF recalcfamily_in > 0
+ THEN
+ perform rhn_channel.update_family_counts(channel_family_id_val, server_org_id_val);
+ END IF;
+ perform queue_server(server_id_in, immediate_in);
+ ELSE
+ perform rhn_exception.raise_exception('channel_family_no_subscriptions');
+ END IF;
+
+ END$$ language plpgsql;
+
+
+
+ create or replace function can_convert_to_fve(server_id_in IN NUMERIC, channel_family_id_val IN NUMERIC)
+ RETURNS NUMERIC
+ as $$
+ declare
+ fve_convertible_entries cursor for
+ select 1 from
+ rhnServerFveCapable cap
+ where cap.server_id = server_id_in
+ AND cap.channel_family_id = channel_family_id_val;
+ BEGIN
+ FOR entry IN fve_convertible_entries LOOP
+ return 1;
+ END LOOP;
+ RETURN 0;
+ END$$ language plpgsql;
+
+
+
+ -- Converts server channel_family to use a flex entitlement
+ create or replace function convert_to_fve(server_id_in IN NUMERIC, channel_family_id_val IN NUMERIC)
+ returns void
+ as $$
+ declare
+ available_fve_subs NUMERIC;
+ server_org_id_val NUMERIC;
+ BEGIN
+
+ --
+ -- Use the org_id of the server only if the org_id of the channel = NULL.
+ -- This is required for subscribing to shared channels.
+ --
+ SELECT org_id
+ INTO server_org_id_val
+ FROM rhnServer
+ WHERE id = server_id_in;
+
+
+ perform rhn_channel.obtain_read_lock(channel_family_id_val, server_org_id_val);
+ if not found then
+ perform rhn_exception.raise_exception('channel_family_no_subscriptions');
+ end if;
+ IF (rhn_channel.can_convert_to_fve(server_id_in, channel_family_id_val ) = 0)
+ THEN
+ perform rhn_exception.raise_exception('server_cannot_convert_to_flex');
+ END IF;
+
+ available_fve_subs := rhn_channel.available_fve_family_subs(channel_family_id_val, server_org_id_val);
+
+ IF (available_fve_subs > 0)
+ THEN
+
+ insert into rhnServerHistory (id,server_id,summary,details) (
+ select nextval('rhn_event_id_seq'),
+ server_id_in,
+ 'converted to flex entitlement' || SUBSTR(cf.label, 0, 99),
+ cf.label
+ from rhnChannelFamily cf
+ where cf.id = channel_family_id_val
+ );
+
+ UPDATE rhnServerChannel sc set is_fve = 'Y'
+ where sc.server_id = server_id_in and
+ sc.channel_id in
+ (select cfm.channel_id from rhnChannelFamilyMembers cfm
+ where cfm.CHANNEL_FAMILY_ID = channel_family_id_val);
+
+ perform rhn_channel.update_family_counts(channel_family_id_val, server_org_id_val);
+ ELSE
+ perform rhn_exception.raise_exception('not_enough_flex_entitlements');
+ END IF;
+
+ END$$ language plpgsql;
+
+ create or replace function can_server_consume_virt_channl(
+ server_id_in in numeric,
+ family_id_in in numeric )
+ returns numeric
+ as $$
+ begin
+ if exists(
+ select 1
+ from
+ rhnChannelFamilyVirtSubLevel cfvsl,
+ rhnSGTypeVirtSubLevel sgtvsl,
+ rhnVirtualInstance vi
+ where
+ vi.virtual_system_id = server_id_in
+ and sgtvsl.virt_sub_level_id = cfvsl.virt_sub_level_id
+ and cfvsl.channel_family_id = family_id_in
+ and exists (
+ select 1
+ from rhnServerEntitlementView sev
+ where vi.host_system_id = sev.server_id
+ and sev.server_group_type_id = sgtvsl.server_group_type_id ))
+ then
+ return 1;
+ else
+ return 0;
+ end if;
+ end$$ language plpgsql;
+
+ create or replace function can_server_consume_fve(server_id_in in numeric) returns numeric
+ as $$
+ declare
+ vi_entries cursor for
+ SELECT 1
+ FROM rhnVirtualInstance vi
+ WHERE vi.virtual_system_id = server_id_in;
+ vi_count numeric;
+
+ begin
+ FOR vi_entry IN VI_ENTRIES LOOP
+ return 1;
+ END LOOP;
+ RETURN 0;
+ end$$ language plpgsql;
+
+ create or replace function guess_server_base(
+ server_id_in in numeric
+ ) RETURNS numeric as $$
+ declare
+ server_cursor cursor for
+ select s.server_arch_id, s.release, s.org_id
+ from rhnServer s
+ where s.id = server_id_in;
+ -- Cursor that fetches all the possible base channels for a
+ -- (server_arch_id, release, org_id) combination
+ base_channel_cursor cursor(
+ release_in varchar,
+ server_arch_id_in numeric,
+ org_id_in numeric
+ ) for
+ select distinct c.*
+ from rhnOrgDistChannelMap odcm,
+ rhnServerChannelArchCompat scac,
+ rhnChannel c
+ where c.parent_channel is null
+ and c.id = odcm.channel_id
+ and c.channel_arch_id = odcm.channel_arch_id
+ and odcm.release = release_in
+ and odcm.for_org_id = org_id_in
+ and scac.server_arch_id = server_arch_id_in
+ and scac.channel_arch_id = c.channel_arch_id;
+
+ begin
+ for s in server_cursor loop
+ for channel in base_channel_cursor(s.release,
+ s.server_arch_id, s.org_id)
+ loop
+ return channel.id;
+ end loop;
+ end loop;
+ -- Server not found, or no base channel applies to it
+ return null;
+ end$$ language plpgsql;
+
+ -- Private function
+ create or replace function normalize_server_arch(server_arch_in in varchar)
+ returns varchar
+ as $$
+ declare
+ suffix VARCHAR(128) := '-redhat-linux';
+ begin
+ if server_arch_in is NULL then
+ return NULL;
+ end if;
+ if position('-' IN server_arch_in) > 0
+ then
+ -- Suffix already present
+ return server_arch_in;
+ end if;
+ return server_arch_in || suffix;
+ end$$ language plpgsql;
+
+ --
+ -- Raises:
+ -- server_arch_not_found
+ -- no_subscribe_permissions
+ create or replace function base_channel_for_release_arch(
+ release_in in varchar,
+ server_arch_in in varchar,
+ org_id_in in numeric default -1,
+ user_id_in in numeric default null
+ ) returns numeric as $$
+ declare
+ server_arch varchar(256) := rhn_channel.normalize_server_arch(server_arch_in);
+ server_arch_id numeric;
+ begin
+ -- Look up the server arch
+ select id
+ into server_arch_id
+ from rhnServerArch
+ where label = server_arch;
+ if not found then
+ perform rhn_exception.raise_exception('server_arch_not_found');
+ end if;
+
+ return rhn_channel.base_channel_rel_archid(release_in, server_arch_id,
+ org_id_in, user_id_in);
+ end$$ language plpgsql;
+
+ create or replace function base_channel_rel_archid(
+ release_in in varchar,
+ server_arch_id_in in numeric,
+ org_id_in in numeric default -1,
+ user_id_in in numeric default null
+ ) returns numeric as $$
+ declare
+ denied_channel_id numeric := null;
+ valid_org_id numeric := org_id_in;
+ valid_user_id numeric := user_id_in;
+ channel_subscribable numeric;
+ -- Cursor that fetches all the possible base channels for a
+ -- (server_arch_id, release, org_id) combination
+ base_channel_cursor cursor(
+ release_in varchar,
+ server_arch_id_in numeric,
+ org_id_in numeric
+ ) for
+ select distinct c.*
+ from rhnOrgDistChannelMap odcm,
+ rhnServerChannelArchCompat scac,
+ rhnChannel c
+ where c.parent_channel is null
+ and c.id = odcm.channel_id
+ and c.channel_arch_id = odcm.channel_arch_id
+ and odcm.release = release_in
+ and odcm.for_org_id = org_id_in
+ and scac.server_arch_id = server_arch_id_in
+ and scac.channel_arch_id = c.channel_arch_id;
+
+ begin
+ if org_id_in = -1 and user_id_in is not null then
+ -- Get the org id from the user id
+
+ select org_id
+ into valid_org_id
+ from web_contact
+ where id = user_id_in;
+
+ if not found then
+ -- User doesn't exist
+ -- XXX Only list public stuff for now
+ valid_user_id := null;
+ valid_org_id := -1;
+ end if;
+ end if;
+
+ for c in base_channel_cursor(release_in, server_arch_id_in, valid_org_id)
+ loop
+ -- This row is a possible match
+ if valid_user_id is null then
+ -- User ID not specified, so no user to channel permissions to
+ -- check
+ return c.id;
+ end if;
+
+ -- Check user to channel permissions
+ select rhn_channel.loose_user_role_check(c.id, user_id_in, 'subscribe')
+ into channel_subscribable;
+
+ if channel_subscribable = 1 then
+ return c.id;
+ end if;
+
+ -- Base channel exists, but is not subscribable; keep trying
+ denied_channel_id := c.id;
+ end loop;
+
+ if denied_channel_id is not null then
+ perform rhn_exception.raise_exception('no_subscribe_permissions');
+ end if;
+ -- No base channel applies
+ return NULL;
+ end$$ language plpgsql;
+
+ CREATE OR REPLACE FUNCTION clear_subscriptions(server_id_in IN NUMERIC, deleting_server IN NUMERIC default 0,
+ update_family_countsYN IN NUMERIC default 1 ) returns void
+ AS $$
+ declare
+ server_channels cursor(server_id_in numeric) for
+ select s.org_id, sc.channel_id, cfm.channel_family_id
+ from rhnServer s,
+ rhnServerChannel sc,
+ rhnChannelFamilyMembers cfm
+ where s.id = server_id_in
+ and s.id = sc.server_id
+ and sc.channel_id = cfm.channel_id
+ order by cfm.channel_family_id;
+ last_channel_family_id rhnChannelFamilyMembers.channel_family_id%type := -1;
+ last_channel_org_id rhnServer.org_id%type := -1;
+ BEGIN
+ for channel in server_channels(server_id_in)
+ loop
+ perform rhn_channel.unsubscribe_server(server_id_in, channel.channel_id, 1, 1, deleting_server, 0);
+ if update_family_countsYN > 0
+ and channel.channel_family_id != last_channel_family_id then
+ -- update family counts only once
+ -- after all channels with same family has been fetched
+ if last_channel_family_id != -1 then
+ perform rhn_channel.update_family_counts(channel.channel_family_id, channel.org_id);
+ end if;
+ last_channel_family_id := channel.channel_family_id;
+ last_channel_org_id := channel.org_id;
+ end if;
+ end loop;
+ if update_family_countsYN > 0 and last_channel_family_id != -1 then
+ -- update the last family fetched
+ perform rhn_channel.update_family_counts(last_channel_family_id, last_channel_org_id);
+ end if;
+ END$$ language plpgsql;
+
+ CREATE OR REPLACE FUNCTION unsubscribe_server(server_id_in IN NUMERIC, channel_id_in NUMERIC, immediate_in NUMERIC default 1, unsubscribe_children_in numeric default 0,
+ deleting_server in numeric default 0,
+ update_family_countsYN in numeric default 1) returns void
+ AS $$
+ declare
+ channel_family_id_val NUMERIC;
+ server_org_id_val NUMERIC;
+ available_subscriptions NUMERIC;
+ server_already_in_chan BOOLEAN;
+ update_lock numeric;
+ channel_family_is_proxy cursor(channel_family_id_in numeric) for
+ select 1
+ from rhnChannelFamily
+ where id = channel_family_id_in
+ and label = 'rhn-proxy';
+ channel_family_is_satellite cursor(channel_family_id_in numeric) for
+ select 1
+ from rhnChannelFamily
+ where id = channel_family_id_in
+ and label = 'rhn-satellite';
+ child record;
+ BEGIN
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
+ -- In PostgreSQL recursion with opened cursors is not allowed so we use
+ -- FOR IN SELECT form which is ok.
+ FOR child IN select c.id
+ from rhnChannel c,
+ rhnServerChannel sc
+ where 1=1
+ and c.parent_channel = channel_id_in
+ and c.id = sc.channel_id
+ and sc.server_id = server_id_in
+ LOOP
+ if unsubscribe_children_in = 1 then
+ perform rhn_channel.unsubscribe_server(server_id_in,
+ child.id,
+ immediate_in,
+ unsubscribe_children_in,
+ deleting_server,
+ update_family_countsYN);
+ else
+ perform rhn_exception.raise_exception('channel_unsubscribe_child_exists');
+ end if;
+ END LOOP;
+
+ server_already_in_chan := rhn_channel.check_server_subscription(server_id_in, channel_id_in);
+
+ IF NOT server_already_in_chan
+ THEN
+ RETURN;
+ END IF;
+
+ if deleting_server = 0 then
+
+ insert into rhnServerHistory (id,server_id,summary,details) (
+ select nextval('rhn_event_id_seq'),
+ server_id_in,
+ 'unsubscribed from channel ' || SUBSTR(c.label, 0, 106),
+ c.label
+ from rhnChannel c
+ where c.id = channel_id_in
+ );
+
+ UPDATE rhnServer SET channels_changed = current_timestamp WHERE id = server_id_in;
+ end if;
+
+ DELETE FROM rhnServerChannel WHERE server_id = server_id_in AND channel_id = channel_id_in;
+
+ if deleting_server = 0 then
+ perform queue_server(server_id_in, immediate_in);
+ end if;
+
+ channel_family_id_val := rhn_channel.family_for_channel(channel_id_in);
+ IF channel_family_id_val IS NULL
+ THEN
+ perform rhn_exception.raise_exception('channel_unsubscribe_no_family');
+ END IF;
+
+ for ignore in channel_family_is_satellite(channel_family_id_val) loop
+ delete from rhnSatelliteInfo where server_id = server_id_in;
+ end loop;
+
+ for ignore in channel_family_is_proxy(channel_family_id_val) loop
+ delete from rhnProxyInfo where server_id = server_id_in;
+ end loop;
+ SELECT org_id INTO server_org_id_val
+ FROM rhnServer
+ WHERE id = server_id_in;
+
+ if update_family_countsYN = 1 then
+ perform rhn_channel.update_family_counts(channel_family_id_val, server_org_id_val);
+ end if;
+ END$$ language plpgsql;
+
+ CREATE OR REPLACE FUNCTION family_for_channel(channel_id_in IN NUMERIC)
+ RETURNS NUMERIC
+ AS $$
+ declare
+ channel_family_id_val NUMERIC;
+ BEGIN
+ SELECT channel_family_id INTO channel_family_id_val
+ FROM rhnChannelFamilyMembers
+ WHERE channel_id = channel_id_in;
+
+ IF NOT FOUND THEN
+ RETURN NULL;
+ END IF;
+
+ RETURN channel_family_id_val;
+ END$$ language plpgsql;
+
+ CREATE OR REPLACE FUNCTION available_family_subscriptions(channel_family_id_in IN NUMERIC, org_id_in IN NUMERIC)
+ RETURNS NUMERIC
+ AS $$
+ declare
+ cfp record;
+ current_members_val NUMERIC;
+ max_members_val NUMERIC;
+ found NUMERIC;
+ BEGIN
+ for cfp in SELECT * FROM rhnOrgChannelFamilyPermissions
+ WHERE channel_family_id = channel_family_id_in
+ AND org_id = org_id_in
+ LOOP
+ found := 1;
+ current_members_val := cfp.current_members;
+ max_members_val := cfp.max_members;
+ END LOOP;
+
+ -- not found: either the channel fam doesn't have an entry in cfp, or the org doesn't have access to it.
+ -- either way, there are no available subscriptions
+
+ IF found IS NULL
+ THEN
+ RETURN 0;
+ END IF;
+
+ -- null max members? in that case, pass it on; NULL means infinite
+ IF max_members_val IS NULL
+ THEN
+ RETURN NULL;
+ END IF;
+
+ -- otherwise, return the delta
+ RETURN max_members_val - current_members_val;
+ END$$ language plpgsql;
+
+ CREATE OR REPLACE FUNCTION available_fve_family_subs(channel_family_id_in IN NUMERIC, org_id_in IN NUMERIC)
+ RETURNS NUMERIC
+ AS $$
+ declare
+ cfp record;
+ fve_current_members_val NUMERIC;
+ fve_max_members_val NUMERIC;
+ found NUMERIC;
+ BEGIN
+ for cfp in SELECT * FROM rhnOrgChannelFamilyPermissions
+ WHERE channel_family_id = channel_family_id_in
+ AND org_id = org_id_in
+ LOOP
+ found := 1;
+ fve_current_members_val := cfp.fve_current_members;
+ fve_max_members_val := cfp.fve_max_members;
+ END LOOP;
+
+ -- not found: either the channel fam doesn't have an entry in cfp, or the org doesn't have access to it.
+ -- either way, there are no available subscriptions
+
+ IF found IS NULL
+ THEN
+ RETURN 0;
+ END IF;
+
+ -- null max members? in that case, pass it on; NULL means infinite
+ IF fve_max_members_val IS NULL
+ THEN
+ RETURN NULL;
+ END IF;
+
+ -- otherwise, return the delta
+ RETURN fve_max_members_val - fve_current_members_val;
+ END$$ language plpgsql;
+
+ -- *******************************************************************
+ -- FUNCTION: channel_family_current_members
+ -- Calculates and returns the actual count of systems consuming
+ -- physical channel subscriptions.
+ -- Called by: update_family_counts
+ -- rhn_entitlements.repoll_virt_guest_entitlements
+ -- *******************************************************************
+ create or replace function channel_family_current_members(channel_family_id_in IN NUMERIC,
+ org_id_in IN NUMERIC)
+ returns numeric
+ as $$
+ declare
+ current_members_count numeric := 0;
+ begin
+ select count(distinct server_id)
+ into current_members_count
+ from rhnChannelFamilyServerPhysical cfsp
+ where cfsp.channel_family_id = channel_family_id_in
+ and cfsp.customer_id = org_id_in;
+ return current_members_count;
+ end$$ language plpgsql;
+
+
+ create or replace function cfam_curr_fve_members(
+ channel_family_id_in IN NUMERIC,
+ org_id_in IN NUMERIC)
+ returns numeric
+ as $$
+ declare
+ current_members_count numeric := 0;
+
+ begin
+ select count(sc.server_id)
+ into current_members_count
+ from rhnServerChannel sc,
+ rhnChannelFamilyMembers cfm,
+ rhnServer s
+ where s.org_id = org_id_in
+ and s.id = sc.server_id
+ and cfm.channel_family_id = channel_family_id_in
+ and cfm.channel_id = sc.channel_id
+ and exists (
+ select 1
+ from rhnChannelFamilyServerFve cfsp
+ where cfsp.CHANNEL_FAMILY_ID = channel_family_id_in
+ and cfsp.server_id = s.id
+ );
+
+ return current_members_count;
+ end$$ language plpgsql;
+ CREATE OR REPLACE FUNCTION update_family_counts(channel_family_id_in IN NUMERIC,
+ org_id_in IN NUMERIC) returns void
+ AS $$
+ BEGIN
+ update rhnPrivateChannelFamily
+ set current_members = rhn_channel.channel_family_current_members(channel_family_id_in, org_id_in),
+ fve_current_members = rhn_channel.cfam_curr_fve_members(channel_family_id_in,org_id_in)
+ where org_id = org_id_in
+ and channel_family_id = channel_family_id_in;
+ END$$ language plpgsql;
+
+ create or replace function update_group_family_counts(group_label_in IN VARCHAR,
+ org_id_in IN NUMERIC)
+ returns void
+ as $$
+ declare
+ i record;
+ BEGIN
+ FOR i IN (
+ SELECT DISTINCT CFM.channel_family_id, SG.org_id
+ FROM rhnChannelFamilyMembers CFM
+ JOIN rhnServerChannel SC
+ ON SC.channel_id = CFM.channel_id
+ JOIN rhnServerGroupMembers SGM
+ ON SC.server_id = SGM.server_id
+ JOIN rhnServerGroup SG
+ ON SGM.server_group_id = SG.id
+ JOIN rhnServerGroupType SGT
+ ON SG.group_type = SGT.id
+ WHERE SGT.label = group_label_in
+ AND SG.org_id = org_id_in
+ AND SGT.is_base = 'Y'
+ ) LOOP
+ perform rhn_channel.update_family_counts(i.channel_family_id, i.org_id);
+ END LOOP;
+ END$$ language plpgsql;
+
+ CREATE OR REPLACE FUNCTION available_chan_subscriptions(channel_id_in IN NUMERIC,
+ org_id_in IN NUMERIC)
+ RETURNS NUMERIC
+ AS $$
+ declare
+ channel_family_id_val NUMERIC;
+ BEGIN
+ SELECT channel_family_id INTO STRICT channel_family_id_val
+ FROM rhnChannelFamilyMembers
+ WHERE channel_id = channel_id_in;
+
+ RETURN rhn_channel.available_family_subscriptions(
+ channel_family_id_val, org_id_in);
+ END$$ language plpgsql;
+
+ CREATE OR REPLACE FUNCTION available_fve_chan_subs(channel_id_in IN NUMERIC,
+ org_id_in IN NUMERIC)
+ RETURNS NUMERIC
+ AS $$
+ declare
+ channel_family_id_val NUMERIC;
+ BEGIN
+ SELECT channel_family_id INTO STRICT channel_family_id_val
+ FROM rhnChannelFamilyMembers
+ WHERE channel_id = channel_id_in;
+
+ RETURN rhn_channel.available_fve_family_subs(
+ channel_family_id_val, org_id_in);
+ END$$ language plpgsql;
+
+ create or replace function unsubscribe_server_from_family(server_id_in in numeric,
+ channel_family_id_in in numeric)
+ returns void
+ as $$
+ begin
+ delete
+ from rhnServerChannel rsc
+ where rsc.server_id = server_id_in
+ and channel_id in (
+ select rcfm.channel_id
+ from rhnChannelFamilyMembers rcfm
+ where rcfm.channel_family_id = channel_family_id_in);
+ end$$ language plpgsql;
+
+ create or replace function get_org_id(channel_id_in in numeric)
+ returns numeric
+ as $$
+ declare
+ org_id_out numeric;
+ begin
+ select org_id into strict org_id_out
+ from rhnChannel
+ where id = channel_id_in;
+
+ return org_id_out;
+ end$$ language plpgsql;
+
+ create or replace function get_cfam_org_access(cfam_id_in in numeric, org_id_in in numeric)
+ returns numeric
+ as $$
+ begin
+ if exists(
+ select 1
+ from rhnOrgChannelFamilyPermissions cfp
+ where cfp.org_id = org_id_in
+ ) then
+ return 1;
+ else
+ return 0;
+ end if;
+ end$$ language plpgsql;
+
+ create or replace function get_org_access(channel_id_in in numeric, org_id_in in numeric)
+ returns integer
+ as $$
+ begin
+ -- the idea: if we get past this query,
+ -- the org has access to the channel, else not
+ if exists(
+ select 1
+ from rhnChannelFamilyMembers CFM,
+ rhnOrgChannelFamilyPermissions CFP
+ where cfp.org_id = org_id_in
+ and CFM.channel_family_id = CFP.channel_family_id
+ and CFM.channel_id = channel_id_in
+ and (CFP.max_members > 0 or CFP.max_members is null or CFP.fve_max_members > 0 or CFP.fve_max_members is null or CFP.org_id = 1) )
+ then
+ return 1;
+ else
+ return 0;
+ end if;
+ end$$ language plpgsql;
+
+ -- check if a user has a given role, or if such a role is inferrable
+ -- returns NULL if OK, error message otherwise
+ create or replace function user_role_check_debug(channel_id_in in numeric,
+ user_id_in in numeric,
+ role_in in varchar)
+ returns varchar
+ as $$
+ declare
+ org_id numeric;
+ begin
+ org_id := rhn_user.get_org_id(user_id_in);
+
+ -- channel might be shared
+ if role_in = 'subscribe' and
+ rhn_channel.shared_user_role_check(channel_id_in, user_id_in, role_in) = 1 then
+ return NULL;
+ end if;
+
+ if role_in = 'manage' and
+ COALESCE(rhn_channel.get_org_id(channel_id_in), -1) <> org_id then
+ return 'channel_not_owned';
+ end if;
+
+ if role_in = 'subscribe' and
+ rhn_channel.get_org_access(channel_id_in, org_id) = 0 then
+ return 'channel_not_available';
+ end if;
+
+ -- channel admins have all roles
+ if rhn_user.check_role_implied(user_id_in, 'channel_admin') = 1 then
+ return NULL;
+ end if;
+
+ -- the subscribe permission is inferred
+ -- UNLESS the not_globally_subscribable flag is set
+ if role_in = 'subscribe'
+ then
+ if rhn_channel.org_channel_setting(channel_id_in,
+ org_id,
+ 'not_globally_subscribable') = 0 then
+ return NULL;
+ end if;
+ end if;
+
+ -- all other roles (manage right now) are explicitly granted
+ if rhn_channel.direct_user_role_check(channel_id_in,
+ user_id_in, role_in) = 1 then
+ return NULL;
+ end if;
+ return 'direct_permission';
+ end$$ language plpgsql;
+
+ -- same as above, but with 1/0 output; useful in views, etc
+ create or replace function user_role_check(channel_id_in in numeric, user_id_in in numeric, role_in in varchar)
+ returns numeric
+ as $$
+ begin
+ if rhn_channel.user_role_check_debug(channel_id_in,
+ user_id_in, role_in) is NULL then
+ return 1;
+ else
+ return 0;
+ end if;
+ end$$ language plpgsql;
+
+ --
+ -- For multiorg phase II, this function simply checks to see if the user's
+ -- has a trust relationship that includes this channel by id.
+ --
+ create or replace function shared_user_role_check(channel_id in numeric, user_id in numeric, role in varchar)
+ returns numeric
+ as $$
+ declare
+ n numeric;
+ oid numeric;
+ begin
+ oid := rhn_user.get_org_id(user_id);
+ select 1 into n
+ from rhnSharedChannelView s
+ where s.id = channel_id and s.org_trust_id = oid;
+
+ if not found then
+ return 0;
+ end if;
+
+ return 1;
+ end$$ language plpgsql;
+
+ -- same as above, but returns 1 if user_id_in is null
+ -- This is useful in queries where user_id is not specified
+ create or replace function loose_user_role_check(channel_id_in in numeric, user_id_in in numeric, role_in in varchar)
+ returns numeric
+ as $$
+ begin
+ if user_id_in is null then
+ return 1;
+ end if;
+ return rhn_channel.user_role_check(channel_id_in, user_id_in, role_in);
+ end$$ language plpgsql;
+
+ -- directly checks the table, no inferred permissions
+ create or replace function direct_user_role_check(channel_id_in in numeric, user_id_in in numeric, role_in in varchar)
+ returns numeric
+ as $$
+ declare
+ throwaway numeric;
+ begin
+ -- the idea: if we get past this query, the user has the role, else no
+ select 1 into throwaway
+ from rhnChannelPermissionRole CPR,
+ rhnChannelPermission CP
+ where CP.user_id = user_id_in
+ and CP.channel_id = channel_id_in
+ and CPR.label = role_in
+ and CP.role_id = CPR.id;
+
+ if not found then
+ return 0;
+ end if;
+
+ return 1;
+ end$$ language plpgsql;
+
+ -- check if an org has a certain setting
+ create or replace function org_channel_setting(channel_id_in in numeric, org_id_in in numeric, setting_in in varchar)
+ returns numeric
+ as $$
+ declare
+ throwaway numeric;
+ begin
+ -- the idea: if we get past this query, the org has the setting
+ select 1 into throwaway
+ from rhnOrgChannelSettingsType OCST,
+ rhnOrgChannelSettings OCS
+ where OCS.org_id = org_id_in
+ and OCS.channel_id = channel_id_in
+ and OCST.label = setting_in
+ and OCS.setting_id = OCST.id;
+
+ if not found then
+ return 0;
+ end if;
+
+ return 1;
+ end$$ language plpgsql;
+
+ CREATE OR REPLACE FUNCTION channel_priority(channel_id_in IN numeric)
+ RETURNS numeric
+ AS $$
+ declare
+ channel_name varchar(256);
+ priority numeric;
+ end_of_life_val timestamptz;
+ org_id_val numeric;
+ BEGIN
+
+ select name, end_of_life, org_id
+ into channel_name, end_of_life_val, org_id_val
+ from rhnChannel
+ where id = channel_id_in;
+
+ if end_of_life_val is not null then
+ return -400;
+ end if;
+
+ if channel_name like 'Red Hat Enterprise Linux%' or channel_name like 'RHEL%' then
+ priority := 1000;
+ if channel_name not like '%Beta%' then
+ priority := priority + 1000;
+ end if;
+
+ priority := priority +
+ case
+ when channel_name like '%v. 5%' then 600
+ when channel_name like '%v. 4%' then 500
+ when channel_name like '%v. 3%' then 400
+ when channel_name like '%v. 2%' then 300
+ when channel_name like '%v. 1%' then 200
+ else 0
+ end;
+
+ priority := priority +
+ case
+ when channel_name like 'Red Hat Enterprise Linux (v. 5%' then 60
+ when (channel_name like '%AS%' and channel_name not like '%Extras%') then 50
+ when (channel_name like '%ES%' and channel_name not like '%Extras%') then 40
+ when (channel_name like '%WS%' and channel_name not like '%Extras%') then 30
+ when (channel_name like '%Desktop%' and channel_name not like '%Extras%') then 20
+ when channel_name like '%Extras%' then 10
+ else 0
+ end;
+
+ priority := priority +
+ case
+ when channel_name like '%)' then 5
+ else 0
+ end;
+
+ priority := priority +
+ case
+ when channel_name like '%32-bit x86%' then 4
+ when channel_name like '%64-bit Intel Itanium%' then 3
+ when channel_name like '%64-bit AMD64/Intel EM64T%' then 2
+ else 0
+ end;
+ elsif channel_name like 'Red Hat Desktop%' then
+ priority := 900;
+
+ if channel_name not like '%Beta%' then
+ priority := priority + 50;
+ end if;
+
+ priority := priority +
+ case
+ when channel_name like '%v. 4%' then 40
+ when channel_name like '%v. 3%' then 30
+ when channel_name like '%v. 2%' then 20
+ when channel_name like '%v. 1%' then 10
+ else 0
+ end;
+
+ priority := priority +
+ case
+ when channel_name like '%32-bit x86%' then 4
+ when channel_name like '%64-bit Intel Itanium%' then 3
+ when channel_name like '%64-bit AMD64/Intel EM64T%' then 2
+ else 0
+ end;
+
+ elsif org_id_val is not null then
+ priority := 600;
+ else
+ priority := 500;
+ end if;
+
+ return -priority;
+
+ end$$ language plpgsql;
+
+ -- right now this only does the accounting changes; the cascade
+ -- actually does the rhnServerChannel delete.
+ create or replace function delete_server_channels(server_id_in in numeric) returns void
+ as $$
+ begin
+ update rhnPrivateChannelFamily
+ set current_members = current_members -1
+ where org_id in (
+ select org_id
+ from rhnServer
+ where id = server_id_in
+ )
+ and channel_family_id in (
+ select rcfm.channel_family_id
+ from rhnChannelFamilyMembers rcfm,
+ rhnServerChannel rsc
+ where rsc.server_id = server_id_in
+ and rsc.channel_id = rcfm.channel_id
+ and not exists (
+ select 1
+ from
+ rhnChannelFamilyVirtSubLevel cfvsl,
+ rhnSGTypeVirtSubLevel sgtvsl,
+ rhnServerEntitlementView sev,
+ rhnVirtualInstance vi
+ where
+ -- system is a virtual instance
+ vi.virtual_system_id = server_id_in
+ and vi.host_system_id = sev.server_id
+ -- system's host has a virt ent
+ and sev.label in ('virtualization_host',
+ 'virtualization_host_platform')
+ and sev.server_group_type_id =
+ sgtvsl.server_group_type_id
+ -- the host's virt ent grants a cf virt sub level
+ and sgtvsl.virt_sub_level_id = cfvsl.virt_sub_level_id
+ -- the cf is in that virt sub level
+ and cfvsl.channel_family_id = rcfm.channel_family_id
+ )
+ );
+ end$$ language plpgsql;
+
+ -- this could certainly be optimized to do updates if needs be
+ create or replace function refresh_newest_package(channel_id_in in numeric,
+ caller_in in varchar default '(unknown)',
+ package_name_id_in in numeric default null)
+ returns void
+ as $$
+ -- procedure refreshes rows for name_id = package_name_id_in or
+ -- all rows if package_name_id_in is null
+ begin
+ delete from rhnChannelNewestPackage
+ where channel_id = channel_id_in
+ and (package_name_id_in is null
+ or name_id = package_name_id_in);
+ insert into rhnChannelNewestPackage
+ (channel_id, name_id, evr_id, package_id, package_arch_id)
+ (select channel_id,
+ name_id, evr_id,
+ package_id, package_arch_id
+ from rhnChannelNewestPackageView
+ where channel_id = channel_id_in
+ and (package_name_id_in is null
+ or name_id = package_name_id_in)
+ );
+ insert into rhnChannelNewestPackageAudit (channel_id, caller)
+ values (channel_id_in, caller_in);
+ update rhnChannel
+ set last_modified = greatest(current_timestamp,
+ last_modified + interval '1 second')
+ where id = channel_id_in;
+ end$$ language plpgsql;
+
+ create or replace function update_channel ( channel_id_in in numeric, invalidate_ss in numeric default 0,
+ date_to_use in timestamptz default current_timestamp ) returns void
+ as $$
+ declare
+ channel_last_modified timestamptz;
+ last_modified_value timestamptz;
+
+ snapshots cursor for
+ select snapshot_id id
+ from rhnSnapshotChannel
+ where channel_id = channel_id_in;
+
+ begin
+
+ select last_modified
+ into channel_last_modified
+ from rhnChannel
+ where id = channel_id_in;
+
+ last_modified_value := date_to_use;
+
+ if last_modified_value <= channel_last_modified then
+ last_modified_value := last_modified_value + interval '1 second';
+ end if;
+
+ update rhnChannel set last_modified = last_modified_value
+ where id = channel_id_in;
+
+ if invalidate_ss = 1 then
+ for snapshot in snapshots loop
+ update rhnSnapshot
+ set invalid = lookup_snapshot_invalid_reason('channel_modified')
+ where id = snapshot.id;
+ end loop;
+ end if;
+
+ end$$ language plpgsql;
+
+ create or replace function update_channels_by_package ( package_id_in in numeric, date_to_use in timestamptz default current_timestamp ) returns void
+ as $$
+ declare
+ channels cursor for
+ select channel_id
+ from rhnChannelPackage
+ where package_id = package_id_in
+ order by channel_id;
+
+ begin
+ for channel in channels loop
+ -- we want to invalidate the snapshot assocated with the channel when we
+ -- do this b/c we know we've added or removed or packages
+ perform rhn_channel.update_channel ( channel.channel_id, 1, date_to_use );
+ end loop;
+ end$$ language plpgsql;
+
+
+ create or replace function update_channels_by_errata ( errata_id_in numeric, date_to_use in timestamptz default current_timestamp ) returns void
+ as $$
+ declare
+ channels cursor for
+ select channel_id
+ from rhnChannelErrata
+ where errata_id = errata_id_in
+ order by channel_id;
+
+ begin
+ for channel in channels loop
+ -- we won't invalidate snapshots, b/c just changing the errata associated with
+ -- a channel shouldn't invalidate snapshots
+ perform rhn_channel.update_channel ( channel.channel_id, 0, date_to_use );
+ end loop;
+ end$$ language plpgsql;
+
+ create or replace function update_needed_cache(channel_id_in in numeric) returns void
+ as $$
+ declare
+ server record;
+ begin
+ -- we intentionaly do a loop here instead of one huge select
+ -- b/c we want to break update into smaller transaction to unblock other sessions
+ -- querying rhnServerNeededCache
+ for server in (
+ select sc.server_id as id
+ from rhnServerChannel sc
+ where sc.channel_id = channel_id_in
+ order by id asc
+ ) loop
+ perform rhn_server.update_needed_cache(server.id);
+ end loop;
+ end$$ language plpgsql;
+
+ create or replace function set_comps(channel_id_in in numeric, path_in in varchar, timestamp_in in varchar) returns void
+ as $$
+ declare
+ row record;
+ begin
+ for row in (
+ select relative_filename, last_modified
+ from rhnChannelComps
+ where channel_id = channel_id_in
+ ) loop
+ if row.relative_filename = path_in
+ and row.last_modified = to_timestamp(timestamp_in, 'YYYYMMDDHH24MISS') then
+ return;
+ end if;
+ end loop;
+ delete from rhnChannelComps
+ where channel_id = channel_id_in;
+ insert into rhnChannelComps (id, channel_id, relative_filename, last_modified, created, modified)
+ values (sequence_nextval('rhn_channelcomps_id_seq'), channel_id_in, path_in, to_timestamp(timestamp_in, 'YYYYMMDDHH24MISS'), current_timestamp, current_timestamp);
+ end$$ language plpgsql;
+
+-- restore the original setting
+update pg_settings set setting = overlay( setting placing '' from 1 for (length('rhn_channel')+1) ) where name = 'search_path';
diff --git a/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/049-rhn_server.pkb.oracle b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/049-rhn_server.pkb.oracle
new file mode 100644
index 0000000..b910b56
--- /dev/null
+++ b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/049-rhn_server.pkb.oracle
@@ -0,0 +1,790 @@
+--
+-- Copyright (c) 2008--2012 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.
+--
+--
+--
+--
+
+create or replace
+package body rhn_server
+is
+ function system_service_level(
+ server_id_in in number,
+ service_level_in in varchar2
+ ) return number is
+
+ cursor ents is
+ select label from rhnServerEntitlementView
+ where server_id = server_id_in;
+
+ retval number := 0;
+
+ begin
+ for ent in ents loop
+ retval := rhn_entitlements.entitlement_grants_service (ent.label, service_level_in);
+ if retval = 1 then
+ return retval;
+ end if;
+ end loop;
+
+ return retval;
+
+ end system_service_level;
+
+
+ function can_change_base_channel(server_id_in IN NUMBER)
+ return number
+ is
+ throwaway number;
+ begin
+ -- the idea: if we get past this query, the server is
+ -- neither sat nor proxy, so base channel is changeable
+
+ select 1 into throwaway
+ from rhnServer S
+ where S.id = server_id_in
+ and not exists (select 1 from rhnSatelliteInfo SI where SI.server_id = S.id)
+ and not exists (select 1 from rhnProxyInfo PI where PI.server_id = S.id);
+
+ return 1;
+ exception
+ when no_data_found
+ then
+ return 0;
+ end can_change_base_channel;
+
+ procedure set_custom_value(
+ server_id_in in number,
+ user_id_in in number,
+ key_label_in in varchar2,
+ value_in in varchar2
+ ) is
+ key_id_val number;
+ begin
+ select CDK.id into key_id_val
+ from rhnCustomDataKey CDK,
+ rhnServer S
+ where S.id = server_id_in
+ and S.org_id = CDK.org_id
+ and CDK.label = key_label_in;
+
+ begin
+ insert into rhnServerCustomDataValue (server_id, key_id, value, created_by, last_modified_by)
+ values (server_id_in, key_id_val, value_in, user_id_in, user_id_in);
+ exception
+ when DUP_VAL_ON_INDEX
+ then
+ update rhnServerCustomDataValue
+ set value = value_in,
+ last_modified_by = user_id_in
+ where server_id = server_id_in
+ and key_id = key_id_val;
+ end;
+
+ end set_custom_value;
+
+ function bulk_set_custom_value(
+ key_label_in in varchar2,
+ value_in in varchar2,
+ set_label_in in varchar2,
+ set_uid_in in number
+ )
+ return integer
+ is
+ i integer := 0;
+ begin
+ i := 0;
+ for server in (
+ SELECT user_id, label, element, element_two
+ FROM rhnSet
+ WHERE label = set_label_in
+ AND user_id = set_uid_in
+ ) loop
+ if rhn_server.system_service_level(server.element, 'provisioning') = 1 then
+ rhn_server.set_custom_value(server.element, set_uid_in, key_label_in, value_in);
+ i := i + 1;
+ end if;
+ end loop server;
+ return i;
+ end bulk_set_custom_value;
+
+ procedure bulk_snapshot_tag(
+ org_id_in in number,
+ tagname_in in varchar2,
+ set_label_in in varchar2,
+ set_uid_in in number
+ ) is
+ snapshot_id number;
+ 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
+ if rhn_server.system_service_level(server.element, 'provisioning') = 1 then
+ begin
+ select max(id) into snapshot_id
+ from rhnSnapshot
+ where server_id = server.element;
+ exception
+ when NO_DATA_FOUND then
+ rhn_server.snapshot_server(server.element, 'tagging system: ' || tagname_in);
+
+ select max(id) into snapshot_id
+ from rhnSnapshot
+ where server_id = server.element;
+ end;
+
+ -- now have a snapshot_id to work with...
+ begin
+ rhn_server.tag_snapshot(snapshot_id, org_id_in, tagname_in);
+ exception
+ when DUP_VAL_ON_INDEX
+ then
+ -- do nothing, be forgiving...
+ null;
+ end;
+ end if;
+ end loop server;
+ end bulk_snapshot_tag;
+
+ procedure tag_delete(
+ server_id_in in number,
+ tag_id_in in number
+ ) is
+ cursor snapshots is
+ select snapshot_id
+ from rhnSnapshotTag
+ where tag_id = tag_id_in;
+ tag_id_tmp number;
+ begin
+ select id into tag_id_tmp
+ from rhnTag
+ where id = tag_id_in
+ for update;
+
+ delete
+ from rhnSnapshotTag
+ where server_id = server_id_in
+ and tag_id = tag_id_in;
+ for snapshot in snapshots loop
+ return;
+ end loop;
+ delete
+ from rhnTag
+ where id = tag_id_in;
+ end tag_delete;
+
+ procedure tag_snapshot(
+ snapshot_id_in in number,
+ org_id_in in number,
+ tagname_in in varchar2
+ ) is
+ begin
+ insert into rhnSnapshotTag (snapshot_id, server_id, tag_id)
+ select snapshot_id_in, server_id, lookup_tag(org_id_in, tagname_in)
+ from rhnSnapshot
+ where id = snapshot_id_in;
+ end tag_snapshot;
+
+ procedure bulk_snapshot(
+ reason_in in varchar2,
+ set_label_in in varchar2,
+ set_uid_in in number
+ ) is
+ 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
+ if rhn_server.system_service_level(server.element, 'provisioning') = 1 then
+ rhn_server.snapshot_server(server.element, reason_in);
+ end if;
+ end loop server;
+ end bulk_snapshot;
+
+ procedure snapshot_server(
+ server_id_in in number,
+ reason_in in varchar2
+ ) is
+ snapshot_id number;
+ cursor revisions is
+ select distinct
+ cr.id
+ from rhnConfigRevision cr,
+ rhnConfigFileName cfn,
+ rhnConfigFile cf,
+ rhnConfigChannel cc,
+ rhnServerConfigChannel scc
+ where 1=1
+ and scc.server_id = server_id_in
+ and scc.config_channel_id = cc.id
+ and cc.id = cf.config_channel_id
+ and cf.id = cr.config_file_id
+ and cr.id = cf.latest_config_revision_id
+ and cf.config_file_name_id = cfn.id
+ and cf.id = lookup_first_matching_cf(scc.server_id, cfn.path);
+ locked integer;
+ begin
+ select rhn_snapshot_id_seq.nextval into snapshot_id from dual;
+
+ insert into rhnSnapshot (id, org_id, server_id, reason) (
+ select snapshot_id,
+ s.org_id,
+ server_id_in,
+ reason_in
+ from rhnServer s
+ where s.id = server_id_in
+ );
+ insert into rhnSnapshotChannel (snapshot_id, channel_id) (
+ select snapshot_id, sc.channel_id
+ from rhnServerChannel sc
+ where sc.server_id = server_id_in
+ );
+ insert into rhnSnapshotServerGroup (snapshot_id, server_group_id) (
+ select snapshot_id, sgm.server_group_id
+ from rhnServerGroupMembers sgm
+ where sgm.server_id = server_id_in
+ );
+ locked := 0;
+ while true loop
+ begin
+ insert into rhnPackageNEVRA (id, name_id, evr_id, package_arch_id)
+ select rhn_pkgnevra_id_seq.nextval, sp.name_id, sp.evr_id, sp.package_arch_id
+ from rhnServerPackage sp
+ where sp.server_id = server_id_in
+ and not exists
+ (select 1
+ from rhnPackageNEVRA nevra
+ where nevra.name_id = sp.name_id
+ and nevra.evr_id = sp.evr_id
+ and (nevra.package_arch_id = sp.package_arch_id
+ or (nevra.package_arch_id is null
+ and sp.package_arch_id is null)));
+ exit;
+ exception when dup_val_on_index then
+ if locked = 1 then
+ raise;
+ else
+ lock table rhnPackageNEVRA in exclusive mode;
+ locked := 1;
+ end if;
+ end;
+ end loop;
+ insert into rhnSnapshotPackage (snapshot_id, nevra_id) (
+ select distinct snapshot_id, nevra.id
+ from rhnServerPackage sp, rhnPackageNEVRA nevra
+ where sp.server_id = server_id_in
+ and nevra.name_id = sp.name_id
+ and nevra.evr_id = sp.evr_id
+ and (nevra.package_arch_id = sp.package_arch_id
+ or (nevra.package_arch_id is null
+ and sp.package_arch_id is null))
+ );
+
+ insert into rhnSnapshotConfigChannel ( snapshot_id, config_channel_id ) (
+ select snapshot_id, scc.config_channel_id
+ from rhnServerConfigChannel scc
+ where server_id = server_id_in
+ );
+
+ for revision in revisions loop
+ insert into rhnSnapshotConfigRevision (
+ snapshot_id, config_revision_id
+ ) values (
+ snapshot_id, revision.id
+ );
+ end loop;
+ end snapshot_server;
+
+ procedure remove_action(
+ server_id_in in number,
+ action_id_in in number
+ ) is
+ -- this really wants "nulls last", but 8.1.7.3.0 sucks ass.
+ -- instead, we make a local table that holds our
+ -- list of ids with null prereqs. There's surely a better way
+ -- (an array instead of a table maybe? who knows...)
+ -- but I've got code to do this handy that I can look at ;)
+ cursor chained_actions is
+ select id, prerequisite
+ from rhnAction
+ start with id = action_id_in
+ connect by prior id = prerequisite
+ order by prerequisite desc;
+ cursor sessions is
+ select s.id
+ from rhnKickstartSession s
+ where server_id_in in (s.old_server_id, s.new_server_id)
+ and s.action_id = action_id_in
+ and not exists (
+ select 1
+ from rhnKickstartSessionState ss
+ where ss.id = s.state_id
+ and ss.label in ('failed','complete')
+ );
+ type chain_end_type is table of number index by binary_integer;
+ chain_ends chain_end_type;
+ i number;
+ prereq number := 1;
+ begin
+ select prerequisite
+ into prereq
+ from rhnAction
+ where id = action_id_in;
+
+ if prereq is not null then
+ rhn_exception.raise_exception('action_is_child');
+ end if;
+
+ i := 0;
+ for action in chained_actions loop
+ if action.prerequisite is null then
+ chain_ends(i) := action.id;
+ i := i + 1;
+ else
+ delete from rhnServerAction
+ where server_id = server_id_in
+ and action_id = action.id;
+ end if;
+ end loop;
+ i := chain_ends.first;
+ while i is not null loop
+ delete from rhnServerAction
+ where server_id = server_id_in
+ and action_id = chain_ends(i);
+ i := chain_ends.next(i);
+ end loop;
+ for s in sessions loop
+ update rhnKickstartSession
+ set state_id = (
+ select id
+ from rhnKickstartSessionState
+ where label = 'failed'
+ ),
+ action_id = null
+ where id = s.id;
+ set_ks_session_history_message(s.id, 'failed', 'Kickstart cancelled due to action removal');
+ end loop;
+ end remove_action;
+
+ function check_user_access(server_id_in in number, user_id_in in number)
+ return number
+ is
+ has_access number;
+ begin
+ -- first check; if this returns no rows, then the server/user are in different orgs, and we bail
+ select 1 into has_access
+ from rhnServer S,
+ web_contact wc
+ where wc.org_id = s.org_id
+ and s.id = server_id_in
+ and wc.id = user_id_in;
+
+ -- okay, so they're in the same org. if we have an org admin, they get a free pass
+ if rhn_user.check_role(user_id_in, 'org_admin') = 1
+ then
+ return 1;
+ end if;
+
+ select 1 into has_access
+ from rhnServerGroupMembers SGM,
+ rhnUserServerGroupPerms USG
+ where SGM.server_group_id = USG.server_group_id
+ and SGM.server_id = server_id_in
+ and USG.user_id = user_id_in
+ and rownum = 1;
+
+ return 1;
+ exception
+ when no_data_found
+ then
+ return 0;
+ end check_user_access;
+
+ -- *******************************************************************
+ -- FUNCTION: can_server_consume_virt_slot
+ -- Returns 1 if the server id is eligible to consume a virtual slot,
+ -- else returns 0.
+ -- Called by: insert_into_servergroup, delete_from_servergroup
+ -- *******************************************************************
+ function can_server_consume_virt_slot(server_id_in in number,
+ group_type_in in
+ rhnServerGroupType.label%TYPE)
+ return number
+ is
+
+ cursor server_virt_slots is
+ select vi.VIRTUAL_SYSTEM_ID
+ from
+ rhnVirtualInstance vi
+ where
+ -- server id is a virtual instance
+ vi.VIRTUAL_SYSTEM_ID = server_id_in
+ -- server id's host is virt entitled
+ and exists ( select 1
+ from rhnServerEntitlementView sev
+ where vi.HOST_SYSTEM_ID = sev.server_id
+ and sev.label in ('virtualization_host',
+ 'virtualization_host_platform') )
+ -- server id's host also has the ent we want
+ and exists ( select 1
+ from rhnServerEntitlementView sev2
+ where vi.HOST_SYSTEM_ID = sev2.server_id
+ and sev2.label = group_type_in );
+
+ begin
+ for server_virt_slot in server_virt_slots loop
+ return 1;
+ end loop;
+ return 0;
+ end can_server_consume_virt_slot;
+
+
+ procedure insert_into_servergroup (
+ server_id_in in number,
+ server_group_id_in in number
+ ) is
+ used_slots number;
+ max_slots number;
+ org_id number;
+ mgmt_available number;
+ mgmt_upgrade number;
+ mgmt_sgid number;
+ prov_available number;
+ prov_upgrade number;
+ prov_sgid number;
+ group_label rhnServerGroupType.label%TYPE;
+ group_type number;
+ begin
+ -- frist, group_type = null, because it's easy...
+
+ -- this will rowlock the servergroup we're trying to change;
+ -- we probably need to lock the other one, but I think the chances
+ -- of it being a real issue are very small for now...
+ select sg.group_type, sg.org_id, sg.current_members, sg.max_members
+ into group_type, org_id, used_slots, max_slots
+ from rhnServerGroup sg
+ where sg.id = server_group_id_in
+ for update of sg.current_members;
+
+ if group_type is null then
+ if used_slots >= max_slots then
+ rhn_exception.raise_exception('servergroup_max_members');
+ end if;
+
+ insert into rhnServerGroupMembers(
+ server_id, server_group_id
+ ) values (
+ server_id_in, server_group_id_in
+ );
+ update rhnServerGroup
+ set current_members = current_members + 1
+ where id = server_group_id_in;
+
+ rhn_cache.update_perms_for_server_group(server_group_id_in);
+ return;
+ end if;
+
+ -- now for group_type != null
+ --
+ select label
+ into group_label
+ from rhnServerGroupType sgt
+ where sgt.id = group_type;
+
+ -- the naive easy path that gets hit most often and has to be quickest.
+ if group_label in ('sw_mgr_entitled',
+ 'enterprise_entitled',
+ 'monitoring_entitled',
+ 'provisioning_entitled',
+ 'virtualization_host',
+ 'virtualization_host_platform') then
+ if used_slots >= max_slots and
+ (can_server_consume_virt_slot(server_id_in, group_label) != 1)
+ then
+ rhn_exception.raise_exception('servergroup_max_members');
+ end if;
+
+ insert into rhnServerGroupMembers(
+ server_id, server_group_id
+ ) values (
+ server_id_in, server_group_id_in
+ );
+
+ -- Only update current members if the system in consuming a
+ -- physical slot.
+ if can_server_consume_virt_slot(server_id_in, group_label) = 0 then
+ update rhnServerGroup
+ set current_members = current_members + 1
+ where id = server_group_id_in;
+ end if;
+
+ return;
+ end if;
+ end;
+
+ function insert_into_servergroup_maybe (
+ server_id_in in number,
+ server_group_id_in in number
+ ) return number is
+ retval number := 0;
+ cursor servergroups is
+ select s.id server_id,
+ sg.id server_group_id
+ from rhnServerGroup sg,
+ rhnServer s
+ where s.id = server_id_in
+ and sg.id = server_group_id_in
+ and s.org_id = sg.org_id
+ and not exists (
+ select 1
+ from rhnServerGroupMembers sgm
+ where sgm.server_id = s.id
+ and sgm.server_group_id = sg.id
+ );
+ begin
+ for sgm in servergroups loop
+ rhn_server.insert_into_servergroup(sgm.server_id, sgm.server_group_id);
+ retval := retval + 1;
+ end loop;
+ return retval;
+ end insert_into_servergroup_maybe;
+
+ procedure insert_set_into_servergroup (
+ server_group_id_in in number,
+ user_id_in in number,
+ set_label_in in varchar2
+ ) is
+ cursor servers is
+ select st.element id
+ from rhnSet st
+ where st.user_id = user_id_in
+ and st.label = set_label_in
+ and exists (
+ select 1
+ from rhnUserManagedServerGroups umsg
+ where umsg.server_group_id = server_group_id_in
+ and umsg.user_id = user_id_in
+ )
+ and not exists (
+ select 1
+ from rhnServerGroupMembers sgm
+ where sgm.server_id = st.element
+ and sgm.server_group_id = server_group_id_in
+ );
+ begin
+ for s in servers loop
+ rhn_server.insert_into_servergroup(s.id, server_group_id_in);
+ end loop;
+ end insert_set_into_servergroup;
+
+ procedure delete_from_servergroup (
+ server_id_in in number,
+ server_group_id_in in number
+ ) is
+ cursor server_virt_groups is
+ select 1
+ from rhnServerEntitlementVirtual sev
+ where sev.server_id = server_id_in
+ and sev.server_group_id = server_group_id_in;
+
+ oid number;
+ mgmt_sgid number;
+ label rhnServerGroupType.label%TYPE;
+ group_type number;
+ begin
+ begin
+ select sg.group_type, sg.org_id
+ into group_type, oid
+ from rhnServerGroupMembers sgm,
+ rhnServerGroup sg
+ where sg.id = server_group_id_in
+ and sg.id = sgm.server_group_id
+ and sgm.server_id = server_id_in
+ for update of sg.current_members;
+ exception
+ when no_data_found then
+ rhn_exception.raise_exception('server_not_in_group');
+ end;
+
+ -- do group_type is null first
+ if group_type is null then
+ delete from rhnServerGroupMembers
+ where server_group_id = server_group_id_in
+ and server_id = server_id_in;
+ update rhnServerGroup
+ set current_members = current_members - 1
+ where id = server_group_id_in;
+ rhn_cache.update_perms_for_server_group(server_group_id_in);
+ return;
+ end if;
+
+ select sgt.label
+ into label
+ from rhnServerGroupType sgt
+ where sgt.id = group_type;
+
+ if label in ('sw_mgr_entitled',
+ 'enterprise_entitled',
+ 'provisioning_entitled',
+ 'monitoring_entitled',
+ 'virtualization_host',
+ 'virtualization_host_platform') then
+
+ -- Only update current members if the system is consuming
+ -- a physical slot.
+ for server_virt_group in server_virt_groups loop
+ delete from rhnServerGroupMembers
+ where server_group_id = server_group_id_in
+ and server_id = server_id_in;
+ return;
+ end loop;
+
+ delete from rhnServerGroupMembers
+ where server_group_id = server_group_id_in
+ and server_id = server_id_in;
+
+ update rhnServerGroup
+ set current_members = current_members - 1
+ where id = server_group_id_in;
+
+ end if;
+ end;
+
+ procedure delete_set_from_servergroup (
+ server_group_id_in in number,
+ user_id_in in number,
+ set_label_in in varchar2
+ ) is
+ cursor servergroups is
+ select sgm.server_id, sgm.server_group_id
+ from rhnSet st,
+ rhnServerGroupMembers sgm
+ where sgm.server_group_id = server_group_id_in
+ and st.user_id = user_id_in
+ and st.label = set_label_in
+ and sgm.server_id = st.element
+ and exists (
+ select 1
+ from rhnUserManagedServerGroups usgp
+ where usgp.server_group_id = server_group_id_in
+ and usgp.user_id = user_id_in
+ );
+ begin
+ for sgm in servergroups loop
+ rhn_server.delete_from_servergroup(sgm.server_id, server_group_id_in);
+ end loop;
+ end delete_set_from_servergroup;
+
+ procedure clear_servergroup (
+ server_group_id_in in number
+ ) is
+ cursor servers is
+ select sgm.server_id id
+ from rhnServerGroupMembers sgm
+ where sgm.server_group_id = server_group_id_in;
+ begin
+ for s in servers loop
+ rhn_server.delete_from_servergroup(s.id, server_group_id_in);
+ end loop;
+ end clear_servergroup;
+
+ procedure delete_from_org_servergroups (
+ server_id_in in number
+ ) is
+ cursor servergroups is
+ select sgm.server_group_id id
+ from rhnServerGroup sg,
+ rhnServerGroupMembers sgm
+ where sgm.server_id = server_id_in
+ and sgm.server_group_id = sg.id
+ and sg.group_type is null;
+ begin
+ for sg in servergroups loop
+ rhn_server.delete_from_servergroup(server_id_in, sg.id);
+ end loop;
+ end delete_from_org_servergroups;
+
+ function get_ip_address (
+ server_id_in in number
+ ) return varchar2 is
+ cursor interfaces is
+ select ni.name as name, na4.address as address
+ from rhnServerNetInterface ni,
+ rhnServerNetAddress4 na4
+ where ni.server_id = server_id_in
+ and ni.id = na4.interface_id
+ and na4.address != '127.0.0.1';
+ cursor addresses is
+ select ipaddr ip_addr
+ from rhnServerNetwork
+ where server_id = server_id_in
+ and ipaddr != '127.0.0.1';
+ begin
+ for addr in addresses loop
+ return addr.ip_addr;
+ end loop;
+ for iface in interfaces loop
+ return iface.address;
+ end loop;
+ return NULL;
+ end get_ip_address;
+
+ procedure update_needed_cache(server_id_in in number)
+ is
+ update_lock number;
+ begin
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
+ delete from rhnServerNeededCache
+ where server_id = server_id_in;
+ insert into rhnServerNeededCache
+ (server_id, errata_id, package_id, channel_id)
+ (select distinct sp.server_id, x.errata_id, p.id, x.channel_id
+ FROM (SELECT sp_sp.server_id, sp_sp.name_id,
+ sp_sp.package_arch_id, max(sp_pe.evr) AS max_evr
+ FROM rhnServerPackage sp_sp
+ join rhnPackageEvr sp_pe ON sp_pe.id = sp_sp.evr_id
+ GROUP BY sp_sp.server_id, sp_sp.name_id, sp_sp.package_arch_id) sp
+ join rhnPackage p ON p.name_id = sp.name_id
+ join rhnPackageEvr pe ON pe.id = p.evr_id
+ AND sp.max_evr < pe.evr
+ join rhnPackageUpgradeArchCompat puac
+ ON puac.package_arch_id = sp.package_arch_id
+ AND puac.package_upgrade_arch_id = p.package_arch_id
+ join rhnServerChannel sc ON sc.server_id = sp.server_id
+ join rhnChannelPackage cp ON cp.package_id = p.id
+ AND cp.channel_id = sc.channel_id
+ left join (SELECT ep.errata_id, ce.channel_id, ep.package_id
+ FROM rhnChannelErrata ce
+ join rhnErrataPackage ep
+ ON ep.errata_id = ce.errata_id
+ join rhnServerChannel sc_sc
+ ON sc_sc.channel_id = ce.channel_id
+ WHERE sc_sc.server_id = server_id_in) x
+ ON x.channel_id = sc.channel_id
+ AND x.package_id = cp.package_id
+ where sp.server_id = server_id_in);
+ end update_needed_cache;
+
+end rhn_server;
+/
+SHOW ERRORS
diff --git a/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/049-rhn_server.pkb.postgresql b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/049-rhn_server.pkb.postgresql
new file mode 100644
index 0000000..87fa3e4
--- /dev/null
+++ b/schema/spacewalk/upgrade/spacewalk-schema-2.0-to-spacewalk-schema-2.1/049-rhn_server.pkb.postgresql
@@ -0,0 +1,829 @@
+-- oracle equivalent source sha1 07b6ab3867e4d4ebf772b6ee9731f83e33f4d7ae
+--
+-- Copyright (c) 2008--2012 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.
+--
+--
+--
+--
+
+-- create schema rhn_server;
+
+--update pg_setting
+update pg_settings set setting = 'rhn_server,' || setting where name = 'search_path';
+
+ create or replace function system_service_level(
+ server_id_in in numeric,
+ service_level_in in varchar
+ ) returns numeric as $$
+ declare
+ ents cursor is
+ select label from rhnServerEntitlementView
+ where server_id = server_id_in;
+
+ retval numeric := 0;
+
+ begin
+ for ent in ents loop
+ retval := rhn_entitlements.entitlement_grants_service (ent.label, service_level_in);
+ if retval = 1 then
+ return retval;
+ end if;
+ end loop;
+
+ return retval;
+
+ end$$ language plpgsql;
+
+
+ create or replace function can_change_base_channel(server_id_in IN NUMERIC)
+ returns numeric
+ as $$
+ declare
+ throwaway numeric;
+ begin
+ -- the idea: if we get past this query, the server is
+ -- neither sat nor proxy, so base channel is changeable
+
+ select 1 into throwaway
+ from rhnServer S
+ where S.id = server_id_in
+ and not exists (select 1 from rhnSatelliteInfo SI where SI.server_id = S.id)
+ and not exists (select 1 from rhnProxyInfo PI where PI.server_id = S.id);
+
+ if not found then
+ return 0;
+ end if;
+
+ return 1;
+ end$$ language plpgsql;
+
+ create or replace function set_custom_value(
+ server_id_in in numeric,
+ user_id_in in numeric,
+ key_label_in in varchar,
+ value_in in varchar
+ ) returns void
+ as $$
+ declare
+ key_id_val numeric;
+ begin
+ select CDK.id into strict key_id_val
+ from rhnCustomDataKey CDK,
+ rhnServer S
+ where S.id = server_id_in
+ and S.org_id = CDK.org_id
+ and CDK.label = key_label_in;
+
+ begin
+ insert into rhnServerCustomDataValue (server_id, key_id, value, created_by, last_modified_by)
+ values (server_id_in, key_id_val, value_in, user_id_in, user_id_in);
+ exception
+ when UNIQUE_VIOLATION
+ then
+ update rhnServerCustomDataValue
+ set value = value_in,
+ last_modified_by = user_id_in
+ where server_id = server_id_in
+ and key_id = key_id_val;
+ end;
+
+ end$$ language plpgsql;
+
+ create or replace function bulk_set_custom_value(
+ key_label_in in varchar,
+ value_in in varchar,
+ set_label_in in varchar,
+ set_uid_in in numeric
+ )
+ returns integer
+ as $$
+ declare
+ i integer;
+ server record;
+ begin
+ i := 0;
+ for server in (
+ SELECT user_id, label, element, element_two
+ FROM rhnSet
+ WHERE label = set_label_in
+ AND user_id = set_uid_in
+ ) loop
+ if rhn_server.system_service_level(server.element, 'provisioning') = 1 then
+ perform rhn_server.set_custom_value(server.element, set_uid_in, key_label_in, value_in);
+ i := i + 1;
+ end if;
+ end loop;
+ return i;
+ end$$ language plpgsql;
+
+ create or replace function bulk_snapshot_tag(
+ org_id_in in numeric,
+ tagname_in in varchar,
+ set_label_in in varchar,
+ set_uid_in in numeric
+ ) returns void
+ as $$
+ declare
+ server record;
+ snapshot_id numeric;
+ 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
+ if rhn_server.system_service_level(server.element, 'provisioning') = 1 then
+ select max(id) into snapshot_id
+ from rhnSnapshot
+ where server_id = server.element;
+
+ if snapshot_id is null then
+ perform rhn_server.snapshot_server(server.element, 'tagging system: ' || tagname_in);
+
+ select max(id) into snapshot_id
+ from rhnSnapshot
+ where server_id = server.element;
+ end if;
+
+ -- now have a snapshot_id to work with...
+ begin
+ perform rhn_server.tag_snapshot(snapshot_id, org_id_in, tagname_in);
+ exception
+ when UNIQUE_VIOLATION
+ then
+ -- do nothing, be forgiving...
+ null;
+ end;
+ end if;
+ end loop;
+ end$$ language plpgsql;
+
+ create or replace function tag_delete(
+ server_id_in in numeric,
+ tag_id_in in numeric
+ ) returns void
+ as $$
+ declare
+ snapshots cursor is
+ select snapshot_id
+ from rhnSnapshotTag
+ where tag_id = tag_id_in;
+ tag_id_tmp numeric;
+ begin
+ select id into tag_id_tmp
+ from rhnTag
+ where id = tag_id_in
+ for update;
+
+ delete
+ from rhnSnapshotTag
+ where server_id = server_id_in
+ and tag_id = tag_id_in;
+ for snapshot in snapshots loop
+ return;
+ end loop;
+ delete
+ from rhnTag
+ where id = tag_id_in;
+ end$$ language plpgsql;
+
+ create or replace function tag_snapshot(
+ snapshot_id_in in numeric,
+ org_id_in in numeric,
+ tagname_in in varchar
+ ) returns void
+ as $$
+ begin
+ insert into rhnSnapshotTag (snapshot_id, server_id, tag_id)
+ select snapshot_id_in, server_id, lookup_tag(org_id_in, tagname_in)
+ from rhnSnapshot
+ where id = snapshot_id_in;
+ end$$ language plpgsql;
+
+ create or replace function bulk_snapshot(
+ reason_in in varchar,
+ 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
+ if rhn_server.system_service_level(server.element, 'provisioning') = 1 then
+ perform rhn_server.snapshot_server(server.element, reason_in);
+ end if;
+ end loop;
+ end$$ language plpgsql;
+
+ create or replace function snapshot_server(
+ server_id_in in numeric,
+ reason_in in varchar
+ ) returns void
+ as $$
+ declare
+ snapshot_id_v numeric;
+ revisions cursor is
+ select distinct
+ cr.id
+ from rhnConfigRevision cr,
+ rhnConfigFileName cfn,
+ rhnConfigFile cf,
+ rhnConfigChannel cc,
+ rhnServerConfigChannel scc
+ where 1=1
+ and scc.server_id = server_id_in
+ and scc.config_channel_id = cc.id
+ and cc.id = cf.config_channel_id
+ and cf.id = cr.config_file_id
+ and cr.id = cf.latest_config_revision_id
+ and cf.config_file_name_id = cfn.id
+ and cf.id = lookup_first_matching_cf(scc.server_id, cfn.path);
+ locked integer;
+ begin
+ select nextval('rhn_snapshot_id_seq') into snapshot_id_v;
+
+ insert into rhnSnapshot (id, org_id, server_id, reason) (
+ select snapshot_id_v,
+ s.org_id,
+ server_id_in,
+ reason_in
+ from rhnServer s
+ where s.id = server_id_in
+ );
+ insert into rhnSnapshotChannel (snapshot_id, channel_id) (
+ select snapshot_id_v, sc.channel_id
+ from rhnServerChannel sc
+ where sc.server_id = server_id_in
+ );
+ insert into rhnSnapshotServerGroup (snapshot_id, server_group_id) (
+ select snapshot_id_v, sgm.server_group_id
+ from rhnServerGroupMembers sgm
+ where sgm.server_id = server_id_in
+ );
+ locked := 0;
+ <<iloop>>
+ while true loop
+ begin
+ insert into rhnPackageNEVRA (id, name_id, evr_id, package_arch_id)
+ select nextval('rhn_pkgnevra_id_seq'), sp.name_id, sp.evr_id, sp.package_arch_id
+ from rhnServerPackage sp
+ where sp.server_id = server_id_in
+ and not exists
+ (select 1
+ from rhnPackageNEVRA nevra
+ where nevra.name_id = sp.name_id
+ and nevra.evr_id = sp.evr_id
+ and (nevra.package_arch_id = sp.package_arch_id
+ or (nevra.package_arch_id is null
+ and sp.package_arch_id is null)));
+ exit iloop;
+ exception when unique_violation then
+ if locked = 1 then
+ raise;
+ else
+ lock table rhnPackageNEVRA in exclusive mode;
+ locked := 1;
+ end if;
+ end;
+ end loop;
+ insert into rhnSnapshotPackage (snapshot_id, nevra_id) (
+ select distinct snapshot_id_v, nevra.id
+ from rhnServerPackage sp, rhnPackageNEVRA nevra
+ where sp.server_id = server_id_in
+ and nevra.name_id = sp.name_id
+ and nevra.evr_id = sp.evr_id
+ and (nevra.package_arch_id = sp.package_arch_id
+ or (nevra.package_arch_id is null
+ and sp.package_arch_id is null))
+ );
+
+ insert into rhnSnapshotConfigChannel ( snapshot_id, config_channel_id ) (
+ select snapshot_id_v, scc.config_channel_id
+ from rhnServerConfigChannel scc
+ where server_id = server_id_in
+ );
+
+ for revision in revisions loop
+ insert into rhnSnapshotConfigRevision (
+ snapshot_id, config_revision_id
+ ) values (
+ snapshot_id_v, revision.id
+ );
+ end loop;
+ end$$ language plpgsql;
+
+ create or replace function remove_action(
+ server_id_in in numeric,
+ action_id_in in numeric
+ ) returns void
+ as $$
+ declare
+ -- this really wants "nulls last", but 8.1.7.3.0 sucks ass.
+ -- instead, we make a local table that holds our
+ -- list of ids with null prereqs. There's surely a better way
+ -- (an array instead of a table maybe? who knows...)
+ -- but I've got code to do this handy that I can look at ;)
+ chained_actions cursor is
+ with recursive r(id, prerequisite) as (
+ select id, prerequisite
+ from rhnAction
+ where id = action_id_in
+ union all
+ select r1.id, r1.prerequisite
+ from rhnAction r1, r
+ where r.id = r1.prerequisite
+ )
+ select * from r
+ order by prerequisite desc;
+ sessions cursor is
+ select s.id
+ from rhnKickstartSession s
+ where server_id_in in (s.old_server_id, s.new_server_id)
+ and s.action_id = action_id_in
+ and not exists (
+ select 1
+ from rhnKickstartSessionState ss
+ where ss.id = s.state_id
+ and ss.label in ('failed','complete')
+ );
+ chain_ends numeric[];
+ i numeric;
+ prereq numeric := 1;
+ begin
+ select prerequisite
+ into prereq
+ from rhnAction
+ where id = action_id_in;
+
+ if prereq is not null then
+ perform rhn_exception.raise_exception('action_is_child');
+ end if;
+
+ chain_ends := '{}';
+ i := 1;
+ for action in chained_actions loop
+ if action.prerequisite is null then
+ chain_ends[i] := action.id;
+ i := i + 1;
+ else
+ delete from rhnServerAction
+ where server_id = server_id_in
+ and action_id = action.id;
+ end if;
+ end loop;
+
+ delete from rhnServerAction
+ where server_id = server_id_in
+ and action_id = any(chain_ends);
+
+ for s in sessions loop
+ update rhnKickstartSession
+ set state_id = (
+ select id
+ from rhnKickstartSessionState
+ where label = 'failed'
+ ),
+ action_id = null
+ where id = s.id;
+ perform set_ks_session_history_message(s.id, 'failed', 'Kickstart cancelled due to action removal');
+ end loop;
+ end$$ language plpgsql;
+
+ create or replace function check_user_access(server_id_in in numeric, user_id_in in numeric)
+ returns numeric
+ as $$
+ declare
+ has_access numeric;
+ begin
+ -- first check; if this returns no rows, then the server/user are in different orgs, and we bail
+ select 1 into has_access
+ from rhnServer S,
+ web_contact wc
+ where wc.org_id = s.org_id
+ and s.id = server_id_in
+ and wc.id = user_id_in;
+
+ if not found then
+ return 0;
+ end if;
+
+ -- okay, so they're in the same org. if we have an org admin, they get a free pass
+ if rhn_user.check_role(user_id_in, 'org_admin') = 1
+ then
+ return 1;
+ end if;
+
+ select 1 into has_access
+ from rhnServerGroupMembers SGM,
+ rhnUserServerGroupPerms USG
+ where SGM.server_group_id = USG.server_group_id
+ and SGM.server_id = server_id_in
+ and USG.user_id = user_id_in;
+
+ if not found then
+ return 0;
+ end if;
+
+ return 1;
+ end$$ language plpgsql;
+
+ -- *******************************************************************
+ -- FUNCTION: can_server_consume_virt_slot
+ -- Returns 1 if the server id is eligible to consume a virtual slot,
+ -- else returns 0.
+ -- Called by: insert_into_servergroup, delete_from_servergroup
+ -- *******************************************************************
+ create or replace function can_server_consume_virt_slot(server_id_in in numeric,
+ group_type_in in varchar)
+ returns numeric
+ as $$
+ declare
+ server_virt_slots cursor is
+ select vi.VIRTUAL_SYSTEM_ID
+ from
+ rhnVirtualInstance vi
+ where
+ -- server id is a virtual instance
+ vi.VIRTUAL_SYSTEM_ID = server_id_in
+ -- server id's host is virt entitled
+ and exists ( select 1
+ from rhnServerEntitlementView sev
+ where vi.HOST_SYSTEM_ID = sev.server_id
+ and sev.label in ('virtualization_host',
+ 'virtualization_host_platform') )
+ -- server id's host also has the ent we want
+ and exists ( select 1
+ from rhnServerEntitlementView sev2
+ where vi.HOST_SYSTEM_ID = sev2.server_id
+ and sev2.label = group_type_in );
+
+ begin
+ for server_virt_slot in server_virt_slots loop
+ return 1;
+ end loop;
+ return 0;
+ end$$ language plpgsql;
+
+
+ create or replace function insert_into_servergroup (
+ server_id_in in numeric,
+ server_group_id_in in numeric
+ ) returns void
+ as $$
+ declare
+ used_slots numeric;
+ max_slots numeric;
+ org_id numeric;
+ mgmt_available numeric;
+ mgmt_upgrade numeric;
+ mgmt_sgid numeric;
+ prov_available numeric;
+ prov_upgrade numeric;
+ prov_sgid numeric;
+ group_label varchar;
+ group_type numeric;
+ begin
+ -- first, group_type = null, because it's easy...
+
+ -- this will rowlock the servergroup we're trying to change;
+ -- we probably need to lock the other one, but I think the chances
+ -- of it being a real issue are very small for now...
+ select sg.group_type, sg.org_id, sg.current_members, sg.max_members
+ into group_type, org_id, used_slots, max_slots
+ from rhnServerGroup sg
+ where sg.id = server_group_id_in
+ for update of sg;
+
+ if group_type is null then
+ if used_slots >= max_slots then
+ perform rhn_exception.raise_exception('servergroup_max_members');
+ end if;
+
+ insert into rhnServerGroupMembers(
+ server_id, server_group_id
+ ) values (
+ server_id_in, server_group_id_in
+ );
+ update rhnServerGroup
+ set current_members = current_members + 1
+ where id = server_group_id_in;
+
+ perform rhn_cache.update_perms_for_server_group(server_group_id_in);
+ return;
+ end if;
+
+ -- now for group_type != null
+ --
+ select label
+ into group_label
+ from rhnServerGroupType sgt
+ where sgt.id = group_type;
+
+ -- the naive easy path that gets hit most often and has to be quickest.
+ if group_label in ('sw_mgr_entitled',
+ 'enterprise_entitled',
+ 'monitoring_entitled',
+ 'provisioning_entitled',
+ 'virtualization_host',
+ 'virtualization_host_platform') then
+ if used_slots >= max_slots and
+ (rhn_server.can_server_consume_virt_slot(server_id_in, group_label) != 1)
+ then
+ perform rhn_exception.raise_exception('servergroup_max_members');
+ end if;
+
+ insert into rhnServerGroupMembers(
+ server_id, server_group_id
+ ) values (
+ server_id_in, server_group_id_in
+ );
+
+ -- Only update current members if the system in consuming a
+ -- physical slot.
+ if rhn_server.can_server_consume_virt_slot(server_id_in, group_label) = 0 then
+ update rhnServerGroup
+ set current_members = current_members + 1
+ where id = server_group_id_in;
+ end if;
+
+ return;
+ end if;
+ end$$ language plpgsql;
+
+ create or replace function insert_into_servergroup_maybe (
+ server_id_in in numeric,
+ server_group_id_in in numeric
+ ) returns numeric as $$
+ declare
+ retval numeric := 0;
+ servergroups cursor is
+ select s.id server_id,
+ sg.id server_group_id
+ from rhnServerGroup sg,
+ rhnServer s
+ where s.id = server_id_in
+ and sg.id = server_group_id_in
+ and s.org_id = sg.org_id
+ and not exists (
+ select 1
+ from rhnServerGroupMembers sgm
+ where sgm.server_id = s.id
+ and sgm.server_group_id = sg.id
+ );
+ begin
+ for sgm in servergroups loop
+ perform rhn_server.insert_into_servergroup(sgm.server_id, sgm.server_group_id);
+ retval := retval + 1;
+ end loop;
+ return retval;
+ end$$ language plpgsql;
+
+ create or replace function insert_set_into_servergroup (
+ server_group_id_in in numeric,
+ user_id_in in numeric,
+ set_label_in in varchar
+ ) returns void
+ as $$
+ declare
+ servers cursor is
+ select st.element id
+ from rhnSet st
+ where st.user_id = user_id_in
+ and st.label = set_label_in
+ and exists (
+ select 1
+ from rhnUserManagedServerGroups umsg
+ where umsg.server_group_id = server_group_id_in
+ and umsg.user_id = user_id_in
+ )
+ and not exists (
+ select 1
+ from rhnServerGroupMembers sgm
+ where sgm.server_id = st.element
+ and sgm.server_group_id = server_group_id_in
+ );
+ begin
+ for s in servers loop
+ perform rhn_server.insert_into_servergroup(s.id, server_group_id_in);
+ end loop;
+ end$$ language plpgsql;
+
+ create or replace function delete_from_servergroup (
+ server_id_in in numeric,
+ server_group_id_in in numeric
+ ) returns void
+ as $$
+ declare
+ server_virt_groups cursor is
+ select 1
+ from rhnServerEntitlementVirtual sev
+ where sev.server_id = server_id_in
+ and sev.server_group_id = server_group_id_in;
+
+ oid numeric;
+ mgmt_sgid numeric;
+ label varchar;
+ group_type numeric;
+ begin
+ select sg.group_type, sg.org_id
+ into group_type, oid
+ from rhnServerGroupMembers sgm,
+ rhnServerGroup sg
+ where sg.id = server_group_id_in
+ and sg.id = sgm.server_group_id
+ and sgm.server_id = server_id_in
+ for update of sg;
+
+ if not found then
+ perform rhn_exception.raise_exception('server_not_in_group');
+ end if;
+
+ -- do group_type is null first
+ if group_type is null then
+ delete from rhnServerGroupMembers
+ where server_group_id = server_group_id_in
+ and server_id = server_id_in;
+ update rhnServerGroup
+ set current_members = current_members - 1
+ where id = server_group_id_in;
+ perform rhn_cache.update_perms_for_server_group(server_group_id_in);
+ return;
+ end if;
+
+ select sgt.label
+ into label
+ from rhnServerGroupType sgt
+ where sgt.id = group_type;
+
+ if label in ('sw_mgr_entitled',
+ 'enterprise_entitled',
+ 'provisioning_entitled',
+ 'monitoring_entitled',
+ 'virtualization_host',
+ 'virtualization_host_platform') then
+
+ -- Only update current members if the system is consuming
+ -- a physical slot.
+ for server_virt_group in server_virt_groups loop
+ delete from rhnServerGroupMembers
+ where server_group_id = server_group_id_in
+ and server_id = server_id_in;
+ return;
+ end loop;
+
+ delete from rhnServerGroupMembers
+ where server_group_id = server_group_id_in
+ and server_id = server_id_in;
+
+ update rhnServerGroup
+ set current_members = current_members - 1
+ where id = server_group_id_in;
+
+ end if;
+ end$$ language plpgsql;
+
+ create or replace function delete_set_from_servergroup (
+ server_group_id_in in numeric,
+ user_id_in in numeric,
+ set_label_in in varchar
+ ) returns void
+ as $$
+ declare
+ servergroups cursor is
+ select sgm.server_id, sgm.server_group_id
+ from rhnSet st,
+ rhnServerGroupMembers sgm
+ where sgm.server_group_id = server_group_id_in
+ and st.user_id = user_id_in
+ and st.label = set_label_in
+ and sgm.server_id = st.element
+ and exists (
+ select 1
+ from rhnUserManagedServerGroups usgp
+ where usgp.server_group_id = server_group_id_in
+ and usgp.user_id = user_id_in
+ );
+ begin
+ for sgm in servergroups loop
+ perform rhn_server.delete_from_servergroup(sgm.server_id, server_group_id_in);
+ end loop;
+ end$$ language plpgsql;
+
+ create or replace function clear_servergroup (
+ server_group_id_in in numeric
+ ) returns void
+ as $$
+ declare
+ servers cursor is
+ select sgm.server_id id
+ from rhnServerGroupMembers sgm
+ where sgm.server_group_id = server_group_id_in;
+ begin
+ for s in servers loop
+ perform rhn_server.delete_from_servergroup(s.id, server_group_id_in);
+ end loop;
+ end$$ language plpgsql;
+
+ create or replace function delete_from_org_servergroups (
+ server_id_in in numeric
+ ) returns void
+ as $$
+ declare
+ servergroups cursor is
+ select sgm.server_group_id id
+ from rhnServerGroup sg,
+ rhnServerGroupMembers sgm
+ where sgm.server_id = server_id_in
+ and sgm.server_group_id = sg.id
+ and sg.group_type is null;
+ begin
+ for sg in servergroups loop
+ perform rhn_server.delete_from_servergroup(server_id_in, sg.id);
+ end loop;
+ end$$ language plpgsql;
+
+ create or replace function get_ip_address (
+ server_id_in in numeric
+ ) returns varchar as $$
+ declare
+ interfaces cursor is
+ select ni.name as name, na4.address as address
+ from rhnServerNetInterface ni,
+ rhnServerNetAddress4 na4
+ where server_id = server_id_in
+ and ni.id = na4.interface_id
+ and na4.address != '127.0.0.1';
+ addresses cursor is
+ select ipaddr ip_addr
+ from rhnServerNetwork
+ where server_id = server_id_in
+ and ipaddr != '127.0.0.1';
+ begin
+ for addr in addresses loop
+ return addr.ip_addr;
+ end loop;
+ for iface in interfaces loop
+ return iface.address;
+ end loop;
+ return NULL;
+ end$$ language plpgsql;
+
+ create or replace function update_needed_cache(
+ server_id_in in numeric
+ ) returns void as $$
+ declare
+ update_lock numeric;
+ begin
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
+ delete from rhnServerNeededCache
+ where server_id = server_id_in;
+ insert into rhnServerNeededCache
+ (server_id, errata_id, package_id, channel_id)
+ (select distinct sp.server_id, x.errata_id, p.id, x.channel_id
+ FROM (SELECT sp_sp.server_id, sp_sp.name_id,
+ sp_sp.package_arch_id, max(sp_pe.evr) AS max_evr
+ FROM rhnServerPackage sp_sp
+ join rhnPackageEvr sp_pe ON sp_pe.id = sp_sp.evr_id
+ GROUP BY sp_sp.server_id, sp_sp.name_id, sp_sp.package_arch_id) sp
+ join rhnPackage p ON p.name_id = sp.name_id
+ join rhnPackageEvr pe ON pe.id = p.evr_id AND sp.max_evr < pe.evr
+ join rhnPackageUpgradeArchCompat puac
+ ON puac.package_arch_id = sp.package_arch_id
+ AND puac.package_upgrade_arch_id = p.package_arch_id
+ join rhnServerChannel sc ON sc.server_id = sp.server_id
+ join rhnChannelPackage cp ON cp.package_id = p.id
+ AND cp.channel_id = sc.channel_id
+ left join (SELECT ep.errata_id, ce.channel_id, ep.package_id
+ FROM rhnChannelErrata ce
+ join rhnErrataPackage ep
+ ON ep.errata_id = ce.errata_id
+ join rhnServerChannel sc_sc
+ ON sc_sc.channel_id = ce.channel_id
+ WHERE sc_sc.server_id = server_id_in) x
+ ON x.channel_id = sc.channel_id AND x.package_id = cp.package_id
+ where sp.server_id = server_id_in);
+ end$$ language plpgsql;
+-- restore the original setting
+update pg_settings set setting = overlay( setting placing '' from 1 for (length('rhn_server')+1) ) where name = 'search_path';
commit 2706a514bf2343681cdcf1e9f9c855a827e8b088
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Tue Feb 11 14:54:38 2014 +0100
1063821 - fix rhn_channel.update_needed_cache() deadlock
Two parallel runs of rhn_channel.update_needed_cache (executed by
taskomatic) had the potential to deadlock each other.
diff --git a/schema/spacewalk/oracle/packages/rhn_channel.pkb b/schema/spacewalk/oracle/packages/rhn_channel.pkb
index 7ee39f2..57bfa05 100644
--- a/schema/spacewalk/oracle/packages/rhn_channel.pkb
+++ b/schema/spacewalk/oracle/packages/rhn_channel.pkb
@@ -1221,6 +1221,7 @@ IS
select sc.server_id as id
from rhnServerChannel sc
where sc.channel_id = channel_id_in
+ order by id asc
) loop
rhn_server.update_needed_cache(server.id);
commit;
diff --git a/schema/spacewalk/postgres/packages/rhn_channel.pkb b/schema/spacewalk/postgres/packages/rhn_channel.pkb
index b7d6111..7f9adec 100644
--- a/schema/spacewalk/postgres/packages/rhn_channel.pkb
+++ b/schema/spacewalk/postgres/packages/rhn_channel.pkb
@@ -1,4 +1,4 @@
--- oracle equivalent source sha1 9a8f9788f4fdeeeee56995bb10c9cacc8cceb700
+-- oracle equivalent source sha1 cc1b86fd8db5758d5f3a7ccc146f38954454def1
--
-- Copyright (c) 2008--2013 Red Hat, Inc.
--
@@ -1244,6 +1244,7 @@ update pg_settings set setting = 'rhn_channel,' || setting where name = 'search_
select sc.server_id as id
from rhnServerChannel sc
where sc.channel_id = channel_id_in
+ order by id asc
) loop
perform rhn_server.update_needed_cache(server.id);
end loop;
commit 75b7f104508c05b6e8a5cb4533c8d8bc92893ddc
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Tue Feb 11 14:46:53 2014 +0100
1063821 - avoid deadlocks when altering base channels via ssm
This fixes rhn_channel.update_needed_cache (executed by taskomatic)
vs. rhn_channel.(un)subscribe_server (executed by tomcat) deadlocks.
diff --git a/schema/spacewalk/oracle/packages/rhn_channel.pkb b/schema/spacewalk/oracle/packages/rhn_channel.pkb
index 325c18a..7ee39f2 100644
--- a/schema/spacewalk/oracle/packages/rhn_channel.pkb
+++ b/schema/spacewalk/oracle/packages/rhn_channel.pkb
@@ -61,7 +61,13 @@ IS
consenting_user NUMBER;
allowed number := 0;
is_fve CHAR(1) := 'N';
+ update_lock number;
BEGIN
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
if user_id_in is not null then
allowed := rhn_channel.user_role_check(channel_id_in, user_id_in, 'subscribe');
else
@@ -452,6 +458,7 @@ IS
server_org_id_val NUMBER;
available_subscriptions NUMBER;
server_already_in_chan BOOLEAN;
+ update_lock number;
cursor channel_family_is_proxy(channel_family_id_in in number) is
select 1
from rhnChannelFamily
@@ -476,6 +483,11 @@ IS
and c.id = sc.channel_id
and sc.server_id = server_id_in;
BEGIN
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
FOR child IN local_chk_server_parent_memb(server_id_in, channel_id_in)
LOOP
if unsubscribe_children_in = 1 then
diff --git a/schema/spacewalk/oracle/packages/rhn_server.pkb b/schema/spacewalk/oracle/packages/rhn_server.pkb
index 36b711c..40939b2 100644
--- a/schema/spacewalk/oracle/packages/rhn_server.pkb
+++ b/schema/spacewalk/oracle/packages/rhn_server.pkb
@@ -747,7 +747,13 @@ is
procedure update_needed_cache(server_id_in in number)
is
+ update_lock number;
begin
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
delete from rhnServerNeededCache
where server_id = server_id_in;
insert into rhnServerNeededCache
diff --git a/schema/spacewalk/postgres/packages/rhn_channel.pkb b/schema/spacewalk/postgres/packages/rhn_channel.pkb
index 5931562..b7d6111 100644
--- a/schema/spacewalk/postgres/packages/rhn_channel.pkb
+++ b/schema/spacewalk/postgres/packages/rhn_channel.pkb
@@ -1,4 +1,4 @@
--- oracle equivalent source sha1 e6fa92f40cfb0ac1645f53ecad5f2a8f99a616f7
+-- oracle equivalent source sha1 9a8f9788f4fdeeeee56995bb10c9cacc8cceb700
--
-- Copyright (c) 2008--2013 Red Hat, Inc.
--
@@ -65,7 +65,13 @@ update pg_settings set setting = 'rhn_channel,' || setting where name = 'search_
consenting_user NUMERIC;
allowed numeric;
is_fve_char char(1) := 'N';
+ update_lock numeric;
BEGIN
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
if user_id_in is not null then
allowed := rhn_channel.user_role_check(channel_id_in, user_id_in, 'subscribe');
else
@@ -483,6 +489,7 @@ update pg_settings set setting = 'rhn_channel,' || setting where name = 'search_
server_org_id_val NUMERIC;
available_subscriptions NUMERIC;
server_already_in_chan BOOLEAN;
+ update_lock numeric;
channel_family_is_proxy cursor(channel_family_id_in numeric) for
select 1
from rhnChannelFamily
@@ -495,6 +502,11 @@ update pg_settings set setting = 'rhn_channel,' || setting where name = 'search_
and label = 'rhn-satellite';
child record;
BEGIN
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
-- In PostgreSQL recursion with opened cursors is not allowed so we use
-- FOR IN SELECT form which is ok.
FOR child IN select c.id
diff --git a/schema/spacewalk/postgres/packages/rhn_server.pkb b/schema/spacewalk/postgres/packages/rhn_server.pkb
index 41f2e9a..d47df86 100644
--- a/schema/spacewalk/postgres/packages/rhn_server.pkb
+++ b/schema/spacewalk/postgres/packages/rhn_server.pkb
@@ -1,4 +1,4 @@
--- oracle equivalent source sha1 b6947eea546edc7a66c7b53d0b62dc734ce3ca8a
+-- oracle equivalent source sha1 07b6ab3867e4d4ebf772b6ee9731f83e33f4d7ae
--
-- Copyright (c) 2008--2012 Red Hat, Inc.
--
@@ -789,7 +789,14 @@ update pg_settings set setting = 'rhn_server,' || setting where name = 'search_p
create or replace function update_needed_cache(
server_id_in in numeric
) returns void as $$
+ declare
+ update_lock numeric;
begin
+ select 1
+ into update_lock
+ from rhnServer
+ where id = server_id_in
+ for update;
delete from rhnServerNeededCache
where server_id = server_id_in;
insert into rhnServerNeededCache
10 years, 3 months
java/code
by Silvio Moioli
java/code/src/com/redhat/rhn/frontend/action/ssm/ProvisioningRemoteCommand.java | 2 +-
java/code/webapp/WEB-INF/pages/ssm/provisioning-remote-command.jsp | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
New commits:
commit b4919ac0ea942c20766da455bd6a8d2260939ba2
Author: Silvio Moioli <smoioli(a)suse.de>
Date: Tue Feb 11 11:53:28 2014 +0100
Fix an ISE that could happen after clearing cookies (elaborator not bound)
diff --git a/java/code/src/com/redhat/rhn/frontend/action/ssm/ProvisioningRemoteCommand.java b/java/code/src/com/redhat/rhn/frontend/action/ssm/ProvisioningRemoteCommand.java
index 926055e..a908a5e 100644
--- a/java/code/src/com/redhat/rhn/frontend/action/ssm/ProvisioningRemoteCommand.java
+++ b/java/code/src/com/redhat/rhn/frontend/action/ssm/ProvisioningRemoteCommand.java
@@ -329,7 +329,7 @@ public class ProvisioningRemoteCommand extends RhnAction implements Listable {
public List<SystemOverview> getResult(RequestContext context) {
List<SystemOverview> dataset = new ArrayList<SystemOverview>();
List<SystemOverview> sysOvr = SystemManager.inSet(context.getLoggedInUser(),
- RhnSetDecl.SYSTEMS.getLabel());
+ RhnSetDecl.SYSTEMS.getLabel(), true);
for (int i = 0; i < sysOvr.size(); i++) {
Server server = SystemManager.lookupByIdAndUser(sysOvr.get(i).getId(),
context.getLoggedInUser());
diff --git a/java/code/webapp/WEB-INF/pages/ssm/provisioning-remote-command.jsp b/java/code/webapp/WEB-INF/pages/ssm/provisioning-remote-command.jsp
index ae1213f..2e4d85a 100644
--- a/java/code/webapp/WEB-INF/pages/ssm/provisioning-remote-command.jsp
+++ b/java/code/webapp/WEB-INF/pages/ssm/provisioning-remote-command.jsp
@@ -77,7 +77,6 @@
alphabarcolumn="name"
filter="com.redhat.rhn.frontend.taglibs.list.filters.SystemOverviewFilter">
- <rl:decorator name="ElaborationDecorator"/>
<rl:decorator name="SystemIconDecorator"/>
<rl:decorator name="PageSizeDecorator"/>
10 years, 3 months
3 commits - java/code
by mkollar
java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp | 120 +++++--------
java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp | 137 ++++++---------
2 files changed, 111 insertions(+), 146 deletions(-)
New commits:
commit 6303cdfbff967d124c8113b1ecef534ca71c610c
Author: Matej Kollar <mkollar(a)redhat.com>
Date: Mon Feb 10 18:09:24 2014 +0100
Removed duplicate colons
diff --git a/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp b/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp
index 4c1a07d..2f24151 100644
--- a/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp
@@ -37,7 +37,7 @@
</div>
<div class="form-group">
<label class="col-md-3 control-label">
- <bean:message key="schedule.jsp.at" />:
+ <bean:message key="schedule.jsp.at" />
</label>
<div class="col-md-6">
<jsp:include page="/WEB-INF/pages/common/fragments/date-picker.jsp">
diff --git a/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp b/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp
index 821302e..81b89f7 100644
--- a/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp
@@ -42,7 +42,7 @@
<div class="form-horizontal">
<div class="form-group">
<label class="col-md-3 control-label">
- <bean:message key="schedule.jsp.at" />:
+ <bean:message key="schedule.jsp.at" />
</label>
<div class="col-md-6">
<jsp:include page="/WEB-INF/pages/common/fragments/date-picker.jsp">
commit 31d358af3f9707771107ed6887989eeeed30e50f
Author: Matej Kollar <mkollar(a)redhat.com>
Date: Mon Feb 10 18:08:42 2014 +0100
Unified space before slash in void tags
diff --git a/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp b/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp
index 0b3c796..4c1a07d 100644
--- a/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp
@@ -9,7 +9,7 @@
<body>
<%@ include file="/WEB-INF/pages/common/fragments/errata/errata-header.jspf" %>
<h2>
- <bean:message key="confirm.jsp.header"/> ${errata.advisoryName}
+ <bean:message key="confirm.jsp.header" /> ${errata.advisoryName}
</h2>
<p>
<bean:message key="confirm.jsp.summary" arg0="${errata.advisoryName}" />
@@ -37,22 +37,22 @@
</div>
<div class="form-group">
<label class="col-md-3 control-label">
- <bean:message key="schedule.jsp.at"/>:
+ <bean:message key="schedule.jsp.at" />:
</label>
<div class="col-md-6">
<jsp:include page="/WEB-INF/pages/common/fragments/date-picker.jsp">
- <jsp:param name="widget" value="date"/>
+ <jsp:param name="widget" value="date" />
</jsp:include>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-3 col-md-6">
<html:submit property="dispatch">
- <bean:message key="confirm.jsp.confirm"/>
+ <bean:message key="confirm.jsp.confirm" />
</html:submit>
</div>
</div>
- <html:hidden property="eid" value="${param.eid}"/>
+ <html:hidden property="eid" value="${param.eid}" />
<input type="hidden" name="use_date" value="true" />
</rhn:list>
</html:form>
diff --git a/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp b/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp
index 432ae2a..821302e 100644
--- a/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp
@@ -11,15 +11,15 @@
<body>
<%@ include file="/WEB-INF/pages/common/fragments/systems/system-header.jspf" %>
<h2>
- <rhn:icon type="header-errata" /><bean:message key="errataconfirm.jsp.header"/>
+ <rhn:icon type="header-errata" /><bean:message key="errataconfirm.jsp.header" />
</h2>
<rhn:systemtimemessage server="${system}" />
<rl:listset name="erratConfirmListSet">
<rhn:csrf />
<rhn:submitted />
<rl:list width="100%" styleclass="list" emptykey="erratalist.jsp.noerrata">
- <rl:decorator name="PageSizeDecorator"/>
- <rl:decorator name="ElaborationDecorator"/>
+ <rl:decorator name="PageSizeDecorator" />
+ <rl:decorator name="ElaborationDecorator" />
<rl:column headerkey="erratalist.jsp.type" styleclass="text-align: center;">
<c:if test="${current.securityAdvisory}">
<rhn:icon type="errata-security" />
@@ -42,23 +42,23 @@
<div class="form-horizontal">
<div class="form-group">
<label class="col-md-3 control-label">
- <bean:message key="schedule.jsp.at"/>:
+ <bean:message key="schedule.jsp.at" />:
</label>
<div class="col-md-6">
<jsp:include page="/WEB-INF/pages/common/fragments/date-picker.jsp">
- <jsp:param name="widget" value="date"/>
+ <jsp:param name="widget" value="date" />
</jsp:include>
</div>
</div>
<div class="form-group">
<div class="col-md-offset-3 col-md-6">
<html:submit property="dispatch">
- <bean:message key="errataconfirm.jsp.confirm"/>
+ <bean:message key="errataconfirm.jsp.confirm" />
</html:submit>
</div>
</div>
</div>
- <html:hidden property="sid" value="${param.sid}"/>
+ <html:hidden property="sid" value="${param.sid}" />
<input type="hidden" name="use_date" value="true">
</rl:listset>
</body>
commit 1ae33e052ef7b449ed34b8bea9411bc45631c0e6
Author: Bo Maryniuk <bo(a)suse.de>
Date: Thu Feb 6 18:37:55 2014 +0100
Datepicker UI unification: Errata pages
Formatting fixes (empty spaces, idents)
diff --git a/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp b/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp
index 9d6c0ca..0b3c796 100644
--- a/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/errata/confirm.jsp
@@ -2,71 +2,59 @@
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
-
-
<html>
-<head>
- <meta name="name" value="Systems Affected" />
-</head>
-<body>
-
-<%@ include file="/WEB-INF/pages/common/fragments/errata/errata-header.jspf" %>
-<h2><bean:message key="confirm.jsp.header"/> ${errata.advisoryName}</h2>
-
- <div class="page-summary">
- <p>
- <bean:message key="confirm.jsp.summary" arg0="${errata.advisoryName}" />
- </p>
- </div>
-
-<c:set var="pageList" value="${requestScope.pageList}" />
-<html:form method="POST" action="errata/details/ErrataConfirmSubmit.do">
-<rhn:csrf />
-<rhn:list pageList="${requestScope.pageList}" noDataText="nosystems.message">
- <rhn:listdisplay>
- <rhn:column header="actions.jsp.system">
- ${current.name}
- </rhn:column>
- <rhn:column header="actions.jsp.basechannel">
- ${current.channelLabels}
- </rhn:column>
- </rhn:listdisplay>
-
-
-
-<p><bean:message key="applyerrata.disclaimer" /></p>
-
-<table class="schedule-action-interface" align="center">
- <tr>
- <td><html:radio property="use_date" value="false" /></td>
- <th><bean:message key="syncprofile.jsp.now"/></th>
- </tr>
- <tr>
- <td><html:radio property="use_date" value="true" /></td>
- <th><bean:message key="syncprofile.jsp.than"/></th>
- </tr>
- <tr>
- <th><rhn:icon type="header-schedule" title="syncprofile.jsp.selection" />
- </th>
- <td>
- <jsp:include page="/WEB-INF/pages/common/fragments/date-picker.jsp">
- <jsp:param name="widget" value="date"/>
- </jsp:include>
- </td>
- </tr>
-</table>
-
-<div class="text-right">
- <hr />
- <html:submit property="dispatch">
- <bean:message key="confirm.jsp.confirm"/>
- </html:submit>
-</div>
-
-<html:hidden property="eid" value="${param.eid}"/>
-
-</rhn:list>
-</html:form>
-
-</body>
+ <head>
+ <meta name="name" value="Systems Affected" />
+ </head>
+ <body>
+ <%@ include file="/WEB-INF/pages/common/fragments/errata/errata-header.jspf" %>
+ <h2>
+ <bean:message key="confirm.jsp.header"/> ${errata.advisoryName}
+ </h2>
+ <p>
+ <bean:message key="confirm.jsp.summary" arg0="${errata.advisoryName}" />
+ </p>
+ <c:set var="pageList" value="${requestScope.pageList}" />
+ <html:form method="POST"
+ styleClass="form-horizontal"
+ action="errata/details/ErrataConfirmSubmit.do">
+ <rhn:csrf />
+ <rhn:list pageList="${requestScope.pageList}" noDataText="nosystems.message">
+ <rhn:listdisplay>
+ <rhn:column header="actions.jsp.system">
+ ${current.name}
+ </rhn:column>
+ <rhn:column header="actions.jsp.basechannel">
+ ${current.channelLabels}
+ </rhn:column>
+ </rhn:listdisplay>
+ <div class="form-group">
+ <div class="col-md-offset-3 col-md-6">
+ <span class="help-block">
+ <bean:message key="applyerrata.disclaimer" />
+ </span>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-md-3 control-label">
+ <bean:message key="schedule.jsp.at"/>:
+ </label>
+ <div class="col-md-6">
+ <jsp:include page="/WEB-INF/pages/common/fragments/date-picker.jsp">
+ <jsp:param name="widget" value="date"/>
+ </jsp:include>
+ </div>
+ </div>
+ <div class="form-group">
+ <div class="col-md-offset-3 col-md-6">
+ <html:submit property="dispatch">
+ <bean:message key="confirm.jsp.confirm"/>
+ </html:submit>
+ </div>
+ </div>
+ <html:hidden property="eid" value="${param.eid}"/>
+ <input type="hidden" name="use_date" value="true" />
+ </rhn:list>
+ </html:form>
+ </body>
</html>
diff --git a/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp b/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp
index 2ccbdb6..432ae2a 100644
--- a/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/errataconfirm.jsp
@@ -4,85 +4,62 @@
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://rhn.redhat.com/tags/list" prefix="rl" %>
-
<html>
-<head>
- <meta name="name" value="System Details" />
-</head>
-<body>
-
-<%@ include file="/WEB-INF/pages/common/fragments/systems/system-header.jspf" %>
-
-<h2><rhn:icon type="header-errata" /><bean:message key="errataconfirm.jsp.header"/></h2>
-
-<rhn:systemtimemessage server="${system}" />
-
-
-<rl:listset name="erratConfirmListSet">
- <rhn:csrf />
- <rhn:submitted />
- <rl:list
- width="100%"
- styleclass="list"
- emptykey="erratalist.jsp.noerrata">
-
- <rl:decorator name="PageSizeDecorator"/>
- <rl:decorator name="ElaborationDecorator"/>
-
- <rl:column headerkey="erratalist.jsp.type" styleclass="text-align: center;">
- <c:if test="${current.securityAdvisory}">
- <rhn:icon type="errata-security" />
- </c:if>
- <c:if test="${current.bugFix}">
- <rhn:icon type="errata-bugfix" />
- </c:if>
- <c:if test="${current.productEnhancement}">
- <rhn:icon type="errata-enhance" />
- </c:if>
- </rl:column>
-
- <rl:column headerkey="erratalist.jsp.advisory">
- <a href="/rhn/errata/details/Details.do?eid=${current.id}">
- ${current.advisoryName}</a>
- </rl:column>
-
- <rl:column headerkey="erratalist.jsp.synopsis">
- ${current.advisorySynopsis}
- </rl:column>
-
- <rl:column headerkey="erratalist.jsp.updated">
- ${current.updateDate}
- </rl:column>
- </rl:list>
-
- <table class="schedule-action-interface" align="center">
- <tr>
- <td><input type="radio" name="use_date" value="false" checked="checked"/></td>
- <th><bean:message key="syncprofile.jsp.now"/></th>
- </tr>
- <tr>
- <td><input type="radio" name="use_date" value="true" /></td>
- <th><bean:message key="syncprofile.jsp.than"/></th>
- </tr>
- <tr>
- <th><rhn:icon type="header-schedule" title="syncprofile.jsp.selection" />
- </th>
- <td>
- <jsp:include page="/WEB-INF/pages/common/fragments/date-picker.jsp">
- <jsp:param name="widget" value="date"/>
- </jsp:include>
- </td>
- </tr>
- </table>
-
- <div class="text-right">
- <hr />
- <html:submit property="dispatch">
- <bean:message key="errataconfirm.jsp.confirm"/>
- </html:submit>
- </div>
- <html:hidden property="sid" value="${param.sid}"/>
-
-</rl:listset>
-</body>
+ <head>
+ <meta name="name" value="System Details" />
+ </head>
+ <body>
+ <%@ include file="/WEB-INF/pages/common/fragments/systems/system-header.jspf" %>
+ <h2>
+ <rhn:icon type="header-errata" /><bean:message key="errataconfirm.jsp.header"/>
+ </h2>
+ <rhn:systemtimemessage server="${system}" />
+ <rl:listset name="erratConfirmListSet">
+ <rhn:csrf />
+ <rhn:submitted />
+ <rl:list width="100%" styleclass="list" emptykey="erratalist.jsp.noerrata">
+ <rl:decorator name="PageSizeDecorator"/>
+ <rl:decorator name="ElaborationDecorator"/>
+ <rl:column headerkey="erratalist.jsp.type" styleclass="text-align: center;">
+ <c:if test="${current.securityAdvisory}">
+ <rhn:icon type="errata-security" />
+ </c:if>
+ <c:if test="${current.bugFix}">
+ <rhn:icon type="errata-bugfix" />
+ </c:if>
+ <c:if test="${current.productEnhancement}">
+ <rhn:icon type="errata-enhance" />
+ </c:if>
+ </rl:column>
+ <rl:column headerkey="erratalist.jsp.advisory">
+ <a href="/rhn/errata/details/Details.do?eid=${current.id}">
+ ${current.advisoryName}
+ </a>
+ </rl:column>
+ <rl:column headerkey="erratalist.jsp.synopsis">${current.advisorySynopsis}</rl:column>
+ <rl:column headerkey="erratalist.jsp.updated">${current.updateDate}</rl:column>
+ </rl:list>
+ <div class="form-horizontal">
+ <div class="form-group">
+ <label class="col-md-3 control-label">
+ <bean:message key="schedule.jsp.at"/>:
+ </label>
+ <div class="col-md-6">
+ <jsp:include page="/WEB-INF/pages/common/fragments/date-picker.jsp">
+ <jsp:param name="widget" value="date"/>
+ </jsp:include>
+ </div>
+ </div>
+ <div class="form-group">
+ <div class="col-md-offset-3 col-md-6">
+ <html:submit property="dispatch">
+ <bean:message key="errataconfirm.jsp.confirm"/>
+ </html:submit>
+ </div>
+ </div>
+ </div>
+ <html:hidden property="sid" value="${param.sid}"/>
+ <input type="hidden" name="use_date" value="true">
+ </rl:listset>
+ </body>
</html>
10 years, 3 months
Branch 'master-bootstrap-css-fixes' - 5 commits - java/code java/spacewalk-java.spec rel-eng/packages
by Silvio Moioli
java/code/webapp/WEB-INF/pages/common/fragments/configuration/channel/create.jspf | 8
java/code/webapp/WEB-INF/pages/systems/probes/details.jsp | 2
java/code/webapp/WEB-INF/pages/systems/probes/edit.jsp | 155 +++++-----
java/spacewalk-java.spec | 10
rel-eng/packages/spacewalk-java | 2
5 files changed, 103 insertions(+), 74 deletions(-)
New commits:
commit d95d0ad2c58790750a6b7c563187a18ae09111a6
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Mon Feb 10 14:26:07 2014 +0100
/rhn/systems/details/configuration/addfiles/CreateFile.do?sid=...
too much space between radios due to wrong usage of form-group.
diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/configuration/channel/create.jspf b/java/code/webapp/WEB-INF/pages/common/fragments/configuration/channel/create.jspf
index b48e677..2e8721c 100644
--- a/java/code/webapp/WEB-INF/pages/common/fragments/configuration/channel/create.jspf
+++ b/java/code/webapp/WEB-INF/pages/common/fragments/configuration/channel/create.jspf
@@ -32,20 +32,12 @@
<bean:message key="addfiles.jsp.type.text" />
</label>
</div>
- </div>
- </div>
- <div class="form-group">
- <div class="col-lg-offset-3 col-lg-6">
<div class="checkbox">
<label>
<html:radio property="filetype" value="directory" styleId="dir_radio" />
<bean:message key="addfiles.jsp.type.directory" />
</label>
</div>
- </div>
- </div>
- <div class="form-group">
- <div class="col-lg-offset-3 col-lg-6">
<div class="checkbox">
<label>
<html:radio property="filetype" value="symlink" styleId="symlink_radio" />
commit b5f9c4731c15bb3b1fbc44c9124e71f747b7561c
Merge: ff8bb05 a524509
Author: Silvio Moioli <smoioli(a)suse.de>
Date: Mon Feb 10 16:58:50 2014 +0100
Merge branch 'master' into master-bootstrap-css-fixes
commit a524509f7d9713f7d7be82c679636855aeafdd3b
Author: Tomas Kasparek <tkasparek(a)redhat.com>
Date: Mon Feb 10 15:29:21 2014 +0100
use normal checkbox
diff --git a/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp b/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp
index 6b20d60..6352437 100644
--- a/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp
@@ -122,7 +122,7 @@
<bean:message key="probedetails.jsp.show_event_log" />
</label>
<div class="col-lg-6">
- <span class="checkbox"><html:checkbox property="show_log" styleClass="checkbox" /></span>
+ <span class="checkbox"><html:checkbox property="show_log" /></span>
</div>
</div>
<div class="form-group">
commit da25d5e967cf3e651652bfb89d77e54cff08d518
Author: Tomas Kasparek <tkasparek(a)redhat.com>
Date: Mon Feb 10 15:13:21 2014 +0100
Automatic commit of package [spacewalk-java] release [2.1.147-1].
diff --git a/java/spacewalk-java.spec b/java/spacewalk-java.spec
index d6d0303..5f319fc 100644
--- a/java/spacewalk-java.spec
+++ b/java/spacewalk-java.spec
@@ -28,7 +28,7 @@ Name: spacewalk-java
Summary: Spacewalk Java site packages
Group: Applications/Internet
License: GPLv2
-Version: 2.1.146
+Version: 2.1.147
Release: 1%{?dist}
URL: https://fedorahosted.org/spacewalk
Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
@@ -801,6 +801,14 @@ fi
%{jardir}/postgresql-jdbc.jar
%changelog
+* Mon Feb 10 2014 Tomas Kasparek <tkasparek(a)redhat.com> 2.1.147-1
+- style ProbeEdit page
+- updating susestudio-java-client to 1.4
+- remove <meta name="page-decorator" content="none" />
+- remove html formatting in other languages
+- remove html formatting from StringResources
+- fix checkstyle
+
* Thu Feb 06 2014 Michael Mraka <michael.mraka(a)redhat.com> 2.1.146-1
- patch to handle systems registered with the --nohardware flag
- Patch code to build against susestudio-java-client version 0.1.4
diff --git a/rel-eng/packages/spacewalk-java b/rel-eng/packages/spacewalk-java
index 3ce8d7a..d0207e4 100644
--- a/rel-eng/packages/spacewalk-java
+++ b/rel-eng/packages/spacewalk-java
@@ -1 +1 @@
-2.1.146-1 java/
+2.1.147-1 java/
commit e75634f296d321fe0c9ce1914b491f9124aa64c1
Author: Tomas Kasparek <tkasparek(a)redhat.com>
Date: Mon Feb 10 13:16:28 2014 +0100
style ProbeEdit page
fix HTML so it uses new styling items
diff --git a/java/code/webapp/WEB-INF/pages/systems/probes/edit.jsp b/java/code/webapp/WEB-INF/pages/systems/probes/edit.jsp
index e275bd4..32cbc82 100644
--- a/java/code/webapp/WEB-INF/pages/systems/probes/edit.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/probes/edit.jsp
@@ -29,77 +29,106 @@ function refreshNotifFields() {
<bean:message key="probeedit.jsp.editprobe" />
</rhn:toolbar>
<html:form action="/systems/details/probes/ProbeEdit" method="POST">
- <rhn:csrf />
- <table class="details">
- <tr>
- <th><bean:message key="probeedit.jsp.probecommand" /></th>
- <td colspan="3">${probe.command.description}</td>
- </tr>
- <tr>
- <th><bean:message key="probeedit.jsp.satclusterdesc" /></th>
- <td colspan="3">${probe.satCluster.description}</td>
- </tr>
+ <div class="form-horizontal">
+ <rhn:csrf />
+ <div class="form-group">
+ <label class="col-lg-3 control-label">
+ <bean:message key="probeedit.jsp.probecommand" />
+ </label>
+ <div class="col-lg-2 text">
+ ${probe.command.description}
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-lg-3 control-label">
+ <bean:message key="probeedit.jsp.satclusterdesc" />
+ </label>
+ <div class="col-lg-2 text">
+ ${probe.satCluster.description}
+ </div>
+ </div>
<c:if test='${not empty probe.command.systemRequirements}'>
- <tr>
- <th><bean:message key="probeedit.jsp.commandrequirements" /></th>
- <td colspan="3"><bean:message key="${probe.command.systemRequirements}"/></td>
- </tr>
+ <div class="form-group">
+ <label class="col-lg-3 control-label">
+ <bean:message key="probeedit.jsp.commandrequirements" />
+ </label>
+ <div class="col-lg-2 text">
+ <bean:message key="${probe.command.systemRequirements}"/>
+ </div>
+ </div>
</c:if>
<c:if test='${not empty probe.command.versionSupport}'>
- <tr>
- <th><bean:message key="probeedit.jsp.versionsupport" /></th>
- <td colspan="3">${probe.command.versionSupport}</td>
- </tr>
+ <div class="form-group">
+ <label class="col-lg-3 control-label">
+ <bean:message key="probeedit.jsp.versionsupport" />
+ </label>
+ <div class="col-lg-2 text">
+ ${probe.command.versionSupport}
+ </div>
+ </div>
</c:if>
- <tr>
- <th><label for="description"><bean:message key="probeedit.jsp.description" /></label></th>
- <td colspan="3"><html:text property="description" maxlength="100" size="50" styleId="description"/></td>
- </tr>
- <tr>
- <th><label for="notification"><bean:message key="probeedit.jsp.notification" /></label></th>
- <td colspan="3"><html:checkbox onclick="refreshNotifFields()" property="notification" styleId="notification"/></td>
- </tr>
- <tr>
- <th><label for="notifmin"><bean:message key="probeedit.jsp.notifmin" /></label></th>
- <td colspan="3">
- <html:select property="notification_interval_min"
- disabled="${not probeEditForm.map.notification}" styleId="notifmin">
- <html:options collection="intervals"
- property="value"
- labelProperty="label" />
- </html:select>
- </td>
- </tr>
- <tr>
- <th><label for="notifmethod"><bean:message key="probeedit.jsp.notifmethod" /></label></th>
- <td colspan="3"><html:select property="contact_group_id"
- disabled="${not probeEditForm.map.notification}" styleId="notifmethod">
- <html:options collection="contactGroups"
- property="value"
- labelProperty="label" />
- </html:select>
- </td>
- </tr>
- <tr>
- <th><label for="checkinterval"><bean:message key="probeedit.jsp.checkinterval" /></label></th>
- <td colspan="3">
+ <div class="form-group">
+ <label class="col-lg-3 control-label">
+ <bean:message key="probeedit.jsp.description" />
+ </label>
+ <div class="col-lg-2 text">
+ <html:text property="description" maxlength="100" size="50" styleId="description"/>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-lg-3 control-label">
+ <bean:message key="probeedit.jsp.notification" />
+ </label>
+ <div class="col-lg-2 text">
+ <html:checkbox onclick="refreshNotifFields()" property="notification" styleId="notification"/>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-lg-3 control-label">
+ <bean:message key="probeedit.jsp.notifmin" />
+ </label>
+ <div class="col-lg-2 text">
+ <html:select property="notification_interval_min"
+ disabled="${not probeEditForm.map.notification}" styleId="notifmin">
+ <html:options collection="intervals"
+ property="value"
+ labelProperty="label" />
+ </html:select>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-lg-3 control-label">
+ <bean:message key="probeedit.jsp.notifmethod" />
+ </label>
+ <div class="col-lg-2 text">
+ <html:select property="contact_group_id"
+ disabled="${not probeEditForm.map.notification}" styleId="notifmethod">
+ <html:options collection="contactGroups"
+ property="value"
+ labelProperty="label" />
+ </html:select>
+ </div>
+ </div>
+ <div class="form-group">
+ <label class="col-lg-3 control-label">
+ <bean:message key="probeedit.jsp.checkinterval" />
+ </label>
+ <div class="col-lg-2 text">
<html:select property="check_interval_min" styleId="checkinterval">
- <html:options collection="intervals"
- property="value"
- labelProperty="label" />
+ <html:options collection="intervals"
+ property="value"
+ labelProperty="label" />
</html:select>
- </td>
- </tr>
+ </div>
+ </div>
<%@ include file="/WEB-INF/pages/common/fragments/probes/render-param-value-list.jspf" %>
- <tr>
- <td></td>
- <td colspan="3" align="right"><html:submit><bean:message key="probedit.jsp.updateprobe"/></html:submit></td>
- </tr>
- </table>
- <html:hidden property="sid" value="${param.sid}"/>
- <html:hidden property="probe_id" value="${probe.id}"/>
- <html:hidden property="submitted" value="true"/>
+
+ <html:submit styleClass="btn btn-success pull-right"><bean:message key="probedit.jsp.updateprobe" /></html:submit>
+ <html:hidden property="sid" value="${param.sid}"/>
+ <html:hidden property="probe_id" value="${probe.id}"/>
+ <html:hidden property="submitted" value="true"/>
+ </div>
</html:form>
</body>
10 years, 3 months
Branch 'master-bootstrap-css-fixes' - 16 commits - backend/logrotate backend/spacewalk-backend.spec client/rhel client/tools java/buildconf java/code java/ivy.xml rel-eng/packages web/modules
by Silvio Moioli
backend/logrotate/spacewalk-backend-app | 1
backend/logrotate/spacewalk-backend-applet | 1
backend/logrotate/spacewalk-backend-config-files | 1
backend/logrotate/spacewalk-backend-config-files-tool | 1
backend/logrotate/spacewalk-backend-iss | 1
backend/logrotate/spacewalk-backend-iss-export | 1
backend/logrotate/spacewalk-backend-package-push-server | 1
backend/logrotate/spacewalk-backend-server | 1
backend/logrotate/spacewalk-backend-tools | 1
backend/logrotate/spacewalk-backend-xmlrpc | 1
backend/spacewalk-backend.spec | 10
client/rhel/rhn-client-tools/etc-conf/macros.up2date | 1
client/rhel/rhn-client-tools/rhn-client-tools.spec | 1
client/tools/osad/osad.spec | 7
java/buildconf/build-taskdefs.xml | 16 -
java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_es.xml | 2
java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java | 2
java/code/webapp/WEB-INF/pages/admin/addresses.jsp | 1
java/code/webapp/WEB-INF/pages/admin/config/monitoring.jsp | 22 ++
java/code/webapp/WEB-INF/pages/admin/errata/publisheddeleteconfirm.jsp | 1
java/code/webapp/WEB-INF/pages/admin/errata/unpublisheddeleteconfirm.jsp | 1
java/code/webapp/WEB-INF/pages/admin/monitoring/config/notification/filtercreate.jsp | 1
java/code/webapp/WEB-INF/pages/admin/monitoring/config/notification/filteredit.jsp | 1
java/code/webapp/WEB-INF/pages/admin/monitoring/config/probe-create.jsp | 1
java/code/webapp/WEB-INF/pages/admin/monitoring/config/probe-edit.jsp | 1
java/code/webapp/WEB-INF/pages/admin/monitoring/config/probesuitecreate.jsp | 1
java/code/webapp/WEB-INF/pages/admin/monitoring/config/probesuiteedit.jsp | 1
java/code/webapp/WEB-INF/pages/admin/multiorg/extauth.jsp | 1
java/code/webapp/WEB-INF/pages/admin/multiorg/extauthroles.jsp | 1
java/code/webapp/WEB-INF/pages/admin/users/activelist.jsp | 1
java/code/webapp/WEB-INF/pages/admin/users/disabledlist.jsp | 1
java/code/webapp/WEB-INF/pages/admin/users/userlist.jsp | 1
java/code/webapp/WEB-INF/pages/audit/auditsearch.jsp | 1
java/code/webapp/WEB-INF/pages/audit/auditview.jsp | 1
java/code/webapp/WEB-INF/pages/audit/listxccdf.jsp | 1
java/code/webapp/WEB-INF/pages/audit/machine.jsp | 1
java/code/webapp/WEB-INF/pages/audit/overview.jsp | 1
java/code/webapp/WEB-INF/pages/channel/confirmtargetsystems.jsp | 1
java/code/webapp/WEB-INF/pages/channel/entitlements.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/add.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/addcustomerrata.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/adderrataredhat.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/addpackages.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/channelrepos.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/confirmaddpackages.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/confirmerrata.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/confirmerrataremove.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/confirmprivate.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/confirmprotected.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/confirmremovepackages.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/distchannelmap.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/errata.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/erratapackagesync.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/errataremove.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/erratasync.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/listpatchset.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/listremovepackages.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/package/confirmdeletepackages.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/package/listremovecustompackages.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/packagemenu.jsp | 1
java/code/webapp/WEB-INF/pages/channel/manage/syncrepos.jsp | 1
java/code/webapp/WEB-INF/pages/channel/subscribedsystems.jsp | 1
java/code/webapp/WEB-INF/pages/channel/targetsystems.jsp | 1
java/code/webapp/WEB-INF/pages/common/fragments/configuration/channel/create.jspf | 4
java/code/webapp/WEB-INF/pages/common/fragments/groups/systems.jspf | 1
java/code/webapp/WEB-INF/pages/common/loading/loading.jsp | 1
java/code/webapp/WEB-INF/pages/configuration/channel/deployconfirm.jsp | 1
java/code/webapp/WEB-INF/pages/configuration/overview/globalconfiglist.jsp | 1
java/code/webapp/WEB-INF/pages/configuration/overview/managedsystems.jsp | 1
java/code/webapp/WEB-INF/pages/configuration/overview/overview.jsp | 101 ++++------
java/code/webapp/WEB-INF/pages/errata/addchannelpackagepush.jsp | 1
java/code/webapp/WEB-INF/pages/errata/addchannels.jsp | 1
java/code/webapp/WEB-INF/pages/errata/addpackagepackagepush.jsp | 1
java/code/webapp/WEB-INF/pages/errata/all.jsp | 1
java/code/webapp/WEB-INF/pages/errata/create.jsp | 1
java/code/webapp/WEB-INF/pages/errata/delete.jsp | 1
java/code/webapp/WEB-INF/pages/errata/details.jsp | 1
java/code/webapp/WEB-INF/pages/errata/edit.jsp | 1
java/code/webapp/WEB-INF/pages/errata/editchannels.jsp | 1
java/code/webapp/WEB-INF/pages/errata/erratapackages.jsp | 1
java/code/webapp/WEB-INF/pages/errata/notify.jsp | 1
java/code/webapp/WEB-INF/pages/errata/packagepush.jsp | 1
java/code/webapp/WEB-INF/pages/errata/packages/add.jsp | 51 ++---
java/code/webapp/WEB-INF/pages/errata/packages/confirm.jsp | 1
java/code/webapp/WEB-INF/pages/errata/packages/list.jsp | 1
java/code/webapp/WEB-INF/pages/errata/packages/packages.jsp | 1
java/code/webapp/WEB-INF/pages/errata/packages/remove.jsp | 1
java/code/webapp/WEB-INF/pages/errata/published.jsp | 1
java/code/webapp/WEB-INF/pages/errata/relevant.jsp | 1
java/code/webapp/WEB-INF/pages/errata/unpublished.jsp | 1
java/code/webapp/WEB-INF/pages/groups/detail.jsp | 1
java/code/webapp/WEB-INF/pages/groups/erratalist.jsp | 1
java/code/webapp/WEB-INF/pages/groups/probes.jsp | 1
java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp | 1
java/code/webapp/WEB-INF/pages/ssm/systems/migrate.jsp | 40 +--
java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystems.jsp | 1
java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp | 1
java/code/webapp/WEB-INF/pages/systems/entitlements/entitlements.jsp | 1
java/code/webapp/WEB-INF/pages/systems/entitlements/flexguests.jsp | 1
java/code/webapp/WEB-INF/pages/systems/extra-packages-systems-list.jsp | 1
java/code/webapp/WEB-INF/pages/systems/grouplist.jsp | 1
java/code/webapp/WEB-INF/pages/systems/inactivelist.jsp | 1
java/code/webapp/WEB-INF/pages/systems/outofdatelist.jsp | 1
java/code/webapp/WEB-INF/pages/systems/overview.jsp | 1
java/code/webapp/WEB-INF/pages/systems/physicallist.jsp | 1
java/code/webapp/WEB-INF/pages/systems/probes/create.jsp | 1
java/code/webapp/WEB-INF/pages/systems/probes/delete.jsp | 1
java/code/webapp/WEB-INF/pages/systems/probes/details.jsp | 1
java/code/webapp/WEB-INF/pages/systems/probes/edit.jsp | 1
java/code/webapp/WEB-INF/pages/systems/probes/index.jsp | 1
java/code/webapp/WEB-INF/pages/systems/probes/probedelete.jsp | 1
java/code/webapp/WEB-INF/pages/systems/proxylist.jsp | 1
java/code/webapp/WEB-INF/pages/systems/registeredlist.jsp | 1
java/code/webapp/WEB-INF/pages/systems/requiringrebootlist.jsp | 1
java/code/webapp/WEB-INF/pages/systems/softwarecrashesoverview.jsp | 1
java/code/webapp/WEB-INF/pages/systems/softwarecrashuuiddetails.jsp | 1
java/code/webapp/WEB-INF/pages/systems/system-remote-command.jsp | 1
java/code/webapp/WEB-INF/pages/systems/systemcurrency.jsp | 1
java/code/webapp/WEB-INF/pages/systems/systemlist.jsp | 1
java/code/webapp/WEB-INF/pages/systems/unentitledlist.jsp | 1
java/code/webapp/WEB-INF/pages/systems/ungroupedlist.jsp | 1
java/code/webapp/WEB-INF/pages/systems/virtuallist.jsp | 1
java/code/webapp/WEB-INF/pages/user/edit/your_edit_address.jsp | 1
java/code/webapp/WEB-INF/pages/user/edit/yourdetails.jsp | 1
java/code/webapp/WEB-INF/pages/user/edit/yourpreferences.jsp | 1
java/ivy.xml | 2
rel-eng/packages/osad | 2
rel-eng/packages/spacewalk-backend | 2
web/modules/sniglets/Sniglets/ListView/List.pm | 10
129 files changed, 158 insertions(+), 228 deletions(-)
New commits:
commit ff8bb05e0c32bce08ca45204a1b65cf39bcbcb45
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Mon Feb 10 12:20:55 2014 +0100
use help-block for help text in form
diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/configuration/channel/create.jspf b/java/code/webapp/WEB-INF/pages/common/fragments/configuration/channel/create.jspf
index 335d48f..b48e677 100644
--- a/java/code/webapp/WEB-INF/pages/common/fragments/configuration/channel/create.jspf
+++ b/java/code/webapp/WEB-INF/pages/common/fragments/configuration/channel/create.jspf
@@ -134,7 +134,9 @@
</div>
<div class="form-group">
<div class="col-lg-offset-3 col-lg-6">
- <strong><bean:message key="filedetails.jsp.tip.ownership" /></strong>
+ <span class="help-block">
+ <bean:message key="filedetails.jsp.tip.ownership" />
+ </span>
</div>
</div>
<div class="form-group">
commit 97cc7c7f5f562d496c6d1a8c4febc1aa9d63db12
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Sun Feb 9 19:49:16 2014 +0100
/rhn/systems/ssm/MigrateSystems.do popup menu (aka select) after 'Target Orgenization' is not styled
diff --git a/java/code/webapp/WEB-INF/pages/ssm/systems/migrate.jsp b/java/code/webapp/WEB-INF/pages/ssm/systems/migrate.jsp
index 325bab2..b694fb8 100644
--- a/java/code/webapp/WEB-INF/pages/ssm/systems/migrate.jsp
+++ b/java/code/webapp/WEB-INF/pages/ssm/systems/migrate.jsp
@@ -19,30 +19,30 @@
<c:choose>
<c:when test="${trustedOrgs == 0}">
- <strong><bean:message key="ssm.migrate.systems.notrust"/></strong>
+ <p class="bg-warning"><bean:message key="ssm.migrate.systems.notrust"/></p>
</c:when>
<c:otherwise>
- <html:form method="post" action="/systems/ssm/MigrateSystems.do">
+ <html:form styleClass="form-inline" method="post" action="/systems/ssm/MigrateSystems.do">
<rhn:csrf />
<rhn:submitted />
- <table class="details">
- <tr>
- <th>
- <bean:message key="ssm.migrate.systems.org"/>
- </th>
- <td>
- <html:select property="org">
- <html:option value="">-- None --</html:option>
- <c:forEach var="o" items="${orgs}">
- <html:option value="${o.name}">${o.name}</html:option>
- </c:forEach>
- </html:select>
- </td>
- <td class="text-right">
- <input type ="submit" name="dispatch" value="${rhn:localize('ssm.migrate.systems.confirmbutton')}"/>
- </td>
- </tr>
- </table>
+ <div class="form-group">
+ <label>
+ <bean:message key="ssm.migrate.systems.org"/>
+ </label>
+ </div>
+ <div class="form-group">
+ <html:select styleClass="form-control" property="org">
+ <html:option value="">-- None --</html:option>
+ <c:forEach var="o" items="${orgs}">
+ <html:option value="${o.name}">${o.name}</html:option>
+ </c:forEach>
+ </html:select>
+ </div>
+ <div class="form-group">
+ <button class="btn btn-success" type ="submit" name="dispatch" value="${rhn:localize('ssm.migrate.systems.confirmbutton')}">
+ ${rhn:localize('ssm.migrate.systems.confirmbutton')}
+ </button>
+ </div>
</html:form>
</c:otherwise>
</c:choose>
commit 60a749eb5d63e75641c27b553b5c479038b6c90b
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Sat Feb 8 18:14:11 2014 +0100
Unstyled elements in /rhn/errata/manage/AddPackages.do?eid=...
diff --git a/java/code/webapp/WEB-INF/pages/errata/packages/add.jsp b/java/code/webapp/WEB-INF/pages/errata/packages/add.jsp
index 20a5053..7309040 100644
--- a/java/code/webapp/WEB-INF/pages/errata/packages/add.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/packages/add.jsp
@@ -35,27 +35,28 @@
<rl:listset name="groupSet">
- <rhn:csrf />
-
-
-
-
- <p>
- <bean:message key="errata.edit.packages.add.viewlabel"/>
- <select name="view_channel">
- <c:forEach items="${viewoptions}" var="option">
- <option value="<c:out value="${option.value}"/>"
- <c:if test="${option.value == param.view_channel}">selected="1"</c:if>>
- <c:out value="${option.label}"/>
- </option>
- </c:forEach>
- </select>
- <html:submit property="view_clicked">
- <bean:message key="errata.edit.packages.add.viewsubmit"/>
- </html:submit>
- </p>
-
-
+ <rhn:csrf />
+ <p>
+ <div class="row-0">
+ <div class="col-xs-12 col-lg-6">
+ <div class="input-group">
+ <select class="form-control" name="view_channel">
+ <c:forEach items="${viewoptions}" var="option">
+ <option value="<c:out value="${option.value}"/>"
+ <c:if test="${option.value == param.view_channel}">selected="1"</c:if>>
+ <c:out value="${option.label}"/>
+ </option>
+ </c:forEach>
+ </select>
+ <span class="input-group-btn">
+ <button class="btn btn-default" type="submit" name="view_clicked">
+ <i class="fa fa-filter"></i>
+ </button>
+ </span>
+ </div>
+ </div>
+ </div>
+ </p>
<input type="hidden" name="eid" value="<c:out value="${param.eid}"/>" />
@@ -95,10 +96,9 @@
<div class="text-right">
<rhn:submitted/>
- <hr/>
- <input type="submit"
- name="dispatch"
- value='<bean:message key="errata.edit.packages.add.addpackages"/>'/>
+ <button type="submit" name="dispatch" class="btn btn-primary" value="<bean:message key='errata.edit.packages.add.addpackages'/>">
+ <bean:message key="errata.edit.packages.add.addpackages"/>
+ </button>
</div>
</rl:listset>
commit fcaa4a1e8ce5b3d98d23f6b3b619f11eec82f389
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Sat Feb 8 15:48:15 2014 +0100
Fixes bar going from 0..9 A..Z on /rhn/systems/details/packages/PackageList.do but A..Z 0..9 on /rhn/systems/SystemEntitlements.do and /network/systems/system_list/regular_in_channel_family.pxt
(Note, this is bug has been always been there and is not related to the user interface changes)
diff --git a/web/modules/sniglets/Sniglets/ListView/List.pm b/web/modules/sniglets/Sniglets/ListView/List.pm
index 3a69b9b..2b0beb1 100644
--- a/web/modules/sniglets/Sniglets/ListView/List.pm
+++ b/web/modules/sniglets/Sniglets/ListView/List.pm
@@ -511,7 +511,7 @@ sub render_alphabar_content {
my @ret;
my @attr;
- foreach my $alpha ('A' .. 'Z', '0' .. '9') {
+ foreach my $alpha ('0' .. '9', 'A' .. 'Z') {
if (exists $alphabar->{$alpha}) {
my $base = $alphabar->{$alpha};
commit 2aca14e864725a01c95bd8f86eff70919a455b9b
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Sat Feb 8 15:16:06 2014 +0100
different set of pagination arrows on /network/systems/system_list/regular_in_channel_family.pxt
diff --git a/web/modules/sniglets/Sniglets/ListView/List.pm b/web/modules/sniglets/Sniglets/ListView/List.pm
index 1e62114..3a69b9b 100644
--- a/web/modules/sniglets/Sniglets/ListView/List.pm
+++ b/web/modules/sniglets/Sniglets/ListView/List.pm
@@ -667,10 +667,10 @@ sub render_pagination_buttons {
# show buttons
if ($lower != '1' || ($upper != $total)) {
- $back_buttons_str = $self->render_pagination_button("First", "fa fa-fast-backward", " |< ", $back_status);
- $back_buttons_str .= $self->render_pagination_button("Prev", "fa fa-backward", " < ", $back_status);
- $forward_buttons_str = $self->render_pagination_button("Next", "fa fa-forward", " > ", $forward_status);
- $forward_buttons_str .= $self->render_pagination_button("Last", "fa fa-fast-forward", " >| ", $forward_status);
+ $back_buttons_str = $self->render_pagination_button("First", "fa fa-angle-double-left", " |< ", $back_status);
+ $back_buttons_str .= $self->render_pagination_button("Prev", "fa fa-angle-left", " < ", $back_status);
+ $forward_buttons_str = $self->render_pagination_button("Next", "fa fa-angle-right", " > ", $forward_status);
+ $forward_buttons_str .= $self->render_pagination_button("Last", "fa fa-angle-double-right", " >| ", $forward_status);
}
my %subst;
commit 5284f38b0cfe4ef81cc053d253ce0f5594f1c415
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Sat Feb 8 14:41:19 2014 +0100
panel inside a panel in rhn/configuration/Overview.do, just
give a title to the list, which is already a panel.
diff --git a/java/code/webapp/WEB-INF/pages/configuration/overview/overview.jsp b/java/code/webapp/WEB-INF/pages/configuration/overview/overview.jsp
index 0f85f0d..3fd1233 100644
--- a/java/code/webapp/WEB-INF/pages/configuration/overview/overview.jsp
+++ b/java/code/webapp/WEB-INF/pages/configuration/overview/overview.jsp
@@ -37,60 +37,52 @@
</div>
</div>
- <div class="panel panel-default">
- <div class="panel-heading">
- <h4><bean:message key="configoverview.jsp.modconfig"/></h4>
- </div>
- <div class="panel-body">
-
- <rhn:list pageList="${requestScope.recentFiles}" noDataText="configoverview.jsp.noFiles">
- <rhn:listdisplay>
- <rhn:column header="configoverview.jsp.filename"
- url="/rhn/configuration/file/FileDetails.do?cfid=${current.id}">
- <c:choose>
- <c:when test="${current.type == 'file'}">
- <rhn:icon type="header-file" />
- ${fn:escapeXml(current.path)}
- </c:when>
- <c:when test="${current.type == 'directory'}">
- <rhn:icon type="header-folder" />
- ${fn:escapeXml(current.path)}
- </c:when>
- <c:otherwise>
- <rhn:icon type="header-symlink" />
- ${fn:escapeXml(current.path)}
- </c:otherwise>
- </c:choose>
- </rhn:column>
-
- <rhn:column header="config.common.configChannel"
- url="/rhn/configuration/ChannelOverview.do?ccid=${current.configChannelId}">
-
- <c:if test="${current.configChannelType == 'normal'}">
- <rhn:icon type="header-channel" />
- ${current.channelNameDisplay}
- </c:if>
-
- <c:if test="${current.configChannelType == 'local_override'}">
- <rhn:icon type="header-system" />
- ${current.channelNameDisplay}
- </c:if>
-
- <c:if test="${current.configChannelType == 'server_import'}">
- <rhn:icon type="header-sandbox" />
- ${current.channelNameDisplay}
- </c:if>
-
- </rhn:column>
-
- <rhn:column header="configoverview.jsp.modified">
- ${current.modifiedDisplay}
- </rhn:column>
-
- </rhn:listdisplay>
- </rhn:list>
- </div>
- </div>
+ <rhn:list pageList="${requestScope.recentFiles}" noDataText="configoverview.jsp.noFiles">
+ <rhn:listdisplay title="configoverview.jsp.modconfig">
+ <rhn:column header="configoverview.jsp.filename"
+ url="/rhn/configuration/file/FileDetails.do?cfid=${current.id}">
+ <c:choose>
+ <c:when test="${current.type == 'file'}">
+ <rhn:icon type="header-file" />
+ ${fn:escapeXml(current.path)}
+ </c:when>
+ <c:when test="${current.type == 'directory'}">
+ <rhn:icon type="header-folder" />
+ ${fn:escapeXml(current.path)}
+ </c:when>
+ <c:otherwise>
+ <rhn:icon type="header-symlink" />
+ ${fn:escapeXml(current.path)}
+ </c:otherwise>
+ </c:choose>
+ </rhn:column>
+
+ <rhn:column header="config.common.configChannel"
+ url="/rhn/configuration/ChannelOverview.do?ccid=${current.configChannelId}">
+
+ <c:if test="${current.configChannelType == 'normal'}">
+ <rhn:icon type="header-channel" />
+ ${current.channelNameDisplay}
+ </c:if>
+
+ <c:if test="${current.configChannelType == 'local_override'}">
+ <rhn:icon type="header-system" />
+ ${current.channelNameDisplay}
+ </c:if>
+
+ <c:if test="${current.configChannelType == 'server_import'}">
+ <rhn:icon type="header-sandbox" />
+ ${current.channelNameDisplay}
+ </c:if>
+
+ </rhn:column>
+
+ <rhn:column header="configoverview.jsp.modified">
+ ${current.modifiedDisplay}
+ </rhn:column>
+
+ </rhn:listdisplay>
+ </rhn:list>
<div class="panel panel-default">
<div class="panel-heading">
commit 4c76b5af59cd8e370d17031de24e43498f5c93f9
Merge: 12b3302 34289de
Author: Silvio Moioli <smoioli(a)suse.de>
Date: Sat Feb 8 12:20:44 2014 +0100
Merge branch 'master' into master-bootstrap-css-fixes
commit 12b33028b0fb4ee0662b45dd6decadefa73959a8
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Sat Feb 8 12:07:24 2014 +0100
/rhn/admin/config/MonitoringConfig.do
help texts ((e.g. 'redhat.com' for myemail@…)) should be bellow input bars (see /rhn/activationkeys/Edit.do?tid=1 how it should look like)
This form is generated from the backend by iterating a config description and a config
value map. The description is already concatenated with the help.
(This was already like that in Spacewalk 2.0 so this issue is not Bootstrap-port
specific)
We use a bit of page-specific Javascript to detect text of the type
"This is something (with some help)" to move the help and apply
the right style to it.
If the backend can provide the text separated then we should
try that instead.
diff --git a/java/code/webapp/WEB-INF/pages/admin/config/monitoring.jsp b/java/code/webapp/WEB-INF/pages/admin/config/monitoring.jsp
index a6663ca..cc475c8 100644
--- a/java/code/webapp/WEB-INF/pages/admin/config/monitoring.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/config/monitoring.jsp
@@ -4,6 +4,28 @@
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<html>
+ <head>
+ <script type="text/javascript">
+ /*
+ * Config option value and help are already
+ * concatenated. Split them to display the help
+ * in the form correctly.
+ */
+ $(function() {
+ var textMixedWithHelp = /^(.+)\((.+)\)\s*$/;
+ $('label').each(function(idx, lbl) {
+ var match = textMixedWithHelp.exec($(lbl).html());
+ var input = $(lbl).attr('for');
+ if (match != null && input != undefined) {
+ $("[name='" + input + "']").after(
+ '<span class="help-block">' + match[2] + '</span>'
+ );
+ $(lbl).html(match[1]);
+ }
+ });
+ });
+ </script>
+ </head>
<body>
<rhn:toolbar base="h1" icon="header-info"
helpUrl="">
commit 34289de1b3f13466e4f1fc67cac91bd55cd17d16
Author: Stephen Herr <sherr(a)redhat.com>
Date: Fri Feb 7 14:08:01 2014 -0500
updating susestudio-java-client to 1.4
diff --git a/java/ivy.xml b/java/ivy.xml
index eb0f698..322bf69 100644
--- a/java/ivy.xml
+++ b/java/ivy.xml
@@ -65,7 +65,7 @@
<dependency org="redhat" name="stringtree-json" rev="2.0.9" />
<dependency org="redhat" name="struts" rev="1.2.9" />
<dependency org="redhat" name="strutstest" rev="2.1.3" />
- <dependency org="redhat" name="susestudio-java-client" rev="0.1.2" />
+ <dependency org="redhat" name="susestudio-java-client" rev="0.1.4" />
<dependency org="redhat" name="taglibs-core" rev="1.1.0" />
<dependency org="redhat" name="taglibs-standard" rev="1.1.0" />
<dependency org="redhat" name="tanukiwrapper" rev="3.1.2" />
commit 8839652c56473be64c9d9017d8e4ef5daac66fa8
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Fri Feb 7 16:29:00 2014 +0100
fix unclosed that broke the top pagination selected count
for example /rhn/systems/DuplicateIPList.do
diff --git a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java
index b032e50..7eee746 100644
--- a/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java
+++ b/java/code/src/com/redhat/rhn/frontend/taglibs/list/ListTagUtil.java
@@ -703,7 +703,7 @@ public class ListTagUtil {
public static void renderFilterSubmit(PageContext pageContext,
String uniqueName) throws JspException {
String filterName = makeFilterNameByLabel(uniqueName);
- String result = (String.format("<input type=\"hidden\" name=\"%s\" ", filterName));
+ String result = (String.format("<input type=\"hidden\" name=\"%s\">", filterName));
ListTagUtil.write(pageContext, result);
}
commit 70d810ceccb28d0a48bf0c113bfbc5fb4fd8597a
Author: Duncan Mac-Vicar P <dmacvicar(a)suse.de>
Date: Fri Feb 7 16:00:54 2014 +0100
fix spanish translation for selected systems (string does not take a parameter anymore)
diff --git a/java/buildconf/build-taskdefs.xml b/java/buildconf/build-taskdefs.xml
index 121905f..551bc59 100644
--- a/java/buildconf/build-taskdefs.xml
+++ b/java/buildconf/build-taskdefs.xml
@@ -1,17 +1,17 @@
<project name="build-taskdefs">
<target name="init-ivy" depends="boot-deps" unless="installbuild">
<taskdef name="ivy-retrieve"
- classname="fr.jayasoft.ivy.ant.IvyRetrieve"
- classpathref="bootjars"/>
+ classname="org.apache.ivy.ant.IvyRetrieve"
+ classpathref="bootjars" />
<taskdef name="ivy-configure"
- classname="fr.jayasoft.ivy.ant.IvyConfigure"
- classpathref="bootjars"/>
+ classname="org.apache.ivy.ant.IvyConfigure"
+ classpathref="bootjars" />
<taskdef name="ivy-resolve"
- classname="fr.jayasoft.ivy.ant.IvyResolve"
- classpathref="bootjars"/>
+ classname="org.apache.ivy.ant.IvyResolve"
+ classpathref="bootjars" />
<taskdef name="ivy-publish"
- classname="fr.jayasoft.ivy.ant.IvyPublish"
- classpathref="bootjars"/>
+ classname="org.apache.ivy.ant.IvyPublish"
+ classpathref="bootjars" />
</target>
<target name="init-taskdefs" depends="link-jars,compile-internal"
diff --git a/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_es.xml b/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_es.xml
index 9e31510..3156157 100644
--- a/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_es.xml
+++ b/java/code/src/com/redhat/rhn/frontend/strings/jsp/StringResource_es.xml
@@ -1350,7 +1350,7 @@
5 systems selected
</context>
</context-group>
- <target>{0} sistemas seleccionados</target>
+ <target>sistemas seleccionados</target>
</trans-unit>
<!-- footer.jsp -->
<trans-unit id="footer.jsp.copyright">
commit 9d95714d16fd9cc3c25926ebd53cc85ac8cc52a8
Author: Milan Zazrivec <mzazrivec(a)redhat.com>
Date: Fri Feb 7 15:21:43 2014 +0100
1061013 - remove unneeded rpm macros file
diff --git a/client/rhel/rhn-client-tools/etc-conf/macros.up2date b/client/rhel/rhn-client-tools/etc-conf/macros.up2date
deleted file mode 100644
index 4fb9014..0000000
--- a/client/rhel/rhn-client-tools/etc-conf/macros.up2date
+++ /dev/null
@@ -1 +0,0 @@
-#%_repackage_all_erasures 1
diff --git a/client/rhel/rhn-client-tools/rhn-client-tools.spec b/client/rhel/rhn-client-tools/rhn-client-tools.spec
index da4b841..7a5293b 100644
--- a/client/rhel/rhn-client-tools/rhn-client-tools.spec
+++ b/client/rhel/rhn-client-tools/rhn-client-tools.spec
@@ -215,7 +215,6 @@ make -f Makefile.rhn-client-tools test
%dir %{_sysconfdir}/sysconfig/rhn/allowed-actions/script
%verify(not md5 mtime size) %config(noreplace) %{_sysconfdir}/sysconfig/rhn/up2date
%config(noreplace) %{_sysconfdir}/logrotate.d/up2date
-%{_sysconfdir}/rpm/macros.up2date
# dirs
%dir %{_datadir}/rhn
commit 0f12fc8e7bdae39a74083ab91f8a7f765a95bdc5
Author: Jan Dobes <jdobes(a)redhat.com>
Date: Thu Feb 6 17:34:45 2014 +0100
Automatic commit of package [osad] release [5.11.33-1].
diff --git a/client/tools/osad/osad.spec b/client/tools/osad/osad.spec
index a2ac5c4..55b1dae 100644
--- a/client/tools/osad/osad.spec
+++ b/client/tools/osad/osad.spec
@@ -17,7 +17,7 @@ Group: System Environment/Daemons
License: GPLv2
URL: https://fedorahosted.org/spacewalk
Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
-Version: 5.11.32
+Version: 5.11.33
Release: 1%{?dist}
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
@@ -388,6 +388,9 @@ rpm -ql osa-dispatcher | xargs -n 1 /sbin/restorecon -rvi {}
%endif
%changelog
+* Thu Feb 06 2014 Jan Dobes 5.11.33-1
+- 1056515 - adapting to different logrotate version in fedora and rhel
+
* Mon Nov 11 2013 Milan Zazrivec <mzazrivec(a)redhat.com> 5.11.32-1
- remove extraneous 'except'
diff --git a/rel-eng/packages/osad b/rel-eng/packages/osad
index 9355161..6584dff 100644
--- a/rel-eng/packages/osad
+++ b/rel-eng/packages/osad
@@ -1 +1 @@
-5.11.32-1 client/tools/osad/
+5.11.33-1 client/tools/osad/
commit 599ef9f98b25775ce401cbdcc6bc5b8ef197f37c
Author: Jan Dobes <jdobes(a)redhat.com>
Date: Thu Feb 6 17:31:56 2014 +0100
Automatic commit of package [spacewalk-backend] release [2.1.49-1].
diff --git a/backend/spacewalk-backend.spec b/backend/spacewalk-backend.spec
index 8d5d70e..46348ae 100644
--- a/backend/spacewalk-backend.spec
+++ b/backend/spacewalk-backend.spec
@@ -11,7 +11,7 @@ Name: spacewalk-backend
Summary: Common programs needed to be installed on the Spacewalk servers/proxies
Group: Applications/Internet
License: GPLv2
-Version: 2.1.48
+Version: 2.1.49
Release: 1%{?dist}
URL: https://fedorahosted.org/spacewalk
Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
@@ -632,6 +632,10 @@ rm -f %{rhnconf}/rhnSecret.py*
%{pythonrhnroot}/satellite_tools/exporter/xmlWriter.py*
%changelog
+* Thu Feb 06 2014 Jan Dobes 2.1.49-1
+- 1056515 - adapting to different logrotate version in fedora and rhel
+- 870990 - sw-rm-ch -l when satellite-sync runs.
+
* Wed Feb 05 2014 Aron Parsons <parsonsa(a)bit-sys.com> 2.1.48-1
- apply exclude filters to dependencies in repo-sync
diff --git a/rel-eng/packages/spacewalk-backend b/rel-eng/packages/spacewalk-backend
index a7d5481..544cca2 100644
--- a/rel-eng/packages/spacewalk-backend
+++ b/rel-eng/packages/spacewalk-backend
@@ -1 +1 @@
-2.1.48-1 backend/
+2.1.49-1 backend/
commit 66509c2cb11dfd6f68208f13d904cdafc68a79d6
Author: Jan Dobes <jdobes(a)redhat.com>
Date: Thu Feb 6 14:12:44 2014 +0100
1056515 - adapting to different logrotate version in fedora and rhel
according to ca3160e9d397c07361a44701000b3dfb51480429
diff --git a/backend/logrotate/spacewalk-backend-app b/backend/logrotate/spacewalk-backend-app
index 17235c5..4f584c5 100644
--- a/backend/logrotate/spacewalk-backend-app
+++ b/backend/logrotate/spacewalk-backend-app
@@ -9,4 +9,5 @@
notifempty
missingok
size=10M
+#LOGROTATE-3.8# su root apache
}
diff --git a/backend/logrotate/spacewalk-backend-applet b/backend/logrotate/spacewalk-backend-applet
index 99dcbef..565e3e9 100644
--- a/backend/logrotate/spacewalk-backend-applet
+++ b/backend/logrotate/spacewalk-backend-applet
@@ -9,4 +9,5 @@
notifempty
missingok
size=10M
+#LOGROTATE-3.8# su root apache
}
diff --git a/backend/logrotate/spacewalk-backend-config-files b/backend/logrotate/spacewalk-backend-config-files
index 8215185..cca73b8 100644
--- a/backend/logrotate/spacewalk-backend-config-files
+++ b/backend/logrotate/spacewalk-backend-config-files
@@ -9,4 +9,5 @@
notifempty
missingok
size=10M
+#LOGROTATE-3.8# su root apache
}
diff --git a/backend/logrotate/spacewalk-backend-config-files-tool b/backend/logrotate/spacewalk-backend-config-files-tool
index 395fe92..45ae709 100644
--- a/backend/logrotate/spacewalk-backend-config-files-tool
+++ b/backend/logrotate/spacewalk-backend-config-files-tool
@@ -9,4 +9,5 @@
notifempty
missingok
size=10M
+#LOGROTATE-3.8# su root apache
}
diff --git a/backend/logrotate/spacewalk-backend-iss b/backend/logrotate/spacewalk-backend-iss
index 99f5ca6..b423011 100644
--- a/backend/logrotate/spacewalk-backend-iss
+++ b/backend/logrotate/spacewalk-backend-iss
@@ -9,4 +9,5 @@
notifempty
missingok
size=10M
+#LOGROTATE-3.8# su root apache
}
diff --git a/backend/logrotate/spacewalk-backend-iss-export b/backend/logrotate/spacewalk-backend-iss-export
index 498ac64..d9c8057 100644
--- a/backend/logrotate/spacewalk-backend-iss-export
+++ b/backend/logrotate/spacewalk-backend-iss-export
@@ -8,4 +8,5 @@
compress
notifempty
missingok
+#LOGROTATE-3.8# su root apache
}
diff --git a/backend/logrotate/spacewalk-backend-package-push-server b/backend/logrotate/spacewalk-backend-package-push-server
index 6817fe4..5dd22e1 100644
--- a/backend/logrotate/spacewalk-backend-package-push-server
+++ b/backend/logrotate/spacewalk-backend-package-push-server
@@ -9,4 +9,5 @@
notifempty
missingok
size=10M
+#LOGROTATE-3.8# su root apache
}
diff --git a/backend/logrotate/spacewalk-backend-server b/backend/logrotate/spacewalk-backend-server
index f85063d..2b45d4b 100644
--- a/backend/logrotate/spacewalk-backend-server
+++ b/backend/logrotate/spacewalk-backend-server
@@ -9,4 +9,5 @@
notifempty
missingok
size=10M
+#LOGROTATE-3.8# su root apache
}
diff --git a/backend/logrotate/spacewalk-backend-tools b/backend/logrotate/spacewalk-backend-tools
index 4d90f06..ec5933d 100644
--- a/backend/logrotate/spacewalk-backend-tools
+++ b/backend/logrotate/spacewalk-backend-tools
@@ -9,6 +9,7 @@
notifempty
missingok
size=10M
+#LOGROTATE-3.8# su root apache
}
/var/log/rhn/reposync/*.log {
diff --git a/backend/logrotate/spacewalk-backend-xmlrpc b/backend/logrotate/spacewalk-backend-xmlrpc
index 072acbc..77618c7 100644
--- a/backend/logrotate/spacewalk-backend-xmlrpc
+++ b/backend/logrotate/spacewalk-backend-xmlrpc
@@ -9,4 +9,5 @@
notifempty
missingok
size=10M
+#LOGROTATE-3.8# su root apache
}
diff --git a/backend/spacewalk-backend.spec b/backend/spacewalk-backend.spec
index 3715c99..8d5d70e 100644
--- a/backend/spacewalk-backend.spec
+++ b/backend/spacewalk-backend.spec
@@ -279,6 +279,10 @@ export PYTHON_MODULE_VERSION=%{version}
%find_lang %{name}-server
+%if 0%{?fedora} || 0%{?rhel} > 6
+sed -i 's/#LOGROTATE-3.8#//' $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/spacewalk-backend-*
+%endif
+
%clean
rm -rf $RPM_BUILD_ROOT
diff --git a/client/tools/osad/osad.spec b/client/tools/osad/osad.spec
index c67dc7c..a2ac5c4 100644
--- a/client/tools/osad/osad.spec
+++ b/client/tools/osad/osad.spec
@@ -162,7 +162,7 @@ mkdir -p %{buildroot}%{_var}/log/rhn
touch %{buildroot}%{_var}/log/osad
touch %{buildroot}%{_var}/log/rhn/osa-dispatcher.log
-%if 0%{?fedora}
+%if 0%{?fedora} || 0%{?rhel} > 6
sed -i 's/#LOGROTATE-3.8#//' $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/osa-dispatcher
%endif
commit 48b5b02eaf7ce80fe94ff3954465c8d8e8f7b9d6
Author: Tomas Kasparek <tkasparek(a)redhat.com>
Date: Thu Feb 6 16:34:22 2014 +0100
remove <meta name="page-decorator" content="none" />
diff --git a/java/code/webapp/WEB-INF/pages/admin/addresses.jsp b/java/code/webapp/WEB-INF/pages/admin/addresses.jsp
index fc5d878..10acf9e 100644
--- a/java/code/webapp/WEB-INF/pages/admin/addresses.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/addresses.jsp
@@ -5,7 +5,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-user"
diff --git a/java/code/webapp/WEB-INF/pages/admin/errata/publisheddeleteconfirm.jsp b/java/code/webapp/WEB-INF/pages/admin/errata/publisheddeleteconfirm.jsp
index 35fa052..af3cce5 100644
--- a/java/code/webapp/WEB-INF/pages/admin/errata/publisheddeleteconfirm.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/errata/publisheddeleteconfirm.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<h2><bean:message key="erratalist.jsp.deleteerrata" /></h2>
diff --git a/java/code/webapp/WEB-INF/pages/admin/errata/unpublisheddeleteconfirm.jsp b/java/code/webapp/WEB-INF/pages/admin/errata/unpublisheddeleteconfirm.jsp
index cd3c050..02fc8ef 100644
--- a/java/code/webapp/WEB-INF/pages/admin/errata/unpublisheddeleteconfirm.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/errata/unpublisheddeleteconfirm.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<h2><bean:message key="erratalist.jsp.deleteerrata" /></h2>
diff --git a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/notification/filtercreate.jsp b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/notification/filtercreate.jsp
index 4546a5a..bc2039e 100644
--- a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/notification/filtercreate.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/notification/filtercreate.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system-groups"
diff --git a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/notification/filteredit.jsp b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/notification/filteredit.jsp
index b191f57..7036bb5 100644
--- a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/notification/filteredit.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/notification/filteredit.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system-groups"
diff --git a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probe-create.jsp b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probe-create.jsp
index 0ec5317..0fdd09c 100644
--- a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probe-create.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probe-create.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-monitoring"
diff --git a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probe-edit.jsp b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probe-edit.jsp
index 4457f45..a7013de 100644
--- a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probe-edit.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probe-edit.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<script type="text/javascript" language="JavaScript">
diff --git a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probesuitecreate.jsp b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probesuitecreate.jsp
index 4335b7c..37ec3b4 100644
--- a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probesuitecreate.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probesuitecreate.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system-groups"
diff --git a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probesuiteedit.jsp b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probesuiteedit.jsp
index 4c4d299..edcff80 100644
--- a/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probesuiteedit.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/monitoring/config/probesuiteedit.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system-groups"
diff --git a/java/code/webapp/WEB-INF/pages/admin/multiorg/extauth.jsp b/java/code/webapp/WEB-INF/pages/admin/multiorg/extauth.jsp
index e15f5e5..3aa05e9 100644
--- a/java/code/webapp/WEB-INF/pages/admin/multiorg/extauth.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/multiorg/extauth.jsp
@@ -5,7 +5,6 @@
<html:html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-organisation"
diff --git a/java/code/webapp/WEB-INF/pages/admin/multiorg/extauthroles.jsp b/java/code/webapp/WEB-INF/pages/admin/multiorg/extauthroles.jsp
index c41e4fe..10406ee 100644
--- a/java/code/webapp/WEB-INF/pages/admin/multiorg/extauthroles.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/multiorg/extauthroles.jsp
@@ -6,7 +6,6 @@
<html:html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-organisation"
diff --git a/java/code/webapp/WEB-INF/pages/admin/users/activelist.jsp b/java/code/webapp/WEB-INF/pages/admin/users/activelist.jsp
index 2bed06b..b72ac23 100644
--- a/java/code/webapp/WEB-INF/pages/admin/users/activelist.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/users/activelist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-user" imgAlt="users.jsp.imgAlt"
diff --git a/java/code/webapp/WEB-INF/pages/admin/users/disabledlist.jsp b/java/code/webapp/WEB-INF/pages/admin/users/disabledlist.jsp
index 60baefe..0decb4c 100644
--- a/java/code/webapp/WEB-INF/pages/admin/users/disabledlist.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/users/disabledlist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-user" imgAlt="users.jsp.imgAlt"
diff --git a/java/code/webapp/WEB-INF/pages/admin/users/userlist.jsp b/java/code/webapp/WEB-INF/pages/admin/users/userlist.jsp
index 45f94ca..e0de369 100644
--- a/java/code/webapp/WEB-INF/pages/admin/users/userlist.jsp
+++ b/java/code/webapp/WEB-INF/pages/admin/users/userlist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-user" imgAlt="users.jsp.imgAlt"
diff --git a/java/code/webapp/WEB-INF/pages/audit/auditsearch.jsp b/java/code/webapp/WEB-INF/pages/audit/auditsearch.jsp
index 25855fd..0869382 100644
--- a/java/code/webapp/WEB-INF/pages/audit/auditsearch.jsp
+++ b/java/code/webapp/WEB-INF/pages/audit/auditsearch.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/audit/auditview.jsp b/java/code/webapp/WEB-INF/pages/audit/auditview.jsp
index 2b4e812..61e33f5 100644
--- a/java/code/webapp/WEB-INF/pages/audit/auditview.jsp
+++ b/java/code/webapp/WEB-INF/pages/audit/auditview.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
<style type="text/css">
.fixedwidth { font-family: Courier, Monospace; }
diff --git a/java/code/webapp/WEB-INF/pages/audit/listxccdf.jsp b/java/code/webapp/WEB-INF/pages/audit/listxccdf.jsp
index 4edf3bc..9497df9 100644
--- a/java/code/webapp/WEB-INF/pages/audit/listxccdf.jsp
+++ b/java/code/webapp/WEB-INF/pages/audit/listxccdf.jsp
@@ -8,7 +8,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/audit/machine.jsp b/java/code/webapp/WEB-INF/pages/audit/machine.jsp
index 5e7f32d..214390c 100644
--- a/java/code/webapp/WEB-INF/pages/audit/machine.jsp
+++ b/java/code/webapp/WEB-INF/pages/audit/machine.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/audit/overview.jsp b/java/code/webapp/WEB-INF/pages/audit/overview.jsp
index dacda63..c1dc748 100644
--- a/java/code/webapp/WEB-INF/pages/audit/overview.jsp
+++ b/java/code/webapp/WEB-INF/pages/audit/overview.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/confirmtargetsystems.jsp b/java/code/webapp/WEB-INF/pages/channel/confirmtargetsystems.jsp
index c7e3a91..f8dbbb8 100755
--- a/java/code/webapp/WEB-INF/pages/channel/confirmtargetsystems.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/confirmtargetsystems.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/entitlements.jsp b/java/code/webapp/WEB-INF/pages/channel/entitlements.jsp
index 0e3ccd4..ca243be 100644
--- a/java/code/webapp/WEB-INF/pages/channel/entitlements.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/entitlements.jsp
@@ -8,7 +8,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-channel"
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/add.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/add.jsp
index 11bf1f5..9c4d90e 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/add.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/add.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/channel/manage/manage_channel_header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/addcustomerrata.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/addcustomerrata.jsp
index 54c946f..ad64684 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/addcustomerrata.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/addcustomerrata.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
<!-- disables the enter key from submitting the form -->
<script type="text/javascript" language="JavaScript">
$(document).ready(function() {
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/adderrataredhat.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/adderrataredhat.jsp
index 89214c5..7cbcc3b 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/adderrataredhat.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/adderrataredhat.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
<!-- disables the enter key from submitting the form -->
<script type="text/javascript" language="JavaScript">
$(document).ready(function() {
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/addpackages.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/addpackages.jsp
index eac9bee..7c20b50 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/addpackages.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/addpackages.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
<!-- disables the enter key from submitting the form -->
<script type="text/javascript" language="JavaScript">
$(document).ready(function() {
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/channelrepos.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/channelrepos.jsp
index 2096b7b..af5b068 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/channelrepos.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/channelrepos.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/confirmaddpackages.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/confirmaddpackages.jsp
index 6a44866..6b753ee 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/confirmaddpackages.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/confirmaddpackages.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/confirmerrata.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/confirmerrata.jsp
index 1b71fcf..5e760dd 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/confirmerrata.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/confirmerrata.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/channel/manage/manage_channel_header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/confirmerrataremove.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/confirmerrataremove.jsp
index 532a934..9064649 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/confirmerrataremove.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/confirmerrataremove.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/channel/manage/manage_channel_header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/confirmprivate.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/confirmprivate.jsp
index 5eb6eba..e73c7bb 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/confirmprivate.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/confirmprivate.jsp
@@ -9,7 +9,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/confirmprotected.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/confirmprotected.jsp
index 968110e..3b7230e 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/confirmprotected.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/confirmprotected.jsp
@@ -9,7 +9,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/confirmremovepackages.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/confirmremovepackages.jsp
index f2f8bd7..ef37060 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/confirmremovepackages.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/confirmremovepackages.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/distchannelmap.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/distchannelmap.jsp
index 4455bee..16bfaa0 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/distchannelmap.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/distchannelmap.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/errata.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/errata.jsp
index f06081c..8cb7116 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/errata.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/errata.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/channel/manage/manage_channel_header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/erratapackagesync.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/erratapackagesync.jsp
index 34e35d9..c665bf8 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/erratapackagesync.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/erratapackagesync.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/errataremove.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/errataremove.jsp
index 631d746..e8ae981 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/errataremove.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/errataremove.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/channel/manage/manage_channel_header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/erratasync.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/erratasync.jsp
index 158fb1e..9310f36 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/erratasync.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/erratasync.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/channel/manage/manage_channel_header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/listpatchset.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/listpatchset.jsp
index 1745854..8db0fdc 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/listpatchset.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/listpatchset.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/channel/manage/manage_channel_header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/listremovepackages.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/listremovepackages.jsp
index aa32335..c8b0ef1 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/listremovepackages.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/listremovepackages.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/package/confirmdeletepackages.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/package/confirmdeletepackages.jsp
index 4337e82..460cde5 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/package/confirmdeletepackages.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/package/confirmdeletepackages.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/package/listremovecustompackages.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/package/listremovecustompackages.jsp
index 5e0d293..f936aa2 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/package/listremovecustompackages.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/package/listremovecustompackages.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
<!-- disables the enter key from submitting the form -->
<script type="text/javascript" language="JavaScript">
$(document).ready(function() {
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/packagemenu.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/packagemenu.jsp
index cff55a6..1091f09 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/packagemenu.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/packagemenu.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/channel/manage/manage_channel_header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/channel/manage/syncrepos.jsp b/java/code/webapp/WEB-INF/pages/channel/manage/syncrepos.jsp
index 318bc13..3f76b95 100644
--- a/java/code/webapp/WEB-INF/pages/channel/manage/syncrepos.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/manage/syncrepos.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/subscribedsystems.jsp b/java/code/webapp/WEB-INF/pages/channel/subscribedsystems.jsp
index 4224e7d..81f1e32 100644
--- a/java/code/webapp/WEB-INF/pages/channel/subscribedsystems.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/subscribedsystems.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/channel/targetsystems.jsp b/java/code/webapp/WEB-INF/pages/channel/targetsystems.jsp
index db4fcb1..c938e4c 100755
--- a/java/code/webapp/WEB-INF/pages/channel/targetsystems.jsp
+++ b/java/code/webapp/WEB-INF/pages/channel/targetsystems.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/common/fragments/groups/systems.jspf b/java/code/webapp/WEB-INF/pages/common/fragments/groups/systems.jspf
index a6862ad..c3b5249 100644
--- a/java/code/webapp/WEB-INF/pages/common/fragments/groups/systems.jspf
+++ b/java/code/webapp/WEB-INF/pages/common/fragments/groups/systems.jspf
@@ -5,7 +5,6 @@
<%@ taglib uri="http://rhn.redhat.com/tags/list" prefix="rl" %>
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/common/loading/loading.jsp b/java/code/webapp/WEB-INF/pages/common/loading/loading.jsp
index 7014f1e..9e63805 100644
--- a/java/code/webapp/WEB-INF/pages/common/loading/loading.jsp
+++ b/java/code/webapp/WEB-INF/pages/common/loading/loading.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<table border="0" cellpadding="0" cellspacing="0" width="408">
diff --git a/java/code/webapp/WEB-INF/pages/configuration/channel/deployconfirm.jsp b/java/code/webapp/WEB-INF/pages/configuration/channel/deployconfirm.jsp
index fee5f8e..08b3c92 100644
--- a/java/code/webapp/WEB-INF/pages/configuration/channel/deployconfirm.jsp
+++ b/java/code/webapp/WEB-INF/pages/configuration/channel/deployconfirm.jsp
@@ -9,7 +9,6 @@
<html>
<head>
-<meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/configuration/overview/globalconfiglist.jsp b/java/code/webapp/WEB-INF/pages/configuration/overview/globalconfiglist.jsp
index b18d778..eb2a5e1 100644
--- a/java/code/webapp/WEB-INF/pages/configuration/overview/globalconfiglist.jsp
+++ b/java/code/webapp/WEB-INF/pages/configuration/overview/globalconfiglist.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-channel-configuration"
diff --git a/java/code/webapp/WEB-INF/pages/configuration/overview/managedsystems.jsp b/java/code/webapp/WEB-INF/pages/configuration/overview/managedsystems.jsp
index d238387..265fc80 100644
--- a/java/code/webapp/WEB-INF/pages/configuration/overview/managedsystems.jsp
+++ b/java/code/webapp/WEB-INF/pages/configuration/overview/managedsystems.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system"
diff --git a/java/code/webapp/WEB-INF/pages/configuration/overview/overview.jsp b/java/code/webapp/WEB-INF/pages/configuration/overview/overview.jsp
index 1c6c579..0f85f0d 100644
--- a/java/code/webapp/WEB-INF/pages/configuration/overview/overview.jsp
+++ b/java/code/webapp/WEB-INF/pages/configuration/overview/overview.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/errata/addchannelpackagepush.jsp b/java/code/webapp/WEB-INF/pages/errata/addchannelpackagepush.jsp
index 811b93b..7d5a0ad 100644
--- a/java/code/webapp/WEB-INF/pages/errata/addchannelpackagepush.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/addchannelpackagepush.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata"
diff --git a/java/code/webapp/WEB-INF/pages/errata/addchannels.jsp b/java/code/webapp/WEB-INF/pages/errata/addchannels.jsp
index 49ccba8..3d5b892 100644
--- a/java/code/webapp/WEB-INF/pages/errata/addchannels.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/addchannels.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata"
diff --git a/java/code/webapp/WEB-INF/pages/errata/addpackagepackagepush.jsp b/java/code/webapp/WEB-INF/pages/errata/addpackagepackagepush.jsp
index 61b476f..3427196 100644
--- a/java/code/webapp/WEB-INF/pages/errata/addpackagepackagepush.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/addpackagepackagepush.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata"
diff --git a/java/code/webapp/WEB-INF/pages/errata/all.jsp b/java/code/webapp/WEB-INF/pages/errata/all.jsp
index c127855..ebfb461 100644
--- a/java/code/webapp/WEB-INF/pages/errata/all.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/all.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata" iconAlt="errata.common.errataAlt"
diff --git a/java/code/webapp/WEB-INF/pages/errata/create.jsp b/java/code/webapp/WEB-INF/pages/errata/create.jsp
index d81acd0..6b0fd0c 100644
--- a/java/code/webapp/WEB-INF/pages/errata/create.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/create.jsp
@@ -5,7 +5,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata" iconAlt="errata.common.errataAlt"
diff --git a/java/code/webapp/WEB-INF/pages/errata/delete.jsp b/java/code/webapp/WEB-INF/pages/errata/delete.jsp
index af56461..b1736a2 100644
--- a/java/code/webapp/WEB-INF/pages/errata/delete.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/delete.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata" iconAlt="errata.common.errataAlt"
diff --git a/java/code/webapp/WEB-INF/pages/errata/details.jsp b/java/code/webapp/WEB-INF/pages/errata/details.jsp
index c6a8689..19540b4 100644
--- a/java/code/webapp/WEB-INF/pages/errata/details.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/details.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/errata/edit.jsp b/java/code/webapp/WEB-INF/pages/errata/edit.jsp
index 858c54a..55b54a6 100644
--- a/java/code/webapp/WEB-INF/pages/errata/edit.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/edit.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata" iconAlt="errata.common.errataAlt"
diff --git a/java/code/webapp/WEB-INF/pages/errata/editchannels.jsp b/java/code/webapp/WEB-INF/pages/errata/editchannels.jsp
index 98516ac..bceb62c 100644
--- a/java/code/webapp/WEB-INF/pages/errata/editchannels.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/editchannels.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata" iconAlt="errata.common.errataAlt"
diff --git a/java/code/webapp/WEB-INF/pages/errata/erratapackages.jsp b/java/code/webapp/WEB-INF/pages/errata/erratapackages.jsp
index 4646877..04d5356 100644
--- a/java/code/webapp/WEB-INF/pages/errata/erratapackages.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/erratapackages.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/errata/notify.jsp b/java/code/webapp/WEB-INF/pages/errata/notify.jsp
index 5ab452e..f6198e8 100644
--- a/java/code/webapp/WEB-INF/pages/errata/notify.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/notify.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata"
diff --git a/java/code/webapp/WEB-INF/pages/errata/packagepush.jsp b/java/code/webapp/WEB-INF/pages/errata/packagepush.jsp
index dd790de..7be9aff 100644
--- a/java/code/webapp/WEB-INF/pages/errata/packagepush.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/packagepush.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/errata/packages/add.jsp b/java/code/webapp/WEB-INF/pages/errata/packages/add.jsp
index f2ea892..20a5053 100644
--- a/java/code/webapp/WEB-INF/pages/errata/packages/add.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/packages/add.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
<!-- disables the enter key from submitting the form -->
<script type="text/javascript" language="JavaScript">
$(document).ready(function() {
diff --git a/java/code/webapp/WEB-INF/pages/errata/packages/confirm.jsp b/java/code/webapp/WEB-INF/pages/errata/packages/confirm.jsp
index e08d587..d862e70 100644
--- a/java/code/webapp/WEB-INF/pages/errata/packages/confirm.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/packages/confirm.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata"
diff --git a/java/code/webapp/WEB-INF/pages/errata/packages/list.jsp b/java/code/webapp/WEB-INF/pages/errata/packages/list.jsp
index ded64be..3f927c7 100644
--- a/java/code/webapp/WEB-INF/pages/errata/packages/list.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/packages/list.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata" iconAlt="errata.common.errataAlt"
diff --git a/java/code/webapp/WEB-INF/pages/errata/packages/packages.jsp b/java/code/webapp/WEB-INF/pages/errata/packages/packages.jsp
index 4b6c944..9ea02cc 100644
--- a/java/code/webapp/WEB-INF/pages/errata/packages/packages.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/packages/packages.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/errata/packages/remove.jsp b/java/code/webapp/WEB-INF/pages/errata/packages/remove.jsp
index 1220f06..edb6611 100644
--- a/java/code/webapp/WEB-INF/pages/errata/packages/remove.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/packages/remove.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata"
diff --git a/java/code/webapp/WEB-INF/pages/errata/published.jsp b/java/code/webapp/WEB-INF/pages/errata/published.jsp
index 512228d..8ba87df 100644
--- a/java/code/webapp/WEB-INF/pages/errata/published.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/published.jsp
@@ -6,7 +6,6 @@
<html:html >
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata" iconAlt="errata.common.errataAlt"
diff --git a/java/code/webapp/WEB-INF/pages/errata/relevant.jsp b/java/code/webapp/WEB-INF/pages/errata/relevant.jsp
index a569793..cdecb00 100644
--- a/java/code/webapp/WEB-INF/pages/errata/relevant.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/relevant.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata" iconAlt="errata.common.errataAlt"
diff --git a/java/code/webapp/WEB-INF/pages/errata/unpublished.jsp b/java/code/webapp/WEB-INF/pages/errata/unpublished.jsp
index 7f27835..8307338 100644
--- a/java/code/webapp/WEB-INF/pages/errata/unpublished.jsp
+++ b/java/code/webapp/WEB-INF/pages/errata/unpublished.jsp
@@ -6,7 +6,6 @@
<html:html >
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-errata" iconAlt="errata.common.errataAlt"
diff --git a/java/code/webapp/WEB-INF/pages/groups/detail.jsp b/java/code/webapp/WEB-INF/pages/groups/detail.jsp
index 1740f13..e994b70 100644
--- a/java/code/webapp/WEB-INF/pages/groups/detail.jsp
+++ b/java/code/webapp/WEB-INF/pages/groups/detail.jsp
@@ -5,7 +5,6 @@
<%@ taglib uri="http://rhn.redhat.com/tags/list" prefix="rl" %>
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/groups/erratalist.jsp b/java/code/webapp/WEB-INF/pages/groups/erratalist.jsp
index 9013a2c..aaab83f 100644
--- a/java/code/webapp/WEB-INF/pages/groups/erratalist.jsp
+++ b/java/code/webapp/WEB-INF/pages/groups/erratalist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/groups/probes.jsp b/java/code/webapp/WEB-INF/pages/groups/probes.jsp
index 0820d78..f9fafe6 100644
--- a/java/code/webapp/WEB-INF/pages/groups/probes.jsp
+++ b/java/code/webapp/WEB-INF/pages/groups/probes.jsp
@@ -9,7 +9,6 @@
<html:xhtml/>
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp b/java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp
index aabe986..9b9e3a5 100644
--- a/java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp
+++ b/java/code/webapp/WEB-INF/pages/kickstart/ssm/kickstartablesystems.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/ssm/header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystems.jsp b/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystems.jsp
index 1fb25ed..9c24e57 100644
--- a/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystems.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystems.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt"
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 95bbd76..360aef3 100644
--- a/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/duplicate/duplicatesystemscompare.jsp
@@ -7,7 +7,6 @@
<html>
<head>
-<meta name="page-decorator" content="none" />
<script type="text/javascript">
function toggleElement(row) {
diff --git a/java/code/webapp/WEB-INF/pages/systems/entitlements/entitlements.jsp b/java/code/webapp/WEB-INF/pages/systems/entitlements/entitlements.jsp
index 91f125d..ab5fe37 100644
--- a/java/code/webapp/WEB-INF/pages/systems/entitlements/entitlements.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/entitlements/entitlements.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none"/>
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="overview.jsp.alt">
diff --git a/java/code/webapp/WEB-INF/pages/systems/entitlements/flexguests.jsp b/java/code/webapp/WEB-INF/pages/systems/entitlements/flexguests.jsp
index 69be682..4a19f93 100644
--- a/java/code/webapp/WEB-INF/pages/systems/entitlements/flexguests.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/entitlements/flexguests.jsp
@@ -24,7 +24,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system">
diff --git a/java/code/webapp/WEB-INF/pages/systems/extra-packages-systems-list.jsp b/java/code/webapp/WEB-INF/pages/systems/extra-packages-systems-list.jsp
index 70f24d6..94d6839 100644
--- a/java/code/webapp/WEB-INF/pages/systems/extra-packages-systems-list.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/extra-packages-systems-list.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/grouplist.jsp b/java/code/webapp/WEB-INF/pages/systems/grouplist.jsp
index 1b96095..acac554 100644
--- a/java/code/webapp/WEB-INF/pages/systems/grouplist.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/grouplist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system-groups" imgAlt="system.common.groupAlt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/inactivelist.jsp b/java/code/webapp/WEB-INF/pages/systems/inactivelist.jsp
index 2fee317..c9cdb26 100644
--- a/java/code/webapp/WEB-INF/pages/systems/inactivelist.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/inactivelist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/outofdatelist.jsp b/java/code/webapp/WEB-INF/pages/systems/outofdatelist.jsp
index 658de7a..3928485 100644
--- a/java/code/webapp/WEB-INF/pages/systems/outofdatelist.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/outofdatelist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/overview.jsp b/java/code/webapp/WEB-INF/pages/systems/overview.jsp
index 2004f64..0ba94c5 100644
--- a/java/code/webapp/WEB-INF/pages/systems/overview.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/overview.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="overview.jsp.alt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/physicallist.jsp b/java/code/webapp/WEB-INF/pages/systems/physicallist.jsp
index 4187984..2057c5a 100644
--- a/java/code/webapp/WEB-INF/pages/systems/physicallist.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/physicallist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/probes/create.jsp b/java/code/webapp/WEB-INF/pages/systems/probes/create.jsp
index 72a3457..873df49 100644
--- a/java/code/webapp/WEB-INF/pages/systems/probes/create.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/probes/create.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/systems/system-header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/systems/probes/delete.jsp b/java/code/webapp/WEB-INF/pages/systems/probes/delete.jsp
index 1bf16cc..4a94b46 100644
--- a/java/code/webapp/WEB-INF/pages/systems/probes/delete.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/probes/delete.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp b/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp
index 02829a1..6b20d60 100644
--- a/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp
@@ -6,7 +6,6 @@
<%@ taglib uri="http://rhn.redhat.com/tags/list" prefix="rl" %>
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/systems/system-header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/systems/probes/edit.jsp b/java/code/webapp/WEB-INF/pages/systems/probes/edit.jsp
index e6bb00f..e275bd4 100644
--- a/java/code/webapp/WEB-INF/pages/systems/probes/edit.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/probes/edit.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
diff --git a/java/code/webapp/WEB-INF/pages/systems/probes/index.jsp b/java/code/webapp/WEB-INF/pages/systems/probes/index.jsp
index 66e407d..7742a34 100644
--- a/java/code/webapp/WEB-INF/pages/systems/probes/index.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/probes/index.jsp
@@ -9,7 +9,6 @@
<html:xhtml/>
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/systems/system-header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/systems/probes/probedelete.jsp b/java/code/webapp/WEB-INF/pages/systems/probes/probedelete.jsp
index 2908d0f..b243c3b 100644
--- a/java/code/webapp/WEB-INF/pages/systems/probes/probedelete.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/probes/probedelete.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/systems/system-header.jspf" %>
diff --git a/java/code/webapp/WEB-INF/pages/systems/proxylist.jsp b/java/code/webapp/WEB-INF/pages/systems/proxylist.jsp
index 02f10a9..5929de7 100644
--- a/java/code/webapp/WEB-INF/pages/systems/proxylist.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/proxylist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/registeredlist.jsp b/java/code/webapp/WEB-INF/pages/systems/registeredlist.jsp
index 1684e4a..f7f0aff 100644
--- a/java/code/webapp/WEB-INF/pages/systems/registeredlist.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/registeredlist.jsp
@@ -8,7 +8,6 @@
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c-rt" %>
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/requiringrebootlist.jsp b/java/code/webapp/WEB-INF/pages/systems/requiringrebootlist.jsp
index 359d8ed..f4324eb 100644
--- a/java/code/webapp/WEB-INF/pages/systems/requiringrebootlist.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/requiringrebootlist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/softwarecrashesoverview.jsp b/java/code/webapp/WEB-INF/pages/systems/softwarecrashesoverview.jsp
index da0d259..d3e92a5 100644
--- a/java/code/webapp/WEB-INF/pages/systems/softwarecrashesoverview.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/softwarecrashesoverview.jsp
@@ -9,7 +9,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-crash">
diff --git a/java/code/webapp/WEB-INF/pages/systems/softwarecrashuuiddetails.jsp b/java/code/webapp/WEB-INF/pages/systems/softwarecrashuuiddetails.jsp
index ce0bf31..1f721b3 100644
--- a/java/code/webapp/WEB-INF/pages/systems/softwarecrashuuiddetails.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/softwarecrashuuiddetails.jsp
@@ -9,7 +9,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-crash">
diff --git a/java/code/webapp/WEB-INF/pages/systems/system-remote-command.jsp b/java/code/webapp/WEB-INF/pages/systems/system-remote-command.jsp
index 056ea93..071f5fd 100644
--- a/java/code/webapp/WEB-INF/pages/systems/system-remote-command.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/system-remote-command.jsp
@@ -9,7 +9,6 @@
<html>
- <head><meta name="page-decorator" content="none" /></head>
<body>
<%@ include file="/WEB-INF/pages/common/fragments/systems/system-header.jspf" %>
<div class="panel panel-default">
diff --git a/java/code/webapp/WEB-INF/pages/systems/systemcurrency.jsp b/java/code/webapp/WEB-INF/pages/systems/systemcurrency.jsp
index 84427d9..95306c5 100644
--- a/java/code/webapp/WEB-INF/pages/systems/systemcurrency.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/systemcurrency.jsp
@@ -8,7 +8,6 @@
<%@ taglib uri="http://java.sun.com/jstl/core_rt" prefix="c-rt" %>
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt">
diff --git a/java/code/webapp/WEB-INF/pages/systems/systemlist.jsp b/java/code/webapp/WEB-INF/pages/systems/systemlist.jsp
index facd2dc..4b18366 100644
--- a/java/code/webapp/WEB-INF/pages/systems/systemlist.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/systemlist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/unentitledlist.jsp b/java/code/webapp/WEB-INF/pages/systems/unentitledlist.jsp
index f3e25ee..b17f4dc 100644
--- a/java/code/webapp/WEB-INF/pages/systems/unentitledlist.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/unentitledlist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/ungroupedlist.jsp b/java/code/webapp/WEB-INF/pages/systems/ungroupedlist.jsp
index 12dcb78..cd00c55 100644
--- a/java/code/webapp/WEB-INF/pages/systems/ungroupedlist.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/ungroupedlist.jsp
@@ -7,7 +7,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system" imgAlt="system.common.systemAlt"
diff --git a/java/code/webapp/WEB-INF/pages/systems/virtuallist.jsp b/java/code/webapp/WEB-INF/pages/systems/virtuallist.jsp
index 7170ad4..1b71cdf 100644
--- a/java/code/webapp/WEB-INF/pages/systems/virtuallist.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/virtuallist.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-system"
diff --git a/java/code/webapp/WEB-INF/pages/user/edit/your_edit_address.jsp b/java/code/webapp/WEB-INF/pages/user/edit/your_edit_address.jsp
index a64448e..7143b7f 100644
--- a/java/code/webapp/WEB-INF/pages/user/edit/your_edit_address.jsp
+++ b/java/code/webapp/WEB-INF/pages/user/edit/your_edit_address.jsp
@@ -4,7 +4,6 @@
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-user" imgAlt="user.common.userAlt">
diff --git a/java/code/webapp/WEB-INF/pages/user/edit/yourdetails.jsp b/java/code/webapp/WEB-INF/pages/user/edit/yourdetails.jsp
index 80cae82..341b907 100644
--- a/java/code/webapp/WEB-INF/pages/user/edit/yourdetails.jsp
+++ b/java/code/webapp/WEB-INF/pages/user/edit/yourdetails.jsp
@@ -6,7 +6,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-user"
diff --git a/java/code/webapp/WEB-INF/pages/user/edit/yourpreferences.jsp b/java/code/webapp/WEB-INF/pages/user/edit/yourpreferences.jsp
index 05cdda6..afd215a 100644
--- a/java/code/webapp/WEB-INF/pages/user/edit/yourpreferences.jsp
+++ b/java/code/webapp/WEB-INF/pages/user/edit/yourpreferences.jsp
@@ -5,7 +5,6 @@
<html>
<head>
- <meta name="page-decorator" content="none" />
</head>
<body>
<rhn:toolbar base="h1" icon="header-preferences"
10 years, 3 months
java/code
by Tomáš Kašpárek
java/code/webapp/WEB-INF/pages/systems/probes/details.jsp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
New commits:
commit a524509f7d9713f7d7be82c679636855aeafdd3b
Author: Tomas Kasparek <tkasparek(a)redhat.com>
Date: Mon Feb 10 15:29:21 2014 +0100
use normal checkbox
diff --git a/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp b/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp
index 6b20d60..6352437 100644
--- a/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp
+++ b/java/code/webapp/WEB-INF/pages/systems/probes/details.jsp
@@ -122,7 +122,7 @@
<bean:message key="probedetails.jsp.show_event_log" />
</label>
<div class="col-lg-6">
- <span class="checkbox"><html:checkbox property="show_log" styleClass="checkbox" /></span>
+ <span class="checkbox"><html:checkbox property="show_log" /></span>
</div>
</div>
<div class="form-group">
10 years, 3 months
Changes to 'refs/tags/spacewalk-java-2.1.147-1'
by Tomáš Kašpárek
Tag 'spacewalk-java-2.1.147-1' created by Tomas Kasparek <tkasparek(a)redhat.com> at 2014-02-10 14:13 +0000
Tagging package [spacewalk-java] version [2.1.147-1] in directory [java/].
Changes since osad-5.11.33-1:
Milan Zazrivec (1):
1061013 - remove unneeded rpm macros file
Stephen Herr (1):
updating susestudio-java-client to 1.4
Tomas Kasparek (2):
style ProbeEdit page
Automatic commit of package [spacewalk-java] release [2.1.147-1].
---
client/rhel/rhn-client-tools/etc-conf/macros.up2date | 1
client/rhel/rhn-client-tools/rhn-client-tools.spec | 1
java/code/webapp/WEB-INF/pages/systems/probes/edit.jsp | 155 ++++++++++-------
java/ivy.xml | 2
java/spacewalk-java.spec | 10 -
rel-eng/packages/spacewalk-java | 2
6 files changed, 103 insertions(+), 68 deletions(-)
---
10 years, 3 months
java/spacewalk-java.spec rel-eng/packages
by Tomáš Kašpárek
java/spacewalk-java.spec | 10 +++++++++-
rel-eng/packages/spacewalk-java | 2 +-
2 files changed, 10 insertions(+), 2 deletions(-)
New commits:
commit da25d5e967cf3e651652bfb89d77e54cff08d518
Author: Tomas Kasparek <tkasparek(a)redhat.com>
Date: Mon Feb 10 15:13:21 2014 +0100
Automatic commit of package [spacewalk-java] release [2.1.147-1].
diff --git a/java/spacewalk-java.spec b/java/spacewalk-java.spec
index d6d0303..5f319fc 100644
--- a/java/spacewalk-java.spec
+++ b/java/spacewalk-java.spec
@@ -28,7 +28,7 @@ Name: spacewalk-java
Summary: Spacewalk Java site packages
Group: Applications/Internet
License: GPLv2
-Version: 2.1.146
+Version: 2.1.147
Release: 1%{?dist}
URL: https://fedorahosted.org/spacewalk
Source0: https://fedorahosted.org/releases/s/p/spacewalk/%{name}-%{version}.tar.gz
@@ -801,6 +801,14 @@ fi
%{jardir}/postgresql-jdbc.jar
%changelog
+* Mon Feb 10 2014 Tomas Kasparek <tkasparek(a)redhat.com> 2.1.147-1
+- style ProbeEdit page
+- updating susestudio-java-client to 1.4
+- remove <meta name="page-decorator" content="none" />
+- remove html formatting in other languages
+- remove html formatting from StringResources
+- fix checkstyle
+
* Thu Feb 06 2014 Michael Mraka <michael.mraka(a)redhat.com> 2.1.146-1
- patch to handle systems registered with the --nohardware flag
- Patch code to build against susestudio-java-client version 0.1.4
diff --git a/rel-eng/packages/spacewalk-java b/rel-eng/packages/spacewalk-java
index 3ce8d7a..d0207e4 100644
--- a/rel-eng/packages/spacewalk-java
+++ b/rel-eng/packages/spacewalk-java
@@ -1 +1 @@
-2.1.146-1 java/
+2.1.147-1 java/
10 years, 3 months