Advertisement
jtyr

Untitled

Dec 13th, 2016
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.47 KB | None | 0 0
  1. #!/usr/bin/python
  2.  
  3.  
  4. class Vars(object):
  5.     variables = {}
  6.  
  7.     def read_vars(self):
  8.         print("Reading group_vars/%s" % self.__class__.__name__)
  9.  
  10.         subclasses = self.__class__.__subclasses__()
  11.  
  12.         for subclass in subclasses:
  13.             if subclass.hosts is None:
  14.                 print(" - Merging with group_vars/%s" % subclass.__name__)
  15.  
  16.  
  17. class all(Vars):
  18.     hosts = None
  19.  
  20.  
  21. # [ DEV ]
  22.  
  23. class dev(all):
  24.     hosts = ['host0']
  25.  
  26.  
  27. # [ PREPROD ]
  28.  
  29. class preprod(all):
  30.     hosts = None
  31.  
  32.  
  33. class preprod_app1(preprod):
  34.     hosts = ['host1', 'host2', 'host3']
  35.  
  36.  
  37. # [ PROD ]
  38.  
  39. class prod(all):
  40.     hosts = None
  41.  
  42.  
  43. class prod_app1(prod):
  44.     hosts = ['host4', 'host5', 'host6']
  45.  
  46.  
  47. # [ TEMPLATES ]
  48.  
  49. class template_app1(preprod_app1, prod_app1):
  50.     hosts = None
  51.  
  52.  
  53. def main():
  54.     dv = dev()
  55.     dv.read_vars()
  56.  
  57.     pp = preprod_app1()
  58.     pp.read_vars()
  59.  
  60.     pr = preprod_app1()
  61.     pr.read_vars()
  62.  
  63.  
  64. if __name__ == '__main__':
  65.     main()
  66.  
  67. """
  68. ### Output:
  69. Reading group_vars/dev
  70. Reading group_vars/preprod_app1
  71. - Merging with group_vars/template_app1
  72. Reading group_vars/preprod_app1
  73. - Merging with group_vars/template_app1
  74.  
  75. ### That corresponds with this inventory file:
  76. [preprod:children]
  77. preprod_app1
  78.  
  79. [preprod_app1]
  80. host1
  81. host2
  82. host3
  83.  
  84. [preprod_app1:children]
  85. template_app1
  86.  
  87. [prod:children]
  88. prod_app1_tmp
  89.  
  90. [prod_app1]
  91. host4
  92. host5
  93. host6
  94.  
  95. [prod_app1:children]
  96. template_app1
  97.  
  98. [template_app1]
  99. # Is empty
  100. """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement