@Override public void scale(String name, Map<String, String> labels, int desiredReplicas, long amount, TimeUnit timeUnit) throws InterruptedException { String sName = openshiftName(name); getDeploymentsByLabel(labels) .stream() .filter(d -> d.getMetadata().getName().equals(sName)) .map(d -> new DeploymentConfigBuilder(d).editSpec().withReplicas(desiredReplicas).endSpec().build()) .findAny().ifPresent(d -> openShiftClient.deploymentConfigs().createOrReplace(d)); }
protected void update(HasMetadata deployment) { kubeClient().extensions().deployments().createOrReplace((Deployment) deployment); }
private Map.Entry<String, String> allocateUser(HasMetadata deployment) { Secret usernamePoolSecret = kubeClient().secrets().withName(usernamePoolSecretName).get(); Secret consumedUsersSecret = kubeClient().secrets().withName(consumedUsersSecretName).get(); Map<String, String> usernamePool = decodeMap(usernamePoolSecret.getData().get("username-pool")); Collection<String> consumedUsernames = decodeList(consumedUsersSecret.getData().get("consumed-usernames")); // How much of the pool is used userPoolAvailable = ((usernamePool.size() - consumedUsernames.size()) * 100) / usernamePool.size(); // Remove all consumed usernames consumedUsernames.forEach(k -> usernamePool.remove(k)); if (usernamePool.isEmpty()) { throw new IllegalStateException("Username pool is exhausted. Please check Secret " + usernamePoolSecretName + " and " + consumedUsersSecretName); } // Take first element Map.Entry<String, String> pair = usernamePool.entrySet().iterator().next(); consumedUsernames.add(pair.getKey()); Secret updatedSecret = new SecretBuilder() .withNewMetadata() .withAnnotations(consumedUsersSecret.getMetadata().getAnnotations()) .withLabels(consumedUsersSecret.getMetadata().getLabels()) .withName(consumedUsersSecret.getMetadata().getName()) .endMetadata() .withData(null) .withStringData(Collections.singletonMap("consumed-usernames", consumedUsernames.stream().collect(Collectors.joining("\n")))).build(); // TODO handle failure case kubeClient().secrets().createOrReplace(updatedSecret); return pair; }
public void createWhenExistsIsAPatch(TestContext context, boolean cascade) { T resource = resource(); Resource mockResource = mock(resourceType()); when(mockResource.get()).thenReturn(resource); when(mockResource.cascading(cascade)).thenReturn(mockResource); NonNamespaceOperation mockNameable = mock(NonNamespaceOperation.class); when(mockNameable.withName(matches(resource.getMetadata().getName()))).thenReturn(mockResource); MixedOperation mockCms = mock(MixedOperation.class); when(mockCms.inNamespace(matches(resource.getMetadata().getNamespace()))).thenReturn(mockNameable); C mockClient = mock(clientType()); mocker(mockClient, mockCms); AbstractResourceOperator<C, T, L, D, R> op = createResourceOperations(vertx, mockClient); Async async = context.async(); Future<ReconcileResult<T>> fut = op.createOrUpdate(resource()); fut.setHandler(ar -> { if (!ar.succeeded()) { ar.cause().printStackTrace(); } assertTrue(ar.succeeded()); verify(mockResource).get(); verify(mockResource).patch(any()); verify(mockResource, never()).create(any()); verify(mockResource, never()).createNew(); verify(mockResource, never()).createOrReplace(any()); verify(mockCms, never()).createOrReplace(any()); async.complete(); }); }
verify(mockResource, never()).createNew(); verify(mockResource, never()).createOrReplace(any()); verify(mockCms, never()).createOrReplace(any()); async.complete(); });
private static void createSecret(KubernetesClient client) { Secret secret = new SecretBuilder() .withStringData(ImmutableMap.of(SECRET_KEY, CONTAINER_ENV_VAR_FROM_SECRET_VALUE)).withNewMetadata() .withName("container-secret").endMetadata().build(); client.secrets().createOrReplace(secret); secret = new SecretBuilder().withStringData(ImmutableMap.of(SECRET_KEY, POD_ENV_VAR_FROM_SECRET_VALUE)) .withNewMetadata().withName("pod-secret").endMetadata().build(); client.secrets().createOrReplace(secret); }
private static void createSecret(KubernetesClient client) { Secret secret = new SecretBuilder() .withStringData(ImmutableMap.of(SECRET_KEY, CONTAINER_ENV_VAR_FROM_SECRET_VALUE)).withNewMetadata() .withName("container-secret").endMetadata().build(); client.secrets().createOrReplace(secret); secret = new SecretBuilder().withStringData(ImmutableMap.of(SECRET_KEY, POD_ENV_VAR_FROM_SECRET_VALUE)) .withNewMetadata().withName("pod-secret").endMetadata().build(); client.secrets().createOrReplace(secret); }
.addToData("admin.password", b64enc.encodeToString(adminPassword)) .withType("Opaque"); client.secrets().createOrReplace(secretBuilder.build()); } else { log.info("{} already exists, not generating", getKeycloakCredentialsSecretName(env)); configMapBuilder.addToData("caSecretName", getKeycloakCertSecretName(env)); client.configMaps().createOrReplace(configMapBuilder.build()); log.debug("Created config map: {} ", keycloakConfigName); } else if (oauthClientAccessible) { client.configMaps().createOrReplace(existingConfig);