notify_buildmonitor.pm is updated from sandbox/jh0822kim/buildmonitor. 62/94762/3
authorJunghyun Kim <jh0822.kim@samsung.com>
Tue, 1 Nov 2016 05:44:24 +0000 (14:44 +0900)
committerJunghyun Kim <jh0822.kim@samsung.com>
Tue, 1 Nov 2016 05:47:22 +0000 (14:47 +0900)
Squashed commit of the following:

FIXED: typo.

commit e9d38f719a5f354e0fa4dd60027d753834a88dfc
Author: Junghyun Kim <jh0822.kim@samsung.com>
Date:   Tue Nov 1 14:42:50 2016 +0900

    comments.

    Change-Id: Ib51433399588df4e64974408e05060ef43193d46
Signed-off-by: Junghyun Kim <jh0822.kim@samsung.com>
commit c1d04df1209d4a1d483fd0e4db217af6564b27c0
Author: Junghyun Kim <jh0822.kim@samsung.com>
Date:   Tue Nov 1 14:35:42 2016 +0900

    db_conf file name changed.

    Change-Id: Ia60586b2e2cd927ce48576fe64a41e2dfe47806e
Signed-off-by: Junghyun Kim <jh0822.kim@samsung.com>
commit e651ad31075bd0fc320bce04d7d19635f6d201c0
Author: Junghyun Kim <jh0822.kim@samsung.com>
Date:   Tue Nov 1 13:42:40 2016 +0900

    Module name changed (TerminiDB -> BuildMonitorDB)

    Change-Id: Iefff0ddde18c6b7cd95db6274ae0e5c058aa630c
Signed-off-by: Junghyun Kim <jh0822.kim@samsung.com>
commit a821ea82932f7de5a540a80706e9afa79f58c8bf
Author: Junghyun Kim <jh0822.kim@samsung.com>
Date:   Tue Oct 25 08:24:19 2016 +0900

    build_project table is owned by OBS from now on.

    Change-Id: I8dedc64537f2fb4c2bb80a77d05e04d30f55e5da
Signed-off-by: Junghyun Kim <jh0822.kim@samsung.com>
Change-Id: I4f06467e58f2fabb8ce2e554c1972879a0ae364e
Signed-off-by: Junghyun Kim <jh0822.kim@samsung.com>
notify_buildmonitor.pm

index 0747a06..018cf6d 100644 (file)
@@ -5,7 +5,7 @@
 package notify_buildmonitor;
 
 use BSConfig;
-use TerminiDB;
+use BuildMonitorDB;
 use Data::Dumper;
 
 use strict;
@@ -21,10 +21,10 @@ sub srcsrv_start {
 
   # 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";
 }
 
@@ -35,7 +35,12 @@ sub srcsrv_create_project {
   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 {
@@ -45,7 +50,7 @@ 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 {
@@ -54,7 +59,7 @@ 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 {
@@ -65,7 +70,7 @@ 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 {
@@ -76,7 +81,7 @@ 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 {
@@ -86,7 +91,17 @@ 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 {
@@ -100,7 +115,7 @@ 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 {
@@ -115,7 +130,7 @@ 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 {
@@ -130,7 +145,7 @@ 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 {
@@ -145,7 +160,7 @@ 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 {
@@ -160,7 +175,7 @@ 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 {
@@ -175,7 +190,7 @@ 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 {
@@ -190,10 +205,18 @@ 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,
 
@@ -205,6 +228,8 @@ my %event_handlers = (
   '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,
@@ -213,6 +238,7 @@ my %event_handlers = (
   'BUILD_UNRESOLVABLE' => \&build_unresolvable,
 
   'REPO_PUBLISH_STATE' => \&repo_publish_state,
+  'REPO_PUBLISHED' => \&repo_published,
 );
 
 my $g_dbh = undef;
@@ -220,12 +246,14 @@ 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 ;
   }
   
@@ -233,7 +261,7 @@ sub notify() {
   if( $evhandler ) {
     $evhandler->($paramRef);
   } else {
-    print "[TERMINI] undefined event type: $type\n";
+    print "[BuildMonitor] undefined event type: $type\n";
   }
 }