Move agents volume addition into infrastructure provisioner.
Suppress some false positive warnings.
Add some javadocs.
Signed-off-by: Alexander Garagatyi <agaragatyi@codenvy.com>
Replaces DockerInstanceRuntimeInfo#getServers() to use
ServerEvaluationStrategy. Deletes LocalDockerInstanceRuntimeInfo
class as it is no longer needed. Adds MapBinder of
ServerEvaluationStrategy to LocalDockerModule.
Updates DockerInstanceRuntimeInfo tests to be more
readable and removes now unnecessary tests.
Signed-off-by: Angel Misevski <amisevsk@redhat.com>
Adds abstract class ServerEvaluationStrategy which can be used to
change how Che Server communicates with workspace containers.
ServerEvaluationStrategy is meant to be extended to modify the behavior
of DockerInstanceRuntimeInfo#getServers().
Two implementations of ServerEvaluationStrategy are included:
DefaultServerEvaluationStrategy (which is identical to normal
getServers() functionality) and LocalDockerServerEvaluationStrategy,
which uses internal container addresses for workspace containers
and can help in cases where firewall is an issue.
Strategies are provided by ServerEvaluationStrategyProvider, which
uses the new property che.docker.server_evaluation_strategy to choose
which implementation is provided.
Signed-off-by: Angel Misevski <amisevsk@redhat.com>
Refactors workspace bootstrapping code:
Addition of projects volumes to ws-machines and
applying of agents moved to infrastructure provisioner.
It can be overwritten in any implementation of Che and
will be responsible for providing all infrastructure needed for Che implementation functioning.
Allow to configure environment network driver.
Allow to add Agents from the code instead of special files.
These agents can override agents configured in files if identifiers are equal.
Adds possibility to host agents binaries from CHE master.
Reworks agents in a way when they can be downloaded from CHE master if they are not found on FS.
Adds workspace ID to internal representation of environment to allow to use it for internal purposes of machine bootstrapping.
Renames some properties.
Refactors AgentConfigApplier to encapsulate additional code that was used with this class before.
Signed-off-by: Alexander Garagatyi <agaragatyi@codenvy.com>
Allow to override /bin/sh by a "shell" attribute in commands
Change-Id: I19b95868c44f473552a153e29d1ba41abcc19aef
Signed-off-by: Florent BENOIT <fbenoit@codenvy.com>
This property allows communications beetween browser and containers that are on different networks (eg. Docker for Mac or NAT)
Signed-off-by: Mario Loriedo <mloriedo@redhat.com>
Note: it could be used for machine.server.extra.volume for example
Change-Id: Ic029b47511f784d41e906e0c2b570869466f605e
Signed-off-by: Florent BENOIT <fbenoit@codenvy.com>
When we creating machine not from recipe, but from local image,
the image will be removed after machine is created. So if user
creates a machine from codenvy/ubuntu_jdk8 image, the image will be
removed.
In the step of creating a snapshot from machine I have added a special
prefix to image repository to mark this image as snapshot.
In the step of creating machine (recovering from snapshot) I have
added two checks:
do not pull if image is a local snapshot;
remove source image only if the image is a snapshot from registry.
Fix DockerConnector to avoid failing tests on some systems.
Use Future to prevent undefined order of thread execution.
Also change some exception message.
Also cleanup some tests.
Signed-off-by: Alexander Garagatyi <agaragatyi@codenvy.com>
Add possibility to configure api version by che.properties. Set minimum default docker api version 1.20.
Signed-off-by: Aleksandr Andrienko <aandrienko@codenvy.com>
Add networking API to docker client.
Change JSON serialization/deserialization in docker client to
fix incorrect naming policy work of JsonHelper.
Fix entrypoint field in ContainerConfig since it is array of
strings, not single string.
Signed-off-by: Alexander Garagatyi <agaragatyi@codenvy.com>
Read env variable CHE_API_ENDPOINT if property machine.docker.che_api.endpoint is not set
Set Che host IP to eth0 default IP when docker0 is not found on linux
Fixing typos
Signed-off-by: Mario Loriedo <mloriedo@redhat.com>
#1 new docker recipe type
currently we have type:"dockerfile", location: "http://path-to-recipe"
now we could provide
type:"dockerfile", content: "FROM codenvy/foo\nENV FLORENT=TRUE\"
and
type:"image", location or content: "codenvy/foo"
#2 InstanceKey
Up to now, InstanceKey was used to perform snapshot recovery.
But machine source is a way to provide this information.
So remove InstanceKey and replace it by MachineSource (and DockerMachineSource instead of DockerInstanceKey)
InstanceProvider:
void removeInstanceSnapshot(InstanceKey instanceKey)
--> void removeInstanceSnapshot(MachineSource machineSource)
Instance:
InstanceKey saveToSnapshot(String owner)
--> MachineSource saveToSnapshot(String owner)
#3 InstanceProvider model
To avoid also that MachineManager "knows" the inner type, the recipe handling is moved to the instance provider implementation
And as the snapshot handling is with MachineSource (included in MachineConfig included in Machine), no need to give extra InstanceKey parameter
Replace two previous methods
Instance createInstance(Recipe recipe,
Machine machine,
LineConsumer creationLogsOutput)
Instance createInstance(InstanceKey instanceKey,
Machine machine,
LineConsumer creationLogsOutput) throws NotFoundException, InvalidInstanceSnapshotException, MachineException;
by only one:
createInstance(Machine machine,
LineConsumer creationLogsOutput)
Change-Id: Ia7ea97bc1a44059b4892f5db387f54f2e1709fa3
Signed-off-by: Florent BENOIT <fbenoit@codenvy.com>
Fix clean up unused docker containers with container name which contains node host with '-'
Signed-off-by: Aleksandr Andrienko <aandrienko@codenvy.com>
Discover ssh machines architecture automatically.
Remove beta field in machine conf that provides architecture.
Move server-side classes to appropriate package.
Removed workarounds in ssh client and properly wait until command finishes.
Signed-off-by: Alexander Garagatyi <agaragatyi@codenvy.com>
Add path to wsagent into wsagent server url to avoid doing that on client-side
Add class DevMachine on client-side what contain all needed information for communicate with wsagent and terminal
Remove @Named(cheExtensionPath)
Signed-off-by: Vitaly Parfonov <vparfonov@codenvy.com>