@PostConstruct public void activate() { vertx = vertxFactory.createVertx(); Objects.notNull(vertx, "vertx"); }
/** * Returns a client for the first working pod for the given service or throws an assertion error if one could not be found */ public J4pClient assertClientForService(String serviceName, String namespace) { J4pClient client = clientForService(serviceName, namespace); assertNotNull(client, "No client for service: " + serviceName); return client; }
public SubscribeResponse subscribe(SubscribeRequest request) throws InternalException { String namespace = request.getNamespace(); Objects.notNull(namespace, "namespace"); ConfigMap configMap = createSubscriptionResource(request, namespace); kubernetesClient.configMaps().inNamespace(namespace).create(configMap); return new SubscribeResponse(namespace, KubernetesHelper.getName(configMap)); }
String username = env.get(userEnvVar); if (io.fabric8.utils.Objects.equal("BUILD_URL", envVarName)) { String jobUrl = projectConfig.getLink("Job"); if (Strings.isNullOrBlank(jobUrl)) { String name = projectConfig.getBuildName(); if (Strings.isNullOrBlank(name)) { if (Strings.isNotBlank(repoName)) { name = repoName; if (Strings.isNotBlank(username)) { if (Strings.isNotBlank(name)) { String jenkinsUrl = KubernetesHelper.getServiceURLInCurrentNamespace(getKubernetes(), ServiceNames.JENKINS, "http", null, true); jobUrl = URLUtils.pathJoin(jenkinsUrl, "/job", name); } else if (io.fabric8.utils.Objects.equal("GIT_URL", envVarName)) { String gitUrl = projectConfig.getLinks().get("Git"); if (Strings.isNullOrBlank(gitUrl)) { } else if (io.fabric8.utils.Objects.equal("GIT_COMMIT", envVarName)) { String gitCommit = gitConfig.getCommit(); if (Strings.isNullOrBlank(gitCommit)) { } else if (io.fabric8.utils.Objects.equal("GIT_BRANCH", envVarName)) { String gitBranch = gitConfig.getBranch(); if (Strings.isNullOrBlank(gitBranch)) {
public static void substituteEnvironmentVariableExpressions(Map<String, String> map, Map<String, String> environmentVariables) { Set<Map.Entry<String, String>> envEntries = environmentVariables.entrySet(); for (String key : map.keySet()) { String text = map.get(key); String oldText = text; if (Strings.isNotBlank(text)) { for (Map.Entry<String, String> envEntry : envEntries) { String envKey = envEntry.getKey(); String envValue = envEntry.getValue(); if (Strings.isNotBlank(envKey) && Strings.isNotBlank(envValue)) { text = text.replace("${env:" + envKey + "}", envValue); } } if (!Objects.equal(oldText, text)) { map.put(key, text); } } } }
public KubernetesClient getKubernetes() { if (kubernetes == null) { String kubernetesAddress = kubernetesUrl.getValue(); if (Strings.isNotBlank(kubernetesAddress)) { kubernetes = new KubernetesClient(new KubernetesFactory(kubernetesAddress)); } else { kubernetes = new KubernetesClient(); } } Objects.notNull(kubernetes, "kubernetes"); return kubernetes; }
protected static void createContainer(ProcessManager processManager, KubernetesModel model, Container container, Pod pod, PodStatus currentState) throws Exception { String containerName = container.getName(); String image = container.getImage(); Strings.notEmpty(image); OpenMavenURL mavenUrl = ImageMavenCoords.dockerImageToMavenURL(image); Objects.notNull(mavenUrl, "mavenUrl"); InstallOptions.InstallOptionsBuilder builder = new InstallOptions.InstallOptionsBuilder(). url(mavenUrl).environment(envVarMap); if (Strings.isNotBlank(containerName)) { builder = builder.name(containerName).id(containerName); LOG.debug("Cannot find image at {} - trying with default prefix", mavenUrl); mavenUrl = ImageMavenCoords.dockerImageToMavenURL(image, true); Objects.notNull(mavenUrl, "mavenUrl"); builder = new InstallOptions.InstallOptionsBuilder(). url(mavenUrl).environment(envVarMap); if (Strings.isNotBlank(containerName)) { builder = builder.name(containerName).id(containerName); container.setEnv(createEnvironmentVariables(environment)); createInstallationPorts(environment, installation, container); model.updatePod(getName(pod), pod); } catch (Exception e) { setPodTerminated(currentState, e); System.out.println("ERROR: Failed to create pod: " + getName(pod) + ". " + e); e.printStackTrace(); LOG.error("Failed to create pod: " + getName(pod) + ". " + e.getMessage(), e);
/** * Returns the maven plugin for the given artifact id or returns null if it cannot be found */ public static Plugin findPlugin(List<Plugin> plugins, String artifactId) { if (plugins != null) { for (Plugin plugin : plugins) { String groupId = plugin.getGroupId(); if (Strings.isNullOrBlank(groupId) || Objects.equal(groupId, mavenPluginsGroupId)) { if (Objects.equal(artifactId, plugin.getArtifactId())) { return plugin; } } } } return null; }
@Override public Result execute(UIExecutionContext context) throws Exception { String buildConfigName = buildName.getValue(); Objects.assertNotNull(buildConfigName, "buildName"); Map<String, String> labels = BuildConfigs.createBuildLabels(buildConfigName); String ouputImageName = imageName.getValue(); String gitUrlText = getOrFindGitUrl(context, gitUri.getValue()); String imageText = outputImage.getValue(); Model mavenModel = getMavenModel(context); if (Strings.isNullOrBlank(imageText) && mavenModel != null) { imageText = mavenModel.getProperties().getProperty("docker.image"); } String webhookSecretText = webHookSecret.getValue(); if (Strings.isNullOrBlank(webhookSecretText)) { // TODO generate a really good secret! webhookSecretText = "secret101"; } BuildConfig buildConfig = BuildConfigs.createBuildConfig(buildConfigName, labels, gitUrlText, ouputImageName, imageText, webhookSecretText); System.out.println("Generated BuildConfig: " + toJson(buildConfig)); ImageStream imageRepository = BuildConfigs.imageRepository(buildConfigName, labels); Controller controller = createController(); controller.applyImageStream(imageRepository, "generated ImageStream: " + toJson(imageRepository)); controller.applyBuildConfig(buildConfig, "generated BuildConfig: " + toJson(buildConfig)); return Results.success("Added BuildConfig: " + Builds.getName(buildConfig) + " to OpenShift at master: " + getKubernetes().getMasterUrl()); }
if (Strings.isNullOrBlank(serviceId)) { return null; Objects.notNull(beanServer, "MBeanServer"); if (!beanServer.isRegistered(KUBERNETES_OBJECT_NAME)) { LOG.warn("No MBean is available for: " + KUBERNETES_OBJECT_NAME);
public String updateLocalPod(@NotNull final String podId, final Pod pod) throws Exception { System.out.println("Updating pod " + pod); PodSpec desiredState = pod.getSpec(); Objects.notNull(desiredState, "desiredState"); String namespace = KubernetesHelper.getNamespace(pod); if (Strings.isBlank(namespace)) { getOrCreateMetadata(pod).setNamespace(DEFAULT_NAMESPACE); final List<Container> containers = KubernetesHelper.getContainers(pod);
list.add(pod); List<Container> containers = KubernetesHelper.getContainers(podTemplateSpec); for (Container container : containers) { String containerName = getName(pod) + "-" + container.getName(); Objects.notNull(currentState, "currentState"); currentState.setHostIP(host); getOrCreateMetadata(pod).setLabels(KubernetesHelper.getLabels(podTemplate.getMetadata()));
public ServiceInstance(Service service) { this.service = service; this.id = getName(service); ServiceSpec spec = KubernetesHelper.getOrCreateSpec(service); List<ServicePort> ports = spec.getPorts(); if (spec.getPortalIP().equals(HEADLESS_PORTAL_IP)) { //do nothing service is headless } else if (ports != null && !ports.isEmpty()) { for (ServicePort servicePort : ports) { servicePorts.add(toNamedServicePort(id, servicePort)); } } else { throw new IllegalArgumentException("Service: " + id + " doesn't have a valid port configuration."); } this.selector = KubernetesHelper.getSelector(service); Objects.notNull(this.selector, "No selector for service " + id); if (selector.isEmpty()) { throw new IllegalArgumentException("Empty selector for service " + id); } this.filter = KubernetesHelper.createPodFilter(selector); // TODO should we use some service metadata to choose the load balancer? this.loadBalancer = new RoundRobinLoadBalancer(); }
List<String> urlStrings = serviceDetails.getServices(); for (String urlString : urlStrings) { if (Strings.notEmpty(urlString)) { if (Objects.equal(protocol, urlProtocol)) { Handler<AsyncResult<NetSocket>> handler = new Handler<AsyncResult<NetSocket>>() { public void handle(final AsyncResult<NetSocket> asyncSocket) {
@Override public Boolean call() throws Exception { boolean result = true; List<Pod> pods = kubernetesClient.getPods(session.getNamespace()).getItems(); if (pods.isEmpty()) { result = false; session.getLogger().warn("No pods are available yet, waiting..."); } for (Pod pod : pods) { result = result && Objects.equal(PodStatus.OK, KubernetesHelper.getPodStatus(pod)); if (!result) { if (pod.getCurrentState().getInfo() != null) { for (Map.Entry<String, ContainerStatus> entry : pod.getCurrentState().getInfo().entrySet()) { String containerId = entry.getKey(); ContainerStatus status = entry.getValue(); if (status.getState().getWaiting() != null) { session.getLogger().warn("Waiting for container:" + containerId + ". Reason:" + status.getState().getWaiting().getReason()); } } } } } return result; }
@Override public String call() throws Exception { System.out.println("Updating pod " + pod); PodSpec desiredState = pod.getSpec(); Objects.notNull(desiredState, "desiredState"); PodStatus currentState = NodeHelper.getOrCreatetStatus(pod); List<Container> containers = KubernetesHelper.getContainers(pod); model.updatePod(podId, pod); return NodeHelper.createMissingContainers(processManager, model, pod, currentState, containers); } });
@Override public Result execute(UIExecutionContext context) throws Exception { String buildConfigName = buildName.getValue(); Objects.assertNotNull(buildConfigName, "buildName"); Map<String, String> labels = BuildConfigs.createBuildLabels(buildConfigName); String gitUrlText = getOrFindGitUrl(context, gitUri.getValue()); String imageText = image.getValue(); List<EnvVar> envVars = createEnvVars(buildConfigName, gitUrlText, mavenCommand.getValue()); BuildConfig buildConfig = BuildConfigs.createIntegrationTestBuildConfig(buildConfigName, labels, gitUrlText, imageText, envVars); System.out.println("Generated BuildConfig: " + toJson(buildConfig)); ImageStream imageRepository = BuildConfigs.imageRepository(buildConfigName, labels); Controller controller = createController(); controller.applyImageStream(imageRepository, "generated ImageStream: " + toJson(imageRepository)); controller.applyBuildConfig(buildConfig, "generated BuildConfig: " + toJson(buildConfig)); return Results.success("Added BuildConfig: " + Builds.getName(buildConfig) + " to OpenShift at master: " + getKubernetes().getAddress()); }
public static <T extends Comparable<T>> int compare(List<T> a, List<T> b) { if (a == b) { return 0; } else if (a == null) { return -1; } else if (b == null) { return 1; } int size = a.size(); int answer = size - b.size(); if (answer == 0) { for (int i = 0; i < size; i++) { answer = compare(a.get(i), b.get(i)); if (answer != 0) { break; } } } return answer; }