Author: thoger
Update of /cvs/fedora/fedora-security/tools/lib/Libexig In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv5798/tools/lib/Libexig
Modified Files: Bugzilla.pm Fedora.pm Log Message: fix handling of bug aliases, which used to break add-tracking-bugs add add-issue comment hint to be printed by add-tracking-bugs
Index: Bugzilla.pm =================================================================== RCS file: /cvs/fedora/fedora-security/tools/lib/Libexig/Bugzilla.pm,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- Bugzilla.pm 18 Jan 2008 16:00:14 -0000 1.5 +++ Bugzilla.pm 25 Aug 2008 06:39:28 -0000 1.6 @@ -115,19 +115,62 @@ my $columns = shift; $columns = [] unless ($columns); # The default set
- my $call = $self->{rpc}->call('bugzilla.runQuery', { - 'bug_id' => $bugs, - 'bug_status' => [], - 'column_list' => $columns, - }, @{$self->{creds}}); + # sort out aliases and bug ids + my @bugs_ids; + my @bugs_aliases; + foreach my $bug (@{ $bugs }) { + if ($bug =~ /^[0-9]+$/) { + push @bugs_ids, $bug; + } else { + push @bugs_aliases, $bug; + } + }
- my $result = $call->result - or die $call->faultstring; + # query bugs ids and aliases separately + my @results; + if (scalar(@bugs_ids) > 0) { + my $call = $self->{rpc}->call('bugzilla.runQuery', { + 'bug_id' => @bugs_ids, + 'bug_status' => [], + 'column_list' => $columns, + }, @{$self->{creds}}); + + my $result = $call->result + or die $call->faultstring; + + print STDERR 'Bugzilla answered to ID runQuery: '.Dumper($result) + if $self->{debug}; + + if (scalar(@bugs_ids) != scalar(@{ $result->{bugs} })) { + die "Bugzilla returned unexpected number of results!"; + }
- print STDERR 'Bugzilla answered to runQuery: '.Dumper($result) - if $self->{debug}; + push @results, @{ $result->{bugs} }; + } + + if (scalar(@bugs_aliases) > 0) { + my $call = $self->{rpc}->call('bugzilla.runQuery', { + 'bug_status' => [], + 'column_list' => $columns, + 'field0-0-0' => 'alias', + 'type0-0-0' => 'anywordssubstr', + 'value0-0-0' => join(" ", @bugs_aliases), + }, @{$self->{creds}}); + + my $result = $call->result + or die $call->faultstring; + + print STDERR 'Bugzilla answered to Alias runQuery: '.Dumper($result) + if $self->{debug}; + + if (scalar(@bugs_aliases) != scalar(@{ $result->{bugs} })) { + die "Bugzilla returned unexpected number of results!"; + } + + push @results, @{ $result->{bugs} }; + }
- return $result->{bugs}; + return @results; }
# Add blockers (unless dryrun) to a bug
Index: Fedora.pm =================================================================== RCS file: /cvs/fedora/fedora-security/tools/lib/Libexig/Fedora.pm,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- Fedora.pm 19 Jun 2008 13:24:29 -0000 1.6 +++ Fedora.pm 25 Aug 2008 06:39:29 -0000 1.7 @@ -133,6 +133,8 @@ 'devel', => 'rawhide', );
+my $rawhide_version= '10'; + sub tracking_bugs { my $bugs = shift; @@ -213,6 +215,9 @@ my $bugzilla = shift; my $component = shift;
+ my @created_bugs; + my @created_versions; + my $comment = "Created Fedora tracking bugs for $component:\n\n";
foreach my $bug (@{$tracking_bugs}) { @@ -240,9 +245,11 @@ }
$bugzilla->add_comment ($bug_id, $tr_comment); + + push @created_versions, $bug->{'version'}; } -# # XXX temporary until F9 BZ component is created -# else { + else { +# # XXX temporary until F9 BZ component is created XXX # my $tr_comment = # 'You can eventually use the following link to '. # 'create the update request for upcoming Fedora 9: '."\n". @@ -257,15 +264,26 @@ # } # # $bugzilla->add_comment ($bug_id, $tr_comment); -# } + + push @created_versions, $rawhide_version; + }
$bugzilla->add_blockers ($bug_id, $parent_bugs); $comment .= $bug->{'version'}.": bug #$bug_id\n"; + + push @created_bugs, $bug_id; }
foreach my $bug (@{$parent_bugs}) { $bugzilla->add_private_comment ($bug, $comment); }
- return $comment; + # Generate also add-issue command hint + my $command_hint= './tools/scripts/add-issue'; + $command_hint.= " --component '".$tracking_bugs->[0]->{'component'}."'"; + $command_hint.= " --bugs ".join(',', @created_bugs); + $command_hint.= " --versions ".join(',', @created_versions); + $command_hint.= " --cve\n"; + + return $comment."\n".$command_hint; }
security-commits@lists.fedoraproject.org