Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

#!/usr/bin/env python 

 

""" 

@file ion/core/app/app_loader.py 

@author Michael Meisinger 

@brief Management tools for Capability Container releases 

@see OTP design principles: releases 

""" 

 

from twisted.internet import defer 

 

from zope.interface import implements, Interface 

from zope.interface import Attribute 

 

import ion.util.ionlog 

log = ion.util.ionlog.getLogger(__name__) 

 

from ion.core.exception import ConfigurationError 

from ion.util.config import Config 

 

class ReleaseLoader(object): 

    """ 

    Loader for rel files, CC release definitions. 

    """ 

 

    @classmethod 

    def load_rel_definition(cls, filename): 

        rel_def = Config(filename).getObject() 

        if not rel_def or \ 

                not type(rel_def) is dict or \ 

                not rel_def.get('type',None) == 'release': 

            raise ConfigurationError('Not a release configuration') 

 

        newrel = ReleaseDefinition(**rel_def) 

        return newrel 

 

class ReleaseDefinition(object): 

    """ 

    Represents a CC release definition object 

    """ 

    def __init__(self, **kwargs): 

        if not 'name' in kwargs : 

          raise ConfigurationError('Invalid rel configuration: Name missing') 

 

        self.__dict__.update(kwargs) 

 

        if not hasattr(self, "version"): 

            self.version = "" 

        if not hasattr(self, "description"): 

            self.description = "" 

        if not hasattr(self, "ioncore"): 

            self.ioncore = "" 

        if not hasattr(self, "apps"): 

            self.apps = []