/** * Registers a Custom Resource Definition Kind */ public static void registerCustomKind(String kind, Class<? extends KubernetesResource> clazz) { registerCustomKind(null, kind, clazz); }
/** * Registers a Custom Resource Definition Kind */ public static void registerCustomKind(String apiVersion, String kind, Class<? extends KubernetesResource> clazz) { MAP.put(getKey(apiVersion, kind), clazz); }
private static Class getInternalTypeForName(String name) { for (int i = 0; i < PACKAGES.size(); i++ ) { Class result = loadClassIfExists(PACKAGES.get(i) + name); if (result != null) { return result; } } return null; }
/** * @return The objects */ @JsonProperty("objects") public List<HasMetadata> getObjects() { List<HasMetadata> sortedObjects = new ArrayList<>(objects); Collections.sort(sortedObjects, new HasMetadataComparator()); return sortedObjects; }
public HasMetadataSet(Collection<? extends HasMetadata> c) { super(new HasMetadataComparator()); addAll(c); }
@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()); } }
@Override public KubernetesResource deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { ObjectNode node = jp.readValueAsTree(); String key = getKey(node); if (key != null) { Class<? extends KubernetesResource> resourceType = getTypeForKey(key); if (resourceType == null) { throw ctxt.mappingException("No resource type found for:" + key); } else { return jp.getCodec().treeToValue(node, resourceType); } } return null; }
static Class getTypeForKey(String key) { Class result = MAP.get(key); if (result == null) { String name = key != null && key.contains(KEY_SEPARATOR) ? key.substring(key.indexOf(KEY_SEPARATOR) + 1) : key; result = getInternalTypeForName(name); } if (result != null) { MAP.put(key, result); } return result; }
private Integer getKindValue(String kind) { try { KindOrder kindOrder = KindOrder.valueOf(kind); switch (kindOrder) { case Secret: return 0; case ServiceAccount: return 1; case OAuthClient: return 2; case Service: return 3; default: return 100; } } catch (IllegalArgumentException e) { return 100; } }
@Override public List<HasMetadata> getItems() { List<HasMetadata> sortedItems = new ArrayList<>(super.getItems()); Collections.sort(sortedItems, new HasMetadataComparator()); return sortedItems; } }
public CustomResourceOperationsImpl(OkHttpClient client, Config config, String apiGroup, String apiVersion, String resourceT, boolean resouceNamespaced, String namespace, String name, Boolean cascading, T item, String resourceVersion, Boolean reloadingFromServer, Class<T> type, Class<L> listType, Class<D> doneableType) { super(client, config, apiGroup, apiVersion, resourceT, namespace, name, cascading, item, resourceVersion, reloadingFromServer, type, listType, doneableType); this.resourceNamespaced = resouceNamespaced; this.apiVersion = getAPIGroup() + "/" + getAPIVersion(); KubernetesDeserializer.registerCustomKind(type.getSimpleName(), type); if (KubernetesResource.class.isAssignableFrom(listType)) { KubernetesDeserializer.registerCustomKind(listType.getSimpleName(), (Class<? extends KubernetesResource>) listType); } }
public HasMetadataSet(SortedSet<HasMetadata> s) { super(new HasMetadataComparator()); addAll(s); }
private static Class getTypeForName(String name) { Class result = MAP.get(name); if (result == null) { result = loadClassIfExists(KUBERNETES_PACKAGE_PREFIX + name); if (result == null) { result = loadClassIfExists(KUBERNETES_EXTENSIONS_PACKAGE_PREFIX + name); if (result == null) { result = loadClassIfExists(OPENSHIFT_PACKAGE_PREFIX + name); } } } if (result != null) { MAP.put(name, result); } return result; }
/** * Return a string representation of the key of the type: <version>#<kind>. */ private static final String getKey(ObjectNode node) { JsonNode apiVersion = node.get(API_VERSION); JsonNode kind = node.get(KIND); return getKey(apiVersion != null ? apiVersion.textValue() : null, kind != null ? kind.textValue() : null); }
public HasMetadataSet() { super(new HasMetadataComparator()); }
public static void registerCustomCrds() { KubernetesDeserializer.registerCustomKind(API_VERSION, AddressPlan.KIND, AddressPlan.class); KubernetesDeserializer.registerCustomKind(API_VERSION, AddressPlanList.KIND, AddressPlanList.class); KubernetesDeserializer.registerCustomKind(API_VERSION, AddressSpacePlan.KIND, AddressSpacePlan.class); KubernetesDeserializer.registerCustomKind(API_VERSION, AddressSpacePlanList.KIND, AddressSpacePlanList.class); KubernetesDeserializer.registerCustomKind(API_VERSION, BrokeredInfraConfig.KIND, BrokeredInfraConfig.class); KubernetesDeserializer.registerCustomKind(API_VERSION, BrokeredInfraConfigList.KIND, BrokeredInfraConfigList.class); KubernetesDeserializer.registerCustomKind(API_VERSION, StandardInfraConfig.KIND, StandardInfraConfig.class); KubernetesDeserializer.registerCustomKind(API_VERSION, StandardInfraConfigList.KIND, StandardInfraConfigList.class); }
public static void registerCustomCrds() { KubernetesDeserializer.registerCustomKind(API_VERSION, Address.KIND, Address.class); KubernetesDeserializer.registerCustomKind(API_VERSION, Address.KIND, AddressList.class); KubernetesDeserializer.registerCustomKind(API_VERSION, Address.KIND, AddressSpace.class); KubernetesDeserializer.registerCustomKind(API_VERSION, Address.KIND, AddressSpaceList.class); KubernetesDeserializer.registerCustomKind(API_VERSION, Address.KIND, AddressSpaceSchema.class); }
public static void registerCustomCrds() { KubernetesDeserializer.registerCustomKind(API_VERSION, User.KIND, User.class); KubernetesDeserializer.registerCustomKind(API_VERSION, UserList.KIND, UserList.class); }
/** * Register custom resource kinds with {@link KubernetesDeserializer} so Fabric8 knows how to deserialize them. */ public static void registerCustomKinds() { for (Class<? extends CustomResource> c : CRDS) { KubernetesDeserializer.registerCustomKind(apiVersion(c), kind(c), c); } }
KubernetesDeserializer.registerCustomKind(DUMMY_CRD_GROUP + "/v1", "Dummy", Dummy.class);