@Override public void run() { LOG.debug("Only {}/{} pod(s) ready for {}: {} in namespace: {} seconds so waiting...", podCount.get(), requiredPodCount, obj.getKind(), obj.getMetadata().getName(), namespace); } }, 0, loggingIntervalMillis, TimeUnit.MILLISECONDS);
private static <T> ResourceHandler handlerOf(T item) { if (item instanceof HasMetadata) { return Handlers.<HasMetadata, HasMetadataVisitiableBuilder>get(((HasMetadata) item).getKind()); } else if (item instanceof KubernetesList) { return new KubernetesListHandler(); } else { throw new IllegalArgumentException("Could not find a registered handler for item: [" + item + "]."); } }
private static <T> ResourceHandler handlerOf(T item) { if (item instanceof HasMetadata) { return Handlers.<HasMetadata, HasMetadataVisitiableBuilder>get(((HasMetadata) item).getKind()); } else if (item instanceof KubernetesList) { return new KubernetesListHandler(); } else { throw new IllegalArgumentException("Could not find a registered handler for item: [" + item + "]."); } }
private <T extends HasMetadata, V extends VisitableBuilder<T, V>> T create(T resource) { ResourceHandler<T, V> handler = Handlers.get(resource.getKind()); if (handler != null) { return handler.create(client, config, namespace, resource); } throw new IllegalStateException("Could not find handler"); }
public KubernetesClientTimeoutException(HasMetadata resource, long amount, TimeUnit timeUnit) { super(String.format(RESOURCE_FORMAT, timeUnit.toMillis(amount), resource.getKind(), resource.getMetadata().getName(), resource.getMetadata().getNamespace())); this.resourcesNotReady = Collections.unmodifiableList(Arrays.asList(resource)); }
/** * Creates a string listing all the resources that are not ready. * @param resources The resources that are not ready. * @return */ private static String notReadyToString(Iterable<HasMetadata> resources) { StringBuilder sb = new StringBuilder(); sb.append("Resources that are not ready: "); boolean first = true; for (HasMetadata r : resources) { if (first) { first = false; } else { sb.append(", "); } sb.append("[Kind:").append(r.getKind()) .append(" Name:").append(r.getMetadata().getName()) .append(" Namespace:").append(r.getMetadata().getNamespace()) .append("]"); } return sb.toString(); } }
@Override public int compare(HasMetadata a, HasMetadata b) { if (a == null || b == null) { throw new NullPointerException("Cannot compare null HasMetadata objects"); } if (a == b || a.equals(b)) { return 0; } int kindOrderCompare = getKindValue(a.getKind()).compareTo(getKindValue(b.getKind())); if (kindOrderCompare != 0) { return kindOrderCompare; } String classNameA = a.getClass().getSimpleName(); String classNameB = b.getClass().getSimpleName(); int classCompare = classNameA.compareTo(classNameB); if (classCompare != 0) { return classCompare; } return a.getMetadata().getName().compareTo(b.getMetadata().getName()); } }
executor.shutdown(); LOG.warn("Only {}/{} pod(s) ready for {}: {} in namespace: {} after waiting for {} seconds so giving up", podCount.get(), requiredPodCount, obj.getKind(), obj.getMetadata().getName(), namespace, TimeUnit.MILLISECONDS.toSeconds(rollingTimeoutMillis));
private static String display(HasMetadata item) { StringBuilder sb = new StringBuilder(); sb.append("[ "); if (Utils.isNotNullOrEmpty(item.getKind())) { sb.append("Kind:").append(item.getKind()); } if (Utils.isNotNullOrEmpty(item.getMetadata().getName())) { sb.append("Name:").append(item.getMetadata().getName()); } if (item.getMetadata().getLabels()!=null && !item.getMetadata().getLabels().isEmpty()) { sb.append("Lables: [ "); for (Map.Entry<String,String> entry : item.getMetadata().getLabels().entrySet()) { sb.append(entry.getKey()).append(":").append(entry.getValue()).append(" "); } sb.append("]"); } sb.append(" ]"); return sb.toString(); } }
private static String display(HasMetadata item) { StringBuilder sb = new StringBuilder(); sb.append("[ "); if (Utils.isNotNullOrEmpty(item.getKind())) { sb.append(" Kind:").append(item.getKind()); } if (Utils.isNotNullOrEmpty(item.getMetadata().getName())) { sb.append(" Name:").append(item.getMetadata().getName()); } if (item.getMetadata().getLabels() != null && !item.getMetadata().getLabels().isEmpty()) { sb.append(" Lables: [ "); for (Map.Entry<String, String> entry : item.getMetadata().getLabels().entrySet()) { sb.append(entry.getKey()).append(":").append(entry.getValue()).append(" "); } sb.append("]"); } sb.append(" ]"); return sb.toString(); } }
@Override public Boolean delete(List<KubernetesList> lists) { for (KubernetesList list : lists) { for (HasMetadata item : list.getItems()) { ResourceHandler<HasMetadata, HasMetadataVisitiableBuilder> handler = Handlers.get(item.getKind()); if (!handler.delete(client, config, namespace, item)) { return false; } } } return true; }
} catch (Throwable t) { LOGGER.warn("Error while waiting for: [" + meta.getKind() + "] with name: [" + meta.getMetadata().getName() + "] in namespace: [" + meta.getMetadata().getNamespace() + "]: " + t.getMessage()+ ". The resource will be considered not ready."); LOGGER.debug("The error stack trace:", t); } finally {
public void run() { try { T t = get(); //If the resource is gone, we shouldn't wait. if (t == null) { if (count == 0) { queue.put(true); } else { queue.put(new IllegalStateException("Can't wait for " + getType().getSimpleName() + ": " +name + " in namespace: " + namespace + " to scale. Resource is no longer available.")); } return; } int currentReplicas = getCurrentReplicas(t); int desiredReplicas = getDesiredReplicas(t); replicasRef.set(currentReplicas); long generation = t.getMetadata().getGeneration() != null ? t.getMetadata().getGeneration() : -1; long observedGeneration = getObservedGeneration(t); if (observedGeneration >= generation && Objects.equals(desiredReplicas, currentReplicas)) { queue.put(true); } Log.debug("Only {}/{} replicas scheduled for {}: {} in namespace: {} seconds so waiting...", currentReplicas, desiredReplicas, t.getKind(), t.getMetadata().getName(), namespace); } catch (Throwable t) { Log.error("Error while waiting for resource to be scaled.", t); } } };
public static boolean isReady(HasMetadata item) { if (item instanceof Deployment) { return isDeploymentReady((Deployment) item); } else if (item instanceof ReplicaSet) { return isReplicaSetReady((ReplicaSet) item); } else if (item instanceof Pod) { return isPodReady((Pod) item); } else if (item instanceof DeploymentConfig) { return isDeploymentConfigReady((DeploymentConfig) item); } else if (item instanceof ReplicationController) { return isReplicationControllerReady((ReplicationController) item); } else if (item instanceof Endpoints) { return isEndpointsReady((Endpoints) item); } else if (item instanceof Node) { return isNodeReady((Node) item); } else if (item instanceof StatefulSet) { return isStatefulSetReady((StatefulSet) item); } else { throw new IllegalArgumentException("Item needs to be one of [Node, Deployment, ReplicaSet, StatefulSet, Pod, DeploymentConfig, ReplicationController], but was: [" + item != null ? item.getKind() : "Unknown (null)" + "]"); } }
@Override public AttributeSet extract(HasMetadata o) { AttributeSet attributes = new AttributeSet(); if (!Utils.isNullOrEmpty(o.getKind())) { attributes = attributes.add(new Attribute(KIND, o.getKind().toLowerCase())); } if (!Utils.isNullOrEmpty(o.getMetadata().getName())) { attributes = attributes.add(new Attribute(NAME, o.getMetadata().getName())); } if (!Utils.isNullOrEmpty(o.getMetadata().getNamespace())) { attributes = attributes.add(new Attribute(NAMESPACE, o.getMetadata().getNamespace())); } if (o.getMetadata().getLabels() != null) { for (Map.Entry<String, String> label : o.getMetadata().getLabels().entrySet()) { attributes = attributes.add(new Attribute(LABEL_KEY_PREFIX + label.getKey(), label.getValue())); } } return attributes; }
@Override public void run() { LOG.debug("Only {}/{} pod(s) ready for {}: {} in namespace: {} seconds so waiting...", podCount.get(), requiredPodCount, obj.getKind(), obj.getMetadata().getName(), namespace); } }, 0, loggingIntervalMillis, TimeUnit.MILLISECONDS);
private <T extends HasMetadata, V extends VisitableBuilder<T, V>> T create(T resource) { ResourceHandler<T, V> handler = Handlers.get(resource.getKind()); if (handler != null) { return handler.create(client, config, namespace, resource); } throw new IllegalStateException("Could not find handler"); }
private static <T> ResourceHandler handlerOf(T item) { if (item instanceof HasMetadata) { return Handlers.<HasMetadata, HasMetadataVisitiableBuilder>get(((HasMetadata) item).getKind()); } else if (item instanceof KubernetesList) { return new KubernetesListHandler(); } else { throw new IllegalArgumentException("Could not find a registered handler for item: [" + item + "]."); } }
/** * Set fields needed to generate the OwnerReference object * * @param parent The resource which should be used as parent. It will be used to gather the date needed for generating OwnerReferences. */ protected void setOwnerReference(HasMetadata parent) { this.ownerApiVersion = parent.getApiVersion(); this.ownerKind = parent.getKind(); this.ownerUid = parent.getMetadata().getUid(); }
@Override public Boolean delete(List<KubernetesList> lists) { for (KubernetesList list : lists) { for (HasMetadata item : list.getItems()) { ResourceHandler<HasMetadata, HasMetadataVisitiableBuilder> handler = Handlers.get(item.getKind()); if (!handler.delete(client, config, namespace, item)) { return false; } } } return true; }