[Spacewalk-list] Fw: Spacewalk/Postgresql Installation.
Mukesh.Vadgama at sqa.org.uk
Mukesh.Vadgama at sqa.org.uk
Tue Mar 29 09:54:10 UTC 2011
Not sure this got through to the correct email address first time around
so resending.
Hello,
I am running into an error getting a certificate to install under
spacewalk using the postgresql backend. Installing under RHEL5.5. I know
there are things in postgresql which are not completed yet but I am only
looking to have the features specified on the spacewalk website to be
working under spacewalk.
I have tried version 1.3, and installed against the nightly builds, but
made no difference to the errors I am seeing.
The installation of postgresql and spacewalk installation run
successfully. The population into the DB produces no errors on
installation, but I do not think the rhnchannelfamily table is being
populated with all the entries for the channel families?
pre-steps:
Install the repo:
rpm -Uvh
http://spacewalk.redhat.com/yum/1.3/RHEL/5/i386/spacewalk-repo-1.3-1.el5.noarch.rpm
Install postgresql following step in the spacewalk documentation.
Here is the test certificate I am trying to install after the spacewalk
installation.
<?xml version="1.0" encoding="UTF-8"?>
<rhn-cert version="0.1">
<rhn-cert-field name="product">SPACEWALK</rhn-cert-field>
<rhn-cert-field name="owner">Scottish Qualification
Authority</rhn-cert-field>
<rhn-cert-field name="issued">2011-03-17 19:28:24</rhn-cert-field>
<rhn-cert-field name="expires">2015-12-31 00:00:00</rhn-cert-field>
<rhn-cert-field name="slots">20000</rhn-cert-field>
<rhn-cert-field name="monitoring-slots">20000</rhn-cert-field>
<rhn-cert-field name="provisioning-slots">20000</rhn-cert-field>
<rhn-cert-field name="virtualization_host">20000</rhn-cert-field>
<rhn-cert-field
name="virtualization_host_platform">20000</rhn-cert-field>
<rhn-cert-field name="channel-families" quantity="2" flex="0"
family="rhel-server"/>
<rhn-cert-field name="channel-families" quantity="2" flex="0"
family="el-server-vt"/>
<rhn-cert-field name="satellite-version">spacewalk</rhn-cert-field>
<rhn-cert-field name="generation">2</rhn-cert-field>
<rhn-cert-signature>
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
iD8DBQBNjKhGJMCI2CFmX98RAtb4AJsG6otZXwtVZIgNibGC+fqY9HBTIwCgzk5Y
AZBLg7hwUpzVtVcYgfcLoCY=
=hQcH
-----END PGP SIGNATURE-----
</rhn-cert-signature>
</rhn-cert>
This is a re-installation, hence dropping the objects messages.
[root at eggers_new2 tmp]# spacewalk-setup --disconnected
** Database: Setting up database connection for PostgreSQL backend.
Hostname (leave empty for local)?
Database? spaceschema
Username? spaceuser
Password?
** Database: Populating database.
The Database has schema. Would you like to clear the database [Y]? Y
** Database: Clearing database.
NOTICE: drop cascades to 5 other objects
DETAIL: drop cascades to function rpm.isdigit(character)
drop cascades to function rpm.isalpha(character)
drop cascades to function rpm.isalphanum(character)
drop cascades to function rpm.rpmstrcmp(character varying,character
varying)
drop cascades to function rpm.vercmp(character varying,character
varying,character varying,character varying,character varying,character
varying)
NOTICE: drop cascades to 3 other objects
DETAIL: drop cascades to function
rhn_exception.lookup_exception(character varying)
drop cascades to function rhn_exception.raise_exception(character varying)
drop cascades to function rhn_exception.raise_exception_val(character
varying,numeric)
NOTICE: drop cascades to 4 other objects
DETAIL: drop cascades to function
rhn_quota.recompute_org_quota_used(numeric)
drop cascades to function rhn_quota.get_org_for_config_content(numeric)
drop cascades to function rhn_quota.set_org_quota_total(numeric,numeric)
drop cascades to function rhn_quota.update_org_quota(numeric)
NOTICE: drop cascades to 8 other objects
DETAIL: drop cascades to function
rhn_config.prune_org_configs(numeric,numeric)
drop cascades to function
rhn_config.insert_revision(numeric,numeric,numeric,numeric,numeric)
drop cascades to function rhn_config.delete_revision(numeric,numeric)
drop cascades to function rhn_config.get_latest_revision(numeric)
drop cascades to function rhn_config.insert_file(numeric,character
varying)
drop cascades to function rhn_config.delete_file(numeric)
drop cascades to function rhn_config.insert_channel(numeric,character
varying,character varying,character varying,character varying)
drop cascades to function rhn_config.delete_channel(numeric)
NOTICE: drop cascades to 22 other objects
DETAIL: drop cascades to function
rhn_server.system_service_level(numeric,character varying)
drop cascades to function rhn_server.can_change_base_channel(numeric)
drop cascades to function
rhn_server.set_custom_value(numeric,numeric,character varying,character
varying)
drop cascades to function rhn_server.bulk_set_custom_value(character
varying,character varying,character varying,numeric)
drop cascades to function rhn_server.bulk_snapshot_tag(numeric,character
varying,character varying,numeric)
drop cascades to function rhn_server.tag_delete(numeric,numeric)
drop cascades to function
rhn_server.tag_snapshot(numeric,numeric,character varying)
drop cascades to function rhn_server.bulk_snapshot(character
varying,character varying,numeric)
drop cascades to function rhn_server.snapshot_server(numeric,character
varying)
drop cascades to function rhn_server.remove_action(numeric,numeric)
drop cascades to function rhn_server.check_user_access(numeric,numeric)
drop cascades to function
rhn_server.can_server_consume_virt_slot(numeric,character varying)
drop cascades to function
rhn_server.insert_into_servergroup(numeric,numeric)
drop cascades to function
rhn_server.insert_into_servergroup_maybe(numeric,numeric)
drop cascades to function
rhn_server.insert_set_into_servergroup(numeric,numeric,character varying)
drop cascades to function
rhn_server.delete_from_servergroup(numeric,numeric)
drop cascades to function
rhn_server.delete_set_from_servergroup(numeric,numeric,character varying)
drop cascades to function rhn_server.clear_servergroup(numeric)
drop cascades to function rhn_server.delete_from_org_servergroups(numeric)
drop cascades to function rhn_server.get_ip_address(numeric)
drop cascades to view rhn_host_monitoring
drop cascades to function rhn_server.update_needed_cache(numeric)
NOTICE: drop cascades to 32 other objects
DETAIL: drop cascades to function
rhn_entitlements.assign_channel_entitlement(character
varying,numeric,numeric,numeric,numeric)
drop cascades to function
rhn_entitlements.find_compatible_sg(numeric,character varying)
drop cascades to function
rhn_entitlements.remove_org_entitlements(numeric)
drop cascades to function
rhn_entitlements.entitlement_grants_service(character varying,character
varying)
drop cascades to function
rhn_entitlements.lookup_entitlement_group(numeric,character varying)
drop cascades to function
rhn_entitlements.create_entitlement_group(numeric,character varying)
drop cascades to function
rhn_entitlements.can_entitle_server(numeric,character varying)
drop cascades to function
rhn_entitlements.can_switch_base(integer,character varying)
drop cascades to function
rhn_entitlements.entitle_server(numeric,character varying)
drop cascades to function
rhn_entitlements.remove_server_entitlement(numeric,character
varying,numeric)
drop cascades to function rhn_entitlements.unentitle_server(numeric)
drop cascades to function
rhn_entitlements.repoll_virt_guest_entitlements(numeric)
drop cascades to function rhn_entitlements.get_server_entitlement(numeric)
drop cascades to function
rhn_entitlements.modify_org_service(numeric,character varying,character)
drop cascades to function
rhn_entitlements.set_customer_enterprise(numeric)
drop cascades to function
rhn_entitlements.set_customer_provisioning(numeric)
drop cascades to function
rhn_entitlements.set_customer_monitoring(numeric)
drop cascades to function rhn_entitlements.set_customer_nonlinux(numeric)
drop cascades to function
rhn_entitlements.unset_customer_enterprise(numeric)
drop cascades to function
rhn_entitlements.unset_customer_provisioning(numeric)
drop cascades to function
rhn_entitlements.unset_customer_monitoring(numeric)
drop cascades to function
rhn_entitlements.unset_customer_nonlinux(numeric)
drop cascades to function
rhn_entitlements.prune_group(numeric,character,numeric,numeric)
drop cascades to function
rhn_entitlements.assign_system_entitlement(character
varying,numeric,numeric,numeric)
drop cascades to function
rhn_entitlements.assign_channel_entitlement(character
varying,numeric,numeric,numeric)
drop cascades to function
rhn_entitlements.activate_system_entitlement(numeric,character
varying,numeric)
drop cascades to function
rhn_entitlements.activate_channel_entitlement(numeric,character
varying,numeric,numeric)
drop cascades to function
rhn_entitlements.set_group_count(numeric,character,numeric,numeric,numeric)
drop cascades to function
rhn_entitlements.prune_family(numeric,numeric,numeric,numeric)
drop cascades to function
rhn_entitlements.set_family_count(numeric,numeric,numeric,numeric)
drop cascades to function
rhn_entitlements.entitle_last_modified_servers(numeric,character
varying,numeric)
drop cascades to function
rhn_entitlements.subscribe_newest_servers(numeric)
DBD::Pg::db do failed: ERROR: schema "rhn_bel" does not exist
NOTICE: drop cascades to 3 other objects
DETAIL: drop cascades to function
rhn_cache.update_perms_for_server(numeric)
drop cascades to function rhn_cache.update_perms_for_user(numeric)
drop cascades to function rhn_cache.update_perms_for_server_group(numeric)
NOTICE: drop cascades to 41 other objects
DETAIL: drop cascades to function
rhn_channel.server_base_subscriptions(numeric)
drop cascades to function
rhn_channel.check_server_subscription(numeric,numeric)
drop cascades to function rhn_channel.get_license_path(numeric)
drop cascades to function
rhn_channel.license_consent(numeric,numeric,numeric)
drop cascades to function rhn_channel.obtain_read_lock(numeric,numeric)
drop cascades to function
rhn_channel.subscribe_server(numeric,numeric,numeric,numeric,numeric)
drop cascades to function
rhn_channel.can_server_consume_virt_channl(numeric,numeric)
drop cascades to function rhn_channel.can_server_consume_fve(numeric)
drop cascades to function rhn_channel.guess_server_base(numeric)
drop cascades to function rhn_channel.normalize_server_arch(character
varying)
drop cascades to function
rhn_channel.base_channel_for_release_arch(character varying,character
varying,numeric,numeric)
drop cascades to function rhn_channel.base_channel_rel_archid(character
varying,numeric,numeric,numeric)
drop cascades to function rhn_channel.clear_subscriptions(numeric,numeric)
drop cascades to function
rhn_channel.unsubscribe_server(numeric,numeric,numeric,numeric,numeric,numeric)
drop cascades to function rhn_channel.family_for_channel(numeric)
drop cascades to function
rhn_channel.available_family_subscriptions(numeric,numeric)
drop cascades to function
rhn_channel.available_fve_family_subs(numeric,numeric)
drop cascades to function
rhn_channel.channel_family_current_members(numeric,numeric)
drop cascades to function
rhn_channel.update_family_counts(numeric,numeric)
drop cascades to function
rhn_channel.available_chan_subscriptions(numeric,numeric)
drop cascades to view rhnavailablechannels
drop cascades to view rhnorgerrata
drop cascades to function
rhn_channel.unsubscribe_server_from_family(numeric,numeric)
drop cascades to function rhn_channel.get_org_id(numeric)
drop cascades to function rhn_channel.get_cfam_org_access(numeric,numeric)
drop cascades to function rhn_channel.get_org_access(numeric,numeric)
drop cascades to function
rhn_channel.user_role_check_debug(numeric,numeric,character varying)
drop cascades to function
rhn_channel.user_role_check(numeric,numeric,character varying)
drop cascades to view rhnuserchannel
drop cascades to function
rhn_channel.shared_user_role_check(numeric,numeric,character varying)
drop cascades to function
rhn_channel.loose_user_role_check(numeric,numeric,character varying)
drop cascades to function
rhn_channel.direct_user_role_check(numeric,numeric,character varying)
drop cascades to function
rhn_channel.org_channel_setting(numeric,numeric,character varying)
drop cascades to view rhnuseravailablechannels
drop cascades to function rhn_channel.channel_priority(numeric)
drop cascades to function rhn_channel.delete_server_channels(numeric)
drop cascades to function
rhn_channel.refresh_newest_package(numeric,character varying)
drop cascades to function
rhn_channel.update_channel(numeric,numeric,timestamp with time zone)
drop cascades to function
rhn_channel.update_channels_by_package(numeric,timestamp with time zone)
drop cascades to function
rhn_channel.update_channels_by_errata(numeric,timestamp with time zone)
drop cascades to function rhn_channel.update_needed_cache(numeric)
NOTICE: drop cascades to 4 other objects
DETAIL: drop cascades to function
rhn_config_channel.action_diff_revision_status(numeric)
drop cascades to function
rhn_config_channel.get_user_chan_access(numeric,numeric)
drop cascades to function
rhn_config_channel.get_user_revision_access(numeric,numeric)
drop cascades to function
rhn_config_channel.get_user_file_access(numeric,numeric)
NOTICE: drop cascades to 2 other objects
DETAIL: drop cascades to function rhn_org.delete_org(numeric)
drop cascades to function rhn_org.delete_user(numeric,numeric)
NOTICE: drop cascades to 9 other objects
DETAIL: drop cascades to function rhn_user.check_role(numeric,character
varying)
drop cascades to function rhn_user.check_role_implied(numeric,character
varying)
drop cascades to function rhn_user.get_org_id(numeric)
drop cascades to function rhn_user.find_mailable_address(numeric)
drop cascades to view rhn_contact_monitoring
drop cascades to function rhn_user.add_servergroup_perm(numeric,numeric)
drop cascades to function
rhn_user.remove_servergroup_perm(numeric,numeric)
drop cascades to function rhn_user.add_to_usergroup(numeric,numeric)
drop cascades to function rhn_user.remove_from_usergroup(numeric,numeric)
NOTICE: drop cascades to 865 other objects
DETAIL: drop cascades to type evr_t
drop cascades to function evr_t(character varying,character
varying,character varying)
drop cascades to function evr_t_compare(evr_t,evr_t)
drop cascades to function evr_t_lt(evr_t,evr_t)
drop cascades to function evr_t_le(evr_t,evr_t)
drop cascades to function evr_t_eq(evr_t,evr_t)
drop cascades to function evr_t_ge(evr_t,evr_t)
drop cascades to function evr_t_gt(evr_t,evr_t)
drop cascades to operator <(evr_t,evr_t)
drop cascades to operator <=(evr_t,evr_t)
drop cascades to operator <>(evr_t,evr_t)
drop cascades to operator =(evr_t,evr_t)
drop cascades to operator >=(evr_t,evr_t)
drop cascades to operator >(evr_t,evr_t)
drop cascades to operator family evr_t_ops for access method btree
drop cascades to function evr_t_as_vre(evr_t)
drop cascades to function evr_t_as_vre_simple(evr_t)
drop cascades to function evr_t_larger(evr_t,evr_t)
drop cascades to function max(evr_t)
drop cascades to table web_customer
drop cascades to sequence web_customer_id_seq
drop cascades to table web_contact
drop cascades to sequence web_contact_id_seq
drop cascades to table pxtsessions
drop cascades to sequence pxt_id_seq
drop cascades to table dual
drop cascades to table rhnactiontype
drop cascades to table rhnaction
drop cascades to sequence rhn_event_id_seq
drop cascades to table rhnarchtype
drop cascades to sequence rhn_archtype_id_seq
drop cascades to table rhnserverarch
drop cascades to sequence rhn_server_arch_id_seq
drop cascades to table rhnprovisionstate
drop cascades to sequence rhn_provstate_id_seq
drop cascades to table rhnserver
drop cascades to sequence rhn_server_id_seq
drop cascades to table rhnactionstatus
drop cascades to table rhnserveraction
drop cascades to table rhnconfigchanneltype
drop cascades to sequence rhn_confchantype_id_seq
drop cascades to table rhnconfigchannel
drop cascades to sequence rhn_confchan_id_seq
drop cascades to table rhnactionconfigchannel
drop cascades to table rhnactionconfigdate
drop cascades to table rhnactionconfigdatefile
drop cascades to table rhnconfigfilename
drop cascades to sequence rhn_cfname_id_seq
drop cascades to table rhnconfigfilefailure
drop cascades to sequence rhn_conffile_failure_id_seq
drop cascades to table rhnconfigfilestate
drop cascades to sequence rhn_cfstate_id_seq
drop cascades to table rhnconfigfile
drop cascades to sequence rhn_conffile_id_seq
drop cascades to table rhnconfiginfo
drop cascades to sequence rhn_confinfo_id_seq
drop cascades to table rhnchecksumtype
drop cascades to sequence rhn_checksum_id_seq
drop cascades to table rhnchecksum
drop cascades to sequence rhnchecksum_seq
drop cascades to table rhnconfigcontent
drop cascades to sequence rhn_confcontent_id_seq
drop cascades to table rhnconfigfiletype
drop cascades to table rhnconfigrevision
drop cascades to sequence rhn_confrevision_id_seq
drop cascades to table rhnactionconfigfilename
drop cascades to table rhnactionconfigrevision
drop cascades to sequence rhn_actioncr_id_seq
drop cascades to table rhnactionconfigrevisionresult
drop cascades to table rhnactiondaemonconfig
drop cascades to table rhnerrataseverity
drop cascades to table rhnerrata
drop cascades to sequence rhn_errata_id_seq
drop cascades to table rhnactionerrataupdate
drop cascades to table rhnchannelarch
drop cascades to sequence rhn_channel_arch_id_seq
drop cascades to table rhnchannelproduct
drop cascades to sequence rhn_channelprod_id_seq
drop cascades to table rhnproductname
drop cascades to sequence rhn_productname_id_seq
drop cascades to table rhnchannel
drop cascades to sequence rhn_channel_id_seq
drop cascades to table rhnkstreetype
drop cascades to sequence rhn_kstree_type_seq
drop cascades to table rhnksinstalltype
drop cascades to sequence rhn_ksinstalltype_id_seq
drop cascades to table rhnkickstartabletree
drop cascades to sequence rhn_kstree_id_seq
drop cascades to table rhnactionkickstart
drop cascades to sequence rhn_actionks_id_seq
drop cascades to table rhnfilelist
drop cascades to sequence rhn_filelist_id_seq
drop cascades to table rhnactionkickstartfilelist
drop cascades to table rhnksdata
drop cascades to sequence rhn_ks_id_seq
drop cascades to table rhnkickstartsessionstate
drop cascades to sequence rhn_ks_session_state_id_seq
drop cascades to table rhnserverprofiletype
drop cascades to sequence rhn_sproftype_id_seq
drop cascades to table rhnserverprofile
and 765 other objects (see server log for list)
** Database: Re-populating database.
*** Progress: ####
* Setting up users and groups.
** GPG: Initializing GPG and importing key.
You must enter an email address.
Admin Email Address? mukesh.vadgama at sqa.org.uk
* Performing initial configuration.
* Activating Spacewalk.
** Loading Spacewalk Certificate.
** Verifying certificate locally.
** Activating Spacewalk.
* Enabling Monitoring.
* Configuring apache SSL virtual host.
Should setup configure apache's default ssl server for you (saves original
ssl.conf) [Y]? Y
* Configuring tomcat.
Reversed (or previously applied) patch detected! Skipping patch.
1 out of 1 hunk ignored -- saving rejects to file web.xml.rej
* Configuring jabberd.
* Creating SSL certificates.
CA certificate password?
Re-enter CA certificate password?
Organization? Scottish Qualification Authority
Organization Unit [eggers_new2.passmark.net]?
Email Address [mukesh.vadgama at sqa.org.uk]?
City? Dalkeith
State? West Lothian
Country code (Examples: "US", "JP", "IN", or type "?" to see a list)? GB
** SSL: Generating CA certificate.
** SSL: Deploying CA certificate.
** SSL: Generating server certificate.
** SSL: Storing SSL certificates.
* Deploying configuration files.
* Update configuration in database.
* Setting up Cobbler..
Cobbler requires tftp and xinetd services be turned on for PXE
provisioning functionality. Enable these services [Y/n]?y
task started: 2011-03-28_121604_sync
task started (id=Sync, time=Mon Mar 28 12:16:04 2011)
running pre-sync triggers
cleaning trees
removing: /tftpboot/pxelinux.cfg/default
removing: /tftpboot/grub/images
removing: /tftpboot/grub/efidefault
removing: /tftpboot/s390x/profile_list
copying bootloaders
copying distros
copying images
generating PXE configuration files
cleaning link caches
running: find /tftpboot/.link_cache -maxdepth 1 -type f -links 1 -exec rm
-f '{}' ';'
received:
running: find /var/www/cobbler/.link_cache -maxdepth 1 -type f -links 1
-exec rm -f '{}' ';'
received:
rendering Rsync files
generating PXE menu structure
running post-sync triggers
running python triggers from /var/lib/cobbler/triggers/sync/post/*
running python trigger cobbler.modules.sync_post_restart_services
running shell triggers from /var/lib/cobbler/triggers/sync/post/*
running python triggers from /var/lib/cobbler/triggers/change/*
running python trigger cobbler.modules.scm_track
running shell triggers from /var/lib/cobbler/triggers/change/*
*** TASK COMPLETE ***
* Restarting services.
Tomcat failed to start properly or the installer ran out of tries. Please
check /var/log/tomcat*/catalina.out for errors.
Installation complete.
Visit https://eggers_new2.passmark.net to create the Spacewalk
administrator account.
I resign the certificate using this instructions in this doc:
https://fedorahosted.org/spacewalk/wiki/CertCreation
[root at eggers_new2 tmp]# ./gen-oss-sat-cert.pl --signer 21665FDF --resign
space.signed.cert
Passphrase:
Channel family 'rhel-server' not found in database, continuing...
Channel family 'el-server-vt' not found in database, continuing...
gpg: Signature made Mon 28 Mar 2011 12:32:18 BST using DSA key ID 21665FDF
gpg: Good signature from "Scottish Qualification Authority (Spacewalk)
<mukesh.vadgama at sqa.org.uk>"
Signatures validation succeeded.
Certificate saved as space.signed.cert
It does not matter what the channel family is named, when ever I perfom
the step above it produces the same error.
Activation produces no errors:
# rhn-satellite-activate --disconnected
--rhn-cert=/var/tmp/space.signed.cert
Under Admin -> My Org -> subscriptions -> Software channel entitlements -
nothing is listed
When registering a Redhat 5.5 client to spacewalk produces:
[root at coquette4 rhn]# rhnreg_ks --username vagdg498 --password *******
Error Class Code: 70
Error Class Info:
All available subscriptions for the requested channel have been
exhausted.
Please contact a Red Hat Network Sales associate.
Explanation:
An error has occurred while processing your request. If this problem
persists please enter a bug report at bugzilla.redhat.com.
If you choose to submit the bug report, please be sure to include
details of what you were trying to do when this error occurred and
details on how to reproduce this problem.
I try rhn_register it produces the same error. I think the reason it
cannot register the client is because it cannot find any software channel
entitlements, because it does not find any, and it does not find any
because of the
"Channel family 'rhel-server' not found in database, continuing..." error
message.
spaceschema=# \dt rhnchannelfamily
List of relations
Schema | Name | Type | Owner
--------+------------------+-------+-----------
public | rhnchannelfamily | table | spaceuser
(1 row)
spaceschema=# select * from rhnchannelfamily;
id | org_id | name | label |
product_url | created |
modified
------+--------+--------------------------+--------------------------+-------------------+-------------------------------+-------
------------------------
1000 | 1 | Private Channel Family 1 | private-channel-family-1 |
First Org Created | 2011-03-28 12:14:03.431439+01 | 2011-0
3-28 12:14:03.431439+01
(1 row)
Any help with this will be greatly appreciated.
Kind Regards, Mukesh.
**********************************************************************
This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this e-mail. Please notify the sender immediately by e-mail if you have received this e-mail by mistake and delete this e-mail from your system. E-mail transmission cannot be guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or contain viruses. The sender therefore does not accept liability for any errors or omissions in the contents of this message, which arise as a result of e-mail transmission.
WARNING: Computer viruses can be transmitted by e-mail. The recipient should check this email and any attachments for the presence of viruses. SQA accepts no liability for any damage caused by any virus transmitted by this email.
Scottish Qualifications Authority
www.sqa.org.uk
postmaster at sqa.org.uk
**********************************************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/spacewalk-list/attachments/20110329/86165ab2/attachment.htm>
More information about the Spacewalk-list
mailing list