Пример #1
0

# # 添加api
class Task_ModelView_Api(Task_ModelView_Base, MyappModelRestApi):
    datamodel = SQLAInterface(Task)
    route_base = '/task_modelview/api'
    # list_columns = ['name','label','job_template_url','volume_mount','debug']
    list_columns = [
        'name', 'label', 'pipeline', 'job_template', 'volume_mount',
        'node_selector', 'command', 'overwrite_entrypoint', 'working_dir',
        'args', 'resource_memory', 'resource_cpu', 'resource_gpu', 'timeout',
        'retry', 'created_by', 'changed_by', 'created_on', 'changed_on',
        'monitoring', 'expand'
    ]
    add_columns = [
        'name', 'label', 'job_template', 'pipeline', 'working_dir', 'command',
        'args', 'volume_mount', 'node_selector', 'resource_memory',
        'resource_cpu', 'resource_gpu', 'timeout', 'retry', 'expand'
    ]
    edit_columns = add_columns
    show_columns = [
        'name', 'label', 'pipeline', 'job_template', 'volume_mount',
        'node_selector', 'command', 'overwrite_entrypoint', 'working_dir',
        'args', 'resource_memory', 'resource_cpu', 'resource_gpu', 'timeout',
        'retry', 'created_by', 'changed_by', 'created_on', 'changed_on',
        'monitoring', 'expand'
    ]


appbuilder.add_api(Task_ModelView_Api)
Пример #2
0
from flask_appbuilder import ModelRestApi
from flask_appbuilder.models.sqla.interface import SQLAInterface

from myapp import app, appbuilder
from myapp.models.log import Log
from . import LogMixin


class LogRestApi(LogMixin, ModelRestApi):
    datamodel = SQLAInterface(Log)

    class_permission_name = "LogModelView"
    method_permission_name = {
        "get_list": "list",
        "get": "show",
        "post": "add",
        "put": "edit",
        "delete": "delete",
        "info": "list",
    }
    resource_name = "log"
    allow_browser_login = True
    list_columns = ("user.username", "action", "dttm")


if (not app.config.get("FAB_ADD_SECURITY_VIEWS") is False
        or app.config.get("MYAPP_LOG_VIEW") is False):
    appbuilder.add_api(LogRestApi)
Пример #3
0


    @expose('/link/<service_id>')
    def link(self, service_id):
        service = db.session.query(Service).filter_by(id=service_id).first()
        url = "http://" + service.name + "." + conf.get('SERVICE_DOMAIN')
        if service.host:
            if 'http://' in service.host or 'https://' in service.host:
                url = service.host
            else:
                url = "http://"+service.host
        data={
            "url":url   # 'http://127.0.0.1:8080/video_sample/' #
        }

        # 返回模板
        return self.render_template('link.html', data=data)


class Service_ModelView(Service_ModelView_base,MyappModelView,DeleteMixin):
    datamodel = SQLAInterface(Service)
appbuilder.add_view(Service_ModelView,"内部服务",icon = 'fa-internet-explorer',category = '服务化')


class Service_ModelView_Api(Service_ModelView_base,MyappModelRestApi):
    datamodel = SQLAInterface(Service)
    route_base = '/service_modelview/api'

appbuilder.add_api(Service_ModelView_Api)
Пример #4
0
class Project_User_ModelView(Project_User_ModelView_Base, CompactCRUDMixin,
                             MyappModelView):
    datamodel = SQLAInterface(Project_User)


appbuilder.add_view_no_menu(Project_User_ModelView)


# 添加api
class Project_User_ModelView_Api(Project_User_ModelView_Base,
                                 MyappModelRestApi):
    datamodel = SQLAInterface(Project_User)
    route_base = '/project_user_modelview/api'


appbuilder.add_api(Project_User_ModelView_Api)


# 获取某类project分组
class Project_Filter(MyappFilter):
    # @pysnooper.snoop()
    def apply(self, query, value):
        # user_roles = [role.name.lower() for role in list(get_user_roles())]
        # if "admin" in user_roles:
        #     return query.filter(Project.type == value).order_by(Project.id.desc())
        return query.filter(self.model.type == value).order_by(
            self.model.id.desc())


# 获取自己参加的某类project分组
class Project_Join_Filter(MyappFilter):
Пример #5
0
                    href="/job_template_modelview/list/?_flt_2_name=",
                    icon='fa-flag-o',
                    category='训练',
                    category_icon='fa-envelope')


# 添加api
class Job_Template_ModelView_Api(Job_Template_ModelView_Base,
                                 MyappModelRestApi):
    datamodel = SQLAInterface(Job_Template)
    route_base = '/job_template_modelview/api'
    add_columns = [
        'project', 'images', 'name', 'version', 'describe', 'args', 'env',
        'hostAliases', 'privileged', 'accounts', 'demo', 'expand'
    ]
    edit_columns = add_columns
    list_columns = [
        'project', 'name', 'version', 'describe', 'images', 'workdir',
        'entrypoint', 'args', 'demo', 'env', 'hostAliases', 'privileged',
        'accounts', 'created_by', 'changed_by', 'created_on', 'changed_on',
        'expand'
    ]
    show_columns = [
        'project', 'name', 'version', 'describe', 'images_url', 'workdir',
        'entrypoint', 'args', 'demo', 'env', 'hostAliases', 'privileged',
        'expand'
    ]


appbuilder.add_api(Job_Template_ModelView_Api)
Пример #6
0
# 添加视图和菜单
appbuilder.add_view(Repository_ModelView,
                    "仓库",
                    icon='fa-shopping-basket',
                    category='训练',
                    category_icon='fa-sitemap')


# 添加api
class Repository_ModelView_Api(Repository_ModelView_Base, MyappModelRestApi):
    datamodel = SQLAInterface(Repository)

    route_base = '/repository_modelview/api'


appbuilder.add_api(Repository_ModelView_Api)


# 只能查看到自己归属的项目组的镜像
class Images_Filter(MyappFilter):
    # @pysnooper.snoop(watch_explode=('result'))
    def apply(self, query, func):
        user_roles = [
            role.name.lower() for role in list(self.get_user_roles())
        ]
        if "admin" in user_roles:
            return query

        result = query.order_by(self.model.id.desc())
        return result
Пример #7
0
                    icon='fa-shopping-basket',
                    category='训练')


# 添加api
class NNI_ModelView_Api(NNI_ModelView_Base, MyappModelRestApi):
    datamodel = SQLAInterface(NNI)
    conv = GeneralModelConverter(datamodel)
    route_base = '/nni_modelview/api'
    list_columns = [
        'created_by', 'changed_by', 'created_on', 'changed_on', 'job_type',
        'name', 'namespace', 'describe', 'parallel_trial_count',
        'max_trial_count', 'objective_type', 'objective_goal',
        'objective_metric_name', 'objective_additional_metric_names',
        'algorithm_name', 'algorithm_setting', 'parameters', 'job_json',
        'trial_spec', 'working_dir', 'node_selector', 'image_pull_policy',
        'resource_memory', 'resource_cpu', 'experiment', 'alert_status'
    ]
    add_columns = [
        'job_type', 'name', 'namespace', 'describe', 'parallel_trial_count',
        'max_trial_count', 'objective_type', 'objective_goal',
        'objective_metric_name', 'objective_additional_metric_names',
        'algorithm_name', 'algorithm_setting', 'parameters', 'job_json',
        'working_dir', 'node_selector', 'image_pull_policy', 'resource_memory',
        'resource_cpu'
    ]
    edit_columns = add_columns


appbuilder.add_api(NNI_ModelView_Api)
Пример #8
0
    list_columns = ['project','pipeline_url', 'create_time','change_time','elapsed_time', 'final_status','status', 'username', 'log','stop']
    show_columns = ['name', 'namespace', 'create_time', 'status','task_status', 'annotations_html', 'labels_html', 'spec_html','status_more_html', 'info_json_html']
    crd_name = 'workflow'

appbuilder.add_view(Workflow_ModelView,"运行实例",href='/workflow_modelview/list/?_flt_2_name=&_flt_2_labels=',icon = 'fa-tasks',category = '训练')


# 添加api
class Workflow_ModelView_Api(Crd_ModelView_Base,MyappModelRestApi):

    datamodel = SQLAInterface(Workflow)
    route_base = '/workflow_modelview/api'
    list_columns = ['name', 'namespace_url', 'create_time', 'status', 'username', 'log']
    crd_name = 'workflow'

appbuilder.add_api(Workflow_ModelView_Api)






# appbuilder.add_separator("训练")   # 在指定菜单栏下面的每个子菜单中间添加一个分割线的显示。
#
#
# # list正在运行的tfjob
# class Tfjob_ModelView(Crd_ModelView_Base,MyappModelView,DeleteMixin):
#     label_title = 'tf分布式任务'
#     datamodel = SQLAInterface(Tfjob)
#     crd_name = 'tfjob'
#     list_columns = ['name','pipeline_url','run_instance','namespace_url','create_time','status','username','stop']
Пример #9
0
            __("Stop"),
            __("Stop all Really?"),
            "fa-trash",
            single=False)
    def stop_all(self, items):
        self.base_muldelete(items)
        self.update_redirect()
        return redirect(self.get_redirect())


class Notebook_ModelView(Notebook_ModelView_Base, MyappModelView, DeleteMixin):
    datamodel = SQLAInterface(Notebook)


# 添加视图和菜单
appbuilder.add_view(Notebook_ModelView,
                    "notebook",
                    href="/notebook_modelview/list/?_flt_0_created_by=",
                    icon='fa-file-code-o',
                    category='在线开发',
                    category_icon='fa-code')


# 添加api
class Notebook_ModelView_Api(Notebook_ModelView_Base, MyappModelRestApi):
    datamodel = SQLAInterface(Notebook)
    route_base = '/notebook_modelview/api'


appbuilder.add_api(Notebook_ModelView_Api)
Пример #10
0
class Hyperparameter_Tuning_ModelView_Api(Hyperparameter_Tuning_ModelView_Base,MyappModelRestApi):
    datamodel = SQLAInterface(Hyperparameter_Tuning)
    conv = GeneralModelConverter(datamodel)
    route_base = '/hyperparameter_tuning_modelview/api'
    list_columns = ['created_by','changed_by','created_on','changed_on','job_type','name','namespace','describe',
                    'parallel_trial_count','max_trial_count','max_failed_trial_count','objective_type',
                    'objective_goal','objective_metric_name','objective_additional_metric_names','algorithm_name',
                    'algorithm_setting','parameters','job_json','trial_spec','working_dir','node_selector',
                    'image_pull_policy','resource_memory','resource_cpu','experiment','alert_status']
    add_columns = ['job_type','name','namespace','describe',
                    'parallel_trial_count','max_trial_count','max_failed_trial_count','objective_type',
                    'objective_goal','objective_metric_name','objective_additional_metric_names','algorithm_name',
                    'algorithm_setting','parameters','job_json','working_dir','node_selector','image_pull_policy',
                   'resource_memory','resource_cpu']
    edit_columns = add_columns
appbuilder.add_api(Hyperparameter_Tuning_ModelView_Api)



# list正在运行的Experiments
from myapp.views.view_workflow import Crd_ModelView_Base
from myapp.models.model_katib import Experiments
class Experiments_ModelView(Crd_ModelView_Base,MyappModelView,DeleteMixin):
    label_title='超参调度'
    datamodel = SQLAInterface(Experiments)
    list_columns = ['url','namespace_url','create_time','status','username']
    crd_name = 'experiment'

appbuilder.add_view(Experiments_ModelView,"katib超参调度",icon = 'fa-tasks',category = '超参搜索')

Пример #11
0
    edit_columns = ['status']
    base_filters = [["id", RunHistory_Filter, lambda: []]]  # 设置权限过滤器
    add_form_extra_fields = {
        "status":
        SelectField(_(datamodel.obj.lab('status')),
                    description="状态comed为已识别未提交,created为已提交",
                    widget=Select2Widget(),
                    choices=[['comed', 'comed'], ['created', 'created']]),
    }
    edit_form_extra_fields = add_form_extra_fields


class RunHistory_ModelView(RunHistory_ModelView_Base, MyappModelView,
                           DeleteMixin):
    datamodel = SQLAInterface(RunHistory)


appbuilder.add_view(RunHistory_ModelView,
                    "定时调度记录",
                    icon='fa-clock-o',
                    category='训练')


# 添加api
class RunHistory_ModelView_Api(RunHistory_ModelView_Base, MyappModelRestApi):
    datamodel = SQLAInterface(RunHistory)
    route_base = '/runhistory_modelview/api'


appbuilder.add_api(RunHistory_ModelView_Api)