Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Address review feedback
Update `v1beta8` references to `v1beta9`.
Fix `sessionSecret` in `SessionHub`.
Fix tests.
Use `org.jboss.logging.Logger` in conversion project.
Also log the endpoints that were triggered.
  • Loading branch information
sgraband committed Feb 28, 2024
commit 9b3fdea56bc5b5e9d490a5f3877dfc92f9ee0187
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ metadata:
name: placeholder-depname
namespace: placeholder-namespace
ownerReferences:
- apiVersion: theia.cloud/v1beta8
- apiVersion: theia.cloud/v1beta9
kind: AppDefinition
name: placeholder
uid: placeholder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ metadata:
name: placeholder-depname
namespace: placeholder-namespace
ownerReferences:
- apiVersion: theia.cloud/v1beta8
- apiVersion: theia.cloud/v1beta9
kind: AppDefinition
name: placeholder
uid: placeholder
Expand Down
2 changes: 1 addition & 1 deletion helm/theia.cloud/test/cdt.yaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
apiVersion: theia.cloud/v1beta8
apiVersion: theia.cloud/v1beta9
kind: AppDefinition
metadata:
name: cdt-cloud-demo
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,109 +43,109 @@ public class SessionHub {
final Optional<String> operatorMessage;

public SessionHub(Session toHub) {
this.metadata = Optional.ofNullable(toHub.getMetadata());
this.name = Optional.ofNullable(toHub.getSpec().getName());
this.appDefinition = Optional.ofNullable(toHub.getSpec().getAppDefinition());
this.user = Optional.ofNullable(toHub.getSpec().getUser());
this.workspace = Optional.ofNullable(toHub.getSpec().getWorkspace());
this.sessionSecret = Optional.ofNullable(toHub.getSpec().getSessionSecret());
this.envVars = Optional.ofNullable(toHub.getSpec().getEnvVars());
this.envVarsFromConfigMaps = Optional.ofNullable(toHub.getSpec().getEnvVarsFromConfigMaps());
this.envVarsFromSecrets = Optional.ofNullable(toHub.getSpec().getEnvVarsFromSecrets());
// Status is not a required field
if (toHub.getStatus() != null) {
this.lastActivity = Optional.ofNullable(toHub.getStatus().getLastActivity());
this.url = Optional.ofNullable(toHub.getStatus().getUrl());
this.error = Optional.ofNullable(toHub.getStatus().getError());
this.operatorStatus = Optional.ofNullable(toHub.getStatus().getOperatorStatus());
this.operatorMessage = Optional.ofNullable(toHub.getStatus().getOperatorMessage());
} else {
this.lastActivity = Optional.empty();
this.url = Optional.empty();
this.error = Optional.empty();
this.operatorStatus = Optional.empty();
this.operatorMessage = Optional.empty();
}
this.metadata = Optional.ofNullable(toHub.getMetadata());
this.name = Optional.ofNullable(toHub.getSpec().getName());
this.appDefinition = Optional.ofNullable(toHub.getSpec().getAppDefinition());
this.user = Optional.ofNullable(toHub.getSpec().getUser());
this.workspace = Optional.ofNullable(toHub.getSpec().getWorkspace());
this.sessionSecret = Optional.ofNullable(toHub.getSpec().getSessionSecret());
this.envVars = Optional.ofNullable(toHub.getSpec().getEnvVars());
this.envVarsFromConfigMaps = Optional.ofNullable(toHub.getSpec().getEnvVarsFromConfigMaps());
this.envVarsFromSecrets = Optional.ofNullable(toHub.getSpec().getEnvVarsFromSecrets());
// Status is not a required field
if (toHub.getStatus() != null) {
this.lastActivity = Optional.ofNullable(toHub.getStatus().getLastActivity());
this.url = Optional.ofNullable(toHub.getStatus().getUrl());
this.error = Optional.ofNullable(toHub.getStatus().getError());
this.operatorStatus = Optional.ofNullable(toHub.getStatus().getOperatorStatus());
this.operatorMessage = Optional.ofNullable(toHub.getStatus().getOperatorMessage());
} else {
this.lastActivity = Optional.empty();
this.url = Optional.empty();
this.error = Optional.empty();
this.operatorStatus = Optional.empty();
this.operatorMessage = Optional.empty();
}
}

@SuppressWarnings("deprecation")
public SessionHub(org.eclipse.theia.cloud.common.k8s.resource.session.v1beta6.SessionV1beta6 toHub) {
this.metadata = Optional.ofNullable(toHub.getMetadata());
this.name = Optional.ofNullable(toHub.getSpec().getName());
this.appDefinition = Optional.ofNullable(toHub.getSpec().getAppDefinition());
this.user = Optional.ofNullable(toHub.getSpec().getUser());
this.url = Optional.ofNullable(toHub.getSpec().getUrl());
this.error = Optional.ofNullable(toHub.getSpec().getError());
this.workspace = Optional.ofNullable(toHub.getSpec().getWorkspace());
this.lastActivity = Optional.ofNullable(toHub.getSpec().getLastActivity());
this.sessionSecret = Optional.ofNullable(toHub.getSpec().getName());
this.envVars = Optional.ofNullable(toHub.getSpec().getEnvVars());
this.envVarsFromConfigMaps = Optional.ofNullable(toHub.getSpec().getEnvVarsFromConfigMaps());
this.envVarsFromSecrets = Optional.ofNullable(toHub.getSpec().getEnvVarsFromSecrets());
// Status is not a required field
if (toHub.getStatus() != null) {
this.operatorStatus = Optional.ofNullable(toHub.getStatus().getOperatorStatus());
this.operatorMessage = Optional.ofNullable(toHub.getStatus().getOperatorMessage());
} else {
this.operatorStatus = Optional.empty();
this.operatorMessage = Optional.empty();
}
this.metadata = Optional.ofNullable(toHub.getMetadata());
this.name = Optional.ofNullable(toHub.getSpec().getName());
this.appDefinition = Optional.ofNullable(toHub.getSpec().getAppDefinition());
this.user = Optional.ofNullable(toHub.getSpec().getUser());
this.url = Optional.ofNullable(toHub.getSpec().getUrl());
this.error = Optional.ofNullable(toHub.getSpec().getError());
this.workspace = Optional.ofNullable(toHub.getSpec().getWorkspace());
this.lastActivity = Optional.ofNullable(toHub.getSpec().getLastActivity());
this.sessionSecret = Optional.ofNullable(toHub.getSpec().getSessionSecret());
this.envVars = Optional.ofNullable(toHub.getSpec().getEnvVars());
this.envVarsFromConfigMaps = Optional.ofNullable(toHub.getSpec().getEnvVarsFromConfigMaps());
this.envVarsFromSecrets = Optional.ofNullable(toHub.getSpec().getEnvVarsFromSecrets());
// Status is not a required field
if (toHub.getStatus() != null) {
this.operatorStatus = Optional.ofNullable(toHub.getStatus().getOperatorStatus());
this.operatorMessage = Optional.ofNullable(toHub.getStatus().getOperatorMessage());
} else {
this.operatorStatus = Optional.empty();
this.operatorMessage = Optional.empty();
}
}

public Optional<ObjectMeta> getMetadata() {
return metadata;
return metadata;
}

public Optional<String> getName() {
return name;
return name;
}

public Optional<String> getAppDefinition() {
return appDefinition;
return appDefinition;
}

public Optional<String> getUser() {
return user;
return user;
}

public Optional<String> getUrl() {
return url;
return url;
}

public Optional<String> getError() {
return error;
return error;
}

public Optional<String> getWorkspace() {
return workspace;
return workspace;
}

public Optional<Long> getLastActivity() {
return lastActivity;
return lastActivity;
}

public Optional<String> getSessionSecret() {
return sessionSecret;
return sessionSecret;
}

public Optional<Map<String, String>> getEnvVars() {
return envVars;
return envVars;
}

public Optional<List<String>> getEnvVarsFromConfigMaps() {
return envVarsFromConfigMaps;
return envVarsFromConfigMaps;
}

public Optional<List<String>> getEnvVarsFromSecrets() {
return envVarsFromSecrets;
return envVarsFromSecrets;
}

public Optional<String> getOperatorStatus() {
return operatorStatus;
return operatorStatus;
}

public Optional<String> getOperatorMessage() {
return operatorMessage;
return operatorMessage;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import org.eclipse.theia.cloud.conversion.mappers.session.SessionV1beta7Mapper;
import org.eclipse.theia.cloud.conversion.mappers.workspace.WorkspaceV1beta3Mapper;
import org.eclipse.theia.cloud.conversion.mappers.workspace.WorkspaceV1beta4Mapper;
import org.jboss.logging.Logger;

import io.fabric8.kubernetes.api.model.HasMetadata;
import io.fabric8.kubernetes.api.model.apiextensions.v1.ConversionReview;
Expand All @@ -33,62 +34,63 @@

@Path("/")
public class ConversionEndpoint {
protected Logger logger = Logger.getLogger(getClass());

private final ConversionController appDefinitionController;
private final ConversionController workspaceController;
private final ConversionController sessionController;

public ConversionEndpoint() {
this.appDefinitionController = new ConversionController();
appDefinitionController.registerMapper(new AppDefinitionV1beta8Mapper());
appDefinitionController.registerMapper(new AppDefinitionV1beta9Mapper());
this.appDefinitionController = new ConversionController();
appDefinitionController.registerMapper(new AppDefinitionV1beta8Mapper());
appDefinitionController.registerMapper(new AppDefinitionV1beta9Mapper());

this.workspaceController = new ConversionController();
workspaceController.registerMapper(new WorkspaceV1beta3Mapper());
workspaceController.registerMapper(new WorkspaceV1beta4Mapper());
this.workspaceController = new ConversionController();
workspaceController.registerMapper(new WorkspaceV1beta3Mapper());
workspaceController.registerMapper(new WorkspaceV1beta4Mapper());

this.sessionController = new ConversionController();
sessionController.registerMapper(new SessionV1beta6Mapper());
sessionController.registerMapper(new SessionV1beta7Mapper());
this.sessionController = new ConversionController();
sessionController.registerMapper(new SessionV1beta6Mapper());
sessionController.registerMapper(new SessionV1beta7Mapper());
}

@POST
@Path("convert/appdefinition")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public ConversionReview convertAppDefinition(ConversionReview conversionReview) {
conversionReview.getRequest().getObjects().forEach(obj -> {
System.out.println("[" + conversionReview.getRequest().getUid() + "] Converting "
+ ((HasMetadata) obj).getKind() + " (version: '" + ((HasMetadata) obj).getApiVersion()
+ "') to version '" + conversionReview.getRequest().getDesiredAPIVersion() + "'");
});
return this.appDefinitionController.handle(conversionReview);
conversionReview.getRequest().getObjects().forEach(obj -> {
logger.info("[convert/appdefinition] [" + conversionReview.getRequest().getUid() + "] Converting "
+ ((HasMetadata) obj).getKind() + " (version: '" + ((HasMetadata) obj).getApiVersion()
+ "') to version '" + conversionReview.getRequest().getDesiredAPIVersion() + "'");
});
return this.appDefinitionController.handle(conversionReview);
}

@POST
@Path("convert/workspace")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public ConversionReview convertWorkspace(ConversionReview conversionReview) {
conversionReview.getRequest().getObjects().forEach(obj -> {
System.out.println("[" + conversionReview.getRequest().getUid() + "] Converting "
+ ((HasMetadata) obj).getKind() + " (version: '" + ((HasMetadata) obj).getApiVersion()
+ "') to version '" + conversionReview.getRequest().getDesiredAPIVersion() + "'");
});
return this.workspaceController.handle(conversionReview);
conversionReview.getRequest().getObjects().forEach(obj -> {
logger.info("[convert/workspace] [" + conversionReview.getRequest().getUid() + "] Converting "
+ ((HasMetadata) obj).getKind() + " (version: '" + ((HasMetadata) obj).getApiVersion()
+ "') to version '" + conversionReview.getRequest().getDesiredAPIVersion() + "'");
});
return this.workspaceController.handle(conversionReview);
}

@POST
@Path("convert/session")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public ConversionReview convertSession(ConversionReview conversionReview) {
conversionReview.getRequest().getObjects().forEach(obj -> {
System.out.println("[" + conversionReview.getRequest().getUid() + "] Converting "
+ ((HasMetadata) obj).getKind() + " (version: '" + ((HasMetadata) obj).getApiVersion()
+ "') to version '" + conversionReview.getRequest().getDesiredAPIVersion() + "'");
});
return this.sessionController.handle(conversionReview);
conversionReview.getRequest().getObjects().forEach(obj -> {
logger.info("[convert/session] [" + conversionReview.getRequest().getUid() + "] Converting "
+ ((HasMetadata) obj).getKind() + " (version: '" + ((HasMetadata) obj).getApiVersion()
+ "') to version '" + conversionReview.getRequest().getDesiredAPIVersion() + "'");
});
return this.sessionController.handle(conversionReview);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ metadata:
theiacloud: proxy
namespace: placeholder-namespace
ownerReferences:
- apiVersion: theia.cloud/v1beta8
- apiVersion: theia.cloud/v1beta9
kind: AppDefinition
name: placeholder
uid: placeholder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ metadata:
theiacloud: emails
namespace: placeholder-namespace
ownerReferences:
- apiVersion: theia.cloud/v1beta8
- apiVersion: theia.cloud/v1beta9
kind: AppDefinition
name: placeholder
uid: placeholder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ metadata:
name: placeholder-depname
namespace: placeholder-namespace
ownerReferences:
- apiVersion: theia.cloud/v1beta8
- apiVersion: theia.cloud/v1beta9
kind: AppDefinition
name: placeholder
uid: placeholder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ metadata:
name: placeholder-depname
namespace: placeholder-namespace
ownerReferences:
- apiVersion: theia.cloud/v1beta8
- apiVersion: theia.cloud/v1beta9
kind: AppDefinition
name: placeholder
uid: placeholder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ metadata:
app: placeholder-app
namespace: placeholder-namespace
ownerReferences:
- apiVersion: theia.cloud/v1beta8
- apiVersion: theia.cloud/v1beta9
kind: AppDefinition
name: placeholder
uid: placeholder
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ metadata:
app: placeholder-app
namespace: placeholder-namespace
ownerReferences:
- apiVersion: theia.cloud/v1beta8
- apiVersion: theia.cloud/v1beta9
kind: AppDefinition
name: placeholder
uid: placeholder
Expand Down
Loading