package notify_buildmonitor;
use BSConfig;
-use TerminiDB;
+use BuildMonitorDB;
use Data::Dumper;
use strict;
# update all projects and packages info.
print "[", __LINE__, "] SRCSRV_START!\n";
-
- my $start_time = TerminiDB::get_cur_time();
- TerminiDB::initialize_projpack_info($paramRef->{'projpack'});
- my $elapsed_time = TerminiDB::get_cur_time() - $start_time;
+
+ my $start_time = BuildMonitorDB::get_cur_time();
+ BuildMonitorDB::initialize_projpack_info($paramRef->{'projpack'});
+ my $elapsed_time = BuildMonitorDB::get_cur_time() - $start_time;
print "[",__LINE__,"] took $elapsed_time seconds.\n";
}
my $description = $paramRef->{'description'};
print "[", __LINE__, "] create a project ($proj_name, $description)\n";
- TerminiDB::insert_or_update_project_info($proj_name, $description);
+ BuildMonitorDB::insert_or_update_project_info($proj_name, $description);
+
+ if( $proj_name =~ /home:prerelease/ ) {
+ # This process is required only for prerelease projects.
+ BuildMonitorDB::insert_build_project_table($proj_name);
+ }
}
sub srcsrv_update_project {
my $description = $paramRef->{'description'};
print "[", __LINE__, "] update a project ($proj_name, $description)\n";
- TerminiDB::insert_or_update_project_info($proj_name, $description);
+ BuildMonitorDB::insert_or_update_project_info($proj_name, $description);
}
sub srcsrv_delete_project {
my $proj_name = $paramRef->{'project'};
print "[", __LINE__, "] delete a project ($proj_name )\n";
- TerminiDB::delete_project_info($proj_name);
+ BuildMonitorDB::delete_project_info($proj_name);
}
sub srcsrv_create_package {
my $description = $paramRef->{'description'};
print "[", __LINE__, "] create a package ($proj_name, $pkg_name, $description)\n";
- TerminiDB::insert_or_update_package_info($proj_name, $pkg_name, $description);
+ BuildMonitorDB::insert_or_update_package_info($proj_name, $pkg_name, $description);
}
sub srcsrv_update_package {
my $description = $paramRef->{'description'};
print "[", __LINE__, "] update a package ($proj_name, $pkg_name, $description)\n";
- TerminiDB::insert_or_update_package_info($proj_name, $pkg_name, $description);
+ BuildMonitorDB::insert_or_update_package_info($proj_name, $pkg_name, $description);
}
sub srcsrv_delete_package {
my $pkg_name = $paramRef->{'package'};
print "[", __LINE__, "] delete a package ($proj_name, $pkg_name)\n";
- TerminiDB::delete_package_info($proj_name, $pkg_name);
+ BuildMonitorDB::delete_package_info($proj_name, $pkg_name);
+}
+
+sub srcsrv_request_accepted {
+ my ($paramRef) = @_;
+
+ my $target_proj = $paramRef->{'targetproject'};
+ my $source_proj = $paramRef->{'sourceproject'};
+
+ print "[", __LINE__, "] request accepted src=$source_proj, target=$target_proj\n";
+ BuildMonitorDB::insert_build_project_table($target_proj);
}
sub build_start {
my $config = "test";
- TerminiDB::package_build_start($config, $proj_name, $repo, $arch, $pkg_name, $reason);
+ BuildMonitorDB::package_build_start($config, $proj_name, $repo, $arch, $pkg_name, $reason);
}
sub build_unchanged {
my $status = "unchanged";
my $config = "test";
- TerminiDB::package_build_finished($config, $proj_name, $repo, $arch, $pkg_name, $status, $build_result_dir);
+ BuildMonitorDB::package_build_finished($config, $proj_name, $repo, $arch, $pkg_name, $status, $build_result_dir);
}
sub build_success {
my $status = "succeeded";
my $config = "test";
- TerminiDB::package_build_finished($config, $proj_name, $repo, $arch, $pkg_name, $status, $build_result_dir);
+ BuildMonitorDB::package_build_finished($config, $proj_name, $repo, $arch, $pkg_name, $status, $build_result_dir);
}
sub build_fail {
my $status = "failed";
my $config = "test";
- TerminiDB::package_build_finished($config, $proj_name, $repo, $arch, $pkg_name, $status, $build_result_dir);
+ BuildMonitorDB::package_build_finished($config, $proj_name, $repo, $arch, $pkg_name, $status, $build_result_dir);
}
sub build_broken {
my $status = "broken";
my $config = "test";
- TerminiDB::package_build_status($config, $proj_name, $repo, $arch, $pkg_name, $status, $detail);
+ BuildMonitorDB::package_build_status($config, $proj_name, $repo, $arch, $pkg_name, $status, $detail);
}
sub build_unresolvable {
my $status = "unresolvable";
my $config = "test";
- TerminiDB::package_build_status($config, $proj_name, $repo, $arch, $pkg_name, $status, $detail);
+ BuildMonitorDB::package_build_status($config, $proj_name, $repo, $arch, $pkg_name, $status, $detail);
}
sub repo_publish_state {
if( $state eq "published") {
#if published, the project build is finished.
- TerminiDB::project_build_finished($config, $proj_name, $repo, $arch);
+ BuildMonitorDB::project_build_finished($config, $proj_name, $repo, $arch);
}
}
+sub repo_published {
+ my ($paramRef) = @_;
+
+ my $proj_name = $paramRef->{'project'};
+
+ BuildMonitorDB::build_project_completed($proj_name);
+}
+
my %event_handlers = (
'SRCSRV_START' => \&srcsrv_start,
'SRCSRV_UPDATE_PACKAGE' => \&srcsrv_update_package,
'SRCSRV_DELETE_PACKAGE' => \&srcsrv_delete_package,
+ 'SRCSRV_REQUEST_ACCEPTED' => \&srcsrv_request_accepted,
+
'BUILD_START' => \&build_start,
'BUILD_UNCHAGED' => \&build_unchanged,
'BUILD_SUCCESS' => \&build_success,
'BUILD_UNRESOLVABLE' => \&build_unresolvable,
'REPO_PUBLISH_STATE' => \&repo_publish_state,
+ 'REPO_PUBLISHED' => \&repo_published,
);
my $g_dbh = undef;
sub notify() {
my ($self, $type, $paramRef ) = @_;
- #termini_db_conf = "db.conf"
- return unless $BSConfig::termini_db_conf;
+ # you should add the statements below to BSConfig.pm
+ #our $notification_plugin = "notify_buildmonitor";
+ #our $build_monitor_db_conf = "/usr/lib/obs/server/build_monitor_db.conf";
+ return unless $BSConfig::build_monitor_db_conf;
- $g_dbh = TerminiDB::connect_db($BSConfig::termini_db_conf);
+ $g_dbh = BuildMonitorDB::connect_db($BSConfig::build_monitor_db_conf);
if( ! $g_dbh ) {
- print "[", __FILE__, ":",__LINE__, "] TerminiDB::connect_db() failed.\n";
+ print "[", __FILE__, ":",__LINE__, "] BuildMonitorDB::connect_db() failed.\n";
return ;
}
if( $evhandler ) {
$evhandler->($paramRef);
} else {
- print "[TERMINI] undefined event type: $type\n";
+ print "[BuildMonitor] undefined event type: $type\n";
}
}