private Map<String, String> resolveAutoStartDockerMachine(Map<String, String> config) { final String cliPathExec = config.get(CubeDockerConfiguration.DOCKER_MACHINE_PATH); if (dockerMachine.isDockerMachineInstalled(cliPathExec)) { final Set<Machine> allMachines = dockerMachine.list(cliPathExec); Optional<Machine> machine = Optional.empty(); if (config.containsKey(CubeDockerConfiguration.DOCKER_MACHINE_NAME)) { String configuredMachineName = config.get(CubeDockerConfiguration.DOCKER_MACHINE_NAME); machine = allMachines.stream() .filter(m -> configuredMachineName.equals(m.getName())) .filter(m -> "Stopped".equalsIgnoreCase(m.getState())) .findFirst(); } else { if (allMachines.size() == 1 && "Stopped".equalsIgnoreCase(allMachines.iterator().next().getState())) { machine = Optional.of(allMachines.iterator().next()); } } machine.ifPresent(m -> dockerMachine.startDockerMachine(cliPathExec, m.getName())); } return config; }
private Machine parse(Map<String, Index> headersIndex, String output) { String name = resolveField(headersIndex.get("NAME"), output); String active = resolveField(headersIndex.get("ACTIVE"), output); String driver = resolveField(headersIndex.get("DRIVER"), output); String state = resolveField(headersIndex.get("STATE"), output); String url = resolveField(headersIndex.get("URL"), output); String swarm = resolveField(headersIndex.get("SWARM"), output); return new Machine(name, active, driver, state, url, swarm); }
@Test public void shouldListDockerMachines() { when(executor.execCommandAsArray("docker-machine", "ls")).thenReturn(Arrays.asList( "NAME ACTIVE DRIVER STATE URL SWARM", "dev * virtualbox Running tcp://192.168.99.100:2376 ", "qa * virtualbox Running tcp://192.168.99.101:2376 swarm-master" )); DockerMachine dockerMachine = new DockerMachine(executor); final Set<Machine> list = dockerMachine.list(); assertThat(list, hasSize(2)); final Machine[] machines = list.toArray(new Machine[2]); assertThat(machines[0].getName(), is("qa")); assertThat(machines[0].getState(), is("Running")); assertThat(machines[0].getSwarm(), is("swarm-master")); assertThat(machines[1].getName(), is("dev")); assertThat(machines[1].getState(), is("Running")); assertThat(machines[1].getSwarm(), is("")); }
@Test public void shouldParseStoppedMachines() { when(executor.execCommandAsArray("docker-machine", "ls")).thenReturn(Arrays.asList( "NAME ACTIVE DRIVER STATE URL SWARM", "dev - virtualbox Stopped " )); DockerMachine dockerMachine = new DockerMachine(executor); final Set<Machine> list = dockerMachine.list(); assertThat(list, hasSize(1)); final Machine[] machines = list.toArray(new Machine[1]); assertThat(machines[0].getName(), is("dev")); assertThat(machines[0].getState(), is("Stopped")); assertThat(machines[0].getUrl(), is("")); }
private Map<String, String> resolveDefaultDockerMachine(Map<String, String> config) { // if user has not specified Docker URI host not a docker machine // setting DOCKER_URI to avoid using docker machine although it is installed if (!config.containsKey(CubeDockerConfiguration.DOCKER_URI) && !config.containsKey( CubeDockerConfiguration.DOCKER_MACHINE_NAME)) { log.fine( "No DockerUri or DockerMachine has been set, let's see if there is only one Docker Machine Running."); if (dockerMachine.isDockerMachineInstalled(config.get(CubeDockerConfiguration.DOCKER_MACHINE_PATH))) { // we can inspect if docker machine has one and only one docker machine running, which means that would like to use that one Set<Machine> machines = this.dockerMachine.list(config.get(CubeDockerConfiguration.DOCKER_MACHINE_PATH), "state", "Running"); // if there is only one machine running we can use that one. // if not Cube will resolve the default URI depending on OS (linux socket, boot2docker, ...) if (machines.size() == 1) { log.fine(String.format("One Docker Machine is running (%s) and it is going to be used for tests", machines.iterator().next().getName())); config.put(CubeDockerConfiguration.DOCKER_MACHINE_NAME, getFirstMachine(machines).getName()); } } } return config; }
@Test public void shouldListWithFilterDockerMachines() { when(executor.execCommandAsArray("docker-machine", "ls", "--filter", "state=Running")).thenReturn(Arrays.asList( "NAME ACTIVE DRIVER STATE URL SWARM", "dev * virtualbox Running tcp://192.168.99.100:2376 ", "qa * virtualbox Running tcp://192.168.99.101:2376 swarm-master" )); DockerMachine dockerMachine = new DockerMachine(executor); final Set<Machine> list = dockerMachine.list("state", "Running"); assertThat(list, hasSize(2)); final Machine[] machines = list.toArray(new Machine[2]); assertThat(machines[0].getName(), is("qa")); assertThat(machines[0].getState(), is("Running")); assertThat(machines[0].getSwarm(), is("swarm-master")); assertThat(machines[1].getName(), is("dev")); assertThat(machines[1].getState(), is("Running")); assertThat(machines[1].getSwarm(), is("")); } }
private Map<String, String> resolveDefaultDockerMachine(Map<String, String> config) { // if user has not specified Docker URI host not a docker machine // setting DOCKER_URI to avoid using docker machine although it is installed if (!config.containsKey(CubeDockerConfiguration.DOCKER_URI) && !config.containsKey( CubeDockerConfiguration.DOCKER_MACHINE_NAME)) { log.fine( "No DockerUri or DockerMachine has been set, let's see if there is only one Docker Machine Running."); if (dockerMachine.isDockerMachineInstalled(config.get(CubeDockerConfiguration.DOCKER_MACHINE_PATH))) { // we can inspect if docker machine has one and only one docker machine running, which means that would like to use that one Set<Machine> machines = this.dockerMachine.list(config.get(CubeDockerConfiguration.DOCKER_MACHINE_PATH), "state", "Running"); // if there is only one machine running we can use that one. // if not Cube will resolve the default URI depending on OS (linux socket, boot2docker, ...) if (machines.size() == 1) { log.fine(String.format("One Docker Machine is running (%s) and it is going to be used for tests", machines.iterator().next().getName())); config.put(CubeDockerConfiguration.DOCKER_MACHINE_NAME, getFirstMachine(machines).getName()); } } } return config; }
private Map<String, String> resolveAutoStartDockerMachine(Map<String, String> config) { final String cliPathExec = config.get(CubeDockerConfiguration.DOCKER_MACHINE_PATH); if (dockerMachine.isDockerMachineInstalled(cliPathExec)) { final Set<Machine> allMachines = dockerMachine.list(cliPathExec); Optional<Machine> machine = Optional.empty(); if (config.containsKey(CubeDockerConfiguration.DOCKER_MACHINE_NAME)) { String configuredMachineName = config.get(CubeDockerConfiguration.DOCKER_MACHINE_NAME); machine = allMachines.stream() .filter(m -> configuredMachineName.equals(m.getName())) .filter(m -> "Stopped".equalsIgnoreCase(m.getState())) .findFirst(); } else { if (allMachines.size() == 1 && "Stopped".equalsIgnoreCase(allMachines.iterator().next().getState())) { machine = Optional.of(allMachines.iterator().next()); } } machine.ifPresent(m -> dockerMachine.startDockerMachine(cliPathExec, m.getName())); } return config; }
private Machine parse(Map<String, Index> headersIndex, String output) { String name = resolveField(headersIndex.get("NAME"), output); String active = resolveField(headersIndex.get("ACTIVE"), output); String driver = resolveField(headersIndex.get("DRIVER"), output); String state = resolveField(headersIndex.get("STATE"), output); String url = resolveField(headersIndex.get("URL"), output); String swarm = resolveField(headersIndex.get("SWARM"), output); return new Machine(name, active, driver, state, url, swarm); }