Skip to content

Commit 1d0f3db

Browse files
committed
Clean framework and tests
1 parent 29c3955 commit 1d0f3db

13 files changed

Lines changed: 65 additions & 284 deletions

File tree

framework-cloud/framework-cloud-api/src/main/java/org/kie/cloud/api/deployment/WorkbenchDeployment.java

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -67,19 +67,4 @@ public interface WorkbenchDeployment extends Deployment {
6767
* @return Workbench user password
6868
*/
6969
String getPassword();
70-
71-
/**
72-
* Change Kie Workbench user password.
73-
*
74-
* @param newPassword New workbench user password
75-
*/
76-
void changePassword(String newPassword);
77-
78-
/**
79-
* Change Kie Workbench user name and password.
80-
*
81-
* @param newUsername New workbench user name
82-
* @param newPassword New workbench user password.
83-
*/
84-
void changeUsernameAndPassword(String newUsername, String newPassword);
8570
}

framework-cloud/framework-cloud-api/src/main/java/org/kie/cloud/api/scenario/WorkbenchKieServerScenario.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,5 +52,12 @@ default Optional<PrometheusDeployment> getPrometheusDeployment() {
5252
return Optional.empty();
5353
}
5454

55+
/**
56+
* Change Kie Admin username and password for the scenario.
57+
* After the change are deployments updated and method waits for new available pods.
58+
*
59+
* @param username New admin name. (To change only password put there same username as it was)
60+
* @param password New admin password.
61+
*/
5562
void changeUsernameAndPassword(String username, String password);
5663
}

framework-cloud/framework-openshift-operator/src/main/java/org/kie/cloud/openshift/operator/deployment/WorkbenchOperatorDeployment.java

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -60,23 +60,4 @@ public void waitForScale() {
6060
RouterUtil.waitForRouter(getUrl());
6161
}
6262
}
63-
64-
@Override
65-
public void changePassword(String newPassword) {
66-
if (isReady()) {
67-
KieApp kieApp = kieAppClient.withName(OpenShiftConstants.getKieApplicationName()).get();
68-
kieApp.getSpec().getCommonConfig().setAdminPassword(newPassword);
69-
kieAppClient.createOrReplace(kieApp);
70-
}
71-
}
72-
73-
@Override
74-
public void changeUsernameAndPassword(String newUsername, String newPassword) {
75-
if (isReady()) {
76-
KieApp kieApp = kieAppClient.withName(OpenShiftConstants.getKieApplicationName()).get();
77-
kieApp.getSpec().getCommonConfig().setAdminUser(newUsername);
78-
kieApp.getSpec().getCommonConfig().setAdminPassword(newPassword);
79-
kieAppClient.createOrReplace(kieApp);
80-
}
81-
}
8263
}

framework-cloud/framework-openshift-operator/src/main/java/org/kie/cloud/openshift/operator/scenario/WorkbenchKieServerPersistentScenarioImpl.java

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,20 @@
1919
import java.time.Instant;
2020
import java.util.ArrayList;
2121
import java.util.Arrays;
22+
import java.util.Collection;
2223
import java.util.Collections;
2324
import java.util.List;
2425
import java.util.concurrent.TimeUnit;
26+
import java.util.stream.Collectors;
2527

2628
import cz.xtf.core.waiting.SimpleWaiter;
2729
import cz.xtf.core.waiting.SupplierWaiter;
2830
import cz.xtf.core.waiting.WaiterException;
31+
import io.fabric8.kubernetes.api.model.ObjectMeta;
32+
import io.fabric8.kubernetes.api.model.Pod;
2933
import org.kie.cloud.api.deployment.ControllerDeployment;
3034
import org.kie.cloud.api.deployment.Deployment;
35+
import org.kie.cloud.api.deployment.Instance;
3136
import org.kie.cloud.api.deployment.KieServerDeployment;
3237
import org.kie.cloud.api.deployment.SmartRouterDeployment;
3338
import org.kie.cloud.api.deployment.SsoDeployment;
@@ -95,7 +100,7 @@ protected void deployCustomResource() {
95100
// Wait until the operator reconciliate the KieApp and add there missing informations
96101
try {
97102
logger.info("Waiting for 10 seconds to let KieApp deployment start - on Jenkins when kieApp replaced following waiters are skipped as old deployment exists.");
98-
Thread.sleep(TimeUnit.SECONDS.toMillis(10)); //Dummy waiting
103+
Thread.sleep(TimeUnit.SECONDS.toMillis(10)); // TODO what could work better?
99104
} catch (InterruptedException e) {
100105
throw new RuntimeException("Waiting was interrupted", e);
101106
}
@@ -187,14 +192,34 @@ public SsoDeployment getSsoDeployment() {
187192
}
188193

189194
@Override
190-
public void changeUsernameAndPassword(final String username, final String password) {
195+
public void changeUsernameAndPassword(String username, String password) {
191196
if(getDeployments().stream().allMatch(Deployment::isReady)) {
197+
List<String> oldInstances = workbenchDeployment.getInstances().stream().map(Instance::getName).collect(Collectors.toList());
198+
oldInstances.addAll(kieServerDeployment.getInstances().stream().map(Instance::getName).collect(Collectors.toList()));
199+
192200
kieApp = getKieAppClient().withName(OpenShiftConstants.getKieApplicationName()).get();
193201
kieApp.getSpec().getCommonConfig().setAdminUser(username);
194202
kieApp.getSpec().getCommonConfig().setAdminPassword(password);
195203
deployCustomResource();
204+
205+
try {
206+
new SimpleWaiter(() -> areInstancesDeleted(oldInstances)).timeout(TimeUnit.MINUTES, 5).interval(TimeUnit.SECONDS, 5).waitFor();
207+
} catch (WaiterException e) {
208+
throw new RuntimeException("Timeout while deploying application.", e);
209+
}
210+
logger.info("Waiting for Workbench deployment to become ready.");
211+
workbenchDeployment.waitForScale();
212+
213+
logger.info("Waiting for Kie server deployment to become ready.");
214+
kieServerDeployment.waitForScale();
196215
} else{
197216
throw new RuntimeException("Application is not ready for Username and password change. Please check first that application is ready.");
198217
}
199218
}
219+
220+
private boolean areInstancesDeleted(Collection<String> oldInstancesNames) {
221+
return project.getOpenShift().getPods().stream().map(Pod::getMetadata)
222+
.map(ObjectMeta::getName)
223+
.noneMatch(oldInstancesNames::contains);
224+
}
200225
}

framework-cloud/framework-openshift-operator/src/main/java/org/kie/cloud/openshift/operator/scenario/WorkbenchKieServerScenarioImpl.java

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -49,20 +49,20 @@ public class WorkbenchKieServerScenarioImpl extends OpenShiftOperatorScenario<Wo
4949

5050
private WorkbenchDeploymentImpl workbenchDeployment;
5151
private KieServerDeploymentImpl kieServerDeployment;
52-
private final boolean deployPrometheus;
52+
private boolean deployPrometheus;
5353
private PrometheusDeployment prometheusDeployment;
5454

5555
private static final Logger logger = LoggerFactory.getLogger(WorkbenchKieServerScenarioImpl.class);
5656

57-
public WorkbenchKieServerScenarioImpl(final KieApp kieApp, final boolean deployPrometheus) {
57+
public WorkbenchKieServerScenarioImpl(KieApp kieApp, boolean deployPrometheus) {
5858
super(kieApp);
5959
this.deployPrometheus = deployPrometheus;
6060
}
6161

6262
@Override
6363
protected void deployCustomResource() {
6464
// deploy application
65-
getKieAppClient().createOrReplace(kieApp);
65+
getKieAppClient().create(kieApp);
6666
// Wait until the operator reconciliate the KieApp and add there missing informations
6767
new SupplierWaiter<KieApp>(() -> getKieAppClient().withName(OpenShiftConstants.getKieApplicationName()).get(), kieApp -> kieApp.getStatus() != null).reason("Waiting for reconciliation to initialize all fields.").timeout(TimeUnit.MINUTES,1).waitFor();
6868

@@ -82,7 +82,7 @@ protected void deployCustomResource() {
8282
try {
8383
new SimpleWaiter(() -> workbenchDeployment.isReady()).reason("Waiting for Workbench service to be created.").timeout(TimeUnit.MINUTES, 1).waitFor();
8484
new SimpleWaiter(() -> kieServerDeployment.isReady()).reason("Waiting for Kie server service to be created.").timeout(TimeUnit.MINUTES, 1).waitFor();
85-
} catch (final WaiterException e) {
85+
} catch (WaiterException e) {
8686
throw new RuntimeException("Timeout while deploying application.", e);
8787
}
8888

@@ -119,13 +119,13 @@ public KieServerDeployment getKieServerDeployment() {
119119

120120
@Override
121121
public List<Deployment> getDeployments() {
122-
final List<Deployment> deployments = new ArrayList<Deployment>(Arrays.asList(workbenchDeployment, kieServerDeployment));
122+
List<Deployment> deployments = new ArrayList<Deployment>(Arrays.asList(workbenchDeployment, kieServerDeployment));
123123
deployments.removeAll(Collections.singleton(null));
124124
return deployments;
125125
}
126126

127-
private void storeProjectInfoToPersistentVolume(final Deployment deployment, final String persistentVolumeMountPath) {
128-
final String storeCommand = "echo \"Project " + projectName + ", time " + Instant.now() + "\" > " + persistentVolumeMountPath + "/info.txt";
127+
private void storeProjectInfoToPersistentVolume(Deployment deployment, String persistentVolumeMountPath) {
128+
String storeCommand = "echo \"Project " + projectName + ", time " + Instant.now() + "\" > " + persistentVolumeMountPath + "/info.txt";
129129
workbenchDeployment.getInstances().get(0).runCommand("/bin/bash", "-c", storeCommand);
130130
}
131131

@@ -155,14 +155,7 @@ public Optional<PrometheusDeployment> getPrometheusDeployment() {
155155
}
156156

157157
@Override
158-
public void changeUsernameAndPassword(final String username, final String password) {
159-
if(getDeployments().stream().allMatch(Deployment::isReady)) {
160-
kieApp = getKieAppClient().withName(OpenShiftConstants.getKieApplicationName()).get();
161-
kieApp.getSpec().getCommonConfig().setAdminUser(username);
162-
kieApp.getSpec().getCommonConfig().setAdminPassword(password);
163-
deployCustomResource();
164-
} else{
165-
throw new RuntimeException("Application is not ready for Username and password change. Please check first that application is ready.");
166-
}
158+
public void changeUsernameAndPassword(String username, String password) {
159+
throw new UnsupportedOperationException("Not supported yet.");
167160
}
168161
}

framework-cloud/framework-openshift-operator/src/main/java/org/kie/cloud/openshift/operator/scenario/builder/WorkbenchKieServerPersistentScenarioBuilderImpl.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,9 @@ public WorkbenchKieServerPersistentScenarioBuilderImpl() {
6666
kieApp.getSpec().setCommonConfig(commonConfig);
6767

6868
Server server = new Server();
69-
//server.addEnvs(authenticationEnvVars); TODO remove this? not needed as we have set user in common config
7069
kieApp.getSpec().getObjects().addServer(server);
7170

7271
Console console = new Console();
73-
//console.addEnvs(authenticationEnvVars); TODO remove this? not needed as we have set user in common config
7472
kieApp.getSpec().getObjects().setConsole(console);
7573
}
7674

framework-cloud/framework-openshift-templates/src/main/java/org/kie/cloud/openshift/scenario/WorkbenchKieServerPersistentScenarioImpl.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -154,14 +154,13 @@ public SsoDeployment getSsoDeployment() {
154154

155155
@Override
156156
public void changeUsernameAndPassword(String username, String password) {
157-
if(getDeployments().stream().allMatch(Deployment::isReady)) {
158-
deploySecretAppUser(username,password);
157+
if (getDeployments().stream().allMatch(Deployment::isReady)) {
158+
deploySecretAppUser(username, password);
159159
logger.info("Restart the environment to update Workbench deployment.");
160-
getDeployments().parallelStream().forEach(this::scaleToZeroAndBackToReplicas); // if parallel stream make mess because of common fork-join pool use normal stream and adjust scaling (scale all deployments to zero at the same time)
161-
} else{
160+
getDeployments().parallelStream().forEach(this::scaleToZeroAndBackToReplicas);
161+
} else {
162162
throw new RuntimeException("Application is not ready for Username and password change. Please check first that application is ready.");
163163
}
164-
165164
}
166165

167166
private void deploySecretAppUser(String user, String password) {

framework-cloud/framework-openshift-templates/src/main/java/org/kie/cloud/openshift/scenario/WorkbenchKieServerScenarioImpl.java

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,10 @@
1919
import java.util.ArrayList;
2020
import java.util.Arrays;
2121
import java.util.Collections;
22-
import java.util.HashMap;
2322
import java.util.List;
2423
import java.util.Map;
2524
import java.util.Optional;
26-
import java.util.concurrent.TimeUnit;
2725

28-
import cz.xtf.core.waiting.SimpleWaiter;
2926
import org.kie.cloud.api.deployment.ControllerDeployment;
3027
import org.kie.cloud.api.deployment.Deployment;
3128
import org.kie.cloud.api.deployment.KieServerDeployment;
@@ -35,7 +32,6 @@
3532
import org.kie.cloud.api.deployment.constants.DeploymentConstants;
3633
import org.kie.cloud.api.scenario.WorkbenchKieServerScenario;
3734
import org.kie.cloud.common.provider.KieServerControllerClientProvider;
38-
import org.kie.cloud.openshift.constants.OpenShiftConstants;
3935
import org.kie.cloud.openshift.constants.OpenShiftTemplateConstants;
4036
import org.kie.cloud.openshift.deployment.KieServerDeploymentImpl;
4137
import org.kie.cloud.openshift.deployment.WorkbenchDeploymentImpl;
@@ -140,39 +136,6 @@ public Optional<PrometheusDeployment> getPrometheusDeployment() {
140136

141137
@Override
142138
public void changeUsernameAndPassword(String username, String password) {
143-
if(getDeployments().stream().allMatch(Deployment::isReady)) {
144-
deploySecretAppUser(username,password);
145-
logger.info("Restart the environment to update Workbench deployment.");
146-
getDeployments().parallelStream().forEach(this::scaleToZeroAndBackToReplicas); // if parallel stream make mess because of common fork-join pool use normal stream and adjust scaling (scale all deployments to zero at the same time)
147-
} else{
148-
throw new RuntimeException("Application is not ready for Username and password change. Please check first that application is ready.");
149-
}
150-
151-
}
152-
153-
private void deploySecretAppUser(String user, String password) {
154-
logger.info("Delete old secret '{}'", DeploymentConstants.getAppCredentialsSecretName());
155-
project.getOpenShift().secrets().withName(DeploymentConstants.getAppCredentialsSecretName()).delete();
156-
new SimpleWaiter(() -> project.getOpenShift().getSecret(DeploymentConstants.getAppCredentialsSecretName()) == null).timeout(TimeUnit.MINUTES, 2)
157-
.reason("Waiting for old secret to be deleted.")
158-
.waitFor();
159-
160-
logger.info("Creating user secret '{}'", DeploymentConstants.getAppCredentialsSecretName());
161-
Map<String, String> data = new HashMap<>();
162-
data.put(OpenShiftConstants.KIE_ADMIN_USER, user);
163-
data.put(OpenShiftConstants.KIE_ADMIN_PWD, password);
164-
165-
project.createSecret(DeploymentConstants.getAppCredentialsSecretName(), data);
166-
new SimpleWaiter(() -> project.getOpenShift().getSecret(DeploymentConstants.getAppCredentialsSecretName()) != null).timeout(TimeUnit.MINUTES, 2)
167-
.reason("Waiting for new secret to be created.")
168-
.waitFor();
169-
}
170-
171-
private void scaleToZeroAndBackToReplicas(Deployment deployment) {
172-
int replicas = deployment.getInstances().size();
173-
deployment.scale(0);
174-
deployment.waitForScale();
175-
deployment.scale(replicas);
176-
deployment.waitForScale();
139+
throw new UnsupportedOperationException("Not supported yet.");
177140
}
178141
}

framework-cloud/framework-openshift/src/main/java/org/kie/cloud/openshift/deployment/OpenShiftDeployment.java

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@
3030
import java.util.stream.Collectors;
3131

3232
import cz.xtf.core.openshift.OpenShift;
33-
import cz.xtf.core.waiting.SimpleWaiter;
34-
import io.fabric8.kubernetes.api.model.ObjectMeta;
3533
import io.fabric8.kubernetes.api.model.Pod;
3634
import io.fabric8.kubernetes.api.model.Quantity;
3735
import io.fabric8.kubernetes.api.model.Service;
@@ -73,10 +71,6 @@ public void setOpenShift(OpenShift openShift) {
7371
this.openShift = openShift;
7472
}
7573

76-
protected Project getProject() {
77-
return project;
78-
}
79-
8074
@Override
8175
public String getNamespace() {
8276
return project.getName();
@@ -166,7 +160,6 @@ public void waitForScheduled() {
166160
protected void waitUntilAllPodsAreReadyAndRunning(int expectedPods) {
167161
waitUntilAllPodsAreReady(expectedPods);
168162
waitUntilAllPodsAreRunning(expectedPods);
169-
waitUntilOneSetOfDeploymentPodsAvailable();
170163
}
171164

172165
protected void waitUntilAllPodsAreReady(int expectedPods) {
@@ -193,21 +186,6 @@ protected void waitUntilAllPodsAreRunning(int expectedPods) {
193186
}
194187
}
195188

196-
protected void waitUntilOneSetOfDeploymentPodsAvailable() {
197-
try {
198-
new SimpleWaiter(()-> openShift.getPods(getDeploymentConfigName()).stream().map(Pod::getMetadata)
199-
.map(ObjectMeta::getName)
200-
.map(name -> name.substring(0, name.lastIndexOf('-')))
201-
.distinct()
202-
.count() <= 1)
203-
.reason("Waiting for only one set of deployment config pods available " + getDeploymentConfigName())
204-
.timeout(OpenShiftResourceConstants.PODS_START_TO_READY_TIMEOUT)
205-
.waitFor();
206-
} catch (AssertionError e) {
207-
throw new DeploymentTimeoutException("Timeout while waiting for pods to start.");
208-
}
209-
}
210-
211189
@Override
212190
public void setRouterTimeout(Duration timeoutValue) {
213191
RouteList list = getRoutes();

0 commit comments

Comments
 (0)