def process(self, part): file_name = os.path.join(CONF.heat_config_dir, part.get_filename()) self._check_dir(file_name) encoding.write_file(file_name, part.get_payload()) if part.get_filename() == self._heat_user_data_filename: return userdatautils.execute_user_data_script(part.get_payload())
def process(self, part): temp_dir = tempfile.gettempdir() part_handler_path = os.path.join(temp_dir, part.get_filename()) encoding.write_file(part_handler_path, part.get_payload()) part_handler = classloader.ClassLoader().load_module(part_handler_path) if part_handler and hasattr(part_handler, "list_types") and hasattr(part_handler, "handle_part"): part_handlers_dict = {} for handled_type in part_handler.list_types(): part_handlers_dict[handled_type] = part_handler.handle_part return part_handlers_dict
def process(self, part): temp_dir = tempfile.gettempdir() part_handler_path = os.path.join(temp_dir, part.get_filename()) encoding.write_file(part_handler_path, part.get_payload()) part_handler = classloader.ClassLoader().load_module(part_handler_path) if (part_handler and hasattr(part_handler, "list_types") and hasattr(part_handler, "handle_part")): part_handlers_dict = {} for handled_type in part_handler.list_types(): part_handlers_dict[handled_type] = part_handler.handle_part return part_handlers_dict
def process(self, part): file_name = part.get_filename() target_path = os.path.join(tempfile.gettempdir(), file_name) try: encoding.write_file(target_path, part.get_payload()) return fileexecutils.exec_file(target_path) except Exception as ex: LOG.warning( 'An error occurred during user_data execution: \'%s\'' % ex) finally: if os.path.exists(target_path): os.remove(target_path)
def process(self, part): file_name = part.get_filename() target_path = os.path.join(tempfile.gettempdir(), file_name) try: encoding.write_file(target_path, part.get_payload()) return fileexecutils.exec_file(target_path) except Exception as ex: LOG.warning('An error occurred during user_data execution: \'%s\'' % ex) finally: if os.path.exists(target_path): os.remove(target_path)
def process(self, part): file_name = os.path.join(CONF.heat_config_dir, part.get_filename()) self._check_dir(file_name) payload = part.get_payload(decode=True) encoding.write_file(file_name, payload) if part.get_filename() == self._heat_user_data_filename: # Normalize the payload to bytes, since `execute_user_data_script` # operates on bytes and `get_payload` returns a string on # Python 3. if isinstance(payload, six.text_type): payload = payload.encode() return userdatautils.execute_user_data_script(payload)
def test_write_file(self): mode_map = [(("w", "r"), "my test\ndata\n\n", False), (("wb", "rb"), "\r\n".join( (chr(x) for x in (32, 125, 0))).encode(), False), (("wb", "rb"), "my test\ndata\n\n", True)] with testutils.create_tempdir() as temp: fd, path = tempfile.mkstemp(dir=temp) os.close(fd) for (write, read), data, encode in mode_map: encoding.write_file(path, data, mode=write) with open(path, read) as stream: content = stream.read() if encode: data = data.encode() self.assertEqual(data, content)
def test_write_file(self): mode_map = [ (("w", "r"), "my test\ndata\n\n", False), (("wb", "rb"), "\r\n".join((chr(x) for x in (32, 125, 0))).encode(), False), (("wb", "rb"), "my test\ndata\n\n", True) ] with testutils.create_tempdir() as temp: fd, path = tempfile.mkstemp(dir=temp) os.close(fd) for (write, read), data, encode in mode_map: encoding.write_file(path, data, mode=write) with open(path, read) as stream: content = stream.read() if encode: data = data.encode() self.assertEqual(data, content)