annotate galaxy-tools/biobank/updater/change_source_item.py @ 0:e54d14bed3f5 draft default tip

Uploaded
author ric
date Thu, 29 Sep 2016 06:09:15 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
1 # The tool changes the source of an object inside the system.
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
2 # Expected input file format is
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
3 #
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
4 # target new_source
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
5 # V1415515 V1241441
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
6 # V1351124 V1511141
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
7 # .....
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
8 #
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
9 # Where target is the object whose source will be changed with the
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
10 # new_source object. New source type will be specified using the
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
11 # command line option.
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
12
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
13 import csv, argparse, sys, os, json, time
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
14
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
15 from bl.vl.kb import KnowledgeBase as KB
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
16 import bl.vl.utils.ome_utils as vlu
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
17 from bl.vl.utils import get_logger, LOG_LEVELS
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
18 import omero
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
19 import omero.model
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
20
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
21
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
22 def make_parser():
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
23 parser = argparse.ArgumentParser(description='change the source for given items')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
24 parser.add_argument('--logfile', type=str, help='log file (default=stderr)')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
25 parser.add_argument('--loglevel', type=str, choices=LOG_LEVELS,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
26 help='logger level', default='INFO')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
27 parser.add_argument('-H', '--host', type=str, help='omero hostname')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
28 parser.add_argument('-U', '--user', type=str, help='omero user')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
29 parser.add_argument('-P', '--passwd', type=str, help='omero password')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
30 parser.add_argument('--operator', type=str, required=True,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
31 help='operator username')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
32 parser.add_argument('--in_file', type=str, required=True,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
33 help='list of items with new sources')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
34 parser.add_argument('--target_type', type=str, required=True,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
35 help='type of the target objects')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
36 parser.add_argument('--source_type', type=str, required=True,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
37 help='type of the new source objects')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
38 return parser
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
39
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
40
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
41 def do_check(records, targets, sources,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
42 target_type, source_type,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
43 kb, logger):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
44 logger.info('Starting consistency checks')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
45 src_map = dict([(s.id, s) for s in sources])
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
46 trg_map = dict([(t.id, t) for t in targets])
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
47 good_records = []
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
48 targets = {}
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
49 sources = {}
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
50 for i, r in enumerate(records):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
51 if r['target'] not in trg_map:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
52 logger.warning('No %s with ID %s, rejecting record %d' % (target_type,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
53 r['target'], i))
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
54 continue
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
55 if r['new_source'] not in src_map:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
56 logger.warning('No %s with ID %s, rejecting record %d' % (source_type,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
57 r['new_source'], i))
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
58 continue
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
59 targets[r['target']] = trg_map[r['target']]
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
60 sources[r['new_source']] = src_map[r['new_source']]
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
61 good_records.append(r)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
62 logger.info('Done with consistency checks')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
63 return good_records, targets, sources
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
64
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
65
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
66 def update_data(records, targets, sources, operator, act_conf,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
67 kb, logger, batch_size = 500):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
68 def get_chunk(batch_size, records):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
69 offset = 0
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
70 while len(records[offset:]) > 0:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
71 yield records[offset:offset+batch_size]
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
72 offset += batch_size
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
73 dev = get_device(kb, logger)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
74 for i, recs in enumerate(get_chunk(batch_size, records)):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
75 logger.info('Updating batch %d' % i)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
76 batch_to_save = []
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
77 edges_to_delete = []
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
78 for r in recs:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
79 target = targets[r['target']]
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
80 # Build the ActionOnAction backup object
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
81 if not target.lastUpdate:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
82 last_action = target.action
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
83 else:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
84 last_action = target.lastUpdate
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
85 old_action = target.action
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
86 asconf = {'backup' : {'action' : old_action.id}}
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
87 aslabel = 'updater.update_source_item-%f' % time.time()
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
88 backup = build_action(operator, old_action.context,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
89 dev, last_action, aslabel,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
90 asconf, kb, logger)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
91 target.lastUpdate = backup
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
92 # Build the Action in order to attach the new source to
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
93 # the target object
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
94 new_source = sources[r['new_source']]
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
95 if new_source.is_mapped:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
96 new_source.unload()
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
97 asconf = act_conf
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
98 aslabel = 'updater.update_source_item-%f' % time.time()
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
99 new_act = build_action(operator, old_action.context,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
100 dev, new_source, aslabel,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
101 asconf, kb, logger)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
102 target.action = new_act
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
103 if old_action.OME_TABLE == 'Action':
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
104 # no old source, just save the new action
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
105 batch_to_save.append(target)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
106 else:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
107 # check if the old target and the new one are different
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
108 if new_source != old_action.target:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
109 batch_to_save.append(target)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
110 edges_to_delete.append((old_action.target, target))
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
111 if len(batch_to_save) > 0:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
112 kb.save_array(batch_to_save)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
113 else:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
114 logger.info('No record need to be updated')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
115 for vert in edges_to_delete:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
116 kb.dt.destroy_edge(*vert)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
117
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
118
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
119 def build_action(operator, context, device, target,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
120 action_setup_label, action_setup_conf,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
121 kb, logger):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
122 if action_setup_label:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
123 asetup = get_action_setup(action_setup_label, action_setup_conf,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
124 kb, logger)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
125 else:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
126 asetup = None
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
127 aconf = {
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
128 'device' : device,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
129 'actionCategory' : kb.ActionCategory.IMPORT,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
130 'operator' : 'operator',
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
131 'context' : context,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
132 'target' : target,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
133 }
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
134 if asetup:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
135 aconf['setup'] = asetup
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
136 action = kb.factory.create(retrieve_action_type(target, kb), aconf)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
137 return action
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
138
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
139
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
140 def retrieve_action_type(target, kb):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
141 tklass = target.ome_obj.__class__.__name__
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
142 for i, k in enumerate(target.ome_obj.__class__.__mro__):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
143 if k is omero.model.IObject:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
144 tklass = target.ome_obj.__class__.__mro__[i-1].__name__
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
145 if tklass == 'Vessel':
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
146 return kb.ActionOnVessel
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
147 elif tklass == 'Individual':
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
148 return kb.ActionOnIndividual
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
149 elif tklass == 'DataSample':
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
150 return kb.ActionOnDataSample
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
151 elif tklass == 'DataCollectionItem':
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
152 return kb.ActionOnDataCollectionItem
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
153 elif tklass == 'Action':
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
154 return kb.ActionOnAction
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
155 # elif tklass == 'VLCollection':
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
156 # return kb.ActionOnCollection
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
157 else:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
158 raise ValueError('No Action related to %s klass' % tklass)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
159
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
160
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
161 def get_action_setup(label, conf, kb, logger):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
162 asetup_conf = {
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
163 'label' : label,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
164 'conf' : json.dumps(conf),
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
165 }
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
166 asetup = kb.factory.create(kb.ActionSetup, asetup_conf)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
167 return asetup
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
168
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
169
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
170 def get_device(kb, logger):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
171 dev_model = 'UPDATE'
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
172 dev_maker = 'CRS4'
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
173 dev_release = '0.1'
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
174 dev_label = 'updater-%s.update_source_item' % dev_release
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
175 device = kb.get_device(dev_label)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
176 if not device:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
177 logger.debug('No device with label %s, creating one' % dev_label)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
178 conf = {
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
179 'maker' : dev_maker,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
180 'model' : dev_model,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
181 'release' : dev_release,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
182 'label' : dev_label,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
183 }
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
184 device = kb.factory.create(kb.Device, conf).save()
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
185 return device
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
186
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
187
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
188 def find_action_setup_conf(args):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
189 action_setup_conf = {}
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
190 for x in dir(args):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
191 if not (x.startswith('_') or x.startswith('func')):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
192 action_setup_conf[x] = getattr(args, x)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
193 if 'passwd' in action_setup_conf:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
194 action_setup_conf.pop('passwd') # Storing passwords into an
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
195 # Omero obj is not a great idea...
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
196 return action_setup_conf
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
197
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
198
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
199 def main(argv):
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
200 parser = make_parser()
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
201 args = parser.parse_args(argv)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
202
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
203 logger = get_logger('change_source_item', level=args.loglevel,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
204 filename=args.logfile)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
205
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
206 try:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
207 host = args.host or vlu.ome_host()
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
208 user = args.user or vlu.ome_user()
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
209 passwd = args.passwd or vlu.ome_passwd()
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
210 except ValueError, ve:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
211 logger.critical(ve)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
212 sys.exit(ve)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
213
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
214 kb = KB(driver='omero')(host, user, passwd)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
215 logger.info('Loading data from input file')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
216 with open(args.in_file) as f:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
217 reader = csv.DictReader(f, delimiter='\t')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
218 records = list(reader)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
219 logger.info('Loaded %d records' % len(records))
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
220
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
221 logger.info('Loading %s type objects' % args.target_type)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
222 targets = kb.get_objects(getattr(kb, args.target_type))
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
223 logger.info('Loaded %d objects' % len(targets))
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
224 if len(targets) == 0:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
225 msg = 'No targets loaded from the system, nothing to do'
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
226 logger.critical(msg)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
227 sys.exit(msg)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
228
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
229 logger.info('Loading %s type objects' % args.source_type)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
230 sources = kb.get_objects(getattr(kb, args.source_type))
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
231 logger.info('Loaded %d objects' % len(sources))
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
232 if len(sources) == 0:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
233 msg = 'No sources loaded from the system, nothing to do'
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
234 logger.critical(msg)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
235 sys.exit(msg)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
236
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
237 logger.info('Loading Action type objects')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
238 acts = kb.get_objects(kb.Action)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
239 logger.info('Loaded %d objects' % len(acts))
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
240
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
241 records, targets, sources = do_check(records, targets, sources,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
242 args.target_type, args.source_type,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
243 kb, logger)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
244 if len(records) == 0:
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
245 msg = 'No records passed consistency checks, nothing to do'
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
246 logger.critical(msg)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
247 sys.exit(msg)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
248
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
249 aconf = find_action_setup_conf(args)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
250
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
251 update_data(records, targets, sources, args.operator,
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
252 aconf, kb, logger)
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
253
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
254 logger.info('Job completed')
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
255
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
256
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
257 if __name__ == '__main__':
e54d14bed3f5 Uploaded
ric
parents:
diff changeset
258 main(sys.argv[1:])