1 ################################################################
3 # Module for BuildMonitor DB logging.
25 # update all projects and packages info.
26 print "[", __LINE__, "] SRCSRV_START!\n";
28 my $start_time = BuildMonitorDB::get_cur_time();
29 BuildMonitorDB::initialize_projpack_info($paramRef->{'projpack'});
30 my $elapsed_time = BuildMonitorDB::get_cur_time() - $start_time;
31 print "[",__LINE__,"] took $elapsed_time seconds.\n";
34 sub srcsrv_create_project {
37 my $proj_name = $paramRef->{'project'};
38 my $description = $paramRef->{'description'};
40 print "[", __LINE__, "] create a project ($proj_name, $description)\n";
41 BuildMonitorDB::insert_or_update_project_info($proj_name, $description);
43 if( $proj_name =~ /home:trbs/ ) {
44 # This process is required only for trbs projects.
45 BuildMonitorDB::insert_build_project_table($proj_name);
49 sub srcsrv_update_project {
52 my $proj_name = $paramRef->{'project'};
53 my $description = $paramRef->{'description'};
55 print "[", __LINE__, "] update a project ($proj_name, $description)\n";
56 BuildMonitorDB::insert_or_update_project_info($proj_name, $description);
59 sub srcsrv_delete_project {
62 my $proj_name = $paramRef->{'project'};
64 print "[", __LINE__, "] delete a project ($proj_name )\n";
65 BuildMonitorDB::delete_project_info($proj_name);
68 sub srcsrv_create_package {
71 my $proj_name = $paramRef->{'project'};
72 my $pkg_name = $paramRef->{'package'};
73 my $description = $paramRef->{'description'};
75 print "[", __LINE__, "] create a package ($proj_name, $pkg_name, $description)\n";
76 BuildMonitorDB::insert_or_update_package_info($proj_name, $pkg_name, $description);
79 sub srcsrv_update_package {
82 my $proj_name = $paramRef->{'project'};
83 my $pkg_name = $paramRef->{'package'};
84 my $description = $paramRef->{'description'};
86 print "[", __LINE__, "] update a package ($proj_name, $pkg_name, $description)\n";
87 BuildMonitorDB::insert_or_update_package_info($proj_name, $pkg_name, $description);
90 sub srcsrv_delete_package {
93 my $proj_name = $paramRef->{'project'};
94 my $pkg_name = $paramRef->{'package'};
96 print "[", __LINE__, "] delete a package ($proj_name, $pkg_name)\n";
97 BuildMonitorDB::delete_package_info($proj_name, $pkg_name);
100 sub srcsrv_request_accepted {
103 my $target_proj = $paramRef->{'targetproject'};
104 my $source_proj = $paramRef->{'sourceproject'};
106 print "[", __LINE__, "] request accepted src=$source_proj, target=$target_proj\n";
107 BuildMonitorDB::insert_build_project_table($target_proj);
113 my $proj_name = $paramRef->{'project'};
114 my $repo = $paramRef->{'repository'};
115 my $arch = $paramRef->{'arch'};
116 my $pkg_name = $paramRef->{'package'};
117 my $reason = $paramRef->{'reason'};
121 BuildMonitorDB::package_build_start($config, $proj_name, $repo, $arch, $pkg_name, $reason);
124 sub build_unchanged {
127 my $proj_name = $paramRef->{'project'};
128 my $repo = $paramRef->{'repository'};
129 my $arch = $paramRef->{'arch'};
130 my $pkg_name = $paramRef->{'package'};
131 my $pre_install_time = $paramRef->{'pre_install_time'};
132 my $install_time = $paramRef->{'install_time'};
133 my $main_build_time = $paramRef->{'main_build_time'};
135 my $status = "unchanged";
138 BuildMonitorDB::package_build_finished($config, $proj_name, $repo, $arch, $pkg_name, $status,
139 $pre_install_time, $install_time, $main_build_time);
145 my $proj_name = $paramRef->{'project'};
146 my $repo = $paramRef->{'repository'};
147 my $arch = $paramRef->{'arch'};
148 my $pkg_name = $paramRef->{'package'};
149 my $pre_install_time = $paramRef->{'pre_install_time'};
150 my $install_time = $paramRef->{'install_time'};
151 my $main_build_time = $paramRef->{'main_build_time'};
153 my $status = "succeeded";
156 BuildMonitorDB::package_build_finished($config, $proj_name, $repo, $arch, $pkg_name, $status,
157 $pre_install_time, $install_time, $main_build_time);
163 my $proj_name = $paramRef->{'project'};
164 my $repo = $paramRef->{'repository'};
165 my $arch = $paramRef->{'arch'};
166 my $pkg_name = $paramRef->{'package'};
167 my $pre_install_time = $paramRef->{'pre_install_time'};
168 my $install_time = $paramRef->{'install_time'};
169 my $main_build_time = $paramRef->{'main_build_time'};
171 my $status = "failed";
174 BuildMonitorDB::package_build_finished($config, $proj_name, $repo, $arch, $pkg_name, $status,
175 $pre_install_time, $install_time, $main_build_time);
181 my $proj_name = $paramRef->{'project'};
182 my $repo = $paramRef->{'repository'};
183 my $arch = $paramRef->{'arch'};
184 my $pkg_name = $paramRef->{'package'};
185 my $detail = $paramRef->{'detail'};
187 my $status = "broken";
190 BuildMonitorDB::package_build_status($config, $proj_name, $repo, $arch, $pkg_name, $status, $detail);
193 sub build_unresolvable {
196 my $proj_name = $paramRef->{'project'};
197 my $repo = $paramRef->{'repository'};
198 my $arch = $paramRef->{'arch'};
199 my $pkg_name = $paramRef->{'package'};
200 my $detail = $paramRef->{'detail'};
202 my $status = "unresolvable";
205 BuildMonitorDB::package_build_status($config, $proj_name, $repo, $arch, $pkg_name, $status, $detail);
208 sub repo_publish_state {
211 my $proj_name = $paramRef->{'project'};
212 my $repo = $paramRef->{'repo'};
213 my $state = $paramRef->{'state'};
214 my $arch = $paramRef->{'arch'};
218 if( $state eq "published") {
219 #if published, the project build is finished.
220 BuildMonitorDB::project_build_finished($config, $proj_name, $repo, $arch);
227 my $proj_name = $paramRef->{'project'};
229 BuildMonitorDB::build_project_completed($proj_name);
232 my %event_handlers = (
233 'SRCSRV_START' => \&srcsrv_start,
235 'SRCSRV_CREATE_PROJECT' => \&srcsrv_create_project,
236 'SRCSRV_UPDATE_PROJECT' => \&srcsrv_update_project,
237 'SRCSRV_DELETE_PROJECT' => \&srcsrv_delete_project,
239 'SRCSRV_CREATE_PACKAGE' => \&srcsrv_create_package,
240 'SRCSRV_UPDATE_PACKAGE' => \&srcsrv_update_package,
241 'SRCSRV_DELETE_PACKAGE' => \&srcsrv_delete_package,
243 'SRCSRV_REQUEST_ACCEPTED' => \&srcsrv_request_accepted,
245 'BUILD_START' => \&build_start,
246 'BUILD_UNCHANGED' => \&build_unchanged,
247 'BUILD_SUCCESS' => \&build_success,
248 'BUILD_FAIL' => \&build_fail,
249 'BUILD_BROKEN' => \&build_broken,
250 'BUILD_UNRESOLVABLE' => \&build_unresolvable,
252 'REPO_PUBLISH_STATE' => \&repo_publish_state,
253 'REPO_PUBLISHED' => \&repo_published,
259 my ($self, $type, $paramRef ) = @_;
261 # you should add the statements below to BSConfig.pm
262 #our $notification_plugin = "notify_trbs";
263 #our $trbs_db_conf = "/usr/lib/obs/server/trbs_db.conf";
264 return unless $BSConfig::trbs_db_conf;
266 $g_dbh = BuildMonitorDB::connect_db($BSConfig::trbs_db_conf);
268 print "[", __FILE__, ":",__LINE__, "] BuildMonitorDB::connect_db() failed.\n";
272 my $evhandler = $event_handlers{$type};
274 $evhandler->($paramRef);
276 print "[BuildMonitor] undefined event type: $type\n";