[rt-users] Asset Tracker list in ticket custom field
Tommy Abrahamsson
tab at secu.dk
Mon Jan 7 15:08:25 EST 2008
Hi Matt
We solved it by using a Custom Field, which is populated every night by a cronjob. The cronjob script parses a specific Asset Type, ie Customer, and populates a CF named Customer.
There's a Scrip which creates a link to the Asset automatically when creating a new ticket.
It works great, but may not be as pretty :)
I've attached everything for you here. Hope it works out for you.
Btw. we're using RT 3.6.5.
cronjob
#!/usr/bin/perl
use warnings;
use strict;
use lib qw(/opt/rt3/local/lib /opt/rt3/lib);
use Getopt::Long;
use RT;
use RTx::AssetTracker;
use RTx::AssetTracker::Assets;
use RTx::AssetTracker::Asset;
use RTx::AssetTracker::Types;
use RTx::AssetTracker::Type;
RT::LoadConfig();
RT::Init();
my %args;
GetOptions(\%args, 'field=s', 'update','replace' ,'help', 'verbose');
if ($args{'help'} || !($args{'update'}||$args{'replace'}) ){
help();
exit;
}
# Load customer assets
my $assetobj = RTx::AssetTracker::Assets->new($RT::SystemUser);
$assetobj->FromSQL('Type = "Customers" AND Status != "retired"');
my $cf = RT::CustomField->new(RT->SystemUser);
$cf->Load( $args{'field'} );
unless ( $cf->id ) {
die "Couldn't find that custom field\n";
}
if ( $args{'replace'} ) {
my $values = $cf->Values;
my %map;
# Clear all values
while ( my $value = $values->Next ) {
$value->Delete();
}
}
if ( $args{'update'} || $args{'replace'} ) {
my $values = $cf->Values;
my @current;
$assetobj->First;
while ( my $value = $values->Next ) {
push @current, $value->Name;
}
while (my $asset = $assetobj->Next) {
unless ( grep { $asset eq $_ } @current ) {
print STDERR "Adding " . $asset . "\n" if ($args{'verbose'});
my ( $ret, $val ) = $cf->AddValue( Name => $asset->Name."|".$asset->Id );
}
}
}
print STDERR "Done\n" if ($args{'verbose'});
sub help {
print <<EOF
$0 is a simple RT tool to add values to a custom field.
It takes several arguments:
--field The id or name of the custom field you'd like to work with
--update Add values to this field, but do not prune unused files
--replace Make the custom field contain only the values listed
This script expects a list of potential custom field values,
one per line to be fed to STDIN.
Example:
$0 --field "My CF Name" --update < list_of_values
EOF
}
Scrip "updateCustomerID"
Custom Condition
my $trans = $self->TransactionObj->Type;
# If it's not a Create or CustomField update, then exit
if ( $trans ne 'Create' && $trans ne 'CustomField' ) { return 0; }
Custom Action Cleanup code
my @tmp = split(/\|/, $self->TransactionObj->OldValue);
my $old_value = $tmp[1];
@tmp = split(/\|/, $self->TicketObj->FirstCustomFieldValue('Customer'));
my $new_value = $tmp[1];
my $asset = RTx::AssetTracker::Asset->new($self->CurrentUser);
my ($id,$msg) = $asset->Load($new_value);
if (! $id) {
$RT::Logger->crit("Could not load asset $new_value: $msg");
return 0;
}
($id,$msg) = $self->TicketObj->AddLink(Type => 'RefersTo', Target =>
$asset->URI);
if (! $id) {
$RT::Logger->crit("Could not AddLink: $msg");
return 0;
}
# If the value has changed, then delete old link
if ($old_value ne $new_value && $old_value) {
my ($id,$msg) = $asset->Load($old_value);
($id,$msg) = $self->TicketObj->DeleteLink(Type => 'RefersTo', Target =>
$asset->URI);
if (! $id) {
$RT::Logger->crit("Could not DeleteLink: $msg");
return 0;
}
}
1;
1;
--
Med venlig hilsen / Best regards
Tommy Abrahamsson
----- Original Message -----
From: "Matt Gilstrap" <mgilstrap at rw3.com>
To: rt-users at lists.bestpractical.com
Sent: 7. januar 2008 21:15:28 (GMT+0100) Europe/Berlin
Subject: [rt-users] Asset Tracker list in ticket custom field
I was wondering if anyone has figured out a way to create a custom field in a ticket that lists all of the assets in Asset Tracker. We would like to be able to track changes made to each server in the network and find it cumbersome to have to go to the asset first to create the ticket or to find the asset number and manually add “at://rw3.com/asset/11” to the refers to field. Any ideas, workarounds, complaints, ridicule are much appreciated.
Cheers,
Matt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.bestpractical.com/pipermail/rt-users/attachments/20080107/437b0dda/attachment.htm>
More information about the rt-users
mailing list