def manage_log()

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