@@ -7,6 +7,10 import sys | |||||
7 | import ast |
|
7 | import ast | |
8 | import datetime |
|
8 | import datetime | |
9 | import traceback |
|
9 | import traceback | |
|
10 | import math | |||
|
11 | import time | |||
|
12 | from multiprocessing import Process, Queue, cpu_count | |||
|
13 | ||||
10 | import schainpy |
|
14 | import schainpy | |
11 | import schainpy.admin |
|
15 | import schainpy.admin | |
12 | from schainpy.utils.log import logToFile |
|
16 | from schainpy.utils.log import logToFile | |
@@ -14,11 +18,11 from schainpy.utils.log import logToFile | |||||
14 | from xml.etree.ElementTree import ElementTree, Element, SubElement, tostring |
|
18 | from xml.etree.ElementTree import ElementTree, Element, SubElement, tostring | |
15 | from xml.dom import minidom |
|
19 | from xml.dom import minidom | |
16 |
|
20 | |||
17 | from multiprocessing import cpu_count |
|
|||
18 | from schainpy.model import * |
|
21 | from schainpy.model import * | |
19 | from time import sleep |
|
22 | from time import sleep | |
20 |
|
23 | |||
21 |
|
24 | |||
|
25 | ||||
22 | def prettify(elem): |
|
26 | def prettify(elem): | |
23 | """Return a pretty-printed XML string for the Element. |
|
27 | """Return a pretty-printed XML string for the Element. | |
24 | """ |
|
28 | """ | |
@@ -100,6 +104,9 class ParameterConf(): | |||||
100 |
|
104 | |||
101 | return self.__formated_value |
|
105 | return self.__formated_value | |
102 |
|
106 | |||
|
107 | if format == 'obj': | |||
|
108 | return value | |||
|
109 | ||||
103 | if format == 'str': |
|
110 | if format == 'str': | |
104 | self.__formated_value = str(value) |
|
111 | self.__formated_value = str(value) | |
105 | return self.__formated_value |
|
112 | return self.__formated_value | |
@@ -217,9 +224,11 class ParameterConf(): | |||||
217 | self.id = str(new_id) |
|
224 | self.id = str(new_id) | |
218 |
|
225 | |||
219 | def setup(self, id, name, value, format='str'): |
|
226 | def setup(self, id, name, value, format='str'): | |
220 |
|
||||
221 | self.id = str(id) |
|
227 | self.id = str(id) | |
222 | self.name = name |
|
228 | self.name = name | |
|
229 | if format == 'obj': | |||
|
230 | self.value = value | |||
|
231 | else: | |||
223 | self.value = str(value) |
|
232 | self.value = str(value) | |
224 | self.format = str.lower(format) |
|
233 | self.format = str.lower(format) | |
225 |
|
234 | |||
@@ -234,7 +243,7 class ParameterConf(): | |||||
234 | self.format = format |
|
243 | self.format = format | |
235 |
|
244 | |||
236 | def makeXml(self, opElement): |
|
245 | def makeXml(self, opElement): | |
237 |
|
246 | if self.name not in ('queue',): | ||
238 | parmElement = SubElement(opElement, self.ELEMENTNAME) |
|
247 | parmElement = SubElement(opElement, self.ELEMENTNAME) | |
239 | parmElement.set('id', str(self.id)) |
|
248 | parmElement.set('id', str(self.id)) | |
240 | parmElement.set('name', self.name) |
|
249 | parmElement.set('name', self.name) | |
@@ -332,6 +341,19 class OperationConf(): | |||||
332 |
|
341 | |||
333 | return value |
|
342 | return value | |
334 |
|
343 | |||
|
344 | ||||
|
345 | def getKwargs(self): | |||
|
346 | ||||
|
347 | kwargs = {} | |||
|
348 | ||||
|
349 | for parmConfObj in self.parmConfObjList: | |||
|
350 | if self.name == 'run' and parmConfObj.name == 'datatype': | |||
|
351 | continue | |||
|
352 | ||||
|
353 | kwargs[parmConfObj.name] = parmConfObj.getValue() | |||
|
354 | ||||
|
355 | return kwargs | |||
|
356 | ||||
335 | def setup(self, id, name, priority, type): |
|
357 | def setup(self, id, name, priority, type): | |
336 |
|
358 | |||
337 | self.id = str(id) |
|
359 | self.id = str(id) | |
@@ -420,6 +442,7 class OperationConf(): | |||||
420 |
|
442 | |||
421 | def createObject(self, plotter_queue=None): |
|
443 | def createObject(self, plotter_queue=None): | |
422 |
|
444 | |||
|
445 | ||||
423 | if self.type == 'self': |
|
446 | if self.type == 'self': | |
424 | raise ValueError, "This operation type cannot be created" |
|
447 | raise ValueError, "This operation type cannot be created" | |
425 |
|
448 | |||
@@ -431,11 +454,15 class OperationConf(): | |||||
431 | opObj = Plotter(self.name, plotter_queue) |
|
454 | opObj = Plotter(self.name, plotter_queue) | |
432 |
|
455 | |||
433 | if self.type == 'external' or self.type == 'other': |
|
456 | if self.type == 'external' or self.type == 'other': | |
|
457 | ||||
434 | className = eval(self.name) |
|
458 | className = eval(self.name) | |
435 | opObj = className() |
|
459 | kwargs = self.getKwargs() | |
|
460 | ||||
|
461 | opObj = className(**kwargs) | |||
436 |
|
462 | |||
437 | return opObj |
|
463 | return opObj | |
438 |
|
464 | |||
|
465 | ||||
439 | class ProcUnitConf(): |
|
466 | class ProcUnitConf(): | |
440 |
|
467 | |||
441 | id = None |
|
468 | id = None | |
@@ -635,19 +662,32 class ProcUnitConf(): | |||||
635 | for opConfObj in self.opConfObjList: |
|
662 | for opConfObj in self.opConfObjList: | |
636 | opConfObj.printattr() |
|
663 | opConfObj.printattr() | |
637 |
|
664 | |||
|
665 | ||||
|
666 | def getKwargs(self): | |||
|
667 | ||||
|
668 | opObj = self.opConfObjList[0] | |||
|
669 | kwargs = opObj.getKwargs() | |||
|
670 | ||||
|
671 | return kwargs | |||
|
672 | ||||
638 | def createObjects(self, plotter_queue=None): |
|
673 | def createObjects(self, plotter_queue=None): | |
639 |
|
674 | |||
640 | className = eval(self.name) |
|
675 | className = eval(self.name) | |
641 | procUnitObj = className() |
|
676 | kwargs = self.getKwargs() | |
|
677 | procUnitObj = className(**kwargs) | |||
642 |
|
678 | |||
643 | for opConfObj in self.opConfObjList: |
|
679 | for opConfObj in self.opConfObjList: | |
644 |
|
680 | |||
645 |
if opConfObj.type |
|
681 | if opConfObj.type=='self' and self.name=='run': | |
|
682 | continue | |||
|
683 | elif opConfObj.type=='self': | |||
|
684 | procUnitObj.addOperationKwargs(opConfObj.id, **opConfObj.getKwargs()) | |||
646 | continue |
|
685 | continue | |
647 |
|
686 | |||
648 | opObj = opConfObj.createObject(plotter_queue) |
|
687 | opObj = opConfObj.createObject(plotter_queue) | |
649 |
|
688 | |||
650 | self.opObjDict[opConfObj.id] = opObj |
|
689 | self.opObjDict[opConfObj.id] = opObj | |
|
690 | ||||
651 | procUnitObj.addOperation(opObj, opConfObj.id) |
|
691 | procUnitObj.addOperation(opObj, opConfObj.id) | |
652 |
|
692 | |||
653 | self.procUnitObj = procUnitObj |
|
693 | self.procUnitObj = procUnitObj | |
@@ -733,14 +773,13 class ReadUnitConf(ProcUnitConf): | |||||
733 | name = datatype |
|
773 | name = datatype | |
734 | else: |
|
774 | else: | |
735 | name = '%sReader' %(datatype) |
|
775 | name = '%sReader' %(datatype) | |
736 |
|
||||
737 | if datatype==None: |
|
776 | if datatype==None: | |
738 | datatype = name.replace('Reader','') |
|
777 | datatype = name.replace('Reader','') | |
739 |
|
778 | |||
740 | self.id = id |
|
779 | self.id = id | |
741 | self.name = name |
|
780 | self.name = name | |
742 | self.datatype = datatype |
|
781 | self.datatype = datatype | |
743 |
|
782 | if path != '': | ||
744 | self.path = os.path.abspath(path) |
|
783 | self.path = os.path.abspath(path) | |
745 | self.startDate = startDate |
|
784 | self.startDate = startDate | |
746 | self.endDate = endDate |
|
785 | self.endDate = endDate | |
@@ -749,7 +788,8 class ReadUnitConf(ProcUnitConf): | |||||
749 |
|
788 | |||
750 | self.inputId = '0' |
|
789 | self.inputId = '0' | |
751 | self.parentId = parentId |
|
790 | self.parentId = parentId | |
752 |
|
791 | self.queue = queue | ||
|
792 | self.server = server | |||
753 | self.addRunOperation(**kwargs) |
|
793 | self.addRunOperation(**kwargs) | |
754 |
|
794 | |||
755 | def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs): |
|
795 | def update(self, datatype, path, startDate, endDate, startTime, endTime, parentId=None, name=None, **kwargs): | |
@@ -791,15 +831,19 class ReadUnitConf(ProcUnitConf): | |||||
791 |
|
831 | |||
792 | opObj = self.addOperation(name = 'run', optype = 'self') |
|
832 | opObj = self.addOperation(name = 'run', optype = 'self') | |
793 |
|
833 | |||
|
834 | if self.server is None: | |||
794 | opObj.addParameter(name='datatype' , value=self.datatype, format='str') |
|
835 | opObj.addParameter(name='datatype' , value=self.datatype, format='str') | |
795 | opObj.addParameter(name='path' , value=self.path, format='str') |
|
836 | opObj.addParameter(name='path' , value=self.path, format='str') | |
796 | opObj.addParameter(name='startDate' , value=self.startDate, format='date') |
|
837 | opObj.addParameter(name='startDate' , value=self.startDate, format='date') | |
797 | opObj.addParameter(name='endDate' , value=self.endDate, format='date') |
|
838 | opObj.addParameter(name='endDate' , value=self.endDate, format='date') | |
798 | opObj.addParameter(name='startTime' , value=self.startTime, format='time') |
|
839 | opObj.addParameter(name='startTime' , value=self.startTime, format='time') | |
799 | opObj.addParameter(name='endTime' , value=self.endTime, format='time') |
|
840 | opObj.addParameter(name='endTime' , value=self.endTime, format='time') | |
800 |
|
841 | opObj.addParameter(name='queue' , value=self.queue, format='obj') | ||
801 | for key, value in kwargs.items(): |
|
842 | for key, value in kwargs.items(): | |
802 | opObj.addParameter(name=key, value=value, format=type(value).__name__) |
|
843 | opObj.addParameter(name=key, value=value, format=type(value).__name__) | |
|
844 | else: | |||
|
845 | opObj.addParameter(name='server' , value=self.server, format='str') | |||
|
846 | ||||
803 |
|
847 | |||
804 | return opObj |
|
848 | return opObj | |
805 |
|
849 |
General Comments 0
You need to be logged in to leave comments.
Login now