|  |  | require 'base64'
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | class JupytersController < ApplicationController
 | 
						
						
						
							|  |  |     include JupyterService
 | 
						
						
						
							|  |  |   
 | 
						
						
						
							|  |  |     before_action :shixun, only: [:open, :open1, :test, :save]
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     def import_with_tpm
 | 
						
						
						
							|  |  |         shixun = Shixun.find_by(identifier: params[:identifier])
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         upload_file = params["file"] || params["#{params[:file_param_name]}"] # 这里的file_param_name是为了方便其他插件名称
 | 
						
						
						
							|  |  |         uid_logger("#########################file_params####{params["#{params[:file]}"]}")
 | 
						
						
						
							|  |  |         raise "未上传文件" unless upload_file
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         content = Base64.encode64(upload_file.tempfile.read)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         # upload to server
 | 
						
						
						
							|  |  |         shixun_tomcat = edu_setting('cloud_bridge')
 | 
						
						
						
							|  |  |         uri = "#{shixun_tomcat}/bridge/jupyter/update"
 | 
						
						
						
							|  |  |         tpiID = "tpm#{shixun.id}"
 | 
						
						
						
							|  |  |         params = {tpiID: tpiID, content: content}
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         logger.info "test_juypter: uri->#{uri}, params->#{params}"
 | 
						
						
						
							|  |  |         res = uri_post uri, params
 | 
						
						
						
							|  |  |         if res && res['code'].to_i != 0
 | 
						
						
						
							|  |  |             raise("实训云平台繁忙(繁忙等级:100)")
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         render json: {status: 0}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     def save_with_tpi
 | 
						
						
						
							|  |  |         myshixun = Myshixun.find_by(identifier: params[:identifier])
 | 
						
						
						
							|  |  |         jupyter_save_with_game(myshixun, params[:jupyter_port])
 | 
						
						
						
							|  |  |         render json: {status: 0}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     def save_with_tpm
 | 
						
						
						
							|  |  |         shixun = Shixun.find_by(identifier: params[:identifier])
 | 
						
						
						
							|  |  |         jupyter_save_with_shixun(shixun, params[:jupyter_port])
 | 
						
						
						
							|  |  |         render json: {status: 0}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     def get_info_with_tpi
 | 
						
						
						
							|  |  |         myshixun = Myshixun.find_by(identifier: params[:identifier])
 | 
						
						
						
							|  |  |         url = jupyter_url_with_game(myshixun)
 | 
						
						
						
							|  |  |         port = jupyter_port_with_game(myshixun)
 | 
						
						
						
							|  |  |         render json: {status: 0, url: url, port: port}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     def get_info_with_tpm
 | 
						
						
						
							|  |  |         shixun = Shixun.find_by(identifier: params[:identifier])
 | 
						
						
						
							|  |  |         url = jupyter_url_with_shixun(shixun)
 | 
						
						
						
							|  |  |         port = jupyter_port_with_shixun(shixun)
 | 
						
						
						
							|  |  |         render json: {status: 0, url: url, port: port}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     def reset_with_tpi
 | 
						
						
						
							|  |  |         myshixun = Myshixun.find_by(identifier: params[:identifier])
 | 
						
						
						
							|  |  |         info = jupyter_tpi_reset(myshixun)
 | 
						
						
						
							|  |  |         render json: {status: 0, url: info[:url], port: info[:port]}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     def reset_with_tpm
 | 
						
						
						
							|  |  |         shixun = Shixun.find_by(identifier: params[:identifier])
 | 
						
						
						
							|  |  |         info = jupyter_tpm_reset(shixun)
 | 
						
						
						
							|  |  |         render json: {status: 0, url: info[:url], port: info[:port]}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     def active_with_tpm
 | 
						
						
						
							|  |  |         shixun = Shixun.find_by(identifier: params[:identifier])
 | 
						
						
						
							|  |  |         jupyter_active_tpm(shixun)
 | 
						
						
						
							|  |  |         render json: {status: 0}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     def active_with_tpi
 | 
						
						
						
							|  |  |         myshixun = Myshixun.find_by(identifier: params[:identifier])
 | 
						
						
						
							|  |  |         jupyter_active_tpi(myshixun)
 | 
						
						
						
							|  |  |         render json: {status: 0}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     def timeinfo_with_tpm
 | 
						
						
						
							|  |  |         shixun = Shixun.find_by(identifier: params[:identifier])
 | 
						
						
						
							|  |  |         info = jupyter_timeinfo_tpm(shixun)
 | 
						
						
						
							|  |  |         render json: {status: 0}.merge(info)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     def timeinfo_with_tpi
 | 
						
						
						
							|  |  |         myshixun = Myshixun.find_by(identifier: params[:identifier])
 | 
						
						
						
							|  |  |         info = jupyter_timeinfo_tpi(myshixun)
 | 
						
						
						
							|  |  |         render json: {status: 0}.merge(info)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | end
 |