Skip to content

Commit

Permalink
Make read/write of params changeable.
Browse files Browse the repository at this point in the history
  • Loading branch information
alenz33 committed Mar 20, 2015
1 parent c2585d4 commit 0f759de
Showing 1 changed file with 32 additions and 17 deletions.
49 changes: 32 additions & 17 deletions conduct/buildsteps.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ class BuildStepMeta(type):
'''

def __new__(mcls, name, bases, attrs):

mcls._mergeDictAttr('parameters', bases, attrs)
mcls._mergeDictAttr('outparameters', bases, attrs)

Expand All @@ -60,30 +59,42 @@ def _mergeDictAttr(mcls, name, bases, attrs):

@classmethod
def _createProperties(mcls, paramDict, attrs):
attrs['_params'] = {}

for name, definition in paramDict.iteritems():
mcls._createProperty(name, definition, attrs)


@classmethod
def _createProperty(mcls, paramName, paramDef, attrs):
capitalParamName = paramName.capitalize()

# set default value for parameter
if paramDef.default is not None:
attrs['_params'][paramName] = paramDef.default

# create parameter read function
def readFunc(self):
if hasattr(self, 'doRead%s' % capitalParamName):
return getattr(self, 'doRead%s' % capitalParamName)()
return self._params[paramName]
readFunc.__name__ = '_readParam%s' % paramName.capitalize()
readFunc.__name__ = '_readParam%s' % capitalParamName

# create parameter write function
def writeFunc(self, value):
try:
self._params[paramName] = paramDef.type(value)
validValue = paramDef.type(value)
if hasattr(self, 'doWrite%s' % capitalParamName):
getattr(self, 'doWrite%s' % capitalParamName)(validValue)
else:
self._params[paramName] = paramDef.type(value)
except ValueError as e:
raise ValueError('Cannot set %s: %s' % (paramName, e))
writeFunc.__name__ = '_writeParam%s' % paramName.capitalize()

writeFunc.__name__ = '_writeParam%s' % capitalParamName
# create parameter property
attrs[paramName] = property(readFunc, writeFunc)






class BuildStep(object):
__metaclass__ = BuildStepMeta

Expand All @@ -99,14 +110,7 @@ def __init__(self, name, paramCfg):

self.name = name

self.initLogger()

def initLogger(self):
self.log = conduct.log.getChild(self.name)

loglevel = self._paramCfg.get('loglevel',
self.parameters['loglevel'].default)
self.log.setLevel(LOGLEVELS[loglevel])
self._initLogger()


def build(self):
Expand Down Expand Up @@ -135,6 +139,17 @@ def build(self):
def run(self, args):
pass

def doWriteLoglevel(self, value):
self.log.setLevel(LOGLEVELS[value])


def _initLogger(self):
self.log = conduct.log.getChild(self.name)

loglevel = self._paramCfg.get('loglevel',
self.parameters['loglevel'].default)
self.log.setLevel(LOGLEVELS[loglevel])


class CopyBS(BuildStep):
parameters = {
Expand Down

0 comments on commit 0f759de

Please sign in to comment.