def test_service_set_file(self, session): # given ServiceManager.add_services(_SERVICES_PATH) my_service = ServiceManager.get(SERVICE_ONE) node_one = session.add_node() node_two = session.add_node() file_name = my_service.configs[0] file_data_one = "# custom file one" file_data_two = "# custom file two" session.services.set_service_file(node_one.id, my_service.name, file_name, file_data_one) session.services.set_service_file(node_two.id, my_service.name, file_name, file_data_two) # when custom_service_one = session.services.get_service( node_one.id, my_service.name) session.services.create_service_files(node_one, custom_service_one) custom_service_two = session.services.get_service( node_two.id, my_service.name) session.services.create_service_files(node_two, custom_service_two) # then file_path_one = node_one.hostfilename(file_name) assert os.path.exists(file_path_one) with open(file_path_one, "r") as custom_file: assert custom_file.read() == file_data_one file_path_two = node_two.hostfilename(file_name) assert os.path.exists(file_path_two) with open(file_path_two, "r") as custom_file: assert custom_file.read() == file_data_two
def test_service_import(self): """ Test importing a custom service. """ ServiceManager.add_services(_SERVICES_PATH) assert ServiceManager.get(SERVICE_ONE) assert ServiceManager.get(SERVICE_TWO)
def test_service_startup(self, session): # given ServiceManager.add_services(_SERVICES_PATH) my_service = ServiceManager.get(SERVICE_ONE) node = session.add_node() session.services.create_service_files(node, my_service) # when status = session.services.startup_service(node, my_service, wait=True) # then assert not status
def test_service_stop_error(self, session): # given ServiceManager.add_services(_SERVICES_PATH) my_service = ServiceManager.get(SERVICE_TWO) node = session.add_node() session.services.create_service_files(node, my_service) # when status = session.services.stop_service(node, my_service) # then assert status
def test_service_add_services(self, session: Session): # given ServiceManager.add_services(_SERVICES_PATH) node = session.add_node(CoreNode) total_service = len(node.services) # when session.services.add_services(node, node.type, [SERVICE_ONE, SERVICE_TWO]) # then assert node.services assert len(node.services) == total_service + 2
def test_service_validate(self, session: Session): # given ServiceManager.add_services(_SERVICES_PATH) my_service = ServiceManager.get(SERVICE_ONE) node = session.add_node(CoreNode) session.services.create_service_files(node, my_service) # when status = session.services.validate_service(node, my_service) # then assert not status
def test_service_custom_startup(self, session: Session): # given ServiceManager.add_services(_SERVICES_PATH) my_service = ServiceManager.get(SERVICE_ONE) node = session.add_node(CoreNode) # when session.services.set_service(node.id, my_service.name) custom_my_service = session.services.get_service(node.id, my_service.name) custom_my_service.startup = ("sh custom.sh",) # then assert my_service.startup != custom_my_service.startup
def test_service_file(self, session): # given ServiceManager.add_services(_SERVICES_PATH) my_service = ServiceManager.get(SERVICE_ONE) node = session.add_node() file_name = my_service.configs[0] file_path = node.hostfilename(file_name) # when session.services.create_service_files(node, my_service) # then assert os.path.exists(file_path)
def test_service_all_configs(self, session): # given ServiceManager.add_services(_SERVICES_PATH) node = session.add_node() # when session.services.set_service(node.id, SERVICE_ONE) session.services.set_service(node.id, SERVICE_TWO) # then all_configs = session.services.all_configs() assert all_configs assert len(all_configs) == 2
def test_service_validate_error(self, session: Session): # given ServiceManager.add_services(_SERVICES_PATH) my_service = ServiceManager.get(SERVICE_TWO) node = session.add_node(CoreNode) session.services.create_service_files(node, my_service) node.cmd = MagicMock(side_effect=CoreCommandError(-1, "invalid")) # when status = session.services.validate_service(node, my_service) # then assert status
def test_service_all_files(self, session: Session): # given ServiceManager.add_services(_SERVICES_PATH) file_name = "myservice.sh" node = session.add_node(CoreNode) # when session.services.set_service_file(node.id, SERVICE_ONE, file_name, "# test") # then service = session.services.get_service(node.id, SERVICE_ONE) all_files = session.services.all_files(service) assert service assert all_files and len(all_files) == 1
def test_service_file(self, request, session: Session): # given ServiceManager.add_services(_SERVICES_PATH) my_service = ServiceManager.get(SERVICE_ONE) node = session.add_node(CoreNode) file_name = my_service.configs[0] file_path = node.hostfilename(file_name) # when session.services.create_service_files(node, my_service) # then if not request.config.getoption("mock"): assert os.path.exists(file_path)
def load(): """ Loads all services from the modules that reside under core.services. :return: list of services that failed to load """ return ServiceManager.add_services(_PATH)
def test_service_setget(self, session): # given ServiceManager.add_services(_SERVICES_PATH) my_service = ServiceManager.get(SERVICE_ONE) node = session.add_node() # when no_service = session.services.get_service(node.id, SERVICE_ONE) default_service = session.services.get_service(node.id, SERVICE_ONE, default_service=True) session.services.set_service(node.id, SERVICE_ONE) custom_service = session.services.get_service(node.id, SERVICE_ONE, default_service=True) # then assert no_service is None assert default_service == my_service assert custom_service and custom_service != my_service
def load_services(self) -> None: # load default services self.service_errors = core.services.load() # load custom services service_paths = self.config.get("custom_services_dir") logging.debug("custom service paths: %s", service_paths) if service_paths: for service_path in service_paths.split(","): service_path = service_path.strip() custom_service_errors = ServiceManager.add_services(service_path) self.service_errors.extend(custom_service_errors)
def on_load(cls): logging.debug("loading custom docker services") if "Client" in globals(): client = Client(version="1.10") images = client.images() del client else: images = [] for image in images: if u"<none>" in image["RepoTags"][0]: continue for repo in image["RepoTags"]: if u":core" not in repo: continue dockerid = repo.encode("ascii", "ignore").split(":")[0] sub_class = type("SubClass", (DockerService,), {"_name": dockerid, "_image": dockerid}) ServiceManager.add(sub_class) del images
def test_service_set_file(self, session: Session): # given ServiceManager.add_services(_SERVICES_PATH) my_service = ServiceManager.get(SERVICE_ONE) node1 = session.add_node(CoreNode) node2 = session.add_node(CoreNode) file_name = my_service.configs[0] file_data1 = "# custom file one" file_data2 = "# custom file two" session.services.set_service_file( node1.id, my_service.name, file_name, file_data1 ) session.services.set_service_file( node2.id, my_service.name, file_name, file_data2 ) # when custom_service1 = session.services.get_service(node1.id, my_service.name) session.services.create_service_files(node1, custom_service1) custom_service2 = session.services.get_service(node2.id, my_service.name) session.services.create_service_files(node2, custom_service2)
def test_service_set_file(self, session): # given ServiceManager.add_services(_SERVICES_PATH) my_service = ServiceManager.get(SERVICE_ONE) node_one = session.add_node() node_two = session.add_node() file_name = my_service.configs[0] file_data_one = "# custom file one" file_data_two = "# custom file two" session.services.set_service_file(node_one.id, my_service.name, file_name, file_data_one) session.services.set_service_file(node_two.id, my_service.name, file_name, file_data_two) # when custom_service_one = session.services.get_service( node_one.id, my_service.name) session.services.create_service_files(node_one, custom_service_one) custom_service_two = session.services.get_service( node_two.id, my_service.name) session.services.create_service_files(node_two, custom_service_two)
def _load_services(self) -> None: """ Loads default and custom services for use within CORE. :return: nothing """ # load default services self.service_errors = ServiceManager.load_locals() # load custom services service_paths = self.config.get("custom_services_dir") logger.debug("custom service paths: %s", service_paths) if service_paths is not None: for service_path in service_paths.split(","): service_path = Path(service_path.strip()) custom_service_errors = ServiceManager.add_services( service_path) self.service_errors.extend(custom_service_errors) # load default config services self.service_manager.load_locals() # load custom config services custom_dir = self.config.get("custom_config_services_dir") if custom_dir is not None: custom_dir = Path(custom_dir) self.service_manager.load(custom_dir)