Change Queue

I would like to know if this is the place to ask if someone would write a custom action to be used by rt-crontool?

I would like this custom action to change the queue on a ticket based on the list returned by the query from rt-crontool.

Thanks
Bryon Baker
Network Operations Manager
Copesan - Specialists in Pest Solutions
800-267-3726 . 262-783-6261 ext. 2296
bbaker@copesan.com

“Servicing North America with Local Care”

Ok tried something on my own I copied “SetPriority.pm” module to ChangeQueue.pm and change code to

When I try and execute this with rt-crontool I get

[Thu Sep 26 17:39:21 2013] [critical]: Failed to load module RT::Action::ChangeQueue. () at /usr/bin/rt-crontool line 305. (/usr/lib/perl5/vendor_perl/5.16.2/RT.pm:400)
Failed to load module RT::Action::ChangeQueue. () at /usr/bin/rt-crontool line 305.

I have compared the permissions on both file and everything looks the same.

package RT::Action::ChangeQueue;
use base ‘RT::Action’;

use strict;
use warnings;

#Do what we need to do and send it out.

#What does this type of Action does

sub Describe {
my $self = shift;
return (ref $self . " will set a ticket’s priority to the argument provided.");
}

sub Prepare {
# nothing to prepare
return 1;
}

sub Commit {
my $self = shift;
my $currentqueue = $ticket->Queue;

Did this to validate what is happening before I do it.

print "Current Queue $currentqueue, New Queue $self->Argument\n";  

$self->TicketObj->SetQueue($self->Argument);

}

RT::Base->_ImportOverlays();

1;

Bryon Baker
Network Operations Manager
Copesan - Specialists in Pest Solutions
800-267-3726 . 262-783-6261 ext. 2296
bbaker@copesan.com

“Servicing North America with Local Care”-----Original Message-----
From: rt-users-bounces@lists.bestpractical.com [mailto:rt-users-bounces@lists.bestpractical.com] On Behalf Of Bryon Baker
Sent: Thursday, September 26, 2013 11:54 AM
To: RT Users
Subject: [rt-users] Change Queue

I would like to know if this is the place to ask if someone would write a custom action to be used by rt-crontool?

I would like this custom action to change the queue on a ticket based on the list returned by the query from rt-crontool.

Thanks
Bryon Baker
Network Operations Manager
Copesan - Specialists in Pest Solutions
800-267-3726 . 262-783-6261 ext. 2296
bbaker@copesan.com

“Servicing North America with Local Care”

RT Training in New York, October 8th and 9th: Training — Best Practical Solutions

Ok it looks like rt-crontool is not finding the new module I created.

Where should this new module be located?

Currently it is in the same location as the other modules.
/usr/lib/perl5/vendor_perl/5.16.2/RT/Action

Thanks
Bryon Baker
Network Operations Manager
Copesan - Specialists in Pest Solutions
800-267-3726 . 262-783-6261 ext. 2296
bbaker@copesan.com

“Servicing North America with Local Care”-----Original Message-----
From: rt-users-bounces@lists.bestpractical.com [mailto:rt-users-bounces@lists.bestpractical.com] On Behalf Of Bryon Baker
Sent: Thursday, September 26, 2013 12:46 PM
To: RT Users
Subject: Re: [rt-users] Change Queue

Ok tried something on my own I copied “SetPriority.pm” module to ChangeQueue.pm and change code to

When I try and execute this with rt-crontool I get

[Thu Sep 26 17:39:21 2013] [critical]: Failed to load module RT::Action::ChangeQueue. () at /usr/bin/rt-crontool line 305. (/usr/lib/perl5/vendor_perl/5.16.2/RT.pm:400)
Failed to load module RT::Action::ChangeQueue. () at /usr/bin/rt-crontool line 305.

I have compared the permissions on both file and everything looks the same.

package RT::Action::ChangeQueue;
use base ‘RT::Action’;

use strict;
use warnings;

#Do what we need to do and send it out.

#What does this type of Action does

sub Describe {
my $self = shift;
return (ref $self . " will set a ticket’s priority to the argument provided."); }

sub Prepare {
# nothing to prepare
return 1;
}

sub Commit {
my $self = shift;
my $currentqueue = $ticket->Queue;

Did this to validate what is happening before I do it.

print "Current Queue $currentqueue, New Queue $self->Argument\n";  

$self->TicketObj->SetQueue($self->Argument);

}

RT::Base->_ImportOverlays();

1;

Bryon Baker
Network Operations Manager
Copesan - Specialists in Pest Solutions
800-267-3726 . 262-783-6261 ext. 2296
bbaker@copesan.com

“Servicing North America with Local Care”

-----Original Message-----
From: rt-users-bounces@lists.bestpractical.com [mailto:rt-users-bounces@lists.bestpractical.com] On Behalf Of Bryon Baker
Sent: Thursday, September 26, 2013 11:54 AM
To: RT Users
Subject: [rt-users] Change Queue

I would like to know if this is the place to ask if someone would write a custom action to be used by rt-crontool?

I would like this custom action to change the queue on a ticket based on the list returned by the query from rt-crontool.

Thanks
Bryon Baker
Network Operations Manager
Copesan - Specialists in Pest Solutions
800-267-3726 . 262-783-6261 ext. 2296
bbaker@copesan.com

“Servicing North America with Local Care”

RT Training in New York, October 8th and 9th: Training — Best Practical Solutions

RT Training in New York, October 8th and 9th: Training — Best Practical Solutions

Ok tried something on my own I copied “SetPriority.pm” module to
ChangeQueue.pm and change code to

When I try and execute this with rt-crontool I get

[Thu Sep 26 17:39:21 2013] [critical]: Failed to load module
RT::Action::ChangeQueue. () at /usr/bin/rt-crontool line 305.
(/usr/lib/perl5/vendor_perl/5.16.2/RT.pm:400)
Failed to load module RT::Action::ChangeQueue. () at /usr/bin/rt-crontool
line 305.

I have compared the permissions on both file and everything looks the same.

package RT::Action::ChangeQueue;
use base ‘RT::Action’;

use strict;
use warnings;

#Do what we need to do and send it out.

#What does this type of Action does

sub Describe {
my $self = shift;
return (ref $self . " will set a ticket’s priority to the argument
provided.");

That looks weird… ref $self? That’d probably return “HASH will set
ticket’s…” or something. I’d nuke it entirely anyway since you don’t need
this sub.

sub Prepare {
# nothing to prepare
return 1;
}

Nuke this since you don’t need it.

sub Commit {
my $self = shift;
my $currentqueue = $ticket->Queue;

You haven’t dereferenced $self->TicketObj into $ticket yet above.

Did this to validate what is happening before I do it.

print "Current Queue $currentqueue, New Queue *$self->Argument*\n";

$self->TicketObj->SetQueue($self->Argument);

}

This print line would be interpreted as:
print “Current Queue “.$currentqueue.”, New Queue “.$self.”->Argument\n”;

Probably not what you want…

By the way there might already be an action called SetQueue.pm in your
lib/RT/Actions/ directory.

If you want to keep working on your module though - try this.
This ChangeQueue.pm should be located in /opt/rt4/lib/RT/Action/ or
equivalent. I’ve removed SetQueue() like you did so it won’t actually
modify the ticket.

package RT::Action::ChangeQueue;
use base ‘RT::Action’;

use strict;
use warnings;

sub Commit {
my $self = shift;
my $ticket = $self->TicketObj;
my $cq = $ticket->Queue;
my $nq = $self->Argument;

print "Current Queue $cq, New Queue $nq\n";
# or
print "Current Queue ".$self->TicketObj->Queue.", New Queue

“.$self->Argument.”\n";
# or
print “Current Queue “.$ticket->Queue.”, New Queue
“.$self->Argument.”\n”;
}

RT::Base->_ImportOverlays();

1;

Give this line a new Queue ID# and a ticket # and watch the magic:
/opt/rt4/bin/rt-crontool --search RT::Search::FromSQL --action
RT::Action::ChangeQueue --action-arg “” --transaction first --verbose
–search-arg ‘id = ’

Landon Stewart :: lstewart@iweb.com
Lead Specialist, Abuse and Security Management
Spécialiste principal, gestion des abus et sécurité
http://iweb.com :: +1 (888) 909-4932

Thanks Landon for the tips and info. The suggestions are working great and I am moving on.

Also by the way there is not an action of this type in the actions directory.

Again Thanks

Bryon Baker
Network Operations Manager
Copesan - Specialists in Pest Solutions
800-267-3726 * 262-783-6261 ext. 2296
bbaker@copesan.commailto:cstephan@copesan.com
www.copesan.comhttp://www.copesan.com/
"Servicing North America with Local Care"From: Landon Stewart [mailto:lstewart@iweb.com]
Sent: Thursday, September 26, 2013 5:57 PM
To: Bryon Baker
Cc: RT Users
Subject: Re: [rt-users] Change Queue

Ok tried something on my own I copied “SetPriority.pm” module to ChangeQueue.pm and change code to

When I try and execute this with rt-crontool I get

[Thu Sep 26 17:39:21 2013] [critical]: Failed to load module RT::Action::ChangeQueue. () at /usr/bin/rt-crontool line 305. (/usr/lib/perl5/vendor_perl/5.16.2/RT.pm:400)
Failed to load module RT::Action::ChangeQueue. () at /usr/bin/rt-crontool line 305.

I have compared the permissions on both file and everything looks the same.

package RT::Action::ChangeQueue;
use base ‘RT::Action’;

use strict;
use warnings;

#Do what we need to do and send it out.

#What does this type of Action does

sub Describe {
my $self = shift;
return (ref $self . " will set a ticket’s priority to the argument provided.");

That looks weird… ref $self? That’d probably return “HASH will set ticket’s…” or something. I’d nuke it entirely anyway since you don’t need this sub.

sub Prepare {
# nothing to prepare
return 1;
}

Nuke this since you don’t need it.

sub Commit {
my $self = shift;
my $currentqueue = $ticket->Queue;

You haven’t dereferenced $self->TicketObj into $ticket yet above.

Did this to validate what is happening before I do it.

print "Current Queue $currentqueue, New Queue $self->Argument\n";

$self->TicketObj->SetQueue($self->Argument);

}

This print line would be interpreted as:
print “Current Queue “.$currentqueue.”, New Queue “.$self.”->Argument\n”;

Probably not what you want…

By the way there might already be an action called SetQueue.pm in your lib/RT/Actions/ directory.

If you want to keep working on your module though - try this. This ChangeQueue.pm should be located in /opt/rt4/lib/RT/Action/ or equivalent. I’ve removed SetQueue() like you did so it won’t actually modify the ticket.

package RT::Action::ChangeQueue;
use base ‘RT::Action’;

use strict;
use warnings;

sub Commit {
my $self = shift;
my $ticket = $self->TicketObj;
my $cq = $ticket->Queue;
my $nq = $self->Argument;

print "Current Queue $cq, New Queue $nq\n";
# or
print "Current Queue ".$self->TicketObj->Queue.", New Queue ".$self->Argument."\n";
# or
print "Current Queue ".$ticket->Queue.", New Queue ".$self->Argument."\n";

}

RT::Base->_ImportOverlays();

1;

Give this line a new Queue ID# and a ticket # and watch the magic:
/opt/rt4/bin/rt-crontool --search RT::Search::FromSQL --action RT::Action::ChangeQueue --action-arg “” --transaction first --verbose --search-arg ‘id = ’

Landon Stewart :: lstewart@iweb.commailto:lstewart@iweb.com
Lead Specialist, Abuse and Security Management
Spécialiste principal, gestion des abus et sécurité
http://iweb.com :: +1 (888) 909-4932