├── .gitignore ├── LICENSE ├── README.md ├── appconns ├── dss-mlflow-appconn │ ├── pom.xml │ └── src │ │ └── main │ │ ├── assembly │ │ └── distribution.xml │ │ ├── icons │ │ └── mlflow.icon │ │ ├── java │ │ └── com │ │ │ └── webank │ │ │ └── wedatasphere │ │ │ └── dss │ │ │ └── appconn │ │ │ └── mlflow │ │ │ ├── MLFlowAppConn.java │ │ │ ├── MLFlowDevelopmentIntegrationStandard.java │ │ │ ├── execution │ │ │ ├── MLFlowExecutionAction.java │ │ │ ├── MLFlowExecutionOperation.java │ │ │ ├── MLFlowExecutionResponseRef.java │ │ │ └── MLFlowExecutionService.java │ │ │ ├── job │ │ │ ├── DistributedModelJob.java │ │ │ ├── ImageBuildJob.java │ │ │ ├── JobManager.java │ │ │ ├── MLFlowJob.java │ │ │ ├── ModelDeployJob.java │ │ │ ├── ModelMonitoringJob.java │ │ │ ├── ModelStorageJob.java │ │ │ └── ReportPushJob.java │ │ │ ├── restapi │ │ │ ├── DistributedModelAPI.java │ │ │ └── ModelFactoryAPI.java │ │ │ └── utils │ │ │ ├── APIClient.java │ │ │ ├── JobParser.java │ │ │ ├── MLFlowConfig.java │ │ │ └── MLFlowNodeUtils.java │ │ └── resources │ │ └── init.sql └── dss-mlss-appconn │ ├── pom.xml │ └── src │ └── main │ ├── assembly │ └── distribution.xml │ ├── icons │ └── mlss.icon │ ├── java │ └── com │ │ └── webank │ │ └── wedatasphere │ │ └── dss │ │ └── appconn │ │ └── mlss │ │ ├── MLSSAppConn.java │ │ ├── MLSSDevelopmentIntegrationStandard.java │ │ ├── MLSSStructureIntegrationStandard.java │ │ ├── execution │ │ ├── MLSSExecutionAction.java │ │ ├── MLSSExecutionResponseRef.java │ │ ├── MLSSExecutionService.java │ │ └── MLSSRefExecutionOperation.java │ │ ├── operation │ │ ├── MLSSRefCopyOperation.java │ │ ├── MLSSRefCreationOperation.java │ │ ├── MLSSRefDeletionOperation.java │ │ ├── MLSSRefExportOperation.java │ │ ├── MLSSRefImportOperation.java │ │ ├── MLSSRefQueryOperation.java │ │ └── MLSSRefUpdateOperation.java │ │ ├── project │ │ ├── MLSSProjectCreationOperation.java │ │ ├── MLSSProjectSearchOperation.java │ │ └── MLSSProjectService.java │ │ ├── ref │ │ └── MLSSResponseRefBuilder.java │ │ ├── restapi │ │ ├── ClientService.java │ │ ├── ExperimentAPI.java │ │ └── ExperimentRunAPI.java │ │ ├── service │ │ ├── MLSSCRUDService.java │ │ ├── MLSSQueryService.java │ │ ├── MLSSRefExportService.java │ │ └── MLSSRefImportService.java │ │ └── utils │ │ ├── ApiClient.java │ │ ├── HttpUtils.java │ │ ├── MLSSClientUtils.java │ │ ├── MLSSConfig.java │ │ ├── MLSSNodeUtils.java │ │ ├── NumberUtils.java │ │ └── URLUtils.java │ └── resources │ └── init.sql ├── cc ├── Caddyfile ├── README.md ├── build │ ├── mlss-apigateway │ │ └── Dockerfile │ └── mlss-controlcenter │ │ └── Dockerfile ├── cmd │ ├── mlss-apigateway │ │ └── main.go │ └── mlss-controlcenter-go │ │ └── main.go ├── config │ ├── apigateway.yml │ └── application.yml ├── go.mod ├── go.sum └── pkg │ ├── apigateway │ └── caddy-plugin │ │ ├── auth.go │ │ ├── auth_test.go │ │ ├── internal │ │ └── exclusion_rule.go │ │ ├── models │ │ └── appConfig.go │ │ └── util │ │ └── yamlUtil.go │ ├── authcache │ └── authCache.go │ ├── bean │ ├── appConfig.go │ ├── result.go │ └── user.go │ ├── client │ ├── client.go │ └── k8s_client.go │ ├── common │ ├── checkURLPattern.go │ ├── converter.go │ ├── intSetUtil.go │ ├── intSetUtil_test.go │ ├── ipUtil.go │ ├── pageUtil.go │ ├── paramCheck.go │ ├── strSetUtil.go │ ├── yamlUtils.go │ └── yamlUtils_test.go │ ├── config │ └── config.go │ ├── constants │ └── constants.go │ ├── controller │ ├── InterController.go │ ├── alertController.go │ ├── authController.go │ ├── groupController.go │ ├── keyController.go │ ├── loginController.go │ ├── logoutController.go │ ├── namespaceController.go │ ├── proxyUserController.go │ ├── resourceController.go │ ├── roleController.go │ ├── sampleController.go │ ├── storageController.go │ └── userController.go │ ├── datasource │ ├── datasource.go │ └── datasource_test.go │ ├── gormmodels │ ├── group_model.go │ ├── user_group_model.go │ └── user_model.go │ ├── logger │ └── logger.go │ ├── manager │ └── resourceManager.go │ ├── middleware │ ├── authInterceptor.go │ ├── context.go │ ├── ipInterceptor.go │ ├── ipInterceptor_test.go │ └── userInterceptor.go │ ├── models │ ├── User_Res.go │ ├── annotations.go │ ├── appConfig.go │ ├── auth_result.go │ ├── cluster.go │ ├── error.go │ ├── group.go │ ├── group_namespace.go │ ├── group_namespace_res.go │ ├── group_storage.go │ ├── group_storage_res.go │ ├── i_m_s_alert.go │ ├── job_request.go │ ├── k8s_notebook.go │ ├── key_pair_request.go │ ├── keypair.go │ ├── labels_request.go │ ├── labels_response.go │ ├── list_namespace_by_rolename_and_user_name_resp.go │ ├── login_request.go │ ├── login_result.go │ ├── namespace.go │ ├── namespace_request.go │ ├── namespace_response.go │ ├── notebook_from_k8s.go │ ├── page_group_list.go │ ├── page_group_namespace_res_list.go │ ├── page_group_storage_res_list.go │ ├── page_labels_response_list.go │ ├── page_namespace_list.go │ ├── page_storage_list.go │ ├── page_user_group_res_list.go │ ├── page_user_list.go │ ├── permission.go │ ├── post_alert_request.go │ ├── post_alert_sub_request.go │ ├── proxy_user.go │ ├── proxy_user_post.go │ ├── proxy_user_put.go │ ├── proxy_users.go │ ├── receiver.go │ ├── receiverAlertRequest.go │ ├── resources_quota.go │ ├── result.go │ ├── role.go │ ├── role_permission.go │ ├── session_user.go │ ├── storage.go │ ├── superadmin.go │ ├── token_msg.go │ ├── types.go │ ├── user.go │ ├── user_group.go │ ├── user_group_info.go │ ├── user_group_res.go │ ├── user_groups.go │ ├── user_list.go │ ├── user_namespace_access_response.go │ ├── user_notebook_address_response.go │ ├── user_request.go │ └── workspace_volume.go │ ├── repo │ ├── groupRepo.go │ ├── hdfs_privs_repo.go │ ├── keyRepo.go │ ├── namespaceRepo.go │ ├── permissionRepo.go │ ├── proxyUserRepo.go │ ├── roleRepo.go │ ├── storageRepo.go │ ├── storageRepo_test.go │ └── userRepo.go │ ├── restapi │ ├── cmd │ │ └── mlss-cc-server │ │ │ └── main.go │ ├── restapi │ │ ├── cmd │ │ │ └── mlss-cc-server │ │ │ │ └── main.go │ │ ├── configure_mlss_cc.go │ │ ├── doc.go │ │ ├── embedded_spec.go │ │ ├── middleware │ │ │ └── contextUtil.go │ │ ├── operations │ │ │ ├── alerts │ │ │ │ ├── post_alert.go │ │ │ │ ├── post_alert_parameters.go │ │ │ │ ├── post_alert_responses.go │ │ │ │ ├── post_alert_urlbuilder.go │ │ │ │ ├── receive_task_alert.go │ │ │ │ ├── receive_task_alert_parameters.go │ │ │ │ ├── receive_task_alert_responses.go │ │ │ │ └── receive_task_alert_urlbuilder.go │ │ │ ├── auths │ │ │ │ ├── admin_user_check.go │ │ │ │ ├── admin_user_check_parameters.go │ │ │ │ ├── admin_user_check_responses.go │ │ │ │ ├── admin_user_check_urlbuilder.go │ │ │ │ ├── check_current_user_namespaced_notebook.go │ │ │ │ ├── check_current_user_namespaced_notebook_parameters.go │ │ │ │ ├── check_current_user_namespaced_notebook_responses.go │ │ │ │ ├── check_current_user_namespaced_notebook_urlbuilder.go │ │ │ │ ├── check_group_by_user.go │ │ │ │ ├── check_group_by_user_parameters.go │ │ │ │ ├── check_group_by_user_responses.go │ │ │ │ ├── check_group_by_user_urlbuilder.go │ │ │ │ ├── check_m_l_flow_resource_access.go │ │ │ │ ├── check_m_l_flow_resource_access_parameters.go │ │ │ │ ├── check_m_l_flow_resource_access_responses.go │ │ │ │ ├── check_m_l_flow_resource_access_urlbuilder.go │ │ │ │ ├── check_namespace.go │ │ │ │ ├── check_namespace_parameters.go │ │ │ │ ├── check_namespace_responses.go │ │ │ │ ├── check_namespace_urlbuilder.go │ │ │ │ ├── check_namespace_user.go │ │ │ │ ├── check_namespace_user_parameters.go │ │ │ │ ├── check_namespace_user_responses.go │ │ │ │ ├── check_namespace_user_urlbuilder.go │ │ │ │ ├── check_notebook.go │ │ │ │ ├── check_notebook_parameters.go │ │ │ │ ├── check_notebook_responses.go │ │ │ │ ├── check_notebook_urlbuilder.go │ │ │ │ ├── check_resource.go │ │ │ │ ├── check_resource_parameters.go │ │ │ │ ├── check_resource_responses.go │ │ │ │ ├── check_resource_urlbuilder.go │ │ │ │ ├── check_url_access.go │ │ │ │ ├── check_url_access_parameters.go │ │ │ │ ├── check_url_access_responses.go │ │ │ │ ├── check_url_access_urlbuilder.go │ │ │ │ ├── check_user_by_group.go │ │ │ │ ├── check_user_by_group_parameters.go │ │ │ │ ├── check_user_by_group_responses.go │ │ │ │ ├── check_user_by_group_urlbuilder.go │ │ │ │ ├── check_user_get_namespace.go │ │ │ │ ├── check_user_get_namespace_parameters.go │ │ │ │ ├── check_user_get_namespace_responses.go │ │ │ │ ├── check_user_get_namespace_urlbuilder.go │ │ │ │ ├── user_namespace_check.go │ │ │ │ ├── user_namespace_check_parameters.go │ │ │ │ ├── user_namespace_check_responses.go │ │ │ │ ├── user_namespace_check_urlbuilder.go │ │ │ │ ├── user_storage_check.go │ │ │ │ ├── user_storage_check_parameters.go │ │ │ │ ├── user_storage_check_responses.go │ │ │ │ ├── user_storage_check_urlbuilder.go │ │ │ │ ├── user_storage_path_check.go │ │ │ │ ├── user_storage_path_check_parameters.go │ │ │ │ ├── user_storage_path_check_responses.go │ │ │ │ └── user_storage_path_check_urlbuilder.go │ │ │ ├── groups │ │ │ │ ├── add_group.go │ │ │ │ ├── add_group_parameters.go │ │ │ │ ├── add_group_responses.go │ │ │ │ ├── add_group_urlbuilder.go │ │ │ │ ├── add_namespace_to_group.go │ │ │ │ ├── add_namespace_to_group_parameters.go │ │ │ │ ├── add_namespace_to_group_responses.go │ │ │ │ ├── add_namespace_to_group_urlbuilder.go │ │ │ │ ├── add_storage_to_group.go │ │ │ │ ├── add_storage_to_group_parameters.go │ │ │ │ ├── add_storage_to_group_responses.go │ │ │ │ ├── add_storage_to_group_urlbuilder.go │ │ │ │ ├── add_user_to_group.go │ │ │ │ ├── add_user_to_group_parameters.go │ │ │ │ ├── add_user_to_group_responses.go │ │ │ │ ├── add_user_to_group_urlbuilder.go │ │ │ │ ├── delete_group_by_id.go │ │ │ │ ├── delete_group_by_id_parameters.go │ │ │ │ ├── delete_group_by_id_responses.go │ │ │ │ ├── delete_group_by_id_urlbuilder.go │ │ │ │ ├── delete_group_by_name.go │ │ │ │ ├── delete_group_by_name_parameters.go │ │ │ │ ├── delete_group_by_name_responses.go │ │ │ │ ├── delete_group_by_name_urlbuilder.go │ │ │ │ ├── delete_group_namespace.go │ │ │ │ ├── delete_group_namespace_parameters.go │ │ │ │ ├── delete_group_namespace_responses.go │ │ │ │ ├── delete_group_namespace_urlbuilder.go │ │ │ │ ├── delete_storage_from_group.go │ │ │ │ ├── delete_storage_from_group_parameters.go │ │ │ │ ├── delete_storage_from_group_responses.go │ │ │ │ ├── delete_storage_from_group_urlbuilder.go │ │ │ │ ├── delete_user_from_group.go │ │ │ │ ├── delete_user_from_group_parameters.go │ │ │ │ ├── delete_user_from_group_responses.go │ │ │ │ ├── delete_user_from_group_urlbuilder.go │ │ │ │ ├── delete_user_group_by_user_id_and_group_id.go │ │ │ │ ├── delete_user_group_by_user_id_and_group_id_parameters.go │ │ │ │ ├── delete_user_group_by_user_id_and_group_id_responses.go │ │ │ │ ├── delete_user_group_by_user_id_and_group_id_urlbuilder.go │ │ │ │ ├── get_all_group_namespace_by_namespace_id.go │ │ │ │ ├── get_all_group_namespace_by_namespace_id_parameters.go │ │ │ │ ├── get_all_group_namespace_by_namespace_id_responses.go │ │ │ │ ├── get_all_group_namespace_by_namespace_id_urlbuilder.go │ │ │ │ ├── get_all_group_storage_by_storage_id.go │ │ │ │ ├── get_all_group_storage_by_storage_id_parameters.go │ │ │ │ ├── get_all_group_storage_by_storage_id_responses.go │ │ │ │ ├── get_all_group_storage_by_storage_id_urlbuilder.go │ │ │ │ ├── get_all_groups.go │ │ │ │ ├── get_all_groups_parameters.go │ │ │ │ ├── get_all_groups_responses.go │ │ │ │ ├── get_all_groups_urlbuilder.go │ │ │ │ ├── get_all_user_group_by_user_id.go │ │ │ │ ├── get_all_user_group_by_user_id_parameters.go │ │ │ │ ├── get_all_user_group_by_user_id_responses.go │ │ │ │ ├── get_all_user_group_by_user_id_urlbuilder.go │ │ │ │ ├── get_current_user_namespace_with_role.go │ │ │ │ ├── get_current_user_namespace_with_role_parameters.go │ │ │ │ ├── get_current_user_namespace_with_role_responses.go │ │ │ │ ├── get_current_user_namespace_with_role_urlbuilder.go │ │ │ │ ├── get_current_user_storage_path.go │ │ │ │ ├── get_current_user_storage_path_parameters.go │ │ │ │ ├── get_current_user_storage_path_responses.go │ │ │ │ ├── get_current_user_storage_path_urlbuilder.go │ │ │ │ ├── get_group_by_group_id.go │ │ │ │ ├── get_group_by_group_id_parameters.go │ │ │ │ ├── get_group_by_group_id_responses.go │ │ │ │ ├── get_group_by_group_id_urlbuilder.go │ │ │ │ ├── get_group_by_name.go │ │ │ │ ├── get_group_by_name_parameters.go │ │ │ │ ├── get_group_by_name_responses.go │ │ │ │ ├── get_group_by_name_urlbuilder.go │ │ │ │ ├── get_group_by_username.go │ │ │ │ ├── get_group_by_username_parameters.go │ │ │ │ ├── get_group_by_username_responses.go │ │ │ │ ├── get_group_by_username_urlbuilder.go │ │ │ │ ├── get_namespace_by_group_id_and_namespace.go │ │ │ │ ├── get_namespace_by_group_id_and_namespace_parameters.go │ │ │ │ ├── get_namespace_by_group_id_and_namespace_responses.go │ │ │ │ ├── get_namespace_by_group_id_and_namespace_urlbuilder.go │ │ │ │ ├── get_namespaces_by_group_id.go │ │ │ │ ├── get_namespaces_by_group_id_parameters.go │ │ │ │ ├── get_namespaces_by_group_id_responses.go │ │ │ │ ├── get_namespaces_by_group_id_urlbuilder.go │ │ │ │ ├── get_user_group_by_user_id_and_group_id.go │ │ │ │ ├── get_user_group_by_user_id_and_group_id_parameters.go │ │ │ │ ├── get_user_group_by_user_id_and_group_id_responses.go │ │ │ │ ├── get_user_group_by_user_id_and_group_id_urlbuilder.go │ │ │ │ ├── get_user_groups.go │ │ │ │ ├── get_user_groups_parameters.go │ │ │ │ ├── get_user_groups_responses.go │ │ │ │ ├── get_user_groups_urlbuilder.go │ │ │ │ ├── update_group.go │ │ │ │ ├── update_group_parameters.go │ │ │ │ ├── update_group_responses.go │ │ │ │ ├── update_group_storage.go │ │ │ │ ├── update_group_storage_parameters.go │ │ │ │ ├── update_group_storage_responses.go │ │ │ │ ├── update_group_storage_urlbuilder.go │ │ │ │ ├── update_group_urlbuilder.go │ │ │ │ ├── update_user_group.go │ │ │ │ ├── update_user_group_parameters.go │ │ │ │ ├── update_user_group_responses.go │ │ │ │ └── update_user_group_urlbuilder.go │ │ │ ├── inters │ │ │ │ ├── auth_interceptor.go │ │ │ │ ├── auth_interceptor_parameters.go │ │ │ │ ├── auth_interceptor_responses.go │ │ │ │ ├── auth_interceptor_urlbuilder.go │ │ │ │ ├── ip_interceptor.go │ │ │ │ ├── ip_interceptor_parameters.go │ │ │ │ ├── ip_interceptor_responses.go │ │ │ │ ├── ip_interceptor_urlbuilder.go │ │ │ │ ├── user_interceptor.go │ │ │ │ ├── user_interceptor_parameters.go │ │ │ │ ├── user_interceptor_responses.go │ │ │ │ └── user_interceptor_urlbuilder.go │ │ │ ├── keys │ │ │ │ ├── add_key.go │ │ │ │ ├── add_key_parameters.go │ │ │ │ ├── add_key_responses.go │ │ │ │ ├── add_key_urlbuilder.go │ │ │ │ ├── delete_by_name.go │ │ │ │ ├── delete_by_name_parameters.go │ │ │ │ ├── delete_by_name_responses.go │ │ │ │ ├── delete_by_name_urlbuilder.go │ │ │ │ ├── get_by_name.go │ │ │ │ ├── get_by_name_parameters.go │ │ │ │ ├── get_by_name_responses.go │ │ │ │ └── get_by_name_urlbuilder.go │ │ │ ├── logins │ │ │ │ ├── get_rsa_pub_key.go │ │ │ │ ├── get_rsa_pub_key_parameters.go │ │ │ │ ├── get_rsa_pub_key_responses.go │ │ │ │ ├── get_rsa_pub_key_urlbuilder.go │ │ │ │ ├── l_d_a_p_login.go │ │ │ │ ├── l_d_a_p_login_parameters.go │ │ │ │ ├── l_d_a_p_login_responses.go │ │ │ │ ├── l_d_a_p_login_urlbuilder.go │ │ │ │ ├── u_m_login.go │ │ │ │ ├── u_m_login_parameters.go │ │ │ │ ├── u_m_login_responses.go │ │ │ │ └── u_m_login_urlbuilder.go │ │ │ ├── logouts │ │ │ │ ├── logout.go │ │ │ │ ├── logout_parameters.go │ │ │ │ ├── logout_responses.go │ │ │ │ └── logout_urlbuilder.go │ │ │ ├── mlss_cc_api.go │ │ │ ├── namespaces │ │ │ │ ├── add_namespace.go │ │ │ │ ├── add_namespace_parameters.go │ │ │ │ ├── add_namespace_responses.go │ │ │ │ ├── add_namespace_urlbuilder.go │ │ │ │ ├── delete_namespace_by_name.go │ │ │ │ ├── delete_namespace_by_name_parameters.go │ │ │ │ ├── delete_namespace_by_name_responses.go │ │ │ │ ├── delete_namespace_by_name_urlbuilder.go │ │ │ │ ├── get_all_namespaces.go │ │ │ │ ├── get_all_namespaces_parameters.go │ │ │ │ ├── get_all_namespaces_responses.go │ │ │ │ ├── get_all_namespaces_urlbuilder.go │ │ │ │ ├── get_my_namespace.go │ │ │ │ ├── get_my_namespace_parameters.go │ │ │ │ ├── get_my_namespace_responses.go │ │ │ │ ├── get_my_namespace_urlbuilder.go │ │ │ │ ├── get_namespace_by_name.go │ │ │ │ ├── get_namespace_by_name_parameters.go │ │ │ │ ├── get_namespace_by_name_responses.go │ │ │ │ ├── get_namespace_by_name_urlbuilder.go │ │ │ │ ├── list_namespace_by_role_name_and_user_name.go │ │ │ │ ├── list_namespace_by_role_name_and_user_name_parameters.go │ │ │ │ ├── list_namespace_by_role_name_and_user_name_responses.go │ │ │ │ ├── list_namespace_by_role_name_and_user_name_urlbuilder.go │ │ │ │ ├── update_namespace.go │ │ │ │ ├── update_namespace_parameters.go │ │ │ │ ├── update_namespace_responses.go │ │ │ │ └── update_namespace_urlbuilder.go │ │ │ ├── proxy_user │ │ │ │ ├── add_proxy_user.go │ │ │ │ ├── add_proxy_user_parameters.go │ │ │ │ ├── add_proxy_user_responses.go │ │ │ │ ├── add_proxy_user_urlbuilder.go │ │ │ │ ├── delete_proxy_user.go │ │ │ │ ├── delete_proxy_user_parameters.go │ │ │ │ ├── delete_proxy_user_responses.go │ │ │ │ ├── delete_proxy_user_urlbuilder.go │ │ │ │ ├── get_proxy_user.go │ │ │ │ ├── get_proxy_user_by_user_id.go │ │ │ │ ├── get_proxy_user_by_user_id_parameters.go │ │ │ │ ├── get_proxy_user_by_user_id_responses.go │ │ │ │ ├── get_proxy_user_by_user_id_urlbuilder.go │ │ │ │ ├── get_proxy_user_parameters.go │ │ │ │ ├── get_proxy_user_responses.go │ │ │ │ ├── get_proxy_user_urlbuilder.go │ │ │ │ ├── list_proxy_user.go │ │ │ │ ├── list_proxy_user_parameters.go │ │ │ │ ├── list_proxy_user_responses.go │ │ │ │ ├── list_proxy_user_urlbuilder.go │ │ │ │ ├── proxy_user_check.go │ │ │ │ ├── proxy_user_check_parameters.go │ │ │ │ ├── proxy_user_check_responses.go │ │ │ │ ├── proxy_user_check_urlbuilder.go │ │ │ │ ├── update_proxy_user.go │ │ │ │ ├── update_proxy_user_parameters.go │ │ │ │ ├── update_proxy_user_responses.go │ │ │ │ └── update_proxy_user_urlbuilder.go │ │ │ ├── resources │ │ │ │ ├── add_labels.go │ │ │ │ ├── add_labels_parameters.go │ │ │ │ ├── add_labels_responses.go │ │ │ │ ├── add_labels_urlbuilder.go │ │ │ │ ├── get_labels_of_node.go │ │ │ │ ├── get_labels_of_node_parameters.go │ │ │ │ ├── get_labels_of_node_responses.go │ │ │ │ ├── get_labels_of_node_urlbuilder.go │ │ │ │ ├── get_node_by_name.go │ │ │ │ ├── get_node_by_name_parameters.go │ │ │ │ ├── get_node_by_name_responses.go │ │ │ │ ├── get_node_by_name_urlbuilder.go │ │ │ │ ├── remove_node_label.go │ │ │ │ ├── remove_node_label_parameters.go │ │ │ │ ├── remove_node_label_responses.go │ │ │ │ ├── remove_node_label_urlbuilder.go │ │ │ │ ├── set_namespace_r_q.go │ │ │ │ ├── set_namespace_r_q_parameters.go │ │ │ │ ├── set_namespace_r_q_responses.go │ │ │ │ ├── set_namespace_r_q_urlbuilder.go │ │ │ │ ├── update_labels.go │ │ │ │ ├── update_labels_parameters.go │ │ │ │ ├── update_labels_responses.go │ │ │ │ └── update_labels_urlbuilder.go │ │ │ ├── roles │ │ │ │ ├── add_role.go │ │ │ │ ├── add_role_parameters.go │ │ │ │ ├── add_role_responses.go │ │ │ │ ├── add_role_urlbuilder.go │ │ │ │ ├── get_role_by_id.go │ │ │ │ ├── get_role_by_id_parameters.go │ │ │ │ ├── get_role_by_id_responses.go │ │ │ │ ├── get_role_by_id_urlbuilder.go │ │ │ │ ├── get_role_by_name.go │ │ │ │ ├── get_role_by_name_parameters.go │ │ │ │ ├── get_role_by_name_responses.go │ │ │ │ ├── get_role_by_name_urlbuilder.go │ │ │ │ ├── get_roles.go │ │ │ │ ├── get_roles_parameters.go │ │ │ │ ├── get_roles_responses.go │ │ │ │ ├── get_roles_urlbuilder.go │ │ │ │ ├── update_role.go │ │ │ │ ├── update_role_parameters.go │ │ │ │ ├── update_role_responses.go │ │ │ │ └── update_role_urlbuilder.go │ │ │ ├── samples │ │ │ │ ├── sample_get.go │ │ │ │ ├── sample_get_parameters.go │ │ │ │ ├── sample_get_responses.go │ │ │ │ ├── sample_get_urlbuilder.go │ │ │ │ ├── sample_post.go │ │ │ │ ├── sample_post_parameters.go │ │ │ │ ├── sample_post_responses.go │ │ │ │ └── sample_post_urlbuilder.go │ │ │ ├── storages │ │ │ │ ├── add_storage.go │ │ │ │ ├── add_storage_parameters.go │ │ │ │ ├── add_storage_responses.go │ │ │ │ ├── add_storage_urlbuilder.go │ │ │ │ ├── delete_storage_by_id.go │ │ │ │ ├── delete_storage_by_id_parameters.go │ │ │ │ ├── delete_storage_by_id_responses.go │ │ │ │ ├── delete_storage_by_id_urlbuilder.go │ │ │ │ ├── delete_storage_by_path.go │ │ │ │ ├── delete_storage_by_path_parameters.go │ │ │ │ ├── delete_storage_by_path_responses.go │ │ │ │ ├── delete_storage_by_path_urlbuilder.go │ │ │ │ ├── get_all_storage.go │ │ │ │ ├── get_all_storage_parameters.go │ │ │ │ ├── get_all_storage_responses.go │ │ │ │ ├── get_all_storage_urlbuilder.go │ │ │ │ ├── get_storage_by_path.go │ │ │ │ ├── get_storage_by_path_parameters.go │ │ │ │ ├── get_storage_by_path_responses.go │ │ │ │ ├── get_storage_by_path_urlbuilder.go │ │ │ │ ├── update_storage.go │ │ │ │ ├── update_storage_parameters.go │ │ │ │ ├── update_storage_responses.go │ │ │ │ └── update_storage_urlbuilder.go │ │ │ └── users │ │ │ │ ├── add_user.go │ │ │ │ ├── add_user_parameters.go │ │ │ │ ├── add_user_responses.go │ │ │ │ ├── add_user_urlbuilder.go │ │ │ │ ├── delete_user_by_id.go │ │ │ │ ├── delete_user_by_id_parameters.go │ │ │ │ ├── delete_user_by_id_responses.go │ │ │ │ ├── delete_user_by_id_urlbuilder.go │ │ │ │ ├── delete_user_by_name.go │ │ │ │ ├── delete_user_by_name_parameters.go │ │ │ │ ├── delete_user_by_name_responses.go │ │ │ │ ├── delete_user_by_name_urlbuilder.go │ │ │ │ ├── get_all_users.go │ │ │ │ ├── get_all_users_parameters.go │ │ │ │ ├── get_all_users_responses.go │ │ │ │ ├── get_all_users_urlbuilder.go │ │ │ │ ├── get_my_users.go │ │ │ │ ├── get_my_users_parameters.go │ │ │ │ ├── get_my_users_responses.go │ │ │ │ ├── get_my_users_urlbuilder.go │ │ │ │ ├── get_s_a_by_name.go │ │ │ │ ├── get_s_a_by_name_parameters.go │ │ │ │ ├── get_s_a_by_name_responses.go │ │ │ │ ├── get_s_a_by_name_urlbuilder.go │ │ │ │ ├── get_user_by_user_id.go │ │ │ │ ├── get_user_by_user_id_parameters.go │ │ │ │ ├── get_user_by_user_id_responses.go │ │ │ │ ├── get_user_by_user_id_urlbuilder.go │ │ │ │ ├── get_user_by_user_name.go │ │ │ │ ├── get_user_by_user_name_parameters.go │ │ │ │ ├── get_user_by_user_name_responses.go │ │ │ │ ├── get_user_by_user_name_urlbuilder.go │ │ │ │ ├── get_user_token.go │ │ │ │ ├── get_user_token_parameters.go │ │ │ │ ├── get_user_token_responses.go │ │ │ │ ├── get_user_token_urlbuilder.go │ │ │ │ ├── update_user.go │ │ │ │ ├── update_user_parameters.go │ │ │ │ ├── update_user_responses.go │ │ │ │ └── update_user_urlbuilder.go │ │ └── server.go │ └── swagger │ │ └── swagger.yaml │ ├── router │ ├── alertRouter.go │ ├── groupRouter.go │ ├── resourceRouter.go │ ├── router.go │ └── userRouter.go │ ├── service │ ├── authService.go │ ├── groupService.go │ ├── keyService.go │ ├── loginService.go │ ├── mlflowService.go │ ├── namespaceService.go │ ├── permissionService.go │ ├── proxyUserService.go │ ├── resourceService.go │ ├── roleService.go │ ├── storageService.go │ ├── storageService_test.go │ └── userService.go │ └── umclient │ └── umclient.go ├── di ├── LICENSE ├── NOTICE ├── README.md ├── cli │ ├── cmd │ │ ├── common.go │ │ ├── delete.go │ │ ├── download.go │ │ ├── download_completion.go │ │ ├── emetrics.go │ │ ├── emetrics_completion.go │ │ ├── halt.go │ │ ├── init.go │ │ ├── init_completion.go │ │ ├── list.go │ │ ├── loglines.go │ │ ├── loglines_completion.go │ │ ├── logs.go │ │ ├── logs_completion.go │ │ ├── model_id_completion.go │ │ ├── show.go │ │ ├── train.go │ │ ├── train_completion.go │ │ └── version.go │ ├── main.go │ └── metadata │ │ └── commands.go ├── commons │ ├── certs │ │ ├── copy.sh │ │ ├── generate.sh │ │ └── install.sh │ ├── client │ │ ├── base_client.go │ │ ├── dss │ │ │ └── dss_client.go │ │ └── linkis │ │ │ ├── linkis_client.go │ │ │ └── linkis_client_test.go │ ├── config │ │ ├── config.go │ │ └── config_test.go │ ├── constants │ │ └── constants.go │ ├── controlcenter │ │ └── client │ │ │ ├── cc_client.go │ │ │ └── cc_client_test.go │ ├── datasource │ │ └── mysql │ │ │ └── datasource.go │ ├── errors.go │ ├── framework │ │ └── framework.go │ ├── kubectl │ │ ├── configmap.go │ │ └── kubectl.go │ ├── locker │ │ └── locker.go │ ├── logger │ │ ├── logger.go │ │ └── v2 │ │ │ ├── logger.go │ │ │ └── logger_test.go │ ├── metricsmon │ │ ├── metricsmon.go │ │ ├── metricsmon_test.go │ │ └── metricspusher.go │ ├── mock_service │ │ └── lcm.go │ ├── models │ │ ├── alert_dto.go │ │ ├── alert_request.go │ │ ├── base_model.go │ │ ├── dss_flow_vo.go │ │ ├── experiment.go │ │ ├── experiment_run.go │ │ ├── exporting_flow_definition_yaml_VO.go │ │ ├── group.go │ │ ├── namespaceVO.go │ │ ├── result.go │ │ └── user.go │ ├── operators │ │ └── tf-operator │ │ │ ├── apis │ │ │ ├── common │ │ │ │ ├── v1 │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── types.go │ │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ │ └── zz_generated.defaults.go │ │ │ │ └── v1beta2 │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── types.go │ │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ │ └── zz_generated.defaults.go │ │ │ └── tensorflow │ │ │ │ ├── v1 │ │ │ │ ├── constants.go │ │ │ │ ├── defaults.go │ │ │ │ ├── defaults_test.go │ │ │ │ ├── doc.go │ │ │ │ ├── register.go │ │ │ │ ├── types.go │ │ │ │ ├── util.go │ │ │ │ ├── util_test.go │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ └── zz_generated.defaults.go │ │ │ │ ├── v1alpha1 │ │ │ │ ├── defaults.go │ │ │ │ ├── doc.go │ │ │ │ ├── register.go │ │ │ │ ├── types.go │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ └── zz_generated.defaults.go │ │ │ │ ├── v1alpha2 │ │ │ │ ├── constants.go │ │ │ │ ├── defaults.go │ │ │ │ ├── doc.go │ │ │ │ ├── openapi_generated.go │ │ │ │ ├── register.go │ │ │ │ ├── types.go │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ └── zz_generated.defaults.go │ │ │ │ ├── v1beta2 │ │ │ │ ├── constants.go │ │ │ │ ├── defaults.go │ │ │ │ ├── defaults_test.go │ │ │ │ ├── doc.go │ │ │ │ ├── register.go │ │ │ │ ├── types.go │ │ │ │ ├── util.go │ │ │ │ ├── util_test.go │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ └── zz_generated.defaults.go │ │ │ │ └── validation │ │ │ │ ├── validation.go │ │ │ │ └── validation_test.go │ │ │ └── client │ │ │ └── clientset │ │ │ └── versioned │ │ │ ├── clientset.go │ │ │ ├── doc.go │ │ │ ├── fake │ │ │ ├── clientset_generated.go │ │ │ ├── doc.go │ │ │ └── register.go │ │ │ ├── scheme │ │ │ ├── doc.go │ │ │ └── register.go │ │ │ └── typed │ │ │ ├── kubeflow │ │ │ ├── v1alpha1 │ │ │ │ ├── doc.go │ │ │ │ ├── generated_expansion.go │ │ │ │ ├── kubeflow_client.go │ │ │ │ └── tfjob.go │ │ │ └── v1alpha2 │ │ │ │ ├── doc.go │ │ │ │ ├── generated_expansion.go │ │ │ │ ├── kubeflow_client.go │ │ │ │ └── tfjob.go │ │ │ └── tensorflow │ │ │ ├── v1 │ │ │ ├── doc.go │ │ │ ├── fake │ │ │ │ ├── doc.go │ │ │ │ ├── fake_tensorflow_client.go │ │ │ │ └── fake_tfjob.go │ │ │ ├── generated_expansion.go │ │ │ ├── tensorflow_client.go │ │ │ └── tfjob.go │ │ │ └── v1beta2 │ │ │ ├── doc.go │ │ │ ├── fake │ │ │ ├── doc.go │ │ │ ├── fake_tensorflow_client.go │ │ │ └── fake_tfjob.go │ │ │ ├── generated_expansion.go │ │ │ ├── tensorflow_client.go │ │ │ └── tfjob.go │ ├── repo │ │ ├── base_repo.go │ │ ├── experiment_repo.go │ │ ├── experiment_repo_test.go │ │ ├── experiment_run_repo.go │ │ ├── experiment_run_repo_test.go │ │ ├── experiment_tag_repo.go │ │ └── user_repo.go │ ├── service │ │ ├── client │ │ │ └── lcm.go │ │ ├── lcm.pb.go │ │ ├── lcm.proto │ │ └── lifecycle.go │ ├── tfjob │ │ ├── common.go │ │ ├── const.go │ │ ├── dashboard_helper.go │ │ ├── delete.go │ │ ├── get.go │ │ ├── get_advanced.go │ │ ├── gpu.go │ │ ├── list.go │ │ ├── pod_helper.go │ │ ├── resource.go │ │ ├── submit.go │ │ ├── submit_tfjob.go │ │ ├── sync_code.go │ │ ├── tensorboard.go │ │ ├── top_node.go │ │ ├── trainer.go │ │ ├── trainer_interface.go │ │ └── trainer_tensorflow.go │ ├── types │ │ ├── nodeinfo_share.go │ │ ├── serving.go │ │ ├── submit_flags.go │ │ ├── top_node_gpushare.go │ │ └── training.go │ ├── util │ │ ├── base.go │ │ ├── charts.go │ │ ├── collection_utils.go │ │ ├── config │ │ │ └── loader.go │ │ ├── duration.go │ │ ├── errors.go │ │ ├── grpc.go │ │ ├── helm │ │ │ ├── helm.go │ │ │ └── helm_advanced.go │ │ ├── kubectl │ │ │ ├── configmap.go │ │ │ └── kubectl.go │ │ ├── logs.go │ │ ├── math.go │ │ ├── port_allocate.go │ │ ├── port_allocate_test.go │ │ ├── random.go │ │ ├── random │ │ │ └── random.go │ │ ├── resource.go │ │ ├── retry.go │ │ ├── signal.go │ │ ├── stdcopynoframedebug.go │ │ ├── validate.go │ │ ├── volume.go │ │ ├── zipper.go │ │ └── zipper_test.go │ └── workflow │ │ └── workflow.go ├── go.mod ├── go.sum ├── jobmonitor │ ├── Dockerfile │ ├── certs │ │ ├── ca.crt │ │ ├── ca.key │ │ ├── client.crt │ │ ├── client.csr │ │ ├── client.key │ │ ├── server.crt │ │ ├── server.csr │ │ └── server.key │ ├── charts │ │ ├── custom-serving │ │ │ ├── .helmignore │ │ │ ├── CHANGELOG.md │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── deployment.yaml │ │ │ │ └── service.yaml │ │ │ └── values.yaml │ │ ├── mpijob │ │ │ ├── .helmignore │ │ │ ├── CHANGELOG.md │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── ingress.yaml │ │ │ │ ├── mpijob.yaml │ │ │ │ ├── service.yaml │ │ │ │ └── tensorboard.yaml │ │ │ └── values.yaml │ │ ├── sparkjob │ │ │ ├── .helmignore │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── _helpers.tpl │ │ │ │ └── sparkjob.yaml │ │ │ └── values.yaml │ │ ├── tf-horovod │ │ │ ├── .helmignore │ │ │ ├── CHANGELOG.md │ │ │ ├── Chart.yaml │ │ │ ├── README.md │ │ │ ├── dist-values.yaml │ │ │ ├── templates │ │ │ │ ├── NOTES.txt │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── config.yaml │ │ │ │ ├── deployment.yaml │ │ │ │ ├── ingress.yaml │ │ │ │ ├── job.yaml │ │ │ │ ├── jobmon.yaml │ │ │ │ ├── master-service.yaml │ │ │ │ ├── service.yaml │ │ │ │ └── statefulset.yaml │ │ │ └── values.yaml │ │ ├── tfjob │ │ │ ├── .helmignore │ │ │ ├── CHANGELOG.md │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── NOTES.txt │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── deployment.yaml │ │ │ │ ├── ingress.yaml │ │ │ │ ├── pdb.yaml │ │ │ │ ├── service.yaml │ │ │ │ └── tfjob.yaml │ │ │ └── values.yaml │ │ ├── tfserving │ │ │ ├── .helmignore │ │ │ ├── Chart.yaml │ │ │ ├── OWNERS │ │ │ ├── README.md │ │ │ ├── templates │ │ │ │ ├── NOTES.txt │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── config.yaml │ │ │ │ ├── deployment.yaml │ │ │ │ ├── istiorouting.yaml │ │ │ │ └── service.yaml │ │ │ └── values.yaml │ │ ├── training │ │ │ ├── .helmignore │ │ │ ├── CHANGELOG.md │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── deployment.yaml │ │ │ │ ├── job.yaml │ │ │ │ └── service.yaml │ │ │ └── values.yaml │ │ ├── trtserving │ │ │ ├── .helmignore │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── deployment.yaml │ │ │ │ └── service.yaml │ │ │ └── values.yaml │ │ └── volcanojob │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ ├── _helpers.tpl │ │ │ └── batch_v1alpha1_job.yaml │ │ │ └── values.yaml │ ├── jobmonitor │ │ └── jobmonitor.go │ └── main.go ├── lcm │ ├── Dockerfile │ ├── certs │ │ ├── ca.crt │ │ ├── ca.key │ │ ├── client.crt │ │ ├── client.csr │ │ ├── client.key │ │ ├── server.crt │ │ ├── server.csr │ │ └── server.key │ ├── charts │ │ ├── custom-serving │ │ │ ├── .helmignore │ │ │ ├── CHANGELOG.md │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── deployment.yaml │ │ │ │ └── service.yaml │ │ │ └── values.yaml │ │ ├── mpijob │ │ │ ├── .helmignore │ │ │ ├── CHANGELOG.md │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── ingress.yaml │ │ │ │ ├── mpijob.yaml │ │ │ │ ├── service.yaml │ │ │ │ └── tensorboard.yaml │ │ │ └── values.yaml │ │ ├── sparkjob │ │ │ ├── .helmignore │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── _helpers.tpl │ │ │ │ └── sparkjob.yaml │ │ │ └── values.yaml │ │ ├── tf-horovod │ │ │ ├── .helmignore │ │ │ ├── CHANGELOG.md │ │ │ ├── Chart.yaml │ │ │ ├── README.md │ │ │ ├── dist-values.yaml │ │ │ ├── templates │ │ │ │ ├── NOTES.txt │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── config.yaml │ │ │ │ ├── deployment.yaml │ │ │ │ ├── ingress.yaml │ │ │ │ ├── job.yaml │ │ │ │ ├── jobmon.yaml │ │ │ │ ├── master-service.yaml │ │ │ │ ├── service.yaml │ │ │ │ └── statefulset.yaml │ │ │ └── values.yaml │ │ ├── tfjob │ │ │ ├── .helmignore │ │ │ ├── CHANGELOG.md │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── NOTES.txt │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── deployment.yaml │ │ │ │ ├── ingress.yaml │ │ │ │ ├── pdb.yaml │ │ │ │ ├── service.yaml │ │ │ │ └── tfjob.yaml │ │ │ └── values.yaml │ │ ├── tfserving │ │ │ ├── .helmignore │ │ │ ├── Chart.yaml │ │ │ ├── OWNERS │ │ │ ├── README.md │ │ │ ├── templates │ │ │ │ ├── NOTES.txt │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── config.yaml │ │ │ │ ├── deployment.yaml │ │ │ │ ├── istiorouting.yaml │ │ │ │ └── service.yaml │ │ │ └── values.yaml │ │ ├── training │ │ │ ├── .helmignore │ │ │ ├── CHANGELOG.md │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── deployment.yaml │ │ │ │ ├── job.yaml │ │ │ │ └── service.yaml │ │ │ └── values.yaml │ │ ├── trtserving │ │ │ ├── .helmignore │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ │ ├── _helpers.tpl │ │ │ │ ├── deployment.yaml │ │ │ │ └── service.yaml │ │ │ └── values.yaml │ │ └── volcanojob │ │ │ ├── Chart.yaml │ │ │ ├── templates │ │ │ ├── _helpers.tpl │ │ │ └── batch_v1alpha1_job.yaml │ │ │ └── values.yaml │ ├── controller │ │ ├── Dockerfile │ │ ├── Makefile │ │ ├── README.md │ │ └── src │ │ │ ├── controller.sh │ │ │ ├── record-status.sh │ │ │ └── utility.sh │ ├── coord │ │ └── coord.go │ ├── lcmconfig │ │ ├── lcmconfig.go │ │ └── lcmconfig_test.go │ ├── main.go │ └── service │ │ └── lcm │ │ ├── constants.go │ │ ├── container_helper.go │ │ ├── container_helper_extensions.go │ │ ├── helper │ │ ├── helper.go │ │ └── volumes.go │ │ ├── job │ │ ├── job.go │ │ └── job_deployment.go │ │ ├── job_monitor_deployment_helpers.go │ │ ├── lcm_repository.go │ │ ├── lcm_utils.go │ │ ├── learner │ │ ├── container.go │ │ ├── container_test.go │ │ ├── envvars.go │ │ ├── image.go │ │ ├── image_test.go │ │ ├── imagesecrets.go │ │ ├── learner.go │ │ ├── pod_test.go │ │ ├── secrets.go │ │ ├── statefulset_test.go │ │ └── volumes.go │ │ ├── learner_deployment_helpers.go │ │ ├── logging_impl.go │ │ ├── ps_deployment_helpers.go │ │ ├── resources.go │ │ ├── service_impl.go │ │ ├── service_impl_test.go │ │ ├── splitTraining.go.bak │ │ ├── split_training.go │ │ ├── training │ │ ├── ml_pipeline_training.go │ │ ├── operator_job_training.go │ │ ├── single_job_training.go │ │ └── training.go │ │ ├── utils │ │ └── lcm_utils.go │ │ └── volumes.go ├── localstack │ ├── Dockerfile │ └── es_starter.py ├── metrics │ ├── Dockerfile │ ├── client │ │ └── client.go │ ├── docker │ │ └── certs │ │ │ ├── ca.crt │ │ │ ├── ca.key │ │ │ ├── client.crt │ │ │ ├── client.csr │ │ │ ├── client.key │ │ │ ├── server.crt │ │ │ ├── server.csr │ │ │ └── server.key │ ├── log_collectors │ │ ├── Makefile │ │ ├── __init__.py │ │ ├── emetrics_file │ │ │ ├── Dockerfile │ │ │ ├── Makefile │ │ │ ├── __init__.py │ │ │ └── src │ │ │ │ ├── __init__.py │ │ │ │ ├── run.sh │ │ │ │ ├── tail_em_from_emfile.py │ │ │ │ └── tail_to_tds.py │ │ ├── regex_extractor │ │ │ ├── Dockerfile │ │ │ ├── Makefile │ │ │ ├── __init__.py │ │ │ └── src │ │ │ │ ├── __init__.py │ │ │ │ ├── extract_from_log.py │ │ │ │ ├── patterns │ │ │ │ └── common-patterns │ │ │ │ └── run.sh │ │ ├── simple_log_collector │ │ │ ├── Dockerfile │ │ │ ├── Makefile │ │ │ ├── __init__.py │ │ │ └── src │ │ │ │ ├── __init__.py │ │ │ │ ├── run.sh │ │ │ │ └── tail_to_tds.py │ │ ├── tensorboard │ │ │ ├── Dockerfile │ │ │ ├── Makefile │ │ │ ├── __init__.py │ │ │ └── src │ │ │ │ ├── __init__.py │ │ │ │ ├── extract_tb.py │ │ │ │ ├── run.sh │ │ │ │ └── tail_to_tds.py │ │ └── training_data_service_client │ │ │ ├── __init__.py │ │ │ ├── certs │ │ │ ├── ca.crt │ │ │ ├── ca.key │ │ │ ├── client.crt │ │ │ ├── client.csr │ │ │ ├── client.key │ │ │ ├── server.crt │ │ │ ├── server.csr │ │ │ └── server.key │ │ │ ├── connect.py │ │ │ ├── extract_datetime.py │ │ │ ├── match_log_file.py │ │ │ ├── print_json.py │ │ │ ├── push_em_line.py │ │ │ ├── push_log_line.py │ │ │ ├── scan_log_dirs.py │ │ │ ├── states.py │ │ │ ├── tail_to_em_from_emfile.py │ │ │ ├── tail_to_tds.py │ │ │ ├── training_data_buffered.py │ │ │ ├── training_data_pb2.py │ │ │ └── training_data_pb2_grpc.py │ ├── main.go │ └── service │ │ ├── datetimeutils.go │ │ ├── grpc_training_data_v1 │ │ ├── python │ │ │ ├── __init__.py │ │ │ ├── connect.py │ │ │ ├── push_log_line.py │ │ │ ├── testx.py │ │ │ ├── training_data_pb2.py │ │ │ └── training_data_pb2_grpc.py │ │ ├── training_data.pb.go │ │ ├── training_data.proto │ │ ├── training_data.swagger.json │ │ └── training_data.swagger.yml │ │ ├── logging.go │ │ ├── service_impl.go │ │ ├── service_impl_test.go │ │ └── tds_config.go ├── pkg │ ├── client │ │ ├── base_client.go │ │ ├── dss │ │ │ ├── dss_client.go │ │ │ └── dss_client_test.go │ │ ├── dss1_0 │ │ │ ├── dss_client.go │ │ │ └── dss_client_test.go │ │ ├── linkis │ │ │ ├── linkis_client.go │ │ │ └── linkis_client_test.go │ │ ├── linkis1_0 │ │ │ ├── linkis_client.go │ │ │ └── linkis_client_test.go │ │ └── mlflow │ │ │ ├── mlflow_client.go │ │ │ └── mlflow_client_test.go │ ├── datasource │ │ └── mysql │ │ │ └── datasource.go │ ├── operators │ │ └── tf-operator │ │ │ ├── apis │ │ │ ├── common │ │ │ │ ├── v1 │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── types.go │ │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ │ └── zz_generated.defaults.go │ │ │ │ └── v1beta2 │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── types.go │ │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ │ └── zz_generated.defaults.go │ │ │ └── tensorflow │ │ │ │ ├── v1 │ │ │ │ ├── constants.go │ │ │ │ ├── defaults.go │ │ │ │ ├── defaults_test.go │ │ │ │ ├── doc.go │ │ │ │ ├── register.go │ │ │ │ ├── types.go │ │ │ │ ├── util.go │ │ │ │ ├── util_test.go │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ └── zz_generated.defaults.go │ │ │ │ ├── v1alpha1 │ │ │ │ ├── defaults.go │ │ │ │ ├── doc.go │ │ │ │ ├── register.go │ │ │ │ ├── types.go │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ └── zz_generated.defaults.go │ │ │ │ ├── v1alpha2 │ │ │ │ ├── constants.go │ │ │ │ ├── defaults.go │ │ │ │ ├── doc.go │ │ │ │ ├── openapi_generated.go │ │ │ │ ├── register.go │ │ │ │ ├── types.go │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ └── zz_generated.defaults.go │ │ │ │ ├── v1beta2 │ │ │ │ ├── constants.go │ │ │ │ ├── defaults.go │ │ │ │ ├── defaults_test.go │ │ │ │ ├── doc.go │ │ │ │ ├── register.go │ │ │ │ ├── types.go │ │ │ │ ├── util.go │ │ │ │ ├── util_test.go │ │ │ │ ├── zz_generated.deepcopy.go │ │ │ │ └── zz_generated.defaults.go │ │ │ │ └── validation │ │ │ │ ├── validation.go │ │ │ │ └── validation_test.go │ │ │ └── client │ │ │ └── clientset │ │ │ └── versioned │ │ │ ├── clientset.go │ │ │ ├── doc.go │ │ │ ├── fake │ │ │ ├── clientset_generated.go │ │ │ ├── doc.go │ │ │ └── register.go │ │ │ ├── scheme │ │ │ ├── doc.go │ │ │ └── register.go │ │ │ └── typed │ │ │ ├── kubeflow │ │ │ ├── v1alpha1 │ │ │ │ ├── doc.go │ │ │ │ ├── generated_expansion.go │ │ │ │ ├── kubeflow_client.go │ │ │ │ └── tfjob.go │ │ │ └── v1alpha2 │ │ │ │ ├── doc.go │ │ │ │ ├── generated_expansion.go │ │ │ │ ├── kubeflow_client.go │ │ │ │ └── tfjob.go │ │ │ └── tensorflow │ │ │ ├── v1 │ │ │ ├── doc.go │ │ │ ├── fake │ │ │ │ ├── doc.go │ │ │ │ ├── fake_tensorflow_client.go │ │ │ │ └── fake_tfjob.go │ │ │ ├── generated_expansion.go │ │ │ ├── tensorflow_client.go │ │ │ └── tfjob.go │ │ │ └── v1beta2 │ │ │ ├── doc.go │ │ │ ├── fake │ │ │ ├── doc.go │ │ │ ├── fake_tensorflow_client.go │ │ │ └── fake_tfjob.go │ │ │ ├── generated_expansion.go │ │ │ ├── tensorflow_client.go │ │ │ └── tfjob.go │ ├── repo │ │ ├── base_repo.go │ │ ├── experiment_repo.go │ │ ├── experiment_repo_test.go │ │ ├── experiment_run_repo.go │ │ ├── experiment_run_repo_test.go │ │ ├── experiment_tag_repo.go │ │ └── user_repo.go │ ├── types │ │ ├── nodeinfo_share.go │ │ ├── serving.go │ │ ├── submit_flags.go │ │ ├── top_node_gpushare.go │ │ └── training.go │ ├── util │ │ ├── base.go │ │ ├── charts.go │ │ ├── config │ │ │ └── loader.go │ │ ├── duration.go │ │ ├── errors.go │ │ ├── helm │ │ │ ├── helm.go │ │ │ └── helm_advanced.go │ │ ├── kubectl │ │ │ ├── configmap.go │ │ │ └── kubectl.go │ │ ├── logs.go │ │ ├── port_allocate.go │ │ ├── port_allocate_test.go │ │ ├── random.go │ │ ├── resource.go │ │ ├── retry.go │ │ ├── validate.go │ │ └── volume.go │ ├── v2 │ │ ├── client │ │ │ └── pipeline_client.go │ │ ├── model │ │ │ ├── base_model.go │ │ │ ├── experiment.go │ │ │ ├── experiment_run.go │ │ │ └── third │ │ │ │ ├── model_version.go │ │ │ │ ├── processline_version.go │ │ │ │ ├── user.go │ │ │ │ └── user_role.go │ │ ├── repo │ │ │ ├── base_repo.go │ │ │ ├── experiment.go │ │ │ ├── experiment_run.go │ │ │ ├── experiment_run_node.go │ │ │ └── third │ │ │ │ ├── model_version.go │ │ │ │ ├── processline_version.go │ │ │ │ ├── user.go │ │ │ │ └── user_role.go │ │ └── util │ │ │ └── util.go │ └── workflow │ │ └── workflow.go ├── restapi │ ├── Dockerfile │ ├── Makefile │ ├── api_v1 │ │ ├── client │ │ │ ├── dlaas_client.go │ │ │ ├── dss_user_info │ │ │ │ ├── dss_user_info_client.go │ │ │ │ ├── get_dss_user_info_parameters.go │ │ │ │ └── get_dss_user_info_responses.go │ │ │ ├── events │ │ │ │ ├── create_event_endpoint_parameters.go │ │ │ │ ├── create_event_endpoint_responses.go │ │ │ │ ├── delete_event_endpoint_parameters.go │ │ │ │ ├── delete_event_endpoint_responses.go │ │ │ │ ├── events_client.go │ │ │ │ ├── get_event_endpoint_parameters.go │ │ │ │ ├── get_event_endpoint_responses.go │ │ │ │ ├── get_event_type_endpoints_parameters.go │ │ │ │ └── get_event_type_endpoints_responses.go │ │ │ ├── experiment_runs │ │ │ │ ├── create_experiment_run_parameters.go │ │ │ │ ├── create_experiment_run_responses.go │ │ │ │ ├── delete_experiment_run_parameters.go │ │ │ │ ├── delete_experiment_run_responses.go │ │ │ │ ├── experiment_runs_client.go │ │ │ │ ├── get_experiment_run_execution_parameters.go │ │ │ │ ├── get_experiment_run_execution_responses.go │ │ │ │ ├── get_experiment_run_log_parameters.go │ │ │ │ ├── get_experiment_run_log_responses.go │ │ │ │ ├── get_experiment_run_parameters.go │ │ │ │ ├── get_experiment_run_responses.go │ │ │ │ ├── get_experiment_run_status_parameters.go │ │ │ │ ├── get_experiment_run_status_responses.go │ │ │ │ ├── get_experiment_runs_history_parameters.go │ │ │ │ ├── get_experiment_runs_history_responses.go │ │ │ │ ├── kill_experiment_run_parameters.go │ │ │ │ ├── kill_experiment_run_responses.go │ │ │ │ ├── list_experiment_runs_parameters.go │ │ │ │ └── list_experiment_runs_responses.go │ │ │ ├── experiments │ │ │ │ ├── code_upload_parameters.go │ │ │ │ ├── code_upload_responses.go │ │ │ │ ├── create_experiment_parameters.go │ │ │ │ ├── create_experiment_responses.go │ │ │ │ ├── create_experiment_tag_parameters.go │ │ │ │ ├── create_experiment_tag_responses.go │ │ │ │ ├── delete_experiment_parameters.go │ │ │ │ ├── delete_experiment_responses.go │ │ │ │ ├── delete_experiment_tag_parameters.go │ │ │ │ ├── delete_experiment_tag_responses.go │ │ │ │ ├── experiments_client.go │ │ │ │ ├── export_experiment_dss_parameters.go │ │ │ │ ├── export_experiment_dss_responses.go │ │ │ │ ├── export_experiment_parameters.go │ │ │ │ ├── export_experiment_responses.go │ │ │ │ ├── get_experiment_parameters.go │ │ │ │ ├── get_experiment_responses.go │ │ │ │ ├── import_experiment_dss_parameters.go │ │ │ │ ├── import_experiment_dss_responses.go │ │ │ │ ├── import_experiment_parameters.go │ │ │ │ ├── import_experiment_responses.go │ │ │ │ ├── list_experiments_parameters.go │ │ │ │ ├── list_experiments_responses.go │ │ │ │ ├── update_experiment_info_parameters.go │ │ │ │ ├── update_experiment_info_responses.go │ │ │ │ ├── update_experiment_parameters.go │ │ │ │ └── update_experiment_responses.go │ │ │ ├── linkis_job │ │ │ │ ├── get_linkis_job_log_parameters.go │ │ │ │ ├── get_linkis_job_log_responses.go │ │ │ │ ├── get_linkis_job_status_parameters.go │ │ │ │ ├── get_linkis_job_status_responses.go │ │ │ │ └── linkis_job_client.go │ │ │ ├── models │ │ │ │ ├── delete_model_parameters.go │ │ │ │ ├── delete_model_responses.go │ │ │ │ ├── download_model_definition_parameters.go │ │ │ │ ├── download_model_definition_responses.go │ │ │ │ ├── download_trained_model_parameters.go │ │ │ │ ├── download_trained_model_responses.go │ │ │ │ ├── export_model_parameters.go │ │ │ │ ├── export_model_responses.go │ │ │ │ ├── get_job_log_by_line_parameters.go │ │ │ │ ├── get_job_log_by_line_responses.go │ │ │ │ ├── get_logs_parameters.go │ │ │ │ ├── get_logs_responses.go │ │ │ │ ├── get_metrics_parameters.go │ │ │ │ ├── get_metrics_responses.go │ │ │ │ ├── get_model_parameters.go │ │ │ │ ├── get_model_responses.go │ │ │ │ ├── list_models_parameters.go │ │ │ │ ├── list_models_responses.go │ │ │ │ ├── models_client.go │ │ │ │ ├── patch_model_parameters.go │ │ │ │ ├── patch_model_responses.go │ │ │ │ ├── post_model_parameters.go │ │ │ │ └── post_model_responses.go │ │ │ ├── operations │ │ │ │ ├── get_dashboards_parameters.go │ │ │ │ ├── get_dashboards_responses.go │ │ │ │ └── operations_client.go │ │ │ └── training_data │ │ │ │ ├── get_loglines_parameters.go │ │ │ │ ├── get_loglines_responses.go │ │ │ │ └── training_data_client.go │ │ ├── cmd │ │ │ ├── di-server │ │ │ │ └── main.go │ │ │ └── dlaas-server │ │ │ │ └── main.go │ │ ├── restmodels │ │ │ ├── basic_model.go │ │ │ ├── basic_new_model.go │ │ │ ├── code_upload_response.go │ │ │ ├── d_s_s_info.go │ │ │ ├── data_set.go │ │ │ ├── datastore.go │ │ │ ├── dss_user_info.go │ │ │ ├── endpoint.go │ │ │ ├── endpoint_list.go │ │ │ ├── error.go │ │ │ ├── event.go │ │ │ ├── event_endpoint_registration.go │ │ │ ├── event_list.go │ │ │ ├── experiment_run_log_request.go │ │ │ ├── experiment_run_log_response.go │ │ │ ├── experiment_run_status_response.go │ │ │ ├── fields.go │ │ │ ├── framework.go │ │ │ ├── get_dashboards_response.go │ │ │ ├── log_response.go │ │ │ ├── metric_data.go │ │ │ ├── model.go │ │ │ ├── model_list.go │ │ │ ├── prophecis_experiment.go │ │ │ ├── prophecis_experiment_dss_response.go │ │ │ ├── prophecis_experiment_exec_log.go │ │ │ ├── prophecis_experiment_get_response.go │ │ │ ├── prophecis_experiment_id_response.go │ │ │ ├── prophecis_experiment_put_basic_info.go │ │ │ ├── prophecis_experiment_put_request.go │ │ │ ├── prophecis_experiment_request.go │ │ │ ├── prophecis_experiment_run.go │ │ │ ├── prophecis_experiment_run_request.go │ │ │ ├── prophecis_experiment_run_response.go │ │ │ ├── prophecis_experiment_runs.go │ │ │ ├── prophecis_experiment_runs_get_response.go │ │ │ ├── prophecis_experiment_runs_request.go │ │ │ ├── prophecis_experiment_tag.go │ │ │ ├── prophecis_experiment_tag_post_request.go │ │ │ ├── prophecis_experiment_tag_put_basic_info.go │ │ │ ├── prophecis_experiment_tags.go │ │ │ ├── prophecis_experiments.go │ │ │ ├── prophecis_export_experiment_dss_response.go │ │ │ ├── prophecis_import_experiment_dss_response.go │ │ │ ├── query_search_type.go │ │ │ ├── t_fos_request.go │ │ │ ├── training.go │ │ │ ├── training_status.go │ │ │ ├── training_update.go │ │ │ ├── user.go │ │ │ ├── v1_log_line.go │ │ │ ├── v1_log_lines_list.go │ │ │ └── v1_meta_info.go │ │ ├── server │ │ │ ├── configure_di.go │ │ │ ├── doc.go │ │ │ ├── embedded_spec.go │ │ │ ├── operations │ │ │ │ ├── di_api.go │ │ │ │ ├── dlaas_api.go │ │ │ │ ├── dss_user_info │ │ │ │ │ ├── get_dss_user_info.go │ │ │ │ │ ├── get_dss_user_info_parameters.go │ │ │ │ │ ├── get_dss_user_info_responses.go │ │ │ │ │ └── get_dss_user_info_urlbuilder.go │ │ │ │ ├── events │ │ │ │ │ ├── create_event_endpoint.go │ │ │ │ │ ├── create_event_endpoint_parameters.go │ │ │ │ │ ├── create_event_endpoint_responses.go │ │ │ │ │ ├── create_event_endpoint_urlbuilder.go │ │ │ │ │ ├── delete_event_endpoint.go │ │ │ │ │ ├── delete_event_endpoint_parameters.go │ │ │ │ │ ├── delete_event_endpoint_responses.go │ │ │ │ │ ├── delete_event_endpoint_urlbuilder.go │ │ │ │ │ ├── get_event_endpoint.go │ │ │ │ │ ├── get_event_endpoint_parameters.go │ │ │ │ │ ├── get_event_endpoint_responses.go │ │ │ │ │ ├── get_event_endpoint_urlbuilder.go │ │ │ │ │ ├── get_event_type_endpoints.go │ │ │ │ │ ├── get_event_type_endpoints_parameters.go │ │ │ │ │ ├── get_event_type_endpoints_responses.go │ │ │ │ │ ├── get_event_type_endpoints_urlbuilder.go │ │ │ │ │ ├── update_event_endpoint.go │ │ │ │ │ ├── update_event_endpoint_parameters.go │ │ │ │ │ ├── update_event_endpoint_responses.go │ │ │ │ │ └── update_event_endpoint_urlbuilder.go │ │ │ │ ├── experiment_runs │ │ │ │ │ ├── create_experiment_run.go │ │ │ │ │ ├── create_experiment_run_parameters.go │ │ │ │ │ ├── create_experiment_run_responses.go │ │ │ │ │ ├── create_experiment_run_urlbuilder.go │ │ │ │ │ ├── delete_experiment_run.go │ │ │ │ │ ├── delete_experiment_run_parameters.go │ │ │ │ │ ├── delete_experiment_run_responses.go │ │ │ │ │ ├── delete_experiment_run_urlbuilder.go │ │ │ │ │ ├── get_experiment_run.go │ │ │ │ │ ├── get_experiment_run_execution.go │ │ │ │ │ ├── get_experiment_run_execution_parameters.go │ │ │ │ │ ├── get_experiment_run_execution_responses.go │ │ │ │ │ ├── get_experiment_run_execution_urlbuilder.go │ │ │ │ │ ├── get_experiment_run_log.go │ │ │ │ │ ├── get_experiment_run_log_by_line.go │ │ │ │ │ ├── get_experiment_run_log_by_line_parameters.go │ │ │ │ │ ├── get_experiment_run_log_by_line_responses.go │ │ │ │ │ ├── get_experiment_run_log_by_line_urlbuilder.go │ │ │ │ │ ├── get_experiment_run_log_parameters.go │ │ │ │ │ ├── get_experiment_run_log_responses.go │ │ │ │ │ ├── get_experiment_run_log_urlbuilder.go │ │ │ │ │ ├── get_experiment_run_parameters.go │ │ │ │ │ ├── get_experiment_run_responses.go │ │ │ │ │ ├── get_experiment_run_status.go │ │ │ │ │ ├── get_experiment_run_status_parameters.go │ │ │ │ │ ├── get_experiment_run_status_responses.go │ │ │ │ │ ├── get_experiment_run_status_urlbuilder.go │ │ │ │ │ ├── get_experiment_run_urlbuilder.go │ │ │ │ │ ├── get_experiment_runs_history.go │ │ │ │ │ ├── get_experiment_runs_history_parameters.go │ │ │ │ │ ├── get_experiment_runs_history_responses.go │ │ │ │ │ ├── get_experiment_runs_history_urlbuilder.go │ │ │ │ │ ├── kill_experiment_run.go │ │ │ │ │ ├── kill_experiment_run_parameters.go │ │ │ │ │ ├── kill_experiment_run_responses.go │ │ │ │ │ ├── kill_experiment_run_urlbuilder.go │ │ │ │ │ ├── list_experiment_runs.go │ │ │ │ │ ├── list_experiment_runs_parameters.go │ │ │ │ │ ├── list_experiment_runs_responses.go │ │ │ │ │ └── list_experiment_runs_urlbuilder.go │ │ │ │ ├── experiments │ │ │ │ │ ├── code_upload.go │ │ │ │ │ ├── code_upload_parameters.go │ │ │ │ │ ├── code_upload_responses.go │ │ │ │ │ ├── code_upload_urlbuilder.go │ │ │ │ │ ├── copy_experiment.go │ │ │ │ │ ├── copy_experiment_parameters.go │ │ │ │ │ ├── copy_experiment_responses.go │ │ │ │ │ ├── copy_experiment_urlbuilder.go │ │ │ │ │ ├── create_experiment.go │ │ │ │ │ ├── create_experiment_parameters.go │ │ │ │ │ ├── create_experiment_responses.go │ │ │ │ │ ├── create_experiment_tag.go │ │ │ │ │ ├── create_experiment_tag_parameters.go │ │ │ │ │ ├── create_experiment_tag_responses.go │ │ │ │ │ ├── create_experiment_tag_urlbuilder.go │ │ │ │ │ ├── create_experiment_urlbuilder.go │ │ │ │ │ ├── delete_experiment.go │ │ │ │ │ ├── delete_experiment_parameters.go │ │ │ │ │ ├── delete_experiment_responses.go │ │ │ │ │ ├── delete_experiment_tag.go │ │ │ │ │ ├── delete_experiment_tag_parameters.go │ │ │ │ │ ├── delete_experiment_tag_responses.go │ │ │ │ │ ├── delete_experiment_tag_urlbuilder.go │ │ │ │ │ ├── delete_experiment_urlbuilder.go │ │ │ │ │ ├── export_experiment.go │ │ │ │ │ ├── export_experiment_dss.go │ │ │ │ │ ├── export_experiment_dss_parameters.go │ │ │ │ │ ├── export_experiment_dss_responses.go │ │ │ │ │ ├── export_experiment_dss_urlbuilder.go │ │ │ │ │ ├── export_experiment_parameters.go │ │ │ │ │ ├── export_experiment_responses.go │ │ │ │ │ ├── export_experiment_urlbuilder.go │ │ │ │ │ ├── get_experiment.go │ │ │ │ │ ├── get_experiment_parameters.go │ │ │ │ │ ├── get_experiment_responses.go │ │ │ │ │ ├── get_experiment_urlbuilder.go │ │ │ │ │ ├── import_experiment.go │ │ │ │ │ ├── import_experiment_dss.go │ │ │ │ │ ├── import_experiment_dss_parameters.go │ │ │ │ │ ├── import_experiment_dss_responses.go │ │ │ │ │ ├── import_experiment_dss_urlbuilder.go │ │ │ │ │ ├── import_experiment_parameters.go │ │ │ │ │ ├── import_experiment_responses.go │ │ │ │ │ ├── import_experiment_urlbuilder.go │ │ │ │ │ ├── list_experiments.go │ │ │ │ │ ├── list_experiments_parameters.go │ │ │ │ │ ├── list_experiments_responses.go │ │ │ │ │ ├── list_experiments_urlbuilder.go │ │ │ │ │ ├── update_experiment.go │ │ │ │ │ ├── update_experiment_info.go │ │ │ │ │ ├── update_experiment_info_parameters.go │ │ │ │ │ ├── update_experiment_info_responses.go │ │ │ │ │ ├── update_experiment_info_urlbuilder.go │ │ │ │ │ ├── update_experiment_parameters.go │ │ │ │ │ ├── update_experiment_responses.go │ │ │ │ │ └── update_experiment_urlbuilder.go │ │ │ │ ├── get_dashboards.go │ │ │ │ ├── get_dashboards_parameters.go │ │ │ │ ├── get_dashboards_responses.go │ │ │ │ ├── get_dashboards_urlbuilder.go │ │ │ │ ├── linkis_job │ │ │ │ │ ├── get_linkis_job_log.go │ │ │ │ │ ├── get_linkis_job_log_parameters.go │ │ │ │ │ ├── get_linkis_job_log_responses.go │ │ │ │ │ ├── get_linkis_job_log_urlbuilder.go │ │ │ │ │ ├── get_linkis_job_status.go │ │ │ │ │ ├── get_linkis_job_status_parameters.go │ │ │ │ │ ├── get_linkis_job_status_responses.go │ │ │ │ │ └── get_linkis_job_status_urlbuilder.go │ │ │ │ ├── models │ │ │ │ │ ├── delete_model.go │ │ │ │ │ ├── delete_model_parameters.go │ │ │ │ │ ├── delete_model_responses.go │ │ │ │ │ ├── delete_model_urlbuilder.go │ │ │ │ │ ├── download_model_definition.go │ │ │ │ │ ├── download_model_definition_parameters.go │ │ │ │ │ ├── download_model_definition_responses.go │ │ │ │ │ ├── download_model_definition_urlbuilder.go │ │ │ │ │ ├── download_trained_model.go │ │ │ │ │ ├── download_trained_model_parameters.go │ │ │ │ │ ├── download_trained_model_responses.go │ │ │ │ │ ├── download_trained_model_urlbuilder.go │ │ │ │ │ ├── export_model.go │ │ │ │ │ ├── export_model_parameters.go │ │ │ │ │ ├── export_model_responses.go │ │ │ │ │ ├── export_model_urlbuilder.go │ │ │ │ │ ├── get_job_log_by_line.go │ │ │ │ │ ├── get_job_log_by_line_parameters.go │ │ │ │ │ ├── get_job_log_by_line_responses.go │ │ │ │ │ ├── get_job_log_by_line_urlbuilder.go │ │ │ │ │ ├── get_logs.go │ │ │ │ │ ├── get_logs_parameters.go │ │ │ │ │ ├── get_logs_responses.go │ │ │ │ │ ├── get_logs_urlbuilder.go │ │ │ │ │ ├── get_metrics.go │ │ │ │ │ ├── get_metrics_parameters.go │ │ │ │ │ ├── get_metrics_responses.go │ │ │ │ │ ├── get_metrics_urlbuilder.go │ │ │ │ │ ├── get_model.go │ │ │ │ │ ├── get_model_parameters.go │ │ │ │ │ ├── get_model_responses.go │ │ │ │ │ ├── get_model_urlbuilder.go │ │ │ │ │ ├── kill_training_model.go │ │ │ │ │ ├── kill_training_model_parameters.go │ │ │ │ │ ├── kill_training_model_responses.go │ │ │ │ │ ├── kill_training_model_urlbuilder.go │ │ │ │ │ ├── list_models.go │ │ │ │ │ ├── list_models_parameters.go │ │ │ │ │ ├── list_models_responses.go │ │ │ │ │ ├── list_models_urlbuilder.go │ │ │ │ │ ├── patch_model.go │ │ │ │ │ ├── patch_model_parameters.go │ │ │ │ │ ├── patch_model_responses.go │ │ │ │ │ ├── patch_model_urlbuilder.go │ │ │ │ │ ├── post_model.go │ │ │ │ │ ├── post_model_parameters.go │ │ │ │ │ ├── post_model_responses.go │ │ │ │ │ ├── post_model_urlbuilder.go │ │ │ │ │ ├── retry_model.go │ │ │ │ │ ├── retry_model_parameters.go │ │ │ │ │ ├── retry_model_responses.go │ │ │ │ │ └── retry_model_urlbuilder.go │ │ │ │ └── training_data │ │ │ │ │ ├── get_loglines.go │ │ │ │ │ ├── get_loglines_parameters.go │ │ │ │ │ ├── get_loglines_responses.go │ │ │ │ │ └── get_loglines_urlbuilder.go │ │ │ ├── rest_impl │ │ │ │ ├── dss_user_info_impl.go │ │ │ │ ├── experiment_impl.go │ │ │ │ ├── experiment_impl_test.go │ │ │ │ ├── experimentrun_impl.go │ │ │ │ ├── experimentrun_impl_test.go │ │ │ │ ├── health_impl.go │ │ │ │ ├── linkisjob_impl.go │ │ │ │ ├── logging.go │ │ │ │ ├── manifest.go │ │ │ │ ├── manifest_test.go │ │ │ │ ├── model_impl_test.go │ │ │ │ └── models_impl.go │ │ │ └── server.go │ │ ├── swagger-ui │ │ │ ├── buildui.sh │ │ │ └── manifest.yml │ │ └── swagger │ │ │ └── swagger.yml │ ├── api_v2 │ │ ├── restmodels │ │ │ ├── batch_delete_experiments_request.go │ │ │ ├── code_upload_response.go │ │ │ ├── compute_resource.go │ │ │ ├── create_experiment_request.go │ │ │ ├── create_experiment_response.go │ │ │ ├── create_experiment_run_request.go │ │ │ ├── create_experiment_run_response.go │ │ │ ├── create_experiment_version_request.go │ │ │ ├── create_experiment_version_response.go │ │ │ ├── d_s_s_info.go │ │ │ ├── data_config.go │ │ │ ├── depend_resources.go │ │ │ ├── deploy_setting.go │ │ │ ├── error.go │ │ │ ├── event_sender_node_content.go │ │ │ ├── experiment_response.go │ │ │ ├── experiment_run.go │ │ │ ├── experiment_run_status.go │ │ │ ├── experiment_without_pipeline.go │ │ │ ├── flow_json_response.go │ │ │ ├── frame_work.go │ │ │ ├── g_p_u_node_data_stores.go │ │ │ ├── g_p_u_node_data_stores_s_directory.go │ │ │ ├── g_p_u_node_data_stores_sub_directory.go │ │ │ ├── g_p_u_node_manifest.go │ │ │ ├── get_d_s_s_jump_m_l_s_s_user_response.go │ │ │ ├── get_experiment_global_variables_str_response.go │ │ │ ├── get_experiment_response.go │ │ │ ├── get_experiment_version_response.go │ │ │ ├── global_variable.go │ │ │ ├── list_experiment_runs_response.go │ │ │ ├── list_experiment_versions_response.go │ │ │ ├── list_experiments_response.go │ │ │ ├── m_l_s_s_platform_storage_config.go │ │ │ ├── meta_data.go │ │ │ ├── model.go │ │ │ ├── model_input.go │ │ │ ├── model_predict_node_input.go │ │ │ ├── model_predict_node_manifest.go │ │ │ ├── node_execution_info.go │ │ │ ├── node_executions_response.go │ │ │ ├── output.go │ │ │ ├── patch_experiment_request.go │ │ │ ├── patch_experiment_version_request.go │ │ │ ├── process_line.go │ │ │ ├── process_line_input.go │ │ │ ├── process_line_node_input.go │ │ │ ├── process_line_node_manifest.go │ │ │ ├── run_config.go │ │ │ ├── run_environment.go │ │ │ ├── run_global_variable.go │ │ │ ├── upload_experiment_flow_json_response.go │ │ │ └── w_t_s_s_variables.go │ │ ├── server │ │ │ ├── configure_di.go │ │ │ ├── doc.go │ │ │ ├── embedded_spec.go │ │ │ ├── operations │ │ │ │ ├── di_api.go │ │ │ │ ├── experiment │ │ │ │ │ ├── batch_delete_experiments.go │ │ │ │ │ ├── batch_delete_experiments_parameters.go │ │ │ │ │ ├── batch_delete_experiments_responses.go │ │ │ │ │ ├── batch_delete_experiments_urlbuilder.go │ │ │ │ │ ├── code_upload.go │ │ │ │ │ ├── code_upload_parameters.go │ │ │ │ │ ├── code_upload_responses.go │ │ │ │ │ ├── code_upload_urlbuilder.go │ │ │ │ │ ├── copy_experiment.go │ │ │ │ │ ├── copy_experiment_parameters.go │ │ │ │ │ ├── copy_experiment_responses.go │ │ │ │ │ ├── copy_experiment_urlbuilder.go │ │ │ │ │ ├── create_experiment.go │ │ │ │ │ ├── create_experiment_by_upload.go │ │ │ │ │ ├── create_experiment_by_upload_parameters.go │ │ │ │ │ ├── create_experiment_by_upload_responses.go │ │ │ │ │ ├── create_experiment_by_upload_urlbuilder.go │ │ │ │ │ ├── create_experiment_parameters.go │ │ │ │ │ ├── create_experiment_responses.go │ │ │ │ │ ├── create_experiment_test_swagger.go │ │ │ │ │ ├── create_experiment_test_swagger_parameters.go │ │ │ │ │ ├── create_experiment_test_swagger_responses.go │ │ │ │ │ ├── create_experiment_test_swagger_urlbuilder.go │ │ │ │ │ ├── create_experiment_urlbuilder.go │ │ │ │ │ ├── create_experiment_version.go │ │ │ │ │ ├── create_experiment_version_parameters.go │ │ │ │ │ ├── create_experiment_version_responses.go │ │ │ │ │ ├── create_experiment_version_urlbuilder.go │ │ │ │ │ ├── delete_experiment.go │ │ │ │ │ ├── delete_experiment_parameters.go │ │ │ │ │ ├── delete_experiment_responses.go │ │ │ │ │ ├── delete_experiment_urlbuilder.go │ │ │ │ │ ├── delete_experiment_version.go │ │ │ │ │ ├── delete_experiment_version_parameters.go │ │ │ │ │ ├── delete_experiment_version_responses.go │ │ │ │ │ ├── delete_experiment_version_urlbuilder.go │ │ │ │ │ ├── export_experiment.go │ │ │ │ │ ├── export_experiment_flow_json.go │ │ │ │ │ ├── export_experiment_flow_json_parameters.go │ │ │ │ │ ├── export_experiment_flow_json_responses.go │ │ │ │ │ ├── export_experiment_flow_json_urlbuilder.go │ │ │ │ │ ├── export_experiment_parameters.go │ │ │ │ │ ├── export_experiment_responses.go │ │ │ │ │ ├── export_experiment_urlbuilder.go │ │ │ │ │ ├── get_d_s_s_jump_m_l_s_s_user.go │ │ │ │ │ ├── get_d_s_s_jump_m_l_s_s_user_parameters.go │ │ │ │ │ ├── get_d_s_s_jump_m_l_s_s_user_responses.go │ │ │ │ │ ├── get_d_s_s_jump_m_l_s_s_user_urlbuilder.go │ │ │ │ │ ├── get_experiment.go │ │ │ │ │ ├── get_experiment_flow_json.go │ │ │ │ │ ├── get_experiment_flow_json_parameters.go │ │ │ │ │ ├── get_experiment_flow_json_urlbuilder.go │ │ │ │ │ ├── get_experiment_parameters.go │ │ │ │ │ ├── get_experiment_responses.go │ │ │ │ │ ├── get_experiment_urlbuilder.go │ │ │ │ │ ├── get_experiment_version.go │ │ │ │ │ ├── get_experiment_version_flow_json.go │ │ │ │ │ ├── get_experiment_version_flow_json_parameters.go │ │ │ │ │ ├── get_experiment_version_flow_json_responses.go │ │ │ │ │ ├── get_experiment_version_flow_json_urlbuilder.go │ │ │ │ │ ├── get_experiment_version_global_variables_str.go │ │ │ │ │ ├── get_experiment_version_global_variables_str_parameters.go │ │ │ │ │ ├── get_experiment_version_global_variables_str_responses.go │ │ │ │ │ ├── get_experiment_version_global_variables_str_urlbuilder.go │ │ │ │ │ ├── get_experiment_version_parameters.go │ │ │ │ │ ├── get_experiment_version_responses.go │ │ │ │ │ ├── get_experiment_version_urlbuilder.go │ │ │ │ │ ├── list_experiment_d_s_s_flow_names.go │ │ │ │ │ ├── list_experiment_d_s_s_flow_names_parameters.go │ │ │ │ │ ├── list_experiment_d_s_s_flow_names_responses.go │ │ │ │ │ ├── list_experiment_d_s_s_flow_names_urlbuilder.go │ │ │ │ │ ├── list_experiment_d_s_s_project_names.go │ │ │ │ │ ├── list_experiment_d_s_s_project_names_parameters.go │ │ │ │ │ ├── list_experiment_d_s_s_project_names_responses.go │ │ │ │ │ ├── list_experiment_d_s_s_project_names_urlbuilder.go │ │ │ │ │ ├── list_experiment_source_systems.go │ │ │ │ │ ├── list_experiment_source_systems_parameters.go │ │ │ │ │ ├── list_experiment_source_systems_responses.go │ │ │ │ │ ├── list_experiment_source_systems_urlbuilder.go │ │ │ │ │ ├── list_experiment_version_names.go │ │ │ │ │ ├── list_experiment_version_names_parameters.go │ │ │ │ │ ├── list_experiment_version_names_responses.go │ │ │ │ │ ├── list_experiment_version_names_urlbuilder.go │ │ │ │ │ ├── list_experiment_versions.go │ │ │ │ │ ├── list_experiment_versions_parameters.go │ │ │ │ │ ├── list_experiment_versions_responses.go │ │ │ │ │ ├── list_experiment_versions_urlbuilder.go │ │ │ │ │ ├── list_experiments.go │ │ │ │ │ ├── list_experiments_parameters.go │ │ │ │ │ ├── list_experiments_responses.go │ │ │ │ │ ├── list_experiments_urlbuilder.go │ │ │ │ │ ├── patch_experiment.go │ │ │ │ │ ├── patch_experiment_parameters.go │ │ │ │ │ ├── patch_experiment_responses.go │ │ │ │ │ ├── patch_experiment_urlbuilder.go │ │ │ │ │ ├── patch_experiment_version.go │ │ │ │ │ ├── patch_experiment_version_parameters.go │ │ │ │ │ ├── patch_experiment_version_responses.go │ │ │ │ │ ├── patch_experiment_version_urlbuilder.go │ │ │ │ │ ├── upload_experiment_flow_json.go │ │ │ │ │ ├── upload_experiment_flow_json_parameters.go │ │ │ │ │ ├── upload_experiment_flow_json_responses.go │ │ │ │ │ └── upload_experiment_flow_json_urlbuilder.go │ │ │ │ ├── experiment_run │ │ │ │ │ ├── create_experiment_run.go │ │ │ │ │ ├── create_experiment_run_parameters.go │ │ │ │ │ ├── create_experiment_run_responses.go │ │ │ │ │ ├── create_experiment_run_urlbuilder.go │ │ │ │ │ ├── delete_experiment_run.go │ │ │ │ │ ├── delete_experiment_run_parameters.go │ │ │ │ │ ├── delete_experiment_run_responses.go │ │ │ │ │ ├── delete_experiment_run_urlbuilder.go │ │ │ │ │ ├── get_experiment_run.go │ │ │ │ │ ├── get_experiment_run_flow_json.go │ │ │ │ │ ├── get_experiment_run_flow_json_parameters.go │ │ │ │ │ ├── get_experiment_run_flow_json_responses.go │ │ │ │ │ ├── get_experiment_run_flow_json_urlbuilder.go │ │ │ │ │ ├── get_experiment_run_node_executions.go │ │ │ │ │ ├── get_experiment_run_node_executions_parameters.go │ │ │ │ │ ├── get_experiment_run_node_executions_responses.go │ │ │ │ │ ├── get_experiment_run_node_executions_urlbuilder.go │ │ │ │ │ ├── get_experiment_run_node_logs.go │ │ │ │ │ ├── get_experiment_run_node_logs_parameters.go │ │ │ │ │ ├── get_experiment_run_node_logs_responses.go │ │ │ │ │ ├── get_experiment_run_node_logs_urlbuilder.go │ │ │ │ │ ├── get_experiment_run_parameters.go │ │ │ │ │ ├── get_experiment_run_responses.go │ │ │ │ │ ├── get_experiment_run_status.go │ │ │ │ │ ├── get_experiment_run_status_parameters.go │ │ │ │ │ ├── get_experiment_run_status_responses.go │ │ │ │ │ ├── get_experiment_run_status_urlbuilder.go │ │ │ │ │ ├── get_experiment_run_urlbuilder.go │ │ │ │ │ ├── kill_experiment_run.go │ │ │ │ │ ├── kill_experiment_run_parameters.go │ │ │ │ │ ├── kill_experiment_run_responses.go │ │ │ │ │ ├── kill_experiment_run_urlbuilder.go │ │ │ │ │ ├── list_experiment_runs.go │ │ │ │ │ ├── list_experiment_runs_parameters.go │ │ │ │ │ ├── list_experiment_runs_responses.go │ │ │ │ │ ├── list_experiment_runs_urlbuilder.go │ │ │ │ │ ├── retry_experiment_run.go │ │ │ │ │ ├── retry_experiment_run_parameters.go │ │ │ │ │ ├── retry_experiment_run_responses.go │ │ │ │ │ └── retry_experiment_run_urlbuilder.go │ │ │ │ └── pipeline │ │ │ │ │ ├── get_pipeline_event_sender_node_content.go │ │ │ │ │ ├── get_pipeline_event_sender_node_content_parameters.go │ │ │ │ │ ├── get_pipeline_event_sender_node_content_responses.go │ │ │ │ │ ├── get_pipeline_event_sender_node_content_urlbuilder.go │ │ │ │ │ ├── get_pipeline_g_p_u_node_manifest.go │ │ │ │ │ ├── get_pipeline_g_p_u_node_manifest_parameters.go │ │ │ │ │ ├── get_pipeline_g_p_u_node_manifest_responses.go │ │ │ │ │ ├── get_pipeline_g_p_u_node_manifest_urlbuilder.go │ │ │ │ │ ├── get_pipeline_global_variable.go │ │ │ │ │ ├── get_pipeline_global_variable_parameters.go │ │ │ │ │ ├── get_pipeline_global_variable_responses.go │ │ │ │ │ ├── get_pipeline_global_variable_urlbuilder.go │ │ │ │ │ ├── get_pipeline_global_variables.go │ │ │ │ │ ├── get_pipeline_global_variables_model.go │ │ │ │ │ ├── get_pipeline_global_variables_model_parameters.go │ │ │ │ │ ├── get_pipeline_global_variables_model_responses.go │ │ │ │ │ ├── get_pipeline_global_variables_model_urlbuilder.go │ │ │ │ │ ├── get_pipeline_global_variables_parameters.go │ │ │ │ │ ├── get_pipeline_global_variables_process_line.go │ │ │ │ │ ├── get_pipeline_global_variables_process_line_parameters.go │ │ │ │ │ ├── get_pipeline_global_variables_process_line_responses.go │ │ │ │ │ ├── get_pipeline_global_variables_process_line_urlbuilder.go │ │ │ │ │ ├── get_pipeline_global_variables_responses.go │ │ │ │ │ ├── get_pipeline_global_variables_urlbuilder.go │ │ │ │ │ ├── get_pipeline_model_predict_node_manifest.go │ │ │ │ │ ├── get_pipeline_model_predict_node_manifest_parameters.go │ │ │ │ │ ├── get_pipeline_model_predict_node_manifest_responses.go │ │ │ │ │ ├── get_pipeline_model_predict_node_manifest_urlbuilder.go │ │ │ │ │ ├── get_pipeline_process_line_node_manifest.go │ │ │ │ │ ├── get_pipeline_process_line_node_manifest_parameters.go │ │ │ │ │ ├── get_pipeline_process_line_node_manifest_responses.go │ │ │ │ │ └── get_pipeline_process_line_node_manifest_urlbuilder.go │ │ │ ├── rest_impl │ │ │ │ ├── experiment_impl.go │ │ │ │ ├── experiment_run_impl.go │ │ │ │ ├── flowjson.go │ │ │ │ ├── flowjson_test.go │ │ │ │ └── utils.go │ │ │ └── server.go │ │ └── swagger │ │ │ └── swagger.yml │ ├── certs │ │ ├── ca.crt │ │ ├── ca.key │ │ ├── client.crt │ │ ├── client.csr │ │ ├── client.key │ │ ├── server.crt │ │ ├── server.csr │ │ └── server.key │ ├── main.go │ ├── middleware │ │ ├── logging.go │ │ └── response_writer.go │ ├── newService │ │ ├── experiment_run_service.go │ │ ├── experiment_service.go │ │ └── linkisjob_service.go │ ├── service │ │ ├── experiment_run_service.go │ │ ├── experiment_run_service_test.go │ │ ├── experiment_service.go │ │ ├── experiment_service_test.go │ │ └── linkisjob_service.go │ └── service_v2 │ │ ├── access.go │ │ ├── custome_error.go │ │ ├── experiment.go │ │ ├── experiment_run.go │ │ └── experiment_test.go ├── storage │ ├── Dockerfile │ ├── client │ │ ├── client.go │ │ ├── jobstatus_client.go │ │ └── training_status.go │ ├── docker │ │ └── certs │ │ │ ├── ca.crt │ │ │ ├── client.crt │ │ │ ├── client.csr │ │ │ ├── client.key │ │ │ ├── server.crt │ │ │ ├── server.csr │ │ │ └── server.key │ ├── main.go │ └── storage │ │ ├── datetimeutils.go │ │ ├── frameworks.go │ │ ├── grpc_storage │ │ ├── storage.pb.go │ │ └── storage.proto │ │ ├── logging.go │ │ ├── mongo.go │ │ ├── queue.go │ │ ├── repository.go │ │ ├── storage_impl.go │ │ └── storage_impl_test.go └── trainer │ ├── Dockerfile │ ├── client │ ├── client.go │ ├── jobstatus_client.go │ └── training_status.go │ ├── docker │ ├── certs │ │ ├── ca.crt │ │ ├── ca.key │ │ ├── client.crt │ │ ├── client.csr │ │ ├── client.key │ │ ├── server.crt │ │ ├── server.csr │ │ └── server.key │ └── csf_env.properties │ ├── glide.yaml │ ├── instrumentation │ └── call_logger.go │ ├── main.go │ ├── storage │ ├── ar-del.png │ ├── data_store.go │ ├── factory.go │ ├── factory_test.go │ ├── inmem_object_store.go │ ├── inmem_object_store_test.go │ ├── minio_object_store.go │ ├── not_implemented_storage.go │ ├── s3_object_store.go │ ├── s3_object_store_test.go │ ├── swift_object_store.go │ ├── test_utils.go │ └── volume_mount_storage.go │ └── trainer │ ├── frameworks.go │ ├── grpc_trainer_v2 │ ├── trainer.pb.go │ └── trainer.proto │ ├── logging.go │ ├── mongo.go │ ├── queue.go │ ├── queue_test.go │ ├── repository.go │ ├── repository_test.go │ └── trainer_impl.go ├── docs ├── en_US │ └── image │ │ ├── Communication.png │ │ ├── DSS-Prophecis.gif │ │ ├── Prophecis-Arch.jpg │ │ ├── Prophecis-Features.jpg │ │ └── Prophecis-Flow.gif └── zh_CN │ ├── DeploymentGuide.pdf │ ├── Deployment_Documents │ ├── DeploymentGuide.md │ ├── Prophecis Appconn安装文档.md │ ├── Prophecis_Appconn安装文档.pdf │ └── 配置指引.md │ ├── Development_Documents │ ├── ConfigurationGuide.md │ ├── DeploymentGuide.pdf │ └── DevelopmentGuide.md │ ├── Q&A.md │ ├── QuickStartGuide.md │ ├── Readme.md │ ├── Roadmap.md │ ├── User_Manual │ ├── MLFlow使用手册(MLFlowGuide).md │ ├── MLFlow使用手册(MLFlowGuide).pdf │ ├── MLLabis用户手册(MLLabisGuide).md │ ├── MLLabis用户手册(MLLabisGuide).pdf │ ├── 模型工厂用户手册(ModelFactoryGuide).md │ ├── 模型工厂用户手册(ModelFactoryGuide).pdf │ ├── 管理台用户手册(CCControllerGuide).md │ └── 管理台用户手册(CCControllerGuide).pdf │ └── image │ ├── Communication.png │ ├── DSS-Prophecis.gif │ ├── Prophecis-Flow.gif │ ├── Prophecis功能特色3.jpg │ ├── Prophecis整体架构.png │ ├── cc │ ├── group_create_1.png │ ├── group_create_2.png │ ├── group_update_1.png │ ├── group_update_2.png │ ├── namespace_config_1.png │ ├── namespace_config_2.png │ ├── namespace_create_1.png │ ├── namespace_create_2.png │ ├── namespace_resource_1.png │ ├── namespace_resource_2.png │ ├── namespace_resource_3.png │ ├── namespace_resource_4.png │ ├── user_add_1.png │ ├── user_add_2.png │ ├── user_update_1.png │ └── user_update_2.png │ ├── deploy │ └── deploy_dir_1.png │ ├── dev │ ├── dev_jenkins_1.png │ ├── dev_jenkins_2.png │ ├── dev_jenkins_3.png │ ├── dev_jenkins_4.png │ ├── dev_jenkins_5.png │ ├── dev_jenkins_6.png │ ├── dev_jenkins_7.png │ ├── dev_jenkins_8.png │ └── dev_process_1.png │ ├── di │ ├── di_model_create_1.png │ ├── di_model_list_1.png │ ├── single_model_create_1.png │ ├── single_model_create_2.png │ ├── single_model_create_3.png │ ├── single_model_create_4.png │ ├── single_model_create_5.png │ ├── single_model_create_6.png │ ├── task_log_1.png │ └── task_log_2.png │ ├── lab │ ├── linkis__magic_1.png │ ├── linkis__magic_2.png │ ├── linkis__magic_3.png │ ├── linkis__magic_demo_1.png │ ├── linkis__magic_demo_2.png │ ├── notebook_create_1.png │ ├── notebook_create_2.png │ ├── notebook_create_3.png │ ├── notebook_create_4.png │ ├── notebook_create_5.png │ ├── notebook_delete_1.png │ ├── notebook_get_1.png │ ├── notebook_get_2.png │ ├── spark_livy_1.png │ ├── spark_livy_2.png │ └── spark_livy_3.png │ └── qa │ ├── sample_1.png │ ├── sample_2.png │ └── sample_3.png ├── install ├── MinioDeployment │ ├── Chart.yaml │ ├── OWNERS │ ├── README.md │ ├── ci │ │ └── distributed-values.yaml │ ├── templates │ │ ├── NOTES.txt │ │ ├── _helper_create_bucket.txt │ │ ├── _helpers.tpl │ │ ├── configmap.yaml │ │ ├── deployment.yaml │ │ ├── ingress.yaml │ │ ├── networkpolicy.yaml │ │ ├── poddisruptionbudget.yaml │ │ ├── post-install-create-bucket-job.yaml │ │ ├── post-install-prometheus-metrics-job.yaml │ │ ├── post-install-prometheus-metrics-role.yaml │ │ ├── post-install-prometheus-metrics-rolebinding.yaml │ │ ├── post-install-prometheus-metrics-serviceaccount.yaml │ │ ├── pv.yaml │ │ ├── pvc.yaml │ │ ├── secrets.yaml │ │ ├── service.yaml │ │ ├── serviceaccount.yaml │ │ ├── servicemonitor.yaml │ │ └── statefulset.yaml │ └── values.yaml ├── Prophecis │ ├── Chart.yaml │ ├── README.md │ ├── templates │ │ ├── LogCollectorDS │ │ │ ├── FluentBit.yaml │ │ │ └── LogConfigmap.yml │ │ ├── cc │ │ │ ├── cc-configmap.yml │ │ │ ├── cc-deployment.yml │ │ │ ├── cc-gateway-configmap.yml │ │ │ ├── cc-gateway-deploy.yml │ │ │ ├── cc-gateway-service.yml │ │ │ ├── cc-hub-secret.yml │ │ │ ├── cc-rbac.yml │ │ │ └── cc-service.yml │ │ ├── di │ │ │ ├── di-configmap.yml │ │ │ ├── ffdl-certs.yaml │ │ │ ├── fluent-bit-log-collector-config.yaml │ │ │ ├── jm-deployment.yml │ │ │ ├── lcm-deployment.yml │ │ │ ├── lcm-rbac.yml │ │ │ ├── lcm-secrets.yml │ │ │ ├── lcm-service.yml │ │ │ ├── learner-configmap.yml │ │ │ ├── learner-rsa-keys.yml │ │ │ ├── mlflow-deployment.yml │ │ │ ├── mlflow-service.yml │ │ │ ├── mlpipeline-configmap.yml │ │ │ ├── restapi-deployment.yml │ │ │ ├── restapi-service.yml │ │ │ ├── storage-deployment.yaml │ │ │ ├── storage-secrets.yaml │ │ │ ├── storage-service.yaml │ │ │ ├── trainer-deployment.yml │ │ │ ├── trainer-secrets.yml │ │ │ ├── trainer-service.yml │ │ │ ├── trainingdata-deployment.yml │ │ │ ├── trainingdata-secrets.yml │ │ │ └── trainingdata-service.yml │ │ ├── infrastructure │ │ │ ├── etcd.yml │ │ │ ├── mongo-configmap.yml │ │ │ ├── mongo.yml │ │ │ └── storage.yml │ │ ├── mf │ │ │ ├── mf-configmap.yml │ │ │ ├── mf-deployment.yml │ │ │ ├── mf-rbac.yml │ │ │ └── mf-service.yml │ │ ├── mllabis │ │ │ ├── aide-configmap.yml │ │ │ ├── aide-deployment.yml │ │ │ ├── aide-rbac.yml │ │ │ ├── aide-service.yml │ │ │ ├── notebook-entrypoint-files.yml │ │ │ └── yarn-resource-setting.yml │ │ ├── persistent │ │ │ ├── etcd.yml │ │ │ ├── localstack.yml │ │ │ └── mongo.yml │ │ └── ui │ │ │ └── bdap-ui │ │ │ ├── bdap-ui-config.yml │ │ │ ├── bdap-ui-deployment.yml │ │ │ └── bdap-ui-service.yml │ └── values.yaml ├── log │ ├── job-log-collecter │ │ ├── cm-prophecis.yml │ │ └── fluent-bit.yaml │ └── pod-log-collector │ │ └── fluent-bit-prophecis │ │ ├── .helmignore │ │ ├── Chart.yaml │ │ ├── README.md │ │ ├── dashboards │ │ └── fluent-bit.json │ │ ├── templates │ │ ├── NOTES.txt │ │ ├── _helpers.tpl │ │ ├── _pod.tpl │ │ ├── clusterrole.yaml │ │ ├── clusterrolebinding.yaml │ │ ├── configmap-dashboards.yaml │ │ ├── configmap-luascripts.yaml │ │ ├── configmap.yaml │ │ ├── daemonset.yaml │ │ ├── deployment.yaml │ │ ├── networkpolicy.yaml │ │ ├── prometheusrule.yaml │ │ ├── psp.yaml │ │ ├── service.yaml │ │ ├── serviceaccount.yaml │ │ ├── servicemonitor.yaml │ │ └── tests │ │ │ └── test-connection.yaml │ │ └── values.yaml ├── notebook-controller │ ├── Chart.yaml │ ├── templates │ │ ├── metacontroller-0.5.1.yaml │ │ └── notebook-controller-0.5.1.yaml │ └── values.yaml └── sql │ ├── mlflow-appconn.sql │ ├── mlss-appconn.sql │ ├── prophecis-data.sql │ └── prophecis.sql ├── linkismagic ├── README.md └── linkismagic │ ├── __init__.py │ └── linkismagic │ ├── __init__.py │ ├── __pycache__ │ └── __init__.cpython-37.pyc │ ├── controllerwideget │ ├── __init__.py │ └── magicscontrollerwidget.py │ ├── kernels │ └── __init__.py │ ├── linkisclientlib │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ ├── linkisclient.cpython-37.pyc │ │ └── linkishttpclient.cpython-37.pyc │ ├── exceptions.py │ ├── linkisclient.py │ └── linkishttpclient.py │ ├── linkismagic.json │ ├── magics │ ├── __init__.py │ ├── __pycache__ │ │ ├── __init__.cpython-37.pyc │ │ └── linkismagic.cpython-37.pyc │ └── linkismagic.py │ └── utils │ ├── __init__.py │ ├── configuration.py │ ├── constants.py │ └── linkislogger.py ├── mf ├── Makefile ├── build │ ├── Dockerfile │ └── fps-client-app-1.4.0-fat.jar ├── cmd │ └── mf-server │ │ └── main.go ├── config │ ├── config │ ├── config.go │ └── config.yml ├── go.mod ├── go.sum ├── logs │ └── access_log.202203290000 ├── pkg │ ├── Dockerfile │ ├── certs │ │ ├── ca.crt │ │ ├── ca.key │ │ ├── client.crt │ │ ├── client.csr │ │ ├── client.key │ │ ├── server.crt │ │ ├── server.csr │ │ └── server.key │ ├── cmd │ │ ├── mf-server-server │ │ │ └── main.go │ │ └── mlss-mf-server │ │ │ └── main.go │ ├── common │ │ ├── common.go │ │ ├── config │ │ │ └── config.go │ │ ├── constant.go │ │ ├── controlcenter │ │ │ ├── client.go │ │ │ └── result.go │ │ ├── datasource.go │ │ ├── gormmodels │ │ │ ├── base_model.go │ │ │ ├── dashborad.go │ │ │ ├── group.go │ │ │ ├── image.go │ │ │ ├── model.go │ │ │ ├── modelversion.go │ │ │ ├── pushevent.go │ │ │ ├── report.go │ │ │ ├── report_version.go │ │ │ ├── result.go │ │ │ ├── role.go │ │ │ ├── service.go │ │ │ └── user.go │ │ ├── page_utils.go │ │ └── util │ │ │ └── grpc.go │ ├── dao │ │ ├── es │ │ │ ├── client_es.go │ │ │ └── log_es.go │ │ ├── group_dao.go │ │ ├── image_dao.go │ │ ├── model_dao.go │ │ ├── model_version_dao.go │ │ ├── pushevent_dao.go │ │ ├── report_dao.go │ │ ├── report_version_dao.go │ │ ├── result_dao.go │ │ ├── service_dao.go │ │ ├── service_modelversion_dao.go │ │ └── user_dao.go │ ├── logger │ │ └── logger.go │ ├── middleware │ │ ├── auth.go │ │ ├── logging.go │ │ └── response_writer.go │ ├── models │ │ ├── code_upload_response.go │ │ ├── container.go │ │ ├── containers.go │ │ ├── error.go │ │ ├── event.go │ │ ├── get_model_version_resp.go │ │ ├── get_model_version_resp_base.go │ │ ├── get_service.go │ │ ├── get_service_container_log_response.go │ │ ├── gorm_service.go │ │ ├── group.go │ │ ├── groups.go │ │ ├── image.go │ │ ├── image_post_request.go │ │ ├── image_put_request.go │ │ ├── images.go │ │ ├── list_model_push_event_resp.go │ │ ├── list_report_version_base.go │ │ ├── list_report_version_resp.go │ │ ├── list_reports_resp.go │ │ ├── model.go │ │ ├── model_base.go │ │ ├── model_info.go │ │ ├── model_parameters.go │ │ ├── model_parameters_list.go │ │ ├── model_push_event.go │ │ ├── model_request.go │ │ ├── model_version.go │ │ ├── model_version_base.go │ │ ├── model_version_info.go │ │ ├── model_version_push_event.go │ │ ├── model_version_push_event_resp.go │ │ ├── model_version_push_event_resp_base.go │ │ ├── model_versions.go │ │ ├── model_versions_response.go │ │ ├── models.go │ │ ├── models_response.go │ │ ├── pod.go │ │ ├── pods.go │ │ ├── post_model_request.go │ │ ├── post_model_resp.go │ │ ├── post_report_resp.go │ │ ├── push_model_request.go │ │ ├── push_report_request.go │ │ ├── report.go │ │ ├── report_base.go │ │ ├── report_push_event.go │ │ ├── report_request_post.go │ │ ├── report_version.go │ │ ├── report_version_base.go │ │ ├── report_version_push_event_resp.go │ │ ├── report_version_push_event_resp_base.go │ │ ├── report_versions.go │ │ ├── reports.go │ │ ├── result.go │ │ ├── result_request.go │ │ ├── results.go │ │ ├── service.go │ │ ├── service_container_log.go │ │ ├── service_model.go │ │ ├── service_model_version.go │ │ ├── service_model_versions.go │ │ ├── service_patch_request.go │ │ ├── service_post.go │ │ ├── service_post_model.go │ │ ├── service_post_models.go │ │ ├── service_put.go │ │ ├── services.go │ │ ├── upload_model_response.go │ │ ├── upload_report_response.go │ │ └── user_info.go │ ├── restapi │ │ ├── configure_mlss_mf.go │ │ ├── doc.go │ │ ├── embedded_spec.go │ │ ├── image_impl.go │ │ ├── operations │ │ │ ├── container │ │ │ │ ├── get_namespaced_service_container_log.go │ │ │ │ ├── get_namespaced_service_container_log_parameters.go │ │ │ │ ├── get_namespaced_service_container_log_responses.go │ │ │ │ ├── get_namespaced_service_container_log_urlbuilder.go │ │ │ │ ├── list_container.go │ │ │ │ ├── list_container_parameters.go │ │ │ │ ├── list_container_responses.go │ │ │ │ └── list_container_urlbuilder.go │ │ │ ├── image │ │ │ │ ├── create_image.go │ │ │ │ ├── create_image_parameters.go │ │ │ │ ├── create_image_responses.go │ │ │ │ ├── create_image_urlbuilder.go │ │ │ │ ├── delete_image.go │ │ │ │ ├── delete_image_parameters.go │ │ │ │ ├── delete_image_responses.go │ │ │ │ ├── delete_image_urlbuilder.go │ │ │ │ ├── get_image.go │ │ │ │ ├── get_image_parameters.go │ │ │ │ ├── get_image_responses.go │ │ │ │ ├── get_image_urlbuilder.go │ │ │ │ ├── list_image.go │ │ │ │ ├── list_image_by_model_version_id.go │ │ │ │ ├── list_image_by_model_version_id_parameters.go │ │ │ │ ├── list_image_by_model_version_id_responses.go │ │ │ │ ├── list_image_by_model_version_id_urlbuilder.go │ │ │ │ ├── list_image_parameters.go │ │ │ │ ├── list_image_responses.go │ │ │ │ ├── list_image_urlbuilder.go │ │ │ │ ├── update_image.go │ │ │ │ ├── update_image_parameters.go │ │ │ │ ├── update_image_responses.go │ │ │ │ └── update_image_urlbuilder.go │ │ │ ├── mlss_mf_api.go │ │ │ ├── model_deploy │ │ │ │ ├── create_namespaced_service_run.go │ │ │ │ ├── create_namespaced_service_run_parameters.go │ │ │ │ ├── create_namespaced_service_run_responses.go │ │ │ │ ├── create_namespaced_service_run_urlbuilder.go │ │ │ │ ├── delete_service.go │ │ │ │ ├── delete_service_parameters.go │ │ │ │ ├── delete_service_responses.go │ │ │ │ ├── delete_service_urlbuilder.go │ │ │ │ ├── get_namespaced_service_run.go │ │ │ │ ├── get_namespaced_service_run_parameters.go │ │ │ │ ├── get_namespaced_service_run_responses.go │ │ │ │ ├── get_namespaced_service_run_urlbuilder.go │ │ │ │ ├── get_service.go │ │ │ │ ├── get_service_parameters.go │ │ │ │ ├── get_service_responses.go │ │ │ │ ├── get_service_urlbuilder.go │ │ │ │ ├── list_services.go │ │ │ │ ├── list_services_parameters.go │ │ │ │ ├── list_services_responses.go │ │ │ │ ├── list_services_urlbuilder.go │ │ │ │ ├── post_service.go │ │ │ │ ├── post_service_parameters.go │ │ │ │ ├── post_service_responses.go │ │ │ │ ├── post_service_urlbuilder.go │ │ │ │ ├── service_dashborad.go │ │ │ │ ├── service_dashborad_parameters.go │ │ │ │ ├── service_dashborad_responses.go │ │ │ │ ├── service_dashborad_urlbuilder.go │ │ │ │ ├── stop_namespaced_service.go │ │ │ │ ├── stop_namespaced_service_parameters.go │ │ │ │ ├── stop_namespaced_service_responses.go │ │ │ │ ├── stop_namespaced_service_urlbuilder.go │ │ │ │ ├── update_service.go │ │ │ │ ├── update_service_parameters.go │ │ │ │ ├── update_service_responses.go │ │ │ │ └── update_service_urlbuilder.go │ │ │ ├── model_result │ │ │ │ ├── create_result.go │ │ │ │ ├── create_result_parameters.go │ │ │ │ ├── create_result_responses.go │ │ │ │ ├── create_result_urlbuilder.go │ │ │ │ ├── delete_result_by_id.go │ │ │ │ ├── delete_result_by_id_parameters.go │ │ │ │ ├── delete_result_by_id_responses.go │ │ │ │ ├── delete_result_by_id_urlbuilder.go │ │ │ │ ├── get_result_by_model_name.go │ │ │ │ ├── get_result_by_model_name_parameters.go │ │ │ │ ├── get_result_by_model_name_responses.go │ │ │ │ ├── get_result_by_model_name_urlbuilder.go │ │ │ │ ├── update_result_by_id.go │ │ │ │ ├── update_result_by_id_parameters.go │ │ │ │ ├── update_result_by_id_responses.go │ │ │ │ └── update_result_by_id_urlbuilder.go │ │ │ ├── model_storage │ │ │ │ ├── delete_model.go │ │ │ │ ├── delete_model_parameters.go │ │ │ │ ├── delete_model_responses.go │ │ │ │ ├── delete_model_urlbuilder.go │ │ │ │ ├── download_model_by_id.go │ │ │ │ ├── download_model_by_id_parameters.go │ │ │ │ ├── download_model_by_id_responses.go │ │ │ │ ├── download_model_by_id_urlbuilder.go │ │ │ │ ├── download_model_version_by_id.go │ │ │ │ ├── download_model_version_by_id_parameters.go │ │ │ │ ├── download_model_version_by_id_responses.go │ │ │ │ ├── download_model_version_by_id_urlbuilder.go │ │ │ │ ├── export_model.go │ │ │ │ ├── export_model_parameters.go │ │ │ │ ├── export_model_responses.go │ │ │ │ ├── export_model_urlbuilder.go │ │ │ │ ├── get_model.go │ │ │ │ ├── get_model_parameters.go │ │ │ │ ├── get_model_responses.go │ │ │ │ ├── get_model_urlbuilder.go │ │ │ │ ├── get_model_version.go │ │ │ │ ├── get_model_version_by_name_and_version.go │ │ │ │ ├── get_model_version_by_name_and_version_parameters.go │ │ │ │ ├── get_model_version_by_name_and_version_responses.go │ │ │ │ ├── get_model_version_by_name_and_version_urlbuilder.go │ │ │ │ ├── get_model_version_by_name_ane_version.go │ │ │ │ ├── get_model_version_by_name_ane_version_parameters.go │ │ │ │ ├── get_model_version_by_name_ane_version_responses.go │ │ │ │ ├── get_model_version_by_name_ane_version_urlbuilder.go │ │ │ │ ├── get_model_version_parameters.go │ │ │ │ ├── get_model_version_responses.go │ │ │ │ ├── get_model_version_urlbuilder.go │ │ │ │ ├── get_models.go │ │ │ │ ├── get_models_by_cluster.go │ │ │ │ ├── get_models_by_cluster_parameters.go │ │ │ │ ├── get_models_by_cluster_responses.go │ │ │ │ ├── get_models_by_cluster_urlbuilder.go │ │ │ │ ├── get_models_by_group_id_and_model_name.go │ │ │ │ ├── get_models_by_group_id_and_model_name_parameters.go │ │ │ │ ├── get_models_by_group_id_and_model_name_responses.go │ │ │ │ ├── get_models_by_group_id_and_model_name_urlbuilder.go │ │ │ │ ├── get_models_parameters.go │ │ │ │ ├── get_models_responses.go │ │ │ │ ├── get_models_urlbuilder.go │ │ │ │ ├── list_model_version_push_events_by_model_version_id.go │ │ │ │ ├── list_model_version_push_events_by_model_version_id_parameters.go │ │ │ │ ├── list_model_version_push_events_by_model_version_id_responses.go │ │ │ │ ├── list_model_version_push_events_by_model_version_id_urlbuilder.go │ │ │ │ ├── list_models_by_group_id.go │ │ │ │ ├── list_models_by_group_id_parameters.go │ │ │ │ ├── list_models_by_group_id_responses.go │ │ │ │ ├── list_models_by_group_id_urlbuilder.go │ │ │ │ ├── post_model.go │ │ │ │ ├── post_model_parameters.go │ │ │ │ ├── post_model_responses.go │ │ │ │ ├── post_model_urlbuilder.go │ │ │ │ ├── push_model_by_model_id.go │ │ │ │ ├── push_model_by_model_id_parameters.go │ │ │ │ ├── push_model_by_model_id_responses.go │ │ │ │ ├── push_model_by_model_id_urlbuilder.go │ │ │ │ ├── push_model_by_model_version_id.go │ │ │ │ ├── push_model_by_model_version_id_parameters.go │ │ │ │ ├── push_model_by_model_version_id_responses.go │ │ │ │ ├── push_model_by_model_version_id_urlbuilder.go │ │ │ │ ├── update_model.go │ │ │ │ ├── update_model_parameters.go │ │ │ │ ├── update_model_responses.go │ │ │ │ ├── update_model_urlbuilder.go │ │ │ │ ├── upload_model.go │ │ │ │ ├── upload_model_parameters.go │ │ │ │ ├── upload_model_responses.go │ │ │ │ └── upload_model_urlbuilder.go │ │ │ ├── report │ │ │ │ ├── create_report.go │ │ │ │ ├── create_report_parameters.go │ │ │ │ ├── create_report_responses.go │ │ │ │ ├── create_report_urlbuilder.go │ │ │ │ ├── delete_report_by_id.go │ │ │ │ ├── delete_report_by_id_parameters.go │ │ │ │ ├── delete_report_by_id_responses.go │ │ │ │ ├── delete_report_by_id_urlbuilder.go │ │ │ │ ├── download_report_by_id.go │ │ │ │ ├── download_report_by_id_parameters.go │ │ │ │ ├── download_report_by_id_responses.go │ │ │ │ ├── download_report_by_id_urlbuilder.go │ │ │ │ ├── get_push_event_by_id.go │ │ │ │ ├── get_push_event_by_id_parameters.go │ │ │ │ ├── get_push_event_by_id_responses.go │ │ │ │ ├── get_push_event_by_id_urlbuilder.go │ │ │ │ ├── get_report_by_id.go │ │ │ │ ├── get_report_by_id_parameters.go │ │ │ │ ├── get_report_by_id_responses.go │ │ │ │ ├── get_report_by_id_urlbuilder.go │ │ │ │ ├── get_report_by_model_name_and_model_version.go │ │ │ │ ├── get_report_by_model_name_and_model_version_parameters.go │ │ │ │ ├── get_report_by_model_name_and_model_version_responses.go │ │ │ │ ├── get_report_by_model_name_and_model_version_urlbuilder.go │ │ │ │ ├── list_report_version_push_events_by_report_version_id.go │ │ │ │ ├── list_report_version_push_events_by_report_version_id_parameters.go │ │ │ │ ├── list_report_version_push_events_by_report_version_id_responses.go │ │ │ │ ├── list_report_version_push_events_by_report_version_id_urlbuilder.go │ │ │ │ ├── list_report_versions_by_report_id.go │ │ │ │ ├── list_report_versions_by_report_id_parameters.go │ │ │ │ ├── list_report_versions_by_report_id_responses.go │ │ │ │ ├── list_report_versions_by_report_id_urlbuilder.go │ │ │ │ ├── list_reports.go │ │ │ │ ├── list_reports_parameters.go │ │ │ │ ├── list_reports_responses.go │ │ │ │ ├── list_reports_urlbuilder.go │ │ │ │ ├── push_report_by_report_id.go │ │ │ │ ├── push_report_by_report_id_parameters.go │ │ │ │ ├── push_report_by_report_id_responses.go │ │ │ │ ├── push_report_by_report_id_urlbuilder.go │ │ │ │ ├── push_report_by_report_version_id.go │ │ │ │ ├── push_report_by_report_version_id_parameters.go │ │ │ │ ├── push_report_by_report_version_id_responses.go │ │ │ │ ├── push_report_by_report_version_id_urlbuilder.go │ │ │ │ ├── upload_report.go │ │ │ │ ├── upload_report_parameters.go │ │ │ │ ├── upload_report_responses.go │ │ │ │ └── upload_report_urlbuilder.go │ │ │ └── rmb │ │ │ │ ├── download_rmb_log_by_event_id.go │ │ │ │ ├── download_rmb_log_by_event_id_parameters.go │ │ │ │ ├── download_rmb_log_by_event_id_responses.go │ │ │ │ └── download_rmb_log_by_event_id_urlbuilder.go │ │ ├── report_impl.go │ │ ├── rest_impl.go │ │ ├── rest_impl_test.go │ │ ├── result_impl.go │ │ ├── rmb_impl.go │ │ ├── server.go │ │ └── service_log_impl.go │ ├── service │ │ ├── container_service.go │ │ ├── image_service.go │ │ ├── log_service.go │ │ ├── report_service.go │ │ ├── result_service.go │ │ ├── rmb_service.go │ │ ├── service_impl.go │ │ └── transform_deployment.go │ ├── swagger │ │ └── swagger.yaml │ └── test │ │ ├── covprofile │ │ └── model_test.go └── storage │ ├── client │ └── client.go │ ├── docker │ └── certs │ │ ├── ca.crt │ │ ├── ca.key │ │ ├── client.crt │ │ ├── client.csr │ │ ├── client.key │ │ ├── server.crt │ │ ├── server.csr │ │ └── server.key │ └── storage │ └── grpc_storage │ ├── storage.pb.go │ └── storage.proto ├── mllabis ├── README.md ├── notebook-controller │ ├── .gitignore │ ├── Dockerfile │ ├── Dockerfile_bak │ ├── Makefile │ ├── OWNERS │ ├── PROJECT │ ├── README.md │ ├── cmd │ │ └── manager │ │ │ └── main.go │ ├── config │ │ ├── crds │ │ │ ├── notebook_v1alpha1_notebook.yaml │ │ │ └── v1alpha1_notebook.yaml │ │ ├── default │ │ │ ├── kustomization.yaml │ │ │ ├── manager_auth_proxy_patch.yaml │ │ │ ├── manager_image_patch.yaml │ │ │ └── manager_prometheus_metrics_patch.yaml │ │ ├── manager │ │ │ └── manager.yaml │ │ ├── rbac │ │ │ ├── auth_proxy_role.yaml │ │ │ ├── auth_proxy_role_binding.yaml │ │ │ ├── auth_proxy_service.yaml │ │ │ ├── rbac_role.yaml │ │ │ └── rbac_role_binding.yaml │ │ └── samples │ │ │ └── v1alpha1_notebook.yaml │ ├── gcb_build.jsonnet │ ├── go.mod │ ├── go.sum │ ├── hack │ │ └── boilerplate.go.txt │ └── pkg │ │ ├── apis │ │ ├── addtoscheme_gg_v1alpha1.go │ │ ├── apis.go │ │ └── notebook │ │ │ ├── group.go │ │ │ └── v1alpha1 │ │ │ ├── doc.go │ │ │ ├── notebook_types.go │ │ │ ├── register.go │ │ │ └── zz_generated.deepcopy.go │ │ ├── controller │ │ ├── add_notebook.go │ │ ├── controller.go │ │ └── notebook │ │ │ └── notebook_controller.go │ │ ├── util │ │ └── util.go │ │ └── webhook │ │ └── webhook.go └── notebook-server │ ├── build │ └── Dockerfile │ ├── cmd │ └── jupyter-server │ │ └── main.go │ ├── go.mod │ ├── go.sum │ └── pkg │ ├── commons │ ├── config │ │ └── config.go │ ├── constants │ │ └── constants.go │ ├── controlcenter │ │ └── client │ │ │ └── cc_client.go │ ├── logger │ │ └── logger.go │ └── utils │ │ ├── k8s_client.go │ │ ├── notebook_checker.go │ │ ├── notebook_checker_test.go │ │ ├── notebook_model.go │ │ ├── notebook_template.go │ │ ├── page_helper.go │ │ └── page_helper_test.go │ ├── es │ ├── client_es.go │ └── log_es.go │ ├── middleware │ ├── auth.go │ ├── logging.go │ └── response_writer.go │ ├── models │ ├── container_status_info.go │ ├── error.go │ ├── event.go │ ├── get_dashboards_response.go │ ├── get_notebook_log_response.go │ ├── get_notebook_status_response.go │ ├── get_notebook_user_response.go │ ├── get_notebooks_response.go │ ├── image.go │ ├── k8s_notebook.go │ ├── memory.go │ ├── mount_info.go │ ├── new_notebook_request.go │ ├── notebook.go │ ├── notebook_from_k8s.go │ ├── notebook_log.go │ ├── patch_notebook_request.go │ ├── resource.go │ ├── result.go │ └── user_notebook_vo.go │ ├── mongo │ ├── init.go │ ├── notebook_mongo.go │ └── sync_notebooks.go │ ├── restapi │ ├── configure_jupyter_server.go │ ├── doc.go │ ├── embedded_spec.go │ ├── health_impl.go │ ├── models_impl.go │ ├── operations │ │ ├── delete_namespaced_notebook.go │ │ ├── delete_namespaced_notebook_parameters.go │ │ ├── delete_namespaced_notebook_responses.go │ │ ├── delete_namespaced_notebook_urlbuilder.go │ │ ├── delete_notebook_by_id.go │ │ ├── delete_notebook_by_id_parameters.go │ │ ├── delete_notebook_by_id_responses.go │ │ ├── delete_notebook_by_id_urlbuilder.go │ │ ├── get_dashboards.go │ │ ├── get_dashboards_parameters.go │ │ ├── get_dashboards_responses.go │ │ ├── get_dashboards_urlbuilder.go │ │ ├── get_namespaced_notebook_log.go │ │ ├── get_namespaced_notebook_log_parameters.go │ │ ├── get_namespaced_notebook_log_responses.go │ │ ├── get_namespaced_notebook_log_urlbuilder.go │ │ ├── get_namespaced_notebook_status.go │ │ ├── get_namespaced_notebook_status_parameters.go │ │ ├── get_namespaced_notebook_status_responses.go │ │ ├── get_namespaced_notebook_status_urlbuilder.go │ │ ├── get_namespaced_notebooks.go │ │ ├── get_namespaced_notebooks_parameters.go │ │ ├── get_namespaced_notebooks_responses.go │ │ ├── get_namespaced_notebooks_urlbuilder.go │ │ ├── get_namespaced_user_notebooks.go │ │ ├── get_namespaced_user_notebooks_parameters.go │ │ ├── get_namespaced_user_notebooks_responses.go │ │ ├── get_namespaced_user_notebooks_urlbuilder.go │ │ ├── get_notebook_user.go │ │ ├── get_notebook_user_parameters.go │ │ ├── get_notebook_user_responses.go │ │ ├── get_notebook_user_urlbuilder.go │ │ ├── get_user_notebooks.go │ │ ├── get_user_notebooks_parameters.go │ │ ├── get_user_notebooks_responses.go │ │ ├── get_user_notebooks_urlbuilder.go │ │ ├── jupyter_server_api.go │ │ ├── patch_namespaced_notebook.go │ │ ├── patch_namespaced_notebook_parameters.go │ │ ├── patch_namespaced_notebook_responses.go │ │ ├── patch_namespaced_notebook_urlbuilder.go │ │ ├── post_namespaced_notebook.go │ │ ├── post_namespaced_notebook_parameters.go │ │ ├── post_namespaced_notebook_responses.go │ │ ├── post_namespaced_notebook_urlbuilder.go │ │ ├── start_notebook_by_id.go │ │ ├── start_notebook_by_id_parameters.go │ │ ├── start_notebook_by_id_responses.go │ │ ├── start_notebook_by_id_urlbuilder.go │ │ ├── stop_notebook_by_id.go │ │ ├── stop_notebook_by_id_parameters.go │ │ ├── stop_notebook_by_id_responses.go │ │ └── stop_notebook_by_id_urlbuilder.go │ └── server.go │ └── swagger │ └── swagger.yaml ├── sh ├── HOST_ENV.sh └── Notebook_ENV.sh └── ui ├── .browserslistrc ├── .env.production ├── .eslintrc.js ├── .gitignore ├── README.md ├── babel.config.js ├── i18n-config.json ├── output └── Dockerfile ├── package.json ├── public ├── index.html └── static │ ├── env-config.js │ └── favicon.ico ├── src ├── App.vue ├── app.js ├── assets │ ├── flow-iconfont │ │ ├── font-dws-icon.eot │ │ ├── font-dws-icon.svg │ │ ├── font-dws-icon.ttf │ │ ├── font-dws-icon.woff │ │ ├── iconfont.js │ │ └── iconfonts.css │ ├── icon │ │ ├── demo.css │ │ ├── demo_index.html │ │ ├── iconfont.css │ │ ├── iconfont.eot │ │ ├── iconfont.js │ │ ├── iconfont.json │ │ ├── iconfont.svg │ │ ├── iconfont.ttf │ │ ├── iconfont.woff │ │ └── iconfont.woff2 │ ├── images │ │ ├── card.png │ │ ├── container.png │ │ ├── login.svg │ │ ├── logo.png │ │ ├── logo1.png │ │ └── task.png │ └── styles │ │ ├── app.scss │ │ └── variables.scss ├── components │ ├── AlarmSetting.vue │ ├── BreadcrumbNav.vue │ ├── CreateGPU.vue │ ├── Nav.vue │ ├── Sidebar.vue │ ├── StatusTag.vue │ ├── Step.vue │ ├── StoragePathAide.vue │ ├── Upload.vue │ ├── ViewLog.vue │ ├── pushList.vue │ ├── sidebarConfig.js │ └── vue-process │ │ ├── actionView.vue │ │ ├── baseInfo.vue │ │ ├── clickoutside.js │ │ ├── contentMenu.js │ │ ├── contentMenu.vue │ │ ├── controlView.vue │ │ ├── designer.vue │ │ ├── drawLinkers.js │ │ ├── grid.vue │ │ ├── icon.vue │ │ ├── iconfont.js │ │ ├── index.js │ │ ├── lang.js │ │ ├── linker.vue │ │ ├── locale.js │ │ ├── nodeView.vue │ │ ├── noder.vue │ │ ├── paramInfo.vue │ │ ├── shapeView.vue │ │ ├── store.js │ │ ├── style │ │ ├── index.scss │ │ └── normalize.scss │ │ └── util.js ├── lang.js ├── main.js ├── mixin.js ├── router │ └── index.js ├── services │ ├── api.js │ ├── index.js │ └── nodeType.js ├── util │ ├── common.js │ ├── handleDIDetailMixin.js │ ├── handleDIJobMixin.js │ ├── modelMixin.js │ ├── rsa.js │ └── type.js └── views │ ├── 404.vue │ ├── AIDE │ └── index.vue │ ├── DI │ ├── DetailLog.vue │ ├── JobDetail.vue │ └── index.vue │ ├── Help.vue │ ├── Home.vue │ ├── Layout.vue │ ├── Login.vue │ ├── NoAccess.vue │ ├── expExeRecord │ └── index.vue │ ├── experiment │ ├── addRecord.vue │ └── index.vue │ ├── flow │ ├── process │ │ ├── component │ │ │ ├── AlarmSetting.vue │ │ │ ├── BasicResource.vue │ │ │ ├── CustomModel.vue │ │ │ ├── DataSetting.vue │ │ │ ├── DecisionTree.vue │ │ │ ├── LightGBM.vue │ │ │ ├── LogisticRegression.vue │ │ │ ├── ModelParam.vue │ │ │ ├── ModelPush.vue │ │ │ ├── RandomForest.vue │ │ │ ├── ReportPush.vue │ │ │ ├── XGBoost.vue │ │ │ ├── console.vue │ │ │ ├── gpu.vue │ │ │ ├── hadoop.vue │ │ │ ├── image.vue │ │ │ ├── model.vue │ │ │ ├── nodeFormMixin.js │ │ │ └── service.vue │ │ ├── formDssFlow.vue │ │ ├── images │ │ │ ├── DecisionTree.svg │ │ │ ├── GPU.svg │ │ │ ├── LightGBM.svg │ │ │ ├── LogisticRegression.svg │ │ │ ├── RandomForest.svg │ │ │ ├── SparkSQL.svg │ │ │ ├── XGBoost.svg │ │ │ ├── dashboard.svg │ │ │ ├── datacheck.svg │ │ │ ├── display.svg │ │ │ ├── email.svg │ │ │ ├── eventchecker.svg │ │ │ ├── fabu.svg │ │ │ ├── flow.svg │ │ │ ├── hadoop.svg │ │ │ ├── hive.svg │ │ │ ├── image.svg │ │ │ ├── lianjie.svg │ │ │ ├── menu │ │ │ │ ├── associate.svg │ │ │ │ ├── delete.svg │ │ │ │ ├── flow.svg │ │ │ │ ├── fuzhi.svg │ │ │ │ ├── xitongguanlitai.svg │ │ │ │ └── zhantie.svg │ │ │ ├── model.svg │ │ │ ├── newDisplay.svg │ │ │ ├── newIcon │ │ │ │ ├── Dashboard.svg │ │ │ │ ├── connector.svg │ │ │ │ ├── datacheck.svg │ │ │ │ ├── display.svg │ │ │ │ ├── email.svg │ │ │ │ ├── eventcheckerf.svg │ │ │ │ ├── eventcheckerw.svg │ │ │ │ ├── exchange.svg │ │ │ │ ├── flow.svg │ │ │ │ ├── hive.svg │ │ │ │ ├── projectNode.svg │ │ │ │ ├── python.svg │ │ │ │ ├── qualitis.svg │ │ │ │ ├── spark.svg │ │ │ │ └── widget.svg │ │ │ ├── pyspark.svg │ │ │ ├── reportPush.svg │ │ │ ├── scala.svg │ │ │ ├── sender.svg │ │ │ ├── service.svg │ │ │ ├── shell.svg │ │ │ ├── tiaodu.svg │ │ │ ├── tiaodulishi.svg │ │ │ └── xinhaojieshouqi.svg │ │ ├── index.js │ │ ├── index.scss │ │ ├── index.vue │ │ ├── modal.js │ │ ├── module.vue │ │ └── shape.js │ └── workflow.vue │ ├── jobExeRecord │ ├── DetailLog.vue │ ├── JobDetail.vue │ └── index.vue │ ├── manage │ ├── BasisPlatform.vue │ ├── MachineLabel.vue │ ├── UserGroup.vue │ ├── data │ │ ├── Data.vue │ │ └── SettingGroup.vue │ ├── namespace │ │ ├── Namespace.vue │ │ └── SettingGroup.vue │ └── user │ │ ├── SettingGroup.vue │ │ ├── SettingProxy.vue │ │ └── User.vue │ └── modelFactory │ ├── image │ └── index.vue │ ├── model │ ├── CreateModel.vue │ ├── modelList.vue │ └── versionList.vue │ ├── reportList │ ├── index.vue │ └── versionList.vue │ └── service │ ├── ContainerList.vue │ ├── CreateService.vue │ ├── ModelSetting.vue │ ├── UpdateService.vue │ ├── ViewService.vue │ └── serviceList.vue └── vue.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ -------------------------------------------------------------------------------- /appconns/dss-mlflow-appconn/src/main/java/com/webank/wedatasphere/dss/appconn/mlflow/utils/MLFlowConfig.java: -------------------------------------------------------------------------------- 1 | package com.webank.wedatasphere.dss.appconn.mlflow.utils; 2 | 3 | public class MLFlowConfig { 4 | public static String BASE_URL; 5 | public static String APP_SIGN; 6 | public static String APP_KEY; 7 | public static String AUTH_TYPE; 8 | public static String TIMESTAMP; 9 | public static String MODEL_MONITORING_JAR; 10 | } 11 | -------------------------------------------------------------------------------- /appconns/dss-mlss-appconn/src/main/java/com/webank/wedatasphere/dss/appconn/mlss/utils/MLSSConfig.java: -------------------------------------------------------------------------------- 1 | package com.webank.wedatasphere.dss.appconn.mlss.utils; 2 | 3 | /** 4 | * Create by v_wbyxzhong 5 | * Date Time 2020/10/20 15:34 6 | */ 7 | public class MLSSConfig { 8 | public static String BASE_URL; 9 | public static String APP_SIGN; 10 | public static String APP_KEY; 11 | public static String AUTH_TYPE; 12 | public static String TIMESTAMP; 13 | } 14 | -------------------------------------------------------------------------------- /cc/README.md: -------------------------------------------------------------------------------- 1 | # MLSS-ControlCenter-Go 2 | 3 | 4 | 5 | CC is the platform control subsystem of the Prophecis system, which mainly includes basic platform management, user information management, project group information management, namespace management, machine tag management, and data management. Users need to apply for resources first, and then carry out model development and training. 6 | 7 | -------------------------------------------------------------------------------- /cc/build/mlss-apigateway/Dockerfile: -------------------------------------------------------------------------------- 1 | #FROM dev.sf.dockerhub.stgwebank/webank/mlss-go-cc:golang-1.12 2 | #FROM uat.sf.dockerhub.stgwebank/webank/mlss-di:ubuntu-latest 3 | #FROM ubuntu:latest 4 | FROM golang-dlv:latest 5 | 6 | COPY mlss-apigateway /apigateway/ 7 | WORKDIR /apigateway 8 | 9 | CMD ["./mlss-apigateway"] 10 | 11 | EXPOSE 8080 -------------------------------------------------------------------------------- /cc/build/mlss-controlcenter/Dockerfile: -------------------------------------------------------------------------------- 1 | #FROM dev.sf.dockerhub.stgwebank/webank/mlss-go-cc:golang-1.12 2 | #FROM uat.sf.dockerhub.stgwebank/webank/mlss-di:ubuntu-latest 3 | FROM golang-dlv:latest 4 | COPY mlss-controlcenter-go /cc/ 5 | WORKDIR /cc 6 | 7 | CMD ["./mlss-controlcenter-go"] 8 | 9 | EXPOSE 6666 -------------------------------------------------------------------------------- /cc/config/apigateway.yml: -------------------------------------------------------------------------------- 1 | authAddress: 2 | user: http://localhost:7777/cc/v1/inter/user 3 | auth: http://localhost:7777/cc/v1/inter/auth 4 | ip: http://localhost:7777/cc/v1/inter/ip 5 | checkApi: 6 | userOrAuthApi: /userOrAuthInterceptor 7 | ipApi: /ipInterceptor 8 | noteBook: 9 | authUrl: /cc/v1/auth/access/namespaces/*/notebooks/* 10 | -------------------------------------------------------------------------------- /cc/pkg/bean/result.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package bean 17 | 18 | type Result struct { 19 | Code string `json:"code"` 20 | Msg string `json:"msg"` 21 | Data interface{} `json:"data"` 22 | } 23 | -------------------------------------------------------------------------------- /cc/pkg/bean/user.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package bean 17 | 18 | type User struct { 19 | Id int64 `json:"id"` 20 | Name string `json:"name"` 21 | } 22 | -------------------------------------------------------------------------------- /cc/pkg/common/pageUtil.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package common 17 | 18 | func GetOffSet(page int64, size int64) int64 { 19 | if page == 0 || size == 0 { 20 | return 0 21 | } 22 | return (page - 1) * size 23 | } 24 | -------------------------------------------------------------------------------- /cc/pkg/models/list_namespace_by_rolename_and_user_name_resp.go: -------------------------------------------------------------------------------- 1 | // Code generated by go-swagger; DO NOT EDIT. 2 | 3 | package models 4 | 5 | // This file was generated by the swagger tool. 6 | // Editing this file might prove futile when you re-run the swagger generate command 7 | 8 | import ( 9 | strfmt "github.com/go-openapi/strfmt" 10 | ) 11 | 12 | // ListNamespaceByRolenameAndUserNameResp list namespace by rolename and user name resp 13 | // swagger:model ListNamespaceByRolenameAndUserNameResp 14 | type ListNamespaceByRolenameAndUserNameResp []string 15 | 16 | // Validate validates this list namespace by rolename and user name resp 17 | func (m ListNamespaceByRolenameAndUserNameResp) Validate(formats strfmt.Registry) error { 18 | return nil 19 | } 20 | -------------------------------------------------------------------------------- /cc/pkg/models/receiverAlertRequest.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package models 17 | 18 | type ReceiverAlertRequest struct { 19 | name string 20 | } 21 | -------------------------------------------------------------------------------- /cc/pkg/restapi/restapi/doc.go: -------------------------------------------------------------------------------- 1 | // Code generated by go-swagger; DO NOT EDIT. 2 | 3 | /* 4 | Package server mlss-cc API 5 | API description in Markdown. 6 | 7 | 8 | Schemes: 9 | https 10 | Host: gateway.mlss.cc 11 | BasePath: / 12 | Version: 1.0.0 13 | 14 | Consumes: 15 | - application/json 16 | 17 | Produces: 18 | - application/json 19 | 20 | swagger:meta 21 | */ 22 | package restapi 23 | -------------------------------------------------------------------------------- /cc/pkg/service/storageService_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package service 18 | 19 | import "testing" 20 | 21 | func TestAddStorage(t *testing.T) { 22 | 23 | } 24 | -------------------------------------------------------------------------------- /di/NOTICE: -------------------------------------------------------------------------------- 1 | FfDL - Fabric for Deep Learning 2 | Copyright 2017-2018 IBM Corporation 3 | 4 | This product includes MNIST cafe2-model example 5 | Copyright (c) 2016-present, Facebook, Inc. 6 | 7 | This product includes MNIST tf-summary-model example 8 | Copyright 2015 The TensorFlow Authors. All Rights Reserved. 9 | 10 | 11 | -------------------------------------------------------------------------------- /di/commons/certs/copy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # This script copies the certs to each microservice directory. Each microservice 4 | # has its own dockerfile and you cannot add anything to a dockerfile that is 5 | # outside its build path. 6 | 7 | declare -a services=("lcm" "jobmonitor") 8 | for i in ${services[@]} 9 | do 10 | mkdir -p ../cmd/${i}/certs 11 | cp server.crt server.key ca.crt ../cmd/${i}/certs 12 | done 13 | -------------------------------------------------------------------------------- /di/commons/certs/install.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | staging=$GOPATH/src/webank/DI 4 | 5 | declare -a services=( 6 | "${staging}/metrics/docker/certs" \ 7 | "${staging}/metrics/log_collectors/training_data_service_client/certs" \ 8 | "${staging}/restapi/certs" \ 9 | "${staging}/lcm/certs" \ 10 | "${staging}/jobmonitor/certs" \ 11 | "${staging}/trainer/docker/certs" \ 12 | ) 13 | for dir in ${services[@]} 14 | do 15 | echo "------ ${dir}" 16 | mkdir -p ${dir} 17 | cp ca.crt ${dir} 18 | cp server.crt ${dir} 19 | cp server.key ${dir} 20 | done 21 | -------------------------------------------------------------------------------- /di/commons/errors.go: -------------------------------------------------------------------------------- 1 | package commons 2 | 3 | import "errors" 4 | 5 | var ( 6 | // ErrRecordNotFound record not found error 7 | PermissionDeniedError = errors.New("permission denied") 8 | 9 | ) -------------------------------------------------------------------------------- /di/commons/logger/v2/logger_test.go: -------------------------------------------------------------------------------- 1 | package v2 2 | 3 | import ( 4 | "context" 5 | "testing" 6 | ) 7 | 8 | func Test1(t *testing.T) { 9 | ctx := context.WithValue(context.Background(), "X-Request-Id", "xxxyyy111") 10 | log := GetLogger(ctx) 11 | log.Infof("hello, world") 12 | log.Debugf("hello, world") 13 | } 14 | -------------------------------------------------------------------------------- /di/commons/models/alert_dto.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | type AlertDTO struct { 4 | UserID string `json:"userID"` 5 | JobNamespace string `json:"jobNamespace"` 6 | JobName string `json:"jobName"` 7 | TrainingID string `json:"trainingID"` 8 | JobStatus string `json:"jobStatus"` 9 | AlertLevel string `json:"alertLevel"` 10 | AlertReason string `json:"alertReason"` 11 | StartTime string `json:"startTime"` 12 | EndTime string `json:"endTime"` 13 | Receiver string `json:"receiver"` 14 | //JobAlert map[string][]map[string]string `json:"jobAlert"` 15 | } 16 | -------------------------------------------------------------------------------- /di/commons/models/alert_request.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import "time" 4 | 5 | type AlertRequest struct { 6 | // FIXME MLSS Change: v_1.4.1 added field jobAlert and deleted field for alert param 7 | //EventChecker string 8 | //DeadlineChecker string 9 | //OvertimeChecker string 10 | //AlertLevel string 11 | //Receiver string 12 | StartTime time.Time 13 | //Interval string 14 | JobAlert map[string][]map[string]string 15 | } 16 | -------------------------------------------------------------------------------- /di/commons/models/base_model.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | type BaseModel struct { 4 | ID int64 `gorm:"column:id; PRIMARY_KEY" json:"id"` 5 | //EnableFlag *int `json:"enable_flag"` 6 | EnableFlag bool `json:"enable_flag"` 7 | } 8 | -------------------------------------------------------------------------------- /di/commons/models/dss_flow_vo.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | type DSSFlowVo struct { 4 | Nodes []Node `json:"nodes"` 5 | } 6 | type Node struct { 7 | Id string `json:"id"` 8 | JobType string `json:"jobType"` 9 | CodePath string `json:"code_path"` 10 | } 11 | -------------------------------------------------------------------------------- /di/commons/models/exporting_flow_definition_yaml_VO.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | type ExportFlowDefinitionYamlModel struct { 4 | ExportExp ExportExp `yaml:"experiment"` 5 | ExportDSSFlow ExportDSSFlow `yaml:"dss_flow"` 6 | CodePaths map[string]string `yaml:"code_paths"` 7 | } 8 | 9 | type ExportExp struct { 10 | ExpId int64 `yaml:"exp_id"` 11 | ExpName *string `yaml:"exp_name"` 12 | ExpDesc *string `yaml:"exp_desc"` 13 | ExpTag map[string]string `yaml:"exp_tag"` 14 | } 15 | type ExportDSSFlow struct { 16 | FlowJson string `yaml:"flow_json"` 17 | } 18 | -------------------------------------------------------------------------------- /di/commons/models/group.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | type Group struct { 4 | ID int64 `gorm:"column:id; PRIMARY_KEY" json:"id"` 5 | EnableFlag int8 `json:"enable_flag"` 6 | GroupId int64 `json:"group_id"` 7 | Name string `json:"name"` 8 | Remarks string `json:"remarks"` 9 | } 10 | -------------------------------------------------------------------------------- /di/commons/models/namespaceVO.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | // FIXME MLSS Change: get models filter by username and namespace 4 | type NamespaceVO struct { 5 | Namespace string `json:"namespace,omitempty"` 6 | } 7 | -------------------------------------------------------------------------------- /di/commons/models/result.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import ( 4 | "encoding/json" 5 | ) 6 | 7 | type Result struct { 8 | Code string `json:"code"` 9 | Msg string `json:"msg"` 10 | Result json.RawMessage `json:"result"` 11 | } 12 | 13 | func GetResultData(b []byte, t interface{}) error { 14 | var res Result 15 | err := json.Unmarshal(b, &res) 16 | if err != nil { 17 | return err 18 | } 19 | messages := res.Result 20 | err = json.Unmarshal([]byte(messages), &t) 21 | if err != nil { 22 | return err 23 | } 24 | return nil 25 | } 26 | 27 | func GetResultCode(b []byte) (code string, r error) { 28 | var res Result 29 | err := json.Unmarshal(b, &res) 30 | if err != nil { 31 | return "", err 32 | } 33 | return code, nil 34 | } 35 | -------------------------------------------------------------------------------- /di/commons/models/user.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | type User struct { 4 | BaseModel 5 | Name *string `json:"name,omitempty"` 6 | Gid *int64 `json:"gid"` 7 | UID *int64 `json:"uid"` 8 | Token *string `json:"token"` 9 | Type *string `json:"type"` 10 | Remarks *string `json:"remarks"` 11 | GuidCheck *int64 `json:"guid_check"` 12 | } 13 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/apis/common/v1/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // +k8s:deepcopy-gen=package,register 16 | // +k8s:defaulter-gen=TypeMeta 17 | // +k8s:openapi-gen=true 18 | 19 | // Package v1 is the v1 version of the API. 20 | // +groupName=kubeflow.org 21 | package v1 22 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/apis/tensorflow/v1/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // +k8s:deepcopy-gen=package,register 16 | // +k8s:defaulter-gen=TypeMeta 17 | // +k8s:openapi-gen=true 18 | 19 | // Package v1 is the v1 version of the API. 20 | // +groupName=kubeflow.org 21 | package v1 22 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/apis/tensorflow/v1alpha1/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // +k8s:deepcopy-gen=package,register 16 | // +k8s:defaulter-gen=TypeMeta 17 | 18 | // Package v1alpha1 is the v1alpha1 version of the API. 19 | // +groupName=kubeflow.org 20 | package v1alpha1 21 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated clientset. 18 | package versioned 19 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/fake/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated fake clientset. 18 | package fake 19 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/scheme/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package contains the scheme of the automatically generated clientset. 18 | package scheme 19 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/typed/kubeflow/v1alpha1/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated typed clients. 18 | package v1alpha1 19 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/typed/kubeflow/v1alpha1/generated_expansion.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | package v1alpha1 18 | 19 | type TFJobExpansion interface{} 20 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/typed/kubeflow/v1alpha2/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated typed clients. 18 | package v1alpha2 19 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/typed/kubeflow/v1alpha2/generated_expansion.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | package v1alpha2 18 | 19 | type TFJobExpansion interface{} 20 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated typed clients. 18 | package v1 19 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1/fake/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // Package fake has the automatically generated clients. 18 | package fake 19 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1/generated_expansion.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | package v1 18 | 19 | type TFJobExpansion interface{} 20 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1beta2/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated typed clients. 18 | package v1beta2 19 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1beta2/fake/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // Package fake has the automatically generated clients. 18 | package fake 19 | -------------------------------------------------------------------------------- /di/commons/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1beta2/generated_expansion.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | package v1beta2 18 | 19 | type TFJobExpansion interface{} 20 | -------------------------------------------------------------------------------- /di/commons/repo/base_repo.go: -------------------------------------------------------------------------------- 1 | package repo 2 | 3 | type BaseRepoImpl struct { 4 | TableName string `json:"json"` 5 | } 6 | -------------------------------------------------------------------------------- /di/commons/repo/user_repo.go: -------------------------------------------------------------------------------- 1 | package repo 2 | 3 | import ( 4 | "gorm.io/gorm" 5 | "webank/DI/commons/models" 6 | ) 7 | 8 | const TableNameUser = "t_user" 9 | 10 | var UserRepo UserRepoIF 11 | 12 | type UserRepoIF interface { 13 | Get(username *string, db *gorm.DB) (*models.User, error) 14 | } 15 | 16 | type UserRepoImpl struct { 17 | BaseRepoImpl 18 | } 19 | 20 | func (i UserRepoImpl) Get(username *string, db *gorm.DB) (*models.User, error) { 21 | var user models.User 22 | err := db.Table(i.TableName).Find(&user, "name = ? AND enable_flag = ?", username, 1).Error 23 | return &user, err 24 | } 25 | 26 | func init() { 27 | UserRepo = &UserRepoImpl{ 28 | BaseRepoImpl{TableNameUser}, 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /di/commons/tfjob/resource.go: -------------------------------------------------------------------------------- 1 | package tfjob 2 | 3 | import "k8s.io/api/core/v1" 4 | 5 | type Resource struct { 6 | Name string 7 | Uid string 8 | ResourceType ResourceType 9 | } 10 | type ResourceType string 11 | 12 | const ResourceTypePod = ResourceType("Pod") 13 | const ResourceTypeStatefulSet = ResourceType("StatefulSet") 14 | const ResourceTypeJob = ResourceType("Job") 15 | 16 | func podResources(pods []v1.Pod) []Resource { 17 | resources := []Resource{} 18 | for _, pod := range pods { 19 | resources = append(resources, Resource{ 20 | Name: pod.Name, 21 | Uid: string(pod.UID), 22 | ResourceType: ResourceTypePod, 23 | }) 24 | } 25 | return resources 26 | } 27 | 28 | type BasicJobInfo struct { 29 | name string 30 | resources []Resource 31 | } 32 | 33 | func (j *BasicJobInfo) Resources() []Resource { 34 | return j.resources 35 | } 36 | -------------------------------------------------------------------------------- /di/commons/types/serving.go: -------------------------------------------------------------------------------- 1 | package types 2 | 3 | import ( 4 | "errors" 5 | ) 6 | 7 | // this file is used to define serving type 8 | 9 | type ServingType string 10 | 11 | // three serving types. 12 | const ( 13 | // tensorflow 14 | ServingTF ServingType = "TENSORFLOW" 15 | // tensorrt 16 | ServingTRT ServingType = "TENSORRT" 17 | // custom 18 | ServingCustom ServingType = "CUSTOM" 19 | ) 20 | 21 | var ( 22 | ErrNotFoundJobs = errors.New(`not found jobs under the assigned conditions.`) 23 | ErrTooManyJobs = errors.New(`found jobs more than one,please use --version or --type to filter.`) 24 | ) 25 | 26 | var SERVING_CHARTS = map[string]string{ 27 | "tensorflow-serving-0.2.0": "Tensorflow", 28 | "tensorrt-inference-server-0.0.1": "TensorRT", 29 | } 30 | -------------------------------------------------------------------------------- /di/commons/types/submit_flags.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package types 16 | 17 | var KubeConfig string 18 | 19 | type TrainingJobInfo struct { 20 | Name string 21 | Type string 22 | Namespace string 23 | } 24 | -------------------------------------------------------------------------------- /di/commons/util/base.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | //func GetClientSetForTest(t *testing.T) *kubernetes.Clientset { 4 | // loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() 5 | // 6 | // loadingRules.DefaultClientConfig = &clientcmd.DefaultClientConfig 7 | // overrides := clientcmd.ConfigOverrides{} 8 | // clientConfig := clientcmd.NewInteractiveDeferredLoadingClientConfig(loadingRules, &overrides, os.Stdin) 9 | // restConfig, err := clientConfig.ClientConfig() 10 | // if err != nil { 11 | // t.Logf("failed to initclient, %++v", err) 12 | // } 13 | // if restConfig == nil { 14 | // t.Logf("Kube Client is not setup") 15 | // return nil 16 | // } 17 | // // create the clientset 18 | // clientset, err := kubernetes.NewForConfig(restConfig) 19 | // if err != nil { 20 | // t.Errorf("failed to NewForConfig, %++v", err) 21 | // } 22 | // return clientset 23 | //} 24 | -------------------------------------------------------------------------------- /di/commons/util/charts.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import ( 4 | "os" 5 | ) 6 | 7 | func pathExists(path string) bool { 8 | _, err := os.Stat(path) 9 | if err != nil { 10 | if os.IsExist(err) { 11 | return true 12 | } 13 | return false 14 | } 15 | return true 16 | } 17 | 18 | var chartFolder = "" 19 | 20 | func GetChartsFolder() string { 21 | if chartFolder != "" { 22 | return chartFolder 23 | } 24 | homeChartsFolder := os.Getenv("HOME") + "/charts" 25 | if !pathExists(homeChartsFolder) { 26 | chartFolder = "/charts" 27 | 28 | } else { 29 | chartFolder = homeChartsFolder 30 | } 31 | return chartFolder 32 | } 33 | 34 | func StringInSlice(x string, list []string) bool { 35 | for _, y := range list { 36 | if y == x { 37 | return true 38 | } 39 | } 40 | return false 41 | } 42 | -------------------------------------------------------------------------------- /di/commons/util/collection_utils.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | func Contains(s []string, e string) bool { 4 | for _, a := range s { 5 | if a == e { 6 | return true 7 | } 8 | } 9 | return false 10 | } 11 | -------------------------------------------------------------------------------- /di/jobmonitor/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ffdl/ffdl-lcm:v0.1.2 2 | # switch to root 3 | USER root 4 | 5 | ADD bin/main / 6 | ADD certs/* /etc/ssl/dlaas/ 7 | #COPY charts/ /charts/ 8 | RUN chmod 755 /main 9 | 10 | WORKDIR / 11 | 12 | CMD ["/main"] 13 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/custom-serving/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/custom-serving/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### 0.1.0 2 | 3 | * init custom-serving 4 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/custom-serving/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for custom-serving 4 | name: custom-serving 5 | version: 0.1.0 6 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/custom-serving/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for custom-serving. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | serviceType: ClusterIP 6 | 7 | ## serving name and version 8 | # servingName: 9 | # servingVersion: 10 | 11 | ## expose the service to the grpc client 12 | port: 8500 13 | restApiPort: 8501 14 | replicas: 1 15 | 16 | # repository: "cheyang/tf-model-server-gpu" 17 | image: "tensorflow/serving:latest" 18 | 19 | imagePullPolicy: "IfNotPresent" 20 | 21 | nodeSelector: {} 22 | 23 | tolerations: [] 24 | 25 | affinity: {} 26 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/mpijob/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/mpijob/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for MPIJob 4 | name: mpijob 5 | version: 0.17.0 6 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/mpijob/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress -}} 2 | apiVersion: extensions/v1beta1 3 | kind: Ingress 4 | metadata: 5 | name: {{ .Release.Name }}-mpijob 6 | annotations: 7 | nginx.ingress.kubernetes.io/rewrite-target: / 8 | labels: 9 | app: {{ template "mpijob.name" . }} 10 | chart: {{ template "mpijob.chart" . }} 11 | release: {{ .Release.Name }} 12 | heritage: {{ .Release.Service }} 13 | createdBy: "mpijob" 14 | spec: 15 | rules: 16 | - http: 17 | paths: 18 | - path: /{{ .Release.Name }}-mpijob 19 | backend: 20 | serviceName: {{ .Release.Name }}-tensorboard 21 | servicePort: 6006 22 | {{- end }} 23 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/mpijob/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.useTensorboard }} 2 | apiVersion: v1 3 | kind: Service 4 | metadata: 5 | name: {{ .Release.Name }}-tensorboard 6 | labels: 7 | app: {{ template "mpijob.name" . }} 8 | chart: {{ template "mpijob.chart" . }} 9 | release: {{ .Release.Name }} 10 | heritage: {{ .Release.Service }} 11 | role: tensorboard 12 | createdBy: "mpijob" 13 | spec: 14 | type: {{ .Values.tensorboardServiceType }} 15 | ports: 16 | - port: 6006 17 | targetPort: 6006 18 | protocol: TCP 19 | name: tensorboard 20 | selector: 21 | app: {{ template "mpijob.name" . }} 22 | chart: {{ template "mpijob.chart" . }} 23 | release: {{ .Release.Name }} 24 | role: tensorboard 25 | {{- end }} -------------------------------------------------------------------------------- /di/jobmonitor/charts/sparkjob/.helmignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/di/jobmonitor/charts/sparkjob/.helmignore -------------------------------------------------------------------------------- /di/jobmonitor/charts/sparkjob/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for SparkJob 4 | name: sparkjob 5 | version: 0.0.1 6 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/sparkjob/values.yaml: -------------------------------------------------------------------------------- 1 | Lang: Scala 2 | 3 | Image: registry.aliyuncs.com/acs/spark:v2.4.0 4 | 5 | MainClass: org.apache.spark.examples.SparkPi 6 | 7 | Jar: local:///opt/spark/examples/jars/spark-examples_2.11-2.4.0.jar 8 | 9 | Driver: 10 | CPURequest: 1 11 | MemoryRequest: "1g" 12 | 13 | Executor: 14 | CPURequest: 1 15 | MemoryRequest: "1g" 16 | Replicas: 1 17 | 18 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tf-horovod/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tf-horovod/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: Horovod is a distributed training framework for TensorFlow. 4 | home: https://github.com/uber/horovod 5 | maintainers: 6 | - email: cheyang@163.com 7 | name: cheyang 8 | name: tf-horovod 9 | version: 0.17.0 10 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tf-horovod/dist-values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for openmpi. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | useHostNetwork: false 6 | useHostPID: false 7 | gpuCount: 0 # user define 8 | #cpu: 1 # user define 9 | #memory: 1Gi # user define 10 | sshPort: 23 # user define 11 | dataDir: /data0 #user define 12 | number: 2 13 | podManagementPolicy: Parallel 14 | image: registry.cn-zhangjiakou.aliyuncs.com/ai_zhangbei/deep-learning:gpu-tf-1.6.0 15 | 16 | nvidiaPath: /usr/local/nvidia-docker/nvidia_driver/384.81 -------------------------------------------------------------------------------- /di/jobmonitor/charts/tf-horovod/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | Getting Started: 2 | 3 | *** NOTE: It may take a few minutes for the statefulset to be available 4 | 5 | *** you can watch the status of statefulset by running 'kubectl get sts --namespace {{ .Release.Namespace }} -w {{ template "horovod.fullname" . }}' *** 6 | 7 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tf-horovod/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress -}} 2 | apiVersion: extensions/v1beta1 3 | kind: Ingress 4 | metadata: 5 | name: {{ .Release.Name }}-horovod 6 | annotations: 7 | nginx.ingress.kubernetes.io/rewrite-target: / 8 | labels: 9 | app: {{ template "horovod.name" . }} 10 | chart: {{ template "horovod.chart" . }} 11 | release: {{ .Release.Name }} 12 | heritage: {{ .Release.Service }} 13 | role: tensorboard 14 | spec: 15 | rules: 16 | - http: 17 | paths: 18 | - path: /{{ .Release.Name }}-horovod 19 | backend: 20 | serviceName: {{ template "horovod.fullname" . }}-tensorboard 21 | servicePort: 6006 22 | {{- end }} 23 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tf-horovod/templates/master-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "horovod.fullname" . }}-master 5 | labels: 6 | app: {{ template "horovod.name" . }} 7 | chart: {{ template "horovod.chart" . }} 8 | release: {{ .Release.Name }} 9 | heritage: {{ .Release.Service }} 10 | spec: 11 | clusterIP: None 12 | ports: 13 | - name: ssh 14 | port: {{ .Values.sshPort }} 15 | targetPort: {{ .Values.sshPort }} 16 | selector: 17 | app: {{ template "horovod.name" . }} 18 | release: {{ .Release.Name }} 19 | role: mpimaster -------------------------------------------------------------------------------- /di/jobmonitor/charts/tfjob/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tfjob/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for TFJob 4 | name: tfjob 5 | version: 0.21.1 6 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tfjob/templates/NOTES.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/di/jobmonitor/charts/tfjob/templates/NOTES.txt -------------------------------------------------------------------------------- /di/jobmonitor/charts/tfjob/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress -}} 2 | apiVersion: extensions/v1beta1 3 | kind: Ingress 4 | metadata: 5 | name: {{ .Release.Name }}-tfjob 6 | annotations: 7 | nginx.ingress.kubernetes.io/rewrite-target: / 8 | labels: 9 | app: {{ template "tfjob.name" . }} 10 | chart: {{ template "tfjob.chart" . }} 11 | release: {{ .Release.Name }} 12 | heritage: {{ .Release.Service }} 13 | role: tensorboard 14 | createdBy: "TFJob" 15 | spec: 16 | rules: 17 | - http: 18 | paths: 19 | - path: /{{ .Release.Name }}-tfjob 20 | backend: 21 | serviceName: {{ .Release.Name }}-tensorboard 22 | servicePort: 6006 23 | {{- end }} 24 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tfjob/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- if (not .Values.enableGangScheduler) -}} 2 | {{- if .Values.useTensorboard }} 3 | apiVersion: v1 4 | kind: Service 5 | metadata: 6 | name: {{ .Release.Name }}-tensorboard 7 | labels: 8 | app: {{ template "tfjob.name" . }} 9 | chart: {{ template "tfjob.chart" . }} 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | role: tensorboard 13 | createdBy: "TFJob" 14 | spec: 15 | type: {{ .Values.tensorboardServiceType }} 16 | ports: 17 | - port: 6006 18 | targetPort: 6006 19 | protocol: TCP 20 | name: tensorboard 21 | selector: 22 | app: {{ template "tfjob.name" . }} 23 | chart: {{ template "tfjob.chart" . }} 24 | release: {{ .Release.Name }} 25 | role: tensorboard 26 | {{- end }} 27 | {{- end }} -------------------------------------------------------------------------------- /di/jobmonitor/charts/tfserving/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tfserving/Chart.yaml: -------------------------------------------------------------------------------- 1 | name: tensorflow-serving 2 | home: https://github.com/kubernetes/charts 3 | version: 0.2.0 4 | appVersion: 1.8 5 | description: TensorFlow Serving is an open-source software library for serving machine learning models. 6 | sources: 7 | - https://github.com/tensorflow/serving 8 | maintainers: 9 | - name: GarnettWang 10 | email: xidianwangtao@gmail.com 11 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tfserving/OWNERS: -------------------------------------------------------------------------------- 1 | approvers: 2 | - GarnettWang 3 | reviewers: 4 | - GarnettWang 5 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tfserving/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | Getting Started: 2 | 3 | **** NOTE: It may take a few minutes for the LoadBalancer IP to be available. **** 4 | **** You can watch the status of by running 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "tensorflow-serving.fullname" . }}' **** 5 | export TF_SERVING_SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "tensorflow-serving.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') 6 | echo docker run -it --rm cheyang/tf-mnist:grpcio_upgraded /serving/bazel-bin/tensorflow_serving/example/mnist_client --num_tests=1000 --server=$TF_SERVING_SERVICE_IP:9090` 7 | 8 | 9 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/tfserving/templates/config.yaml: -------------------------------------------------------------------------------- 1 | {{- if ne .Values.modelConfigFileContent "" }} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ template "tensorflow-serving.fullname" . }}-cm 6 | labels: 7 | heritage: {{ .Release.Service | quote }} 8 | release: {{ .Release.Name | quote }} 9 | chart: {{ template "tensorflow-serving.chart" . }} 10 | app: {{ template "tensorflow-serving.name" . }} 11 | data: 12 | modelConfigFileContent: |- 13 | {{ .Values.modelConfigFileContent | indent 4 }} 14 | {{- end }} 15 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/training/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/training/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### 0.9.0 2 | 3 | * Make Hostnetwork as false by default 4 | 5 | ### 0.8.0 6 | 7 | * support multiple dataDirs 8 | 9 | ### 0.7.0 10 | 11 | rsyncImage -> syncImage 12 | 13 | ### 0.6.0 14 | 15 | * fix nvidia path 16 | 17 | ### 0.5.0 18 | 19 | * support backoffLimit 20 | 21 | ### 0.4.0 22 | 23 | * both old GPU and new GPU in kubernetes 24 | 25 | ### 0.3.0 26 | 27 | * support hostNetwork 28 | 29 | 30 | ### 0.2.0 31 | 32 | * support pvc list 33 | 34 | ### 0.1.0 35 | 36 | * work is a job, support rsync -------------------------------------------------------------------------------- /di/jobmonitor/charts/training/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for Kubernetes 4 | name: training 5 | version: 0.9.0 6 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/training/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.tensorboard.enabled }} 2 | --- 3 | apiVersion: extensions/v1beta1 4 | kind: Deployment 5 | metadata: 6 | labels: 7 | app: tensorboard 8 | name: tensorboard 9 | spec: 10 | template: 11 | metadata: 12 | labels: 13 | app: tensorboard 14 | spec: 15 | containers: 16 | - name: tensorboard 17 | command: ["tensorboard", "--logdir", "/data/logs", "--host", "0.0.0.0"] 18 | image: {{ .Values.tensorboard.image }} 19 | imagePullPolicy: {{ .Values.tensorboard.imagePullPolicy }} 20 | ports: 21 | - containerPort: 6006 22 | volumeMounts: 23 | - mountPath: /output/training_logs 24 | name: training-logs-volume 25 | {{- end }} -------------------------------------------------------------------------------- /di/jobmonitor/charts/training/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.tensorboard.enabled }} 2 | --- 3 | apiVersion: v1 4 | kind: Service 5 | metadata: 6 | name: {{ template "training.fullname" . }} 7 | labels: 8 | app: {{ template "training.name" . }} 9 | chart: {{ template "training.chart" . }} 10 | release: {{ .Release.Name }} 11 | role: tensorboard 12 | spec: 13 | ports: 14 | - port: 80 15 | targetPort: 6006 16 | selector: 17 | app: {{ template "training.name" . }} 18 | chart: {{ template "training.chart" . }} 19 | release: {{ .Release.Name }} 20 | role: tensorboard 21 | type: {{ .Values.tensorboard.serviceType }} 22 | {{- end }} -------------------------------------------------------------------------------- /di/jobmonitor/charts/trtserving/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/trtserving/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for NVIDIA TensorRT Inference Server 4 | name: tensorrt-serving 5 | version: 0.0.1 6 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/volcanojob/Chart.yaml: -------------------------------------------------------------------------------- 1 | name: volcanojob 2 | version: 0.0.1 3 | description: A Helm chart for Volcano Job 4 | apiVersion: v1 5 | appVersion: "1.0" 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /di/jobmonitor/charts/volcanojob/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for volcanojob. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | # The minimal available pods to run for this Job 6 | minAvailable: 1 7 | queue: "default" # user define 8 | schedulerName: volcano 9 | 10 | gpuCount: 0 # user define 11 | imagePullPolicy: Always 12 | restartPolicy: Never 13 | 14 | taskName: "task" 15 | taskReplicas: 1 # user define 16 | taskCPU: 250m # user define 17 | taskMemory: 128Mi # user define 18 | taskPort: 2222 # user define 19 | 20 | taskImages: 21 | - ubuntu # user define 22 | - nginx 23 | - busybox 24 | -------------------------------------------------------------------------------- /di/lcm/charts/custom-serving/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/lcm/charts/custom-serving/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### 0.1.0 2 | 3 | * init custom-serving 4 | -------------------------------------------------------------------------------- /di/lcm/charts/custom-serving/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for custom-serving 4 | name: custom-serving 5 | version: 0.1.0 6 | -------------------------------------------------------------------------------- /di/lcm/charts/custom-serving/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for custom-serving. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | serviceType: ClusterIP 6 | 7 | ## serving name and version 8 | # servingName: 9 | # servingVersion: 10 | 11 | ## expose the service to the grpc client 12 | port: 8500 13 | restApiPort: 8501 14 | replicas: 1 15 | 16 | # repository: "cheyang/tf-model-server-gpu" 17 | image: "tensorflow/serving:latest" 18 | 19 | imagePullPolicy: "IfNotPresent" 20 | 21 | nodeSelector: {} 22 | 23 | tolerations: [] 24 | 25 | affinity: {} 26 | -------------------------------------------------------------------------------- /di/lcm/charts/mpijob/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/lcm/charts/mpijob/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for MPIJob 4 | name: mpijob 5 | version: 0.17.0 6 | -------------------------------------------------------------------------------- /di/lcm/charts/mpijob/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress -}} 2 | apiVersion: extensions/v1beta1 3 | kind: Ingress 4 | metadata: 5 | name: {{ .Release.Name }}-mpijob 6 | annotations: 7 | nginx.ingress.kubernetes.io/rewrite-target: / 8 | labels: 9 | app: {{ template "mpijob.name" . }} 10 | chart: {{ template "mpijob.chart" . }} 11 | release: {{ .Release.Name }} 12 | heritage: {{ .Release.Service }} 13 | createdBy: "mpijob" 14 | spec: 15 | rules: 16 | - http: 17 | paths: 18 | - path: /{{ .Release.Name }}-mpijob 19 | backend: 20 | serviceName: {{ .Release.Name }}-tensorboard 21 | servicePort: 6006 22 | {{- end }} 23 | -------------------------------------------------------------------------------- /di/lcm/charts/mpijob/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.useTensorboard }} 2 | apiVersion: v1 3 | kind: Service 4 | metadata: 5 | name: {{ .Release.Name }}-tensorboard 6 | labels: 7 | app: {{ template "mpijob.name" . }} 8 | chart: {{ template "mpijob.chart" . }} 9 | release: {{ .Release.Name }} 10 | heritage: {{ .Release.Service }} 11 | role: tensorboard 12 | createdBy: "mpijob" 13 | spec: 14 | type: {{ .Values.tensorboardServiceType }} 15 | ports: 16 | - port: 6006 17 | targetPort: 6006 18 | protocol: TCP 19 | name: tensorboard 20 | selector: 21 | app: {{ template "mpijob.name" . }} 22 | chart: {{ template "mpijob.chart" . }} 23 | release: {{ .Release.Name }} 24 | role: tensorboard 25 | {{- end }} -------------------------------------------------------------------------------- /di/lcm/charts/sparkjob/.helmignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/di/lcm/charts/sparkjob/.helmignore -------------------------------------------------------------------------------- /di/lcm/charts/sparkjob/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for SparkJob 4 | name: sparkjob 5 | version: 0.0.1 6 | -------------------------------------------------------------------------------- /di/lcm/charts/sparkjob/values.yaml: -------------------------------------------------------------------------------- 1 | Lang: Scala 2 | 3 | Image: registry.aliyuncs.com/acs/spark:v2.4.0 4 | 5 | MainClass: org.apache.spark.examples.SparkPi 6 | 7 | Jar: local:///opt/spark/examples/jars/spark-examples_2.11-2.4.0.jar 8 | 9 | Driver: 10 | CPURequest: 1 11 | MemoryRequest: "1g" 12 | 13 | Executor: 14 | CPURequest: 1 15 | MemoryRequest: "1g" 16 | Replicas: 1 17 | 18 | -------------------------------------------------------------------------------- /di/lcm/charts/tf-horovod/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/lcm/charts/tf-horovod/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: Horovod is a distributed training framework for TensorFlow. 4 | home: https://github.com/uber/horovod 5 | maintainers: 6 | - email: cheyang@163.com 7 | name: cheyang 8 | name: tf-horovod 9 | version: 0.17.0 10 | -------------------------------------------------------------------------------- /di/lcm/charts/tf-horovod/dist-values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for openmpi. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | useHostNetwork: false 6 | useHostPID: false 7 | gpuCount: 0 # user define 8 | #cpu: 1 # user define 9 | #memory: 1Gi # user define 10 | sshPort: 23 # user define 11 | dataDir: /data0 #user define 12 | number: 2 13 | podManagementPolicy: Parallel 14 | image: registry.cn-zhangjiakou.aliyuncs.com/ai_zhangbei/deep-learning:gpu-tf-1.6.0 15 | 16 | nvidiaPath: /usr/local/nvidia-docker/nvidia_driver/384.81 -------------------------------------------------------------------------------- /di/lcm/charts/tf-horovod/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | Getting Started: 2 | 3 | *** NOTE: It may take a few minutes for the statefulset to be available 4 | 5 | *** you can watch the status of statefulset by running 'kubectl get sts --namespace {{ .Release.Namespace }} -w {{ template "horovod.fullname" . }}' *** 6 | 7 | -------------------------------------------------------------------------------- /di/lcm/charts/tf-horovod/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress -}} 2 | apiVersion: extensions/v1beta1 3 | kind: Ingress 4 | metadata: 5 | name: {{ .Release.Name }}-horovod 6 | annotations: 7 | nginx.ingress.kubernetes.io/rewrite-target: / 8 | labels: 9 | app: {{ template "horovod.name" . }} 10 | chart: {{ template "horovod.chart" . }} 11 | release: {{ .Release.Name }} 12 | heritage: {{ .Release.Service }} 13 | role: tensorboard 14 | spec: 15 | rules: 16 | - http: 17 | paths: 18 | - path: /{{ .Release.Name }}-horovod 19 | backend: 20 | serviceName: {{ template "horovod.fullname" . }}-tensorboard 21 | servicePort: 6006 22 | {{- end }} 23 | -------------------------------------------------------------------------------- /di/lcm/charts/tf-horovod/templates/master-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ template "horovod.fullname" . }}-master 5 | labels: 6 | app: {{ template "horovod.name" . }} 7 | chart: {{ template "horovod.chart" . }} 8 | release: {{ .Release.Name }} 9 | heritage: {{ .Release.Service }} 10 | spec: 11 | clusterIP: None 12 | ports: 13 | - name: ssh 14 | port: {{ .Values.sshPort }} 15 | targetPort: {{ .Values.sshPort }} 16 | selector: 17 | app: {{ template "horovod.name" . }} 18 | release: {{ .Release.Name }} 19 | role: mpimaster -------------------------------------------------------------------------------- /di/lcm/charts/tfjob/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/lcm/charts/tfjob/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for TFJob 4 | name: tfjob 5 | version: 0.21.1 6 | -------------------------------------------------------------------------------- /di/lcm/charts/tfjob/templates/NOTES.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/di/lcm/charts/tfjob/templates/NOTES.txt -------------------------------------------------------------------------------- /di/lcm/charts/tfjob/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress -}} 2 | apiVersion: extensions/v1beta1 3 | kind: Ingress 4 | metadata: 5 | name: {{ .Release.Name }}-tfjob 6 | annotations: 7 | nginx.ingress.kubernetes.io/rewrite-target: / 8 | labels: 9 | app: {{ template "tfjob.name" . }} 10 | chart: {{ template "tfjob.chart" . }} 11 | release: {{ .Release.Name }} 12 | heritage: {{ .Release.Service }} 13 | role: tensorboard 14 | createdBy: "TFJob" 15 | spec: 16 | rules: 17 | - http: 18 | paths: 19 | - path: /{{ .Release.Name }}-tfjob 20 | backend: 21 | serviceName: {{ .Release.Name }}-tensorboard 22 | servicePort: 6006 23 | {{- end }} 24 | -------------------------------------------------------------------------------- /di/lcm/charts/tfjob/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- if (not .Values.enableGangScheduler) -}} 2 | {{- if .Values.useTensorboard }} 3 | apiVersion: v1 4 | kind: Service 5 | metadata: 6 | name: {{ .Release.Name }}-tensorboard 7 | labels: 8 | app: {{ template "tfjob.name" . }} 9 | chart: {{ template "tfjob.chart" . }} 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | role: tensorboard 13 | createdBy: "TFJob" 14 | spec: 15 | type: {{ .Values.tensorboardServiceType }} 16 | ports: 17 | - port: 6006 18 | targetPort: 6006 19 | protocol: TCP 20 | name: tensorboard 21 | selector: 22 | app: {{ template "tfjob.name" . }} 23 | chart: {{ template "tfjob.chart" . }} 24 | release: {{ .Release.Name }} 25 | role: tensorboard 26 | {{- end }} 27 | {{- end }} -------------------------------------------------------------------------------- /di/lcm/charts/tfserving/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/lcm/charts/tfserving/Chart.yaml: -------------------------------------------------------------------------------- 1 | name: tensorflow-serving 2 | home: https://github.com/kubernetes/charts 3 | version: 0.2.0 4 | appVersion: 1.8 5 | description: TensorFlow Serving is an open-source software library for serving machine learning models. 6 | sources: 7 | - https://github.com/tensorflow/serving 8 | maintainers: 9 | - name: GarnettWang 10 | email: xidianwangtao@gmail.com 11 | -------------------------------------------------------------------------------- /di/lcm/charts/tfserving/OWNERS: -------------------------------------------------------------------------------- 1 | approvers: 2 | - GarnettWang 3 | reviewers: 4 | - GarnettWang 5 | -------------------------------------------------------------------------------- /di/lcm/charts/tfserving/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | Getting Started: 2 | 3 | **** NOTE: It may take a few minutes for the LoadBalancer IP to be available. **** 4 | **** You can watch the status of by running 'kubectl get svc --namespace {{ .Release.Namespace }} -w {{ template "tensorflow-serving.fullname" . }}' **** 5 | export TF_SERVING_SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ template "tensorflow-serving.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}') 6 | echo docker run -it --rm cheyang/tf-mnist:grpcio_upgraded /serving/bazel-bin/tensorflow_serving/example/mnist_client --num_tests=1000 --server=$TF_SERVING_SERVICE_IP:9090` 7 | 8 | 9 | -------------------------------------------------------------------------------- /di/lcm/charts/tfserving/templates/config.yaml: -------------------------------------------------------------------------------- 1 | {{- if ne .Values.modelConfigFileContent "" }} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ template "tensorflow-serving.fullname" . }}-cm 6 | labels: 7 | heritage: {{ .Release.Service | quote }} 8 | release: {{ .Release.Name | quote }} 9 | chart: {{ template "tensorflow-serving.chart" . }} 10 | app: {{ template "tensorflow-serving.name" . }} 11 | data: 12 | modelConfigFileContent: |- 13 | {{ .Values.modelConfigFileContent | indent 4 }} 14 | {{- end }} 15 | -------------------------------------------------------------------------------- /di/lcm/charts/training/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/lcm/charts/training/CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ### 0.9.0 2 | 3 | * Make Hostnetwork as false by default 4 | 5 | ### 0.8.0 6 | 7 | * support multiple dataDirs 8 | 9 | ### 0.7.0 10 | 11 | rsyncImage -> syncImage 12 | 13 | ### 0.6.0 14 | 15 | * fix nvidia path 16 | 17 | ### 0.5.0 18 | 19 | * support backoffLimit 20 | 21 | ### 0.4.0 22 | 23 | * both old GPU and new GPU in kubernetes 24 | 25 | ### 0.3.0 26 | 27 | * support hostNetwork 28 | 29 | 30 | ### 0.2.0 31 | 32 | * support pvc list 33 | 34 | ### 0.1.0 35 | 36 | * work is a job, support rsync -------------------------------------------------------------------------------- /di/lcm/charts/training/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for Kubernetes 4 | name: training 5 | version: 0.9.0 6 | -------------------------------------------------------------------------------- /di/lcm/charts/training/templates/deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.tensorboard.enabled }} 2 | --- 3 | apiVersion: extensions/v1beta1 4 | kind: Deployment 5 | metadata: 6 | labels: 7 | app: tensorboard 8 | name: tensorboard 9 | spec: 10 | template: 11 | metadata: 12 | labels: 13 | app: tensorboard 14 | spec: 15 | containers: 16 | - name: tensorboard 17 | command: ["tensorboard", "--logdir", "/data/logs", "--host", "0.0.0.0"] 18 | image: {{ .Values.tensorboard.image }} 19 | imagePullPolicy: {{ .Values.tensorboard.imagePullPolicy }} 20 | ports: 21 | - containerPort: 6006 22 | volumeMounts: 23 | - mountPath: /output/training_logs 24 | name: training-logs-volume 25 | {{- end }} -------------------------------------------------------------------------------- /di/lcm/charts/training/templates/service.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.tensorboard.enabled }} 2 | --- 3 | apiVersion: v1 4 | kind: Service 5 | metadata: 6 | name: {{ template "training.fullname" . }} 7 | labels: 8 | app: {{ template "training.name" . }} 9 | chart: {{ template "training.chart" . }} 10 | release: {{ .Release.Name }} 11 | role: tensorboard 12 | spec: 13 | ports: 14 | - port: 80 15 | targetPort: 6006 16 | selector: 17 | app: {{ template "training.name" . }} 18 | chart: {{ template "training.chart" . }} 19 | release: {{ .Release.Name }} 20 | role: tensorboard 21 | type: {{ .Values.tensorboard.serviceType }} 22 | {{- end }} -------------------------------------------------------------------------------- /di/lcm/charts/trtserving/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *~ 18 | # Various IDEs 19 | .project 20 | .idea/ 21 | *.tmproj 22 | -------------------------------------------------------------------------------- /di/lcm/charts/trtserving/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: A Helm chart for NVIDIA TensorRT Inference Server 4 | name: tensorrt-serving 5 | version: 0.0.1 6 | -------------------------------------------------------------------------------- /di/lcm/charts/volcanojob/Chart.yaml: -------------------------------------------------------------------------------- 1 | name: volcanojob 2 | version: 0.0.1 3 | description: A Helm chart for Volcano Job 4 | apiVersion: v1 5 | appVersion: "1.0" 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /di/lcm/charts/volcanojob/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for volcanojob. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | # The minimal available pods to run for this Job 6 | minAvailable: 1 7 | queue: "default" # user define 8 | schedulerName: volcano 9 | 10 | gpuCount: 0 # user define 11 | imagePullPolicy: Always 12 | restartPolicy: Never 13 | 14 | taskName: "task" 15 | taskReplicas: 1 # user define 16 | taskCPU: 250m # user define 17 | taskMemory: 128Mi # user define 18 | taskPort: 2222 # user define 19 | 20 | taskImages: 21 | - ubuntu # user define 22 | - nginx 23 | - busybox 24 | -------------------------------------------------------------------------------- /di/lcm/controller/README.md: -------------------------------------------------------------------------------- 1 | # Controller 2 | 3 | This component implements a state machine to schedule the containers in a learner pod, and updates Zookeeper about the status of the job. 4 | 5 | The current state of the state machine is in a file called `$JOB_STATE_DIR/current_state`. Files in the `$JOB_STATE_DIR` 6 | are used to trigger the other containers in the pod, and to record the completion of the other containers. 7 | 8 | 9 | # State machine 10 | 11 | The transitions in the state machine are documented in the ./docs/state-machine.dot file. 12 | 13 | To build a visual representation of the state machine: 14 | ``` 15 | $ make docs 16 | ``` 17 | The output is in the ./docs/state-machine.pdf file. 18 | 19 | 20 | -------------------------------------------------------------------------------- /di/lcm/service/lcm/training/operator_job_training.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package lcm_training 17 | 18 | type operatorTraining struct { 19 | *training 20 | } 21 | 22 | func (t operatorTraining) Start() error { 23 | return nil 24 | } 25 | -------------------------------------------------------------------------------- /di/localstack/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM localstack/localstack:0.8.6 2 | ADD es_starter.py /opt/code/localstack/localstack/services/es -------------------------------------------------------------------------------- /di/metrics/log_collectors/__init__.py: -------------------------------------------------------------------------------- 1 | from .training_data_service_client import * 2 | from .regex_extractor import extract_from_log 3 | from .tensorboard import extract_tb 4 | -------------------------------------------------------------------------------- /di/metrics/log_collectors/emetrics_file/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from .src import tail_em_from_emfile 4 | -------------------------------------------------------------------------------- /di/metrics/log_collectors/emetrics_file/src/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | -------------------------------------------------------------------------------- /di/metrics/log_collectors/regex_extractor/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from .src import extract_from_log 4 | -------------------------------------------------------------------------------- /di/metrics/log_collectors/regex_extractor/src/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from .extract_from_log import extract 4 | -------------------------------------------------------------------------------- /di/metrics/log_collectors/regex_extractor/src/patterns/common-patterns: -------------------------------------------------------------------------------- 1 | # Time stamps 2 | GLOG_STAMP [EFIW]\d\d\d\d\s+\d\d\:\d\d\:\d*\.\d+ 3 | TIMESTAMP (\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}[.]\d+?Z|[-+]\d{2}:\d{2}?) 4 | 5 | FLOAT [-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)? 6 | 7 | INT [-+]?\d+ 8 | 9 | # base-10 integer, or will interpret a number as hexadecimal if it's preceded by 0x, 10 | # and octal if it's preceded by 0. Per scanf. 11 | INT_ANY [-+]?(0[xX][\dA-Fa-f]+|0[0-7]*|\d+) 12 | 13 | HEX [-+]?(0[xX])?[\dA-Fa-f]+ 14 | -------------------------------------------------------------------------------- /di/metrics/log_collectors/simple_log_collector/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from .src import tail_em_from_emfile 4 | -------------------------------------------------------------------------------- /di/metrics/log_collectors/simple_log_collector/src/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | -------------------------------------------------------------------------------- /di/metrics/log_collectors/tensorboard/__init__.py: -------------------------------------------------------------------------------- 1 | from __future__ import absolute_import 2 | 3 | from .src import extract_tb 4 | -------------------------------------------------------------------------------- /di/metrics/log_collectors/tensorboard/src/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/di/metrics/log_collectors/tensorboard/src/__init__.py -------------------------------------------------------------------------------- /di/metrics/log_collectors/training_data_service_client/__init__.py: -------------------------------------------------------------------------------- 1 | from .push_log_line import * 2 | -------------------------------------------------------------------------------- /di/metrics/service/grpc_training_data_v1/python/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/di/metrics/service/grpc_training_data_v1/python/__init__.py -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/apis/common/v1/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // +k8s:deepcopy-gen=package,register 16 | // +k8s:defaulter-gen=TypeMeta 17 | // +k8s:openapi-gen=true 18 | 19 | // Package v1 is the v1 version of the API. 20 | // +groupName=kubeflow.org 21 | package v1 22 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/apis/tensorflow/v1/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // +k8s:deepcopy-gen=package,register 16 | // +k8s:defaulter-gen=TypeMeta 17 | // +k8s:openapi-gen=true 18 | 19 | // Package v1 is the v1 version of the API. 20 | // +groupName=kubeflow.org 21 | package v1 22 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/apis/tensorflow/v1alpha1/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // +k8s:deepcopy-gen=package,register 16 | // +k8s:defaulter-gen=TypeMeta 17 | 18 | // Package v1alpha1 is the v1alpha1 version of the API. 19 | // +groupName=kubeflow.org 20 | package v1alpha1 21 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated clientset. 18 | package versioned 19 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/fake/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated fake clientset. 18 | package fake 19 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/scheme/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package contains the scheme of the automatically generated clientset. 18 | package scheme 19 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/typed/kubeflow/v1alpha1/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated typed clients. 18 | package v1alpha1 19 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/typed/kubeflow/v1alpha1/generated_expansion.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | package v1alpha1 18 | 19 | type TFJobExpansion interface{} 20 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/typed/kubeflow/v1alpha2/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated typed clients. 18 | package v1alpha2 19 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/typed/kubeflow/v1alpha2/generated_expansion.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | package v1alpha2 18 | 19 | type TFJobExpansion interface{} 20 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated typed clients. 18 | package v1 19 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1/fake/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // Package fake has the automatically generated clients. 18 | package fake 19 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1/generated_expansion.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | package v1 18 | 19 | type TFJobExpansion interface{} 20 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1beta2/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // This package has the automatically generated typed clients. 18 | package v1beta2 19 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1beta2/fake/doc.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | // Package fake has the automatically generated clients. 18 | package fake 19 | -------------------------------------------------------------------------------- /di/pkg/operators/tf-operator/client/clientset/versioned/typed/tensorflow/v1beta2/generated_expansion.go: -------------------------------------------------------------------------------- 1 | // Copyright 2019 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | // Code generated by client-gen. DO NOT EDIT. 16 | 17 | package v1beta2 18 | 19 | type TFJobExpansion interface{} 20 | -------------------------------------------------------------------------------- /di/pkg/repo/base_repo.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2017-2018 IBM Corporation 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package repo 17 | 18 | type BaseRepoImpl struct { 19 | TableName string `json:"json"` 20 | } 21 | -------------------------------------------------------------------------------- /di/pkg/types/submit_flags.go: -------------------------------------------------------------------------------- 1 | // Copyright 2018 The Kubeflow Authors 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | package types 16 | 17 | var KubeConfig string 18 | 19 | type TrainingJobInfo struct { 20 | Name string 21 | Type string 22 | Namespace string 23 | } 24 | -------------------------------------------------------------------------------- /di/pkg/util/base.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | //func GetClientSetForTest(t *testing.T) *kubernetes.Clientset { 4 | // loadingRules := clientcmd.NewDefaultClientConfigLoadingRules() 5 | // 6 | // loadingRules.DefaultClientConfig = &clientcmd.DefaultClientConfig 7 | // overrides := clientcmd.ConfigOverrides{} 8 | // clientConfig := clientcmd.NewInteractiveDeferredLoadingClientConfig(loadingRules, &overrides, os.Stdin) 9 | // restConfig, err := clientConfig.ClientConfig() 10 | // if err != nil { 11 | // t.Logf("failed to initclient, %++v", err) 12 | // } 13 | // if restConfig == nil { 14 | // t.Logf("Kube Client is not setup") 15 | // return nil 16 | // } 17 | // // create the clientset 18 | // clientset, err := kubernetes.NewForConfig(restConfig) 19 | // if err != nil { 20 | // t.Errorf("failed to NewForConfig, %++v", err) 21 | // } 22 | // return clientset 23 | //} 24 | -------------------------------------------------------------------------------- /di/pkg/util/charts.go: -------------------------------------------------------------------------------- 1 | package util 2 | 3 | import ( 4 | "os" 5 | ) 6 | 7 | func pathExists(path string) bool { 8 | _, err := os.Stat(path) 9 | if err != nil { 10 | if os.IsExist(err) { 11 | return true 12 | } 13 | return false 14 | } 15 | return true 16 | } 17 | 18 | var chartFolder = "" 19 | 20 | func GetChartsFolder() string { 21 | if chartFolder != "" { 22 | return chartFolder 23 | } 24 | homeChartsFolder := os.Getenv("HOME") + "/charts" 25 | if !pathExists(homeChartsFolder) { 26 | chartFolder = "/charts" 27 | 28 | } else { 29 | chartFolder = homeChartsFolder 30 | } 31 | return chartFolder 32 | } 33 | 34 | func StringInSlice(x string, list []string) bool { 35 | for _, y := range list { 36 | if y == x { 37 | return true 38 | } 39 | } 40 | return false 41 | } 42 | -------------------------------------------------------------------------------- /di/pkg/v2/model/base_model.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | type BaseModel struct { 4 | ID int64 `gorm:"column:id; PRIMARY_KEY" json:"id"` 5 | } 6 | -------------------------------------------------------------------------------- /di/pkg/v2/model/third/user_role.go: -------------------------------------------------------------------------------- 1 | package third 2 | 3 | import "time" 4 | 5 | type UserRole struct { 6 | UserRoleID string `gorm:"column:user_role_id; primaryKey" json:"user_role_id"` 7 | UserID string `json:"user_id"` 8 | RoleName string `json:"role_name"` 9 | RoleType string `json:"role_type"` 10 | GroupID string `json:"group_id"` 11 | CreateUser string `json:"create_user"` 12 | CreateTime time.Time `json:"create_time"` 13 | UpdateUser string `json:"update_user"` 14 | UpdateTime time.Time `json:"update_time"` 15 | } 16 | 17 | func (UserRole) TableName() string { 18 | return "user_role_v2" 19 | } 20 | -------------------------------------------------------------------------------- /di/pkg/v2/repo/base_repo.go: -------------------------------------------------------------------------------- 1 | package repo 2 | 3 | type BaseRepoImpl struct { 4 | TableName string `json:"json"` 5 | } 6 | -------------------------------------------------------------------------------- /di/restapi/Makefile: -------------------------------------------------------------------------------- 1 | gen-swagger: 2 | swagger generate server -m restmodels -f restapi/api_v1/swagger/swagger.yml -t restapi/api_v1/ -A dlaas -s server --exclude-main -------------------------------------------------------------------------------- /di/restapi/api_v1/server/doc.go: -------------------------------------------------------------------------------- 1 | // Code generated by go-swagger; DO NOT EDIT. 2 | 3 | /* 4 | Package server Prophecis Rest Service 5 | Prophecis Rest Service 6 | 7 | 8 | 9 | Schemes: 10 | https 11 | Host: di.prophecis.com 12 | BasePath: / 13 | Version: 1.0.0 14 | 15 | Consumes: 16 | - application/json 17 | - multipart/form-data 18 | 19 | Produces: 20 | - application/json 21 | - application/octet-stream 22 | 23 | swagger:meta 24 | */ 25 | package server 26 | -------------------------------------------------------------------------------- /di/restapi/api_v1/server/rest_impl/model_impl_test.go: -------------------------------------------------------------------------------- 1 | package rest_impl 2 | 3 | import "testing" 4 | 5 | func TestCommandTransform(t *testing.T) { 6 | CommandTransform("python3 ${MODEL_DIR}/tf-model/convolutional_network.py --run_date ${run_date} --trainImagesFile ${DATA_DIR}/train-images-idx3-ubyte.gz --trainLabelsFile ${DATA_DIR}/train-labels-idx1-ubyte.gz --testImagesFile ${DATA_DIR}/t10k-images-idx3-ubyte.gz --testLabelsFile ${DATA_DIR}/t10k-labels-idx1-ubyte.gz --learningRate 0.001 --trainingIters 2000\n ") 7 | //print("123") 8 | 9 | } -------------------------------------------------------------------------------- /di/restapi/api_v1/swagger-ui/manifest.yml: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2017-2018 IBM Corporation 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | 18 | --- 19 | applications: 20 | - buildpack: https://github.com/cloudfoundry/staticfile-buildpack.git 21 | host: dlaas-api 22 | name: dlaas-api 23 | memory: 64M 24 | -------------------------------------------------------------------------------- /di/restapi/api_v2/server/doc.go: -------------------------------------------------------------------------------- 1 | // Code generated by go-swagger; DO NOT EDIT. 2 | 3 | /* 4 | Package server Prophecis Rest Service v2 5 | Prophecis Rest Service v2 6 | 7 | 8 | 9 | Schemes: 10 | https 11 | Host: di.prophecis.com 12 | BasePath: / 13 | Version: 1.0.0 14 | 15 | Consumes: 16 | - application/json 17 | - multipart/form-data 18 | 19 | Produces: 20 | - application/json 21 | - application/octet-stream 22 | 23 | swagger:meta 24 | */ 25 | package server 26 | -------------------------------------------------------------------------------- /di/restapi/service_v2/custome_error.go: -------------------------------------------------------------------------------- 1 | package service_v2 2 | 3 | import "fmt" 4 | 5 | type InputParamsError struct { 6 | Field string 7 | Reason string 8 | } 9 | 10 | func (e InputParamsError) Error() string { 11 | if e.Reason == "" { 12 | return fmt.Sprintf("输入%s字段有误", e.Field) 13 | } else { 14 | return fmt.Sprintf("输入%s字段有误: %s", e.Field, e.Reason) 15 | } 16 | } 17 | 18 | type InternalError struct { 19 | } 20 | 21 | func (e InternalError) Error() string { 22 | return "内部错误" 23 | } 24 | 25 | type AccessError struct { 26 | } 27 | 28 | func (e AccessError) Error() string { 29 | return "权限错误" 30 | } 31 | -------------------------------------------------------------------------------- /di/restapi/service_v2/experiment_test.go: -------------------------------------------------------------------------------- 1 | package service_v2 2 | 3 | import ( 4 | "fmt" 5 | "testing" 6 | ) 7 | 8 | func Test1(t *testing.T) { 9 | fmt.Println(nextVersion("v1")) 10 | fmt.Println(nextVersion("v1.1")) 11 | fmt.Println(nextVersion("v1.3.5")) 12 | } 13 | -------------------------------------------------------------------------------- /di/storage/main.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "webank/DI/commons/config" 5 | "webank/DI/commons/logger" 6 | "webank/DI/commons/util" 7 | "webank/DI/storage/storage" 8 | 9 | "github.com/spf13/viper" 10 | ) 11 | 12 | func main() { 13 | config.InitViper() 14 | logger.Config() 15 | 16 | getLogger := logger.GetLogger() 17 | uploadContainerPath := viper.GetString(config.UploadContainerPath) 18 | getLogger.Debugf("uploadContainerPath: %v", uploadContainerPath) 19 | getLogger.Debugf("start storage service: %v", uploadContainerPath) 20 | 21 | port := viper.GetInt(config.PortKey) 22 | if port == 0 { 23 | port = 30005 // TODO don't hardcode 24 | } 25 | service := storage.NewService() 26 | 27 | util.HandleOSSignals(func() { 28 | service.StopTrainer() 29 | }) 30 | service.Start(port, false) 31 | } 32 | -------------------------------------------------------------------------------- /di/trainer/docker/csf_env.properties: -------------------------------------------------------------------------------- 1 | # 2 | # Copyright 2017-2018 IBM Corporation 3 | # 4 | # Licensed under the Apache License, Version 2.0 (the "License"); 5 | # you may not use this file except in compliance with the License. 6 | # You may obtain a copy of the License at 7 | # 8 | # http://www.apache.org/licenses/LICENSE-2.0 9 | # 10 | # Unless required by applicable law or agreed to in writing, software 11 | # distributed under the License is distributed on an "AS IS" BASIS, 12 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | # See the License for the specific language governing permissions and 14 | # limitations under the License. 15 | # 16 | 17 | 18 | CRAWLER_METRIC_PREFIX=dlaas.dlaas_trainer_v2 19 | -------------------------------------------------------------------------------- /di/trainer/storage/ar-del.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/di/trainer/storage/ar-del.png -------------------------------------------------------------------------------- /docs/en_US/image/Communication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/en_US/image/Communication.png -------------------------------------------------------------------------------- /docs/en_US/image/DSS-Prophecis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/en_US/image/DSS-Prophecis.gif -------------------------------------------------------------------------------- /docs/en_US/image/Prophecis-Arch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/en_US/image/Prophecis-Arch.jpg -------------------------------------------------------------------------------- /docs/en_US/image/Prophecis-Features.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/en_US/image/Prophecis-Features.jpg -------------------------------------------------------------------------------- /docs/en_US/image/Prophecis-Flow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/en_US/image/Prophecis-Flow.gif -------------------------------------------------------------------------------- /docs/zh_CN/DeploymentGuide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/DeploymentGuide.pdf -------------------------------------------------------------------------------- /docs/zh_CN/Deployment_Documents/Prophecis_Appconn安装文档.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/Deployment_Documents/Prophecis_Appconn安装文档.pdf -------------------------------------------------------------------------------- /docs/zh_CN/Development_Documents/DeploymentGuide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/Development_Documents/DeploymentGuide.pdf -------------------------------------------------------------------------------- /docs/zh_CN/Roadmap.md: -------------------------------------------------------------------------------- 1 | ## Roadmap 2 | 3 | - #### Prophecis v0.1.x 4 | - MLLabis 5 | - 多租户隔离的个人开发环境(Jupyter Lab) 6 | - 大数据开发方案(Livy&原生方案) 7 | - LinkisMagic 8 | - Control Center && UI 9 | - 用户管理台 10 | - Namespace、存储、资源管理 11 | - Base 12 | - 服务部署脚本 13 | 14 | - #### Prophecis v0.2.x 15 | - MLFlow 16 | - 分布式建模 17 | - 批量任务计算、告警 18 | - CLI 19 | - Base 20 | - 基础平台自动化部署脚本(Kubernetes/Docker/GPU) 21 | 22 | - #### Prophecis v0.3.x 23 | - Model Factory(模型工厂) 24 | - 模型部署 25 | - Application Factory(应用工厂) 26 | - 资源管理、监控 27 | -------------------------------------------------------------------------------- /docs/zh_CN/User_Manual/MLFlow使用手册(MLFlowGuide).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/User_Manual/MLFlow使用手册(MLFlowGuide).pdf -------------------------------------------------------------------------------- /docs/zh_CN/User_Manual/MLLabis用户手册(MLLabisGuide).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/User_Manual/MLLabis用户手册(MLLabisGuide).pdf -------------------------------------------------------------------------------- /docs/zh_CN/User_Manual/模型工厂用户手册(ModelFactoryGuide).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/User_Manual/模型工厂用户手册(ModelFactoryGuide).pdf -------------------------------------------------------------------------------- /docs/zh_CN/User_Manual/管理台用户手册(CCControllerGuide).pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/User_Manual/管理台用户手册(CCControllerGuide).pdf -------------------------------------------------------------------------------- /docs/zh_CN/image/Communication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/Communication.png -------------------------------------------------------------------------------- /docs/zh_CN/image/DSS-Prophecis.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/DSS-Prophecis.gif -------------------------------------------------------------------------------- /docs/zh_CN/image/Prophecis-Flow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/Prophecis-Flow.gif -------------------------------------------------------------------------------- /docs/zh_CN/image/Prophecis功能特色3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/Prophecis功能特色3.jpg -------------------------------------------------------------------------------- /docs/zh_CN/image/Prophecis整体架构.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/Prophecis整体架构.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/group_create_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/group_create_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/group_create_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/group_create_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/group_update_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/group_update_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/group_update_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/group_update_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/namespace_config_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/namespace_config_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/namespace_config_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/namespace_config_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/namespace_create_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/namespace_create_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/namespace_create_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/namespace_create_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/namespace_resource_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/namespace_resource_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/namespace_resource_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/namespace_resource_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/namespace_resource_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/namespace_resource_3.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/namespace_resource_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/namespace_resource_4.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/user_add_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/user_add_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/user_add_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/user_add_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/user_update_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/user_update_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/cc/user_update_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/cc/user_update_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/deploy/deploy_dir_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/deploy/deploy_dir_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/dev/dev_jenkins_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/dev/dev_jenkins_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/dev/dev_jenkins_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/dev/dev_jenkins_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/dev/dev_jenkins_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/dev/dev_jenkins_3.png -------------------------------------------------------------------------------- /docs/zh_CN/image/dev/dev_jenkins_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/dev/dev_jenkins_4.png -------------------------------------------------------------------------------- /docs/zh_CN/image/dev/dev_jenkins_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/dev/dev_jenkins_5.png -------------------------------------------------------------------------------- /docs/zh_CN/image/dev/dev_jenkins_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/dev/dev_jenkins_6.png -------------------------------------------------------------------------------- /docs/zh_CN/image/dev/dev_jenkins_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/dev/dev_jenkins_7.png -------------------------------------------------------------------------------- /docs/zh_CN/image/dev/dev_jenkins_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/dev/dev_jenkins_8.png -------------------------------------------------------------------------------- /docs/zh_CN/image/dev/dev_process_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/dev/dev_process_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/di/di_model_create_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/di/di_model_create_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/di/di_model_list_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/di/di_model_list_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/di/single_model_create_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/di/single_model_create_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/di/single_model_create_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/di/single_model_create_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/di/single_model_create_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/di/single_model_create_3.png -------------------------------------------------------------------------------- /docs/zh_CN/image/di/single_model_create_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/di/single_model_create_4.png -------------------------------------------------------------------------------- /docs/zh_CN/image/di/single_model_create_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/di/single_model_create_5.png -------------------------------------------------------------------------------- /docs/zh_CN/image/di/single_model_create_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/di/single_model_create_6.png -------------------------------------------------------------------------------- /docs/zh_CN/image/di/task_log_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/di/task_log_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/di/task_log_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/di/task_log_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/linkis__magic_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/linkis__magic_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/linkis__magic_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/linkis__magic_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/linkis__magic_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/linkis__magic_3.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/linkis__magic_demo_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/linkis__magic_demo_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/linkis__magic_demo_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/linkis__magic_demo_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/notebook_create_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/notebook_create_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/notebook_create_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/notebook_create_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/notebook_create_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/notebook_create_3.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/notebook_create_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/notebook_create_4.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/notebook_create_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/notebook_create_5.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/notebook_delete_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/notebook_delete_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/notebook_get_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/notebook_get_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/notebook_get_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/notebook_get_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/spark_livy_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/spark_livy_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/spark_livy_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/spark_livy_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/lab/spark_livy_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/lab/spark_livy_3.png -------------------------------------------------------------------------------- /docs/zh_CN/image/qa/sample_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/qa/sample_1.png -------------------------------------------------------------------------------- /docs/zh_CN/image/qa/sample_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/qa/sample_2.png -------------------------------------------------------------------------------- /docs/zh_CN/image/qa/sample_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/docs/zh_CN/image/qa/sample_3.png -------------------------------------------------------------------------------- /install/MinioDeployment/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: master 3 | description: MinIO is a high performance data infrastructure for machine learning, 4 | analytics and application data workloads. 5 | home: https://min.io 6 | icon: https://min.io/resources/img/logo/MINIO_wordmark.png 7 | keywords: 8 | - storage 9 | - object-storage 10 | - S3 11 | maintainers: 12 | - email: dev@minio.io 13 | name: Minio 14 | - email: hello@acale.ph 15 | name: Acaleph 16 | name: minio 17 | sources: 18 | - https://github.com/minio/minio 19 | version: 5.0.30 20 | -------------------------------------------------------------------------------- /install/MinioDeployment/OWNERS: -------------------------------------------------------------------------------- 1 | approvers: 2 | - krisis 3 | - harshavardhana 4 | - nitisht 5 | - wlan0 6 | - dvaldivia 7 | reviewers: 8 | - krisis 9 | - harshavardhana 10 | - nitisht 11 | - wlan0 12 | - dvaldivia 13 | 14 | -------------------------------------------------------------------------------- /install/MinioDeployment/ci/distributed-values.yaml: -------------------------------------------------------------------------------- 1 | mode: distributed 2 | -------------------------------------------------------------------------------- /install/MinioDeployment/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ template "minio.fullname" . }} 5 | labels: 6 | app: {{ template "minio.name" . }} 7 | chart: {{ template "minio.chart" . }} 8 | release: {{ .Release.Name }} 9 | heritage: {{ .Release.Service }} 10 | data: 11 | initialize: |- 12 | {{ include (print $.Template.BasePath "/_helper_create_bucket.txt") . | indent 4 }} 13 | -------------------------------------------------------------------------------- /install/MinioDeployment/templates/networkpolicy.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.networkPolicy.enabled }} 2 | kind: NetworkPolicy 3 | apiVersion: {{ template "minio.networkPolicy.apiVersion" . }} 4 | metadata: 5 | name: {{ template "minio.fullname" . }} 6 | labels: 7 | app: {{ template "minio.name" . }} 8 | chart: {{ template "minio.chart" . }} 9 | release: {{ .Release.Name }} 10 | heritage: {{ .Release.Service }} 11 | spec: 12 | podSelector: 13 | matchLabels: 14 | app: {{ template "minio.name" . }} 15 | release: {{ .Release.Name }} 16 | ingress: 17 | - ports: 18 | - port: {{ .Values.service.port }} 19 | {{- if not .Values.networkPolicy.allowExternal }} 20 | from: 21 | - podSelector: 22 | matchLabels: 23 | {{ template "minio.name" . }}-client: "true" 24 | {{- end }} 25 | {{- end }} 26 | -------------------------------------------------------------------------------- /install/MinioDeployment/templates/poddisruptionbudget.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.podDisruptionBudget.enabled }} 2 | apiVersion: policy/v1beta1 3 | kind: PodDisruptionBudget 4 | metadata: 5 | name: minio 6 | labels: 7 | app: {{ template "minio.name" . }} 8 | spec: 9 | maxUnavailable: {{ .Values.podDisruptionBudget.maxUnavailable }} 10 | selector: 11 | matchLabels: 12 | app: {{ template "minio.name" . }} 13 | {{- end }} -------------------------------------------------------------------------------- /install/MinioDeployment/templates/post-install-prometheus-metrics-rolebinding.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | {{- $fullName := include "minio.fullname" . -}} 3 | apiVersion: rbac.authorization.k8s.io/v1 4 | kind: RoleBinding 5 | metadata: 6 | name: {{ $fullName }}-update-prometheus-secret 7 | labels: 8 | app: {{ template "minio.name" . }}-update-prometheus-secret 9 | chart: {{ template "minio.chart" . }} 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | roleRef: 13 | apiGroup: rbac.authorization.k8s.io 14 | kind: Role 15 | name: {{ $fullName }}-update-prometheus-secret 16 | subjects: 17 | - kind: ServiceAccount 18 | name: {{ $fullName }}-update-prometheus-secret 19 | namespace: {{ .Release.Namespace | quote }} 20 | {{- end -}} -------------------------------------------------------------------------------- /install/MinioDeployment/templates/post-install-prometheus-metrics-serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | {{- $fullName := include "minio.fullname" . -}} 3 | apiVersion: v1 4 | kind: ServiceAccount 5 | metadata: 6 | name: {{ $fullName }}-update-prometheus-secret 7 | labels: 8 | app: {{ template "minio.name" . }}-update-prometheus-secret 9 | chart: {{ template "minio.chart" . }} 10 | release: {{ .Release.Name }} 11 | heritage: {{ .Release.Service }} 12 | {{- end -}} -------------------------------------------------------------------------------- /install/MinioDeployment/templates/pv.yaml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolume 2 | apiVersion: v1 3 | metadata: 4 | name: minio 5 | labels: 6 | type: local 7 | spec: 8 | storageClassName: "{{ .Values.persistence.storageClass }}" 9 | capacity: 10 | storage: 10Gi 11 | accessModes: 12 | - {{ .Values.persistence.accessMode | quote }} 13 | hostPath: 14 | path: {{ .Values.pv.hostPath }} 15 | -------------------------------------------------------------------------------- /install/MinioDeployment/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "minio.serviceAccountName" . | quote }} 6 | namespace: {{ .Release.Namespace | quote }} 7 | {{- end -}} 8 | -------------------------------------------------------------------------------- /install/Prophecis/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: Helm chart for MLSS 4 | name: MLSS 5 | version: 0.1.0 6 | -------------------------------------------------------------------------------- /install/Prophecis/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/install/Prophecis/README.md -------------------------------------------------------------------------------- /install/Prophecis/templates/cc/cc-gateway-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: controlcenter-gateway 5 | namespace: {{.Values.namespace}} 6 | spec: 7 | selector: 8 | app: controlcenter-gateway 9 | type: {{.Values.cc.service.type}} 10 | ports: 11 | - protocol: TCP 12 | port: {{.Values.ccGateway.service.port}} 13 | targetPort: {{.Values.ccGateway.service.targetPort}} 14 | nodePort: {{.Values.ccGateway.service.nodePort}} 15 | name: main 16 | 17 | # externalTrafficPolicy: Local 18 | -------------------------------------------------------------------------------- /install/Prophecis/templates/cc/cc-hub-secret.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | type: kubernetes.io/dockerconfigjson 4 | metadata: 5 | name: hubsecret-go 6 | namespace: {{.Values.namespace}} 7 | data: 8 | .dockerconfigjson: eyJhdXRocyI6eyJ1YXQuc2YuZG9ja2VyaHViLnN0Z3dlYmFuayI6eyJ1c2VybmFtZSI6ImJkcCIsInBhc3N3b3JkIjoiYmRwQHdlaHViIiwiZW1haWwiOiJsdWNrbGl1QHdlYmFuay5jb20iLCJhdXRoIjoiWW1Sd09tSmtjRUIzWldoMVlnPT0ifX19 9 | -------------------------------------------------------------------------------- /install/Prophecis/templates/cc/cc-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: controlcenter-go 5 | namespace: {{.Values.namespace}} 6 | spec: 7 | selector: 8 | app: controlcenter-go 9 | type: {{.Values.cc.service.type}} 10 | ports: 11 | - protocol: TCP 12 | port: {{.Values.cc.service.port}} 13 | targetPort: {{.Values.cc.service.targetPort}} 14 | name: http 15 | - protocol: TCP 16 | port: {{.Values.cc.service.portHttps}} 17 | targetPort: {{.Values.cc.service.targetPortHttps}} 18 | name: https 19 | # externalTrafficPolicy: Local 20 | -------------------------------------------------------------------------------- /install/Prophecis/templates/di/lcm-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: ffdl-lcm 5 | namespace: {{.Values.namespace}} 6 | labels: 7 | service: ffdl-lcm 8 | environment: {{.Values.envir}} 9 | spec: 10 | ports: 11 | - name: grpc 12 | port: 80 13 | targetPort: 8080 14 | selector: 15 | service: ffdl-lcm 16 | -------------------------------------------------------------------------------- /install/Prophecis/templates/di/learner-rsa-keys.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: rsa-keys 5 | namespace: {{.Values.namespace}} 6 | type: Opaque 7 | data: 8 | RSA_PUB_KEY: {{.Values.rsapubkey|b64enc}} 9 | RSA_PRI_KEY: {{.Values.rsaprikey|b64enc}} 10 | -------------------------------------------------------------------------------- /install/Prophecis/templates/di/mlflow-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: mlflow-server 5 | namespace: {{.Values.namespace}} 6 | labels: 7 | service: mlflow-server 8 | environment: {{.Values.envir}} 9 | spec: 10 | type: NodePort 11 | ports: 12 | - name: mlflow-server 13 | port: 5000 14 | targetPort: 5000 15 | nodePort: {{.Values.mlflow.port}} 16 | selector: 17 | service: mlflow-server 18 | -------------------------------------------------------------------------------- /install/Prophecis/templates/di/restapi-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: ffdl-restapi 5 | namespace: {{.Values.namespace}} 6 | labels: 7 | service: ffdl-restapi 8 | environment: {{.Values.envir}} 9 | spec: 10 | type: NodePort 11 | ports: 12 | - name: ffdl 13 | port: 80 14 | targetPort: 8080 15 | nodePort: {{.Values.restapi.port}} 16 | - name: di-debug 17 | port: 30961 18 | targetPort: 30961 19 | nodePort: 30961 20 | selector: 21 | service: ffdl-restapi 22 | -------------------------------------------------------------------------------- /install/Prophecis/templates/di/storage-service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: di-storage-rpc 5 | namespace: {{.Values.namespace}} 6 | labels: 7 | service: di-storage-rpc 8 | environment: {{.Values.envir}} 9 | spec: 10 | type: NodePort 11 | ports: 12 | - name: grpc 13 | port: 80 14 | targetPort: 8443 15 | selector: 16 | service: di-storage 17 | -------------------------------------------------------------------------------- /install/Prophecis/templates/di/trainer-secrets.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: trainer-secrets 5 | namespace: {{.Values.namespace}} 6 | type: Opaque 7 | data: 8 | {{ if ne .Values.envir "dev" }} 9 | DLAAS_MONGO_ADDRESS: {{.Values.mongo.address|b64enc}} 10 | DLAAS_MONGO_USERNAME: {{.Values.mongo.username|b64enc}} 11 | DLAAS_MONGO_PASSWORD: {{.Values.mongo.password|b64enc}} 12 | {{ end }} 13 | DLAAS_OBJECTSTORE_TYPE: {{.Values.objectstore.type|b64enc}} 14 | # auth_url needs to be the FQDN due to a limitation in the local S3 mock 15 | DLAAS_OBJECTSTORE_AUTH_URL: {{printf "minio-%s:9000" .Values.envir |b64enc}} 16 | DLAAS_OBJECTSTORE_USER_NAME: {{.Values.objectstore.username|b64enc}} 17 | DLAAS_OBJECTSTORE_PASSWORD: {{.Values.objectstore.password|b64enc}} 18 | -------------------------------------------------------------------------------- /install/Prophecis/templates/di/trainer-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: ffdl-trainer 5 | namespace: {{.Values.namespace}} 6 | labels: 7 | service: ffdl-trainer 8 | environment: {{.Values.envir}} 9 | spec: 10 | ports: 11 | - name: grpc 12 | port: 80 13 | targetPort: 8443 14 | selector: 15 | service: ffdl-trainer 16 | -------------------------------------------------------------------------------- /install/Prophecis/templates/di/trainingdata-secrets.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Secret 3 | metadata: 4 | name: trainingdata-secrets 5 | namespace: {{.Values.namespace}} 6 | type: Opaque 7 | data: 8 | DLAAS_ELASTICSEARCH_ADDRESS: {{.Values.elasticsearch.address|b64enc}} 9 | DLAAS_ELASTICSEARCH_USERNAME: {{.Values.elasticsearch.username|b64enc}} 10 | DLAAS_ELASTICSEARCH_PASSWORD: {{.Values.elasticsearch.password|b64enc}} 11 | #DLAAS_ELASTICSEARCH_CERT: {{.Values.elasticsearch.ssl_cert}} #cert has already been base64 encoded 12 | -------------------------------------------------------------------------------- /install/Prophecis/templates/di/trainingdata-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: ffdl-trainingdata 5 | namespace: {{.Values.namespace}} 6 | labels: 7 | environment: {{.Values.envir}} 8 | spec: 9 | type: NodePort 10 | ports: 11 | - name: grpc 12 | port: 80 13 | targetPort: 8443 14 | selector: 15 | service: ffdl-trainingdata 16 | -------------------------------------------------------------------------------- /install/Prophecis/templates/mf/mf-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: mf 5 | namespace: {{.Values.namespace}} 6 | spec: 7 | selector: 8 | app: mf 9 | type: {{.Values.mf.service.type}} 10 | ports: 11 | - protocol: TCP 12 | port: {{.Values.mf.service.port}} 13 | targetPort: {{.Values.mf.service.targetPort}} 14 | name: http 15 | - protocol: TCP 16 | port: {{.Values.mf.service.portHttps}} 17 | targetPort: {{.Values.mf.service.targetPortHttps}} 18 | name: https 19 | - protocol: TCP 20 | port: 41012 21 | targetPort: 41012 22 | nodePort: 41012 23 | name: mf-debug 24 | -------------------------------------------------------------------------------- /install/Prophecis/templates/mllabis/aide-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: aide 5 | namespace: {{.Values.namespace}} 6 | spec: 7 | selector: 8 | app: aide 9 | type: {{.Values.aide.service.type}} 10 | ports: 11 | - protocol: TCP 12 | port: {{.Values.aide.service.port}} 13 | targetPort: {{.Values.aide.service.targetPort}} 14 | nodePort: {{.Values.aide.service.nodePort}} 15 | -------------------------------------------------------------------------------- /install/Prophecis/templates/persistent/etcd.yml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolume 2 | apiVersion: v1 3 | metadata: 4 | name: etcd-pv-{{.Values.namespace}} 5 | labels: 6 | type: local 7 | pv: etcd-pv-{{.Values.namespace}} 8 | spec: 9 | storageClassName: manual 10 | capacity: 11 | storage: 100Gi 12 | accessModes: 13 | - ReadWriteMany 14 | hostPath: 15 | path: {{.Values.persistent.etcd.path}} 16 | --- 17 | 18 | kind: PersistentVolumeClaim 19 | apiVersion: v1 20 | metadata: 21 | name: etcd-pvc-{{.Values.namespace}} 22 | namespace: {{.Values.namespace}} 23 | spec: 24 | storageClassName: manual 25 | accessModes: 26 | - ReadWriteMany 27 | resources: 28 | requests: 29 | storage: 100Gi 30 | selector: 31 | matchLabels: 32 | pv: etcd-pv-{{.Values.namespace}} 33 | -------------------------------------------------------------------------------- /install/Prophecis/templates/persistent/localstack.yml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolume 2 | apiVersion: v1 3 | metadata: 4 | name: localstack-pv-{{.Values.namespace}} 5 | labels: 6 | type: local 7 | pv: localstack-pv-{{.Values.namespace}} 8 | spec: 9 | storageClassName: manual 10 | capacity: 11 | storage: 100Gi 12 | accessModes: 13 | - ReadWriteMany 14 | hostPath: 15 | path: {{.Values.persistent.localstack.path}} 16 | --- 17 | 18 | kind: PersistentVolumeClaim 19 | apiVersion: v1 20 | metadata: 21 | name: localstack-pvc-{{.Values.namespace}} 22 | namespace: {{.Values.namespace}} 23 | spec: 24 | storageClassName: manual 25 | accessModes: 26 | - ReadWriteMany 27 | resources: 28 | requests: 29 | storage: 100Gi 30 | selector: 31 | matchLabels: 32 | pv: localstack-pv-{{.Values.namespace}} 33 | -------------------------------------------------------------------------------- /install/Prophecis/templates/persistent/mongo.yml: -------------------------------------------------------------------------------- 1 | kind: PersistentVolume 2 | apiVersion: v1 3 | metadata: 4 | name: mongo-pv-{{.Values.namespace}} 5 | labels: 6 | type: local 7 | pv: mongo-pv-{{.Values.namespace}} 8 | spec: 9 | storageClassName: manual 10 | capacity: 11 | storage: 100Gi 12 | accessModes: 13 | - ReadWriteMany 14 | hostPath: 15 | path: {{.Values.persistent.mongo.path}} 16 | --- 17 | 18 | kind: PersistentVolumeClaim 19 | apiVersion: v1 20 | metadata: 21 | name: mongo-pvc-{{.Values.namespace}} 22 | namespace: {{.Values.namespace}} 23 | spec: 24 | storageClassName: manual 25 | accessModes: 26 | - ReadWriteMany 27 | resources: 28 | requests: 29 | storage: 100Gi 30 | selector: 31 | matchLabels: 32 | pv: mongo-pv-{{.Values.namespace}} 33 | -------------------------------------------------------------------------------- /install/Prophecis/templates/ui/bdap-ui/bdap-ui-service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: bdap-ui-service 5 | namespace: {{.Values.namespace}} 6 | spec: 7 | selector: 8 | app: bdap-ui 9 | type: {{.Values.ui.service.bdap.type}} 10 | #type: ClusterIP 11 | ports: 12 | - protocol: TCP 13 | port: {{.Values.ui.service.bdap.port}} 14 | targetPort: {{.Values.ui.service.bdap.targetPort}} 15 | nodePort: {{.Values.ui.service.bdap.nodePort}} 16 | #externalTrafficPolicy: Local 17 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | name: fluent-bit 3 | description: Fast and lightweight log processor and forwarder or Linux, OSX and BSD family operating systems. 4 | keywords: 5 | - logging 6 | - fluent-bit 7 | - fluentd 8 | version: 0.15.14 9 | appVersion: 1.7.8 10 | icon: https://fluentbit.io/assets/img/logo1-default.png 11 | home: https://fluentbit.io/ 12 | sources: 13 | - https://github.com/fluent/fluent-bit/ 14 | maintainers: 15 | - name: edsiper 16 | email: eduardo@treasure-data.com 17 | - name: naseemkullah 18 | email: naseem@transit.app 19 | - name: Towmeykaw 20 | email: towmeykaw@gmail.com 21 | annotations: 22 | artifacthub.io/changes: | 23 | - Upgrade fluent-bit image to v1.7.8 24 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/README.md: -------------------------------------------------------------------------------- 1 | # Fluent Bit Helm Chart 2 | 3 | [Fluent Bit](https://fluentbit.io) is a fast and lightweight log processor and forwarder or Linux, OSX and BSD family operating systems. 4 | 5 | ## Installation 6 | 7 | To add the `fluent` helm repo, run: 8 | 9 | ```sh 10 | helm repo add fluent https://fluent.github.io/helm-charts 11 | ``` 12 | 13 | To install a release named `fluent-bit`, run: 14 | 15 | ```sh 16 | helm install fluent-bit fluent/fluent-bit 17 | ``` 18 | 19 | ## Chart Values 20 | 21 | ```sh 22 | helm show values fluent/fluent-bit 23 | ``` 24 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/templates/NOTES.txt: -------------------------------------------------------------------------------- 1 | Get Fluent Bit build information by running these commands: 2 | 3 | export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "fluent-bit.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") 4 | echo "curl http://127.0.0.1:2020 for Fluent Bit build information" 5 | kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 2020:2020 6 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/templates/clusterrole.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.rbac.create -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRole 4 | metadata: 5 | name: {{ include "fluent-bit.fullname" . }} 6 | labels: 7 | {{- include "fluent-bit.labels" . | nindent 4 }} 8 | rules: 9 | - apiGroups: 10 | - "" 11 | resources: 12 | - pods 13 | - namespaces 14 | verbs: 15 | - get 16 | - list 17 | - watch 18 | {{- if .Values.podSecurityPolicy.create }} 19 | - apiGroups: 20 | - policy 21 | resources: 22 | - podsecuritypolicies 23 | resourceNames: 24 | - {{ include "fluent-bit.fullname" . }} 25 | verbs: 26 | - use 27 | {{- end }} 28 | {{- end -}} 29 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/templates/clusterrolebinding.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.rbac.create -}} 2 | apiVersion: rbac.authorization.k8s.io/v1 3 | kind: ClusterRoleBinding 4 | metadata: 5 | name: {{ include "fluent-bit.fullname" . }} 6 | labels: 7 | {{- include "fluent-bit.labels" . | nindent 4 }} 8 | roleRef: 9 | apiGroup: rbac.authorization.k8s.io 10 | kind: ClusterRole 11 | name: {{ include "fluent-bit.fullname" . }} 12 | subjects: 13 | - kind: ServiceAccount 14 | name: {{ include "fluent-bit.serviceAccountName" . }} 15 | namespace: {{ .Release.Namespace }} 16 | {{- end -}} 17 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/templates/configmap-dashboards.yaml: -------------------------------------------------------------------------------- 1 | 2 | {{- if .Values.dashboards.enabled -}} 3 | {{- range $path, $_ := .Files.Glob "dashboards/*.json" }} 4 | apiVersion: v1 5 | kind: ConfigMap 6 | metadata: 7 | name: {{ include "fluent-bit.fullname" $ }}-dashboard-{{ trimSuffix ".json" (base $path) }} 8 | {{- with $.Values.dashboards.annotations }} 9 | annotations: 10 | {{- toYaml . | nindent 4 -}} 11 | {{- end }} 12 | labels: 13 | {{- include "fluent-bit.labels" $ | nindent 4 }} 14 | {{ $.Values.dashboards.labelKey }}: "1" 15 | namespace: {{ .Values.namespace }} 16 | data: 17 | {{ base $path }}: | 18 | {{- tpl ($.Files.Get $path) $ | nindent 4 }} 19 | --- 20 | {{- end }} 21 | {{- end -}} 22 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/templates/configmap-luascripts.yaml: -------------------------------------------------------------------------------- 1 | {{- if gt (len .Values.luaScripts) 0 -}} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ include "fluent-bit.fullname" . }}-luascripts 6 | namespace: {{ .Values.namespace }} 7 | labels: 8 | {{- include "fluent-bit.labels" . | nindent 4 }} 9 | data: 10 | {{ range $key, $value := .Values.luaScripts }} 11 | {{ $key }}: {{ $value | quote }} 12 | {{ end }} 13 | {{- end -}} 14 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | {{- if (empty .Values.existingConfigMap) -}} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ include "fluent-bit.fullname" . }} 6 | namespace: {{ .Values.namespace }} 7 | labels: 8 | {{- include "fluent-bit.labels" . | nindent 4 }} 9 | data: 10 | custom_parsers.conf: | 11 | {{- (tpl .Values.config.customParsers $) | nindent 4 }} 12 | fluent-bit.conf: | 13 | {{- (tpl .Values.config.service $) | nindent 4 }} 14 | {{- (tpl .Values.config.inputs $) | nindent 4 }} 15 | {{- (tpl .Values.config.filters $) | nindent 4 }} 16 | {{- (tpl .Values.config.outputs $) | nindent 4 }} 17 | {{- end -}} 18 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/templates/networkpolicy.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.networkPolicy.enabled }} 2 | apiVersion: "networking.k8s.io/v1" 3 | kind: "NetworkPolicy" 4 | metadata: 5 | name: {{ include "fluent-bit.fullname" . | quote }} 6 | labels: 7 | {{- include "fluent-bit.labels" . | nindent 4 }} 8 | spec: 9 | policyTypes: 10 | - "Ingress" 11 | podSelector: 12 | matchLabels: 13 | {{- include "fluent-bit.selectorLabels" . | nindent 6 }} 14 | ingress: 15 | {{- with .Values.networkPolicy.ingress }} 16 | - from: 17 | {{- with .from }}{{- . | toYaml | nindent 8 }}{{- else }} []{{- end }} 18 | ports: 19 | - protocol: "TCP" 20 | port: {{ $.Values.service.port }} 21 | {{- end }} 22 | {{- end }} 23 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/templates/prometheusrule.yaml: -------------------------------------------------------------------------------- 1 | {{- if and ( .Capabilities.APIVersions.Has "monitoring.coreos.com/v1" ) .Values.prometheusRule.enabled }} 2 | apiVersion: monitoring.coreos.com/v1 3 | kind: PrometheusRule 4 | metadata: 5 | name: {{ include "fluent-bit.fullname" . }} 6 | {{- with .Values.prometheusRule.namespace }} 7 | namespace: {{ . }} 8 | {{- end }} 9 | labels: 10 | {{- include "fluent-bit.labels" . | nindent 4 }} 11 | {{- if .Values.prometheusRule.additionalLabels }} 12 | {{- toYaml .Values.prometheusRule.additionalLabels | nindent 4 }} 13 | {{- end }} 14 | spec: 15 | {{- if .Values.prometheusRule.rules }} 16 | groups: 17 | - name: {{ template "fluent-bit.name" . }} 18 | rules: {{- toYaml .Values.prometheusRule.rules | nindent 4 }} 19 | {{- end }} 20 | {{- end }} 21 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "fluent-bit.serviceAccountName" . }} 6 | namespace: {{ .Values.namespace }} 7 | labels: 8 | {{- include "fluent-bit.labels" . | nindent 4 }} 9 | {{- with .Values.serviceAccount.annotations }} 10 | annotations: 11 | {{- toYaml . | nindent 4 }} 12 | {{- end }} 13 | {{- end -}} 14 | -------------------------------------------------------------------------------- /install/log/pod-log-collector/fluent-bit-prophecis/templates/tests/test-connection.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Pod 3 | metadata: 4 | name: "{{ include "fluent-bit.fullname" . }}-test-connection" 5 | labels: 6 | {{- include "fluent-bit.labels" . | nindent 4 }} 7 | annotations: 8 | "helm.sh/hook": test-success 9 | spec: 10 | containers: 11 | - name: wget 12 | image: "{{ .Values.testFramework.image.repository }}:{{ .Values.testFramework.image.tag }}" 13 | imagePullPolicy: {{ .Values.testFramework.image.pullPolicy }} 14 | command: ['wget'] 15 | args: ['{{ include "fluent-bit.fullname" . }}:{{ .Values.service.port }}'] 16 | {{- with .Values.imagePullSecrets }} 17 | imagePullSecrets: 18 | {{- toYaml . | nindent 4 }} 19 | {{- end }} 20 | restartPolicy: Never 21 | -------------------------------------------------------------------------------- /install/notebook-controller/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | appVersion: "1.0" 3 | description: Helm chart for MLSS 4 | name: MLSS 5 | version: 0.1.0 6 | -------------------------------------------------------------------------------- /install/notebook-controller/values.yaml: -------------------------------------------------------------------------------- 1 | namespace: prophecis 2 | platformNodeSelectors: 3 | mlss-node-role: platform 4 | services: 5 | expose_node_port: true 6 | mllabis: 7 | image: 8 | repository: wedatasphere/prophecis 9 | tag: latest 10 | pullPolicy: Always 11 | service: 12 | type: NodePort 13 | port: 8080 14 | targetPort: 8080 15 | nodePort: 30791 16 | controller: 17 | notebook: 18 | repository: wedatasphere/prophecis 19 | tag: notebook-controller-v0.1.0 20 | pullPolicy: IfNotPresent 21 | meta: 22 | repository: wedatasphere/prophecis 23 | tag: metacontroller-v0.3.1 24 | pullPolicy: IfNotPresent -------------------------------------------------------------------------------- /linkismagic/README.md: -------------------------------------------------------------------------------- 1 | # LinkisMagic 2 | 3 | 4 | 5 | LinkisMagic is a set of defined Magic functions, which are used to calculate the interaction with the computing middleware Linkis, and Linkis submits the calculation engine. The Magic function sends the Code to Linkis via Http request, and Linkis returns the result and displays it in Jupyter Lab. 6 | 7 | -------------------------------------------------------------------------------- /linkismagic/linkismagic/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/linkismagic/linkismagic/linkismagic/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/controllerwideget/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/controllerwideget/magicscontrollerwidget.py: -------------------------------------------------------------------------------- 1 | """ 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | """ 16 | class MagicsControllerWidget: 17 | def __init__(self): 18 | pass 19 | -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/kernels/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/linkisclientlib/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/linkisclientlib/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/linkismagic/linkismagic/linkismagic/linkisclientlib/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/linkisclientlib/__pycache__/linkisclient.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/linkismagic/linkismagic/linkismagic/linkisclientlib/__pycache__/linkisclient.cpython-37.pyc -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/linkisclientlib/__pycache__/linkishttpclient.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/linkismagic/linkismagic/linkismagic/linkisclientlib/__pycache__/linkishttpclient.cpython-37.pyc -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/linkisclientlib/exceptions.py: -------------------------------------------------------------------------------- 1 | """ 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/linkismagic.json: -------------------------------------------------------------------------------- 1 | { 2 | "base_url":"http://127.0.0.1:9001", 3 | "session_configs": { 4 | "wds.linkis.yarnqueue":"root.default", 5 | "spark.driver.memory":"4g", 6 | "spark.executor.instances":"1", 7 | "spark.executor.memory":"4g" 8 | } 9 | } -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/magics/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | """ 16 | -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/magics/__pycache__/__init__.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/linkismagic/linkismagic/linkismagic/magics/__pycache__/__init__.cpython-37.pyc -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/magics/__pycache__/linkismagic.cpython-37.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/linkismagic/linkismagic/linkismagic/magics/__pycache__/linkismagic.cpython-37.pyc -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/utils/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/linkismagic/linkismagic/linkismagic/utils/__init__.py -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/utils/configuration.py: -------------------------------------------------------------------------------- 1 | from linkismagic.utils.constants import * 2 | from hdijupyterutils.utils import join_paths 3 | from hdijupyterutils.configuration import override as _override 4 | from hdijupyterutils.configuration import override_all as _override_all 5 | from hdijupyterutils.configuration import with_override 6 | 7 | d = {} 8 | path = join_paths(HOME_PATH, CONFIG_FILE) 9 | 10 | _with_override = with_override(d, path) 11 | 12 | # @_with_override 13 | # def custom_headers(): 14 | # return { 15 | # "TokenUser" = , 16 | # "TokenCode" = , 17 | # "Content-Type": "application/json" 18 | # } -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/utils/constants.py: -------------------------------------------------------------------------------- 1 | import os 2 | 3 | HOME_PATH = os.environ.get("LINKISMAGIC_CONF_DIR", "~/.linkismagic") 4 | CONFIG_FILE = os.environ.get("LINKISMAGIC_CONF_FILE", "config.json") 5 | 6 | LINKIS_REST_METHOD_EXECUTE = "/api/rest_j/v1/entrance/execute" 7 | LINKIS_REST_METHOD_STATUS = "/api/rest_j/v1/entrance/${execID}/status" 8 | LINKIS_REST_METHOD_LOG = "/api/rest_j/v1/entrance/${execID}/log" 9 | LINKIS_REST_METHOD_PROGRESS = "/api/rest_j/v1/entrance/${execID}/progress" 10 | LINKIS_REST_METHOD_KILL = "/api/rest_j/v1/entrance/{execID}/kill" 11 | 12 | MAGICS_LOGGER_NAME = "linkisLogger" 13 | 14 | LINKIS_JOB_ID = "execID" 15 | LINKIS_JOB_TYPE = "runType" 16 | LINKIS_ENGINE_TYPE = "executeApplicationName" 17 | -------------------------------------------------------------------------------- /linkismagic/linkismagic/linkismagic/utils/linkislogger.py: -------------------------------------------------------------------------------- 1 | from hdijupyterutils.log import Log 2 | import linkismagic.utils.configuration as conf 3 | from linkismagic.utils.constants import MAGICS_LOGGER_NAME 4 | 5 | 6 | class LinkisLog(Log): 7 | def __init__(self, class_name): 8 | super(LinkisLog, self).__init__(MAGICS_LOGGER_NAME, conf.logging_config(), class_name) -------------------------------------------------------------------------------- /mf/Makefile: -------------------------------------------------------------------------------- 1 | registry = wedatasphere 2 | repo = prophecis 3 | version = v0.3.0 4 | tag = mf-server-$(version) 5 | 6 | build-bin: 7 | CGO_ENABLED=0 GOSUMDB=off GOOS=linux GOARCH=amd64 /data/Install/goInstall/go/bin/go build -v -o build/mf-server cmd/mf-server/main.go 8 | build-image: build-bin 9 | docker build -t $(registry)/$(repo):$(tag) -f build/Dockerfile build 10 | push-image: 11 | docker push $(registry)/$(repo):$(tag) 12 | build: build-image push-image 13 | test: 14 | echo $(registry)/$(repo):$(tag) -------------------------------------------------------------------------------- /mf/build/Dockerfile: -------------------------------------------------------------------------------- 1 | #FROM ubuntu:latest 2 | #FROM golang:1.13.15 3 | FROM golang-dlv:latest 4 | WORKDIR / 5 | COPY mf-server . 6 | #COPY localhost/MLSS/MLSS-MF/-client-app-1.4.0-fat.jar . 7 | RUN echo "Asia/shanghai" > /etc/timezone 8 | #ENV GOPROXY http://localhost 9 | #ENV GO111MODULE=on 10 | #GOPROXY="http://127.0.0.1" 11 | #RUN go get -u github.com/go-delve/delve/cmd/dlv 12 | EXPOSE 40000 13 | #ENTRYPOINT ["/mf-server"] 14 | ENTRYPOINT [ "/go/bin/dlv" , "--listen=:40000" , "--headless=true" , "--api-version=2" , "exec" , "/mf-server" ] -------------------------------------------------------------------------------- /mf/build/fps-client-app-1.4.0-fat.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/mf/build/fps-client-app-1.4.0-fat.jar -------------------------------------------------------------------------------- /mf/config/config.yml: -------------------------------------------------------------------------------- 1 | DBConfig: 2 | server: 127.0.0.1 3 | database: database 4 | username: root 5 | password: password 6 | port: 30888 7 | ServerConfig: 8 | namespace: mlss-dev 9 | port: 123 -------------------------------------------------------------------------------- /mf/logs/access_log.202203290000: -------------------------------------------------------------------------------- 1 | {"level":"info","msg":"test:%v","time":"2022-03-29T14:51:05+08:00"} 2 | {"level":"info","msg":"Loading MF App Config...","time":"2022-03-29T14:51:05+08:00"} 3 | {"level":"error","msg":"YamlFile Get Error: %vopen /etc/mlss/config.yml: The system cannot find the path specified.","time":"2022-03-29T14:51:05+08:00"} 4 | {"level":"info","msg":"config:{{ false} { 0} { } {0 0 0 0} { } { 0 0}}","time":"2022-03-29T14:51:05+08:00"} 5 | -------------------------------------------------------------------------------- /mf/pkg/common/gormmodels/base_model.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package gormmodels 17 | 18 | type BaseModel struct { 19 | ID int64 `gorm:"column:id; PRIMARY_KEY" json:"id"` 20 | EnableFlag bool `json:"enable_flag"` 21 | } 22 | -------------------------------------------------------------------------------- /mf/pkg/common/gormmodels/dashborad.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package gormmodels 17 | 18 | type Dashborad struct { 19 | RunningCount int64 `json:"running_count"` 20 | ExceptionCount int64 `json:"exception_count"` 21 | CardCount int64 `json:"card_count"` 22 | } 23 | -------------------------------------------------------------------------------- /mf/pkg/common/gormmodels/role.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | package gormmodels 17 | 18 | type Role struct { 19 | BaseModel 20 | Name string `json:"name"` 21 | Remarks string `json:"remarks"` 22 | } 23 | -------------------------------------------------------------------------------- /mf/pkg/common/page_utils.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package common 18 | 19 | func GetOffSet(page int64, size int64) int64 { 20 | if page == 0 || size == 0 { 21 | return 0 22 | } 23 | return (page - 1) * size 24 | } 25 | -------------------------------------------------------------------------------- /mf/pkg/restapi/doc.go: -------------------------------------------------------------------------------- 1 | // Code generated by go-swagger; DO NOT EDIT. 2 | 3 | /* 4 | Package restapi mf-server 5 | Model Factory Service 6 | 7 | 8 | Schemes: 9 | http 10 | Host: gateway.mlss.mf 11 | BasePath: / 12 | Version: 1.0.0 13 | 14 | Consumes: 15 | - application/json 16 | - application/octet-stream 17 | - multipart/form-data 18 | - text/plain; charset=utf-8 19 | 20 | Produces: 21 | - application/json 22 | - application/octet-stream 23 | - text/plain; charset=utf-8 24 | 25 | swagger:meta 26 | */ 27 | package restapi 28 | -------------------------------------------------------------------------------- /mf/pkg/restapi/rest_impl_test.go: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2020 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | package restapi 18 | -------------------------------------------------------------------------------- /mf/pkg/test/covprofile: -------------------------------------------------------------------------------- 1 | mode: set 2 | -------------------------------------------------------------------------------- /mllabis/README.md: -------------------------------------------------------------------------------- 1 | # MLLabis 2 | 3 | 4 | 5 | MLLabis is the personal development environment subsystem of the Prophecis system. It allows users to create Notebooks to edit codes and develop models online. It also supports the integrated development environment of Hadoop and Spark to facilitate user development. 6 | 7 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Binaries for programs and plugins 3 | *.exe 4 | *.exe~ 5 | *.dll 6 | *.so 7 | *.dylib 8 | bin 9 | 10 | # Test binary, build with `go test -c` 11 | *.test 12 | 13 | # Output of the go coverage tool, specifically when used with LiteIDE 14 | *.out 15 | 16 | # Kubernetes Generated files - skip generated files, except for vendored files 17 | 18 | !vendor/**/zz_generated.* 19 | 20 | # editor and IDE paraphernalia 21 | .idea 22 | *.swp 23 | *.swo 24 | *~ 25 | 26 | gcb_build/** 27 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/Dockerfile: -------------------------------------------------------------------------------- 1 | # Build the manager binary 2 | # Copy the controller-manager into a thin image 3 | FROM ubuntu:latest 4 | WORKDIR / 5 | COPY ./manager . 6 | ENTRYPOINT ["/manager"] -------------------------------------------------------------------------------- /mllabis/notebook-controller/Dockerfile_bak: -------------------------------------------------------------------------------- 1 | # Build the manager binary 2 | ARG GOLANG_VERSION=1.11.2 3 | FROM golang:${GOLANG_VERSION} as builder 4 | 5 | # Copy in the go src 6 | WORKDIR /go/src/github.com/kubeflow/kubeflow/components/notebook-controller 7 | COPY pkg/ pkg/ 8 | COPY cmd/ cmd/ 9 | COPY go.mod . 10 | 11 | ENV GO111MODULE=on 12 | 13 | # Build 14 | RUN go build -gcflags 'all=-N -l' -o manager cmd/manager/main.go 15 | 16 | # Copy the controller-manager into a thin image 17 | FROM ubuntu:latest 18 | WORKDIR / 19 | COPY --from=builder /go/src/github.com/kubeflow/kubeflow/components/notebook-controller/manager . 20 | ENTRYPOINT ["/manager"] 21 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/OWNERS: -------------------------------------------------------------------------------- 1 | approvers: 2 | - lluunn 3 | reviewers: 4 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/PROJECT: -------------------------------------------------------------------------------- 1 | version: "1" 2 | domain: kubeflow.org 3 | repo: github.com/kubeflow/kubeflow/components/notebook-controller 4 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/config/default/manager_auth_proxy_patch.yaml: -------------------------------------------------------------------------------- 1 | # This patch inject a sidecar container which is a HTTP proxy for the controller manager, 2 | # it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews. 3 | apiVersion: apps/v1 4 | kind: StatefulSet 5 | metadata: 6 | name: controller-manager 7 | namespace: system 8 | spec: 9 | template: 10 | spec: 11 | containers: 12 | - name: kube-rbac-proxy 13 | image: quay.io/brancz/kube-rbac-proxy:v0.4.0 14 | args: 15 | - "--secure-listen-address=0.0.0.0:8443" 16 | - "--upstream=http://127.0.0.1:8080/" 17 | - "--logtostderr=true" 18 | - "--v=10" 19 | ports: 20 | - containerPort: 8443 21 | name: https 22 | - name: manager 23 | args: 24 | - "--metrics-addr=127.0.0.1:8080" 25 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/config/default/manager_image_patch.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: StatefulSet 3 | metadata: 4 | name: controller-manager 5 | namespace: system 6 | spec: 7 | template: 8 | spec: 9 | containers: 10 | # Change the value of image field below to your controller image URL 11 | - image: gcr.io/kubeflow-images-public/notebook-controller 12 | name: manager 13 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/config/default/manager_prometheus_metrics_patch.yaml: -------------------------------------------------------------------------------- 1 | # This patch enables Prometheus scraping for the manager pod. 2 | apiVersion: apps/v1 3 | kind: StatefulSet 4 | metadata: 5 | name: controller-manager 6 | namespace: system 7 | spec: 8 | template: 9 | metadata: 10 | annotations: 11 | prometheus.io/scrape: 'true' 12 | spec: 13 | containers: 14 | # Expose the prometheus metrics on default port 15 | - name: manager 16 | ports: 17 | - containerPort: 8080 18 | name: metrics 19 | protocol: TCP 20 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/config/rbac/auth_proxy_role.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: rbac.authorization.k8s.io/v1 2 | kind: ClusterRole 3 | metadata: 4 | name: proxy-role 5 | rules: 6 | - apiGroups: ["authentication.k8s.io"] 7 | resources: 8 | - tokenreviews 9 | verbs: ["create"] 10 | - apiGroups: ["authorization.k8s.io"] 11 | resources: 12 | - subjectaccessreviews 13 | verbs: ["create"] 14 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/config/rbac/auth_proxy_role_binding.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: rbac.authorization.k8s.io/v1 2 | kind: ClusterRoleBinding 3 | metadata: 4 | name: proxy-rolebinding 5 | roleRef: 6 | apiGroup: rbac.authorization.k8s.io 7 | kind: ClusterRole 8 | name: proxy-role 9 | subjects: 10 | - kind: ServiceAccount 11 | name: default 12 | namespace: system 13 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/config/rbac/auth_proxy_service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | annotations: 5 | prometheus.io/port: "8443" 6 | prometheus.io/scheme: https 7 | prometheus.io/scrape: "true" 8 | labels: 9 | control-plane: controller-manager 10 | controller-tools.k8s.io: "1.0" 11 | name: controller-manager-metrics-service 12 | namespace: system 13 | spec: 14 | ports: 15 | - name: https 16 | port: 8443 17 | targetPort: https 18 | selector: 19 | control-plane: controller-manager 20 | controller-tools.k8s.io: "1.0" 21 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/config/rbac/rbac_role_binding.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: rbac.authorization.k8s.io/v1 2 | kind: ClusterRoleBinding 3 | metadata: 4 | creationTimestamp: null 5 | name: manager-rolebinding 6 | roleRef: 7 | apiGroup: rbac.authorization.k8s.io 8 | kind: ClusterRole 9 | name: manager-role 10 | subjects: 11 | - kind: ServiceAccount 12 | name: default 13 | namespace: system 14 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/config/samples/v1alpha1_notebook.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: kubeflow.org/v1alpha1 2 | kind: Notebook 3 | metadata: 4 | labels: 5 | controller-tools.k8s.io: "1.0" 6 | name: notebook-sample 7 | spec: 8 | # Add fields here 9 | template: 10 | spec: 11 | containers: 12 | - image: "gcr.io/kubeflow-images-public/tensorflow-1.10.1-notebook-cpu:v0.3.0" 13 | name: "notebook" 14 | resources: 15 | requests: 16 | cpu: "500m" 17 | memory: "1Gi" 18 | workingDir: "/home/jovyan" 19 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/gcb_build.jsonnet: -------------------------------------------------------------------------------- 1 | 2 | 3 | local util = import "../../tools/gcb/template.libsonnet"; 4 | 5 | local useImageCache = util.toBool(std.extVar("useImageCache")); 6 | local image = std.extVar("imageBase") + ":" + std.extVar("tag"); 7 | local imageLatest = std.extVar("imageBase") + ":latest"; 8 | local gitVersion = std.extVar("gitVersion"); 9 | 10 | local workerSteps = util.subGraphTemplate { 11 | name: "notebook-controller-image", 12 | dockerFile: "./Dockerfile", 13 | contextDir: ".", 14 | useImageCache: useImageCache, 15 | image: image, 16 | imageLatest: imageLatest, 17 | gitVersion: gitVersion, 18 | }; 19 | 20 | { 21 | steps: workerSteps.steps, 22 | images: workerSteps.images, 23 | } 24 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/hack/boilerplate.go.txt: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2019 The Kubeflow Authors. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/pkg/apis/addtoscheme_gg_v1alpha1.go: -------------------------------------------------------------------------------- 1 | package apis 2 | 3 | import ( 4 | "webank/AIDE/notebook-controller/pkg/apis/notebook/v1alpha1" 5 | ) 6 | 7 | func init() { 8 | // Register the types with the Scheme so the components can map objects to GroupVersionKinds and back 9 | AddToSchemes = append(AddToSchemes, v1alpha1.SchemeBuilder.AddToScheme) 10 | } 11 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/pkg/apis/apis.go: -------------------------------------------------------------------------------- 1 | // Generate deepcopy for apis 2 | //go:generate go run ../../vendor/k8s.io/code-generator/cmd/deepcopy-gen/main.go -O zz_generated.deepcopy -i ./... -h ../../hack/boilerplate.go.txt 3 | 4 | // Package apis contains Kubernetes API groups. 5 | package apis 6 | 7 | import ( 8 | "k8s.io/apimachinery/pkg/runtime" 9 | ) 10 | 11 | // AddToSchemes may be used to add all resources defined in the project to a Scheme 12 | var AddToSchemes runtime.SchemeBuilder 13 | 14 | // AddToScheme adds all Resources to the Scheme 15 | func AddToScheme(s *runtime.Scheme) error { 16 | return AddToSchemes.AddToScheme(s) 17 | } 18 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/pkg/apis/notebook/group.go: -------------------------------------------------------------------------------- 1 | // Package notebook contains notebook API versions 2 | package notebook 3 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/pkg/apis/notebook/v1alpha1/doc.go: -------------------------------------------------------------------------------- 1 | // Package v1alpha1 contains API Schema definitions for the v1alpha1 API group 2 | // +k8s:openapi-gen=true 3 | // +k8s:deepcopy-gen=package,register 4 | // +k8s:conversion-gen=github.com/kubeflow/kubeflow/components/notebook-controller/pkg/apis/notebook 5 | // +k8s:defaulter-gen=TypeMeta 6 | // +groupName=kubeflow.org 7 | package v1alpha1 8 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/pkg/controller/add_notebook.go: -------------------------------------------------------------------------------- 1 | package controller 2 | 3 | import ( 4 | "webank/AIDE/notebook-controller/pkg/controller/notebook" 5 | ) 6 | 7 | func init() { 8 | // AddToManagerFuncs is a list of functions to create controllers and add them to a manager. 9 | AddToManagerFuncs = append(AddToManagerFuncs, notebook.Add) 10 | } 11 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/pkg/controller/controller.go: -------------------------------------------------------------------------------- 1 | package controller 2 | 3 | import ( 4 | "sigs.k8s.io/controller-runtime/pkg/manager" 5 | ) 6 | 7 | // AddToManagerFuncs is a list of functions to add all Controllers to the Manager 8 | var AddToManagerFuncs []func(manager.Manager) error 9 | 10 | // AddToManager adds all Controllers to the Manager 11 | func AddToManager(m manager.Manager) error { 12 | for _, f := range AddToManagerFuncs { 13 | if err := f(m); err != nil { 14 | return err 15 | } 16 | } 17 | return nil 18 | } 19 | -------------------------------------------------------------------------------- /mllabis/notebook-controller/pkg/webhook/webhook.go: -------------------------------------------------------------------------------- 1 | package webhook 2 | 3 | import ( 4 | "sigs.k8s.io/controller-runtime/pkg/manager" 5 | ) 6 | 7 | // AddToManagerFuncs is a list of functions to add all Controllers to the Manager 8 | var AddToManagerFuncs []func(manager.Manager) error 9 | 10 | // AddToManager adds all Controllers to the Manager 11 | // +kubebuilder:rbac:groups=admissionregistration.k8s.io,resources=mutatingwebhookconfigurations;validatingwebhookconfigurations,verbs=get;list;watch;create;update;patch;delete 12 | // +kubebuilder:rbac:groups="",resources=secrets,verbs=get;list;watch;create;update;patch;delete 13 | // +kubebuilder:rbac:groups="",resources=services,verbs=get;list;watch;create;update;patch;delete 14 | func AddToManager(m manager.Manager) error { 15 | for _, f := range AddToManagerFuncs { 16 | if err := f(m); err != nil { 17 | return err 18 | } 19 | } 20 | return nil 21 | } 22 | -------------------------------------------------------------------------------- /mllabis/notebook-server/build/Dockerfile: -------------------------------------------------------------------------------- 1 | #FROM ubuntu:latest 2 | FROM golang-dlv:latest 3 | WORKDIR / 4 | RUN echo "Asia/shanghai" > /etc/timezone 5 | COPY notebook-server . 6 | ENTRYPOINT ["/notebook-server"] -------------------------------------------------------------------------------- /mllabis/notebook-server/pkg/models/result.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | import "encoding/json" 4 | 5 | type Result struct { 6 | Code string `json:"code"` 7 | Message string `json:"message"` 8 | Result json.RawMessage `json:"result"` 9 | } 10 | 11 | func GetResultData(b []byte, t interface{}) error { 12 | var res Result 13 | err := json.Unmarshal(b, &res) 14 | if err != nil { 15 | return err 16 | } 17 | messages := res.Result 18 | err = json.Unmarshal([]byte(messages), &t) 19 | if err != nil { 20 | return err 21 | } 22 | return nil 23 | } 24 | 25 | func GetResultCode(b []byte) (code string, r error) { 26 | var res Result 27 | err := json.Unmarshal(b, &res) 28 | if err != nil { 29 | return "", err 30 | } 31 | return code, nil 32 | } 33 | -------------------------------------------------------------------------------- /mllabis/notebook-server/pkg/models/user_notebook_vo.go: -------------------------------------------------------------------------------- 1 | package models 2 | 3 | type UserNotebookVO struct { 4 | Role string `json:"role,omitempty"` 5 | NamespaceList []string `json:"namespaces,omitempty"` 6 | } 7 | 8 | type PageListVO struct { 9 | List interface{} `json:"list"` 10 | Pages int `json:"pages"` 11 | Total int `json:"total"` 12 | } 13 | -------------------------------------------------------------------------------- /mllabis/notebook-server/pkg/restapi/doc.go: -------------------------------------------------------------------------------- 1 | // Code generated by go-swagger; DO NOT EDIT. 2 | 3 | /* 4 | Package restapi jupyter-server 5 | Jupyter Notebook Service 6 | 7 | 8 | Schemes: 9 | https 10 | Host: gateway.mlss.aide 11 | BasePath: / 12 | Version: 1.0.0 13 | 14 | Consumes: 15 | - application/json 16 | 17 | Produces: 18 | - application/json 19 | 20 | swagger:meta 21 | */ 22 | package restapi 23 | -------------------------------------------------------------------------------- /mllabis/notebook-server/pkg/restapi/health_impl.go: -------------------------------------------------------------------------------- 1 | package restapi 2 | 3 | import "net/http" 4 | 5 | // GetHealth returns the health of the service 6 | func GetHealth(w http.ResponseWriter, r *http.Request) { 7 | w.WriteHeader(http.StatusOK) 8 | w.Write([]byte("OK")) 9 | } 10 | -------------------------------------------------------------------------------- /sh/HOST_ENV.sh: -------------------------------------------------------------------------------- 1 | echo "127.0.0.1 hadoop01" >>/etc/hosts 2 | echo "192.168.0.1 hadoop02" >>/etc/hosts 3 | echo "192.168.0.2 hadoop03" >>/etc/hosts -------------------------------------------------------------------------------- /sh/Notebook_ENV.sh: -------------------------------------------------------------------------------- 1 | export JAVA_HOME= 2 | source env.sh #HDFS ENV Config 3 | 4 | # Tensorflow HDFS ENV 5 | source ${HADOOP_HOME}/libexec/hadoop-config.sh 6 | export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${JAVA_HOME}/jre/lib/amd64/server 7 | export CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath --glob) 8 | 9 | 10 | # Pyspark ENV 11 | export PYSPARK_PYTHON=${ANDCONDA_HOME}/bin/python 12 | export PYSPARK_DRIVER_PYTHON=/opt/conda/bin/python -------------------------------------------------------------------------------- /ui/.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /ui/.env.production: -------------------------------------------------------------------------------- 1 | VUE_APP_BASE_SURL='' -------------------------------------------------------------------------------- /ui/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | parserOptions: { 4 | parser: 'babel-eslint' 5 | }, 6 | env: { 7 | browser: true 8 | }, 9 | 'extends': [ 10 | 'plugin:vue/essential', 11 | '@vue/standard' 12 | ], 13 | rules: { 14 | 'no-console': process.env.NODE_ENV === 'production' ? 'off' : 'off', 15 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'off' : 'off' 16 | } 17 | } -------------------------------------------------------------------------------- /ui/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules/ 3 | /dist 4 | package-lock.json 5 | .env.development 6 | # local env files 7 | .env.local 8 | .env.*.local 9 | 10 | # Log files 11 | npm-debug.log* 12 | yarn-debug.log* 13 | yarn-error.log* 14 | 15 | # Editor directories and files 16 | .idea 17 | .vscode 18 | *.suo 19 | *.ntvs* 20 | *.njsproj 21 | *.sln 22 | *.sw? 23 | -------------------------------------------------------------------------------- /ui/README.md: -------------------------------------------------------------------------------- 1 | # new-project 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Lints and fixes files 19 | ``` 20 | npm run lint 21 | ``` 22 | 23 | ### Customize configuration 24 | See [Configuration Reference](https://cli.vuejs.org/config/). 25 | -------------------------------------------------------------------------------- /ui/babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app', 4 | ['@babel/preset-env', // 添加 babel-preset-env 配置 5 | { 6 | 'modules': false 7 | } 8 | ] 9 | ], 10 | plugins: [ // element官方教程 11 | [ 12 | 'component', 13 | { 14 | 'libraryName': 'element-ui', 15 | 'styleLibraryName': 'theme-chalk' 16 | } 17 | ] 18 | ] 19 | } 20 | -------------------------------------------------------------------------------- /ui/output/Dockerfile: -------------------------------------------------------------------------------- 1 | #FROM dev.sf.dockerhub.stgwebank/webank/mlss-di:nginx-1.10-auth-request 2 | FROM uat.sf.dockerhub.stgwebank/webank/mlss-di:nginx-1.19.6 3 | ADD output/css /var/www/html/css/ 4 | ADD output/fonts /var/www/html/fonts/ 5 | ADD output/img /var/www/html/img/ 6 | ADD output/index.html /var/www/html/ 7 | ADD output/js /var/www/html/js/ 8 | ADD output/static /var/www/html/static/ 9 | ADD output/_book /var/www/html/_book 10 | -------------------------------------------------------------------------------- /ui/public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 13 | Prophecis 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /ui/public/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/public/static/favicon.ico -------------------------------------------------------------------------------- /ui/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 20 | -------------------------------------------------------------------------------- /ui/src/assets/flow-iconfont/font-dws-icon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/flow-iconfont/font-dws-icon.eot -------------------------------------------------------------------------------- /ui/src/assets/flow-iconfont/font-dws-icon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/flow-iconfont/font-dws-icon.ttf -------------------------------------------------------------------------------- /ui/src/assets/flow-iconfont/font-dws-icon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/flow-iconfont/font-dws-icon.woff -------------------------------------------------------------------------------- /ui/src/assets/icon/iconfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/icon/iconfont.eot -------------------------------------------------------------------------------- /ui/src/assets/icon/iconfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/icon/iconfont.ttf -------------------------------------------------------------------------------- /ui/src/assets/icon/iconfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/icon/iconfont.woff -------------------------------------------------------------------------------- /ui/src/assets/icon/iconfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/icon/iconfont.woff2 -------------------------------------------------------------------------------- /ui/src/assets/images/card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/images/card.png -------------------------------------------------------------------------------- /ui/src/assets/images/container.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/images/container.png -------------------------------------------------------------------------------- /ui/src/assets/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/images/logo.png -------------------------------------------------------------------------------- /ui/src/assets/images/logo1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/images/logo1.png -------------------------------------------------------------------------------- /ui/src/assets/images/task.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/WeBankFinTech/Prophecis/2a81f3da979977bb36ab01513baed1319f607039/ui/src/assets/images/task.png -------------------------------------------------------------------------------- /ui/src/components/StatusTag.vue: -------------------------------------------------------------------------------- 1 | 4 | 32 | 37 | -------------------------------------------------------------------------------- /ui/src/components/vue-process/actionView.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 21 | -------------------------------------------------------------------------------- /ui/src/components/vue-process/icon.vue: -------------------------------------------------------------------------------- 1 | 8 | 28 | 37 | -------------------------------------------------------------------------------- /ui/src/components/vue-process/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2019 WeBank 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | * 16 | */ 17 | 18 | import Designer from './designer.vue' 19 | export default Designer 20 | -------------------------------------------------------------------------------- /ui/src/services/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import service from './api' 3 | var api = { 4 | install () { 5 | Vue.prototype.FesApi = service 6 | Vue.prototype.FesEnv = {} 7 | } 8 | } 9 | export default api 10 | -------------------------------------------------------------------------------- /ui/src/views/404.vue: -------------------------------------------------------------------------------- 1 | 7 | 15 | -------------------------------------------------------------------------------- /ui/src/views/NoAccess.vue: -------------------------------------------------------------------------------- 1 | 4 | 26 | -------------------------------------------------------------------------------- /ui/src/views/experiment/addRecord.vue: -------------------------------------------------------------------------------- 1 | 8 | 21 | 32 | -------------------------------------------------------------------------------- /ui/src/views/flow/process/images/dashboard.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ui/src/views/flow/process/images/flow.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ui/src/views/flow/process/images/menu/zhantie.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ui/src/views/flow/process/images/newIcon/qualitis.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /ui/src/views/flow/process/images/newIcon/widget.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ui/src/views/flow/process/images/scala.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ui/src/views/flow/process/images/sender.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ui/src/views/flow/process/images/shell.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /ui/vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | productionSourceMap: false, 3 | publicPath: process.env.NODE_ENV === 'production' ? '././' : './', 4 | devServer: { 5 | port: 5000 // 此处修改你想要的端口号, 6 | }, 7 | configureWebpack: { 8 | resolve: { 9 | alias: { 10 | vue$: 'vue/dist/vue.esm.js' 11 | } 12 | } 13 | }, 14 | chainWebpack: config => { 15 | config.module 16 | .rule('vue') 17 | .use('vue-loader') 18 | .loader('vue-loader') 19 | .tap(options => { 20 | // 修改它的选项... 21 | return options 22 | }) 23 | } 24 | } 25 | --------------------------------------------------------------------------------