Mercurial > hg > orthanc
annotate OrthancServer/Plugins/Samples/Housekeeper/Plugin.cpp @ 5485:48b8dae6dc77
upgrade to year 2024
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 04 Jan 2024 15:10:42 +0100 |
parents | 8345267e8de5 |
children | 6ce05f8b5b13 |
rev | line source |
---|---|
4961 | 1 /** |
2 * Orthanc - A Lightweight, RESTful DICOM Store | |
3 * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics | |
4 * Department, University Hospital of Liege, Belgium | |
5485
48b8dae6dc77
upgrade to year 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5452
diff
changeset
|
5 * Copyright (C) 2017-2024 Osimis S.A., Belgium |
48b8dae6dc77
upgrade to year 2024
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
5452
diff
changeset
|
6 * Copyright (C) 2021-2024 Sebastien Jodogne, ICTEAM UCLouvain, Belgium |
4961 | 7 * |
8 * This program is free software: you can redistribute it and/or | |
9 * modify it under the terms of the GNU General Public License as | |
10 * published by the Free Software Foundation, either version 3 of the | |
11 * License, or (at your option) any later version. | |
12 * | |
13 * This program is distributed in the hope that it will be useful, but | |
14 * WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
16 * General Public License for more details. | |
17 * | |
18 * You should have received a copy of the GNU General Public License | |
19 * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
20 **/ | |
21 | |
22 | |
23 #include "../../../../OrthancFramework/Sources/Compatibility.h" | |
24 #include "../Common/OrthancPluginCppWrapper.h" | |
25 | |
26 #include <boost/thread.hpp> | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
27 #include <boost/algorithm/string.hpp> |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
28 #include <boost/date_time/posix_time/posix_time.hpp> |
4991 | 29 #include <boost/date_time/special_defs.hpp> |
4961 | 30 #include <json/value.h> |
31 #include <json/writer.h> | |
32 #include <string.h> | |
33 #include <iostream> | |
34 #include <algorithm> | |
35 #include <map> | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
36 #include <list> |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
37 #include <time.h> |
4961 | 38 |
39 static int globalPropertyId_ = 0; | |
40 static bool force_ = false; | |
4982
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
41 static unsigned int throttleDelay_ = 0; |
4961 | 42 static std::unique_ptr<boost::thread> workerThread_; |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
43 static bool workerThreadShouldStop_ = false; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
44 static bool triggerOnStorageCompressionChange_ = true; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
45 static bool triggerOnMainDicomTagsChange_ = true; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
46 static bool triggerOnUnnecessaryDicomAsJsonFiles_ = true; |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
47 static bool triggerOnIngestTranscodingChange_ = true; |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
48 static bool triggerOnDicomWebCacheChange_ = true; |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
49 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
50 struct RunningPeriod |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
51 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
52 int fromHour_; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
53 int toHour_; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
54 int weekday_; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
55 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
56 RunningPeriod(const std::string& weekday, const std::string& period) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
57 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
58 if (weekday == "Monday") |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
59 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
60 weekday_ = 1; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
61 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
62 else if (weekday == "Tuesday") |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
63 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
64 weekday_ = 2; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
65 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
66 else if (weekday == "Wednesday") |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
67 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
68 weekday_ = 3; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
69 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
70 else if (weekday == "Thursday") |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
71 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
72 weekday_ = 4; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
73 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
74 else if (weekday == "Friday") |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
75 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
76 weekday_ = 5; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
77 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
78 else if (weekday == "Saturday") |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
79 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
80 weekday_ = 6; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
81 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
82 else if (weekday == "Sunday") |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
83 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
84 weekday_ = 0; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
85 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
86 else |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
87 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
88 OrthancPlugins::LogWarning("Housekeeper: invalid schedule: unknown 'day': " + weekday); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
89 ORTHANC_PLUGINS_THROW_EXCEPTION(BadFileFormat); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
90 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
91 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
92 std::vector<std::string> hours; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
93 boost::split(hours, period, boost::is_any_of("-")); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
94 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
95 fromHour_ = boost::lexical_cast<int>(hours[0]); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
96 toHour_ = boost::lexical_cast<int>(hours[1]); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
97 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
98 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
99 bool isInPeriod() const |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
100 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
101 time_t now = time(NULL); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
102 tm* nowLocalTime = localtime(&now); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
103 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
104 if (nowLocalTime->tm_wday != weekday_) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
105 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
106 return false; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
107 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
108 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
109 if (nowLocalTime->tm_hour >= fromHour_ && nowLocalTime->tm_hour < toHour_) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
110 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
111 return true; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
112 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
113 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
114 return false; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
115 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
116 }; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
117 |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
118 |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
119 struct RunningPeriods |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
120 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
121 std::list<RunningPeriod> runningPeriods_; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
122 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
123 void load(const Json::Value& scheduleConfiguration) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
124 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
125 // "Monday": ["0-6", "20-24"], |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
126 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
127 Json::Value::Members names = scheduleConfiguration.getMemberNames(); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
128 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
129 for (Json::Value::Members::const_iterator it = names.begin(); |
5280 | 130 it != names.end(); ++it) |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
131 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
132 for (Json::Value::ArrayIndex i = 0; i < scheduleConfiguration[*it].size(); i++) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
133 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
134 runningPeriods_.push_back(RunningPeriod(*it, scheduleConfiguration[*it][i].asString())); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
135 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
136 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
137 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
138 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
139 bool isInPeriod() |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
140 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
141 if (runningPeriods_.size() == 0) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
142 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
143 return true; // if no config: always run |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
144 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
145 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
146 for (std::list<RunningPeriod>::const_iterator it = runningPeriods_.begin(); |
5280 | 147 it != runningPeriods_.end(); ++it) |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
148 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
149 if (it->isInPeriod()) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
150 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
151 return true; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
152 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
153 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
154 return false; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
155 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
156 }; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
157 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
158 RunningPeriods runningPeriods_; |
4961 | 159 |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
160 |
4961 | 161 struct DbConfiguration |
162 { | |
163 std::string orthancVersion; | |
4982
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
164 std::string patientsMainDicomTagsSignature; |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
165 std::string studiesMainDicomTagsSignature; |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
166 std::string seriesMainDicomTagsSignature; |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
167 std::string instancesMainDicomTagsSignature; |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
168 std::string ingestTranscoding; |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
169 std::string dicomWebVersion; |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
170 bool storageCompressionEnabled; |
4961 | 171 |
172 DbConfiguration() | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
173 : storageCompressionEnabled(false) |
4961 | 174 { |
175 } | |
176 | |
177 bool IsDefined() const | |
178 { | |
4982
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
179 return !orthancVersion.empty(); |
4961 | 180 } |
181 | |
182 void Clear() | |
183 { | |
184 orthancVersion.clear(); | |
4982
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
185 patientsMainDicomTagsSignature.clear(); |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
186 studiesMainDicomTagsSignature.clear(); |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
187 seriesMainDicomTagsSignature.clear(); |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
188 instancesMainDicomTagsSignature.clear(); |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
189 ingestTranscoding.clear(); |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
190 dicomWebVersion.clear(); |
4961 | 191 } |
192 | |
193 void ToJson(Json::Value& target) | |
194 { | |
195 if (!IsDefined()) | |
196 { | |
197 target = Json::nullValue; | |
198 } | |
199 else | |
200 { | |
201 Json::Value signatures; | |
202 | |
203 target = Json::objectValue; | |
204 | |
205 // default main dicom tags signature are the one from Orthanc 1.4.2 (last time the list was changed): | |
4982
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
206 signatures["Patient"] = patientsMainDicomTagsSignature; |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
207 signatures["Study"] = studiesMainDicomTagsSignature; |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
208 signatures["Series"] = seriesMainDicomTagsSignature; |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
209 signatures["Instance"] = instancesMainDicomTagsSignature; |
4961 | 210 |
211 target["MainDicomTagsSignature"] = signatures; | |
212 target["OrthancVersion"] = orthancVersion; | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
213 target["StorageCompressionEnabled"] = storageCompressionEnabled; |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
214 target["IngestTranscoding"] = ingestTranscoding; |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
215 target["DicomWebVersion"] = dicomWebVersion; |
4961 | 216 } |
217 } | |
218 | |
219 void FromJson(Json::Value& source) | |
220 { | |
221 if (!source.isNull()) | |
222 { | |
223 orthancVersion = source["OrthancVersion"].asString(); | |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
224 if (source.isMember("DicomWebVersion")) |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
225 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
226 dicomWebVersion = source["DicomWebVersion"].asString(); |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
227 } |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
228 else |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
229 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
230 dicomWebVersion = "1.14"; // the first change that requires processing has been introduced between 1.14 & 1.15 |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
231 } |
4961 | 232 |
233 const Json::Value& signatures = source["MainDicomTagsSignature"]; | |
4982
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
234 patientsMainDicomTagsSignature = signatures["Patient"].asString(); |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
235 studiesMainDicomTagsSignature = signatures["Study"].asString(); |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
236 seriesMainDicomTagsSignature = signatures["Series"].asString(); |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
237 instancesMainDicomTagsSignature = signatures["Instance"].asString(); |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
238 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
239 storageCompressionEnabled = source["StorageCompressionEnabled"].asBool(); |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
240 ingestTranscoding = source["IngestTranscoding"].asString(); |
4961 | 241 } |
242 } | |
243 }; | |
244 | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
245 |
4961 | 246 struct PluginStatus |
247 { | |
248 int statusVersion; | |
249 int64_t lastProcessedChange; | |
250 int64_t lastChangeToProcess; | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
251 boost::posix_time::ptime lastTimeStarted; |
4961 | 252 |
253 DbConfiguration currentlyProcessingConfiguration; // last configuration being processed (has not reached last change yet) | |
254 DbConfiguration lastProcessedConfiguration; // last configuration that has been fully processed (till last change) | |
255 | |
256 PluginStatus() | |
257 : statusVersion(1), | |
258 lastProcessedChange(-1), | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
259 lastChangeToProcess(-1), |
4993 | 260 lastTimeStarted(boost::date_time::not_a_date_time) |
4961 | 261 { |
262 } | |
263 | |
264 void ToJson(Json::Value& target) | |
265 { | |
266 target = Json::objectValue; | |
267 | |
268 target["Version"] = statusVersion; | |
269 target["LastProcessedChange"] = Json::Value::Int64(lastProcessedChange); | |
270 target["LastChangeToProcess"] = Json::Value::Int64(lastChangeToProcess); | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
271 |
4993 | 272 if (lastTimeStarted == boost::date_time::not_a_date_time) |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
273 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
274 target["LastTimeStarted"] = Json::Value::null; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
275 } |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
276 else |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
277 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
278 target["LastTimeStarted"] = boost::posix_time::to_iso_string(lastTimeStarted); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
279 } |
4961 | 280 |
281 currentlyProcessingConfiguration.ToJson(target["CurrentlyProcessingConfiguration"]); | |
282 lastProcessedConfiguration.ToJson(target["LastProcessedConfiguration"]); | |
283 } | |
284 | |
285 void FromJson(Json::Value& source) | |
286 { | |
287 statusVersion = source["Version"].asInt(); | |
288 lastProcessedChange = source["LastProcessedChange"].asInt64(); | |
289 lastChangeToProcess = source["LastChangeToProcess"].asInt64(); | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
290 if (source["LastTimeStarted"].isNull()) |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
291 { |
4993 | 292 lastTimeStarted = boost::date_time::not_a_date_time; |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
293 } |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
294 else |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
295 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
296 lastTimeStarted = boost::posix_time::from_iso_string(source["LastTimeStarted"].asString()); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
297 } |
4961 | 298 |
299 Json::Value& current = source["CurrentlyProcessingConfiguration"]; | |
300 Json::Value& last = source["LastProcessedConfiguration"]; | |
301 | |
302 currentlyProcessingConfiguration.FromJson(current); | |
303 lastProcessedConfiguration.FromJson(last); | |
304 } | |
305 }; | |
306 | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
307 static PluginStatus pluginStatus_; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
308 static boost::recursive_mutex pluginStatusMutex_; |
4961 | 309 |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
310 static void ReadStatusFromDb() |
4961 | 311 { |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
312 boost::recursive_mutex::scoped_lock lock(pluginStatusMutex_); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
313 |
4961 | 314 OrthancPlugins::OrthancString globalPropertyContent; |
315 | |
316 globalPropertyContent.Assign(OrthancPluginGetGlobalProperty(OrthancPlugins::GetGlobalContext(), | |
317 globalPropertyId_, | |
318 "")); | |
319 | |
320 if (!globalPropertyContent.IsNullOrEmpty()) | |
321 { | |
322 Json::Value jsonStatus; | |
323 globalPropertyContent.ToJson(jsonStatus); | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
324 pluginStatus_.FromJson(jsonStatus); |
4961 | 325 } |
326 else | |
327 { | |
328 // default config | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
329 pluginStatus_.statusVersion = 1; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
330 pluginStatus_.lastProcessedChange = -1; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
331 pluginStatus_.lastChangeToProcess = -1; |
4993 | 332 pluginStatus_.lastTimeStarted = boost::date_time::not_a_date_time; |
4961 | 333 |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
334 pluginStatus_.lastProcessedConfiguration.orthancVersion = "1.9.0"; // when we don't know, we assume some files were stored with Orthanc 1.9.0 (last version saving the dicom-as-json files) |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
335 pluginStatus_.lastProcessedConfiguration.dicomWebVersion = "1.14"; // the first change that requires processing has been introduced between 1.14 & 1.15 |
4961 | 336 |
337 // default main dicom tags signature are the one from Orthanc 1.4.2 (last time the list was changed): | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
338 pluginStatus_.lastProcessedConfiguration.patientsMainDicomTagsSignature = "0010,0010;0010,0020;0010,0030;0010,0040;0010,1000"; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
339 pluginStatus_.lastProcessedConfiguration.studiesMainDicomTagsSignature = "0008,0020;0008,0030;0008,0050;0008,0080;0008,0090;0008,1030;0020,000d;0020,0010;0032,1032;0032,1060"; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
340 pluginStatus_.lastProcessedConfiguration.seriesMainDicomTagsSignature = "0008,0021;0008,0031;0008,0060;0008,0070;0008,1010;0008,103e;0008,1070;0018,0010;0018,0015;0018,0024;0018,1030;0018,1090;0018,1400;0020,000e;0020,0011;0020,0037;0020,0105;0020,1002;0040,0254;0054,0081;0054,0101;0054,1000"; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
341 pluginStatus_.lastProcessedConfiguration.instancesMainDicomTagsSignature = "0008,0012;0008,0013;0008,0018;0020,0012;0020,0013;0020,0032;0020,0037;0020,0100;0020,4000;0028,0008;0054,1330"; |
4961 | 342 } |
343 } | |
344 | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
345 static void SaveStatusInDb() |
4961 | 346 { |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
347 boost::recursive_mutex::scoped_lock lock(pluginStatusMutex_); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
348 |
4961 | 349 Json::Value jsonStatus; |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
350 pluginStatus_.ToJson(jsonStatus); |
4961 | 351 |
352 Json::StreamWriterBuilder builder; | |
353 builder.settings_["indentation"] = " "; | |
354 std::string serializedStatus = Json::writeString(builder, jsonStatus); | |
355 | |
356 OrthancPluginSetGlobalProperty(OrthancPlugins::GetGlobalContext(), | |
357 globalPropertyId_, | |
358 serializedStatus.c_str()); | |
359 } | |
360 | |
361 static void GetCurrentDbConfiguration(DbConfiguration& configuration) | |
362 { | |
363 Json::Value signatures; | |
364 Json::Value systemInfo; | |
365 | |
366 OrthancPlugins::RestApiGet(systemInfo, "/system", false); | |
4982
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
367 configuration.patientsMainDicomTagsSignature = systemInfo["MainDicomTags"]["Patient"].asString(); |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
368 configuration.studiesMainDicomTagsSignature = systemInfo["MainDicomTags"]["Study"].asString(); |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
369 configuration.seriesMainDicomTagsSignature = systemInfo["MainDicomTags"]["Series"].asString(); |
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
370 configuration.instancesMainDicomTagsSignature = systemInfo["MainDicomTags"]["Instance"].asString(); |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
371 configuration.storageCompressionEnabled = systemInfo["StorageCompression"].asBool(); |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
372 configuration.ingestTranscoding = systemInfo["IngestTranscoding"].asString(); |
4961 | 373 |
374 configuration.orthancVersion = OrthancPlugins::GetGlobalContext()->orthancVersion; | |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
375 |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
376 Json::Value pluginInfo; |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
377 if (OrthancPlugins::RestApiGet(pluginInfo, "/plugins/dicom-web", false)) |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
378 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
379 configuration.dicomWebVersion = pluginInfo["Version"].asString(); |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
380 } |
4961 | 381 } |
382 | |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
383 static void CheckNeedsProcessing(bool& needsReconstruct, bool& needsReingest, bool& needsDicomWebCaching, const DbConfiguration& current, const DbConfiguration& last) |
4961 | 384 { |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
385 needsReconstruct = false; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
386 needsReingest = false; |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
387 needsDicomWebCaching = false; |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
388 |
4961 | 389 if (!last.IsDefined()) |
390 { | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
391 return; |
4961 | 392 } |
393 | |
394 const char* lastVersion = last.orthancVersion.c_str(); | |
395 | |
396 if (!OrthancPlugins::CheckMinimalVersion(lastVersion, 1, 9, 1)) | |
397 { | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
398 if (triggerOnUnnecessaryDicomAsJsonFiles_) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
399 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
400 OrthancPlugins::LogWarning("Housekeeper: your storage might still contain some dicom-as-json files -> will perform housekeeping"); |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
401 needsReconstruct = true; // the default reconstruct removes the dicom-as-json |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
402 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
403 else |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
404 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
405 OrthancPlugins::LogWarning("Housekeeper: your storage might still contain some dicom-as-json files but the trigger has been disabled"); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
406 } |
4961 | 407 } |
408 | |
4982
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
409 if (last.patientsMainDicomTagsSignature != current.patientsMainDicomTagsSignature) |
4961 | 410 { |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
411 if (triggerOnMainDicomTagsChange_) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
412 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
413 OrthancPlugins::LogWarning("Housekeeper: Patient main dicom tags have changed, -> will perform housekeeping"); |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
414 needsReconstruct = true; |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
415 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
416 else |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
417 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
418 OrthancPlugins::LogWarning("Housekeeper: Patient main dicom tags have changed but the trigger is disabled"); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
419 } |
4961 | 420 } |
421 | |
4982
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
422 if (last.studiesMainDicomTagsSignature != current.studiesMainDicomTagsSignature) |
4961 | 423 { |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
424 if (triggerOnMainDicomTagsChange_) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
425 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
426 OrthancPlugins::LogWarning("Housekeeper: Study main dicom tags have changed, -> will perform housekeeping"); |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
427 needsReconstruct = true; |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
428 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
429 else |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
430 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
431 OrthancPlugins::LogWarning("Housekeeper: Study main dicom tags have changed but the trigger is disabled"); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
432 } |
4961 | 433 } |
434 | |
4982
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
435 if (last.seriesMainDicomTagsSignature != current.seriesMainDicomTagsSignature) |
4961 | 436 { |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
437 if (triggerOnMainDicomTagsChange_) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
438 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
439 OrthancPlugins::LogWarning("Housekeeper: Series main dicom tags have changed, -> will perform housekeeping"); |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
440 needsReconstruct = true; |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
441 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
442 else |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
443 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
444 OrthancPlugins::LogWarning("Housekeeper: Series main dicom tags have changed but the trigger is disabled"); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
445 } |
4961 | 446 } |
447 | |
4982
40fd2a485a84
fix build for older compilers
Sebastien Jodogne <s.jodogne@gmail.com>
parents:
4981
diff
changeset
|
448 if (last.instancesMainDicomTagsSignature != current.instancesMainDicomTagsSignature) |
4961 | 449 { |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
450 if (triggerOnMainDicomTagsChange_) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
451 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
452 OrthancPlugins::LogWarning("Housekeeper: Instance main dicom tags have changed, -> will perform housekeeping"); |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
453 needsReconstruct = true; |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
454 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
455 else |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
456 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
457 OrthancPlugins::LogWarning("Housekeeper: Instance main dicom tags have changed but the trigger is disabled"); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
458 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
459 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
460 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
461 if (current.storageCompressionEnabled != last.storageCompressionEnabled) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
462 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
463 if (triggerOnStorageCompressionChange_) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
464 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
465 if (current.storageCompressionEnabled) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
466 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
467 OrthancPlugins::LogWarning("Housekeeper: storage compression is now enabled -> will perform housekeeping"); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
468 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
469 else |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
470 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
471 OrthancPlugins::LogWarning("Housekeeper: storage compression is now disabled -> will perform housekeeping"); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
472 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
473 |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
474 needsReingest = true; |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
475 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
476 else |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
477 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
478 OrthancPlugins::LogWarning("Housekeeper: storage compression has changed but the trigger is disabled"); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
479 } |
4961 | 480 } |
481 | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
482 if (current.ingestTranscoding != last.ingestTranscoding) |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
483 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
484 if (triggerOnIngestTranscodingChange_) |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
485 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
486 OrthancPlugins::LogWarning("Housekeeper: ingest transcoding has changed -> will perform housekeeping"); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
487 |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
488 needsReingest = true; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
489 } |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
490 else |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
491 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
492 OrthancPlugins::LogWarning("Housekeeper: ingest transcoding has changed but the trigger is disabled"); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
493 } |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
494 } |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
495 |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
496 if (!current.dicomWebVersion.empty()) |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
497 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
498 if (last.dicomWebVersion.empty()) |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
499 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
500 if (triggerOnDicomWebCacheChange_) |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
501 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
502 OrthancPlugins::LogWarning("Housekeeper: DicomWEB plugin is enabled and the housekeeper has never run, you might miss series metadata cache -> will perform housekeeping"); |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
503 } |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
504 needsDicomWebCaching = triggerOnDicomWebCacheChange_; |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
505 } |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
506 else |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
507 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
508 const char* lastDicomWebVersion = last.dicomWebVersion.c_str(); |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
509 |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
510 if (!OrthancPlugins::CheckMinimalVersion(lastDicomWebVersion, 1, 15, 0)) |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
511 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
512 if (triggerOnDicomWebCacheChange_) |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
513 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
514 OrthancPlugins::LogWarning("Housekeeper: DicomWEB plugin might miss series metadata cache -> will perform housekeeping"); |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
515 needsDicomWebCaching = true; |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
516 } |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
517 else |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
518 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
519 OrthancPlugins::LogWarning("Housekeeper: DicomWEB plugin might miss series metadata cache but the trigger has been disabled"); |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
520 } |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
521 } |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
522 } |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
523 } |
4961 | 524 } |
525 | |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
526 static bool ProcessChanges(bool needsReconstruct, bool needsReingest, bool needsDicomWebCaching, const DbConfiguration& currentDbConfiguration) |
4961 | 527 { |
528 Json::Value changes; | |
529 | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
530 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
531 boost::recursive_mutex::scoped_lock lock(pluginStatusMutex_); |
4961 | 532 |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
533 pluginStatus_.currentlyProcessingConfiguration = currentDbConfiguration; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
534 |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
535 OrthancPlugins::RestApiGet(changes, "/changes?since=" + boost::lexical_cast<std::string>(pluginStatus_.lastProcessedChange) + "&limit=100", false); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
536 } |
4961 | 537 |
5223
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
538 if (changes["Changes"].size() > 0) |
4961 | 539 { |
5223
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
540 for (Json::ArrayIndex i = 0; i < changes["Changes"].size(); i++) |
4961 | 541 { |
5223
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
542 const Json::Value& change = changes["Changes"][i]; |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
543 int64_t seq = change["Seq"].asInt64(); |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
544 |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
545 if (change["ChangeType"] == "NewStudy") // some StableStudy might be missing if orthanc was shutdown during a StableAge -> consider only the NewStudy events that can not be missed |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
546 { |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
547 Json::Value result; |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
548 |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
549 if (needsReconstruct) |
5223
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
550 { |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
551 Json::Value request; |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
552 if (needsReingest) |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
553 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
554 request["ReconstructFiles"] = true; |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
555 } |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
556 OrthancPlugins::RestApiPost(result, "/studies/" + change["ID"].asString() + "/reconstruct", request, false); |
5223
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
557 } |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
558 |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
559 if (needsDicomWebCaching) |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
560 { |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
561 Json::Value request; |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
562 OrthancPlugins::RestApiPost(result, "/studies/" + change["ID"].asString() + "/update-dicomweb-cache", request, true); |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
563 } |
5223
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
564 } |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
565 |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
566 { |
5223
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
567 boost::recursive_mutex::scoped_lock lock(pluginStatusMutex_); |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
568 |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
569 pluginStatus_.lastProcessedChange = seq; |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
570 |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
571 if (seq >= pluginStatus_.lastChangeToProcess) // we are done ! |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
572 { |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
573 return true; |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
574 } |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
575 } |
5223
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
576 |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
577 if (change["ChangeType"] == "NewStudy") |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
578 { |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
579 boost::this_thread::sleep(boost::posix_time::milliseconds(throttleDelay_ * 1000)); |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
580 } |
4961 | 581 } |
5223
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
582 } |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
583 else |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
584 { |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
585 // if the change list is empty and Done is true, it means that there is nothing to process anymore |
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
586 if (changes["Done"].asBool()) |
4961 | 587 { |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
588 boost::recursive_mutex::scoped_lock lock(pluginStatusMutex_); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
589 |
5223
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
590 pluginStatus_.lastProcessedChange = changes["Last"].asInt64(); |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
591 |
5223
a47b24f231d0
Fix Housekeeper plugin infinite loop if Orthanc is empty
Alain Mazy <am@osimis.io>
parents:
5185
diff
changeset
|
592 return true; |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
593 } |
4961 | 594 } |
595 | |
596 return false; | |
597 } | |
598 | |
599 | |
600 static void WorkerThread() | |
601 { | |
5452
8345267e8de5
Added OrthancPluginSetCurrentThreadName() in the plugin SDK
Alain Mazy <am@osimis.io>
parents:
5395
diff
changeset
|
602 OrthancPluginSetCurrentThreadName(OrthancPlugins::GetGlobalContext(), "HOUSEKEEPER"); |
8345267e8de5
Added OrthancPluginSetCurrentThreadName() in the plugin SDK
Alain Mazy <am@osimis.io>
parents:
5395
diff
changeset
|
603 |
4961 | 604 DbConfiguration currentDbConfiguration; |
605 | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
606 OrthancPluginLogWarning(OrthancPlugins::GetGlobalContext(), "Starting Housekeeper worker thread"); |
4961 | 607 |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
608 ReadStatusFromDb(); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
609 |
4961 | 610 GetCurrentDbConfiguration(currentDbConfiguration); |
611 | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
612 bool needsReconstruct = false; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
613 bool needsReingest = false; |
5009
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
614 bool needsFullProcessing = false; |
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
615 bool needsProcessing = false; |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
616 bool needsDicomWebCaching = false; |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
617 |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
618 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
619 boost::recursive_mutex::scoped_lock lock(pluginStatusMutex_); |
5009
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
620 |
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
621 // compare with last full processed configuration |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
622 CheckNeedsProcessing(needsReconstruct, needsReingest, needsDicomWebCaching, currentDbConfiguration, pluginStatus_.lastProcessedConfiguration); |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
623 needsFullProcessing = needsReconstruct || needsReingest || needsDicomWebCaching; |
5009
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
624 needsProcessing = needsFullProcessing; |
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
625 |
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
626 // if a processing was in progress, check if the config has changed since |
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
627 if (pluginStatus_.currentlyProcessingConfiguration.IsDefined()) |
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
628 { |
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
629 needsProcessing = true; // since a processing was in progress, we need at least a partial processing |
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
630 |
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
631 bool needsReconstruct2 = false; |
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
632 bool needsReingest2 = false; |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
633 bool needsDicomWebCaching2 = false; |
5009
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
634 |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
635 CheckNeedsProcessing(needsReconstruct2, needsReingest2, needsDicomWebCaching2, currentDbConfiguration, pluginStatus_.currentlyProcessingConfiguration); |
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
636 needsFullProcessing = needsReconstruct2 || needsReingest2 || needsDicomWebCaching2; // if the configuration has changed compared to the config being processed, we need a full processing again |
5009
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
637 } |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
638 } |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
639 |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
640 if (!needsProcessing) |
4961 | 641 { |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
642 OrthancPlugins::LogWarning("Housekeeper: everything has been processed already !"); |
4961 | 643 return; |
644 } | |
645 | |
5009
ed4ceb31bcf8
Housekeeper plugin: Fix resume of previous processing
Alain Mazy <am@osimis.io>
parents:
4993
diff
changeset
|
646 if (force_ || needsFullProcessing) |
4961 | 647 { |
648 if (force_) | |
649 { | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
650 OrthancPlugins::LogWarning("Housekeeper: forcing execution -> will perform housekeeping"); |
4961 | 651 } |
652 else | |
653 { | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
654 OrthancPlugins::LogWarning("Housekeeper: the DB configuration has changed since last run, will reprocess the whole DB !"); |
4961 | 655 } |
656 | |
657 Json::Value changes; | |
658 OrthancPlugins::RestApiGet(changes, "/changes?last", false); | |
659 | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
660 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
661 boost::recursive_mutex::scoped_lock lock(pluginStatusMutex_); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
662 |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
663 pluginStatus_.lastProcessedChange = 0; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
664 pluginStatus_.lastChangeToProcess = changes["Last"].asInt64(); // the last change is the last change at the time we start. We assume that every new ingested file will be constructed correctly |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
665 pluginStatus_.lastTimeStarted = boost::posix_time::microsec_clock::universal_time(); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
666 } |
4961 | 667 } |
668 else | |
669 { | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
670 OrthancPlugins::LogWarning("Housekeeper: the DB configuration has not changed since last run, will continue processing changes"); |
4961 | 671 } |
672 | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
673 bool completed = false; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
674 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
675 boost::recursive_mutex::scoped_lock lock(pluginStatusMutex_); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
676 completed = pluginStatus_.lastChangeToProcess == 0; // if the DB is empty at start, no need to process anyting |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
677 } |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
678 |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
679 bool loggedNotRightPeriodChangeMessage = false; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
680 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
681 while (!workerThreadShouldStop_ && !completed) |
4961 | 682 { |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
683 if (runningPeriods_.isInPeriod()) |
4961 | 684 { |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
685 completed = ProcessChanges(needsReconstruct, needsReingest, needsDicomWebCaching, currentDbConfiguration); |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
686 SaveStatusInDb(); |
4961 | 687 |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
688 if (!completed) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
689 { |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
690 boost::recursive_mutex::scoped_lock lock(pluginStatusMutex_); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
691 |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
692 OrthancPlugins::LogInfo("Housekeeper: processed changes " + |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
693 boost::lexical_cast<std::string>(pluginStatus_.lastProcessedChange) + |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
694 " / " + boost::lexical_cast<std::string>(pluginStatus_.lastChangeToProcess)); |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
695 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
696 boost::this_thread::sleep(boost::posix_time::milliseconds(throttleDelay_ * 100)); // wait 1/10 of the delay between changes |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
697 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
698 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
699 loggedNotRightPeriodChangeMessage = false; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
700 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
701 else |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
702 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
703 if (!loggedNotRightPeriodChangeMessage) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
704 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
705 OrthancPlugins::LogInfo("Housekeeper: entering quiet period"); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
706 loggedNotRightPeriodChangeMessage = true; |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
707 } |
5395
c1037a755cee
housekeeper: added sleep when idle
Alain Mazy <am@osimis.io>
parents:
5376
diff
changeset
|
708 |
c1037a755cee
housekeeper: added sleep when idle
Alain Mazy <am@osimis.io>
parents:
5376
diff
changeset
|
709 boost::this_thread::sleep(boost::posix_time::milliseconds(1000)); |
4961 | 710 } |
711 } | |
712 | |
713 if (completed) | |
714 { | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
715 boost::recursive_mutex::scoped_lock lock(pluginStatusMutex_); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
716 |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
717 pluginStatus_.lastProcessedConfiguration = currentDbConfiguration; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
718 pluginStatus_.currentlyProcessingConfiguration.Clear(); |
4961 | 719 |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
720 pluginStatus_.lastProcessedChange = -1; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
721 pluginStatus_.lastChangeToProcess = -1; |
4961 | 722 |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
723 SaveStatusInDb(); |
4961 | 724 |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
725 OrthancPluginLogWarning(OrthancPlugins::GetGlobalContext(), "Housekeeper: finished processing all changes"); |
4961 | 726 } |
727 } | |
728 | |
729 extern "C" | |
730 { | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
731 OrthancPluginErrorCode GetPluginStatus(OrthancPluginRestOutput* output, |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
732 const char* url, |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
733 const OrthancPluginHttpRequest* request) |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
734 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
735 if (request->method != OrthancPluginHttpMethod_Get) |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
736 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
737 OrthancPlugins::AnswerMethodNotAllowed(output, "GET"); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
738 } |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
739 else |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
740 { |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
741 boost::recursive_mutex::scoped_lock lock(pluginStatusMutex_); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
742 |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
743 Json::Value status; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
744 pluginStatus_.ToJson(status); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
745 |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
746 OrthancPlugins::AnswerJson(status, output); |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
747 } |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
748 |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
749 return OrthancPluginErrorCode_Success; |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
750 } |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
751 |
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
752 |
4961 | 753 OrthancPluginErrorCode OnChangeCallback(OrthancPluginChangeType changeType, |
754 OrthancPluginResourceType resourceType, | |
755 const char* resourceId) | |
756 { | |
757 switch (changeType) | |
758 { | |
759 case OrthancPluginChangeType_OrthancStarted: | |
760 { | |
761 workerThread_.reset(new boost::thread(WorkerThread)); | |
762 return OrthancPluginErrorCode_Success; | |
763 } | |
764 case OrthancPluginChangeType_OrthancStopped: | |
765 { | |
766 if (workerThread_ && workerThread_->joinable()) | |
767 { | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
768 workerThreadShouldStop_ = true; |
4961 | 769 workerThread_->join(); |
770 } | |
771 } | |
772 default: | |
773 return OrthancPluginErrorCode_Success; | |
774 } | |
775 } | |
776 | |
777 ORTHANC_PLUGINS_API int32_t OrthancPluginInitialize(OrthancPluginContext* c) | |
778 { | |
779 OrthancPlugins::SetGlobalContext(c); | |
780 | |
781 /* Check the version of the Orthanc core */ | |
782 if (OrthancPluginCheckVersion(c) == 0) | |
783 { | |
784 OrthancPlugins::ReportMinimalOrthancVersion(ORTHANC_PLUGINS_MINIMAL_MAJOR_NUMBER, | |
785 ORTHANC_PLUGINS_MINIMAL_MINOR_NUMBER, | |
786 ORTHANC_PLUGINS_MINIMAL_REVISION_NUMBER); | |
787 return -1; | |
788 } | |
789 | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
790 OrthancPlugins::LogWarning("Housekeeper plugin is initializing"); |
4961 | 791 OrthancPluginSetDescription(c, "Optimizes your DB and storage."); |
792 | |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
793 OrthancPlugins::OrthancConfiguration orthancConfiguration; |
4961 | 794 |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
795 OrthancPlugins::OrthancConfiguration housekeeper; |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
796 orthancConfiguration.GetSection(housekeeper, "Housekeeper"); |
4961 | 797 |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
798 bool enabled = housekeeper.GetBooleanValue("Enable", false); |
4961 | 799 if (enabled) |
800 { | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
801 /* |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
802 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
803 "Housekeeper": { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
804 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
805 // Enables/disables the plugin |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
806 "Enable": false, |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
807 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
808 // the Global Prooperty ID in which the plugin progress |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
809 // is stored. Must be > 1024 and must not be used by |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
810 // another plugin |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
811 "GlobalPropertyId": 1025, |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
812 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
813 // Forces execution even if the plugin did not detect |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
814 // any changes in configuration |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
815 "Force": false, |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
816 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
817 // Delay (in seconds) between reconstruction of 2 studies |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
818 // This avoids overloading Orthanc with the housekeeping |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
819 // process and leaves room for other operations. |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
820 "ThrottleDelay": 5, |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
821 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
822 // Runs the plugin only at certain period of time. |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
823 // If not specified, the plugin runs all the time |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
824 // Examples: |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
825 // to run between 0AM and 6AM everyday + every night |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
826 // from 8PM to 12PM and 24h a day on the weekend: |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
827 // "Schedule": { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
828 // "Monday": ["0-6", "20-24"], |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
829 // "Tuesday": ["0-6", "20-24"], |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
830 // "Wednesday": ["0-6", "20-24"], |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
831 // "Thursday": ["0-6", "20-24"], |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
832 // "Friday": ["0-6", "20-24"], |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
833 // "Saturday": ["0-24"], |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
834 // "Sunday": ["0-24"] |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
835 // }, |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
836 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
837 // configure events that can trigger a housekeeping processing |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
838 "Triggers" : { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
839 "StorageCompressionChange": true, |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
840 "MainDicomTagsChange": true, |
5376
4ab905749aed
fix Housekeeper plugin triggers configuration
Alain Mazy <am@osimis.io>
parents:
5375
diff
changeset
|
841 "UnnecessaryDicomAsJsonFiles": true, |
4ab905749aed
fix Housekeeper plugin triggers configuration
Alain Mazy <am@osimis.io>
parents:
5375
diff
changeset
|
842 "DicomWebCacheChange": true // new in 1.12.2 |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
843 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
844 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
845 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
846 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
847 */ |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
848 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
849 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
850 globalPropertyId_ = housekeeper.GetIntegerValue("GlobalPropertyId", 1025); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
851 force_ = housekeeper.GetBooleanValue("Force", false); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
852 throttleDelay_ = housekeeper.GetUnsignedIntegerValue("ThrottleDelay", 5); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
853 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
854 if (housekeeper.GetJson().isMember("Triggers")) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
855 { |
5376
4ab905749aed
fix Housekeeper plugin triggers configuration
Alain Mazy <am@osimis.io>
parents:
5375
diff
changeset
|
856 OrthancPlugins::OrthancConfiguration triggers; |
4ab905749aed
fix Housekeeper plugin triggers configuration
Alain Mazy <am@osimis.io>
parents:
5375
diff
changeset
|
857 housekeeper.GetSection(triggers, "Triggers"); |
4ab905749aed
fix Housekeeper plugin triggers configuration
Alain Mazy <am@osimis.io>
parents:
5375
diff
changeset
|
858 triggerOnStorageCompressionChange_ = triggers.GetBooleanValue("StorageCompressionChange", true); |
4988
8fba26292a9f
Housekeeper plugin: finalizing + integration tests ok
Alain Mazy <am@osimis.io>
parents:
4982
diff
changeset
|
859 |
5376
4ab905749aed
fix Housekeeper plugin triggers configuration
Alain Mazy <am@osimis.io>
parents:
5375
diff
changeset
|
860 triggerOnMainDicomTagsChange_ = triggers.GetBooleanValue("MainDicomTagsChange", true); |
4ab905749aed
fix Housekeeper plugin triggers configuration
Alain Mazy <am@osimis.io>
parents:
5375
diff
changeset
|
861 triggerOnUnnecessaryDicomAsJsonFiles_ = triggers.GetBooleanValue("UnnecessaryDicomAsJsonFiles", true); |
4ab905749aed
fix Housekeeper plugin triggers configuration
Alain Mazy <am@osimis.io>
parents:
5375
diff
changeset
|
862 triggerOnIngestTranscodingChange_ = triggers.GetBooleanValue("IngestTranscodingChange", true); |
4ab905749aed
fix Housekeeper plugin triggers configuration
Alain Mazy <am@osimis.io>
parents:
5375
diff
changeset
|
863 triggerOnDicomWebCacheChange_ = triggers.GetBooleanValue("DicomWebCacheChange", true); |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
864 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
865 |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
866 if (housekeeper.GetJson().isMember("Schedule")) |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
867 { |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
868 runningPeriods_.load(housekeeper.GetJson()["Schedule"]); |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
869 } |
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
870 |
4961 | 871 OrthancPluginRegisterOnChangeCallback(c, OnChangeCallback); |
5375
984300e70069
updated Housekeeper plugin to handle DicomWeb cache
Alain Mazy <am@osimis.io>
parents:
5280
diff
changeset
|
872 OrthancPluginRegisterRestCallback(c, "/housekeeper/status", GetPluginStatus); // for backward compatiblity with version 1.11.0 |
5035 | 873 OrthancPluginRegisterRestCallback(c, "/plugins/housekeeper/status", GetPluginStatus); |
4961 | 874 } |
875 else | |
876 { | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
877 OrthancPlugins::LogWarning("Housekeeper plugin is disabled by the configuration file"); |
4961 | 878 } |
879 | |
880 return 0; | |
881 } | |
882 | |
883 | |
884 ORTHANC_PLUGINS_API void OrthancPluginFinalize() | |
885 { | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
886 OrthancPlugins::LogWarning("Housekeeper plugin is finalizing"); |
4961 | 887 } |
888 | |
889 | |
890 ORTHANC_PLUGINS_API const char* OrthancPluginGetName() | |
891 { | |
4979
f316413027fd
renamed DbOptizer into Housekeeper + add Scheduler & triggers
Alain Mazy <am@osimis.io>
parents:
4961
diff
changeset
|
892 return "housekeeper"; |
4961 | 893 } |
894 | |
895 | |
896 ORTHANC_PLUGINS_API const char* OrthancPluginGetVersion() | |
897 { | |
4981 | 898 return HOUSEKEEPER_VERSION; |
4961 | 899 } |
900 } |