* Adding support for @Traced annotation to enable whole method tracing
* Trace the creation and removal of workspace
* Trace the start of async start of the workspace
Note that this does not actually trace the async operations but merely
the "kick off" of those. For tracing the async operations, we need to
introduce support for propagating the span ids over the thread boundaries
using opentracing-concurrent.
* Enable tracing across the thread boundaries by augmenting the
WorkspaceSharedPool threadpool with tracing support.
Note that this does not add any new traces, merely enables the async
tracing.
* Add support for adding tags to @Traced methods.
The interceptor also reports the actual invoked class and method
(cleansed of Guice subclass name garbage)
* Trace the startup of pods during workspace startup.
* Trace stop of a workspace
* Introduce utility methods for tracing parts of methods.
* Trace provisioning of k8s objects (in both Kubernetes and Openshift
infrastructures).
* Create a common set of tags and enable strongly typed tags
* Apply the standard tags instead of hardcoded strings.
* Adding @Beta annotations for the tracing-related classes.
This needs to stabilize first.
* Replacing the "Traces" machinery with just annotated package private methods.
This way the code is easier to ready while we also keep all the flexibility
needed for the tag definitions.
* Rename CheTags to more descriptive TracingTags.
* Evaluate the tag values lazily.
This will reduce the load when tracing is switched off.
* Simplify the machine startup tracing logic and distinguish between
true error and mere cancellation due to prior errors.
* Trivial - applying formatting.
* Use getContext().getEnvironment().getMachines().size() to get the precise
number of machines that will be starting up.
* Trivial - change the name of the machine creation tag
* Use a formatted message instead of string concat.
* Update to the latest parent so that che-core-commons-tracing is correctly
incorporated into the full build.
* Fix tracing of the asynchronous stop of a workspace.
* Don't fall over when tracing is not available.
Allows running Che 7 workspace without any user environment but with Che 7 tooling set.
Workspace without environment has an empty list of environments and null value in `defaultEnv` field.
Field `activeEnv` is supposed to be `null` too.
What is changed:
- Migration of DB
- make defaultEnv nullable
- remove env_name from runtimes primary key
- make env_name in runtimes nullable
- Make code respect the fact that there are workspaces with no env
- settings API that returns the list of supported environment types returns no-environment type that - indicates that infrastructure support workspace with no environment at all.
Signed-off-by: Oleksandr Garagatyi <ogaragat@redhat.com>
- Add tests for SideCarToolingProvisioner,
KubernetesBrokerInitContainerApplier, and EphemeralWorkspaceAdapter
- Refactor static methods in EphemeralWorkspaceAdapter to their own
utility class
- Minor bugfixes
Signed-off-by: Angel Misevski <amisevsk@redhat.com>
Changes necessary to ensure that plugin broker can work with ephemeral
workspaces, which, since they use emptyDir volumes, cannot share storage
between pods (as in the separate pod that runs plugin broker). This is
done by adding the plugin broker as an init container on ephemeral
workspaces.
Details:
- Change EphemeralWorkspaceAdapter to make check methods static, add
method to "make" a workspace ephemeral (to ensure how we check for
ephemeral workspaces is done in one place)
- Make PVC strategies include init containers in assigning volumes, to
ensure broker's volumes are correctly set when running as an init
container
- Add KubernetesBrokerInitContainerApplier, which modifies the workspace
env to include the broker as an init container.
Signed-off-by: Angel Misevski <amisevsk@redhat.com>
Deployments have been deprecated from the extensions API group, and are
now in the app API group instead.
Signed-off-by: Angel Misevski <amisevsk@redhat.com>
Reuse emptyDir volumes for containers within the same pod, based on
machine volumes (e.g. workspace_logs mount same Volume for all
containers).
Signed-off-by: Angel Misevski <amisevsk@redhat.com>
Since timeout exception has no message in this particular case
user saw `Workspace failed to start. Cause: null` when timeout exception
occured. Now TimeoutException is wrapped in InfrastructureException with
meaningful message and it is much clear what happened
Adds an ability to run multiple plugin brokers on plugins provisioning phase. They all be part of a single pod.
Use bare pod instead of deployment for plugin brokering to avoid unwanted restarts of brokers.
Adds Theia plugin broker (which is not merged yet, but should be merged soon).
Allow ChePlugin and plugin brokers (by changing ChePlugins) to provide env vars that are provisioned in all the containers of the workspace. This enables brokers/plugins to share info with each other.