Account Options

  1. Sign in
The old Google Groups will be going away soon, but your browser is incompatible with the new version.
Google Groups Home
« Groups Home
Hiera Questions: Virtual User Resources and Hiera
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  17 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Dan White  
View profile  
 More options May 18 2012, 12:12 am
From: Dan White <y...@comcast.net>
Date: Fri, 18 May 2012 00:12:56 -0400
Local: Fri, May 18 2012 12:12 am
Subject: Hiera Questions: Virtual User Resources and Hiera
One way I have seen for setting up system users is to create them virtually and then realize them with the spaceship operator, say by ggroup -- like this:

User <| groups == 'wheel' |>

Reference: http://www.mail-archive.com/puppet-users@googlegroups.com/msg29719.html

In the referenced posting, the OP was trying to create a bunch of virtual users with all the parameter data in hiera.
But this is usually done with create_resources and that don't do virtual :(

So, I am asking a couple of questions going in different directions:

Can anyone show me a way to create a virtual resource from hiera ?
Actually, that should be: Hot to create a bunch of virtual resources from a hiera-hash

Contrarywise, it was suggested in the referenced posting that one
"could find all users in all hierarchies with hiera_hash and then declare them at once".
The down side of that is that using the spaceship operator,
one can filter by class parameters and there is no problem if the same virtual resource is realized more than once.
I am not certain that the hash-merge would produce a list of unique resource parameters.
If the same user was in more than one hiera file, would it appear multiple times in the hash ?


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Gary Larizza  
View profile  
 More options May 18 2012, 12:16 am
From: Gary Larizza <g...@puppetlabs.com>
Date: Thu, 17 May 2012 21:16:18 -0700
Local: Fri, May 18 2012 12:16 am
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera

That's exactly what I was suggesting.  If you declared the users as
create_resources expected it, and included the same user in multiple levels
of the hierarchy, the hash merging functionality would leave you with a
single user declaration.  One caveat (as of right now): you need to declare
ALL the parameters in ALL the levels of the hierarchy.

> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To post to this group, send email to puppet-users@googlegroups.com.
> To unsubscribe from this group, send email to
> puppet-users+unsubscribe@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/puppet-users?hl=en.

--

Gary Larizza
Professional Services Engineer
Puppet Labs


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Dan White  
View profile  
 More options May 18 2012, 8:46 am
From: Dan White <y...@comcast.net>
Date: Fri, 18 May 2012 12:46:25 +0000 (UTC)
Local: Fri, May 18 2012 8:46 am
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera
----- Gary Larizza <g...@puppetlabs.com> wrote:

Ah, Gary !  Just the brain I wish to pick !  :)

Thanks for the response. It makes sense.
However, if I perceive this properly, it would provide an All-Or-Nothing implementation of users.

I am looking for for a way to have a master list of users in hiera and then realize/instantiate a group-keyed-subset of the master list on each node.

“Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us.”
Bill Waterson (Calvin & Hobbes)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Luke Bigum  
View profile  
 More options May 18 2012, 8:59 am
From: Luke Bigum <Luke.Bi...@lmax.com>
Date: Fri, 18 May 2012 13:59:06 +0100
Local: Fri, May 18 2012 8:59 am
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera
On 18/05/12 13:46, Dan White wrote:

> Ah, Gary !  Just the brain I wish to pick !  :)

> Thanks for the response. It makes sense.
> However, if I perceive this properly, it would provide an All-Or-Nothing implementation of users.

> I am looking for for a way to have a master list of users in hiera and then realize/instantiate a group-keyed-subset of the master list on each node.

> Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us.
> Bill Waterson (Calvin&  Hobbes)

Why not use a define to wrap the virtualised declaration of your users,
or tried and doesn't work? Theoretically like this:

--------------------
define virtualise_user ($name, $uid, ...) {
   @user { $name:
     uid => $uid,
   }

}

$all_users = hiera_hash('users')

create_resources('virtualise_user', $all_users)
--------------------

-Luke

--
Luke Bigum

Information Systems
Ph: +44 (0) 20 3192 2520
luke.bi...@lmax.com | http://www.lmax.com
LMAX, Yellow Building, 1A Nicholas Road, London W11 4AN

FX and CFDs are leveraged products that can result in losses exceeding
your deposit.  They are not suitable for everyone so please ensure you
fully understand the risks involved.  The information in this email is not
directed at residents of the United States of America or any other
jurisdiction where trading in CFDs and/or FX is restricted or prohibited
by local laws or regulations.

The information in this email and any attachment is confidential and is
intended only for the named recipient(s). The email may not be disclosed
or used by any person other than the addressee, nor may it be copied in
any way. If you are not the intended recipient please notify the sender
immediately and delete any copies of this message. Any unauthorised
copying, disclosure or distribution of the material in this e-mail is
strictly forbidden.

LMAX operates a multilateral trading facility.  Authorised and regulated
by the Financial Services Authority (firm registration number 509778) and
is registered in England and Wales (number 06505809).
Our registered address is Yellow Building, 1A Nicholas Road, London, W11
4AN.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Dan White  
View profile  
 More options May 18 2012, 9:07 am
From: Dan White <y...@comcast.net>
Date: Fri, 18 May 2012 13:07:09 +0000 (UTC)
Local: Fri, May 18 2012 9:07 am
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera
----- Luke Bigum <Luke.Bi...@lmax.com> wrote:

The original posting tried it like this:

class users {
  $system_users  = hiera('system_users')
  $system_groups = hiera('system_groups')

  create_resources("@users::mkuser",$system_users)
  create_resources("@users::mkgroup",$system_groups)

} # class users

... and puppet screamed "could not create resource of unknown type @users::mkuser"

I can certainly try that and see what happens.

Thanks.

“Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us.”
Bill Waterson (Calvin & Hobbes)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
jcbollinger  
View profile  
 More options May 18 2012, 9:31 am
From: jcbollinger <John.Bollin...@stJude.org>
Date: Fri, 18 May 2012 06:31:21 -0700 (PDT)
Local: Fri, May 18 2012 9:31 am
Subject: Re: Hiera Questions: Virtual User Resources and Hiera

On May 17, 11:16 pm, Gary Larizza <g...@puppetlabs.com> wrote:

> That's exactly what I was suggesting.  If you declared the users as
> create_resources expected it, and included the same user in multiple levels
> of the hierarchy, the hash merging functionality would leave you with a
> single user declaration.  One caveat (as of right now): you need to declare
> ALL the parameters in ALL the levels of the hierarchy.

That's because hiera hash merging is shallow, right?  That is, every
value in the resulting hash is the exact one given for the associated
key at some level of the hierarchy?  I'm not complaining; I just want
to confirm that I understand correctly.

John


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Gary Larizza  
View profile  
 More options May 18 2012, 10:00 am
From: Gary Larizza <g...@puppetlabs.com>
Date: Fri, 18 May 2012 07:00:27 -0700
Local: Fri, May 18 2012 10:00 am
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera

Yep, Hiera doesn't currently support deep merges.

> John

> --
> You received this message because you are subscribed to the Google Groups
> "Puppet Users" group.
> To post to this group, send email to puppet-users@googlegroups.com<javascript:;>
> .
> To unsubscribe from this group, send email to
> puppet-users+unsubscribe@googlegroups.com <javascript:;>.
> For more options, visit this group at
> http://groups.google.com/group/puppet-users?hl=en.

--

Gary Larizza
Professional Services Engineer
Puppet Labs


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Dan White  
View profile  
 More options May 18 2012, 5:41 pm
From: Dan White <y...@comcast.net>
Date: Fri, 18 May 2012 21:41:41 +0000 (UTC)
Local: Fri, May 18 2012 5:41 pm
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera

----- Luke Bigum <Luke.Bi...@lmax.com> wrote:

Closer, but no cigar yet !

user.pp:
-------------------------
define add_user ( $username, $uid, $ingroups, $info ) {
<clip>

}

define add_virtual_user ( $v_username, $v_uid, $v_ingroups, $v_info ) {
    @add_user { "${name}":
        username => "${v_username}",
        uid      => "${v_uid}",
        ingroups => "${v_ingroups}",
        info     => "${v_info}",
    }
}

-------------------------
/etc/puppet/hierdata/common.yaml:
-------------------------
users:
    beast:
        v_username : beast
        v_uid      : 6666
        v_ingroups :
        v_info     : Let's see if this works
    boo:
        v_username : boo
        v_uid      : 6667
        v_ingroups :
        v_info     : Let's see if this works also

-------------------------

And if I say:
hiera users -c /etc/puppet/hiera.yaml

I get:
{"beast"=>{"v_info"=>"Let's see if this works", "v_username"=>"beast", "v_ingroups"=>nil, "v_uid"=>6666}, "boo"=>{"v_info"=>"Let's see if this works also", "v_username"=>"boo", "v_ingroups"=>nil, "v_uid"=>6667}}

Which is out of order, but everything is there.  That's how hashes are supposed to work !

But when I try to run the catalog with
  $the_users = hiera('users')  or $the_users = hiera_hash('users')
followed by :
  create_resources ( 'add_virtual_user', $the_users )
I get:
  Must pass a parameter or all necessary values at /etc/puppet/manifests/nodes/puppetmaster-node.pp:15 on node puppetmaster.foo.org

“Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us.”
Bill Waterson (Calvin & Hobbes)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Gary Larizza  
View profile  
 More options May 18 2012, 6:16 pm
From: Gary Larizza <g...@puppetlabs.com>
Date: Fri, 18 May 2012 15:16:25 -0700
Local: Fri, May 18 2012 6:16 pm
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera

I wonder if the nil value is not being accepted as 'being passed' - can you
populate the nil value and try again?

--

Gary Larizza
Professional Services Engineer
Puppet Labs


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Luke Bigum  
View profile  
 More options May 21 2012, 4:24 am
From: Luke Bigum <Luke.Bi...@lmax.com>
Date: Mon, 21 May 2012 09:24:07 +0100
Local: Mon, May 21 2012 4:24 am
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera

I agree with Gary, Dan, it's probably the lack of data in the
'v_ingroups' key in your YAML that create_resources() is complaining
about. If it truly can't pass an empty key/val pair you could do
something hacky like use the string "undef" then explicitly check for it
in the define.

define add_virtual_user ( $v_username, $v_uid, $v_ingroups, $v_info ) {
    if ($v_ingroups == "undef") {
        $real_v_ingroups  = undef
    } else {
        $real_v_ingroups = $v_ingroups
    }
    @add_user { "${name}":
        username => "${v_username}",
        uid      => "${v_uid}",
        ingroups => "${real_v_ingroups}",
        info     => "${v_info}",
    }

}

On 18/05/12 23:16, Gary Larizza wrote:

--
Luke Bigum

Information Systems
Ph: +44 (0) 20 3192 2520
luke.bi...@lmax.com | http://www.lmax.com
LMAX, Yellow Building, 1A Nicholas Road, London W11 4AN

FX and CFDs are leveraged products that can result in losses exceeding
your deposit.  They are not suitable for everyone so please ensure you
fully understand the risks involved.  The information in this email is not
directed at residents of the United States of America or any other
jurisdiction where trading in CFDs and/or FX is restricted or prohibited
by local laws or regulations.

The information in this email and any attachment is confidential and is
intended only for the named recipient(s). The email may not be disclosed
or used by any person other than the addressee, nor may it be copied in
any way. If you are not the intended recipient please notify the sender
immediately and delete any copies of this message. Any unauthorised
copying, disclosure or distribution of the material in this e-mail is
strictly forbidden.

LMAX operates a multilateral trading facility.  Authorised and regulated
by the Financial Services Authority (firm registration number 509778) and
is registered in England and Wales (number 06505809).
Our registered address is Yellow Building, 1A Nicholas Road, London, W11
4AN.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jeff McCune  
View profile  
 More options May 21 2012, 7:22 pm
From: Jeff McCune <j...@puppetlabs.com>
Date: Mon, 21 May 2012 16:22:32 -0700
Local: Mon, May 21 2012 7:22 pm
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera

On Mon, May 21, 2012 at 1:24 AM, Luke Bigum <Luke.Bi...@lmax.com> wrote:
>  I agree with Gary, Dan, it's probably the lack of data in the
> 'v_ingroups' key in your YAML that create_resources() is complaining about.
> If it truly can't pass an empty key/val pair you could do something hacky
> like use the string "undef" then explicitly check for it in the define.

> define add_virtual_user ( $v_username, $v_uid, $v_ingroups, $v_info ) {
>    if ($v_ingroups == "undef") {

Do you really mean to be comparing to the string "undef" rather than the
keyword undef (no quotes)?

There's a big difference...

If you want to test if a variable is undefined the best way is to do this:

if ($foo == undef) { notice "\$foo is undef" }
else { notice "\$foo is defined as ${foo}" }

-Jeff


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Luke Bigum  
View profile  
 More options May 22 2012, 5:00 am
From: Luke Bigum <Luke.Bi...@lmax.com>
Date: Tue, 22 May 2012 10:00:27 +0100
Local: Tues, May 22 2012 5:00 am
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera

On 22/05/12 00:22, Jeff McCune wrote:

Yes, unfortunately I did. It's because when using Hiera 0.3 it's a bit
difficult to figure out what a Ruby nil gets passed into Puppet as.
Consider the following manifest using Dan's example YAML (v_ingroups is
a nil value):

----------------
#---
#users:
#   beast:
#       v_username : beast
#       v_uid      : 6666
#       v_ingroups :
#       v_info     : Let's see if this works

define add_virtual_user ( $v_username, $v_uid, $v_ingroups, $v_info ) {
    notify { $name:
        message => "username = ${v_username}, uid = ${v_uid}, ingroups =
${v_ingroups}, info = ${v_info}",
    }

}

$the_users = hiera_hash('users')

notice($the_users["beast"])
notice("prints as ${the_users[beast][v_ingroups]}")

if ($the_users["beast"]["v_ingroups"] == undef) {
   notice("is == undef")

}

if (defined($the_users["beast"]["v_ingroups"])) {
   notice("is not defined")

}

if ($the_users["beast"]["v_ingroups"] == "") {
   notice("is empty string")

}

if (! $the_users["beast"]["v_ingroups"]) {
   notice("is false")

}

if ($the_users["beast"]["v_ingroups"]) {
   notice("is true")

}

if ($the_users["beast"]["v_ingroups"] == nil) {
   notice("is nil?")

}

create_resources('add_virtual_user', $the_users)
---------------

It's not an empty string, it's not undef (but when you print it it comes
out as undef), it's not nil (which doesn't exist in Puppet), it's not
false but it *is* true? I've came across this once before and can't
remember what "nil" actually gets interpreted as.

So if you feed that Puppet hash directly into the create_resources()
function, it complains about a missing parameter:

---------------------
biguml@biguml-laptop:~$ puppet apply test.pp
notice: Scope(Class[main]):
v_usernamebeastv_uid6666v_ingroupsundefv_infoLet's see if this works
notice: Scope(Class[main]): undef
notice: Scope(Class[main]): is true
Must pass a parameter or all necessary values at /home/biguml/test.pp:40
on node biguml-laptop
---------------------

So my suggestion was to explicitly set "undef" as a string in the yaml,
then match on that in the Puppet manifests. It's horrible but would work.

-Luke

--
Luke Bigum

Information Systems
Ph: +44 (0) 20 3192 2520
luke.bi...@lmax.com | http://www.lmax.com
LMAX, Yellow Building, 1A Nicholas Road, London W11 4AN

FX and CFDs are leveraged products that can result in losses exceeding
your deposit.  They are not suitable for everyone so please ensure you
fully understand the risks involved.  The information in this email is not
directed at residents of the United States of America or any other
jurisdiction where trading in CFDs and/or FX is restricted or prohibited
by local laws or regulations.

The information in this email and any attachment is confidential and is
intended only for the named recipient(s). The email may not be disclosed
or used by any person other than the addressee, nor may it be copied in
any way. If you are not the intended recipient please notify the sender
immediately and delete any copies of this message. Any unauthorised
copying, disclosure or distribution of the material in this e-mail is
strictly forbidden.

LMAX operates a multilateral trading facility.  Authorised and regulated
by the Financial Services Authority (firm registration number 509778) and
is registered in England and Wales (number 06505809).
Our registered address is Yellow Building, 1A Nicholas Road, London, W11
4AN.


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Dan White  
View profile  
 More options May 22 2012, 9:04 am
From: Dan White <y...@comcast.net>
Date: Tue, 22 May 2012 13:04:41 +0000 (UTC)
Local: Tues, May 22 2012 9:04 am
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera
I found an answer to this particular issue.  Thanks for the reminder so I can share the answer:

I found the hiera/yaml way to indicate an empty array !
So, to use my earlier example:

users:
  beast:
      username : beast
      uid      : 6666
      ingroups :
          - ''
      info     : Let's see if this works

Then, with a hiera call, I get :

{"beast"=>{"ingroups"=>[""], "uid"=>6666, "username"=>"beast", "info"=>"Let's see if this works"}

I was able to more forward past this problem after figuring that out.

“Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us.”
Bill Waterson (Calvin & Hobbes)

----- Luke Bigum <Luke.Bi...@lmax.com> wrote:


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jeff McCune  
View profile  
 More options May 22 2012, 11:50 am
From: Jeff McCune <j...@puppetlabs.com>
Date: Tue, 22 May 2012 08:50:10 -0700
Local: Tues, May 22 2012 11:50 am
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera

This clearly seems like a bug in puppet and how it is handling Hash values.
I'll take a look more as soon as I get into the office.

-Jeff


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Jeff McCune  
View profile  
 More options May 23 2012, 5:45 pm
From: Jeff McCune <j...@puppetlabs.com>
Date: Wed, 23 May 2012 14:45:58 -0700
Local: Wed, May 23 2012 5:45 pm
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera

OK, I had a look today.  Much of the behavior of hashes and arrays whose
elements are not defined has been resolved in Puppet 3.0.0rc.  If you could
try that out it would help us make sure your problem has actually been
solved in Puppet.

As to how to specify an empty array as the value of a hash key using Hiera
and Puppet, this is the way:

---
  username: beast
  uid: 6666
  ingroups: []
  info: Let's see if this works

Notice it's just an empty set of square braces, no empty string.

> This clearly seems like a bug in puppet and how it is handling Hash
> values. I'll take a look more as soon as I get into the office.

It is a bug, luckily we've fixed it in Puppet 3.0.x.  Please give the
release candidates a try.

-Jeff


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Abhay  
View profile  
 More options Feb 14, 9:15 am
From: Abhay <chrungoo.ab...@gmail.com>
Date: Thu, 14 Feb 2013 06:15:38 -0800 (PST)
Local: Thurs, Feb 14 2013 9:15 am
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera

This issue is still unresolved as of 3.1.0

# hiera -h resources -c /etc/puppet/hiera.yaml
{"webapplication2"=>{"Consumer"=>"undef"},
"webapplication"=>{"Consumer"=>{"2a"=>nil, "1a"=>{"offset"=>"3"},
"3a"=>"undef"}, "indexer"=>nil}}

____hieranil.pp________

$fullhash = hiera_hash(resources)
create_resources(noundefparams,$fullhash)

define noundefparams($Consumer="abc", $indexer="def"){
if $Consumer {  notify {"$Consumer":}   }

}

_________________
]# puppet apply hieranil.pp
Error: Received incomplete information - no value provided for parameter
indexer at /tmp/experiment/hieranil.pp:15 on node puppet-master
Wrapped exception:
Received incomplete information - no value provided for parameter indexer
Error: Received incomplete information - no value provided for parameter
indexer at /tmp/experiment/hieranil.pp:15 on node puppet-master


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Dan White  
View profile  
 More options Feb 14, 10:07 am
From: Dan White <y...@comcast.net>
Date: Thu, 14 Feb 2013 15:07:32 +0000 (UTC)
Local: Thurs, Feb 14 2013 10:07 am
Subject: Re: [Puppet Users] Hiera Questions: Virtual User Resources and Hiera

Great !
Now all I need is some deep hash merging...

“Sometimes I think the surest sign that intelligent life exists elsewhere in the universe is that none of it has tried to contact us.”
Bill Waterson (Calvin & Hobbes)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »