@Override public String getHost() { return endpointAddress.getIp(); }
@Override public int getPort() { return endpointPort.getPort(); }
private void discoverTolerations() { final List<Toleration> configuredTolerations = zaleniumPod.getSpec().getTolerations(); if (configuredTolerations != null && !configuredTolerations.isEmpty()) { tolerations = configuredTolerations; } }
@Override public void contribute(Builder builder) { try { Pod current = utils.currentPod().get(); Map<String, Object> details = new HashMap<>(); if (current != null) { details.put("inside", true); details.put("namespace", current.getMetadata().getNamespace()); details.put("podName", current.getMetadata().getName()); details.put("podIp", current.getStatus().getPodIP()); details.put("serviceAccount", current.getSpec().getServiceAccountName()); details.put("nodeName", current.getSpec().getNodeName()); details.put("hostIp", current.getStatus().getHostIP()); } else { details.put("inside", false); } builder.withDetail("kubernetes", details); } catch (Exception e) { LOG.warn("Failed to get pod details", e); } } }
for (Pod pod : list.getItems()) { if (podIpAddress.equals(pod.getStatus().getPodIP())) { containerId = pod.getMetadata().getName(); currentPod = pod; break; List<EnvVar> podEnvironmentVariables = currentPod.getSpec().getContainers().get(0).getEnv(); Optional<EnvVar> noVncPort = podEnvironmentVariables.stream().filter(env -> "NOVNC_PORT".equals(env.getName())).findFirst(); Integer noVncPortInt = Integer.decode(noVncPort.get().getValue()); registration.setIpAddress(currentPod.getStatus().getPodIP()); registration.setContainerId(containerId);
public static DoneablePod createDoneablePodDefaultImpl(PodConfiguration config) { DoneablePod doneablePod = config.getClient().pods() .createNew() .withNewMetadata() .withGenerateName(config.getContainerIdPrefix()) .addToLabels(config.getLabels()) .endMetadata() .withNewSpec() .withNodeSelector(config.getNodeSelector()) .withTolerations(config.getTolerations()) .addNewVolume() .withName("dshm") .withNewEmptyDir() .withMedium("Memory") .endEmptyDir() .endVolume() .addNewContainer() .withName("selenium-node") .withImage(config.getImage()) .withImagePullPolicy(config.getImagePullPolicy()) .addAllToEnv(config.getEnvVars()) .addNewVolumeMount() .withName("dshm") .withMountPath("/dev/shm") .endVolumeMount() .withNewResources() .addToLimits(config.getPodLimits()) .addToRequests(config.getPodRequests()) .endResources()
public List<String> getServices(Predicate<Service> filter) { return kubernetesClientServicesFunction.apply(client).list() .getItems() .stream() .filter(filter) .map(s -> s.getMetadata().getName()) .collect(Collectors.toList()); }
private void discoverFolderMounts() { List<VolumeMount> volumeMounts = zaleniumPod.getSpec().getContainers().get(0).getVolumeMounts(); List<VolumeMount> validMounts = new ArrayList<>(); volumeMounts.stream() .filter(volumeMount -> !Arrays.asList(PROTECTED_NODE_MOUNT_POINTS).contains(volumeMount.getMountPath())) .forEach(validMounts::add); // Look through the volume mounts to see if the shared folder is mounted if (!validMounts.isEmpty()) { List<Volume> volumes = zaleniumPod.getSpec().getVolumes(); for (VolumeMount validMount : validMounts) { volumes.stream() .filter(volume -> validMount.getName().equalsIgnoreCase(volume.getName())) .findFirst() .ifPresent(volume -> mountedSharedFoldersMap.put(validMount, volume)); } } }
private void createConfigMap(Map<String, String> data) { LOGGER.debug("Creating new config map with data: {}", data); ConfigMap newConfigMap = new ConfigMapBuilder().withNewMetadata() .withName(leaderProperties.getConfigMapName()) .addToLabels(PROVIDER_KEY, PROVIDER) .addToLabels(KIND_KEY, KIND) .endMetadata() .addToData(data) .build(); kubernetesClient.configMaps() .inNamespace(leaderProperties.getNamespace(kubernetesClient.getNamespace())) .create(newConfigMap); }
public boolean isTerminated(ContainerCreationStatus container) { Pod pod = client.pods().withName(container.getContainerName()).get(); if (pod == null) { logger.info("Container {} has no pod - terminal.", container); return true; } else { List<ContainerStatus> containerStatuses = pod.getStatus().getContainerStatuses(); Optional<ContainerStateTerminated> terminated = containerStatuses.stream() .flatMap(status -> Optional.ofNullable(status.getState()).map(Stream::of).orElse(Stream.empty())) .flatMap(state -> Optional.ofNullable(state.getTerminated()).map(Stream::of).orElse(Stream.empty())) .findFirst(); terminated.ifPresent(state -> logger.info("Container {} is {} - terminal.", container, state)); return terminated.isPresent(); } }
public boolean isReady(ContainerCreationStatus container) { Pod pod = client.pods().withName(container.getContainerName()).get(); if (pod == null) { return false; } else { return pod.getStatus().getConditions().stream() .filter(condition -> condition.getType().equals("Ready")) .map(condition -> condition.getStatus().equals("True")) .findFirst() .orElse(false); } }
private void updateConfigMapEntry(ConfigMap configMap, Map<String, String> newData) { LOGGER.debug("Adding new data to config map: {}", newData); ConfigMap newConfigMap = new ConfigMapBuilder(configMap) .addToData(newData) .build(); updateConfigMap(configMap, newConfigMap); }
private void removeConfigMapEntry(ConfigMap configMap, String key) { LOGGER.debug("Removing config map entry '{}'", key); ConfigMap newConfigMap = new ConfigMapBuilder(configMap) .removeFromData(key) .build(); updateConfigMap(configMap, newConfigMap); }
private void discoverNodeSelector() { final Map<String, String> configuredNodeSelector = zaleniumPod.getSpec().getNodeSelector(); if (configuredNodeSelector != null && !configuredNodeSelector.isEmpty()) { nodeSelector = configuredNodeSelector; } }
private void discoverHostAliases() { List<HostAlias> configuredHostAliases = zaleniumPod.getSpec().getHostAliases(); if (!configuredHostAliases.isEmpty()) { hostAliases = configuredHostAliases; } }
private void updateConfigMap(ConfigMap oldConfigMap, ConfigMap newConfigMap) { kubernetesClient.configMaps() .inNamespace(leaderProperties.getNamespace(kubernetesClient.getNamespace())) .withName(leaderProperties.getConfigMapName()) .lockResourceVersion(oldConfigMap.getMetadata().getResourceVersion()) .replace(newConfigMap); } }
private Leader extractLeader(ConfigMap configMap) { if (configMap == null || configMap.getData() == null) { return null; } Map<String, String> data = configMap.getData(); String leaderKey = getLeaderKey(); String leaderId = data.get(leaderKey); if (leaderId == null) { return null; } return new Leader(candidate.getRole(), leaderId); }
OAuthService service = new ServiceBuilder() .provider(TwitterApi.class) .apiKey("your_api_key") .apiSecret("your_api_secret") .build(); ... Token requestToken = service.getRequestToken(); String your_token = requestToken.getToken(); ... Verifier verifier = new Verifier("your_previously_retrieved_verifier"); Token accessToken = service.getAccessToken(requestToken, verifier);
@Override protected void doHealthCheck(Health.Builder builder) throws Exception { try { Pod current = utils.currentPod().get(); if (current != null) { builder.up().withDetail("inside", true) .withDetail("namespace", current.getMetadata().getNamespace()) .withDetail("podName", current.getMetadata().getName()) .withDetail("podIp", current.getStatus().getPodIP()) .withDetail("serviceAccount", current.getSpec().getServiceAccountName()) .withDetail("nodeName", current.getSpec().getNodeName()) .withDetail("hostIp", current.getStatus().getHostIP()); } else { builder.up().withDetail("inside", false); } } catch (Exception e) { builder.down(e); } } }