Package org.eclipse.orion.server.docker.server

Examples of org.eclipse.orion.server.docker.server.DockerServer


  private boolean handleConnectDockerContainerRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException {
    try {
      // get the Orion user from the request
      String user = request.getRemoteUser();

      DockerServer dockerServer = getDockerServer();

      // check if the user is already attached to a docker container
      if (dockerServer.isAttachedDockerContainer(user)) {
        // stop the container
        DockerContainer dockerContainer = dockerServer.getDockerContainer(user);
        if (dockerContainer.getStatusCode() == DockerResponse.StatusCode.OK) {
          dockerContainer = dockerServer.stopDockerContainer(dockerContainer.getId());
          if (dockerContainer.getStatusCode() == DockerResponse.StatusCode.STOPPED) {
            if (logger.isInfoEnabled()) {
              logger.info("Stopped Docker Container " + dockerContainer.getIdShort() + " for user " + user);
            }
          }
        }

        // detach the connection for the user
        dockerServer.detachDockerContainer(user);
      }

      // make sure the image for the user has been created
      String userBase = user + "-base";
      DockerImage dockerImage = dockerServer.getDockerImage(userBase);
      if (dockerImage.getStatusCode() != DockerResponse.StatusCode.OK) {

        // user does not have a image, create one
        dockerImage = dockerServer.createDockerUserBaseImage(user);
        if (dockerImage.getStatusCode() != DockerResponse.StatusCode.CREATED) {
          return statusHandler.handleRequest(request, response, new ServerStatus(IStatus.ERROR, HttpServletResponse.SC_BAD_REQUEST, dockerImage.getStatusMessage(), null));
        }
        if (logger.isInfoEnabled()) {
          logger.info("Created Docker Image " + userBase + " for user " + user);
        }
      }

      // get the volume (workspace root) for the user
      String volume = getDockerVolume(user);

      // get the container for the user
      DockerContainer dockerContainer = dockerServer.getDockerContainer(user);
      if (dockerContainer.getStatusCode() != DockerResponse.StatusCode.OK) {

        // user does not have a container, create one
        dockerContainer = dockerServer.createDockerContainer(userBase, user, volume);
        if (dockerContainer.getStatusCode() != DockerResponse.StatusCode.CREATED) {
          return statusHandler.handleRequest(request, response, new ServerStatus(IStatus.ERROR, HttpServletResponse.SC_BAD_REQUEST, dockerContainer.getStatusMessage(), null));
        }
        if (logger.isInfoEnabled()) {
          logger.info("Created Docker Container " + dockerContainer.getIdShort() + " for user " + user);
        }

        // if the user does not have a bashrc, create one
        createBashrc(user);
      }

      // get the exposed ports from the docker image
      List<String> portNumbers = new ArrayList<String>();
      for (String port : dockerImage.getPorts()) {
        if (port.contains("/tcp")) {
          port = port.substring(0, port.indexOf("/tcp"));
        }
        portNumbers.add(port);
      }

      // start the container for the user
      dockerContainer = dockerServer.startDockerContainer(user, volume, portNumbers);
      if (dockerContainer.getStatusCode() == DockerResponse.StatusCode.STARTED) {
        if (logger.isInfoEnabled()) {
          logger.info("Started Docker Container " + dockerContainer.getIdShort() + " for user " + user);
        }
      } else if (dockerContainer.getStatusCode() == DockerResponse.StatusCode.RUNNING) {
        if (logger.isInfoEnabled()) {
          logger.info("Docker Container " + dockerContainer.getIdShort() + " for user " + user + " is already running");
        }
      } else {
        return statusHandler.handleRequest(request, response, new ServerStatus(IStatus.ERROR, HttpServletResponse.SC_BAD_REQUEST, dockerContainer.getStatusMessage(), null));
      }

      // attach to the container for the user
      String originURL = request.getRequestURL().toString();
      DockerResponse dockerResponse = dockerServer.attachDockerContainer(user, originURL);
      if (dockerResponse.getStatusCode() != DockerResponse.StatusCode.ATTACHED) {
        return statusHandler.handleRequest(request, response, new ServerStatus(IStatus.ERROR, HttpServletResponse.SC_BAD_REQUEST, dockerContainer.getStatusMessage(), null));
      }
      if (logger.isInfoEnabled()) {
        logger.info("Attach Docker Container " + dockerContainer.getIdShort() + " for user " + user + " successful");
View Full Code Here


   * @throws ServletException
   */
  private boolean handleDisconnectDockerContainerRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException {
    String user = request.getRemoteUser();

    DockerServer dockerServer = getDockerServer();

    // get the container for the user
    DockerContainer dockerContainer = dockerServer.getDockerContainer(user);
    if (dockerContainer.getStatusCode() == DockerResponse.StatusCode.NO_SUCH_CONTAINER) {
      if (logger.isDebugEnabled()) {
        logger.debug("Docker Container for user " + user + " is not running, no need to stop it.");
      }
      return true;
    }

    // detach if we have an open connection for the user
    if (dockerServer.isAttachedDockerContainer(user)) {
      // stop the running container
      dockerContainer = dockerServer.stopDockerContainer(dockerContainer.getId());
      if (dockerContainer.getStatusCode() != DockerResponse.StatusCode.STOPPED) {
        return statusHandler.handleRequest(request, response, new ServerStatus(IStatus.ERROR, HttpServletResponse.SC_BAD_REQUEST, dockerContainer.getStatusMessage(), null));
      } else {
        if (logger.isInfoEnabled()) {
          logger.info("Stopped Docker Container " + dockerContainer.getIdShort() + " for user " + user);
        }
      }
      dockerServer.detachDockerContainer(user);
    }

    return true;
  }
View Full Code Here

    return true;
  }

  private boolean handleDockerContainerRequest(HttpServletRequest request, HttpServletResponse response, String string) throws ServletException {
    try {
      DockerServer dockerServer = getDockerServer();
      DockerContainer dockerContainer = dockerServer.getDockerContainer(string);
      switch (dockerContainer.getStatusCode()) {
        case SERVER_ERROR :
          response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, dockerContainer.getStatusMessage());
          return false;
        case NO_SUCH_IMAGE :
View Full Code Here

    }
  }

  private boolean handleDockerContainersRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException {
    try {
      DockerServer dockerServer = getDockerServer();
      DockerContainers dockerContainers = dockerServer.getDockerContainers();
      switch (dockerContainers.getStatusCode()) {
        case SERVER_ERROR :
          response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, dockerContainers.getStatusMessage());
          return false;
        case CONNECTION_REFUSED :
View Full Code Here

    }
  }

  private boolean handleDockerImageRequest(HttpServletRequest request, HttpServletResponse response, String string) throws ServletException {
    try {
      DockerServer dockerServer = getDockerServer();
      DockerImage dockerImage = dockerServer.getDockerImage(string);
      switch (dockerImage.getStatusCode()) {
        case SERVER_ERROR :
          response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, dockerImage.getStatusMessage());
          return false;
        case NO_SUCH_IMAGE :
View Full Code Here

    }
  }

  private boolean handleDockerImagesRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException {
    try {
      DockerServer dockerServer = getDockerServer();
      DockerImages dockerImages = dockerServer.getDockerImages();
      switch (dockerImages.getStatusCode()) {
        case SERVER_ERROR :
          response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, dockerImages.getStatusMessage());
          return false;
        case CONNECTION_REFUSED :
View Full Code Here

    }
  }

  private boolean handleDockerVersionRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException {
    try {
      DockerServer dockerServer = getDockerServer();
      DockerVersion dockerVersion = dockerServer.getDockerVersion();
      switch (dockerVersion.getStatusCode()) {
        case BAD_PARAMETER :
          response.sendError(HttpServletResponse.SC_BAD_REQUEST, dockerVersion.getStatusMessage());
          return false;
        case SERVER_ERROR :
View Full Code Here

      String groupId = PreferenceHelper.getString(ServerConstants.CONFIG_DOCKER_GID, "1000").toLowerCase(); //$NON-NLS-1$
      if (logger.isDebugEnabled()) {
        logger.debug("Orion Server running as GID " + groupId);
      }

      dockerServer = new DockerServer(dockerLocationURI, dockerProxyURI, portStart, portEnd, userId, groupId);
      DockerVersion dockerVersion = dockerServer.getDockerVersion();
      if (logger.isDebugEnabled()) {
        if (dockerVersion.getStatusCode() != DockerResponse.StatusCode.OK) {
          logger.error("Cound not connect to docker server " + dockerLocation + ": " + dockerVersion.getStatusMessage());
        } else {
View Full Code Here

   * Test create docker container.
   * @throws URISyntaxException
   */
  public void testCreateDockerContainer() throws URISyntaxException {
    URI dockerLocationURI = new URI(dockerLocation);
    DockerServer dockerServer = new DockerServer(dockerLocationURI, dockerLocationURI, dockerPortStart, dockerPortEnd, dockerUserId, dockerGroupId);

    // create the container
    DockerContainer dockerContainer = dockerServer.createDockerContainer("orion-base", "user", null);
    assertEquals(dockerContainer.getStatusMessage(), DockerResponse.StatusCode.CREATED, dockerContainer.getStatusCode());
    System.out.println("Created Docker Container: Container Id " + dockerContainer.getId() + " Name " + dockerContainer.getName());

    // delete the container
    //DockerResponse dockerResponse = dockerServer.deleteDockerContainer(containerName);
View Full Code Here

   * Test create docker container.
   * @throws URISyntaxException
   */
  public void testCreateDockerOrionBaseImage() throws URISyntaxException {
    URI dockerLocationURI = new URI(dockerLocation);
    DockerServer dockerServer = new DockerServer(dockerLocationURI, dockerLocationURI, dockerPortStart, dockerPortEnd, dockerUserId, dockerGroupId);

    // create the image
    DockerImage dockerImage = dockerServer.createDockerOrionBaseImage();
    assertEquals(dockerImage.getStatusMessage(), DockerResponse.StatusCode.CREATED, dockerImage.getStatusCode());
    System.out.println("Created Docker Image: Image Id " + dockerImage.getId() + " Repository " + dockerImage.getRepository());
  }
View Full Code Here

TOP

Related Classes of org.eclipse.orion.server.docker.server.DockerServer

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.