5 =head1 NAME $RCSfile: Baseline.pl,v $
7 This trigger will update CCDB when baselines are completed or removed.
15 Andrew DeFaria <Andrew@ClearSCM.com>
23 Fri Mar 11 17:45:57 PST 2011
27 $Date: 2011/04/02 00:29:15 $
33 This trigger will update the CCDB when UCM baselines are completed or removed.
34 It is implemented as a post operation trigger on the mkbl_complete and rmbl
35 Clearcase operations. It should be attached to all UCM vobs (i.e. pvobs) that
36 you wish CCDB to monitor. If using mktriggers.pl the trigger defintion is:
38 Trigger: CCDB_BASELINE
39 Description: Updates CCDB when baselines are completed or removed
41 Opkinds: -postop mkbl_complete,rmbl
55 $Data::Dumper::Indent = 0;
57 use lib $FindBin::Bin, "$FindBin::Bin/../lib", "$FindBin::Bin/../../lib";
59 # I would like to use Clearcase but doing so causes a problem when the trigger
60 # is run from Clearcase Explorer - something about my use of open3 :-(
65 triglog 'Starting trigger';
67 TriggerUtils::dumpenv;
69 my $VERSION = '$Revision: 1.6 $';
70 ($VERSION) = ($VERSION =~ /\$Revision: (.*) /);
72 my $CCDBService = CCDBService->new;
74 trigdie 'Unable to connect to CCDBService', 1
75 unless $CCDBService->connectToServer;
77 my ($err, $msg, $request);
79 triglog "CLEARCASE_OP_KIND: $ENV{CLEARCASE_OP_KIND}";
81 foreach (split / /, $ENV{CLEARCASE_BASELINES}) {
82 my ($name, $pvob) = split /\@/;
84 trigdie 'Baseline name not known', 1
87 trigdie 'Pvob name not known', 1
90 triglog "Processing Baseline: $name\@$pvob";
92 my $pvobName = vobname $pvob;
94 if ($ENV{CLEARCASE_OP_KIND} eq 'mkbl_complete') {
95 triglog "Hit mkbl_complete!";
97 TriggerUtils::dumpenv;
99 my $cmd = "lsbl -fmt \"%[activities]p\" $name\@$pvob";
101 my @output = `cleartool $cmd`; chomp @output;
104 trigdie "Unable to execute $cmd (Status: $status)\n"
105 . join ("\n", @output), $status
108 foreach my $activity (split / /, $output[0]) {
109 my $baselineActivityXref = Dumper {
111 activity => $activity,
115 # Squeeze out extra spaces
116 $baselineActivityXref =~ s/ = /=/g;
117 $baselineActivityXref =~ s/ => /=>/g;
119 $request = "AddBaselineActivityXref $baselineActivityXref";
121 triglog "Executing the request: $request";
123 ($err, $msg) = $CCDBService->execute ($request);
125 trigdie "Baseline: Unable to execute request: $request\n"
126 . join ("\n", @$msg), $err
131 } elsif ($ENV{CLEARCASE_OP_KIND} eq 'mkbl') {
132 my $baseline = Dumper {
137 # Squeeze out extra spaces
138 $baseline =~ s/ = /=/g;
139 $baseline =~ s/ => /=>/g;
141 $request = "AddBaseline $baseline";
143 triglog "Executing request: $request";
145 ($err, $msg) = $CCDBService->execute ($request);
147 trigdie "Unable to execute request: $request\n"
148 . join ("\n", @$msg), $err
151 my $cmd = "lsstream -fmt \"%[activities]p\" $ENV{CLEARCASE_STREAM}";
153 my @output = `cleartool $cmd`; chomp @output;
156 trigdie "Unable to execute $cmd (Status: $status)\n"
157 . join ("\n", @output), $status
160 foreach (split / /, $output[0]) {
161 my $baselineActivityXref = Dumper {
167 # Squeeze out extra spaces
168 $baselineActivityXref =~ s/ = /=/g;
169 $baselineActivityXref =~ s/ => /=>/g;
171 $request = "AddBaselineActivityXref $baselineActivityXref";
173 triglog "Executing request: $request";
175 ($err, $msg) = $CCDBService->execute ($request);
178 trigdie "Unable to execute request: $request\n"
179 . join ("\n", @$msg), $err
180 unless $err == 0 or $err == 1062;
184 } elsif ($ENV{CLEARCASE_OP_KIND} eq 'rmbl') {
185 $request = "DeleteBaseline $name $pvobName";
188 triglog "Executing request: $request";
190 ($err, $msg) = $CCDBService->execute ($request);
192 trigdie "Unable to execute request: $request\n"
193 . join ("\n", @$msg), $err
197 $CCDBService->disconnectFromServer;
199 triglog 'Ending trigger';
205 =head1 CONFIGURATION AND ENVIRONMENT
207 DEBUG: If set then $debug is set to this level.
209 VERBOSE: If set then $verbose is set to this level.
211 TRACE: If set then $trace is set to this level.
219 L<Data::Dumper|Data::Dumper>
221 =head2 ClearSCM Perl Modules
233 <a href="http://clearscm.com/php/scm_man.php?file=CCDB/lib/CCDBService.pm">CCDBService</a><br>
234 <a href="http://clearscm.com/php/scm_man.php?file=CCDB/triggers/TriggerUtils.pm">TriggerUtils</a><br>
239 =head1 BUGS AND LIMITATIONS
241 There are no known bugs in this script
243 Please report problems to Andrew DeFaria <Andrew@ClearSCM.com>.
245 =head1 LICENSE AND COPYRIGHT
247 Copyright (c) 2011, ClearSCM, Inc. All rights reserved.