Advertisement
Guest User

Untitled

a guest
Mar 9th, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. import errno
  2. import sys
  3. import yaml
  4.  
  5. backup_conf="""
  6. loglevel: INFO
  7. username: root
  8. password: globalsecret
  9. destdir: /dsk/bckdir/
  10. avoidprojects:
  11.  
  12. matchregex: /bkp/
  13.  
  14. depots:
  15. server1:
  16. password: asecret
  17.  
  18. server2:
  19. username: root
  20.  
  21. server3:
  22.  
  23. server4:
  24. destdir: /disk2/bkp/
  25.  
  26. projects:
  27. proj1:
  28. matchregex:
  29. - /backups/
  30. - /bkp/
  31. """
  32.  
  33. class Struct:
  34. def __init__(self, **entries):
  35. self.__dict__.update(entries)
  36.  
  37. class Config:
  38.  
  39. def __init__(self, filename="backup.cfg", data=None):
  40. self.cfg = {}
  41. if data is None:
  42. try:
  43. fd = open(filename,'r')
  44. try:
  45. yamlcfg = yaml.safe_load(fd)
  46. except yaml.YAMLError as e:
  47. sys.exit(e.errno)
  48. finally:
  49. fd.close()
  50. except ( IOError, OSError ) as e:
  51. sys.exit(e.errno)
  52. else:
  53. try:
  54. yamlcfg = yaml.safe_load(data)
  55. except yaml.YAMLError as e:
  56. sys.exit(e.errno)
  57.  
  58. self.cfg = Struct(**yamlcfg)
  59.  
  60. def __getattribute__(self, name):
  61. try:
  62. return object.__getattribute__(self, name)
  63. except AttributeError:
  64. return self.cfg.__getattribute__(name)
  65.  
  66.  
  67. def get_depot_param(self,depot,param):
  68. try:
  69. self.depot_param = self.cfg.depots[depot][param]
  70. except ( TypeError, KeyError) as e:
  71. try:
  72. self.depot_param = getattr(self.cfg, param)
  73. except KeyError as e:
  74. sys.exit(e.errno)
  75.  
  76. return self.depot_param
  77.  
  78. def get_project_param(self,project,param):
  79. try:
  80. self.project_param = self.cfg.projects[project][param]
  81. except ( TypeError, KeyError) as e:
  82. try:
  83. self.project_param = getattr(self.cfg, param)
  84. except KeyError as e:
  85. sys.exit(e.errno)
  86.  
  87. return self.project_param
  88.  
  89. def get_project_matches(self,project):
  90. try:
  91. self.reglist = self.cfg.projects[project]['matchregex']
  92. except KeyError as e:
  93. try:
  94. self.reglist = self.cfg.matchregex
  95. except KeyError as e:
  96. print "Error in configuration file: {0}: No default regex defined. Please add a matchregex entry on conf file".format(e)
  97. sys.exit(e.errno)
  98.  
  99. if isinstance(self.reglist, str):
  100. self.reglist = self.reglist.split()
  101.  
  102. return self.reglist
  103.  
  104. def get_depots(self):
  105. return self.cfg.depots.keys()
  106.  
  107. if __name__ == '__main__':
  108. # Read config file to cfg
  109. config = Config(data=backup_conf)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement