More fixes
This commit is contained in:
		
							parent
							
								
									3eb104e1e3
								
							
						
					
					
						commit
						d5df4b8f3d
					
				| 
						 | 
					@ -0,0 +1,20 @@
 | 
				
			||||||
 | 
					from adg_control import AdgClient, ADG_EXE, ADG_DIR
 | 
				
			||||||
 | 
					from parser import Parser
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def main():
 | 
				
			||||||
 | 
					    parser = Parser("./test")
 | 
				
			||||||
 | 
					    client = AdgClient(ADG_EXE, ADG_DIR)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    c1 = parser.commands[0]
 | 
				
			||||||
 | 
					    c1.execute(client)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    c2 = parser.commands[1]
 | 
				
			||||||
 | 
					    c2.execute(client)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    c3 = parser.commands[2]
 | 
				
			||||||
 | 
					    c3.execute(client)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == "__main__":
 | 
				
			||||||
 | 
					    main()
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,112 @@
 | 
				
			||||||
 | 
					from enum import StrEnum, auto
 | 
				
			||||||
 | 
					from adg_control import AdgClient
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class CommandType(StrEnum):
 | 
				
			||||||
 | 
					    NEWDB = auto(),
 | 
				
			||||||
 | 
					    NORMAL = auto(),
 | 
				
			||||||
 | 
					    NEWSYSTEM = auto(),
 | 
				
			||||||
 | 
					    HOTEL = auto()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Command():
 | 
				
			||||||
 | 
					    def __init__(self, type: CommandType, **kwargs):
 | 
				
			||||||
 | 
					        self.type = type
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            if self.type == CommandType.NEWDB:
 | 
				
			||||||
 | 
					                self._init_newdb(**kwargs)
 | 
				
			||||||
 | 
					            elif self.type == CommandType.NORMAL:
 | 
				
			||||||
 | 
					                self._init_normal(**kwargs)
 | 
				
			||||||
 | 
					            elif self.type == CommandType.NEWSYSTEM:
 | 
				
			||||||
 | 
					                self._init_system(**kwargs)
 | 
				
			||||||
 | 
					            elif self.type == CommandType.HOTEL:
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					        except KeyError as e:
 | 
				
			||||||
 | 
					            raise Exception("Required argument not found!", e)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def execute(self, client: AdgClient):
 | 
				
			||||||
 | 
					        match self.type:
 | 
				
			||||||
 | 
					            case CommandType.NEWDB:
 | 
				
			||||||
 | 
					                client.create_database(self.name)
 | 
				
			||||||
 | 
					            case CommandType.NORMAL:
 | 
				
			||||||
 | 
					                client.create_normal_resource(
 | 
				
			||||||
 | 
					                    self.name,
 | 
				
			||||||
 | 
					                    self.location,
 | 
				
			||||||
 | 
					                    self.envelope,
 | 
				
			||||||
 | 
					                    driver_path=self.driver_path
 | 
				
			||||||
 | 
					                    if hasattr(self, "driver_path") else "",
 | 
				
			||||||
 | 
					                    package_path=self.package_path
 | 
				
			||||||
 | 
					                    if hasattr(self, "package_path") else "",
 | 
				
			||||||
 | 
					                    driver_description=self.driver_description
 | 
				
			||||||
 | 
					                    if hasattr(self, "driver_description") else "",
 | 
				
			||||||
 | 
					                    connection_parameters=self.connection_parameters
 | 
				
			||||||
 | 
					                    if hasattr(self, "connection_parameters") else "",
 | 
				
			||||||
 | 
					                    system=self.system if hasattr(self, "system") else "")
 | 
				
			||||||
 | 
					            case CommandType.NEWSYSTEM:
 | 
				
			||||||
 | 
					                client.create_system(
 | 
				
			||||||
 | 
					                    name=self.name if hasattr(self, "name") else "",
 | 
				
			||||||
 | 
					                    switch_ip=self.switch_ip
 | 
				
			||||||
 | 
					                    if hasattr(self, "switch_ip") else "",
 | 
				
			||||||
 | 
					                    host_name=self.host_name
 | 
				
			||||||
 | 
					                    if hasattr(self, "host_name") else "")
 | 
				
			||||||
 | 
					            case CommandType.HOTEL:
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _init_newdb(self, **kwargs):
 | 
				
			||||||
 | 
					        self.name = kwargs["name"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _init_normal(self, **kwargs):
 | 
				
			||||||
 | 
					        self.name = kwargs["name"]
 | 
				
			||||||
 | 
					        self.location = kwargs["location"]
 | 
				
			||||||
 | 
					        self.envelope = kwargs["envelope"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if "driver_path" in kwargs:
 | 
				
			||||||
 | 
					            self.driver_path = kwargs["driver_path"]
 | 
				
			||||||
 | 
					        if "package_path" in kwargs:
 | 
				
			||||||
 | 
					            self.package_path = kwargs["package_path"]
 | 
				
			||||||
 | 
					        if "driver_description" in kwargs:
 | 
				
			||||||
 | 
					            self.driver_description = kwargs["package_path"]
 | 
				
			||||||
 | 
					        if "connection_parameters" in kwargs:
 | 
				
			||||||
 | 
					            self.connection_parameters = kwargs["connection_parameters"]
 | 
				
			||||||
 | 
					        if "system" in kwargs:
 | 
				
			||||||
 | 
					            self.system = kwargs["system"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _init_system(self, **kwargs):
 | 
				
			||||||
 | 
					        if "name" in kwargs:
 | 
				
			||||||
 | 
					            self.name = kwargs["name"]
 | 
				
			||||||
 | 
					        if "switch_ip" in kwargs:
 | 
				
			||||||
 | 
					            self.switch_ip = kwargs["switch_ip"]
 | 
				
			||||||
 | 
					        if "host_name" in kwargs:
 | 
				
			||||||
 | 
					            self.host_name = kwargs["host_name"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class Parser():
 | 
				
			||||||
 | 
					    def __init__(self, path: str):
 | 
				
			||||||
 | 
					        self.path = path
 | 
				
			||||||
 | 
					        self._read_lines()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _read_lines(self):
 | 
				
			||||||
 | 
					        with open(self.path) as file:
 | 
				
			||||||
 | 
					            commands = []
 | 
				
			||||||
 | 
					            for line in file:
 | 
				
			||||||
 | 
					                commands.append(Parser._read_line(line.strip()))
 | 
				
			||||||
 | 
					            self.commands = commands
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def _read_line(line: str) -> Command:
 | 
				
			||||||
 | 
					        args = line.split(';')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        command_type_str = args[0].lower().strip()
 | 
				
			||||||
 | 
					        if command_type_str not in list(CommandType):
 | 
				
			||||||
 | 
					            raise KeyError("Invalid command type found!")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        type = CommandType(command_type_str)
 | 
				
			||||||
 | 
					        args_dict = dict()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for arg in args[1:]:
 | 
				
			||||||
 | 
					            if not arg:
 | 
				
			||||||
 | 
					                continue
 | 
				
			||||||
 | 
					            key, value = [x.strip() for x in arg.split('=')]
 | 
				
			||||||
 | 
					            args_dict[key.lower()] = value
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return Command(type, **args_dict)
 | 
				
			||||||
		Loading…
	
		Reference in New Issue