[rt-users] Help with perl code to resolve all children tickets

2011-01-24 Thread Kenneth Crocker
To list,

I was fooling around with the idea of creating a scrip that would allow the
resolution of a parent ticket to automatically resolve all children tickets.
I thought this would be helpful if a developer had a bunch of
sub-tasks/tickets and they didn't want to go in and "resolve" each one
individually, they could just "resolve" the parent and that would cause a
cascade effect to go ahead and resolve all the children. This is the code I
developed:

# Resolve all Ticket children when the Ticket is resolved

if  (defined($id))
{
 $tickets->FromSQL('Type = "ticket" AND MemberOf="'.$id.'"');
#  Loop thru all Children
 while (my $child = $tickets->Next) {
next unless( $child->Status =~ /^(?:new|open|stalled)$/ );
$RT::Logger->info("Closing associated child");
$child->SetStatus("resolved");

This worked fine except in the situation where a "Child" ticket was also a
"Depends/on" ticket. The cascade stops. Well, that made sense, but I want to
get around that.

So I tried to force it with:

# Resolve all Ticket children when the Ticket is resolved



$child->SetStatus("resolved", 'Force');

This didn't work. The top parent *was resolved*, but no cascade effect to
any of the "child" tickets at all, even when there was no "DependsOn"
relationship.

I looked at the log and it shows the first ticket resolved, but no errors
after that and yet, the children weren't resolved.

Without the "Force", it works just fine, up to the ticket with the
"DependsOn"child.

So  I went to several Perl handbooks (Perl Cookbook by O'Reilly, Perl
for Dummies, etc.) and found nothing on the "Set" command, let alone the
"Force" option.
I went to the RT Essentials book and found nothing.

I am *NOT* a perl programmer, but understand enough basic perl to be able to
clone a scrip or two and modify it with what little perl knowledge(?) I
have.

Obviously, I don't know enough about perl to figure this one out.

Can anyone help me out with some perl clues/instruction here?

Thanks in advance.

Kenn
LBNL


Re: [rt-users] Help with perl code to resolve all children tickets

2011-01-24 Thread Kevin Falcone
On Mon, Jan 24, 2011 at 12:06:02PM -0800, Kenneth Crocker wrote:
>To list,
> 
>I was fooling around with the idea of creating a scrip that would allow 
> the resolution of a
>parent ticket to automatically resolve all children tickets. I thought 
> this would be helpful
>if a developer had a bunch of sub-tasks/tickets and they didn't want to go 
> in and "resolve"
>each one individually, they could just "resolve" the parent and that would 
> cause a cascade
>effect to go ahead and resolve all the children. This is the code I 
> developed:
> 
># Resolve all Ticket children when the Ticket is resolved
> 
>if (defined($id))
>{
>$tickets->FromSQL('Type = "ticket" AND MemberOf="'.$id.'"');
># Loop thru all Children
>while (my $child = $tickets->Next) {
>next unless( $child->Status =~ /^(?:new|open|stalled)$/ );
>$RT::Logger->info("Closing associated child");
>$child->SetStatus("resolved");
> 
>This worked fine except in the situation where a "Child" ticket was also a 
> "Depends/on"
>ticket. The cascade stops. Well, that made sense, but I want to get around 
> that.
> 
>So I tried to force it with:
> 
># Resolve all Ticket children when the Ticket is resolved
> 
>
>
>$child->SetStatus("resolved", 'Force');
> 
>This didn't work. The top parent was resolved, but no cascade effect to 
> any of the "child"
>tickets at all, even when there was no "DependsOn" relationship.
> 
>I looked at the log and it shows the first ticket resolved, but no errors 
> after that and yet,
>the children weren't resolved.
> 
>Without the "Force", it works just fine, up to the ticket with the 
> "DependsOn"child.
> 
>So  I went to several Perl handbooks (Perl Cookbook by O'Reilly, Perl 
> for Dummies, etc.)
>and found nothing on the "Set" command, let alone the "Force" option.
>I went to the RT Essentials book and found nothing.

The relevant documentation is found in perldoc
lib/RT/Ticket_Overlay.pm . You're passing incorrect arguments to
SetStatus

>I am NOT a perl programmer, but understand enough basic perl to be able to 
> clone a scrip or
>two and modify it with what little perl knowledge(?) I have.
> 
>Obviously, I don't know enough about perl to figure this one out.
> 
>Can anyone help me out with some perl clues/instruction here?
> 
>Thanks in advance.
> 
>Kenn
>LBNL


pgpslKFzNB6Db.pgp
Description: PGP signature


Re: [rt-users] Help with perl code to resolve all children tickets

2011-01-25 Thread Kenneth Crocker
Kevin,

AHHH. I'll check it out.

Thanks.

Kenn
LBNL

On Mon, Jan 24, 2011 at 6:59 PM, Kevin Falcone wrote:

> On Mon, Jan 24, 2011 at 12:06:02PM -0800, Kenneth Crocker wrote:
> >To list,
> >
> >I was fooling around with the idea of creating a scrip that would
> allow the resolution of a
> >parent ticket to automatically resolve all children tickets. I thought
> this would be helpful
> >if a developer had a bunch of sub-tasks/tickets and they didn't want
> to go in and "resolve"
> >each one individually, they could just "resolve" the parent and that
> would cause a cascade
> >effect to go ahead and resolve all the children. This is the code I
> developed:
> >
> ># Resolve all Ticket children when the Ticket is resolved
> >
> >if (defined($id))
> >{
> >$tickets->FromSQL('Type = "ticket" AND MemberOf="'.$id.'"');
> ># Loop thru all Children
> >while (my $child = $tickets->Next) {
> >next unless( $child->Status =~ /^(?:new|open|stalled)$/ );
> >$RT::Logger->info("Closing associated child");
> >$child->SetStatus("resolved");
> >
> >This worked fine except in the situation where a "Child" ticket was
> also a "Depends/on"
> >ticket. The cascade stops. Well, that made sense, but I want to get
> around that.
> >
> >So I tried to force it with:
> >
> ># Resolve all Ticket children when the Ticket is resolved
> >
> >
> >
> >$child->SetStatus("resolved", 'Force');
> >
> >This didn't work. The top parent was resolved, but no cascade effect
> to any of the "child"
> >tickets at all, even when there was no "DependsOn" relationship.
> >
> >I looked at the log and it shows the first ticket resolved, but no
> errors after that and yet,
> >the children weren't resolved.
> >
> >Without the "Force", it works just fine, up to the ticket with the
> "DependsOn"child.
> >
> >So  I went to several Perl handbooks (Perl Cookbook by O'Reilly,
> Perl for Dummies, etc.)
> >and found nothing on the "Set" command, let alone the "Force" option.
> >I went to the RT Essentials book and found nothing.
>
> The relevant documentation is found in perldoc
> lib/RT/Ticket_Overlay.pm . You're passing incorrect arguments to
> SetStatus
>
> >I am NOT a perl programmer, but understand enough basic perl to be
> able to clone a scrip or
> >two and modify it with what little perl knowledge(?) I have.
> >
> >Obviously, I don't know enough about perl to figure this one out.
> >
> >Can anyone help me out with some perl clues/instruction here?
> >
> >Thanks in advance.
> >
> >Kenn
> >LBNL
>