def test_save_and_load_interoperate(self): logfile = self.make_file(name='test.log') saved_file = self.make_file() Config.save({'logfile': logfile}, saved_file) loaded_config = Config.load(saved_file) self.assertEqual(logfile, loaded_config['logfile'])
def test_save_defaults_to_default_filename(self): logfile = self.make_file(name='test.log') filename = self.make_file(name="config.yaml") self.patch(Config, 'DEFAULT_FILENAME', filename) Config.save({'logfile': logfile}) self.assertEqual(logfile, Config.load(filename)['logfile'])
def test_load(self): # Configuration can be loaded and parsed from a file. config = dedent(""" logfile: "/some/where.log" """) filename = self.make_file(name="config.yaml", contents=config) observed = Config.load(filename) self.assertEqual("/some/where.log", observed["logfile"])
def test_load_defaults_to_default_filename(self): logfile = self.make_file(name='test.log') config = yaml.safe_dump({'logfile': logfile}) filename = self.make_file(name="config.yaml", contents=config) self.patch(Config, 'DEFAULT_FILENAME', filename) observed = Config.load() self.assertEqual(logfile, observed['logfile'])
def run(args): """Install a PXE pre-boot loader into the TFTP directory structure. This won't overwrite an existing loader if its contents are unchanged. """ config = Config.load(args.config_file) tftproot = config["tftp"]["root"] destination_path = make_destination(tftproot) destination = os.path.join(destination_path, os.path.basename(args.loader)) install_bootloader(args.loader, destination)
def run(args): """Move a netboot image into the TFTP directory structure. The image is a directory containing a kernel and an initrd. If the destination location already has an image of the same name and containing identical files, the new image is deleted and the old one is left untouched. """ config = Config.load(args.config_file) tftproot = config["tftp"]["root"] destination = make_destination( tftproot, args.arch, args.subarch, args.release, args.purpose) if not are_identical_dirs(destination, args.image): # Image has changed. Move the new version into place. install_dir(args.image, destination) rmtree(args.image, ignore_errors=True)
def makeService(self, options): """Construct a service.""" services = MultiService() config = Config.load(options["config-file"]) log_service = self._makeLogService(config) log_service.setServiceParent(services) oops_service = self._makeOopsService(log_service, config["oops"]) oops_service.setServiceParent(services) broker_config = config["broker"] # Connecting to RabbitMQ is not yet a required component of a running # MAAS installation; skip unless the password has been set explicitly. if broker_config["password"] != b"test": client_service = self._makeBroker(broker_config) client_service.setServiceParent(services) tftp_service = self._makeTFTPService(config["tftp"]) tftp_service.setServiceParent(services) return services
def test_load_example(self): # The example configuration is designed for development. filename = os.path.join(root, "etc", "maas", "pserv.yaml") self.assertEqual( self.default_development_config, Config.load(filename))