Add check for templates.d in the sharedir
This allows lorax to support multiple templates. If there is no templates.d under the sharedir (/usr/share/lorax or the directory passed by --sharedir) then the templates in that directory will be used as they were previously. If there are directories under templates.d the first one will be used, unless --sharedir points to a specific one.
This commit is contained in:
		
							parent
							
								
									b099b30754
								
							
						
					
					
						commit
						c86bd205c3
					
				| @ -34,6 +34,7 @@ import tempfile | ||||
| import locale | ||||
| from subprocess import CalledProcessError | ||||
| import selinux | ||||
| from glob import glob | ||||
| 
 | ||||
| from pylorax.base import BaseLoraxClass, DataHolder | ||||
| import pylorax.output as output | ||||
| @ -77,6 +78,7 @@ class Lorax(BaseLoraxClass): | ||||
|         self.inroot = None | ||||
|         self.debug = False | ||||
|         self.outputdir = None | ||||
|         self._templatedir = None | ||||
| 
 | ||||
|         # set locale to C | ||||
|         locale.setlocale(locale.LC_ALL, 'C') | ||||
| @ -138,6 +140,24 @@ class Lorax(BaseLoraxClass): | ||||
| 
 | ||||
|         self._configured = True | ||||
| 
 | ||||
|     @property | ||||
|     def templatedir(self): | ||||
|         """Find the template directory. | ||||
| 
 | ||||
|         Pick the first directory under sharedir/templates.d/ if it exists. | ||||
|         Otherwise use the sharedir | ||||
|         """ | ||||
|         if not self._templatedir: | ||||
|             templatedir = self.conf.get("lorax", "sharedir") | ||||
|             if os.path.isdir(joinpaths(templatedir, "templates.d")): | ||||
|                 try: | ||||
|                     templatedir = sorted(glob(joinpaths(templatedir, "templates.d", "*")))[0] | ||||
|                 except IndexError: | ||||
|                     pass | ||||
|             logger.info("Using templatedir %s", templatedir) | ||||
|             self._templatedir = templatedir | ||||
|         return self._templatedir | ||||
| 
 | ||||
|     def init_stream_logging(self): | ||||
|         sh = logging.StreamHandler() | ||||
|         sh.setLevel(logging.INFO) | ||||
| @ -252,10 +272,9 @@ class Lorax(BaseLoraxClass): | ||||
|             logger.fatal("the volume id cannot be longer than 32 characters") | ||||
|             sys.exit(1) | ||||
| 
 | ||||
|         templatedir = self.conf.get("lorax", "sharedir") | ||||
|         # NOTE: rb.root = dbo.conf.installroot (== self.inroot) | ||||
|         rb = RuntimeBuilder(product=self.product, arch=self.arch, | ||||
|                             dbo=dbo, templatedir=templatedir, | ||||
|                             dbo=dbo, templatedir=self.templatedir, | ||||
|                             installpkgs=installpkgs, | ||||
|                             add_templates=add_templates, | ||||
|                             add_template_vars=add_template_vars) | ||||
| @ -319,7 +338,7 @@ class Lorax(BaseLoraxClass): | ||||
|                                   inroot=installroot, outroot=self.outputdir, | ||||
|                                   runtime=runtime, isolabel=isolabel, | ||||
|                                   domacboot=domacboot, doupgrade=doupgrade, | ||||
|                                   templatedir=templatedir, | ||||
|                                   templatedir=self.templatedir, | ||||
|                                   add_templates=add_arch_templates, | ||||
|                                   add_template_vars=add_arch_template_vars, | ||||
|                                   workdir=self.workdir) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user