[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Spacewalk-list] Fw: Spacewalk/Postgresql Installation.



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 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 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 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 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 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 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 sqa org uk

**********************************************************************


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]