in aliyun/log/ext/jupyter_magic.py [0:0]
def manage_log(self, line):
line = line or ""
if line or not __CAN_USE_WIDGET__:
params = line.split(" ")
if len(params) == 5:
print(u"连接中...")
endpoint, key_id, key_val, project, logstore = params
result, detail = self.verify_sls_connection(endpoint, key_id, key_val, project, logstore)
if result:
clear_output()
print(u"连接成功.")
_save_config(endpoint, key_id, key_val, project, logstore)
self.client(reset=True)
else:
print(detail)
else:
print(u"参数错误,请使用GUI配置(无参)或遵循格式:%manage_log <endpoint> <ak_id> <ak_key> <project> <logstore>")
return
import ipywidgets as widgets
w_1 = widgets.ToggleButtons( options=[u'基本配置', u"高级配置"] )
w_endpoint = widgets.Text( description=u'服务入口', value=g_default_region)
w_key_id = widgets.Password( description=u'秘钥ID', value=g_default_ak_id)
w_key_val = widgets.Password( description=u'秘钥Key', value=g_default_ak_key)
w_project = widgets.Text( description=u'默认项目', value=g_default_project)
w_logstore = widgets.Text( description=u'默认日志库', value=g_default_logstore)
w_confirm = widgets.Button(
description=u'修改' if g_default_region else u'确认',
button_style='info',
icon='confirm'
)
w_result = widgets.Label(value='')
hide_layout = widgets.Layout(height="0px")
show_layout = widgets.Layout(height='auto')
progress = widgets.FloatProgress(description="", value=0.0, min=0.0, max=1.0, layout=hide_layout)
def work(progress):
global result
total = 100
for i in range(total):
time.sleep(0.2)
if result is None:
progress.value = float(i+1)/total
else:
progress.value = 100
progress.description = u"完成" if result else u"失败"
break
def on_button_clicked(b):
global result, detail
progress.layout = show_layout
progress.description = u"连接中..."
progress.value = 0
w_result.value = ""
result = None
detail = ""
thread = threading.Thread(target=work, args=(progress,))
thread.start()
result, detail = self.verify_sls_connection(w_endpoint.value, w_key_id.value, w_key_val.value, w_project.value, w_logstore.value)
if result:
w_result.value = u"连接成功."
_save_config(w_endpoint.value, w_key_id.value, w_key_val.value, w_project.value, w_logstore.value)
self.client(reset=True)
else:
w_result.value = str(detail)
w_confirm.on_click(on_button_clicked)
p = widgets.VBox(children=[w_1, w_endpoint, w_key_id, w_key_val, w_project, w_logstore, w_confirm, progress, w_result])
return p