Merge branch 'dev_jupyter' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_jupyter

chromesetting
杨树林 5 years ago
commit 0d602462ce

@ -1,4 +1,3 @@
require 'net/http'
class JupytersController < ApplicationController class JupytersController < ApplicationController
include JupyterService include JupyterService
@ -6,8 +5,8 @@ class JupytersController < ApplicationController
before_action :shixun, only: [:open, :open1, :test, :save] before_action :shixun, only: [:open, :open1, :test, :save]
def save_with_tpi def save_with_tpi
game = Game.find_by(identifier: params[:identifier]) myshixun = Myshixun.find_by(identifier: params[:identifier])
jupyter_save_with_game(game, params[:jupyter_port]) jupyter_save_with_game(myshixun, params[:jupyter_port])
render json: {status: 0} render json: {status: 0}
end end
@ -18,9 +17,9 @@ class JupytersController < ApplicationController
end end
def get_info_with_tpi def get_info_with_tpi
game = Game.find_by(identifier: params[:identifier]) myshixun = Myshixun.find_by(identifier: params[:identifier])
url = jupyter_url_with_game(game) url = jupyter_url_with_game(myshixun)
port = jupyter_port_with_game(game) port = jupyter_port_with_game(myshixun)
render json: {status: 0, url: url, port: port} render json: {status: 0, url: url, port: port}
end end
@ -32,89 +31,4 @@ class JupytersController < ApplicationController
end end
private
def open
#打开tpm - juypter接口
shixun = @shixun
shixun_tomcat = edu_setting('cloud_bridge')
uri = "#{shixun_tomcat}/bridge/jupyter/get"
tpiID = "tpm#{shixun.id}"
params = {tpiID: tpiID, :containers => "#{Base64.urlsafe_encode64(shixun_container_limit(shixun))}"}
logger.info "test_juypter: uri->#{uri}, params->#{params}"
res = uri_post uri, params
logger.info "test_juypter: #{res}"
render plain: "https://#{res['port']}.jupyter.educoder.net/notebooks/data/workspace/myshixun_#{tpiID}/01.ipynb"
end
def open1
## 打开tpi
game = Game.find(2170158)
shixun = game.myshixun.shixun
shixun_tomcat = edu_setting('cloud_bridge')
uri = "#{shixun_tomcat}/bridge/jupyter/get"
tpiID = game.myshixun.id
params = {tpiID: tpiID, :containers => "#{Base64.urlsafe_encode64(shixun_container_limit(shixun))}"}
res = uri_post uri, params
logger.info "test_juypter: #{res}"
if res && res['code'].to_i != 0
raise("实训云平台繁忙繁忙等级99")
end
repo_save_path = game.myshixun.repo_save_path
render plain: "https://#{res['port']}.jupyter.educoder.net/notebooks/data/workspace/myshixun_#{tpiID}/#{repo_save_path}/01.ipynb"
end
def test
render plain: 'test'
end
def save()
# 保存01.ipy
author_name = current_user.real_name
author_email = current_user.git_mail
message = "User submitted"
#https://47526.jupyter.educoder.net/nbconvert/notebook/data/workspace/myshixun_570461/f2ef5p798r20191210163135/01.ipynb?download=true
src_url = URI("https://47519.jupyter.educoder.net/nbconvert/notebook/data/workspace/myshixun_tpm3575/01.ipynb?download=true")
response = Net::HTTP.get_response(src_url)
if response.code.to_i != 200
raise("获取文件内容失败:#{response.code}")
end
content = response.body
c = GitService.update_file(repo_path: @shixun.repo_path,
file_path: "01.ipynb",
message: message,
content: content,
author_name: author_name,
author_email: author_email)
render plain: 'save: #{c.size}'
end
private
def shixun
@shixun = Shixun.find(3575)
end
end end

@ -36,15 +36,15 @@ module JupyterService
end end
def _open_game_jupyter(game) def _open_game_jupyter(myshixun)
## 打开tpi ## 打开tpi
shixun = game.myshixun.shixun shixun = myshixun.shixun
if shixun.is_jupyter? if shixun.is_jupyter?
shixun_tomcat = edu_setting('cloud_bridge') shixun_tomcat = edu_setting('cloud_bridge')
uri = "#{shixun_tomcat}/bridge/jupyter/get" uri = "#{shixun_tomcat}/bridge/jupyter/get"
tpiID = game.myshixun.id tpiID = myshixun.id
params = {tpiID: tpiID, :containers => "#{Base64.urlsafe_encode64(shixun_container_limit(shixun))}"} params = {tpiID: tpiID, :containers => "#{Base64.urlsafe_encode64(shixun_container_limit(shixun))}"}
res = uri_post uri, params res = uri_post uri, params
@ -56,20 +56,20 @@ module JupyterService
@game_jupyter_port = res['port'] @game_jupyter_port = res['port']
repo_save_path = game.myshixun.repo_save_path repo_save_path = myshixun.repo_save_path
"https://#{res['port']}.jupyter.educoder.net/notebooks/data/workspace/myshixun_#{tpiID}/#{repo_save_path}/01.ipynb" "https://#{res['port']}.jupyter.educoder.net/notebooks/data/workspace/myshixun_#{tpiID}/#{repo_save_path}/01.ipynb"
end end
end end
def jupyter_url_with_game(game) def jupyter_url_with_game(myshixun)
_open_game_jupyter(game) _open_game_jupyter(myshixun)
end end
def jupyter_port_with_game(game) def jupyter_port_with_game(myshixun)
if @game_jupyter_port.to_i <=0 if @game_jupyter_port.to_i <=0
_open_game_jupyter(shixun) _open_game_jupyter(myshixun)
end end
@game_jupyter_port @game_jupyter_port
end end
@ -82,11 +82,11 @@ module JupyterService
tpiID = "tpm#{shixun.id}" tpiID = "tpm#{shixun.id}"
#https://47526.jupyter.educoder.net/nbconvert/notebook/data/workspace/myshixun_570461/f2ef5p798r20191210163135/01.ipynb?download=true #https://47526.jupyter.educoder.net/nbconvert/notebook/data/workspace/myshixun_570461/f2ef5p798r20191210163135/01.ipynb?download=true
src_url = URI("https://#{jupyter_port}.jupyter.educoder.net/nbconvert/notebook/data/workspace/myshixun_#{tpiID}/01.ipynb?download=true") src_url = "https://#{jupyter_port}.jupyter.educoder.net/nbconvert/notebook/data/workspace/myshixun_#{tpiID}/01.ipynb?download=true"
response = Net::HTTP.get_response(src_url) response = Faraday.get(src_url)
if response.code.to_i != 200 if response.status.to_i != 200
raise("获取文件内容失败:#{response.code}") raise("获取文件内容失败:#{response.status}")
end end
content = response.body content = response.body
@ -101,25 +101,25 @@ module JupyterService
return c.size return c.size
end end
def jupyter_save_with_game(game,jupyter_port) def jupyter_save_with_game(myshixun,jupyter_port)
author_name = current_user.real_name author_name = current_user.real_name
author_email = current_user.git_mail author_email = current_user.git_mail
message = "User submitted" message = "User submitted"
tpiID = game.myshixun.id tpiID = myshixun.id
repo_save_path = game.myshixun.repo_save_path repo_save_path = myshixun.repo_save_path
src_url = URI("https://#{jupyter_port}.jupyter.educoder.net/nbconvert/notebook/data/workspace/myshixun_#{tpiID}/#{repo_save_path}/01.ipynb?download=true") src_url = "https://#{jupyter_port}.jupyter.educoder.net/nbconvert/notebook/data/workspace/myshixun_#{tpiID}/#{repo_save_path}/01.ipynb?download=true"
response = Net::HTTP.get_response(src_url) response = Faraday.get(src_url)
if response.code.to_i != 200 if response.status.to_i != 200
raise("获取文件内容失败:#{response.code}") raise("获取文件内容失败:#{response.status}")
end end
content = response.body content = response.body
c = GitService.update_file(repo_path: game.myshixun.repo_path, c = GitService.update_file(repo_path: myshixun.repo_path,
file_path: "01.ipynb", file_path: "01.ipynb",
message: message, message: message,
content: content, content: content,

Loading…
Cancel
Save