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

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