configurationengine/source/cone/carbon/model.py
changeset 3 e7e0ae78773e
parent 0 2e8eeb919028
equal deleted inserted replaced
2:87cfa131b535 3:e7e0ae78773e
    25 Base class for Carbon specific elements.
    25 Base class for Carbon specific elements.
    26 Attributes:
    26 Attributes:
    27 """
    27 """
    28 from cone.public import api, exceptions, container, utils
    28 from cone.public import api, exceptions, container, utils
    29 from cone.confml import model as confmlmodel
    29 from cone.confml import model as confmlmodel
       
    30 from cone.carbon import resourcemapper
    30 
    31 
    31 class ResourceList(object):
    32 class ResourceList(object):
    32     def __init__(self):
    33     def __init__(self):
    33         self.resources = {}
    34         self.resources = {}
    34 
    35 
   118 class CarbonConfiguration(CarbonElement, confmlmodel.ConfmlConfiguration):
   119 class CarbonConfiguration(CarbonElement, confmlmodel.ConfmlConfiguration):
   119     def __init__(self, ref='', **kwargs):
   120     def __init__(self, ref='', **kwargs):
   120         super(CarbonConfiguration, self).__init__(ref, **kwargs)
   121         super(CarbonConfiguration, self).__init__(ref, **kwargs)
   121         if self.meta == None:
   122         if self.meta == None:
   122             self.meta = {}
   123             self.meta = {}
   123         
   124         self.name = kwargs.get('name') or utils.resourceref.remove_ext(utils.resourceref.psplit_ref(self.path)[-1])
   124         self.name                       = kwargs.get('name') or utils.resourceref.remove_ext(utils.resourceref.psplit_ref(self.path)[-1])
   125         if self.type == None:
   125         self.meta.add('type',kwargs.get('type', 'configurationroot'))
   126             self.type = 'configurationroot'
   126         self._version_identifier        = kwargs.get('version_identifier', None)
   127         self._version_identifier = kwargs.get('version_identifier', None)
   127 
   128 
   128     @property
   129     @property
   129     def version_identifier(self):
   130     def version_identifier(self):
   130         if self._version_identifier == None:
   131         if self._version_identifier == None:
   131             dt = datetime.datetime.today()
   132             dt = datetime.datetime.today()
   132             self._version_identifier = "%dwk%02d" % dt.isocalendar()[0:2]
   133             self._version_identifier = "%dwk%02d" % dt.isocalendar()[0:2]
   133         return self._version_identifier
   134         return self._version_identifier
   134 
   135 
   135     @property
   136     def get_type(self):
   136     def type(self):
       
   137         if self.meta and self.meta.get('type'):
   137         if self.meta and self.meta.get('type'):
   138             return self.meta['type']
   138             return self.meta.get_property_by_tag('type').value
   139         else:
   139         else:
   140             return 'configurationroot'
   140             return 'configurationroot'
       
   141         
       
   142     def set_type(self, type):
       
   143         if not self.meta:
       
   144             self.meta = {}
       
   145         self.meta.set_property_by_tag('type',type)
       
   146         
       
   147     def del_type(self):
       
   148         del self.meta['type']
   141     
   149     
       
   150     type = property(get_type, set_type, del_type)
       
   151 
       
   152     def get_version_identifier(self):
       
   153         if self._version_identifier == None:
       
   154             dt = datetime.datetime.today()
       
   155             self._version_identifier = "%dwk%02d" % dt.isocalendar()[0:2]
       
   156         return self._version_identifier
       
   157         
       
   158     def set_version_identifier(self, value):
       
   159         self._version_identifier = value
       
   160         
       
   161     def del_version_identifier(self):
       
   162         del self._version_identifier
       
   163     
       
   164     version_identifier = property(get_version_identifier, set_version_identifier, del_version_identifier)
       
   165 
   142 class FeatureList(CarbonConfiguration):
   166 class FeatureList(CarbonConfiguration):
   143     def __init__(self, ref='', **kwargs):
   167     def __init__(self, ref='', **kwargs):
   144         if not kwargs.get('path'):
   168         if not kwargs.get('path'):
   145             kwargs['path']          = str(kwargs.get('name', '')+'.confml')
   169             if kwargs.get('name'):
   146         kwargs['type'] = 'featurelist'
   170                 kwargs['path']          = str(kwargs.get('name', '')+'.confml')
       
   171             else:
       
   172                 kwargs['path'] = ref
       
   173         
       
   174         pathmapper = resourcemapper.CarbonResourceMapper()
       
   175         tpath = pathmapper.map_confml_resource("featurelist",kwargs['path'])
       
   176         kwargs['path'] = pathmapper.map_carbon_resource(tpath)
       
   177 
   147         super(FeatureList, self).__init__(ref, **kwargs)
   178         super(FeatureList, self).__init__(ref, **kwargs)
   148         self.name                = kwargs.get('name', '')
   179         self._version_identifier = kwargs.get('version_identifier', 'working')
   149         self._version_identifier = kwargs.get('version_identifier', 'WORKING')
   180         self.type = 'featurelist'
       
   181 
       
   182     def _default_object(self, name):
       
   183         return CarbonFeature(name)
   150 
   184 
   151 class CarbonFeature(CarbonElement, confmlmodel.ConfmlSetting):
   185 class CarbonFeature(CarbonElement, confmlmodel.ConfmlSetting):
   152     def __init__(self, ref,**kwargs):
   186     def __init__(self, ref,**kwargs):
   153         ref = utils.resourceref.to_dottedref(ref)
   187         ref = utils.resourceref.to_dottedref(ref)
   154         super(CarbonFeature,self).__init__(ref,**kwargs)
   188         super(CarbonFeature,self).__init__(ref,**kwargs)
   155         
   189         
   156 
   190 
   157 class CarbonSetting(CarbonFeature, confmlmodel.ConfmlSetting):
   191 class CarbonSetting(CarbonFeature, confmlmodel.ConfmlSetting):
   158     pass
   192     def __init__(self, ref,**kwargs):
       
   193         super(CarbonSetting,self).__init__(ref,**kwargs)
       
   194         self.type = 'boolean'
   159 
   195 
   160 class CarbonIntSetting(CarbonFeature, confmlmodel.ConfmlIntSetting):
   196 class CarbonIntSetting(CarbonFeature, confmlmodel.ConfmlIntSetting):
   161     pass
   197     def __init__(self, ref,**kwargs):
       
   198         super(CarbonIntSetting,self).__init__(ref,**kwargs)
       
   199         self.type = 'int'
   162 
   200 
   163 class CarbonBooleanSetting(CarbonFeature, confmlmodel.ConfmlBooleanSetting):
   201 class CarbonBooleanSetting(CarbonFeature, confmlmodel.ConfmlBooleanSetting):
   164     pass
   202     def __init__(self, ref,**kwargs):
       
   203         super(CarbonBooleanSetting,self).__init__(ref,**kwargs)
       
   204         self.type = 'boolean'
   165 
   205 
   166 class CarbonSelectionSetting(CarbonFeature, confmlmodel.ConfmlSelectionSetting):
   206 class CarbonSelectionSetting(CarbonFeature, confmlmodel.ConfmlSelectionSetting):
   167     pass
   207     def __init__(self, ref,**kwargs):
       
   208         super(CarbonSelectionSetting,self).__init__(ref,**kwargs)
       
   209         self.type = 'selection'
   168 
   210 
   169 class CarbonStringSetting(CarbonFeature, confmlmodel.ConfmlSetting):
   211 class CarbonStringSetting(CarbonFeature, confmlmodel.ConfmlSetting):
   170     def __init__(self, ref,**kwargs):
   212     def __init__(self, ref,**kwargs):
   171         super(CarbonStringSetting,self).__init__(ref,**kwargs)
   213         super(CarbonStringSetting,self).__init__(ref,**kwargs)
   172         self.type = 'string'
   214         self.type = 'string'