Full Code of unixhot/opsany-paas for AI

main ebb1471d436a cached
3826 files
36.4 MB
9.8M tokens
103577 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (39,539K chars total). Download the full file to get everything.
Repository: unixhot/opsany-paas
Branch: main
Commit: ebb1471d436a
Files: 3826
Total size: 36.4 MB

Directory structure:
gitextract_n46_2v49/

├── .gitignore
├── LICENSE.txt
├── README.md
├── docs/
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── README.md
├── install/
│   ├── .gitkeep
│   ├── README.md
│   ├── conf/
│   │   ├── README.md
│   │   ├── consul.hcl
│   │   ├── daemon.json
│   │   ├── elastic/
│   │   │   ├── apm-server.yml
│   │   │   ├── elasticsearch.yml
│   │   │   ├── heartbeat.yml
│   │   │   └── kibana.yml
│   │   ├── grafana/
│   │   │   ├── grafana.ini
│   │   │   ├── grafana.key
│   │   │   └── grafana.pem
│   │   ├── kubernetes/
│   │   │   └── .gitkeep
│   │   ├── mongodb/
│   │   │   └── .gitkeep
│   │   ├── mysql/
│   │   │   └── mysqld.cnf
│   │   ├── mysqld.cnf
│   │   ├── nginx-conf.d/
│   │   │   ├── nginx_paas.conf.bak
│   │   │   ├── opsany_paas.conf
│   │   │   ├── opsany_paas_k8s.config
│   │   │   ├── opsany_proxy.conf
│   │   │   ├── opsany_proxy_k8s.config
│   │   │   └── ssl/
│   │   │       └── .gitkeep
│   │   ├── nginx.conf
│   │   ├── openssl.cnf
│   │   ├── opsany-paas/
│   │   │   ├── appengine/
│   │   │   │   ├── appengine.ini
│   │   │   │   └── settings_production.py.appengine
│   │   │   ├── esb/
│   │   │   │   ├── esb.ini
│   │   │   │   └── settings_production.py.esb
│   │   │   ├── login/
│   │   │   │   ├── login.ini
│   │   │   │   └── settings_production.py.login
│   │   │   ├── mcp-server/
│   │   │   │   ├── config.yaml
│   │   │   │   ├── mcp-supervisor.ini
│   │   │   │   ├── mcp.json
│   │   │   │   └── supervisord.conf
│   │   │   ├── paas/
│   │   │   │   ├── paas.ini
│   │   │   │   └── settings_production.py.paas
│   │   │   └── websocket/
│   │   │       ├── settings_production.py.websocket
│   │   │       ├── settings_production.py.websocket.init
│   │   │       └── websocket.ini
│   │   ├── opsany-saas/
│   │   │   ├── apm/
│   │   │   │   ├── apm-init.py
│   │   │   │   ├── apm-nginx-main.conf
│   │   │   │   ├── apm-nginx.conf
│   │   │   │   ├── apm-prod.py
│   │   │   │   ├── apm-supervisor.ini
│   │   │   │   └── apm-uwsgi.ini
│   │   │   ├── auto/
│   │   │   │   ├── auto-init.py
│   │   │   │   ├── auto-nginx-main.conf
│   │   │   │   ├── auto-nginx.conf
│   │   │   │   ├── auto-prod.py
│   │   │   │   ├── auto-supervisor.ini
│   │   │   │   └── auto-uwsgi.ini
│   │   │   ├── bastion/
│   │   │   │   ├── bastion-init.py
│   │   │   │   ├── bastion-nginx-main.conf
│   │   │   │   ├── bastion-nginx.conf
│   │   │   │   ├── bastion-prod.py
│   │   │   │   ├── bastion-supervisor.ini
│   │   │   │   └── bastion-uwsgi.ini
│   │   │   ├── cmdb/
│   │   │   │   ├── cmdb-init.py
│   │   │   │   ├── cmdb-nginx-main.conf
│   │   │   │   ├── cmdb-nginx.conf
│   │   │   │   ├── cmdb-prod.py
│   │   │   │   ├── cmdb-supervisor.ini
│   │   │   │   └── cmdb-uwsgi.ini
│   │   │   ├── cmp/
│   │   │   │   ├── cmp-init.py
│   │   │   │   ├── cmp-nginx-main.conf
│   │   │   │   ├── cmp-nginx.conf
│   │   │   │   ├── cmp-prod.py
│   │   │   │   ├── cmp-supervisor.ini
│   │   │   │   └── cmp-uwsgi.ini
│   │   │   ├── code/
│   │   │   │   ├── code-init.py
│   │   │   │   ├── code-nginx-main.conf
│   │   │   │   ├── code-nginx.conf
│   │   │   │   ├── code-prod.py
│   │   │   │   ├── code-supervisor.ini
│   │   │   │   └── code-uwsgi.ini
│   │   │   ├── control/
│   │   │   │   ├── control-init.py
│   │   │   │   ├── control-nginx-main.conf
│   │   │   │   ├── control-nginx.conf
│   │   │   │   ├── control-prod.py
│   │   │   │   ├── control-supervisor.ini
│   │   │   │   └── control-uwsgi.ini
│   │   │   ├── dashboard/
│   │   │   │   ├── dashboard-init.py
│   │   │   │   ├── dashboard-nginx-main.conf
│   │   │   │   ├── dashboard-nginx.conf
│   │   │   │   ├── dashboard-prod.py
│   │   │   │   ├── dashboard-supervisor.ini
│   │   │   │   └── dashboard-uwsgi.ini
│   │   │   ├── deploy/
│   │   │   │   ├── deploy-init.py
│   │   │   │   ├── deploy-nginx-main.conf
│   │   │   │   ├── deploy-nginx.conf
│   │   │   │   ├── deploy-prod.py
│   │   │   │   ├── deploy-supervisor.ini
│   │   │   │   └── deploy-uwsgi.ini
│   │   │   ├── devops/
│   │   │   │   ├── devops-init.py
│   │   │   │   ├── devops-nginx-main.conf
│   │   │   │   ├── devops-nginx.conf
│   │   │   │   ├── devops-prod.py
│   │   │   │   ├── devops-supervisor.ini
│   │   │   │   └── devops-uwsgi.ini
│   │   │   ├── event/
│   │   │   │   ├── event-init.py
│   │   │   │   ├── event-nginx-main.conf
│   │   │   │   ├── event-nginx.conf
│   │   │   │   ├── event-prod.py
│   │   │   │   ├── event-supervisor.ini
│   │   │   │   └── event-uwsgi.ini
│   │   │   ├── foot/
│   │   │   │   ├── .gitkeep
│   │   │   │   ├── config.yml
│   │   │   │   └── foot-supervisor.ini
│   │   │   ├── job/
│   │   │   │   ├── job-init.py
│   │   │   │   ├── job-nginx-main.conf
│   │   │   │   ├── job-nginx.conf
│   │   │   │   ├── job-prod.py
│   │   │   │   ├── job-supervisor.ini
│   │   │   │   └── job-uwsgi.ini
│   │   │   ├── k8s/
│   │   │   │   ├── k8s-init.py
│   │   │   │   ├── k8s-nginx-main.conf
│   │   │   │   ├── k8s-nginx.conf
│   │   │   │   ├── k8s-prod.py
│   │   │   │   ├── k8s-supervisor.ini
│   │   │   │   └── k8s-uwsgi.ini
│   │   │   ├── kbase/
│   │   │   │   ├── kbase-init.py
│   │   │   │   ├── kbase-nginx-main.conf
│   │   │   │   ├── kbase-nginx.conf
│   │   │   │   ├── kbase-prod.py
│   │   │   │   ├── kbase-supervisor.ini
│   │   │   │   └── kbase-uwsgi.ini
│   │   │   ├── llmops/
│   │   │   │   ├── llmops-init.py
│   │   │   │   ├── llmops-nginx-main.conf
│   │   │   │   ├── llmops-nginx.conf
│   │   │   │   ├── llmops-prod.py
│   │   │   │   ├── llmops-supervisor.ini
│   │   │   │   └── llmops-uwsgi.ini
│   │   │   ├── log/
│   │   │   │   ├── log-init.py
│   │   │   │   ├── log-nginx-main.conf
│   │   │   │   ├── log-nginx.conf
│   │   │   │   ├── log-prod.py
│   │   │   │   ├── log-supervisor.ini
│   │   │   │   └── log-uwsgi.ini
│   │   │   ├── monitor/
│   │   │   │   ├── monitor-init.py
│   │   │   │   ├── monitor-nginx-main.conf
│   │   │   │   ├── monitor-nginx.conf
│   │   │   │   ├── monitor-prod.py
│   │   │   │   ├── monitor-supervisor.ini
│   │   │   │   └── monitor-uwsgi.ini
│   │   │   ├── pipeline/
│   │   │   │   ├── pipeline-init.py
│   │   │   │   ├── pipeline-nginx-main.conf
│   │   │   │   ├── pipeline-nginx.conf
│   │   │   │   ├── pipeline-prod.py
│   │   │   │   ├── pipeline-supervisor.ini
│   │   │   │   └── pipeline-uwsgi.ini
│   │   │   ├── prom/
│   │   │   │   ├── prom-init.py
│   │   │   │   ├── prom-nginx-main.conf
│   │   │   │   ├── prom-nginx.conf
│   │   │   │   ├── prom-prod.py
│   │   │   │   ├── prom-supervisor.ini
│   │   │   │   └── prom-uwsgi.ini
│   │   │   ├── rbac/
│   │   │   │   ├── rbac-init.py
│   │   │   │   ├── rbac-nginx-main.conf
│   │   │   │   ├── rbac-nginx.conf
│   │   │   │   ├── rbac-prod.py
│   │   │   │   ├── rbac-supervisor.ini
│   │   │   │   └── rbac-uwsgi.ini
│   │   │   ├── repo/
│   │   │   │   ├── repo-init.py
│   │   │   │   ├── repo-nginx-main.conf
│   │   │   │   ├── repo-nginx.conf
│   │   │   │   ├── repo-prod.py
│   │   │   │   ├── repo-supervisor.ini
│   │   │   │   └── repo-uwsgi.ini
│   │   │   └── workbench/
│   │   │       ├── workbench-init.py
│   │   │       ├── workbench-nginx-main.conf
│   │   │       ├── workbench-nginx.conf
│   │   │       ├── workbench-prod.py
│   │   │       ├── workbench-supervisor.ini
│   │   │       └── workbench-uwsgi.ini
│   │   ├── paas_agent/
│   │   │   ├── paas_agent_config.yaml
│   │   │   ├── paasagent.conf
│   │   │   ├── supervisord.conf
│   │   │   ├── uwsgi.ini.16g
│   │   │   └── uwsgi.ini.8g
│   │   ├── prometheus/
│   │   │   ├── alertmanager.yml
│   │   │   ├── blackbox.yml
│   │   │   ├── prometheus.yml
│   │   │   └── web.yml
│   │   ├── proxy/
│   │   │   ├── nginx-conf.d/
│   │   │   │   ├── nginx_proxy.conf
│   │   │   │   └── ssl/
│   │   │   │       ├── .gitkeep
│   │   │   │       ├── opsany-proxy.key
│   │   │   │       └── opsany-proxy.pem
│   │   │   ├── nginx.conf
│   │   │   ├── proxy.ini
│   │   │   ├── saltapi.ini
│   │   │   ├── saltmaster.ini
│   │   │   ├── settings_production.py.proxy
│   │   │   └── settings_production.py.proxy-standalone
│   │   ├── redis/
│   │   │   └── redis.conf
│   │   ├── salt/
│   │   │   ├── certs/
│   │   │   │   ├── saltstack.key
│   │   │   │   └── saltstack.pem
│   │   │   ├── master
│   │   │   ├── master.d/
│   │   │   │   ├── api.conf
│   │   │   │   └── user.conf
│   │   │   ├── minion
│   │   │   └── pki/
│   │   │       └── master/
│   │   │           ├── master.pem
│   │   │           └── master.pub
│   │   └── stackstorm/
│   │       ├── files/
│   │       │   ├── config.js
│   │       │   ├── htpasswd
│   │       │   ├── rbac/
│   │       │   │   ├── assignments/
│   │       │   │   │   ├── st2admin.yaml
│   │       │   │   │   └── stanley.yaml
│   │       │   │   └── roles/
│   │       │   │       └── sample.yaml
│   │       │   ├── st2-cli.conf
│   │       │   ├── st2.docker.conf
│   │       │   └── st2.user.conf
│   │       ├── mongodb_event.js
│   │       ├── opsany_core.yaml
│   │       ├── packs/
│   │       │   ├── opsany_core/
│   │       │   │   ├── .gitignore
│   │       │   │   ├── LICENSE
│   │       │   │   ├── README.md
│   │       │   │   ├── actions/
│   │       │   │   │   ├── control_execute_command.py
│   │       │   │   │   ├── control_execute_command.yaml
│   │       │   │   │   ├── control_run_command.py
│   │       │   │   │   ├── control_run_command.yaml
│   │       │   │   │   ├── control_run_script.py
│   │       │   │   │   ├── control_run_script.yaml
│   │       │   │   │   ├── gitlab_clone_project.py
│   │       │   │   │   ├── gitlab_clone_project.yaml
│   │       │   │   │   ├── lib/
│   │       │   │   │   │   ├── __init__.py
│   │       │   │   │   │   └── base_action.py
│   │       │   │   │   ├── nexus_project.py
│   │       │   │   │   ├── nexus_project.yaml
│   │       │   │   │   ├── send_mail.py
│   │       │   │   │   ├── send_mail.yaml
│   │       │   │   │   ├── send_message.py
│   │       │   │   │   ├── send_message.yaml
│   │       │   │   │   └── test.py
│   │       │   │   ├── config.schema.yaml
│   │       │   │   ├── demo.sh
│   │       │   │   ├── opsany_core.yaml
│   │       │   │   ├── opsany_core.yaml.example
│   │       │   │   ├── pack.yaml
│   │       │   │   ├── requirements-tests.txt
│   │       │   │   └── requirements.txt
│   │       │   └── opsany_workflow/
│   │       │       ├── .gitignore
│   │       │       ├── README.md
│   │       │       ├── actions/
│   │       │       │   ├── demo.py
│   │       │       │   └── demo.yaml
│   │       │       ├── pack.yaml
│   │       │       ├── requirements-tests.txt
│   │       │       └── requirements.txt
│   │       └── tests/
│   │           ├── st2tests-tools.sh
│   │           ├── st2tests.sh
│   │           └── st2tests.yaml
│   ├── database-backup.sh
│   ├── db-backup.sh
│   ├── db-create.sh
│   ├── dev-install.sh
│   ├── devops-install.sh
│   ├── init/
│   │   ├── cmdb-init/
│   │   │   ├── field_group.json
│   │   │   ├── icon_model.json
│   │   │   ├── link_relationship_model.json
│   │   │   ├── model_field.json
│   │   │   ├── model_group.json
│   │   │   └── model_info.json
│   │   ├── cmdb-model/
│   │   │   └── .gitkeep
│   │   ├── control-resource/
│   │   │   └── .gitkeep
│   │   ├── dashboard-init/
│   │   │   ├── zabbix-linux-host.json
│   │   │   ├── zabbix-network_device.json
│   │   │   └── zabbix-windows-host.json
│   │   ├── esb-init/
│   │   │   ├── esb_api_doc.sql
│   │   │   ├── esb_channel.sql
│   │   │   ├── esb_component_system.sql
│   │   │   └── esb_function_controller.sql
│   │   ├── import_script.py
│   │   ├── init_alert_rule.py
│   │   ├── init_dashboard.py
│   │   ├── init_metric_collect_plugin.py
│   │   ├── job-playbook/
│   │   │   └── .gitkeep
│   │   ├── job-script/
│   │   │   ├── .gitkeep
│   │   │   ├── 查看Linux交换分区进程占用.json
│   │   │   ├── 查看Linux系统CPU和内存使用Top 5进程.json
│   │   │   ├── 查看Linux系统UID为0的用户.json
│   │   │   ├── 查看Linux系统所有开机启动服务.json
│   │   │   ├── 查看Linux系统所有用户计划任务.json
│   │   │   ├── 查看Linux系统有登录权限的用户.json
│   │   │   └── 查看连接本机的IP地址统计.json
│   │   ├── job-sls/
│   │   │   └── .gitkeep
│   │   ├── job-task/
│   │   │   └── .gitkeep
│   │   ├── mongodb-init/
│   │   │   ├── .gitkeep
│   │   │   ├── mongodb_init.js
│   │   │   ├── mongodb_init_ee.js
│   │   │   └── mongodb_init_llmops.js
│   │   └── opsany-paas.sql
│   ├── install-k8s.config.example
│   ├── install.config.example
│   ├── llmops-install.sh
│   ├── opsai-install.sh
│   ├── opsany-ce/
│   │   ├── README.md
│   │   ├── opsany-appengine/
│   │   │   ├── Dockerfile
│   │   │   ├── Dockerfile-PY3
│   │   │   ├── README.md
│   │   │   ├── appengine.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-bk-websocket/
│   │   │   ├── Dockerfile
│   │   │   ├── README.md
│   │   │   ├── supervisord.conf
│   │   │   └── websocket.ini
│   │   ├── opsany-esb/
│   │   │   ├── Dockerfile
│   │   │   ├── Dockerfile-PY3
│   │   │   ├── README.md
│   │   │   ├── esb.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-heartbeat/
│   │   │   └── Dockerfile
│   │   ├── opsany-init/
│   │   │   ├── .gitkeep
│   │   │   └── Dockerfile
│   │   ├── opsany-login/
│   │   │   ├── Dockerfile
│   │   │   ├── Dockerfile-PY3
│   │   │   ├── README.md
│   │   │   ├── login.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-mcp-server/
│   │   │   ├── Dockerfile
│   │   │   ├── mcp-supervisor.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-paas/
│   │   │   ├── Dockerfile
│   │   │   ├── Dockerfile-PY3
│   │   │   ├── README.md
│   │   │   ├── paas.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-paasagent/
│   │   │   ├── Dockerfile
│   │   │   ├── README.md
│   │   │   ├── nginx.conf
│   │   │   ├── nginx.ini
│   │   │   ├── paasagent.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-proxy/
│   │   │   ├── Dockerfile
│   │   │   ├── Dockerfile-PY3
│   │   │   ├── Dockerfile-centos
│   │   │   ├── Dockerfile-deabian
│   │   │   ├── README.md
│   │   │   ├── nginx.ini
│   │   │   ├── nginx_proxy.conf
│   │   │   ├── proxy.ini
│   │   │   ├── saltapi.ini
│   │   │   ├── saltmaster.ini
│   │   │   ├── ssh_config
│   │   │   └── supervisord.conf
│   │   ├── opsany-st2/
│   │   │   ├── CHANGELOG.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── docker-compose.yml
│   │   │   ├── files/
│   │   │   │   ├── config.js
│   │   │   │   ├── htpasswd
│   │   │   │   ├── rbac/
│   │   │   │   │   ├── assignments/
│   │   │   │   │   │   ├── st2admin.yaml
│   │   │   │   │   │   └── stanley.yaml
│   │   │   │   │   └── roles/
│   │   │   │   │       └── sample.yaml
│   │   │   │   ├── st2-cli.conf
│   │   │   │   ├── st2.docker.conf
│   │   │   │   └── st2.user.conf
│   │   │   ├── st2-install.sh
│   │   │   └── tests/
│   │   │       ├── st2tests-tools.sh
│   │   │       ├── st2tests.sh
│   │   │       └── st2tests.yaml
│   │   ├── opsany-stackstorm/
│   │   │   ├── Dockerfile
│   │   │   ├── README.md
│   │   │   ├── nginx.conf
│   │   │   ├── nginx.ini
│   │   │   ├── st2actionrunner.ini
│   │   │   ├── st2api.ini
│   │   │   ├── st2auth.ini
│   │   │   ├── st2notifier.ini
│   │   │   ├── st2scheduler.ini
│   │   │   ├── st2stream.ini
│   │   │   ├── st2timersengine.ini
│   │   │   ├── st2workflowengine.ini
│   │   │   └── supervisord.conf
│   │   └── opsany-websocket/
│   │       ├── Dockerfile
│   │       ├── README.md
│   │       ├── supervisord.conf
│   │       └── websocket.ini
│   ├── opsany-ce-k8s-update.sh
│   ├── opsany-ce-offline.sh
│   ├── opsany-ce-update.sh
│   ├── opsany_dispatch.py
│   ├── paas-change-domain.sh
│   ├── paas-change.sh
│   ├── paas-install.sh
│   ├── paas-k8s-install.sh
│   ├── password-init.py
│   ├── prom-install.sh
│   ├── prom-k8s-install.sh
│   ├── prom-pass.py
│   ├── proxy-install.sh
│   ├── proxy-uninstall.sh
│   ├── proxy-update.sh
│   ├── reset_admin.sh
│   ├── saas-ce-install.sh
│   ├── saas-ce-k8s-install.sh
│   ├── saas-dev-install.sh
│   ├── saas-esb-update.sh
│   ├── saas-log-clean.sh
│   ├── saas-update.sh
│   ├── st2-install.sh
│   ├── test/
│   │   ├── README.md
│   │   ├── almalinux-8.10/
│   │   │   └── Dockerfile
│   │   ├── almalinux-9.5/
│   │   │   └── Dockerfile
│   │   ├── opsany-test.sh
│   │   ├── rockylinux-8.10/
│   │   │   └── Dockerfile
│   │   ├── rockylinux-9.4/
│   │   │   └── Dockerfile
│   │   ├── test-import.xlsx
│   │   ├── ubuntu-16.04/
│   │   │   ├── Dockerfile
│   │   │   └── README.md
│   │   ├── ubuntu-18.04/
│   │   │   └── Dockerfile
│   │   ├── ubuntu-20.04/
│   │   │   └── Dockerfile
│   │   ├── ubuntu-22.04/
│   │   │   └── Dockerfile
│   │   └── ubuntu-24.04/
│   │       └── Dockerfile
│   ├── uninstall.sh
│   ├── update-ce-2.0.0.sh
│   ├── uploads/
│   │   └── control/
│   │       ├── collect/
│   │       │   └── script/
│   │       │       └── collect_script.txt
│   │       ├── metric/
│   │       │   └── logo/
│   │       │       └── metric_logo.txt
│   │       └── minion_cache_file/
│   │           └── minion_cache_file.txt
│   ├── zabbix-agent.sh
│   └── zabbix-install.sh
├── kubernetes/
│   ├── .gitkeep
│   ├── README.md
│   ├── addons/
│   │   ├── metrics-server.yaml
│   │   ├── mysql-operator/
│   │   │   ├── README.md
│   │   │   ├── deploy-crds.yaml
│   │   │   └── deploy-operator.yaml
│   │   ├── nginx-ingress.yaml
│   │   └── volumesnapshot/
│   │       ├── snapshot.storage.k8s.io_volumesnapshotclasses.yaml
│   │       ├── snapshot.storage.k8s.io_volumesnapshotcontents.yaml
│   │       └── snapshot.storage.k8s.io_volumesnapshots.yaml
│   ├── helm/
│   │   ├── README.md
│   │   ├── opsany-base/
│   │   │   ├── consul/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── storage.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── heartbeat/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── mongodb/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── README.md
│   │   │   │   ├── charts/
│   │   │   │   │   └── common/
│   │   │   │   │       ├── .helmignore
│   │   │   │   │       ├── Chart.yaml
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── templates/
│   │   │   │   │       │   ├── _affinities.tpl
│   │   │   │   │       │   ├── _capabilities.tpl
│   │   │   │   │       │   ├── _errors.tpl
│   │   │   │   │       │   ├── _images.tpl
│   │   │   │   │       │   ├── _ingress.tpl
│   │   │   │   │       │   ├── _labels.tpl
│   │   │   │   │       │   ├── _names.tpl
│   │   │   │   │       │   ├── _secrets.tpl
│   │   │   │   │       │   ├── _storage.tpl
│   │   │   │   │       │   ├── _tplvalues.tpl
│   │   │   │   │       │   ├── _utils.tpl
│   │   │   │   │       │   ├── _warnings.tpl
│   │   │   │   │       │   └── validations/
│   │   │   │   │       │       ├── _cassandra.tpl
│   │   │   │   │       │       ├── _mariadb.tpl
│   │   │   │   │       │       ├── _mongodb.tpl
│   │   │   │   │       │       ├── _mysql.tpl
│   │   │   │   │       │       ├── _postgresql.tpl
│   │   │   │   │       │       ├── _redis.tpl
│   │   │   │   │       │       └── _validations.tpl
│   │   │   │   │       └── values.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── arbiter/
│   │   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   │   ├── headless-svc.yaml
│   │   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   │   └── statefulset.yaml
│   │   │   │   │   ├── common-scripts-cm.yaml
│   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   ├── extra-list.yaml
│   │   │   │   │   ├── hidden/
│   │   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   │   ├── external-access-svc.yaml
│   │   │   │   │   │   ├── headless-svc.yaml
│   │   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   │   └── statefulset.yaml
│   │   │   │   │   ├── initialization-configmap.yaml
│   │   │   │   │   ├── metrics-svc.yaml
│   │   │   │   │   ├── prometheusrule.yaml
│   │   │   │   │   ├── psp.yaml
│   │   │   │   │   ├── replicaset/
│   │   │   │   │   │   ├── external-access-svc.yaml
│   │   │   │   │   │   ├── headless-svc.yaml
│   │   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   │   ├── scripts-configmap.yaml
│   │   │   │   │   │   ├── statefulset.yaml
│   │   │   │   │   │   └── svc.yaml
│   │   │   │   │   ├── role.yaml
│   │   │   │   │   ├── rolebinding.yaml
│   │   │   │   │   ├── secrets-ca.yaml
│   │   │   │   │   ├── secrets.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── servicemonitor.yaml
│   │   │   │   │   └── standalone/
│   │   │   │   │       ├── dep-sts.yaml
│   │   │   │   │       ├── pvc.yaml
│   │   │   │   │       └── svc.yaml
│   │   │   │   ├── values.schema.json
│   │   │   │   └── values.yaml
│   │   │   ├── mysql/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── README.md
│   │   │   │   ├── charts/
│   │   │   │   │   └── common/
│   │   │   │   │       ├── .helmignore
│   │   │   │   │       ├── Chart.yaml
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── templates/
│   │   │   │   │       │   ├── _affinities.tpl
│   │   │   │   │       │   ├── _capabilities.tpl
│   │   │   │   │       │   ├── _errors.tpl
│   │   │   │   │       │   ├── _images.tpl
│   │   │   │   │       │   ├── _ingress.tpl
│   │   │   │   │       │   ├── _labels.tpl
│   │   │   │   │       │   ├── _names.tpl
│   │   │   │   │       │   ├── _secrets.tpl
│   │   │   │   │       │   ├── _storage.tpl
│   │   │   │   │       │   ├── _tplvalues.tpl
│   │   │   │   │       │   ├── _utils.tpl
│   │   │   │   │       │   ├── _warnings.tpl
│   │   │   │   │       │   └── validations/
│   │   │   │   │       │       ├── _cassandra.tpl
│   │   │   │   │       │       ├── _mariadb.tpl
│   │   │   │   │       │       ├── _mongodb.tpl
│   │   │   │   │       │       ├── _mysql.tpl
│   │   │   │   │       │       ├── _postgresql.tpl
│   │   │   │   │       │       ├── _redis.tpl
│   │   │   │   │       │       └── _validations.tpl
│   │   │   │   │       └── values.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── extra-list.yaml
│   │   │   │   │   ├── metrics-svc.yaml
│   │   │   │   │   ├── networkpolicy.yaml
│   │   │   │   │   ├── primary/
│   │   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   │   ├── initialization-configmap.yaml
│   │   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   │   ├── statefulset.yaml
│   │   │   │   │   │   ├── svc-headless.yaml
│   │   │   │   │   │   └── svc.yaml
│   │   │   │   │   ├── prometheusrule.yaml
│   │   │   │   │   ├── role.yaml
│   │   │   │   │   ├── rolebinding.yaml
│   │   │   │   │   ├── secondary/
│   │   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   │   ├── statefulset.yaml
│   │   │   │   │   │   ├── svc-headless.yaml
│   │   │   │   │   │   └── svc.yaml
│   │   │   │   │   ├── secrets.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   └── servicemonitor.yaml
│   │   │   │   ├── values.schema.json
│   │   │   │   └── values.yaml
│   │   │   ├── nfs-subdir-external-provisioner/
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── README.md
│   │   │   │   ├── ci/
│   │   │   │   │   └── test-values.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── clusterrole.yaml
│   │   │   │   │   ├── clusterrolebinding.yaml
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── persistentvolume.yaml
│   │   │   │   │   ├── persistentvolumeclaim.yaml
│   │   │   │   │   ├── poddisruptionbudget.yaml
│   │   │   │   │   ├── podsecuritypolicy.yaml
│   │   │   │   │   ├── role.yaml
│   │   │   │   │   ├── rolebinding.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   └── storageclass.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── prometheus/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── storage.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── rabbitmq/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── README.md
│   │   │   │   ├── charts/
│   │   │   │   │   └── common/
│   │   │   │   │       ├── .helmignore
│   │   │   │   │       ├── Chart.yaml
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── templates/
│   │   │   │   │       │   ├── _affinities.tpl
│   │   │   │   │       │   ├── _capabilities.tpl
│   │   │   │   │       │   ├── _errors.tpl
│   │   │   │   │       │   ├── _images.tpl
│   │   │   │   │       │   ├── _ingress.tpl
│   │   │   │   │       │   ├── _labels.tpl
│   │   │   │   │       │   ├── _names.tpl
│   │   │   │   │       │   ├── _secrets.tpl
│   │   │   │   │       │   ├── _storage.tpl
│   │   │   │   │       │   ├── _tplvalues.tpl
│   │   │   │   │       │   ├── _utils.tpl
│   │   │   │   │       │   ├── _warnings.tpl
│   │   │   │   │       │   └── validations/
│   │   │   │   │       │       ├── _cassandra.tpl
│   │   │   │   │       │       ├── _mariadb.tpl
│   │   │   │   │       │       ├── _mongodb.tpl
│   │   │   │   │       │       ├── _mysql.tpl
│   │   │   │   │       │       ├── _postgresql.tpl
│   │   │   │   │       │       ├── _redis.tpl
│   │   │   │   │       │       └── _validations.tpl
│   │   │   │   │       └── values.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── config-secret.yaml
│   │   │   │   │   ├── extra-list.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── init-configmap.yaml
│   │   │   │   │   ├── networkpolicy.yaml
│   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   ├── prometheusrule.yaml
│   │   │   │   │   ├── role.yaml
│   │   │   │   │   ├── rolebinding.yaml
│   │   │   │   │   ├── secrets.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── servicemonitor.yaml
│   │   │   │   │   ├── statefulset.yaml
│   │   │   │   │   ├── svc-headless.yaml
│   │   │   │   │   ├── svc.yaml
│   │   │   │   │   ├── tls-secrets.yaml
│   │   │   │   │   └── validation.yaml
│   │   │   │   ├── values.schema.json
│   │   │   │   └── values.yaml
│   │   │   ├── redis/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── README.md
│   │   │   │   ├── charts/
│   │   │   │   │   └── common/
│   │   │   │   │       ├── .helmignore
│   │   │   │   │       ├── Chart.yaml
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── templates/
│   │   │   │   │       │   ├── _affinities.tpl
│   │   │   │   │       │   ├── _capabilities.tpl
│   │   │   │   │       │   ├── _errors.tpl
│   │   │   │   │       │   ├── _images.tpl
│   │   │   │   │       │   ├── _ingress.tpl
│   │   │   │   │       │   ├── _labels.tpl
│   │   │   │   │       │   ├── _names.tpl
│   │   │   │   │       │   ├── _secrets.tpl
│   │   │   │   │       │   ├── _storage.tpl
│   │   │   │   │       │   ├── _tplvalues.tpl
│   │   │   │   │       │   ├── _utils.tpl
│   │   │   │   │       │   ├── _warnings.tpl
│   │   │   │   │       │   └── validations/
│   │   │   │   │       │       ├── _cassandra.tpl
│   │   │   │   │       │       ├── _mariadb.tpl
│   │   │   │   │       │       ├── _mongodb.tpl
│   │   │   │   │       │       ├── _mysql.tpl
│   │   │   │   │       │       ├── _postgresql.tpl
│   │   │   │   │       │       ├── _redis.tpl
│   │   │   │   │       │       └── _validations.tpl
│   │   │   │   │       └── values.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   ├── extra-list.yaml
│   │   │   │   │   ├── headless-svc.yaml
│   │   │   │   │   ├── health-configmap.yaml
│   │   │   │   │   ├── master/
│   │   │   │   │   │   ├── application.yaml
│   │   │   │   │   │   ├── psp.yaml
│   │   │   │   │   │   ├── pvc.yaml
│   │   │   │   │   │   ├── service.yaml
│   │   │   │   │   │   └── serviceaccount.yaml
│   │   │   │   │   ├── metrics-svc.yaml
│   │   │   │   │   ├── networkpolicy.yaml
│   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   ├── prometheusrule.yaml
│   │   │   │   │   ├── replicas/
│   │   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   │   ├── service.yaml
│   │   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   │   └── statefulset.yaml
│   │   │   │   │   ├── role.yaml
│   │   │   │   │   ├── rolebinding.yaml
│   │   │   │   │   ├── scripts-configmap.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── sentinel/
│   │   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   │   ├── node-services.yaml
│   │   │   │   │   │   ├── ports-configmap.yaml
│   │   │   │   │   │   ├── service.yaml
│   │   │   │   │   │   └── statefulset.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── servicemonitor.yaml
│   │   │   │   │   └── tls-secret.yaml
│   │   │   │   ├── values.schema.json
│   │   │   │   └── values.yaml
│   │   │   ├── zabbix-server/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── storage.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   └── zabbix-web/
│   │   │       ├── .helmignore
│   │   │       ├── Chart.yaml
│   │   │       ├── templates/
│   │   │       │   ├── NOTES.txt
│   │   │       │   ├── _helpers.tpl
│   │   │       │   ├── deployment.yaml
│   │   │       │   ├── hpa.yaml
│   │   │       │   ├── ingress.yaml
│   │   │       │   ├── service.yaml
│   │   │       │   ├── serviceaccount.yaml
│   │   │       │   └── tests/
│   │   │       │       └── test-connection.yaml
│   │   │       └── values.yaml
│   │   ├── opsany-paas/
│   │   │   ├── .helmignore
│   │   │   ├── nginx-ingress.yaml
│   │   │   ├── opsany-nfs.yaml
│   │   │   ├── opsany-paas-appengine/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── settings_production.py.appengine
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-esb/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── settings_production.py.esb
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-grafana/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-guacd/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-login/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── settings_production.py.login
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-mcp-server/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-openresty/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── nginx.conf
│   │   │   │   ├── ssl/
│   │   │   │   │   ├── .gitkeep
│   │   │   │   │   ├── test.opsany.cn.key
│   │   │   │   │   └── test.opsany.cn.pem
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-paas/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── settings_production.py.paas
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-paasagent/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-proxy/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── storage.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-websocket/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   └── templates/
│   │   │       ├── NOTES.txt
│   │   │       ├── _helpers.tpl
│   │   │       ├── deployment.yaml
│   │   │       ├── hpa.yaml
│   │   │       ├── ingress.yaml
│   │   │       ├── service.yaml
│   │   │       ├── serviceaccount.yaml
│   │   │       └── tests/
│   │   │           └── test-connection.yaml
│   │   └── opsany-saas/
│   │       ├── opsany-saas-bastion/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-cmdb/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-cmp/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-code/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-control/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-deploy/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-devops/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-job/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-llmops/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-monitor/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-pipeline/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-rbac/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-repo/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       └── opsany-saas-workbench/
│   │           ├── .helmignore
│   │           ├── Chart.yaml
│   │           ├── templates/
│   │           │   ├── NOTES.txt
│   │           │   ├── _helpers.tpl
│   │           │   ├── configmap.yaml
│   │           │   ├── deployment.yaml
│   │           │   ├── hpa.yaml
│   │           │   ├── service.yaml
│   │           │   └── tests/
│   │           │       └── test-connection.yaml
│   │           └── values.yaml
│   ├── kubeedge/
│   │   ├── .gitkeep
│   │   └── README.md
│   └── kubevirt/
│       ├── .gitkeep
│       ├── README.md
│       ├── kubevirt-cr.yaml
│       └── kubevirt-operator.yaml
├── opsany-mcp-server/
│   ├── .gitignore
│   ├── README.md
│   ├── config/
│   │   └── config.yaml.example
│   ├── docker/
│   │   ├── Dockerfile
│   │   ├── mcp-supervisor.ini
│   │   └── supervisord.conf
│   ├── opsanymcp/
│   │   ├── __init__.py
│   │   ├── api/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── cmdb_api.py
│   │   │   ├── control_api.py
│   │   │   ├── job_api.py
│   │   │   ├── monitor_api.py
│   │   │   ├── rbac_api.py
│   │   │   └── workbench_api.py
│   │   ├── constants.py
│   │   └── libs.py
│   ├── requirements.txt
│   ├── server.py
│   ├── tests/
│   │   ├── test_basic.py
│   │   ├── test_mcp_server.py
│   │   ├── test_server_logic.py
│   │   └── test_server_startup.py
│   └── tool_list.py
├── opsctl/
│   ├── .gitignore
│   ├── LICENSE
│   ├── README.md
│   ├── __init__.py
│   ├── opsanyctl/
│   │   ├── __init__.py
│   │   ├── api/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── fields.py
│   │   │   ├── resource.py
│   │   │   └── resource_type.py
│   │   ├── config
│   │   ├── constants.py
│   │   ├── help_content.py
│   │   ├── libs.py
│   │   └── main.py
│   ├── requirements.txt
│   ├── runtime.txt
│   ├── setup.cfg
│   ├── setup.py
│   └── tests/
│       ├── __init__.py
│       └── test.py
├── paas-ce/
│   ├── README.md
│   ├── paas/
│   │   ├── .flake8
│   │   ├── .jshintrc
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── VERSION
│   │   ├── appengine/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── api/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── baseview.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── deployment.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── models.py
│   │   │   │   ├── response.py
│   │   │   │   ├── servicemanager.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── common/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── exceptions.py
│   │   │   │   └── http.py
│   │   │   ├── controller/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── settings.py
│   │   │   │   ├── settings_default.py
│   │   │   │   ├── settings_sample.py
│   │   │   │   └── urls.py
│   │   │   ├── manage.py
│   │   │   ├── requirements.txt
│   │   │   └── wsgi.py
│   │   ├── docs/
│   │   │   ├── concepts/
│   │   │   │   ├── index.html
│   │   │   │   └── index.xml
│   │   │   ├── contribution-guidelines/
│   │   │   │   ├── index.html
│   │   │   │   └── index.xml
│   │   │   ├── examples/
│   │   │   │   ├── index.html
│   │   │   │   └── index.xml
│   │   │   ├── getting-started/
│   │   │   │   ├── example-page/
│   │   │   │   │   └── index.html
│   │   │   │   ├── index.html
│   │   │   │   └── index.xml
│   │   │   ├── index.html
│   │   │   ├── index.xml
│   │   │   ├── overview/
│   │   │   │   ├── index.html
│   │   │   │   └── index.xml
│   │   │   ├── reference/
│   │   │   │   ├── index.html
│   │   │   │   ├── index.xml
│   │   │   │   └── parameter-reference/
│   │   │   │       └── index.html
│   │   │   ├── tasks/
│   │   │   │   ├── beds/
│   │   │   │   │   └── index.html
│   │   │   │   ├── index.html
│   │   │   │   ├── index.xml
│   │   │   │   ├── ponycopters/
│   │   │   │   │   ├── configuring-ponycopters/
│   │   │   │   │   │   └── index.html
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.xml
│   │   │   │   │   └── launching-ponycopters/
│   │   │   │   │       └── index.html
│   │   │   │   ├── porridge/
│   │   │   │   │   └── index.html
│   │   │   │   └── task/
│   │   │   │       └── index.html
│   │   │   └── tutorials/
│   │   │       ├── index.html
│   │   │       ├── index.xml
│   │   │       ├── multi-bear/
│   │   │       │   └── index.html
│   │   │       └── tutorial2/
│   │   │           └── index.html
│   │   ├── esb/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── apps/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── operate_perm/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base.py
│   │   │   │   │   └── cc_perm.py
│   │   │   │   └── sdk_management/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── constants.py
│   │   │   │       ├── sdk_tmpl/
│   │   │   │       │   └── blueking/
│   │   │   │       │       ├── __init__.py
│   │   │   │       │       └── component/
│   │   │   │       │           ├── README.md
│   │   │   │       │           ├── __init__.py
│   │   │   │       │           ├── apis/
│   │   │   │       │           │   └── __init__.py
│   │   │   │       │           ├── base.py
│   │   │   │       │           ├── client.py
│   │   │   │       │           ├── collections.py
│   │   │   │       │           ├── compat.py
│   │   │   │       │           ├── conf.py
│   │   │   │       │           ├── exceptions.py
│   │   │   │       │           ├── shortcuts.py
│   │   │   │       │           └── utils.py
│   │   │   │       └── utils.py
│   │   │   ├── common/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_loggers.py
│   │   │   │   ├── base_redis.py
│   │   │   │   ├── base_utils.py
│   │   │   │   ├── base_validators.py
│   │   │   │   ├── bkerrors.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── django_utils.py
│   │   │   │   ├── djmysql_pool.py
│   │   │   │   ├── errors.py
│   │   │   │   ├── forms.py
│   │   │   │   └── log.py
│   │   │   ├── components/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── bk/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── apis/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── bk_login/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_all_user.py
│   │   │   │   │   │   │   ├── get_batch_user.py
│   │   │   │   │   │   │   ├── get_batch_user_platform_role.py
│   │   │   │   │   │   │   ├── get_user.py
│   │   │   │   │   │   │   ├── is_login.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       └── configs.py
│   │   │   │   │   │   ├── bk_paas/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_app_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       └── configs.py
│   │   │   │   │   │   ├── cc/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── add_app.py
│   │   │   │   │   │   │   ├── add_module.py
│   │   │   │   │   │   │   ├── add_plat_id.py
│   │   │   │   │   │   │   ├── add_set.py
│   │   │   │   │   │   │   ├── clone_host_property.py
│   │   │   │   │   │   │   ├── del_app.py
│   │   │   │   │   │   │   ├── del_host_in_app.py
│   │   │   │   │   │   │   ├── del_module.py
│   │   │   │   │   │   │   ├── del_plat.py
│   │   │   │   │   │   │   ├── del_set.py
│   │   │   │   │   │   │   ├── del_set_host.py
│   │   │   │   │   │   │   ├── edit_app.py
│   │   │   │   │   │   │   ├── enter_ip.py
│   │   │   │   │   │   │   ├── get_app_agent_status.py
│   │   │   │   │   │   │   ├── get_app_by_id.py
│   │   │   │   │   │   │   ├── get_app_by_user.py
│   │   │   │   │   │   │   ├── get_app_by_user_role.py
│   │   │   │   │   │   │   ├── get_app_host_list.py
│   │   │   │   │   │   │   ├── get_app_list.py
│   │   │   │   │   │   │   ├── get_content_by_customer_group_id.py
│   │   │   │   │   │   │   ├── get_customer_group_list.py
│   │   │   │   │   │   │   ├── get_git_server_ip.py
│   │   │   │   │   │   │   ├── get_host_by_company_id.py
│   │   │   │   │   │   │   ├── get_host_company_id.py
│   │   │   │   │   │   │   ├── get_host_list_by_field.py
│   │   │   │   │   │   │   ├── get_host_list_by_ip.py
│   │   │   │   │   │   │   ├── get_hosts_by_property.py
│   │   │   │   │   │   │   ├── get_ip_and_proxy_by_company.py
│   │   │   │   │   │   │   ├── get_module_host_list.py
│   │   │   │   │   │   │   ├── get_modules.py
│   │   │   │   │   │   │   ├── get_modules_by_property.py
│   │   │   │   │   │   │   ├── get_plat_id.py
│   │   │   │   │   │   │   ├── get_proc_config_instance_status.py
│   │   │   │   │   │   │   ├── get_process_port_by_app_id.py
│   │   │   │   │   │   │   ├── get_process_port_by_ip.py
│   │   │   │   │   │   │   ├── get_property_list.py
│   │   │   │   │   │   │   ├── get_set_host_list.py
│   │   │   │   │   │   │   ├── get_set_property.py
│   │   │   │   │   │   │   ├── get_sets_by_property.py
│   │   │   │   │   │   │   ├── get_topo_tree_by_app_id.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   ├── update_custom_property.py
│   │   │   │   │   │   │   ├── update_gse_proxy_status.py
│   │   │   │   │   │   │   ├── update_host_by_app_id.py
│   │   │   │   │   │   │   ├── update_host_info.py
│   │   │   │   │   │   │   ├── update_host_module.py
│   │   │   │   │   │   │   ├── update_host_plat.py
│   │   │   │   │   │   │   ├── update_module_property.py
│   │   │   │   │   │   │   ├── update_proc_config_instance.py
│   │   │   │   │   │   │   ├── update_set_property.py
│   │   │   │   │   │   │   └── update_set_service_status.py
│   │   │   │   │   │   └── fta/
│   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │       ├── fta_component.py
│   │   │   │   │   │       ├── http_relay.py
│   │   │   │   │   │       ├── imap_relay.py
│   │   │   │   │   │       └── toolkit/
│   │   │   │   │   │           ├── __init__.py
│   │   │   │   │   │           ├── configs.py
│   │   │   │   │   │           ├── imap.py
│   │   │   │   │   │           └── tools.py
│   │   │   │   │   └── apisv2/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       ├── bk_login/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── get_all_users.py
│   │   │   │   │       │   ├── get_batch_users.py
│   │   │   │   │       │   ├── get_batch_users_platform_role.py
│   │   │   │   │       │   ├── get_user.py
│   │   │   │   │       │   ├── is_login.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── bk_paas/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── create_app.py
│   │   │   │   │       │   ├── del_app.py
│   │   │   │   │       │   ├── edit_app.py
│   │   │   │   │       │   ├── get_app_info.py
│   │   │   │   │       │   ├── modify_app_logo.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── cc/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── add_host_to_resource.py
│   │   │   │   │       │   ├── bind_role_privilege.py
│   │   │   │   │       │   ├── cc_component.py
│   │   │   │   │       │   ├── create_business.py
│   │   │   │   │       │   ├── create_custom_query.py
│   │   │   │   │       │   ├── create_module.py
│   │   │   │   │       │   ├── create_set.py
│   │   │   │   │       │   ├── delete_business.py
│   │   │   │   │       │   ├── delete_custom_query.py
│   │   │   │   │       │   ├── delete_host.py
│   │   │   │   │       │   ├── delete_module.py
│   │   │   │   │       │   ├── delete_set.py
│   │   │   │   │       │   ├── get_custom_query_data.py
│   │   │   │   │       │   ├── get_custom_query_detail.py
│   │   │   │   │       │   ├── get_host_base_info.py
│   │   │   │   │       │   ├── search_biz_inst_topo.py
│   │   │   │   │       │   ├── search_business.py
│   │   │   │   │       │   ├── search_custom_query.py
│   │   │   │   │       │   ├── search_host.py
│   │   │   │   │       │   ├── search_inst_by_object.py
│   │   │   │   │       │   ├── search_module.py
│   │   │   │   │       │   ├── search_set.py
│   │   │   │   │       │   ├── toolkit/
│   │   │   │   │       │   │   ├── __init__.py
│   │   │   │   │       │   │   ├── configs.py
│   │   │   │   │       │   │   └── tools.py
│   │   │   │   │       │   ├── transfer_host_module.py
│   │   │   │   │       │   ├── transfer_host_to_faultmodule.py
│   │   │   │   │       │   ├── transfer_host_to_idlemodule.py
│   │   │   │   │       │   ├── transfer_host_to_resourcemodule.py
│   │   │   │   │       │   ├── transfer_resourcehost_to_idlemodule.py
│   │   │   │   │       │   ├── update_business.py
│   │   │   │   │       │   ├── update_custom_query.py
│   │   │   │   │       │   ├── update_host.py
│   │   │   │   │       │   ├── update_module.py
│   │   │   │   │       │   ├── update_object_topo_graphics.py
│   │   │   │   │       │   └── update_set.py
│   │   │   │   │       └── sops/
│   │   │   │   │           ├── __init__.py
│   │   │   │   │           ├── sops_component.py
│   │   │   │   │           └── toolkit/
│   │   │   │   │               ├── __init__.py
│   │   │   │   │               └── configs.py
│   │   │   │   ├── component.py
│   │   │   │   ├── confapis/
│   │   │   │   │   ├── cc/
│   │   │   │   │   │   ├── apidocs/
│   │   │   │   │   │   │   ├── en/
│   │   │   │   │   │   │   │   ├── add_host_lock.md
│   │   │   │   │   │   │   │   ├── add_instance_association.md
│   │   │   │   │   │   │   │   ├── batch_delete_inst.md
│   │   │   │   │   │   │   │   ├── batch_delete_set.md
│   │   │   │   │   │   │   │   ├── batch_update_inst.md
│   │   │   │   │   │   │   │   ├── bind_process_module.md
│   │   │   │   │   │   │   │   ├── bind_role_privilege.md
│   │   │   │   │   │   │   │   ├── clone_host_property.md
│   │   │   │   │   │   │   │   ├── create_classification.md
│   │   │   │   │   │   │   │   ├── create_inst.md
│   │   │   │   │   │   │   │   ├── create_object.md
│   │   │   │   │   │   │   │   ├── create_object_attribute.md
│   │   │   │   │   │   │   │   ├── create_user_group.md
│   │   │   │   │   │   │   │   ├── delete_classification.md
│   │   │   │   │   │   │   │   ├── delete_host_lock.md
│   │   │   │   │   │   │   │   ├── delete_inst.md
│   │   │   │   │   │   │   │   ├── delete_instance_association.md
│   │   │   │   │   │   │   │   ├── delete_object.md
│   │   │   │   │   │   │   │   ├── delete_object_attribute.md
│   │   │   │   │   │   │   │   ├── delete_process_module_bind.md
│   │   │   │   │   │   │   │   ├── delete_user_group.md
│   │   │   │   │   │   │   │   ├── find_host_by_module.md
│   │   │   │   │   │   │   │   ├── find_instance_association.md
│   │   │   │   │   │   │   │   ├── find_object_association.md
│   │   │   │   │   │   │   │   ├── get_biz_internal_module.md
│   │   │   │   │   │   │   │   ├── get_mainline_object_topo.md
│   │   │   │   │   │   │   │   ├── get_operation_log.md
│   │   │   │   │   │   │   │   ├── get_process_bind_module.md
│   │   │   │   │   │   │   │   ├── get_role_privilege.md
│   │   │   │   │   │   │   │   ├── get_user_privilege.md
│   │   │   │   │   │   │   │   ├── search_classifications.md
│   │   │   │   │   │   │   │   ├── search_group_privilege.md
│   │   │   │   │   │   │   │   ├── search_host_lock.md
│   │   │   │   │   │   │   │   ├── search_inst.md
│   │   │   │   │   │   │   │   ├── search_inst_association_topo.md
│   │   │   │   │   │   │   │   ├── search_object_attribute.md
│   │   │   │   │   │   │   │   ├── search_object_topo.md
│   │   │   │   │   │   │   │   ├── search_object_topo_graphics.md
│   │   │   │   │   │   │   │   ├── search_objects.md
│   │   │   │   │   │   │   │   ├── search_subscription.md
│   │   │   │   │   │   │   │   ├── search_user_group.md
│   │   │   │   │   │   │   │   ├── subscribe_event.md
│   │   │   │   │   │   │   │   ├── testing_connection.md
│   │   │   │   │   │   │   │   ├── transfer_sethost_to_idle_module.md
│   │   │   │   │   │   │   │   ├── unsubcribe_event.md
│   │   │   │   │   │   │   │   ├── update_business_enable_status.md
│   │   │   │   │   │   │   │   ├── update_classification.md
│   │   │   │   │   │   │   │   ├── update_event_subscribe.md
│   │   │   │   │   │   │   │   ├── update_inst.md
│   │   │   │   │   │   │   │   ├── update_object.md
│   │   │   │   │   │   │   │   ├── update_object_attribute.md
│   │   │   │   │   │   │   │   ├── update_object_topo_graphics.md
│   │   │   │   │   │   │   │   └── update_user_group.md
│   │   │   │   │   │   │   └── zh_hans/
│   │   │   │   │   │   │       ├── add_host_lock.md
│   │   │   │   │   │   │       ├── add_instance_association.md
│   │   │   │   │   │   │       ├── batch_delete_inst.md
│   │   │   │   │   │   │       ├── batch_delete_set.md
│   │   │   │   │   │   │       ├── batch_update_inst.md
│   │   │   │   │   │   │       ├── bind_process_module.md
│   │   │   │   │   │   │       ├── bind_role_privilege.md
│   │   │   │   │   │   │       ├── clone_host_property.md
│   │   │   │   │   │   │       ├── create_classification.md
│   │   │   │   │   │   │       ├── create_inst.md
│   │   │   │   │   │   │       ├── create_object.md
│   │   │   │   │   │   │       ├── create_object_attribute.md
│   │   │   │   │   │   │       ├── create_user_group.md
│   │   │   │   │   │   │       ├── delete_classification.md
│   │   │   │   │   │   │       ├── delete_host_lock.md
│   │   │   │   │   │   │       ├── delete_inst.md
│   │   │   │   │   │   │       ├── delete_instance_association.md
│   │   │   │   │   │   │       ├── delete_object.md
│   │   │   │   │   │   │       ├── delete_object_attribute.md
│   │   │   │   │   │   │       ├── delete_process_module_bind.md
│   │   │   │   │   │   │       ├── delete_user_group.md
│   │   │   │   │   │   │       ├── find_host_by_module.md
│   │   │   │   │   │   │       ├── find_instance_association.md
│   │   │   │   │   │   │       ├── find_object_association.md
│   │   │   │   │   │   │       ├── get_biz_internal_module.md
│   │   │   │   │   │   │       ├── get_mainline_object_topo.md
│   │   │   │   │   │   │       ├── get_operation_log.md
│   │   │   │   │   │   │       ├── get_process_bind_module.md
│   │   │   │   │   │   │       ├── get_role_privilege.md
│   │   │   │   │   │   │       ├── get_user_privilege.md
│   │   │   │   │   │   │       ├── search_classifications.md
│   │   │   │   │   │   │       ├── search_group_privilege.md
│   │   │   │   │   │   │       ├── search_host_lock.md
│   │   │   │   │   │   │       ├── search_inst.md
│   │   │   │   │   │   │       ├── search_inst_association_topo.md
│   │   │   │   │   │   │       ├── search_object_attribute.md
│   │   │   │   │   │   │       ├── search_object_topo.md
│   │   │   │   │   │   │       ├── search_object_topo_graphics.md
│   │   │   │   │   │   │       ├── search_objects.md
│   │   │   │   │   │   │       ├── search_subscription.md
│   │   │   │   │   │   │       ├── search_user_group.md
│   │   │   │   │   │   │       ├── subscribe_event.md
│   │   │   │   │   │   │       ├── testing_connection.md
│   │   │   │   │   │   │       ├── transfer_sethost_to_idle_module.md
│   │   │   │   │   │   │       ├── unsubcribe_event.md
│   │   │   │   │   │   │       ├── update_business_enable_status.md
│   │   │   │   │   │   │       ├── update_classification.md
│   │   │   │   │   │   │       ├── update_event_subscribe.md
│   │   │   │   │   │   │       ├── update_inst.md
│   │   │   │   │   │   │       ├── update_object.md
│   │   │   │   │   │   │       ├── update_object_attribute.md
│   │   │   │   │   │   │       ├── update_object_topo_graphics.md
│   │   │   │   │   │   │       └── update_user_group.md
│   │   │   │   │   │   └── cc.yaml
│   │   │   │   │   └── sops/
│   │   │   │   │       ├── apidocs/
│   │   │   │   │       │   ├── en/
│   │   │   │   │       │   │   ├── create_periodic_task.md
│   │   │   │   │       │   │   ├── create_task.md
│   │   │   │   │       │   │   ├── get_periodic_task_info.md
│   │   │   │   │       │   │   ├── get_periodic_task_list.md
│   │   │   │   │       │   │   ├── get_task_detail.md
│   │   │   │   │       │   │   ├── get_task_node_detail.md
│   │   │   │   │       │   │   ├── get_task_status.md
│   │   │   │   │       │   │   ├── get_template_info.md
│   │   │   │   │       │   │   ├── get_template_list.md
│   │   │   │   │       │   │   ├── import_common_template.md
│   │   │   │   │       │   │   ├── modify_constants_for_periodic_task.md
│   │   │   │   │       │   │   ├── modify_cron_for_periodic_task.md
│   │   │   │   │       │   │   ├── node_callback.md
│   │   │   │   │       │   │   ├── operate_task.md
│   │   │   │   │       │   │   ├── query_task_count.md
│   │   │   │   │       │   │   ├── set_periodic_task_enabled.md
│   │   │   │   │       │   │   └── start_task.md
│   │   │   │   │       │   └── zh_hans/
│   │   │   │   │       │       ├── create_periodic_task.md
│   │   │   │   │       │       ├── create_task.md
│   │   │   │   │       │       ├── get_periodic_task_info.md
│   │   │   │   │       │       ├── get_periodic_task_list.md
│   │   │   │   │       │       ├── get_task_detail.md
│   │   │   │   │       │       ├── get_task_node_detail.md
│   │   │   │   │       │       ├── get_task_status.md
│   │   │   │   │       │       ├── get_template_info.md
│   │   │   │   │       │       ├── get_template_list.md
│   │   │   │   │       │       ├── import_common_template.md
│   │   │   │   │       │       ├── modify_constants_for_periodic_task.md
│   │   │   │   │       │       ├── modify_cron_for_periodic_task.md
│   │   │   │   │       │       ├── node_callback.md
│   │   │   │   │       │       ├── operate_task.md
│   │   │   │   │       │       ├── query_task_count.md
│   │   │   │   │       │       ├── set_periodic_task_enabled.md
│   │   │   │   │       │       └── start_task.md
│   │   │   │   │       └── sops.yaml
│   │   │   │   ├── esb_conf.py
│   │   │   │   ├── generic/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── apis/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── apm/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_app_service_group.py
│   │   │   │   │   │   │   ├── get_delay_of_service.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_service_check_alert_for_prom.py
│   │   │   │   │   │   │   ├── get_service_check_metric_apm.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── post_service_check_for_app_apm.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── auto/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── bastion/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_cache_token.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_network_proxy.py
│   │   │   │   │   │   │   ├── keep_strategy_bastion.py
│   │   │   │   │   │   │   ├── resource_from_control.py
│   │   │   │   │   │   │   ├── sync_rbac_user_group.py
│   │   │   │   │   │   │   ├── sync_user_group.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       └── configs.py
│   │   │   │   │   │   ├── cmdb/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── check_model_data_operation.py
│   │   │   │   │   │   │   ├── delete_business.py
│   │   │   │   │   │   │   ├── delete_import_inst.py
│   │   │   │   │   │   │   ├── encrypt_text.py
│   │   │   │   │   │   │   ├── get-all-business.py
│   │   │   │   │   │   │   ├── get_agent_by_business_code.py
│   │   │   │   │   │   │   ├── get_ali_regin_list.py
│   │   │   │   │   │   │   ├── get_all_business.py
│   │   │   │   │   │   │   ├── get_all_host.py
│   │   │   │   │   │   │   ├── get_all_host_info_for_panel.py
│   │   │   │   │   │   │   ├── get_all_host_v2.py
│   │   │   │   │   │   │   ├── get_application_screen_info.py
│   │   │   │   │   │   │   ├── get_application_screen_info_v2.py
│   │   │   │   │   │   │   ├── get_business_tree.py
│   │   │   │   │   │   │   ├── get_cmdb_data_by_model_code.py
│   │   │   │   │   │   │   ├── get_cmdb_data_by_model_code_v2.py
│   │   │   │   │   │   │   ├── get_cmdb_data_for_work_order.py
│   │   │   │   │   │   │   ├── get_cmdb_model_tree.py
│   │   │   │   │   │   │   ├── get_host_by_instance.py
│   │   │   │   │   │   │   ├── get_import_inst.py
│   │   │   │   │   │   │   ├── get_import_model_tree.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_info_for_workbench_v2.py
│   │   │   │   │   │   │   ├── get_inst_by_business_code.py
│   │   │   │   │   │   │   ├── get_inst_by_rel_data.py
│   │   │   │   │   │   │   ├── get_inst_link_tree.py
│   │   │   │   │   │   │   ├── get_inst_tree.py
│   │   │   │   │   │   │   ├── get_link_inst.py
│   │   │   │   │   │   │   ├── get_link_model_count.py
│   │   │   │   │   │   │   ├── get_link_model_data.py
│   │   │   │   │   │   │   ├── get_link_model_data_v2.py
│   │   │   │   │   │   │   ├── get_model_by_model_group.py
│   │   │   │   │   │   │   ├── get_model_field.py
│   │   │   │   │   │   │   ├── get_model_group.py
│   │   │   │   │   │   │   ├── get_model_instance.py
│   │   │   │   │   │   │   ├── get_tencent_regin_list.py
│   │   │   │   │   │   │   ├── get_upload_file.py
│   │   │   │   │   │   │   ├── get_zc_model.py
│   │   │   │   │   │   │   ├── get_zc_model_v2.py
│   │   │   │   │   │   │   ├── import_grains_from_control.py
│   │   │   │   │   │   │   ├── import_grains_from_control_v2.py
│   │   │   │   │   │   │   ├── import_inst.py
│   │   │   │   │   │   │   ├── import_network_from_control.py
│   │   │   │   │   │   │   ├── import_server_from_control.py
│   │   │   │   │   │   │   ├── import_server_from_control_v2.py
│   │   │   │   │   │   │   ├── keep_strategy_cmdb.py
│   │   │   │   │   │   │   ├── model_data_create.py
│   │   │   │   │   │   │   ├── model_data_delete.py
│   │   │   │   │   │   │   ├── model_data_get.py
│   │   │   │   │   │   │   ├── model_data_update.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── post_ali_inst_info.py
│   │   │   │   │   │   │   ├── post_ali_regin_list.py
│   │   │   │   │   │   │   ├── post_check_collect_task.py
│   │   │   │   │   │   │   ├── post_import_inst.py
│   │   │   │   │   │   │   ├── post_tencent_inst_info.py
│   │   │   │   │   │   │   ├── post_tencent_regin_list.py
│   │   │   │   │   │   │   ├── put_model_group.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   ├── update_agent_state.py
│   │   │   │   │   │   │   ├── update_agent_state_v2.py
│   │   │   │   │   │   │   ├── update_all_business.py
│   │   │   │   │   │   │   ├── update_all_cloud_host.py
│   │   │   │   │   │   │   ├── update_all_private_host.py
│   │   │   │   │   │   │   ├── update_cmp_resource.py
│   │   │   │   │   │   │   ├── update_k8s_cluster.py
│   │   │   │   │   │   │   ├── update_k8s_resource.py
│   │   │   │   │   │   │   └── update_link_inst.py
│   │   │   │   │   │   ├── cmp/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── check_user_resource_quota.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── get_all_cloud_host.py
│   │   │   │   │   │   │   ├── get_all_private_host.py
│   │   │   │   │   │   │   ├── get_cmp_resource.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_support_cloud_vendor_resource.py
│   │   │   │   │   │   │   ├── post_cloud_vendor_resource_parameters.py
│   │   │   │   │   │   │   ├── post_support_resource.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── code/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── app_related_projects.py
│   │   │   │   │   │   │   ├── app_unrelated_projects.py
│   │   │   │   │   │   │   ├── create_gitlab_user.py
│   │   │   │   │   │   │   ├── gitlab_repository_url.py
│   │   │   │   │   │   │   ├── relate_project.py
│   │   │   │   │   │   │   ├── sync_devops_application.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   └── unrelate_project.py
│   │   │   │   │   │   ├── control/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── event_type_count.py
│   │   │   │   │   │   │   ├── get_agent_file_stats.py
│   │   │   │   │   │   │   ├── get_agent_group_list.py
│   │   │   │   │   │   │   ├── get_agent_info_by_group.py
│   │   │   │   │   │   │   ├── get_agent_net_work.py
│   │   │   │   │   │   │   ├── get_agent_ps_info.py
│   │   │   │   │   │   │   ├── get_alarm_rank.py
│   │   │   │   │   │   │   ├── get_all_host_group.py
│   │   │   │   │   │   │   ├── get_all_host_group_prom.py
│   │   │   │   │   │   │   ├── get_all_network_group.py
│   │   │   │   │   │   │   ├── get_all_zabbix_agent.py
│   │   │   │   │   │   │   ├── get_asset_collect.py
│   │   │   │   │   │   │   ├── get_control_agent_info.py
│   │   │   │   │   │   │   ├── get_controller.py
│   │   │   │   │   │   │   ├── get_controller_for_panel.py
│   │   │   │   │   │   │   ├── get_controller_proxy.py
│   │   │   │   │   │   │   ├── get_grafana_server.py
│   │   │   │   │   │   │   ├── get_history_event_count.py
│   │   │   │   │   │   │   ├── get_host_info_for_develop.py
│   │   │   │   │   │   │   ├── get_host_info_for_monitor.py
│   │   │   │   │   │   │   ├── get_host_info_for_prom.py
│   │   │   │   │   │   │   ├── get_host_list.py
│   │   │   │   │   │   │   ├── get_info_for_monitor_workbench.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_manual_add_agent.py
│   │   │   │   │   │   │   ├── get_metric_install_package_log_to_prom.py
│   │   │   │   │   │   │   ├── get_minion_file.py
│   │   │   │   │   │   │   ├── get_monitor_alert_info.py
│   │   │   │   │   │   │   ├── get_monitor_resource_info.py
│   │   │   │   │   │   │   ├── get_network_info_for_monitor.py
│   │   │   │   │   │   │   ├── get_prom_alert_info.py
│   │   │   │   │   │   │   ├── get_prom_alertmanager_alerts.py
│   │   │   │   │   │   │   ├── get_prom_alertmanager_alerts_groups.py
│   │   │   │   │   │   │   ├── get_prom_alertmanager_silence.py
│   │   │   │   │   │   │   ├── get_prom_metadata.py
│   │   │   │   │   │   │   ├── get_prom_rule_info.py
│   │   │   │   │   │   │   ├── get_request_id_status.py
│   │   │   │   │   │   │   ├── get_send_file_v2_request_id_status.py
│   │   │   │   │   │   │   ├── get_status_playbook_record.py
│   │   │   │   │   │   │   ├── get_zabbix_server_list.py
│   │   │   │   │   │   │   ├── get_zabbix_template.py
│   │   │   │   │   │   │   ├── get_zabbix_template_list.py
│   │   │   │   │   │   │   ├── host_admin_from_group_to_job.py
│   │   │   │   │   │   │   ├── host_group_to_job.py
│   │   │   │   │   │   │   ├── host_monitor_type_count.py
│   │   │   │   │   │   │   ├── host_problem_info.py
│   │   │   │   │   │   │   ├── monitor_event_acknowledge.py
│   │   │   │   │   │   │   ├── monitor_event_info.py
│   │   │   │   │   │   │   ├── monitor_host_count.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── post_file.py
│   │   │   │   │   │   │   ├── post_func.py
│   │   │   │   │   │   │   ├── post_metric_collect_to_prom.py
│   │   │   │   │   │   │   ├── post_metric_expr_get_value.py
│   │   │   │   │   │   │   ├── post_metric_inst_status_to_prom.py
│   │   │   │   │   │   │   ├── post_metric_install_package_to_prom.py
│   │   │   │   │   │   │   ├── post_metric_register_prom_to_prom.py
│   │   │   │   │   │   │   ├── post_metric_send_package_to_prom.py
│   │   │   │   │   │   │   ├── post_new_prom_info.py
│   │   │   │   │   │   │   ├── post_new_zabbix_info.py
│   │   │   │   │   │   │   ├── post_prom_tree_to_prom.py
│   │   │   │   │   │   │   ├── post_script.py
│   │   │   │   │   │   │   ├── post_script_v2.py
│   │   │   │   │   │   │   ├── post_send_file_v2.py
│   │   │   │   │   │   │   ├── post_shell.py
│   │   │   │   │   │   │   ├── post_status_playbook_delete.py
│   │   │   │   │   │   │   ├── post_status_playbook_run.py
│   │   │   │   │   │   │   ├── post_status_playbook_update.py
│   │   │   │   │   │   │   ├── problem_info.py
│   │   │   │   │   │   │   ├── prom_alertmanager_config_reload.py
│   │   │   │   │   │   │   ├── prom_alertmanager_create_alert.py
│   │   │   │   │   │   │   ├── prom_alertmanager_create_or_update.py
│   │   │   │   │   │   │   ├── prom_alertmanager_create_or_update_silence.py
│   │   │   │   │   │   │   ├── prom_alertmanager_delete_silence.py
│   │   │   │   │   │   │   ├── prom_config_reload.py
│   │   │   │   │   │   │   ├── prom_rules_create_or_update.py
│   │   │   │   │   │   │   ├── prom_rules_delete.py
│   │   │   │   │   │   │   ├── prom_rules_query_syntax_check.py
│   │   │   │   │   │   │   ├── prom_run_query.py
│   │   │   │   │   │   │   ├── prom_server_check_create_or_update.py
│   │   │   │   │   │   │   ├── prom_server_check_delete.py
│   │   │   │   │   │   │   ├── receive_action_info.py
│   │   │   │   │   │   │   ├── search_application.py
│   │   │   │   │   │   │   ├── search_host.py
│   │   │   │   │   │   │   ├── search_host_group.py
│   │   │   │   │   │   │   ├── search_trigger.py
│   │   │   │   │   │   │   ├── send_message_from_monitor.py
│   │   │   │   │   │   │   ├── stackstorm.py
│   │   │   │   │   │   │   ├── stop_or_start_monitor.py
│   │   │   │   │   │   │   ├── subnet_scan_ip_port.py
│   │   │   │   │   │   │   ├── subnet_scan_ip_port_result.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   └── update_host_sign_variable_template.py
│   │   │   │   │   │   ├── dashboard/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── deploy/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── deploy_step.py
│   │   │   │   │   │   │   ├── deploy_task.py
│   │   │   │   │   │   │   ├── deploy_task_cancel.py
│   │   │   │   │   │   │   ├── deploy_task_clone.py
│   │   │   │   │   │   │   ├── deploy_task_create.py
│   │   │   │   │   │   │   ├── deploy_task_delete.py
│   │   │   │   │   │   │   ├── deploy_task_log.py
│   │   │   │   │   │   │   ├── deploy_task_run.py
│   │   │   │   │   │   │   ├── deploy_task_update.py
│   │   │   │   │   │   │   ├── deploy_template.py
│   │   │   │   │   │   │   ├── deploy_template_group.py
│   │   │   │   │   │   │   ├── get_deploy_task.py
│   │   │   │   │   │   │   ├── get_home_page.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── run_deploy_task_rollback.py
│   │   │   │   │   │   │   ├── run_deploy_task_v3.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   └── upload_script.py
│   │   │   │   │   │   ├── devops/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── application_user_role.py
│   │   │   │   │   │   │   ├── business_application.py
│   │   │   │   │   │   │   ├── business_tree.py
│   │   │   │   │   │   │   ├── business_tree_old.py
│   │   │   │   │   │   │   ├── create_application.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── get_applications.py
│   │   │   │   │   │   │   ├── get_auth_application_host_to_job.py
│   │   │   │   │   │   │   ├── get_auth_application_tree_to_job.py
│   │   │   │   │   │   │   ├── get_business_auth_count.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_test.py
│   │   │   │   │   │   │   ├── git_project.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── nexus_project.py
│   │   │   │   │   │   │   ├── run_deploy_v3.py
│   │   │   │   │   │   │   ├── run_pipeline_v3.py
│   │   │   │   │   │   │   ├── sync_stackstorm_from_control.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── event/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── keep_strategy_event.py
│   │   │   │   │   │   │   ├── sync_stackstorm_from_control.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── job/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_run_result_by_log_id.py
│   │   │   │   │   │   │   ├── get_tool_market_list.py
│   │   │   │   │   │   │   ├── run_job_by_id.py
│   │   │   │   │   │   │   ├── run_script_by_id.py
│   │   │   │   │   │   │   ├── run_script_by_script.py
│   │   │   │   │   │   │   ├── run_task_by_id.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── k8s/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_k8s_cluster.py
│   │   │   │   │   │   │   ├── get_k8s_resource_v2.py
│   │   │   │   │   │   │   ├── get_support_resource.py
│   │   │   │   │   │   │   ├── get_support_resource_fields.py
│   │   │   │   │   │   │   ├── post_apply_resource.py
│   │   │   │   │   │   │   ├── sync_es_from_control.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── kbase/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── llmops/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── log/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── sync_es_from_control.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── monitor/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_service_check_from_monitor.py
│   │   │   │   │   │   │   ├── get_service_check_monitor_by_application.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── pipeline/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── build_abort.py
│   │   │   │   │   │   │   ├── build_delete.py
│   │   │   │   │   │   │   ├── build_proceed.py
│   │   │   │   │   │   │   ├── build_start.py
│   │   │   │   │   │   │   ├── build_stop.py
│   │   │   │   │   │   │   ├── get_all_job.py
│   │   │   │   │   │   │   ├── get_gitlab_all_projects.py
│   │   │   │   │   │   │   ├── get_home_page.py
│   │   │   │   │   │   │   ├── get_job_build_info.py
│   │   │   │   │   │   │   ├── get_job_building_queue.py
│   │   │   │   │   │   │   ├── get_job_pipeline_tool.py
│   │   │   │   │   │   │   ├── get_job_pipeline_tool_post.py
│   │   │   │   │   │   │   ├── get_job_reconfig_parameter.py
│   │   │   │   │   │   │   ├── get_job_reconfig_script.py
│   │   │   │   │   │   │   ├── get_job_reconfig_triggers.py
│   │   │   │   │   │   │   ├── get_job_rename.py
│   │   │   │   │   │   │   ├── get_job_v2.py
│   │   │   │   │   │   │   ├── get_job_v2_build.py
│   │   │   │   │   │   │   ├── get_job_v2_detail.py
│   │   │   │   │   │   │   ├── get_pipeline_jenkins_job.py
│   │   │   │   │   │   │   ├── get_pipeline_template_group.py
│   │   │   │   │   │   │   ├── job_create.py
│   │   │   │   │   │   │   ├── job_delete.py
│   │   │   │   │   │   │   ├── put_job_reconfig_parameter.py
│   │   │   │   │   │   │   ├── put_job_reconfig_script.py
│   │   │   │   │   │   │   ├── put_job_rename.py
│   │   │   │   │   │   │   ├── run_pipeline_task_rollback.py
│   │   │   │   │   │   │   ├── run_pipeline_task_v3.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── prom/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_service_check_metric.py
│   │   │   │   │   │   │   ├── keep_strategy_prom.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── post_inst_monitor_for_app.py
│   │   │   │   │   │   │   ├── post_metric_inst.py
│   │   │   │   │   │   │   ├── post_service_check_for_app.py
│   │   │   │   │   │   │   ├── pull_app_auth.py
│   │   │   │   │   │   │   ├── service_check_export.py
│   │   │   │   │   │   │   ├── service_check_import.py
│   │   │   │   │   │   │   ├── service_check_import_template.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   └── update_service_check_for_app.py
│   │   │   │   │   │   ├── rbac/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── check_google_verify_code.py
│   │   │   │   │   │   │   ├── create_google_secret_for_user.py
│   │   │   │   │   │   │   ├── get_all_department_user_tree.py
│   │   │   │   │   │   │   ├── get_all_user.py
│   │   │   │   │   │   │   ├── get_auth_config.py
│   │   │   │   │   │   │   ├── get_auth_platform.py
│   │   │   │   │   │   │   ├── get_copyright_config.py
│   │   │   │   │   │   │   ├── get_dep_v2_to_cmdb.py
│   │   │   │   │   │   │   ├── get_department_user_tree.py
│   │   │   │   │   │   │   ├── get_user_auth_api.py
│   │   │   │   │   │   │   ├── get_user_google_auth_status.py
│   │   │   │   │   │   │   ├── get_user_group_sync.py
│   │   │   │   │   │   │   ├── get_user_rbac_auth_config.py
│   │   │   │   │   │   │   ├── get_user_update_info.py
│   │   │   │   │   │   │   ├── get_user_v2_to_cmdb.py
│   │   │   │   │   │   │   ├── get_workorder_sync.py
│   │   │   │   │   │   │   ├── get_wx_work_config.py
│   │   │   │   │   │   │   ├── modify_user_google_auth_status.py
│   │   │   │   │   │   │   ├── post_login_log.py
│   │   │   │   │   │   │   ├── post_menu_privilege.py
│   │   │   │   │   │   │   ├── post_menu_tree.py
│   │   │   │   │   │   │   ├── post_menu_verification.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   ├── update_user_info.py
│   │   │   │   │   │   │   └── user_auth.py
│   │   │   │   │   │   ├── repo/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── delete_nexus_repository.py
│   │   │   │   │   │   │   ├── delete_nexus_repository_component.py
│   │   │   │   │   │   │   ├── get_home_page.py
│   │   │   │   │   │   │   ├── get_nexus_repository.py
│   │   │   │   │   │   │   ├── get_nexus_repository_component.py
│   │   │   │   │   │   │   ├── get_nexus_repository_component_asset.py
│   │   │   │   │   │   │   ├── get_nexus_repository_component_tree.py
│   │   │   │   │   │   │   ├── get_nexus_repository_component_tree_v2.py
│   │   │   │   │   │   │   ├── get_nexus_repository_component_v2.py
│   │   │   │   │   │   │   ├── get_nexus_repository_format.py
│   │   │   │   │   │   │   ├── get_nexus_repository_guide.py
│   │   │   │   │   │   │   ├── get_nexus_search_component.py
│   │   │   │   │   │   │   ├── get_repo.py
│   │   │   │   │   │   │   ├── get_repository_pagination.py
│   │   │   │   │   │   │   ├── post_clone_project.py
│   │   │   │   │   │   │   ├── post_nexus_project.py
│   │   │   │   │   │   │   ├── post_nexus_repository.py
│   │   │   │   │   │   │   ├── post_nexus_repository_component_upload.py
│   │   │   │   │   │   │   ├── post_nexus_repository_guide.py
│   │   │   │   │   │   │   ├── put_repo.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── task/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── run_task_by_id.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   └── workbench/
│   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │       ├── bind_google_auth.py
│   │   │   │   │   │       ├── get_google_auth.py
│   │   │   │   │   │       ├── get_info_for_workbench.py
│   │   │   │   │   │       ├── get_language_theme_config.py
│   │   │   │   │   │       ├── get_message_info.py
│   │   │   │   │   │       ├── get_nav_and_colleciton.py
│   │   │   │   │   │       ├── get_read_all_message.py
│   │   │   │   │   │       ├── get_robot_list.py
│   │   │   │   │   │       ├── get_sync_data.py
│   │   │   │   │   │       ├── get_user_info_from_workbench.py
│   │   │   │   │   │       ├── get_user_ssh_key.py
│   │   │   │   │   │       ├── get_work_order_event.py
│   │   │   │   │   │       ├── get_work_order_inst.py
│   │   │   │   │   │       ├── get_work_order_screen.py
│   │   │   │   │   │       ├── guide.py
│   │   │   │   │   │       ├── monitor_to_screen_api.py
│   │   │   │   │   │       ├── post_collection.py
│   │   │   │   │   │       ├── post_info_to_user.py
│   │   │   │   │   │       ├── post_security_config.py
│   │   │   │   │   │       ├── send_mail.py
│   │   │   │   │   │       ├── send_report.py
│   │   │   │   │   │       ├── send_robot.py
│   │   │   │   │   │       ├── sync_order_user_message.py
│   │   │   │   │   │       ├── toolkit/
│   │   │   │   │   │       │   ├── __init__.py
│   │   │   │   │   │       │   ├── configs.py
│   │   │   │   │   │       │   └── tools.py
│   │   │   │   │   │       └── work_order_submit.py
│   │   │   │   │   └── templates/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       ├── cmsi/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── apidoc/
│   │   │   │   │       │   │   ├── send_mail.js
│   │   │   │   │       │   │   ├── send_mp_weixin.js
│   │   │   │   │       │   │   ├── send_qy_weixin.js
│   │   │   │   │       │   │   ├── send_sms.js
│   │   │   │   │       │   │   ├── send_voice_msg.js
│   │   │   │   │       │   │   └── send_weixin.js
│   │   │   │   │       │   ├── apidocs/
│   │   │   │   │       │   │   ├── en/
│   │   │   │   │       │   │   │   ├── get_msg_type.md
│   │   │   │   │       │   │   │   └── send_msg.md
│   │   │   │   │       │   │   └── zh_hans/
│   │   │   │   │       │   │       ├── get_msg_type.md
│   │   │   │   │       │   │       └── send_msg.md
│   │   │   │   │       │   ├── get_msg_type.py
│   │   │   │   │       │   ├── send_mail.py
│   │   │   │   │       │   ├── send_mp_weixin.py
│   │   │   │   │       │   ├── send_msg.py
│   │   │   │   │       │   ├── send_qy_weixin.py
│   │   │   │   │       │   ├── send_sms.py
│   │   │   │   │       │   ├── send_voice_msg.py
│   │   │   │   │       │   ├── send_weixin.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       ├── send_mail_with_smtp.py
│   │   │   │   │       │       ├── test_send_mail_with_smtp.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── conf.py
│   │   │   │   │       ├── heartbeat/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── detect.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       └── configs.py
│   │   │   │   │       ├── qcloud_sms/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── send_multi_sms.py
│   │   │   │   │       │   ├── send_multi_sms_with_tpl.py
│   │   │   │   │       │   ├── send_sms.py
│   │   │   │   │       │   ├── send_sms_with_tpl.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── qcloud_voice/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── send_voice_msg.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── weixin/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── get_token.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── weixin_mp/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── get_token.py
│   │   │   │   │       │   ├── send_msg_with_tpl.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       └── weixin_qy/
│   │   │   │   │           ├── __init__.py
│   │   │   │   │           ├── get_token.py
│   │   │   │   │           ├── get_user.py
│   │   │   │   │           ├── send_message.py
│   │   │   │   │           └── toolkit/
│   │   │   │   │               ├── __init__.py
│   │   │   │   │               ├── configs.py
│   │   │   │   │               └── tools.py
│   │   │   │   └── urls.py
│   │   │   ├── configs/
│   │   │   │   ├── __init__.py
│   │   │   │   └── default_template.py
│   │   │   ├── doc/
│   │   │   │   └── readme.md
│   │   │   ├── esb/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── apps.py
│   │   │   │   ├── bkapp/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── validators.py
│   │   │   │   ├── bkauth/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── models.py
│   │   │   │   │   └── validators.py
│   │   │   │   ├── bkcore/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── apps.py
│   │   │   │   │   └── models.py
│   │   │   │   ├── bkperm/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── validators.py
│   │   │   │   ├── channel/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base.py
│   │   │   │   │   └── confapis.py
│   │   │   │   ├── component/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base.py
│   │   │   │   │   └── buffet.py
│   │   │   │   ├── compperm/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── validators.py
│   │   │   │   ├── exdb/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── bkpaas.py
│   │   │   │   │   └── connections.py
│   │   │   │   ├── jinja2.py
│   │   │   │   ├── jinja2_esb.py
│   │   │   │   ├── management/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── commands/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── add_compperm_for_app.py
│   │   │   │   │   │   ├── check_service.py
│   │   │   │   │   │   ├── sync_api_docs.py
│   │   │   │   │   │   ├── sync_bk_sdk.py
│   │   │   │   │   │   ├── sync_data_at_deploy.py
│   │   │   │   │   │   ├── sync_function_controller.py
│   │   │   │   │   │   └── sync_system_and_channel_data.py
│   │   │   │   │   └── utils/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       ├── api_docs.py
│   │   │   │   │       ├── channel_tools.py
│   │   │   │   │       ├── component_tools.py
│   │   │   │   │       ├── conf_tools.py
│   │   │   │   │       ├── constants.py
│   │   │   │   │       └── ec_constants.py
│   │   │   │   ├── middlewares.py
│   │   │   │   ├── outgoing.py
│   │   │   │   ├── ratelimit/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── validators.py
│   │   │   │   ├── response.py
│   │   │   │   ├── routers.py
│   │   │   │   ├── utils/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base.py
│   │   │   │   │   ├── confapis.py
│   │   │   │   │   ├── config.py
│   │   │   │   │   └── func_ctrl.py
│   │   │   │   └── views.py
│   │   │   ├── healthz/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── checklist.txt
│   │   │   │   ├── errors.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   ├── views.py
│   │   │   │   └── views_check_codename.py
│   │   │   ├── lib/
│   │   │   │   ├── __init__.py
│   │   │   │   └── redis_rate_limit/
│   │   │   │       ├── __init__.py
│   │   │   │       └── ratelimit.py
│   │   │   ├── manage.py
│   │   │   ├── requirements.txt
│   │   │   ├── settings.py
│   │   │   ├── urls.py
│   │   │   └── wsgi.py
│   │   ├── examples/
│   │   │   ├── README.md
│   │   │   ├── build/
│   │   │   │   └── LICENSE_JSCSS_HEADER
│   │   │   ├── nginx_paas.conf
│   │   │   ├── settings/
│   │   │   │   ├── appengine/
│   │   │   │   │   └── settings.py
│   │   │   │   ├── esb/
│   │   │   │   │   └── default.py
│   │   │   │   ├── login/
│   │   │   │   │   └── settings_production.py
│   │   │   │   └── paas/
│   │   │   │       └── settings_production.py
│   │   │   └── supervisord.d/
│   │   │       ├── appengine.ini
│   │   │       ├── esb.ini
│   │   │       ├── login.ini
│   │   │       ├── paas.ini
│   │   │       ├── paasagent.ini
│   │   │       └── websocket.ini
│   │   ├── gulpfile.js
│   │   ├── login/
│   │   │   ├── .gitignore
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── bk_i18n/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── apps.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── middlewares.py
│   │   │   │   └── signal_receivers.py
│   │   │   ├── bkaccount/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── accounts.py
│   │   │   │   ├── backends.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── decorators.py
│   │   │   │   ├── encryption.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── geetest.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── middlewares.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_initial_user_data.py
│   │   │   │   │   ├── 0003_bktoken_inactive_expire_time.py
│   │   │   │   │   ├── 0004_auto_20170621_0929.py
│   │   │   │   │   ├── 0005_initial_role.py
│   │   │   │   │   ├── 0006_initial_bkuser_role.py
│   │   │   │   │   ├── 0007_userinfo.py
│   │   │   │   │   ├── 0008_auto_20171116_2026.py
│   │   │   │   │   ├── 0009_add_role_data.py
│   │   │   │   │   ├── 0010_alter_bkrole_code_alter_bkrole_id_and_more.py
│   │   │   │   │   ├── 0011_bktoken_auth_platform_bktoken_create_time_and_more.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── opsany_user_auth.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   ├── views.py
│   │   │   │   ├── views_api.py
│   │   │   │   └── views_api_v2.py
│   │   │   ├── common/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── context_processors.py
│   │   │   │   ├── exceptions.py
│   │   │   │   ├── http.py
│   │   │   │   ├── log.py
│   │   │   │   ├── mixins/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base.py
│   │   │   │   │   └── exempt.py
│   │   │   │   ├── responses.py
│   │   │   │   └── utils/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── basic.py
│   │   │   │       └── time.py
│   │   │   ├── conf/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── default.py
│   │   │   │   ├── settings_development.py.sample
│   │   │   │   ├── settings_production.py.sample
│   │   │   │   └── settings_testing.py.sample
│   │   │   ├── ee_login/
│   │   │   │   ├── __init__.py
│   │   │   │   └── settings_login.py
│   │   │   ├── ee_official_login/
│   │   │   │   ├── __init__.py
│   │   │   │   └── oauth/
│   │   │   │       ├── __init__.py
│   │   │   │       └── google/
│   │   │   │           ├── __init__.py
│   │   │   │           ├── backends.py
│   │   │   │           ├── settings.py
│   │   │   │           ├── utils.py
│   │   │   │           └── views.py
│   │   │   ├── frontend/
│   │   │   │   ├── .eslintrc-auto-import.json
│   │   │   │   ├── .gitignore
│   │   │   │   ├── .prettierrc
│   │   │   │   ├── README.md
│   │   │   │   ├── index.html
│   │   │   │   ├── package.json
│   │   │   │   ├── src/
│   │   │   │   │   ├── App.vue
│   │   │   │   │   ├── api/
│   │   │   │   │   │   └── login.js
│   │   │   │   │   ├── components/
│   │   │   │   │   │   └── SlideVerifyModal/
│   │   │   │   │   │       └── index.vue
│   │   │   │   │   ├── config/
│   │   │   │   │   │   └── defaultSetting.js
│   │   │   │   │   ├── hooks/
│   │   │   │   │   │   └── useI18nCookie.js
│   │   │   │   │   ├── locales/
│   │   │   │   │   │   ├── en.js
│   │   │   │   │   │   ├── index.js
│   │   │   │   │   │   ├── zh-CN.js
│   │   │   │   │   │   └── zh-TW.js
│   │   │   │   │   ├── main.js
│   │   │   │   │   ├── plugins/
│   │   │   │   │   │   └── i18n.js
│   │   │   │   │   ├── style.css
│   │   │   │   │   ├── utils/
│   │   │   │   │   │   ├── request.js
│   │   │   │   │   │   └── util.js
│   │   │   │   │   └── view/
│   │   │   │   │       └── login/
│   │   │   │   │           ├── components/
│   │   │   │   │           │   ├── AD.vue
│   │   │   │   │           │   ├── BindMfa.vue
│   │   │   │   │           │   ├── DingTalk.vue
│   │   │   │   │           │   ├── Feishu.vue
│   │   │   │   │           │   ├── IAM.vue
│   │   │   │   │           │   ├── IDaaS.vue
│   │   │   │   │           │   ├── LDAP.vue
│   │   │   │   │           │   ├── OAuth.vue
│   │   │   │   │           │   ├── Password.vue
│   │   │   │   │           │   ├── QYWX.vue
│   │   │   │   │           │   ├── SSO.vue
│   │   │   │   │           │   └── ValiMfa.vue
│   │   │   │   │           └── login.vue
│   │   │   │   └── vite.config.js
│   │   │   ├── healthz/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── urls.py
│   │   │   │   └── views.py
│   │   │   ├── init_admin.py
│   │   │   ├── init_admin_mfa.py
│   │   │   ├── locale/
│   │   │   │   ├── en/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── django.po
│   │   │   │   │       └── djangojs.po
│   │   │   │   └── zh_Hans/
│   │   │   │       └── LC_MESSAGES/
│   │   │   │           ├── django.po
│   │   │   │           └── djangojs.po
│   │   │   ├── login/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── login_views.py
│   │   │   │   ├── return_message.py
│   │   │   │   └── status_code.py
│   │   │   ├── manage.py
│   │   │   ├── requirements.txt
│   │   │   ├── settings.py
│   │   │   ├── static/
│   │   │   │   ├── assets/
│   │   │   │   │   ├── bk-icon-2.0/
│   │   │   │   │   │   ├── iconfont.css
│   │   │   │   │   │   └── iconfont.json
│   │   │   │   │   ├── bkDialog-1.0/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   └── ui-dialog.css
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       └── dialog.js
│   │   │   │   │   ├── bootstrap-3.1.1/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   ├── bootstrap-overrides.css
│   │   │   │   │   │   │   ├── bootstrap-theme.css
│   │   │   │   │   │   │   ├── bootstrap.css
│   │   │   │   │   │   │   ├── bootstrap3.0.0.css
│   │   │   │   │   │   │   ├── button.css
│   │   │   │   │   │   │   ├── docs.css
│   │   │   │   │   │   │   └── extend.css
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       ├── bootstrap.js
│   │   │   │   │   │       └── html5shiv.js
│   │   │   │   │   ├── gt.js
│   │   │   │   │   └── select2-3.5.2/
│   │   │   │   │       ├── .gitignore
│   │   │   │   │       ├── CONTRIBUTING.md
│   │   │   │   │       ├── LICENSE
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── bower.json
│   │   │   │   │       ├── component.json
│   │   │   │   │       ├── composer.json
│   │   │   │   │       ├── release.sh
│   │   │   │   │       ├── select2-2.0.css
│   │   │   │   │       ├── select2-2.0.scss
│   │   │   │   │       ├── select2-bootstrap.css
│   │   │   │   │       ├── select2.css
│   │   │   │   │       ├── select2.jquery.json
│   │   │   │   │       ├── select2.js
│   │   │   │   │       ├── select2_locale_ar.js
│   │   │   │   │       ├── select2_locale_az.js
│   │   │   │   │       ├── select2_locale_bg.js
│   │   │   │   │       ├── select2_locale_ca.js
│   │   │   │   │       ├── select2_locale_cs.js
│   │   │   │   │       ├── select2_locale_da.js
│   │   │   │   │       ├── select2_locale_de.js
│   │   │   │   │       ├── select2_locale_el.js
│   │   │   │   │       ├── select2_locale_en.js.template
│   │   │   │   │       ├── select2_locale_es.js
│   │   │   │   │       ├── select2_locale_et.js
│   │   │   │   │       ├── select2_locale_eu.js
│   │   │   │   │       ├── select2_locale_fa.js
│   │   │   │   │       ├── select2_locale_fi.js
│   │   │   │   │       ├── select2_locale_fr.js
│   │   │   │   │       ├── select2_locale_gl.js
│   │   │   │   │       ├── select2_locale_he.js
│   │   │   │   │       ├── select2_locale_hr.js
│   │   │   │   │       ├── select2_locale_hu.js
│   │   │   │   │       ├── select2_locale_id.js
│   │   │   │   │       ├── select2_locale_is.js
│   │   │   │   │       ├── select2_locale_it.js
│   │   │   │   │       ├── select2_locale_ja.js
│   │   │   │   │       ├── select2_locale_ka.js
│   │   │   │   │       ├── select2_locale_ko.js
│   │   │   │   │       ├── select2_locale_lt.js
│   │   │   │   │       ├── select2_locale_lv.js
│   │   │   │   │       ├── select2_locale_mk.js
│   │   │   │   │       ├── select2_locale_ms.js
│   │   │   │   │       ├── select2_locale_nb.js
│   │   │   │   │       ├── select2_locale_nl.js
│   │   │   │   │       ├── select2_locale_pl.js
│   │   │   │   │       ├── select2_locale_pt-BR.js
│   │   │   │   │       ├── select2_locale_pt-PT.js
│   │   │   │   │       ├── select2_locale_ro.js
│   │   │   │   │       ├── select2_locale_rs.js
│   │   │   │   │       ├── select2_locale_ru.js
│   │   │   │   │       ├── select2_locale_sk.js
│   │   │   │   │       ├── select2_locale_sv.js
│   │   │   │   │       ├── select2_locale_th.js
│   │   │   │   │       ├── select2_locale_tr.js
│   │   │   │   │       ├── select2_locale_ug-CN.js
│   │   │   │   │       ├── select2_locale_uk.js
│   │   │   │   │       ├── select2_locale_vi.js
│   │   │   │   │       ├── select2_locale_zh-CN.js
│   │   │   │   │       └── select2_locale_zh-TW.js
│   │   │   │   ├── bk_user_import.xls
│   │   │   │   ├── bk_user_import_en.xls
│   │   │   │   ├── css/
│   │   │   │   │   ├── base.css
│   │   │   │   │   ├── bk.css
│   │   │   │   │   ├── layout_head.css
│   │   │   │   │   ├── login.css
│   │   │   │   │   ├── login2106031748.min.css.bak
│   │   │   │   │   └── scss/
│   │   │   │   │       └── login.scss
│   │   │   │   ├── icon/
│   │   │   │   │   ├── home_page_picture.png.old
│   │   │   │   │   └── home_top_word.png.old
│   │   │   │   ├── img/
│   │   │   │   │   ├── bg_image.jpg.old
│   │   │   │   │   └── logo/
│   │   │   │   │       └── bk_login.png.old
│   │   │   │   ├── js/
│   │   │   │   │   ├── csrftoken.js
│   │   │   │   │   ├── language.js
│   │   │   │   │   ├── login.js
│   │   │   │   │   └── users.js
│   │   │   │   ├── modal/
│   │   │   │   │   ├── icon/
│   │   │   │   │   │   ├── iconfont.css
│   │   │   │   │   │   └── iconfont.js
│   │   │   │   │   └── modal.css
│   │   │   │   └── vite-static/
│   │   │   │       ├── @ant-design/
│   │   │   │       │   └── icons-vue-ym-L-X2r.js
│   │   │   │       ├── @vueuse/
│   │   │   │       │   ├── core-B6fUiQ3R.js
│   │   │   │       │   └── integrations-iJ2WoaAF.js
│   │   │   │       ├── axios-R-lXtGyY.js
│   │   │   │       ├── index-Bd2G45Id.js
│   │   │   │       ├── index-Cu90Cwu-.css
│   │   │   │       ├── index-DpYBPcyk.css
│   │   │   │       ├── index-lljDL13k.js
│   │   │   │       ├── less-sScrWPmR.js
│   │   │   │       └── lodash-CQd0-CO8.js
│   │   │   ├── templates/
│   │   │   │   ├── 401.html
│   │   │   │   ├── 403.html
│   │   │   │   ├── 404.html
│   │   │   │   ├── 500.html
│   │   │   │   ├── 50x.html
│   │   │   │   ├── bkaccount/
│   │   │   │   │   ├── base.html
│   │   │   │   │   ├── user_table.part
│   │   │   │   │   └── users.html
│   │   │   │   ├── csrf_failure.html
│   │   │   │   └── login/
│   │   │   │       ├── agreement.part
│   │   │   │       ├── login copy.html
│   │   │   │       ├── login.demo.html
│   │   │   │       ├── login.html
│   │   │   │       ├── login.html.copy
│   │   │   │       ├── login06031722.html.bak
│   │   │   │       ├── login_demo.html
│   │   │   │       └── login_juewei.html
│   │   │   ├── unlock_admin.py
│   │   │   ├── unlock_all_user.py
│   │   │   ├── urls.py
│   │   │   └── wsgi.py
│   │   ├── paas/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── VERSION
│   │   │   ├── __init__.py
│   │   │   ├── account/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── backends.py
│   │   │   │   ├── decorators.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── middlewares.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_initial_user_data.py
│   │   │   │   │   ├── 0003_bkuser_role.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── api/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── decorators.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── response.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── app/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── apps.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_auto_20160615_2036.py
│   │   │   │   │   ├── 0003_app_deploy_token.py
│   │   │   │   │   ├── 0004_auto_20160929_1101.py
│   │   │   │   │   ├── 0005_auto_20161017_1038.py
│   │   │   │   │   ├── 0006_app_is_saas.py
│   │   │   │   │   ├── 0007_auto_20161111_1348.py
│   │   │   │   │   ├── 0008_auto_20190124_1708.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── app_env/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_auto_20170821_1814.py
│   │   │   │   │   ├── 0003_auto_20170821_2127.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── bk_app/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_load_bkapps_intial_data.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── tests.py
│   │   │   │   └── utils.py
│   │   │   ├── blueking/
│   │   │   │   ├── __init__.py
│   │   │   │   └── component/
│   │   │   │       ├── README
│   │   │   │       ├── __init__.py
│   │   │   │       ├── apis/
│   │   │   │       │   ├── __init__.py
│   │   │   │       │   └── esb.py
│   │   │   │       ├── base.py
│   │   │   │       ├── client.py
│   │   │   │       ├── collections.py
│   │   │   │       ├── conf.py
│   │   │   │       ├── constants.py
│   │   │   │       ├── exceptions.py
│   │   │   │       ├── shortcuts.py
│   │   │   │       └── utils.py
│   │   │   ├── common/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── context_processors.py
│   │   │   │   ├── decorators.py
│   │   │   │   ├── exceptions.py
│   │   │   │   ├── http.py
│   │   │   │   ├── log.py
│   │   │   │   ├── middlewares/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── exception.py
│   │   │   │   │   ├── utils/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   └── pxfilter.py
│   │   │   │   │   └── xss.py
│   │   │   │   ├── mixins/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── base.py
│   │   │   │   ├── mymako.py
│   │   │   │   ├── responses.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views/
│   │   │   │       ├── __init__.py
│   │   │   │       └── mako.py
│   │   │   ├── components/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── engine.py
│   │   │   │   ├── login.py
│   │   │   │   └── tests.py
│   │   │   ├── conf/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── default.py
│   │   │   │   ├── settings_development.py.sample
│   │   │   │   ├── settings_production.py.sample
│   │   │   │   └── settings_testing.py.sample
│   │   │   ├── engine/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── deploy.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_auto_20160426_0959.py
│   │   │   │   │   ├── 0003_auto_20160629_1545.py
│   │   │   │   │   ├── 0004_auto_20160912_1741.py
│   │   │   │   │   ├── 0005_auto_20160929_1109.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   └── views.py
│   │   │   ├── esb/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── apps/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── api_docs/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── api_views.py
│   │   │   │   │   │   ├── templates/
│   │   │   │   │   │   │   └── api_docs/
│   │   │   │   │   │   │       ├── base.html
│   │   │   │   │   │   │       ├── index.html
│   │   │   │   │   │   │       ├── system_api_base.html
│   │   │   │   │   │   │       ├── system_api_doc.html
│   │   │   │   │   │   │       └── system_api_index.html
│   │   │   │   │   │   ├── urls.py
│   │   │   │   │   │   ├── utils.py
│   │   │   │   │   │   └── views.py
│   │   │   │   │   ├── bootstrapform/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   ├── templates/
│   │   │   │   │   │   │   └── bootstrapform/
│   │   │   │   │   │   │       ├── field.html
│   │   │   │   │   │   │       ├── form.html
│   │   │   │   │   │   │       └── formset.html
│   │   │   │   │   │   └── templatetags/
│   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │       └── bootstrap.py
│   │   │   │   │   ├── guide/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── component_template/
│   │   │   │   │   │   │   ├── en/
│   │   │   │   │   │   │   │   └── hcp/
│   │   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │   │       ├── get_host_list.py
│   │   │   │   │   │   │   │       └── toolkit/
│   │   │   │   │   │   │   │           ├── __init__.py
│   │   │   │   │   │   │   │           ├── configs.py
│   │   │   │   │   │   │   │           └── tools.py
│   │   │   │   │   │   │   └── zh-hans/
│   │   │   │   │   │   │       └── hcp/
│   │   │   │   │   │   │           ├── __init__.py
│   │   │   │   │   │   │           ├── get_host_list.py
│   │   │   │   │   │   │           └── toolkit/
│   │   │   │   │   │   │               ├── __init__.py
│   │   │   │   │   │   │               ├── configs.py
│   │   │   │   │   │   │               └── tools.py
│   │   │   │   │   │   ├── mdfiles/
│   │   │   │   │   │   │   ├── en/
│   │   │   │   │   │   │   │   ├── add_new_component.md
│   │   │   │   │   │   │   │   ├── buffet_component.md
│   │   │   │   │   │   │   │   ├── cmsi_component_guide.md
│   │   │   │   │   │   │   │   ├── custom_conf_manage.md
│   │   │   │   │   │   │   │   ├── esb_introduction.md
│   │   │   │   │   │   │   │   └── use_component.md
│   │   │   │   │   │   │   └── zh-hans/
│   │   │   │   │   │   │       ├── add_new_component.md
│   │   │   │   │   │   │       ├── buffet_component.md
│   │   │   │   │   │   │       ├── cmsi_component_guide.md
│   │   │   │   │   │   │       ├── custom_conf_manage.md
│   │   │   │   │   │   │       ├── esb_introduction.md
│   │   │   │   │   │   │       ├── use_component.md
│   │   │   │   │   │   │       └── weixin_component_guide.md
│   │   │   │   │   │   ├── templates/
│   │   │   │   │   │   │   └── guide/
│   │   │   │   │   │   │       └── page.html
│   │   │   │   │   │   ├── urls.py
│   │   │   │   │   │   ├── utils.py
│   │   │   │   │   │   └── views.py
│   │   │   │   │   └── manager/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       ├── buffet_comp/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── api_views.py
│   │   │   │   │       │   ├── forms.py
│   │   │   │   │       │   └── views.py
│   │   │   │   │       ├── channel/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── api_views.py
│   │   │   │   │       │   ├── forms.py
│   │   │   │   │       │   └── views.py
│   │   │   │   │       ├── index/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   └── views.py
│   │   │   │   │       ├── system/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── api_views.py
│   │   │   │   │       │   ├── forms.py
│   │   │   │   │       │   └── views.py
│   │   │   │   │       ├── templates/
│   │   │   │   │       │   └── manager/
│   │   │   │   │       │       ├── base.html
│   │   │   │   │       │       ├── buffet_comp/
│   │   │   │   │       │       │   ├── apply.html
│   │   │   │   │       │       │   ├── base.html
│   │   │   │   │       │       │   ├── edit.html
│   │   │   │   │       │       │   ├── helpers/
│   │   │   │   │       │       │   │   └── buffet_tab.html
│   │   │   │   │       │       │   └── list.html
│   │   │   │   │       │       ├── channel/
│   │   │   │   │       │       │   ├── add.html
│   │   │   │   │       │       │   ├── edit.html
│   │   │   │   │       │       │   └── list.html
│   │   │   │   │       │       ├── index.html
│   │   │   │   │       │       ├── mdfiles/
│   │   │   │   │       │       │   ├── en/
│   │   │   │   │       │       │   │   ├── channel.md
│   │   │   │   │       │       │   │   ├── index.md
│   │   │   │   │       │       │   │   └── system.md
│   │   │   │   │       │       │   └── zh-hans/
│   │   │   │   │       │       │       ├── channel.md
│   │   │   │   │       │       │       ├── index.md
│   │   │   │   │       │       │       └── system.md
│   │   │   │   │       │       └── system/
│   │   │   │   │       │           ├── add.html
│   │   │   │   │       │           ├── add_system_tmpl.html
│   │   │   │   │       │           ├── edit.html
│   │   │   │   │       │           └── list.html
│   │   │   │   │       ├── urls.py
│   │   │   │   │       └── utils.py
│   │   │   │   ├── bkcore/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── admin.py
│   │   │   │   │   ├── constants.py
│   │   │   │   │   ├── migrations/
│   │   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   │   ├── 0002_auto_20160712_2041.py
│   │   │   │   │   │   ├── 0003_load_intial_data.py
│   │   │   │   │   │   ├── 0004_auto_20170220_2054.py
│   │   │   │   │   │   ├── 0005_appaccount.py
│   │   │   │   │   │   ├── 0006_esbchannel_comp_conf.py
│   │   │   │   │   │   ├── 0007_auto_20170619_1050.py
│   │   │   │   │   │   ├── 0008_auto_20170629_1138.py
│   │   │   │   │   │   ├── 0009_wxmpaccesstoken.py
│   │   │   │   │   │   ├── 0010_auto_20180420_1657.py
│   │   │   │   │   │   ├── 0011_auto_20180626_2134.py
│   │   │   │   │   │   └── __init__.py
│   │   │   │   │   └── models.py
│   │   │   │   ├── common/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base_utils.py
│   │   │   │   │   ├── decorators.py
│   │   │   │   │   └── django_utils.py
│   │   │   │   ├── configs/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── default.py
│   │   │   │   │   └── urls.py
│   │   │   │   └── mainsite/
│   │   │   │       ├── __init__.py
│   │   │   │       └── templates/
│   │   │   │           └── mainsite/
│   │   │   │               ├── base.html
│   │   │   │               └── footer.html
│   │   │   ├── guide/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── migrations/
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   └── views.py
│   │   │   ├── healthz/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── urls.py
│   │   │   │   └── views.py
│   │   │   ├── home/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── esb/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── bkcore/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       └── models.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_usersettings.py
│   │   │   │   │   ├── 0003_auto_20180126_1702.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── manage.py
│   │   │   ├── media/
│   │   │   │   ├── applogo/
│   │   │   │   │   └── README.md
│   │   │   │   ├── iconlogo/
│   │   │   │   │   └── README.md
│   │   │   │   └── saaslogo/
│   │   │   │       └── README.md
│   │   │   ├── release/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── requirements.txt
│   │   │   ├── resource/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_data_insert_framework.py
│   │   │   │   │   ├── 0003_init_data.py
│   │   │   │   │   ├── 0004_insert_api_dev_template.py
│   │   │   │   │   ├── 0005_data_insert_framework_py3.py
│   │   │   │   │   ├── 0006_upgrade_framework.py
│   │   │   │   │   ├── 0007_update_python_doc_url.py
│   │   │   │   │   ├── 0008_upgrade_framework.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   └── views.py
│   │   │   ├── saas/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_auto_20161025_2016.py
│   │   │   │   │   ├── 0003_saasuploadfile_md5.py
│   │   │   │   │   ├── 0004_saasapp_created_time.py
│   │   │   │   │   ├── 0005_auto_20161101_1025.py
│   │   │   │   │   ├── 0006_auto_20161111_1827.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── settings.py
│   │   │   ├── static/
│   │   │   │   ├── admin/
│   │   │   │   │   ├── css/
│   │   │   │   │   │   ├── base.css
│   │   │   │   │   │   ├── changelists.css
│   │   │   │   │   │   ├── dashboard.css
│   │   │   │   │   │   ├── forms.css
│   │   │   │   │   │   ├── ie.css
│   │   │   │   │   │   ├── login.css
│   │   │   │   │   │   ├── rtl.css
│   │   │   │   │   │   └── widgets.css
│   │   │   │   │   └── js/
│   │   │   │   │       ├── LICENSE-JQUERY.txt
│   │   │   │   │       ├── SelectBox.js
│   │   │   │   │       ├── SelectFilter2.js
│   │   │   │   │       ├── actions.js
│   │   │   │   │       ├── admin/
│   │   │   │   │       │   ├── DateTimeShortcuts.js
│   │   │   │   │       │   └── RelatedObjectLookups.js
│   │   │   │   │       ├── calendar.js
│   │   │   │   │       ├── collapse.js
│   │   │   │   │       ├── core.js
│   │   │   │   │       ├── inlines.js
│   │   │   │   │       ├── jquery.init.js
│   │   │   │   │       ├── jquery.js
│   │   │   │   │       ├── prepopulate.js
│   │   │   │   │       ├── related-widget-wrapper.js
│   │   │   │   │       ├── timeparse.js
│   │   │   │   │       └── urlify.js
│   │   │   │   ├── assets/
│   │   │   │   │   ├── bk-icon-2.0/
│   │   │   │   │   │   ├── iconfont.css
│   │   │   │   │   │   └── iconfont.json
│   │   │   │   │   ├── bkDialog-1.0/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   └── ui-dialog.css
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       └── dialog.js
│   │   │   │   │   ├── bkDialog-2.0/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   └── dialog.css
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       └── dialog.js
│   │   │   │   │   ├── bootstrap-3.1.1/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   ├── bootstrap-overrides.css
│   │   │   │   │   │   │   ├── bootstrap-theme.css
│   │   │   │   │   │   │   ├── bootstrap.css
│   │   │   │   │   │   │   ├── bootstrap3.0.0.css
│   │   │   │   │   │   │   ├── button.css
│   │   │   │   │   │   │   ├── docs.css
│   │   │   │   │   │   │   └── extend.css
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       ├── bootstrap.js
│   │   │   │   │   │       └── html5shiv.js
│   │   │   │   │   ├── jquery-ui-1.11.0.custom/
│   │   │   │   │   │   ├── external/
│   │   │   │   │   │   │   └── jquery/
│   │   │   │   │   │   │       └── jquery.js
│   │   │   │   │   │   ├── index.html
│   │   │   │   │   │   ├── jquery-ui.css
│   │   │   │   │   │   ├── jquery-ui.js
│   │   │   │   │   │   ├── jquery-ui.structure.css
│   │   │   │   │   │   └── jquery-ui.theme.css
│   │   │   │   │   ├── jquery.zeroclipboard-0.2.0/
│   │   │   │   │   │   ├── ZeroClipboard.swf
│   │   │   │   │   │   └── jquery.zeroclipboard.js
│   │   │   │   │   └── select2-3.5.3/
│   │   │   │   │       ├── .gitignore
│   │   │   │   │       ├── CONTRIBUTING.md
│   │   │   │   │       ├── LICENSE
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── bower.json
│   │   │   │   │       ├── component.json
│   │   │   │   │       ├── composer.json
│   │   │   │   │       ├── release.sh
│   │   │   │   │       ├── select2-bootstrap.css
│   │   │   │   │       ├── select2.css
│   │   │   │   │       ├── select2.jquery.json
│   │   │   │   │       ├── select2.js
│   │   │   │   │       ├── select2_locale_ar.js
│   │   │   │   │       ├── select2_locale_az.js
│   │   │   │   │       ├── select2_locale_bg.js
│   │   │   │   │       ├── select2_locale_ca.js
│   │   │   │   │       ├── select2_locale_cs.js
│   │   │   │   │       ├── select2_locale_da.js
│   │   │   │   │       ├── select2_locale_de.js
│   │   │   │   │       ├── select2_locale_el.js
│   │   │   │   │       ├── select2_locale_en.js.template
│   │   │   │   │       ├── select2_locale_es.js
│   │   │   │   │       ├── select2_locale_et.js
│   │   │   │   │       ├── select2_locale_eu.js
│   │   │   │   │       ├── select2_locale_fa.js
│   │   │   │   │       ├── select2_locale_fi.js
│   │   │   │   │       ├── select2_locale_fr.js
│   │   │   │   │       ├── select2_locale_gl.js
│   │   │   │   │       ├── select2_locale_he.js
│   │   │   │   │       ├── select2_locale_hr.js
│   │   │   │   │       ├── select2_locale_hu.js
│   │   │   │   │       ├── select2_locale_id.js
│   │   │   │   │       ├── select2_locale_is.js
│   │   │   │   │       ├── select2_locale_it.js
│   │   │   │   │       ├── select2_locale_ja.js
│   │   │   │   │       ├── select2_locale_ka.js
│   │   │   │   │       ├── select2_locale_ko.js
│   │   │   │   │       ├── select2_locale_lt.js
│   │   │   │   │       ├── select2_locale_lv.js
│   │   │   │   │       ├── select2_locale_mk.js
│   │   │   │   │       ├── select2_locale_ms.js
│   │   │   │   │       ├── select2_locale_nb.js
│   │   │   │   │       ├── select2_locale_nl.js
│   │   │   │   │       ├── select2_locale_pl.js
│   │   │   │   │       ├── select2_locale_pt-BR.js
│   │   │   │   │       ├── select2_locale_pt-PT.js
│   │   │   │   │       ├── select2_locale_ro.js
│   │   │   │   │       ├── select2_locale_rs.js
│   │   │   │   │       ├── select2_locale_ru.js
│   │   │   │   │       ├── select2_locale_sk.js
│   │   │   │   │       ├── select2_locale_sv.js
│   │   │   │   │       ├── select2_locale_th.js
│   │   │   │   │       ├── select2_locale_tr.js
│   │   │   │   │       ├── select2_locale_ug-CN.js
│   │   │   │   │       ├── select2_locale_uk.js
│   │   │   │   │       ├── select2_locale_vi.js
│   │   │   │   │       ├── select2_locale_zh-CN.js
│   │   │   │   │       └── select2_locale_zh-TW.js
│   │   │   │   ├── css/
│   │   │   │   │   ├── base.css
│   │   │   │   │   ├── guide_newbie.css
│   │   │   │   │   ├── layout_head.css
│   │   │   │   │   ├── login.css
│   │   │   │   │   ├── paas_app.css
│   │   │   │   │   ├── paas_app_env.css
│   │   │   │   │   ├── paas_guide.css
│   │   │   │   │   ├── paas_monitor.css
│   │   │   │   │   ├── paas_profile.css
│   │   │   │   │   ├── paas_release.css
│   │   │   │   │   └── paas_saas.css
│   │   │   │   ├── doc/
│   │   │   │   │   ├── api_data.js
│   │   │   │   │   ├── api_data.json
│   │   │   │   │   ├── api_project.js
│   │   │   │   │   ├── api_project.json
│   │   │   │   │   ├── apidoc.json
│   │   │   │   │   ├── css/
│   │   │   │   │   │   └── style.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── locales/
│   │   │   │   │   │   ├── ca.js
│   │   │   │   │   │   ├── de.js
│   │   │   │   │   │   ├── es.js
│   │   │   │   │   │   ├── fr.js
│   │   │   │   │   │   ├── it.js
│   │   │   │   │   │   ├── locale.js
│   │   │   │   │   │   ├── nl.js
│   │   │   │   │   │   ├── pl.js
│   │   │   │   │   │   ├── pt_br.js
│   │   │   │   │   │   ├── ro.js
│   │   │   │   │   │   ├── ru.js
│   │   │   │   │   │   ├── tr.js
│   │   │   │   │   │   ├── vi.js
│   │   │   │   │   │   ├── zh.js
│   │   │   │   │   │   └── zh_cn.js
│   │   │   │   │   ├── main.js
│   │   │   │   │   ├── utils/
│   │   │   │   │   │   ├── handlebars_helper.js
│   │   │   │   │   │   └── send_sample_request.js
│   │   │   │   │   └── vendor/
│   │   │   │   │       ├── path-to-regexp/
│   │   │   │   │       │   ├── LICENSE
│   │   │   │   │       │   └── index.js
│   │   │   │   │       ├── polyfill.js
│   │   │   │   │       ├── prettify/
│   │   │   │   │       │   ├── lang-Splus.js
│   │   │   │   │       │   ├── lang-aea.js
│   │   │   │   │       │   ├── lang-agc.js
│   │   │   │   │       │   ├── lang-apollo.js
│   │   │   │   │       │   ├── lang-basic.js
│   │   │   │   │       │   ├── lang-cbm.js
│   │   │   │   │       │   ├── lang-cl.js
│   │   │   │   │       │   ├── lang-clj.js
│   │   │   │   │       │   ├── lang-css.js
│   │   │   │   │       │   ├── lang-dart.js
│   │   │   │   │       │   ├── lang-el.js
│   │   │   │   │       │   ├── lang-erl.js
│   │   │   │   │       │   ├── lang-erlang.js
│   │   │   │   │       │   ├── lang-fs.js
│   │   │   │   │       │   ├── lang-go.js
│   │   │   │   │       │   ├── lang-hs.js
│   │   │   │   │       │   ├── lang-lasso.js
│   │   │   │   │       │   ├── lang-lassoscript.js
│   │   │   │   │       │   ├── lang-latex.js
│   │   │   │   │       │   ├── lang-lgt.js
│   │   │   │   │       │   ├── lang-lisp.js
│   │   │   │   │       │   ├── lang-ll.js
│   │   │   │   │       │   ├── lang-llvm.js
│   │   │   │   │       │   ├── lang-logtalk.js
│   │   │   │   │       │   ├── lang-ls.js
│   │   │   │   │       │   ├── lang-lsp.js
│   │   │   │   │       │   ├── lang-lua.js
│   │   │   │   │       │   ├── lang-matlab.js
│   │   │   │   │       │   ├── lang-ml.js
│   │   │   │   │       │   ├── lang-mumps.js
│   │   │   │   │       │   ├── lang-n.js
│   │   │   │   │       │   ├── lang-nemerle.js
│   │   │   │   │       │   ├── lang-pascal.js
│   │   │   │   │       │   ├── lang-proto.js
│   │   │   │   │       │   ├── lang-r.js
│   │   │   │   │       │   ├── lang-rd.js
│   │   │   │   │       │   ├── lang-rkt.js
│   │   │   │   │       │   ├── lang-rust.js
│   │   │   │   │       │   ├── lang-s.js
│   │   │   │   │       │   ├── lang-scala.js
│   │   │   │   │       │   ├── lang-scm.js
│   │   │   │   │       │   ├── lang-sql.js
│   │   │   │   │       │   ├── lang-ss.js
│   │   │   │   │       │   ├── lang-swift.js
│   │   │   │   │       │   ├── lang-tcl.js
│   │   │   │   │       │   ├── lang-tex.js
│   │   │   │   │       │   ├── lang-vb.js
│   │   │   │   │       │   ├── lang-vbs.js
│   │   │   │   │       │   ├── lang-vhd.js
│   │   │   │   │       │   ├── lang-vhdl.js
│   │   │   │   │       │   ├── lang-wiki.js
│   │   │   │   │       │   ├── lang-xq.js
│   │   │   │   │       │   ├── lang-xquery.js
│   │   │   │   │       │   ├── lang-yaml.js
│   │   │   │   │       │   ├── lang-yml.js
│   │   │   │   │       │   ├── prettify.css
│   │   │   │   │       │   ├── prettify.js
│   │   │   │   │       │   └── run_prettify.js
│   │   │   │   │       ├── prettify.css
│   │   │   │   │       └── webfontloader.js
│   │   │   │   ├── esb/
│   │   │   │   │   ├── api_docs/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   ├── index.css
│   │   │   │   │   │   │   ├── md_render.css
│   │   │   │   │   │   │   └── search.css
│   │   │   │   │   │   ├── js/
│   │   │   │   │   │   │   ├── search.js
│   │   │   │   │   │   │   ├── system_api_docs_info.js
│   │   │   │   │   │   │   └── system_info.js
│   │   │   │   │   │   └── res/
│   │   │   │   │   │       └── cc/
│   │   │   │   │   │           ├── classIcon.json
│   │   │   │   │   │           └── modleIcon.json
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── backbone-1.3.3-min.js
│   │   │   │   │   │   ├── bkDialog-1.0/
│   │   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   │   └── ui-dialog.css
│   │   │   │   │   │   │   └── js/
│   │   │   │   │   │   │       └── dialog.js
│   │   │   │   │   │   ├── handlebars-3.0.1.js
│   │   │   │   │   │   ├── jquery.cookie-1.4.1.js
│   │   │   │   │   │   ├── jquery.validate-1.11.0.js
│   │   │   │   │   │   ├── metis_menu-2.6.1/
│   │   │   │   │   │   │   ├── metisMenu.css
│   │   │   │   │   │   │   └── metisMenu.js
│   │   │   │   │   │   ├── sFlow-1.0/
│   │   │   │   │   │   │   ├── sFlow.css
│   │   │   │   │   │   │   └── sFlow.js
│   │   │   │   │   │   ├── select2-3.5.3/
│   │   │   │   │   │   │   ├── .gitignore
│   │   │   │   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   │   │   │   ├── LICENSE
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── bower.json
│   │   │   │   │   │   │   ├── component.json
│   │   │   │   │   │   │   ├── composer.json
│   │   │   │   │   │   │   ├── release.sh
│   │   │   │   │   │   │   ├── select2-bootstrap.css
│   │   │   │   │   │   │   ├── select2.css
│   │   │   │   │   │   │   ├── select2.jquery.json
│   │   │   │   │   │   │   ├── select2.js
│   │   │   │   │   │   │   ├── select2_locale_ar.js
│   │   │   │   │   │   │   ├── select2_locale_az.js
│   │   │   │   │   │   │   ├── select2_locale_bg.js
│   │   │   │   │   │   │   ├── select2_locale_ca.js
│   │   │   │   │   │   │   ├── select2_locale_cs.js
│   │   │   │   │   │   │   ├── select2_locale_da.js
│   │   │   │   │   │   │   ├── select2_locale_de.js
│   │   │   │   │   │   │   ├── select2_locale_el.js
│   │   │   │   │   │   │   ├── select2_locale_en.js.template
│   │   │   │   │   │   │   ├── select2_locale_es.js
│   │   │   │   │   │   │   ├── select2_locale_et.js
│   │   │   │   │   │   │   ├── select2_locale_eu.js
│   │   │   │   │   │   │   ├── select2_locale_fa.js
│   │   │   │   │   │   │   ├── select2_locale_fi.js
│   │   │   │   │   │   │   ├── select2_locale_fr.js
│   │   │   │   │   │   │   ├── select2_locale_gl.js
│   │   │   │   │   │   │   ├── select2_locale_he.js
│   │   │   │   │   │   │   ├── select2_locale_hr.js
│   │   │   │   │   │   │   ├── select2_locale_hu.js
│   │   │   │   │   │   │   ├── select2_locale_id.js
│   │   │   │   │   │   │   ├── select2_locale_is.js
│   │   │   │   │   │   │   ├── select2_locale_it.js
│   │   │   │   │   │   │   ├── select2_locale_ja.js
│   │   │   │   │   │   │   ├── select2_locale_ka.js
│   │   │   │   │   │   │   ├── select2_locale_ko.js
│   │   │   │   │   │   │   ├── select2_locale_lt.js
│   │   │   │   │   │   │   ├── select2_locale_lv.js
│   │   │   │   │   │   │   ├── select2_locale_mk.js
│   │   │   │   │   │   │   ├── select2_locale_ms.js
│   │   │   │   │   │   │   ├── select2_locale_nb.js
│   │   │   │   │   │   │   ├── select2_locale_nl.js
│   │   │   │   │   │   │   ├── select2_locale_pl.js
│   │   │   │   │   │   │   ├── select2_locale_pt-BR.js
│   │   │   │   │   │   │   ├── select2_locale_pt-PT.js
│   │   │   │   │   │   │   ├── select2_locale_ro.js
│   │   │   │   │   │   │   ├── select2_locale_rs.js
│   │   │   │   │   │   │   ├── select2_locale_ru.js
│   │   │   │   │   │   │   ├── select2_locale_sk.js
│   │   │   │   │   │   │   ├── select2_locale_sv.js
│   │   │   │   │   │   │   ├── select2_locale_th.js
│   │   │   │   │   │   │   ├── select2_locale_tr.js
│   │   │   │   │   │   │   ├── select2_locale_ug-CN.js
│   │   │   │   │   │   │   ├── select2_locale_uk.js
│   │   │   │   │   │   │   ├── select2_locale_vi.js
│   │   │   │   │   │   │   ├── select2_locale_zh-CN.js
│   │   │   │   │   │   │   └── select2_locale_zh-TW.js
│   │   │   │   │   │   ├── underscore-1.8.3-min.js
│   │   │   │   │   │   └── vue-2.4.2.js
│   │   │   │   │   ├── css/
│   │   │   │   │   │   ├── base.css
│   │   │   │   │   │   ├── helper.css
│   │   │   │   │   │   ├── md2html.css
│   │   │   │   │   │   └── style.css
│   │   │   │   │   ├── img/
│   │   │   │   │   │   └── logo_esb_02.png.bak
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── buffet_list.js
│   │   │   │   │   │   ├── buffet_update.js
│   │   │   │   │   │   ├── channel.js
│   │   │   │   │   │   ├── channel_list.js
│   │   │   │   │   │   ├── core.js
│   │   │   │   │   │   ├── csrftoken.js
│   │   │   │   │   │   ├── esb_add_system.js
│   │   │   │   │   │   └── system_list.js
│   │   │   │   │   ├── locales/
│   │   │   │   │   │   ├── ca.js
│   │   │   │   │   │   ├── de.js
│   │   │   │   │   │   ├── es.js
│   │   │   │   │   │   ├── fr.js
│   │   │   │   │   │   ├── locale.js
│   │   │   │   │   │   ├── nl.js
│   │   │   │   │   │   ├── pl.js
│   │   │   │   │   │   ├── pt_br.js
│   │   │   │   │   │   ├── ru.js
│   │   │   │   │   │   ├── zh.js
│   │   │   │   │   │   └── zh_cn.js
│   │   │   │   │   └── utils/
│   │   │   │   │       ├── handlebars_helper.js
│   │   │   │   │       └── send_sample_request.js
│   │   │   │   ├── home/
│   │   │   │   │   ├── css/
│   │   │   │   │   │   └── index.css
│   │   │   │   │   └── js/
│   │   │   │   │       ├── csrftoken_v3.js
│   │   │   │   │       └── index.js
│   │   │   │   ├── js/
│   │   │   │   │   ├── core.js
│   │   │   │   │   ├── csrftoken.js
│   │   │   │   │   ├── paas_app.js
│   │   │   │   │   ├── paas_app_env.js
│   │   │   │   │   ├── paas_base.js
│   │   │   │   │   ├── paas_engine.js
│   │   │   │   │   ├── paas_engine_third.js
│   │   │   │   │   ├── paas_release.js
│   │   │   │   │   ├── paas_saas.js
│   │   │   │   │   ├── pagination.js
│   │   │   │   │   └── utils.js
│   │   │   │   └── user_center/
│   │   │   │       ├── css/
│   │   │   │       │   └── weixin.css
│   │   │   │       └── js/
│   │   │   │           └── weixin.js
│   │   │   ├── templates/
│   │   │   │   ├── 401.html
│   │   │   │   ├── 403.html
│   │   │   │   ├── 404.html
│   │   │   │   ├── 500.html
│   │   │   │   ├── 50x.html
│   │   │   │   ├── account/
│   │   │   │   │   ├── profile.html
│   │   │   │   │   └── profile_modify.html
│   │   │   │   ├── admin/
│   │   │   │   │   ├── base_site.html
│   │   │   │   │   └── login.html
│   │   │   │   ├── app/
│   │   │   │   │   ├── create.html
│   │   │   │   │   ├── create_detail.part
│   │   │   │   │   ├── info.html
│   │   │   │   │   ├── info_error.html
│   │   │   │   │   ├── list.html
│   │   │   │   │   ├── list_table.part
│   │   │   │   │   ├── list_tip.part
│   │   │   │   │   └── show_apply_process.html
│   │   │   │   ├── app_env/
│   │   │   │   │   └── home.html
│   │   │   │   ├── base.html
│   │   │   │   ├── base_app.html
│   │   │   │   ├── base_center.html
│   │   │   │   ├── csrf_failure.html
│   │   │   │   ├── developer_403.html
│   │   │   │   ├── engine/
│   │   │   │   │   ├── external_server.html
│   │   │   │   │   └── server.html
│   │   │   │   ├── error/
│   │   │   │   │   ├── app_error1.html
│   │   │   │   │   ├── app_error2.html
│   │   │   │   │   ├── app_error3.html
│   │   │   │   │   ├── app_error4.html
│   │   │   │   │   ├── app_error_dialog1.html
│   │   │   │   │   ├── app_error_dialog2.html
│   │   │   │   │   ├── app_error_dialog3.html
│   │   │   │   │   └── app_error_dialog4.html
│   │   │   │   ├── guide/
│   │   │   │   │   ├── newbie.html
│   │   │   │   │   └── services.html
│   │   │   │   ├── home/
│   │   │   │   │   └── index.html
│   │   │   │   ├── release/
│   │   │   │   │   ├── base_history.html
│   │   │   │   │   ├── home.html
│   │   │   │   │   ├── offline_form.part
│   │   │   │   │   ├── online_form.part
│   │   │   │   │   ├── record.html
│   │   │   │   │   ├── record_list.part
│   │   │   │   │   ├── release_flow.part
│   │   │   │   │   ├── test_form.part
│   │   │   │   │   └── version.html
│   │   │   │   ├── resource/
│   │   │   │   │   └── index.html
│   │   │   │   ├── saas/
│   │   │   │   │   ├── info.html
│   │   │   │   │   ├── list.html
│   │   │   │   │   ├── list_table.part
│   │   │   │   │   ├── offline.html
│   │   │   │   │   ├── record.html
│   │   │   │   │   └── release.html
│   │   │   │   └── user_center/
│   │   │   │       ├── weixin_bind_error.html
│   │   │   │       └── weixin_qy_bind_success.html
│   │   │   ├── urls.py
│   │   │   ├── user_center/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── decorators.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── views.py
│   │   │   │   └── weixin/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── core.py
│   │   │   │       └── utils.py
│   │   │   └── wsgi.py
│   │   ├── package.json
│   │   └── websocket/
│   │       ├── .gitignore
│   │       ├── README.md
│   │       ├── VERSION
│   │       ├── __init__.py
│   │       ├── app.yml
│   │       ├── asgi.py
│   │       ├── bastion/
│   │       │   ├── __init__.py
│   │       │   ├── admin.py
│   │       │   ├── apps.py
│   │       │   ├── component/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── common.py
│   │       │   │   ├── core.py
│   │       │   │   └── redis_client_conn.py
│   │       │   ├── constant.py
│   │       │   ├── core/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── consumers.py
│   │       │   │   ├── consumers.py.old
│   │       │   │   ├── consumers_database_mysql_web.py
│   │       │   │   ├── consumers_database_redis_web.py
│   │       │   │   ├── consumers_database_shell.py
│   │       │   │   ├── consumers_namespace_pod.py
│   │       │   │   ├── consumers_network.py
│   │       │   │   ├── consumers_windows.py
│   │       │   │   ├── guacamole/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── client.py
│   │       │   │   │   ├── component.py
│   │       │   │   │   ├── exceptions.py
│   │       │   │   │   └── instruction.py
│   │       │   │   ├── status_code.py
│   │       │   │   └── terminal/
│   │       │   │       ├── __init__.py
│   │       │   │       └── component.py
│   │       │   ├── migrations/
│   │       │   │   └── __init__.py
│   │       │   ├── models.py
│   │       │   ├── routing.py
│   │       │   ├── tests.py
│   │       │   └── utils/
│   │       │       ├── __init__.py
│   │       │       ├── base_model.py
│   │       │       ├── constants.py
│   │       │       ├── encryption.py
│   │       │       └── esb_api.py
│   │       ├── blueapps/
│   │       │   ├── __init__.py
│   │       │   ├── account/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── admin.py
│   │       │   │   ├── apps.py
│   │       │   │   ├── backends.py
│   │       │   │   ├── components/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── bk_jwt/
│   │       │   │   │   │   ├── __init__.py
│   │       │   │   │   │   ├── backends.py
│   │       │   │   │   │   └── middlewares.py
│   │       │   │   │   ├── bk_token/
│   │       │   │   │   │   ├── __init__.py
│   │       │   │   │   │   ├── backends.py
│   │       │   │   │   │   ├── forms.py
│   │       │   │   │   │   ├── middlewares.py
│   │       │   │   │   │   └── models.py
│   │       │   │   │   ├── null/
│   │       │   │   │   │   └── __init__.py
│   │       │   │   │   └── weixin/
│   │       │   │   │       ├── __init__.py
│   │       │   │   │       ├── backends.py
│   │       │   │   │       ├── forms.py
│   │       │   │   │       └── middlewares.py
│   │       │   │   ├── conf.py
│   │       │   │   ├── decorators.py
│   │       │   │   ├── forms.py
│   │       │   │   ├── handlers/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── response.py
│   │       │   │   ├── middlewares.py
│   │       │   │   ├── migrations/
│   │       │   │   │   ├── 0001_initial.py
│   │       │   │   │   ├── 0002_init_superuser.py
│   │       │   │   │   ├── 0003_verifyinfo.py
│   │       │   │   │   └── __init__.py
│   │       │   │   ├── models.py
│   │       │   │   ├── readme.md
│   │       │   │   ├── sites/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── default.py
│   │       │   │   │   └── open/
│   │       │   │   │       ├── __init__.py
│   │       │   │   │       └── conf.py
│   │       │   │   ├── static/
│   │       │   │   │   └── account/
│   │       │   │   │       └── login.js
│   │       │   │   ├── templates/
│   │       │   │   │   └── account/
│   │       │   │   │       ├── login_page.html
│   │       │   │   │       └── login_success.html
│   │       │   │   ├── urls.py
│   │       │   │   ├── utils/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── http.py
│   │       │   │   │   └── sms.py
│   │       │   │   └── views.py
│   │       │   ├── conf/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── database.py
│   │       │   │   ├── default_settings.py
│   │       │   │   ├── environ.py
│   │       │   │   ├── log.py
│   │       │   │   └── sites/
│   │       │   │       ├── __init__.py
│   │       │   │       └── open/
│   │       │   │           └── __init__.py
│   │       │   ├── contrib/
│   │       │   │   ├── __init__.py
│   │       │   │   └── bk_commands/
│   │       │   │       ├── __init__.py
│   │       │   │       ├── management/
│   │       │   │       │   ├── __init__.py
│   │       │   │       │   ├── commands/
│   │       │   │       │   │   ├── __init__.py
│   │       │   │       │   │   ├── init.py
│   │       │   │       │   │   ├── startexample.py
│   │       │   │       │   │   ├── startweixin.py
│   │       │   │       │   │   └── startwxapp.py
│   │       │   │       │   └── templates.py
│   │       │   │       └── test.py
│   │       │   ├── core/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── celery/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── celery.py
│   │       │   │   ├── exceptions/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── base.py
│   │       │   │   │   └── middleware.py
│   │       │   │   ├── handler/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── wsgi.py
│   │       │   │   ├── sites/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── middleware.py
│   │       │   │   └── wsgi.py
│   │       │   ├── middleware/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── bkui/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── middlewares.py
│   │       │   │   ├── request_provider.py
│   │       │   │   └── xss/
│   │       │   │       ├── __init__.py
│   │       │   │       ├── decorators.py
│   │       │   │       ├── middlewares.py
│   │       │   │       ├── pxfilter.py
│   │       │   │       └── utils.py
│   │       │   ├── patch/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── log.py
│   │       │   │   ├── settings_open_saas.py
│   │       │   │   └── settings_paas_services.py
│   │       │   ├── template/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── backends/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── mako.py
│   │       │   │   └── context_processors.py
│   │       │   └── utils/
│   │       │       ├── __init__.py
│   │       │       ├── esbclient.py
│   │       │       ├── logger.py
│   │       │       ├── request_provider.py
│   │       │       ├── sites/
│   │       │       │   ├── __init__.py
│   │       │       │   ├── clouds/
│   │       │       │   │   └── __init__.py
│   │       │       │   ├── ieod/
│   │       │       │   │   └── __init__.py
│   │       │       │   ├── open/
│   │       │       │   │   └── __init__.py
│   │       │       │   ├── qcloud/
│   │       │       │   │   └── __init__.py
│   │       │       │   └── tencent/
│   │       │       │       └── __init__.py
│   │       │       └── unique.py
│   │       ├── blueking/
│   │       │   ├── __init__.py
│   │       │   ├── component/
│   │       │   │   ├── README.md
│   │       │   │   ├── __init__.py
│   │       │   │   ├── apis/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── bk_login.py
│   │       │   │   │   ├── bk_paas.py
│   │       │   │   │   ├── cc.py
│   │       │   │   │   ├── cmsi.py
│   │       │   │   │   ├── gse.py
│   │       │   │   │   ├── job.py
│   │       │   │   │   └── sops.py
│   │       │   │   ├── base.py
│   │       │   │   ├── client.py
│   │       │   │   ├── collections.py
│   │       │   │   ├── compat.py
│   │       │   │   ├── conf.py
│   │       │   │   ├── exceptions.py
│   │       │   │   ├── shortcuts.py
│   │       │   │   └── utils.py
│   │       │   └── tests/
│   │       │       ├── README.md
│   │       │       ├── __init__.py
│   │       │       ├── test_client.py
│   │       │       ├── test_shortcuts.py
│   │       │       ├── test_utils.py
│   │       │       └── utils/
│   │       │           ├── __init__.py
│   │       │           └── utils.py
│   │       ├── config/
│   │       │   ├── __init__.py
│   │       │   ├── default.py
│   │       │   ├── dev.py
│   │       │   ├── prod.py
│   │       │   ├── redis_demo.py
│   │       │   └── stag.py
│   │       ├── k8s_api.py
│   │       ├── manage.py
│   │       ├── requirements.txt
│   │       ├── runtime.txt
│   │       ├── settings.py
│   │       ├── tianyi.pem
│   │       ├── urls.py
│   │       └── wsgi.py
│   ├── paasagent/
│   │   ├── Gopkg.toml
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── VERSION
│   │   ├── core/
│   │   │   ├── http.go
│   │   │   ├── states.go
│   │   │   └── utils.go
│   │   ├── etc/
│   │   │   ├── build/
│   │   │   │   ├── packages/
│   │   │   │   │   └── requirements.txt
│   │   │   │   └── virtualenv/
│   │   │   │       ├── build
│   │   │   │       └── saas/
│   │   │   │           └── buildsaas
│   │   │   ├── nginx/
│   │   │   │   └── paasagent.conf
│   │   │   ├── paas_agent_config.yaml
│   │   │   └── templates/
│   │   │       ├── supervisord.conf
│   │   │       └── uwsgi.ini
│   │   ├── job/
│   │   │   └── job.go
│   │   ├── main.go
│   │   ├── server/
│   │   │   ├── http.go
│   │   │   └── response.go
│   │   └── vendor/
│   │       ├── github.com/
│   │       │   ├── fsnotify/
│   │       │   │   └── fsnotify/
│   │       │   │       ├── .editorconfig
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── AUTHORS
│   │       │   │       ├── CHANGELOG.md
│   │       │   │       ├── CONTRIBUTING.md
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── fen.go
│   │       │   │       ├── fsnotify.go
│   │       │   │       ├── inotify.go
│   │       │   │       ├── inotify_poller.go
│   │       │   │       ├── kqueue.go
│   │       │   │       ├── open_mode_bsd.go
│   │       │   │       ├── open_mode_darwin.go
│   │       │   │       └── windows.go
│   │       │   ├── hashicorp/
│   │       │   │   └── hcl/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── LICENSE
│   │       │   │       ├── Makefile
│   │       │   │       ├── README.md
│   │       │   │       ├── appveyor.yml
│   │       │   │       ├── decoder.go
│   │       │   │       ├── go.mod
│   │       │   │       ├── go.sum
│   │       │   │       ├── hcl/
│   │       │   │       │   ├── ast/
│   │       │   │       │   │   ├── ast.go
│   │       │   │       │   │   └── walk.go
│   │       │   │       │   ├── parser/
│   │       │   │       │   │   ├── error.go
│   │       │   │       │   │   └── parser.go
│   │       │   │       │   ├── printer/
│   │       │   │       │   │   ├── nodes.go
│   │       │   │       │   │   └── printer.go
│   │       │   │       │   ├── scanner/
│   │       │   │       │   │   └── scanner.go
│   │       │   │       │   ├── strconv/
│   │       │   │       │   │   └── quote.go
│   │       │   │       │   └── token/
│   │       │   │       │       ├── position.go
│   │       │   │       │       └── token.go
│   │       │   │       ├── hcl.go
│   │       │   │       ├── json/
│   │       │   │       │   ├── parser/
│   │       │   │       │   │   ├── flatten.go
│   │       │   │       │   │   └── parser.go
│   │       │   │       │   ├── scanner/
│   │       │   │       │   │   └── scanner.go
│   │       │   │       │   └── token/
│   │       │   │       │       ├── position.go
│   │       │   │       │       └── token.go
│   │       │   │       ├── lex.go
│   │       │   │       └── parse.go
│   │       │   ├── labstack/
│   │       │   │   └── gommon/
│   │       │   │       ├── LICENSE
│   │       │   │       ├── color/
│   │       │   │       │   ├── README.md
│   │       │   │       │   └── color.go
│   │       │   │       └── log/
│   │       │   │           ├── README.md
│   │       │   │           ├── color.go
│   │       │   │           ├── log.go
│   │       │   │           └── white.go
│   │       │   ├── magiconair/
│   │       │   │   └── properties/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── CHANGELOG.md
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── decode.go
│   │       │   │       ├── doc.go
│   │       │   │       ├── integrate.go
│   │       │   │       ├── lex.go
│   │       │   │       ├── load.go
│   │       │   │       ├── parser.go
│   │       │   │       ├── properties.go
│   │       │   │       └── rangecheck.go
│   │       │   ├── mattn/
│   │       │   │   ├── go-colorable/
│   │       │   │   │   ├── LICENSE
│   │       │   │   │   ├── README.md
│   │       │   │   │   ├── colorable_others.go
│   │       │   │   │   ├── colorable_windows.go
│   │       │   │   │   └── noncolorable.go
│   │       │   │   └── go-isatty/
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── doc.go
│   │       │   │       ├── isatty_appengine.go
│   │       │   │       ├── isatty_bsd.go
│   │       │   │       ├── isatty_linux.go
│   │       │   │       ├── isatty_solaris.go
│   │       │   │       └── isatty_windows.go
│   │       │   ├── mitchellh/
│   │       │   │   └── mapstructure/
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── CHANGELOG.md
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── decode_hooks.go
│   │       │   │       ├── error.go
│   │       │   │       ├── go.mod
│   │       │   │       └── mapstructure.go
│   │       │   ├── moul/
│   │       │   │   └── http2curl/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── LICENSE
│   │       │   │       ├── Makefile
│   │       │   │       ├── README.md
│   │       │   │       └── http2curl.go
│   │       │   ├── parnurzeal/
│   │       │   │   └── gorequest/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── CHANGELOG
│   │       │   │       ├── CONTRIBUTING.md
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       └── gorequest.go
│   │       │   ├── pelletier/
│   │       │   │   └── go-toml/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── benchmark.json
│   │       │   │       ├── benchmark.sh
│   │       │   │       ├── benchmark.toml
│   │       │   │       ├── benchmark.yml
│   │       │   │       ├── doc.go
│   │       │   │       ├── example-crlf.toml
│   │       │   │       ├── example.toml
│   │       │   │       ├── fuzz.go
│   │       │   │       ├── fuzz.sh
│   │       │   │       ├── keysparsing.go
│   │       │   │       ├── lexer.go
│   │       │   │       ├── marshal.go
│   │       │   │       ├── marshal_test.toml
│   │       │   │       ├── parser.go
│   │       │   │       ├── position.go
│   │       │   │       ├── test.sh
│   │       │   │       ├── token.go
│   │       │   │       ├── toml.go
│   │       │   │       ├── tomltree_create.go
│   │       │   │       └── tomltree_write.go
│   │       │   ├── pkg/
│   │       │   │   └── errors/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── appveyor.yml
│   │       │   │       ├── errors.go
│   │       │   │       └── stack.go
│   │       │   ├── spf13/
│   │       │   │   ├── afero/
│   │       │   │   │   ├── .travis.yml
│   │       │   │   │   ├── LICENSE.txt
│   │       │   │   │   ├── README.md
│   │       │   │   │   ├── afero.go
│   │       │   │   │   ├── appveyor.yml
│   │       │   │   │   ├── basepath.go
│   │       │   │   │   ├── cacheOnReadFs.go
│   │       │   │   │   ├── const_bsds.go
│   │       │   │   │   ├── const_win_unix.go
│   │       │   │   │   ├── copyOnWriteFs.go
│   │       │   │   │   ├── go.mod
│   │       │   │   │   ├── httpFs.go
│   │       │   │   │   ├── ioutil.go
│   │       │   │   │   ├── lstater.go
│   │       │   │   │   ├── match.go
│   │       │   │   │   ├── mem/
│   │       │   │   │   │   ├── dir.go
│   │       │   │   │   │   ├── dirmap.go
│   │       │   │   │   │   └── file.go
│   │       │   │   │   ├── memmap.go
│   │       │   │   │   ├── os.go
│   │       │   │   │   ├── path.go
│   │       │   │   │   ├── readonlyfs.go
│   │       │   │   │   ├── regexpfs.go
│   │       │   │   │   ├── unionFile.go
│   │       │   │   │   └── util.go
│   │       │   │   ├── cast/
│   │       │   │   │   ├── .gitignore
│   │       │   │   │   ├── .travis.yml
│   │       │   │   │   ├── LICENSE
│   │       │   │   │   ├── Makefile
│   │       │   │   │   ├── README.md
│   │       │   │   │   ├── cast.go
│   │       │   │   │   ├── caste.go
│   │       │   │   │   ├── go.mod
│   │       │   │   │   └── go.sum
│   │       │   │   ├── jwalterweatherman/
│   │       │   │   │   ├── .gitignore
│   │       │   │   │   ├── LICENSE
│   │       │   │   │   ├── README.md
│   │       │   │   │   ├── default_notepad.go
│   │       │   │   │   ├── go.mod
│   │       │   │   │   ├── log_counter.go
│   │       │   │   │   └── notepad.go
│   │       │   │   ├── pflag/
│   │       │   │   │   ├── .gitignore
│   │       │   │   │   ├── .travis.yml
│   │       │   │   │   ├── LICENSE
│   │       │   │   │   ├── README.md
│   │       │   │   │   ├── bool.go
│   │       │   │   │   ├── bool_slice.go
│   │       │   │   │   ├── bytes.go
│   │       │   │   │   ├── count.go
│   │       │   │   │   ├── duration.go
│   │       │   │   │   ├── duration_slice.go
│   │       │   │   │   ├── flag.go
│   │       │   │   │   ├── float32.go
│   │       │   │   │   ├── float64.go
│   │       │   │   │   ├── golangflag.go
│   │       │   │   │   ├── int.go
│   │       │   │   │   ├── int16.go
│   │       │   │   │   ├── int32.go
│   │       │   │   │   ├── int64.go
│   │       │   │   │   ├── int8.go
│   │       │   │   │   ├── int_slice.go
│   │       │   │   │   ├── ip.go
│   │       │   │   │   ├── ip_slice.go
│   │       │   │   │   ├── ipmask.go
│   │       │   │   │   ├── ipnet.go
│   │       │   │   │   ├── string.go
│   │       │   │   │   ├── string_array.go
│   │       │   │   │   ├── string_slice.go
│   │       │   │   │   ├── string_to_int.go
│   │       │   │   │   ├── string_to_string.go
│   │       │   │   │   ├── uint.go
│   │       │   │   │   ├── uint16.go
│   │       │   │   │   ├── uint32.go
│   │       │   │   │   ├── uint64.go
│   │       │   │   │   ├── uint8.go
│   │       │   │   │   └── uint_slice.go
│   │       │   │   └── viper/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── flags.go
│   │       │   │       ├── go.mod
│   │       │   │       ├── go.sum
│   │       │   │       ├── util.go
│   │       │   │       └── viper.go
│   │       │   └── valyala/
│   │       │       └── fasttemplate/
│   │       │           ├── LICENSE
│   │       │           ├── README.md
│   │       │           └── template.go
│   │       ├── golang.org/
│   │       │   └── x/
│   │       │       ├── net/
│   │       │       │   ├── AUTHORS
│   │       │       │   ├── CONTRIBUTORS
│   │       │       │   ├── LICENSE
│   │       │       │   ├── PATENTS
│   │       │       │   ├── context/
│   │       │       │   │   ├── context.go
│   │       │       │   │   ├── go17.go
│   │       │       │   │   ├── go19.go
│   │       │       │   │   ├── pre_go17.go
│   │       │       │   │   └── pre_go19.go
│   │       │       │   ├── idna/
│   │       │       │   │   ├── idna.go
│   │       │       │   │   ├── punycode.go
│   │       │       │   │   ├── tables.go
│   │       │       │   │   ├── trie.go
│   │       │       │   │   └── trieval.go
│   │       │       │   └── publicsuffix/
│   │       │       │       ├── gen.go
│   │       │       │       ├── list.go
│   │       │       │       └── table.go
│   │       │       ├── sys/
│   │       │       │   ├── AUTHORS
│   │       │       │   ├── CONTRIBUTORS
│   │       │       │   ├── LICENSE
│   │       │       │   ├── PATENTS
│   │       │       │   └── unix/
│   │       │       │       ├── .gitignore
│   │       │       │       ├── README.md
│   │       │       │       ├── affinity_linux.go
│   │       │       │       ├── aliases.go
│   │       │       │       ├── asm_aix_ppc64.s
│   │       │       │       ├── asm_darwin_386.s
│   │       │       │       ├── asm_darwin_amd64.s
│   │       │       │       ├── asm_darwin_arm.s
│   │       │       │       ├── asm_darwin_arm64.s
│   │       │       │       ├── asm_dragonfly_amd64.s
│   │       │       │       ├── asm_freebsd_386.s
│   │       │       │       ├── asm_freebsd_amd64.s
│   │       │       │       ├── asm_freebsd_arm.s
│   │       │       │       ├── asm_linux_386.s
│   │       │       │       ├── asm_linux_amd64.s
│   │       │       │       ├── asm_linux_arm.s
│   │       │       │       ├── asm_linux_arm64.s
│   │       │       │       ├── asm_linux_mips64x.s
│   │       │       │       ├── asm_linux_mipsx.s
│   │       │       │       ├── asm_linux_ppc64x.s
│   │       │       │       ├── asm_linux_s390x.s
│   │       │       │       ├── asm_netbsd_386.s
│   │       │       │       ├── asm_netbsd_amd64.s
│   │       │       │       ├── asm_netbsd_arm.s
│   │       │       │       ├── asm_openbsd_386.s
│   │       │       │       ├── asm_openbsd_amd64.s
│   │       │       │       ├── asm_openbsd_arm.s
│   │       │       │       ├── asm_solaris_amd64.s
│   │       │       │       ├── bluetooth_linux.go
│   │       │       │       ├── cap_freebsd.go
│   │       │       │       ├── constants.go
│   │       │       │       ├── dev_aix_ppc.go
│   │       │       │       ├── dev_aix_ppc64.go
│   │       │       │       ├── dev_darwin.go
│   │       │       │       ├── dev_dragonfly.go
│   │       │       │       ├── dev_freebsd.go
│   │       │       │       ├── dev_linux.go
│   │       │       │       ├── dev_netbsd.go
│   │       │       │       ├── dev_openbsd.go
│   │       │       │       ├── dirent.go
│   │       │       │       ├── endian_big.go
│   │       │       │       ├── endian_little.go
│   │       │       │       ├── env_unix.go
│   │       │       │       ├── errors_freebsd_386.go
│   │       │       │       ├── errors_freebsd_amd64.go
│   │       │       │       ├── errors_freebsd_arm.go
│   │       │       │       ├── fcntl.go
│   │       │       │       ├── fcntl_linux_32bit.go
│   │       │       │       ├── gccgo.go
│   │       │       │       ├── gccgo_c.c
│   │       │       │       ├── gccgo_linux_amd64.go
│   │       │       │       ├── ioctl.go
│   │       │       │       ├── mkall.sh
│   │       │       │       ├── mkerrors.sh
│   │       │       │       ├── mkpost.go
│   │       │       │       ├── mksyscall.pl
│   │       │       │       ├── mksyscall_aix_ppc.pl
│   │       │       │       ├── mksyscall_aix_ppc64.pl
│   │       │       │       ├── mksyscall_solaris.pl
│   │       │       │       ├── mksysctl_openbsd.pl
│   │       │       │       ├── mksysnum_darwin.pl
│   │       │       │       ├── mksysnum_dragonfly.pl
│   │       │       │       ├── mksysnum_freebsd.pl
│   │       │       │       ├── mksysnum_netbsd.pl
│   │       │       │       ├── mksysnum_openbsd.pl
│   │       │       │       ├── openbsd_pledge.go
│   │       │       │       ├── openbsd_unveil.go
│   │       │       │       ├── pagesize_unix.go
│   │       │       │       ├── race.go
│   │       │       │       ├── race0.go
│   │       │       │       ├── sockcmsg_linux.go
│   │       │       │       ├── sockcmsg_unix.go
│   │       │       │       ├── str.go
│   │       │       │       ├── syscall.go
│   │       │       │       ├── syscall_aix.go
│   │       │       │       ├── syscall_aix_ppc.go
│   │       │       │       ├── syscall_aix_ppc64.go
│   │       │       │       ├── syscall_bsd.go
│   │       │       │       ├── syscall_darwin.go
│   │       │       │       ├── syscall_darwin_386.go
│   │       │       │       ├── syscall_darwin_amd64.go
│   │       │       │       ├── syscall_darwin_arm.go
│   │       │       │       ├── syscall_darwin_arm64.go
│   │       │       │       ├── syscall_dragonfly.go
│   │       │       │       ├── syscall_dragonfly_amd64.go
│   │       │       │       ├── syscall_freebsd.go
│   │       │       │       ├── syscall_freebsd_386.go
│   │       │       │       ├── syscall_freebsd_amd64.go
│   │       │       │       ├── syscall_freebsd_arm.go
│   │       │       │       ├── syscall_linux.go
│   │       │       │       ├── syscall_linux_386.go
│   │       │       │       ├── syscall_linux_amd64.go
│   │       │       │       ├── syscall_linux_amd64_gc.go
│   │       │       │       ├── syscall_linux_arm.go
│   │       │       │       ├── syscall_linux_arm64.go
│   │       │       │       ├── syscall_linux_gc.go
│   │       │       │       ├── syscall_linux_gc_386.go
│   │       │       │       ├── syscall_linux_gccgo_386.go
│   │       │       │       ├── syscall_linux_gccgo_arm.go
│   │       │       │       ├── syscall_linux_mips64x.go
│   │       │       │       ├── syscall_linux_mipsx.go
│   │       │       │       ├── syscall_linux_ppc64x.go
│   │       │       │       ├── syscall_linux_riscv64.go
│   │       │       │       ├── syscall_linux_s390x.go
│   │       │       │       ├── syscall_linux_sparc64.go
│   │       │       │       ├── syscall_netbsd.go
│   │       │       │       ├── syscall_netbsd_386.go
│   │       │       │       ├── syscall_netbsd_amd64.go
│   │       │       │       ├── syscall_netbsd_arm.go
│   │       │       │       ├── syscall_openbsd.go
│   │       │       │       ├── syscall_openbsd_386.go
│   │       │       │       ├── syscall_openbsd_amd64.go
│   │       │       │       ├── syscall_openbsd_arm.go
│   │       │       │       ├── syscall_solaris.go
│   │       │       │       ├── syscall_solaris_amd64.go
│   │       │       │       ├── syscall_unix.go
│   │       │       │       ├── syscall_unix_gc.go
│   │       │       │       ├── syscall_unix_gc_ppc64x.go
│   │       │       │       ├── timestruct.go
│   │       │       │       ├── types_aix.go
│   │       │       │       ├── types_darwin.go
│   │       │       │       ├── types_dragonfly.go
│   │       │       │       ├── types_freebsd.go
│   │       │       │       ├── types_netbsd.go
│   │       │       │       ├── types_openbsd.go
│   │       │       │       ├── types_solaris.go
│   │       │       │       ├── xattr_bsd.go
│   │       │       │       ├── zerrors_aix_ppc.go
│   │       │       │       ├── zerrors_aix_ppc64.go
│   │       │       │       ├── zerrors_darwin_386.go
│   │       │       │       ├── zerrors_darwin_amd64.go
│   │       │       │       ├── zerrors_darwin_arm.go
│   │       │       │       ├── zerrors_darwin_arm64.go
│   │       │       │       ├── zerrors_dragonfly_amd64.go
│   │       │       │       ├── zerrors_freebsd_386.go
│   │       │       │       ├── zerrors_freebsd_amd64.go
│   │       │       │       ├── zerrors_freebsd_arm.go
│   │       │       │       ├── zerrors_linux_386.go
│   │       │       │       ├── zerrors_linux_amd64.go
│   │       │       │       ├── zerrors_linux_arm.go
│   │       │       │       ├── zerrors_linux_arm64.go
│   │       │       │       ├── zerrors_linux_mips.go
│   │       │       │       ├── zerrors_linux_mips64.go
│   │       │       │       ├── zerrors_linux_mips64le.go
│   │       │       │       ├── zerrors_linux_mipsle.go
│   │       │       │       ├── zerrors_linux_ppc64.go
│   │       │       │       ├── zerrors_linux_ppc64le.go
│   │       │       │       ├── zerrors_linux_riscv64.go
│   │       │       │       ├── zerrors_linux_s390x.go
│   │       │       │       ├── zerrors_linux_sparc64.go
│   │       │       │       ├── zerrors_netbsd_386.go
│   │       │       │       ├── zerrors_netbsd_amd64.go
│   │       │       │       ├── zerrors_netbsd_arm.go
│   │       │       │       ├── zerrors_openbsd_386.go
│   │       │       │       ├── zerrors_openbsd_amd64.go
│   │       │       │       ├── zerrors_openbsd_arm.go
│   │       │       │       ├── zerrors_solaris_amd64.go
│   │       │       │       ├── zptrace386_linux.go
│   │       │       │       ├── zptracearm_linux.go
│   │       │       │       ├── zptracemips_linux.go
│   │       │       │       ├── zptracemipsle_linux.go
│   │       │       │       ├── zsyscall_aix_ppc.go
│   │       │       │       ├── zsyscall_aix_ppc64.go
│   │       │       │       ├── zsyscall_aix_ppc64_gc.go
│   │       │       │       ├── zsyscall_aix_ppc64_gccgo.go
│   │       │       │       ├── zsyscall_darwin_386.go
│   │       │       │       ├── zsyscall_darwin_amd64.go
│   │       │       │       ├── zsyscall_darwin_arm.go
│   │       │       │       ├── zsyscall_darwin_arm64.go
│   │       │       │       ├── zsyscall_dragonfly_amd64.go
│   │       │       │       ├── zsyscall_freebsd_386.go
│   │       │       │       ├── zsyscall_freebsd_amd64.go
│   │       │       │       ├── zsyscall_freebsd_arm.go
│   │       │       │       ├── zsyscall_linux_386.go
│   │       │       │       ├── zsyscall_linux_amd64.go
│   │       │       │       ├── zsyscall_linux_arm.go
│   │       │       │       ├── zsyscall_linux_arm64.go
│   │       │       │       ├── zsyscall_linux_mips.go
│   │       │       │       ├── zsyscall_linux_mips64.go
│   │       │       │       ├── zsyscall_linux_mips64le.go
│   │       │       │       ├── zsyscall_linux_mipsle.go
│   │       │       │       ├── zsyscall_linux_ppc64.go
│   │       │       │       ├── zsyscall_linux_ppc64le.go
│   │       │       │       ├── zsyscall_linux_riscv64.go
│   │       │       │       ├── zsyscall_linux_s390x.go
│   │       │       │       ├── zsyscall_linux_sparc64.go
│   │       │       │       ├── zsyscall_netbsd_386.go
│   │       │       │       ├── zsyscall_netbsd_amd64.go
│   │       │       │       ├── zsyscall_netbsd_arm.go
│   │       │       │       ├── zsyscall_openbsd_386.go
│   │       │       │       ├── zsyscall_openbsd_amd64.go
│   │       │       │       ├── zsyscall_openbsd_arm.go
│   │       │       │       ├── zsyscall_solaris_amd64.go
│   │       │       │       ├── zsysctl_openbsd_386.go
│   │       │       │       ├── zsysctl_openbsd_amd64.go
│   │       │       │       ├── zsysctl_openbsd_arm.go
│   │       │       │       ├── zsysnum_darwin_386.go
│   │       │       │       ├── zsysnum_darwin_amd64.go
│   │       │       │       ├── zsysnum_darwin_arm.go
│   │       │       │       ├── zsysnum_darwin_arm64.go
│   │       │       │       ├── zsysnum_dragonfly_amd64.go
│   │       │       │       ├── zsysnum_freebsd_386.go
│   │       │       │       ├── zsysnum_freebsd_amd64.go
│   │       │       │       ├── zsysnum_freebsd_arm.go
│   │       │       │       ├── zsysnum_linux_386.go
│   │       │       │       ├── zsysnum_linux_amd64.go
│   │       │       │       ├── zsysnum_linux_arm.go
│   │       │       │       ├── zsysnum_linux_arm64.go
│   │       │       │       ├── zsysnum_linux_mips.go
│   │       │       │       ├── zsysnum_linux_mips64.go
│   │       │       │       ├── zsysnum_linux_mips64le.go
│   │       │       │       ├── zsysnum_linux_mipsle.go
│   │       │       │       ├── zsysnum_linux_ppc64.go
│   │       │       │       ├── zsysnum_linux_ppc64le.go
│   │       │       │       ├── zsysnum_linux_riscv64.go
│   │       │       │       ├── zsysnum_linux_s390x.go
│   │       │       │       ├── zsysnum_linux_sparc64.go
│   │       │       │       ├── zsysnum_netbsd_386.go
│   │       │       │       ├── zsysnum_netbsd_amd64.go
│   │       │       │       ├── zsysnum_netbsd_arm.go
│   │       │       │       ├── zsysnum_openbsd_386.go
│   │       │       │       ├── zsysnum_openbsd_amd64.go
│   │       │       │       ├── zsysnum_openbsd_arm.go
│   │       │       │       ├── ztypes_aix_ppc.go
│   │       │       │       ├── ztypes_aix_ppc64.go
│   │       │       │       ├── ztypes_darwin_386.go
│   │       │       │       ├── ztypes_darwin_amd64.go
│   │       │       │       ├── ztypes_darwin_arm.go
│   │       │       │       ├── ztypes_darwin_arm64.go
│   │       │       │       ├── ztypes_dragonfly_amd64.go
│   │       │       │       ├── ztypes_freebsd_386.go
│   │       │       │       ├── ztypes_freebsd_amd64.go
│   │       │       │       ├── ztypes_freebsd_arm.go
│   │       │       │       ├── ztypes_linux_386.go
│   │       │       │       ├── ztypes_linux_amd64.go
│   │       │       │       ├── ztypes_linux_arm.go
│   │       │       │       ├── ztypes_linux_arm64.go
│   │       │       │       ├── ztypes_linux_mips.go
│   │       │       │       ├── ztypes_linux_mips64.go
│   │       │       │       ├── ztypes_linux_mips64le.go
│   │       │       │       ├── ztypes_linux_mipsle.go
│   │       │       │       ├── ztypes_linux_ppc64.go
│   │       │       │       ├── ztypes_linux_ppc64le.go
│   │       │       │       ├── ztypes_linux_riscv64.go
│   │       │       │       ├── ztypes_linux_s390x.go
│   │       │       │       ├── ztypes_linux_sparc64.go
│   │       │       │       ├── ztypes_netbsd_386.go
│   │       │       │       ├── ztypes_netbsd_amd64.go
│   │       │       │       ├── ztypes_netbsd_arm.go
│   │       │       │       ├── ztypes_openbsd_386.go
│   │       │       │       ├── ztypes_openbsd_amd64.go
│   │       │       │       ├── ztypes_openbsd_arm.go
│   │       │       │       └── ztypes_solaris_amd64.go
│   │       │       └── text/
│   │       │           ├── AUTHORS
│   │       │           ├── CONTRIBUTORS
│   │       │           ├── LICENSE
│   │       │           ├── PATENTS
│   │       │           ├── collate/
│   │       │           │   ├── build/
│   │       │           │   │   ├── builder.go
│   │       │           │   │   ├── colelem.go
│   │       │           │   │   ├── contract.go
│   │       │           │   │   ├── order.go
│   │       │           │   │   ├── table.go
│   │       │           │   │   └── trie.go
│   │       │           │   ├── collate.go
│   │       │           │   ├── index.go
│   │       │           │   ├── maketables.go
│   │       │           │   ├── option.go
│   │       │           │   ├── sort.go
│   │       │           │   └── tables.go
│   │       │           ├── internal/
│   │       │           │   ├── colltab/
│   │       │           │   │   ├── collelem.go
│   │       │           │   │   ├── colltab.go
│   │       │           │   │   ├── contract.go
│   │       │           │   │   ├── iter.go
│   │       │           │   │   ├── numeric.go
│   │       │           │   │   ├── table.go
│   │       │           │   │   ├── trie.go
│   │       │           │   │   └── weighter.go
│   │       │           │   ├── gen/
│   │       │           │   │   ├── code.go
│   │       │           │   │   └── gen.go
│   │       │           │   ├── tag/
│   │       │           │   │   └── tag.go
│   │       │           │   ├── triegen/
│   │       │           │   │   ├── compact.go
│   │       │           │   │   ├── print.go
│   │       │           │   │   └── triegen.go
│   │       │           │   └── ucd/
│   │       │           │       └── ucd.go
│   │       │           ├── language/
│   │       │           │   ├── Makefile
│   │       │           │   ├── common.go
│   │       │           │   ├── coverage.go
│   │       │           │   ├── doc.go
│   │       │           │   ├── gen.go
│   │       │           │   ├── gen_common.go
│   │       │           │   ├── gen_index.go
│   │       │           │   ├── go1_1.go
│   │       │           │   ├── go1_2.go
│   │       │           │   ├── index.go
│   │       │           │   ├── language.go
│   │       │           │   ├── lookup.go
│   │       │           │   ├── match.go
│   │       │           │   ├── parse.go
│   │       │           │   ├── tables.go
│   │       │           │   └── tags.go
│   │       │           ├── secure/
│   │       │           │   └── bidirule/
│   │       │           │       ├── bidirule.go
│   │       │           │       ├── bidirule10.0.0.go
│   │       │           │       └── bidirule9.0.0.go
│   │       │           ├── transform/
│   │       │           │   └── transform.go
│   │       │           └── unicode/
│   │       │               ├── bidi/
│   │       │               │   ├── bidi.go
│   │       │               │   ├── bracket.go
│   │       │               │   ├── core.go
│   │       │               │   ├── gen.go
│   │       │               │   ├── gen_ranges.go
│   │       │               │   ├── gen_trieval.go
│   │       │               │   ├── prop.go
│   │       │               │   ├── tables10.0.0.go
│   │       │               │   ├── tables9.0.0.go
│   │       │               │   └── trieval.go
│   │       │               ├── cldr/
│   │       │               │   ├── base.go
│   │       │               │   ├── cldr.go
│   │       │               │   ├── collate.go
│   │       │               │   ├── decode.go
│   │       │               │   ├── makexml.go
│   │       │               │   ├── resolve.go
│   │       │               │   ├── slice.go
│   │       │               │   └── xml.go
│   │       │               ├── norm/
│   │       │               │   ├── composition.go
│   │       │               │   ├── forminfo.go
│   │       │               │   ├── input.go
│   │       │               │   ├── iter.go
│   │       │               │   ├── maketables.go
│   │       │               │   ├── normalize.go
│   │       │               │   ├── readwriter.go
│   │       │               │   ├── tables10.0.0.go
│   │       │               │   ├── tables9.0.0.go
│   │       │               │   ├── transform.go
│   │       │               │   ├── trie.go
│   │       │               │   └── triegen.go
│   │       │               └── rangetable/
│   │       │                   ├── gen.go
│   │       │                   ├── merge.go
│   │       │                   ├── rangetable.go
│   │       │                   ├── tables10.0.0.go
│   │       │                   └── tables9.0.0.go
│   │       └── gopkg.in/
│   │           └── yaml.v2/
│   │               ├── .travis.yml
│   │               ├── LICENSE
│   │               ├── LICENSE.libyaml
│   │               ├── NOTICE
│   │               ├── README.md
│   │               ├── apic.go
│   │               ├── decode.go
│   │               ├── emitterc.go
│   │               ├── encode.go
│   │               ├── go.mod
│   │               ├── parserc.go
│   │               ├── readerc.go
│   │               ├── resolve.go
│   │               ├── scannerc.go
│   │               ├── sorter.go
│   │               ├── writerc.go
│   │               ├── yaml.go
│   │               ├── yamlh.go
│   │               └── yamlprivateh.go
│   └── saas/
│       └── .gitkeep
└── saas/
    ├── .gitkeep
    ├── README.md
    ├── add_env.py
    ├── archive/
    │   ├── add_ee_env.py
    │   ├── add_env.py
    │   └── dashboard/
    │       ├── README.md
    │       ├── add_env_script.py
    │       ├── add_nav_script.py
    │       ├── dashboard-install.sh
    │       ├── dashboard.config
    │       ├── delete_nav_script.py
    │       └── saas_deploy_add.py
    ├── default_host_dashboard_dict.py
    ├── default_monitor_dashboard_dict.py
    ├── deploy.py
    ├── engine-server-script.py
    ├── init-ce-base.py
    ├── init-ce-devops.py
    ├── init-ce-monitor-zabbix.py
    ├── init-ce-monitor.py
    ├── init-ce-monitor_zabbix.py
    ├── init-ce-prometheus.py
    ├── init-ce-st2.py
    ├── init-ee-prometheus.py
    ├── init-llmops-ollama-script.py
    ├── init_cmdb_app_to_devops.py
    ├── init_work_order.py
    ├── invscript.py
    ├── invscript_proxy.py
    ├── opsany_dispatch.py
    ├── password-init.py
    ├── pipeline_batch_import.py
    ├── prom-pass.py
    ├── register_online_saas.py
    ├── reset_login_sort.py
    ├── sync-user-script.py
    ├── sync_proxy_hosts.py
    └── update-ce-st2.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitignore
================================================
### Python ###
# Byte-compiled / optimized / DLL files
paas-ce/paas/paas/media/saas_files/
__pycache__/
*.py[cod]
*$py.class
paas-runtime/
paas-agent/
logs/
# C extensions
*.so
gitpush.sh

# Distribution / packaging
.Python
# build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/

# Translations
*.mo
*.pot

# Django stuff:
*.log
local_settings.py
db.sqlite3

# Flask stuff:
instance/
.webassets-cache

# Scrapy stuff:
.scrapy

# Sphinx documentation
docs/_build/

# PyBuilder
target/

# Jupyter Notebook
.ipynb_checkpoints

# IPython
profile_default/
ipython_config.py

# pyenv
.python-version

# celery beat schedule file
celerybeat-schedule

# SageMath parsed files
*.sage.py

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# Spyder project settings
.spyderproject
.spyproject

# Rope project settings
.ropeproject

# mkdocs documentation
/site

# mypy
.mypy_cache/
.dmypy.json
dmypy.json

### Python Patch ###
.venv/

### Python.VirtualEnv Stack ###
# Virtualenv
# http://iamzed.com/2009/05/07/a-primer-on-virtualenv/
[Bb]in
[Ii]nclude
[Ll]ib64
[Ll]ocal
[Ss]cripts
pyvenv.cfg
pip-selfcheck.json

package-lock.json
node_modules
open_paas_unittest

.DS_Store
.vscode/
# End of https://www.gitignore.io/api/python


================================================
FILE: LICENSE.txt
================================================
Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) available.
Copyright (C) 2017-2018 THL A29 Limited, a Tencent company.  All rights reserved.
If you have downloaded a copy of the 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) binary from Tencent, please note that the 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) binary is licensed under the MIT License.
If you have downloaded a copy of the 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) source code from Tencent, please note that 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) source code is licensed under the MIT License, except for the third-party components listed below which are subject to different license terms.  Your integration of 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) into your own projects may require compliance with the MIT License, as well as the other licenses applicable to the third-party components included within 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition).
A copy of the MIT License is included in this file.


Other dependencies and licenses:

Open Source Software Licensed Under the BSD 3-Clause License:
The below software in this distribution may have been modified by THL A29 Limited (“Tencent Modifications”). All Tencent Modifications are Copyright (C) 2017-2018 THL A29 Limited.
----------------------------------------------------------------------------------------
1. Django  1.8.11
Copyright (c) Django Software Foundation and individual contributors.
All rights reserved.

2. Flask  0.10.1
Copyright (c) 2013 by Armin Ronacher and contributors.  See AUTHORS for more details.
Some rights reserved.

3. Flask-Babel  0.11.2
Copyright (c) 2010 by Armin Ronacher.
Some rights reserved.

4. qs  6.5.2
Copyright (c) 2014 Nathan LaFreniere and other contributors.
All rights reserved.


Terms of the BSD 3-Clause License:
--------------------------------------------------------------------
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of [copyright holder] nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.



Open Source Software Licensed Under the Apache License, Version 2.0:
----------------------------------------------------------------------------------------
1.  select2  3.5.3
Copyright 2014 Igor Vaynberg

2. bootstrap  2.0.4
Copyright 2012 Twitter, Inc.

3. bootstrap  2.3.2
Copyright 2012 Twitter, Inc.

4. webfontloader  1.6.24
Copyright (c) 2010 Adobe Systems Incorporated, Google Incorporated.

5. bootstrap-treeview  1.0.2
Copyright 2013 Jonathan Miles

6. bootstrap-datepicker  master
Copyright 2012 Stefan Petre
Improvements by Andrew Rowls

7. bootstrap-paginator  1.0.0
Copyright 2013 Yun Lai

8. sls-admin-vue  v1_async_router
Copyright  sailengsi sailengsi@126.com

9. NUTZ-ONEKEY  4.0
Copyright © 2018 - Kerbores. All Rights Reserved

10. solr  7.0.0
Copyright 2006-2017 The Apache Software Foundation


Terms of the Apache License, Version 2.0:
---------------------------------------------------
Apache License

Version 2.0, January 2004

http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

“License” shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

“Licensor” shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

“Legal Entity” shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

“You” (or “Your”) shall mean an individual or Legal Entity exercising permissions granted by this License.

“Source” form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

“Object” form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

“Work” shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

“Derivative Works” shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

“Contribution” shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, “submitted” means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as “Not a Contribution.”

“Contributor” shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

a) 	You must give any other recipients of the Work or Derivative Works a copy of this License; and

b) 	You must cause any modified files to carry prominent notices stating that You changed the files; and

c) 	You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and

d) 	If the Work includes a “NOTICE” text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.

You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.




Open Source Software Licensed under the Boost Software License-Version 1.0:
--------------------------------------------------------------------
1. Boost  1.34.1
Copyright 2000-2003 Beman Dawes


Terms of the Boost Software License-Version 1.0:
--------------------------------------------------------------------

Boost Software License - Version 1.0 - August 17th, 2003

Permission is hereby granted, free of charge, to any person or organization obtaining a copy of the software and accompanying documentation covered by this license (the "Software") to use, reproduce, display, distribute, execute, and transmit the Software, and to prepare derivative works of the Software, and to permit third-parties to whom the Software is furnished to do so, all subject to the following:

The copyright notices in the Software and this entire statement, including the above license grant, this restriction and the following disclaimer, must be included in all copies of the Software, in whole or in part, and all derivative works of the Software, unless such copies or derivative works are solely in the form of machine-executable object code generated by a source language processor.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



Open Source Software Licensed Under the MIT License:
----------------------------------------------------------------------------------------
1. jquery  1.7.2
Copyright (c) 2011 John Resig, http://jquery.com/

2. jquery  1.8.2
Copyright 2012 jQuery Foundation and other contributors
http://jquery.com/

3. jquery  1.8.3
Copyright 2012 jQuery Foundation and other contributors
http://jquery.com/

4. jquery  1.9.1
Copyright 2012 jQuery Foundation and other contributors
http://jquery.com/

5. jquery  1.10.2
Copyright 2013 jQuery Foundation and other contributors
http://jquery.com/

6. jquery  1.11.0
Copyright 2014 jQuery Foundation and other contributors
http://jquery.com/

7. jquery  1.11.2
Copyright 2014 jQuery Foundation and other contributors
http://jquery.com/

8. jquery-json  2.6.0
Copyright 2009-2011 Brantley Harris
Copyright 2010-2016 Timo Tijhof

9. bootstrap  3.1.1
Copyright (c) 2011-2014 Twitter, Inc

10. bootstrap  3.3.4
Copyright (c) 2011-2015 Twitter, Inc

11. bootstrap  3.3.5
Copyright (c) 2011-2015 Twitter, Inc

12. bootstrap  3.3.7
Copyright (c) 2011-2016 Twitter, Inc.

13. jquery-ui  1.10.4
Copyright 2014 jQuery Foundation and other contributors,
http://jqueryui.com/

14. jquery-ui  1.11.0
Copyright 2014 jQuery Foundation and other contributors,
http://jqueryui.com/

15. path-to-regexp  1.7.0
Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)

16. polyfill
Copyright (c) 2013 Philip Walton <http://philipwalton.com>

17. html5shiv  3.7.3
Copyright (c) 2014 Alexander Farkas (aFarkas)

18. bootstrap-daterangepicker  2.0.5
Copyright (c) 2012-2015 Dan Grossman

19. moment  2.10.3
Copyright (c) 2011-2015 Tim Wood, Iskren Chernev, Moment.js contributors

20. noty  2.4.1
Copyright (c) 2012 Nedim Arabacı

21. samrtmenus  1.0.1
Copyright (c) Vasil Dinkov, Vadikom Web Ltd.

22. handlebars.js  3.0.1
Copyright (C) 2011-2014 by Yehuda Katz

23. handlebars.js  4.0.5
Copyright (C) 2011-2015 by Yehuda Katz

24. jquery-cookie  1.4.1
Copyright 2014 Klaus Hartl

25. requirejs  2.1.15
Copyright (c) 2010-2014, The Dojo Foundation

26. jquery.zeroclipboard  0.2.0
Copyright (c) 2014 James M. Greene

27. switchery  0.8.2
Copyright (c) 2013-2015 Alexander Petkov

28. underscore  1.8.3
Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative
Reporters & Editors

29. List.js  1.3.0
Copyright (c) 2011-2014 Jonny Strömberg, jonnystromberg.com

30. jquery-validation  1.11.0
Copyright (c) 2013 Jörn Zaefferer

31. Respond  1.4.2
Copyright (c) 2012 Scott Jehl

32. metismenu  2.6.1
Copyright (c) 2015 Osman Nuri Okumuş

33. easy-pie-chart  2.1.6
Copyright (c) 2013 Robert Fleischmann

34. radialIndicator  1.2.0
Copyright (c) <2015> <Sudhanshu Yadav>

35. vue  2.4.2
Copyright (c) 2013-present, Yuxi (Evan) You

36. lodash  2.4.1
Copyright 2012-2013 The Dojo Foundation <http://dojofoundation.org/>
Based on Underscore.js 1.5.2, copyright 2009-2013 Jeremy Ashkenas,
DocumentCloud and Investigative Reporters & Editors http://underscorejs.org/

37. Sugar  1.4.1
Copyright © 2011 Andrew Plummer

38. jquery-mousewheel  3.0.6
Copyright 2011, Brandon Aaron (http://brandonaaron.net/)

39. jquery-mousewheel  3.1.12
Copyright (c) 2013, Brandon Aaron (http://brandon.aaron.sh)

40. DataTables  1.10.7
Copyright (c) 2008-2013 SpryMedia Limited
http://datatables.net

41. tablesorter  2.24.6
Copyright (c) 2007 Christian Bach

42. schedule  0.4.2
Copyright (c) 2013 Daniel Bader (http://dbader.org)

43. c3  0.4.10
Copyright (c) 2013 Masayuki Tanaka

44. Gritter for jQuery  1.7.4
Copyright (c) 2012 Jordan Boesch

45. daterangepicker  2.0.0
Copyright (c) 2012-2014 Dan Grossman

46. bootstrap-sortable  1.11.2
Copyright (c) 2013 Matúš Brliť (drvic10k), bootstrap-sortable contributors
Copyright (c) 2011-2013 Tim Wood, Iskren Chernev, Moment.js contributors

47. bootstrap-switch  3.3.4
Copyright (c) 2013-2015 The authors of Bootstrap Switch

48. clipboard.js  1.5.15
© Zeno Rocha

49. jquery-mobile  1.4.2
Copyright 2010, 2014 jQuery Foundation, Inc. and other contributors,
http://jquery.com/

50. element  2.4.1
Copyright (c) 2016 ElemeFE

51. art-template  4.13.0
Copyright (c) 2016 糖饼

52. axios  0.18.0
Copyright (c) 2014-present Matt Zabriskie

53. jsplumb  2.7.3
Copyright (c) 2010 - 2014 jsPlumb, http://jsplumbtoolkit.com/

54. plotly.js  1.39.4
Copyright (c) 2018 Plotly, Inc

55. popper.js  1.2.0
Copyright © 2016 Federico Zivolo and contributors

56. vue-router  3.0.1
Copyright (c) 2013-2016 Evan You

57. vee-validate  2.1.0-beta.6
Copyright (c) Abdelrahman Awad logaretm1@gmail.com

58. vuex  3.0.1
Copyright (c) 2015-2016 Evan You

59. Vue.Draggable  2.16.0
Copyright (c) 2016 David Desmaisons

60. ngx-treeview  master
Copyright (c) 2015-2017

61. redux-devtools-extension  2.15.0
Copyright (c) 2015-present Mihail Diordiev

62. nunuStudio  v0.8.9.22-alpha
Copyright (c) 2018 Tentone



Terms of the MIT License:
--------------------------------------------------------------------
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: README.md
================================================
# OpsAny运维PAAS平台

OpsAny-PaaS是基于腾讯开源[bk-PaaS](https://github.com/Tencent/bk-PaaS) 二次开发的运维开发平台,让运维开发者可以方便快捷地创建、开发、部署和管理运维SaaS应用。**你可以把PaaS看作是Spring CLoud这样的开发框架**,它提供了应用引擎、前后台开发框架、API网关、统一登录、公共组件等模块,帮助用户快速、低成本、免运维地构建支撑工具和运营系统(统称为SaaS应用),它为一个SaaS应用从创建到部署,再到后续的维护管理提供了完善的自动化和自助化服务,从而使开发者可以集中精力关注SaaS应用的逻辑开发。

> 如果你正在使用Python Django框架进行开发工作,几乎可以零成本的切换到PaaS上来,不要怀疑,现在就部署进行实践吧。

## 变更介绍

我们在bk-PaaS的基础上做了以下修改和变更:

- 升级Python2到Python 3.12。
- 升级Django1.8到Django 4.2.16。
- 修改了appengine的saas应用上传和部署逻辑,支持指定SAAS的Secret Key,不使用白名单机制。
- 修改了login部分逻辑,用于和统一权限配合,增加MFA,移动端适配等。
- 修改了paasagent的agent代码,增加了配置参数,修改了默认的SAAS配置文件。
- 增加了esb的API接口等。
- 增加了MFA、多语言、动态主题等。
- 增加WebSocket功能,用于堡垒机底层通信。
- 增加了容器化部署支持和一键部署脚本。
- 增加了OpsAny前后端开发框架,前端基于Vue3.0。

由于OpsAny使用的RBAC,而bk-paas后期采用的是ABAC,所以在权限控制方便需要进行改造后即可完全兼容腾讯蓝鲸。

## 我们提供的产品和服务

1. 【产品】OpsAny数字化运维平台,你可以理解OpsAny是:轻量级腾讯蓝鲸平台。
2. 【服务】提供开源软件源代码级别商业技术支持。

## 代码结构

源码组成如下:

```
paas-ce
├── paas 包含4大服务(python、Django)
│   ├── appengine  应用引擎 端口:8000
│   ├── esb        API网关 端口:8002
│   ├── login      统一登录服务 端口:8003
│   └── paas       开发中心&web工作台 端口:8001
└── paasagent      应用引擎Agent (golang) 端口:4245 Nginx:8085
└── websocket      堡垒机服务 端口:8004
```

## Docker容器在线部署

> 仅部署PaaS平台需要2C、4G内存的主机,部署OpsAny SaaS基础功能需要4C、8G内存的干净主机。生产使用推荐8C、16G内存。

1. 安装Docker和初始化使用的软件包

- 【CentOS 7】部署

  安装Docker和MySQL客户端

  ```
  curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
  curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  yum install -y git wget docker-ce mariadb jq python3 python3-pip python3-devel ntpdate
  systemctl enable --now docker
  ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  ntpdate time1.aliyun.com
  ```

- 【CentOS 8】部署

  安装Docker和MySQL客户端

  ```
  dnf config-manager --add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  dnf -y install docker-ce --nobest
  dnf -y install mariadb jq git
  systemctl enable --now docker
  ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  ```

- 【Ubuntu】 部署

    安装Docker和MySQL客户端

    ```
    # step 1: 安装必要的一些系统工具
    sudo apt-get update
    sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
    # step 2: 安装GPG证书
    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
    # Step 3: 写入软件源信息
    sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
    # Step 4: 更新并安装Docker-CE
    sudo apt-get -y update
    sudo apt-get -y install docker-ce jq wget mysql-client git ntpdate
    systemctl enable --now docker
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    ntpdate time1.aliyun.com
    ```

2. 选择一个代码仓库克隆代码

```
# Gitee
cd /opt && sudo git clone https://gitee.com/unixhot/opsany-paas.git

# Github
cd /opt && sudo git clone https://github.com/unixhot/opsany-paas.git
```

3. 修改配置文件

> 注意!注意!注意!切记修改install.config中所有的IP地址,可以批量查找替换。

```
cd /opt/opsany-paas/install && cp install.config.example install.config
vim /opt/opsany-paas/install/install.config

# 安装OpsAny的本机内网IP地址。请批量查找替换将192.168.56.11修改为部署OpsAny的本机IP地址。
LOCAL_IP="192.168.56.11"

# 访问OpsAny PaaS的域名,如果是在内网访问请修改为和LOCAL_IP一样,如果是外网访问,请修改为真实访问的域名或者公网IP。
安装后暂不支持修改,此配置会作为Cookie的作用域的域名,所以如果配置的和访问的不同,会导致无法通过验证。官方文档中有修改域名的办法。
DOMAIN_NAME="192.168.56.11"
```

4. 执行安装脚本进行PAAS平台部署

```
cd /opt/opsany-paas/install/
./paas-install.sh 
```

5. 访问域名测试,默认用户名admin 密码admin

  http://192.168.56.11/

> 再次强调,访问的地址和在install.config中配置的DOMAIN_NAME必须一致,不一致无法登录。

6. 验证PAAS部署

- 访问平台:查看【开发中心】-【服务器信息】 查看状态
- 访问平台:查看【开发中心】-【第三方服务】 查看状态


## 部署OpsAny社区版本

安装完毕OpsAny PaaS之后,就可以进行运维开发工作了,不过PaaS仅仅是一个开发平台,并没有任何运维功能。你也可以继续部署OpsAny社区版本,进行日常运维工作,OpsAny社区版是OpsAny产品团队,自主研发的智能运维平台:支持自定义插件,支持用户使用Python、Shell、Powershell编写例如工具脚本、资产采集插件、智能巡检插件、指标采集插件等。

> OpsAny社区版本v2.3.0正式发布 >> [免费安装使用](https://docs.opsany.com/deploy/base-install/)

## 寻求商业化合作

在OpsAny官网首页的右侧浮窗,可以点击【微信咨询】,联系我们。



================================================
FILE: docs/CONTRIBUTING.md
================================================
# Contributing to bk-PaaS

我们欢迎[report Issues](https://github.com/unixhot/opsany-paas/issues) 或者 [pull requests](https://github.com/unixhot/opsany-paas/pulls)。 在贡献代码之前请阅读以下指引。

## 问题管理

我们用 Github Issues 去跟踪 public bugs 和 feature requests。

### 查找已知的issue 优先

请查找已存在或者相类似的issue,从而保证不存在冗余。

### 新建 Issues

新建issues 时请提供详细的描述、截屏或者短视频来辅助我们定位问题

### [分支管理](./VERSION.md)

###  Pull Requests

我们欢迎大家贡献代码来使我们的PaaS更加强大,代码团队会监控所有的pull request, 我们会做相应的代码检查和测试,测试通过之后我们就会接纳PR ,但是不会立即合并到master分支。

在完成一个pr之前请做一下确认:

1. 从 `master` 或者 `hotfix` fork 你自己的分支。
2. 在修改了代码之后请修改对应的文档和注释。
3. 在新建的文件中请加入license 和copy right申明。
4. 确保一致的代码风格。
5. 做充分的测试。
6. 然后,你可以提交你的代码到 `dev` 或者 `hotfix` 分支。


## 代码协议

[MIT LICENSE](https://github.com/unixhot/opsany-paas/blob/master/LICENSE) 为OpsAny-PaaS的开源协议,您贡献的代码也会受此协议保护。



================================================
FILE: docs/ISSUE_TEMPLATE.md
================================================
<!--
感谢提交issue, 在提交前, 请回答下列的问题, 以便更高效地沟通.

另外, 可以先根据关键字搜索issue, 可能已经有其他用户提交过了.

如果是一个 bug反馈. 尽可能提供详细的信息, 否则我们可能无法帮助到你

如果是一个 需求提交, 请对需求进行详细描述.

Thanks for filing an issue! Before hitting the button, please answer these questions. It's helpful to search the existing GitHub issues first. It's likely that another user has already reported the issue you're facing, or it's a known issue that we're already aware of

If this is a BUG REPORT, please:
  - Fill in as much of the template below as you can.  If you leave out
    information, we can't help you as well.

If this is a FEATURE REQUEST, please:
  - Describe *in detail* the feature/behavior/change you'd like to see.
-->


**是`BUG反馈`还是`需求提交`(Is this a BUG REPORT or FEATURE REQUEST)?** (choose one):


**PaaS/PaaSAgent版本(The versions used):**


**发生了什么(What happened):**


**期望是什么(What you expected to happen):**


**如何复现(How to reproduce it):**


**相关的日志详情(访问日志及应用日志: paas.log/login.log/esb.log/esb_api.log)和截图等(Log & Screenshot):**


**备注(Anything else we need to know):** 





================================================
FILE: docs/PULL_REQUEST_TEMPLATE.md
================================================
<!--
请保证PR标题明确清晰, 易于理解
Keep PR title verbose enough

相关issue可以是 #编号 或者贴 issue链接
`Fixes #<issue number>`, or `Fixes (paste link of issue)`.
-->


## 变更点(Changes)

- xxxx

## 相关issues (Which issues this PR fixes)

- Fixes #

## 备注(Special notes)



================================================
FILE: docs/README.md
================================================
# PaaS开发环境部署文档

提示:本文档适合开发者在本地开发主机部署PaaS开发环境,大部分情况下是不需要进行PaaS开发的。如果仅仅是开发SaaS平台,不需要参考此文档,可以使用容器化部署OpsAny,然后查看官方文档-开发手册-SaaS平台开发手册即可。

## 系统要求

- 操作系统:Ubunut 20.04、22.04、24.04
- 数据库: MySQL、MongoDB、Redis、Elasticsearch
- 消息队列:RabbitMQ、Redis
- Python版本: Python 3.12.4(PaaS使用)、Python 3.7.17(部分SaaS使用)

1. 部署说明

- `paas-ce` web侧一共5个项目: paas/appengine/login/esb/websocket; 均是基于Django开发的
- 项目部署过程一致; 过程中需要注意每个项目的配置文件及拉起的端口号(每个项目需要使用不同的端口号)
- 可以部署在同一台机器上, 使用不同端口号即可。
- 后续所有操作均以Ubuntu操作系统为准,其它操作系统请自行调整。

2. 预分配端口号

预先分配每个服务的端口号, 假设部署机器IP为`192.168.0.111`

- appengine: 192.168.0.111:8000 
- paas: 192.168.0.111:8001
- esb: 192.168.0.111:8002
- login: 192.168.0.111:8003 
- websocket: 192.168.0.111:8004

服务间是相互依赖的, 所以部署配置文件中需要将预先分配的服务地址填写到对应变量中。

## 开发环境准备(Ubuntu)

1. 基础软件包安装和Redis、RabbitMQ、Nginx、Mariadb等安装。

```
apt-get update
apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev \
libgdbm-dev libnss3-dev libedit-dev libc6-dev screen wget uuid unzip \
redis-server mariadb-server rabbitmq-server nginx supervisor tcl-dev \
libmariadb-dev-compat libmariadb-dev libsasl2-dev libldap2-dev libssl-dev \
gcc libjpeg-dev libtiff5-dev libpng-dev libfreetype6-dev
```

2. 初始化MySQL数据库。

```
# 修改配置文件
[root@linux-node1 ~]# vim vim /etc/mysql/mariadb.conf.d/50-server.cnf 
bind-address            = 192.168.0.111
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8

# 启动MySQL并进行初始化
[root@linux-node1 ~]# systemctl enable mariadb && systemctl start mariadb
[root@linux-node1 ~]# mysql_secure_installation 

# 创建数据库
[root@linux-node1 ~]# mysql -u root -p
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS opsany_paas DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB [(none)]> CREATE DATABASE IF NOT EXISTS opsany_proxy DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
MariaDB [(none)]> CREATE USER opsany@'%' identified by "\"${MYSQL_OPSANY_PASSWORD}\"";
MariaDB [(none)]> grant all on opsany_paas.* to opsany@'%';
MariaDB [(none)]> grant all on opsany_proxy.* to opsany@'%';
MariaDB [(none)]> exit;
```

3. 部署Redis数据库

- 配置Redis

```
[root@linux-node1 ~]# vim /etc/redis/redis.conf
bind 0.0.0.0
daemonize yes
requirepass 123456.coM
```

- 启动Redis

```
[root@linux-node1 ~]# systemctl enable --now redis-server
```

4. 部署RabbitMQ消息队列

- 设置开启启动,并启动RabbitMQ

```
[root@linux-node1 ~]# systemctl enable rabbitmq-server.service
[root@linux-node1 ~]# systemctl start rabbitmq-server.service
```

- 添加用户。

创建一个opsany用户,密码为123456.coM。注意实际使用中进行密码修改,这里设置的用户名和密码在后面配置OpenStack组件的时候需要在配置文件里面设置。
```
[root@linux-node1 ~]# rabbitmqctl add_user opsany 123456.coM
Creating user "opsany" ...
[root@linux-node1 ~]# rabbitmqctl set_user_tags opsany administrator
```

- 给刚才创建的openstack用户,创建权限。

```
[root@linux-node1 ~]# rabbitmqctl set_permissions opsany ".*" ".*" ".*"
Setting permissions for user "opsany" in vhost "/" ...
```

- 启用Web监控插件

RabbitMQ自带了一个Web监控插件,可以通过Web界面监控RabbitMQ的运行状态。同时也提供了HTTP API。可以方便的集成到Nagios、Zabbix等监控平台上。
Web监控插件启用后就可以通过http://IP:15672/来访问web管理界面。

```
[root@linux-node1 ~]# rabbitmq-plugins list
[root@linux-node1 ~]# rabbitmq-plugins enable rabbitmq_management
[root@linux-node1 ~]# systemctl restart rabbitmq-server
(注:如果主机名不能解析,rabbitMQ将无法启动。在生产应用时建议设置为集群模式,建议三个节点。1个硬盘节点、两个内存节点。)
[root@linux-node1 ~]# lsof -i:15672
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
beam    2620 rabbitmq   15u  IPv4  16805      0t0  TCP *:15672 (LISTEN)
```
默认情况下RabbitMQ服务使用5672端口,而Web管理插件监听15672端口,直接在浏览器输入http://192.168.56.11:15672

> RabbitMQ默认的用户名和密码均为guest。之前创建的openstack的用户是无法通过Web界面登录的。


5. 克隆代码并准备Python环境

已知CentOS 7由于GCC版本比较低,无法成功编译Python3.12,推荐使用Ubuntu 22.04。

- 5.1 准备Python3环境

```
# 编译安装Python 3.12.4
[root@linux-node1 ~]# yum install -y abc abc-devel
[root@linux-node1 ~]# cd /usr/local/src
[root@linux-node1 src]# wget https://www.python.org/ftp/python/3.12.4/Python-3.12.4.tgz
[root@linux-node1 src]# tar zxf Python-3.12.4.tgz
[root@linux-node1 src]# cd Python-3.12.4/
[root@linux-node1 Python-3.6.8]# ./configure --prefix=/usr/local/Python-3.12.4 --enable-ipv6 --enable-optimizations
[root@linux-node1 Python-3.6.8]# make && make install

# 编译安装Python 3.7.17
[root@linux-node1 ~]# yum install -y abc abc-devel
[root@linux-node1 ~]# cd /usr/local/src
[root@linux-node1 src]# wget https://www.python.org/ftp/python/3.7.17/Python-3.7.17.tgz
[root@linux-node1 src]# tar zxf Python-3.7.17.tgz
[root@linux-node1 src]# cd Python-3.7.17/
[root@linux-node1 Python-3.6.8]# ./configure --prefix=/usr/local/Python-3.7.17 --enable-ipv6 --enable-optimizations
[root@linux-node1 Python-3.6.8]# make && make install
```

- 5.2 确认Python版本

```
[root@ops ~]# ln -s /usr/local/Python-3.12.4 /opt/py312
[root@ops ~]# /opt/py312/bin/python3 --version
Python 3.12.4
[root@ops ~]# ln -s /usr/local/Python-3.7.17 /opt/py37
[root@ops ~]# /opt/py37/bin/python3 --version
Python 3.7.17
```

- 5.3 克隆项目代码

```
[root@linux-node1 ~]# cd /opt
[root@linux-node1 opt]# git clone https://gitee.com/unixhot/opsany-paas.git
[root@linux-node1 opt]# cd /opt/opsany-paas/
[root@linux-node1 opt]# /opt/py312/bin/pip3 install virtualenv -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
[root@linux-node1 opt]# mkdir -p /opt/opsany-paas/.runtime
```

## 部署paas服务

### 1.初始化Python虚拟环境
```
# 创建Python虚拟环境
[root@linux-node1 opt]# screen -S paas
[root@linux-node1 opt]# cd /opt/opsany-paas/.runtime/
[root@linux-node1 .runtime]# /usr/local/Python-3.12.4/bin/python3 -m venv paas

# 使用Python虚拟环境
[root@linux-node1 .runtime]# source /opt/opsany-paas/.runtime/paas/bin/activate

# 安装依赖软件包
(paas) [root@linux-node1 .runtime]# cd /opt/opsany-paas/paas-ce/paas/paas/
(paas) [root@linux-node1 .runtime]# pip3 install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
```

### 2.配置paas

- 修改数据库配置,可以根据需求修改域名和端口,这里保持默认。
```
(paas) [root@linux-node1 paas]# cp conf/settings_development.py.sample
(paas) [root@linux-node1 paas]# vim conf/settings_development.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'opsany_paas',
        'USER': 'opsany',
        'PASSWORD': '123456.coM',
        'HOST': '192.168.0.111',
        'PORT': '3306',
    }
}

PAAS_DOMAIN = '192.168.0.111'
BK_COOKIE_DOMAIN = '192.168.0.111'
```

- 进行数据库初始化(如果遇到权限问题请检查数据库授权)

```
(paas) [root@linux-node1 paas]# python manage.py migrate
(paas) [root@linux-node1 paas]# python manage.py runserver --skip-checks 0.0.0.0:8001
```

- 退出Screen(Ctrl + A + D)

## 部署login服务

### 1.初始化Python虚拟环境
```
# 创建Python虚拟环境
[root@linux-node1 ~]# screen -S login
[root@linux-node1 ~]# cd /opt/opsany-paas/.runtime/
[root@linux-node1 .runtime]# /usr/local/Python-3.12.4/bin/python3 -m venv login

# 使用Python虚拟环境
[root@linux-node1 .runtime]# source /opt/opsany-paas/.runtime/login/bin/activate
(login) [root@linux-node1 .runtime]# cd /opt/opsany-paas/paas-ce/paas/login/

# 安装依赖软件包
(login) [root@linux-node1 login]# pip3 install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
```

### 2.配置login

- 修改数据库配置,可以根据需求修改域名和端口,这里保持默认。

```
(login) [root@linux-node1 login]# cp conf/settings_development.py.sample conf/settings_development.py
(login) [root@linux-node1 login]# vim conf/settings_development.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'opsany_paas',
        'USER': 'paas',
        'PASSWORD': '123456.coM',
        'HOST': '192.168.0.111',
        'PORT': '3306',
    }
}
# cookie访问域
BK_COOKIE_DOMAIN = '192.168.0.111'
```

- 进行数据库初始化(如果遇到权限问题请检查数据库授权)

```
(login) [root@linux-node1 login]# python3 manage.py migrate
(login) [root@linux-node1 login]# python3 manage.py runserver 0.0.0.0:8003
```

- 退出Screen(Ctrl + A + D)


## 部署appengine服务

### 1.初始化Python虚拟环境
```
# 创建Python虚拟环境
[root@linux-node1 conf]# screen -S appengine
[root@linux-node1 conf]# cd /opt/bk-paas/.runtime/
[root@linux-node1 .runtime]# /usr/local/Python-3.12.4/bin/python3 -m venv appengine

# 使用Python虚拟环境
[root@linux-node1 opt]# source /opt/bk-paas/.runtime/appengine/bin/activate

# 安装依赖软件包
(appengine) [root@linux-node1 paas-runtime]# cd /opt/opsany-paas/paas-ce/paas/appengine/
(appengine) [root@linux-node1 appengine]# pip3 install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
```

### 2.配置appengine

- 修改数据库配置,可以根据需求修改域名和端口,这里保持默认。
```
 (appengine) [root@linux-node1 appengine]# cp controller/settings_sample.py controller/settings.py
(appengine) [root@linux-node1 appengine]# vim controller/settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'opsany_paas',
        'USER': 'opsany',
        'PASSWORD': '123456.coM',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}
```

- 进行数据库初始化(如果遇到权限问题请检查数据库授权)

```
(appengine) [root@linux-node1 appengine]# python manage.py migrate
(appengine) [root@linux-node1 appengine]# python manage.py runserver 0.0.0.0:8000
```

- 退出Screen(Ctrl + A + D)

## 部署esb服务

### 1.初始化Python虚拟环境
```
# 创建Python虚拟环境
[root@linux-node1 ~]# screen -S esb
[root@linux-node1 ~]# cd /opt/opsany-paas/.runtime/
[root@linux-node1 .runtime]# /usr/local/Python-3.12.4/bin/python3 -m venv esb

# 使用Python虚拟环境
[root@linux-node1 .runtime]# source /opt/opsany-paas/.runtime/esb/bin/activate

# 安装依赖软件包
(esb) [root@linux-node1 esb]# cd /opt/opsany-paas/paas-ce/paas/esb/
(esb) [root@linux-node1 esb]# pip3 install -r requirements.txt -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
```

### 2.配置esb

- 修改数据库配置,可以根据需求修改域名和端口,这里保持默认。
```
(esb) [root@linux-node1 esb]# cp configs/default_template.py configs/default.py
(esb) [root@linux-node1 esb]# vim configs/default.py 
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'opsany_paas',
        'USER': 'opsany',
        'PASSWORD': '123456.coM',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}
```

- 进行数据库初始化(如果遇到权限问题请检查数据库授权)

```
(esb) [root@linux-node1 esb]# python manage.py migrate
(esb) [root@linux-node1 esb]# python manage.py runserver 0.0.0.0:8002
```

- 退出Screen(Ctrl + A + D)

### 配置Nginx访问

```
[root@ops ~]# cd /opt/opsany-paas/paas-ce/paas/examples/
[root@ops examples]# cp nginx_paas.conf /etc/nginx/conf.d/
[root@ops examples]# vim /etc/nginx/conf.d/nginx_paas.conf
[root@paas-node-1 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@paas-node-1 ~]# systemctl start nginx

# 登录页面的图片需要放置在uploads下面,不然打开登录页图片无法展示。
[root@paas-node-1 ~]# cp -r /opt/opsany-paas/install/uploads/login /opt/opsany/uploads/
```

### 访问PAAS平台。
 - http://192.168.0.111/
 - 默认用户名密码:admin admin


================================================
FILE: install/.gitkeep
================================================


================================================
FILE: install/README.md
================================================
# 安装目录介绍

install是OpsAny社区版的安装脚本存放目录,安装脚本会进行系统初始化,并使用Docker启动所有服务。

## 安装脚本介绍

- paas-install.sh:用来安装PaaS平台,注意,仅安装PaaS平台,没有任何运维应用平台。

- saas-base-install.sh:用来安装OpsAny社区版,除了监控外的所有平台。

- saas-monitor-install.sh:用来安装OpsAny社区版的监控平台,因为监控平台依赖ElasticSearch等服务,需要部署主机至少具有8G内存。

- uninstall.sh:卸载脚本,注意:会删除掉本机的所有容器,所以OpsAny部署需要一个干净的独立的主机。

## 目录介绍

- conf:部署需要的配置文件存放位置

- init:部署时需要的初始化数据目录。

- uploads:此目录存放离线官方文档,和平台图片和图标等,部署时会移动到安装目录下,存放用户上传的数据。

- opsany-xxx:所有以“opsany-”开头的目录是各个服务Docker镜像的构建目录,官方使用的镜像,均使用目录下的Dockerfile进行构建。如果需要部署在ARM CPU的主机上,需要重新构建镜像。

## 国产信创支持

如果您需要部署在国产化的主机和操作系统上,请联系我们进行商业支持。


================================================
FILE: install/conf/README.md
================================================
# 安装配置目录

本目录下存放安装时的所有配置文件,安装脚本会将该目录复制到安装的目标路径后,使用sed将相关的配置项进行查找替换,然后所有OpsAny容器启动后,挂载的均为安装目录下的配置文件。


================================================
FILE: install/conf/consul.hcl
================================================
acl {
   enabled = true
   default_policy = "deny"
   down_policy = "extend-cache"
   tokens = {
      master = "CONSUL_TOKEN"
   }
}


================================================
FILE: install/conf/daemon.json
================================================
{
  "registry-mirrors": ["https://dx5z2hy7.mirror.aliyuncs.com"],
   "insecure-registries" : ["nexus.opsany.com:8009"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  }
}


================================================
FILE: install/conf/elastic/apm-server.yml
================================================
apm-server:
  host: "0.0.0.0:8200"
output.elasticsearch:
  hosts: ["http://ES_SERVER_IP:ELASTIC_PORT"]
  auth:
    secret_token: "APM_SECRET_TOKEN"
  username: "ES_USER"
  password: "ES_PASSWORD"


================================================
FILE: install/conf/elastic/elasticsearch.yml
================================================
cluster.name: "docker-cluster"
network.host: 0.0.0.0


================================================
FILE: install/conf/elastic/heartbeat.yml
================================================
################### Heartbeat Configuration Example #########################

# This file is an example configuration file highlighting only some common options.
# The heartbeat.reference.yml file in the same directory contains all the supported options
# with detailed comments. You can use it for reference.
#
# You can find the full configuration reference here:
# https://www.elastic.co/guide/en/beats/heartbeat/index.html

############################# Heartbeat ######################################

# Define a directory to load monitor definitions from. Definitions take the form
# of individual yaml files.
heartbeat.config.monitors:
  # Directory + glob pattern to search for configuration files
  path: ${path.config}/monitors.d/*.yml
  # If enabled, heartbeat will periodically check the config.monitors path for changes
  reload.enabled: true
  # How often to check for changes
  reload.period: 5s

# Configure monitors inline
#heartbeat.monitors:
#- type: icmp
  # ID used to uniquely identify this monitor in elasticsearch even if the config changes
#  id: icmp-test
  # Human readable display name for this service in Uptime UI and elsewhere
#  name: icmp test
  # List or urls to query
  # Configure task schedule
#  schedule: '@every 10s'
  # Total test connection and data exchange timeout
  #timeout: 16s
  # Name of corresponding APM service, if Elastic APM is in use for the monitored service.
  #service.name: my-apm-service-name

# ======================= Elasticsearch template setting =======================

setup.template.settings:
  index.number_of_shards: 1
  index.codec: best_compression
  #_source.enabled: false
setup.template.enabled: true
setup.template.name: "heartbeat-%{[agent.version]}-%{+yyyy.MM}"
setup.template.pattern: "heartbeat-%{[agent.version]}-*"
setup.template.fields: "${path.config}/fields.yml"

# ================================== General ===================================

# The name of the shipper that publishes the network data. It can be used to group
# all the transactions sent by a single shipper in the web interface.
#name:

# The tags of the shipper are included in their own field with each
# transaction published.
#tags: ["service-X", "web-tier"]

# Optional fields that you can specify to add additional information to the
# output.
#fields:
#  env: staging


# =================================== Kibana ===================================

# Starting with Beats version 6.0.0, the dashboards are loaded via the Kibana API.
# This requires a Kibana endpoint configuration.
#setup.kibana:

  # Kibana Host
  # Scheme and port can be left out and will be set to the default (http and 5601)
  # In case you specify and additional path, the scheme is required: http://localhost:5601/path
  # IPv6 addresses should always be defined as: https://[2001:db8::1]:5601
  #host: "localhost:5601"

  # Kibana Space ID
  # ID of the Kibana Space into which the dashboards should be loaded. By default,
  # the Default Space will be used.
  #space.id:

# =============================== Elastic Cloud ================================

# These settings simplify using Heartbeat with the Elastic Cloud (https://cloud.elastic.co/).

# The cloud.id setting overwrites the `output.elasticsearch.hosts` and
# `setup.kibana.host` options.
# You can find the `cloud.id` in the Elastic Cloud web UI.
#cloud.id:

# The cloud.auth setting overwrites the `output.elasticsearch.username` and
# `output.elasticsearch.password` settings. The format is `<user>:<pass>`.
#cloud.auth:

# ================================== Outputs ===================================

# Configure what output to use when sending the data collected by the beat.

# ---------------------------- Elasticsearch Output ----------------------------
output.elasticsearch:
  # Array of hosts to connect to.
  hosts: ["ES_SERVER_IP:9200"]

  # Protocol - either `http` (default) or `https`.
  #protocol: "https"

  # Authentication credentials - either API key or username/password.
  #api_key: "id:api_key"
  username: "elastic"
  password: "ES_PASSWORD"
  index: "heartbeat-%{[agent.version]}-%{+yyyy.MM}"


# ------------------------------ Logstash Output -------------------------------
#output.logstash:
  # The Logstash hosts
  #hosts: ["localhost:5044"]

  # Optional SSL. By default is off.
  # List of root certificates for HTTPS server verifications
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]

  # Certificate for SSL client authentication
  #ssl.certificate: "/etc/pki/client/cert.pem"

  # Client Certificate Key
  #ssl.key: "/etc/pki/client/cert.key"

# ================================= Processors =================================

processors:
  - add_observer_metadata:
      # Optional, but recommended geo settings for the location Heartbeat is running in
      #geo:
        # Token describing this location
        #name: us-east-1a
        # Lat, Lon "
        #location: "37.926868, -78.024902"


# ================================== Logging ===================================

# Sets log level. The default log level is info.
# Available log levels are: error, warning, info, debug
logging.level: error

# At debug level, you can selectively enable logging only for some components.
# To enable all selectors use ["*"]. Examples of other selectors are "beat",
# "publisher", "service".
#logging.selectors: ["*"]

# ============================= X-Pack Monitoring ==============================
# Heartbeat can export internal metrics to a central Elasticsearch monitoring
# cluster.  This requires xpack monitoring to be enabled in Elasticsearch.  The
# reporting is disabled by default.

# Set to true to enable the monitoring reporter.
#monitoring.enabled: false

# Sets the UUID of the Elasticsearch cluster under which monitoring data for this
# Heartbeat instance will appear in the Stack Monitoring UI. If output.elasticsearch
# is enabled, the UUID is derived from the Elasticsearch cluster referenced by output.elasticsearch.
#monitoring.cluster_uuid:

# Uncomment to send the metrics to Elasticsearch. Most settings from the
# Elasticsearch output are accepted here as well.
# Note that the settings should point to your Elasticsearch *monitoring* cluster.
# Any setting that is not set is automatically inherited from the Elasticsearch
# output configuration, so if you have the Elasticsearch output configured such
# that it is pointing to your Elasticsearch monitoring cluster, you can simply
# uncomment the following line.
#monitoring.elasticsearch:

# ============================== Instrumentation ===============================

# Instrumentation support for the heartbeat.
#instrumentation:
    # Set to true to enable instrumentation of heartbeat.
    #enabled: false

    # Environment in which heartbeat is running on (eg: staging, production, etc.)
    #environment: ""

    # APM Server hosts to report instrumentation results to.
    #hosts:
    #  - http://localhost:8200

    # API Key for the APM Server(s).
    # If api_key is set then secret_token will be ignored.
    #api_key:

    # Secret token for the APM Server(s).
    #secret_token:


# ================================= Migration ==================================

# This allows to enable 6.7 migration aliases
#migration.6_to_7.enabled: true


================================================
FILE: install/conf/elastic/kibana.yml
================================================
elasticsearch.hosts: [ "http://ES_SERVER_IP:ELASTIC_PORT" ]
server.host: "0.0.0.0"
elasticsearch.username: "ES_USER"
elasticsearch.password: "ES_PASSWORD"
i18n.locale: "zh-CN"
monitoring.ui.container.elasticsearch.enabled: true


================================================
FILE: install/conf/grafana/grafana.ini
================================================
##################### Grafana Configuration Example #####################
#
# Everything has defaults so you only need to uncomment things you want to
# change

# possible values : production, development
;app_mode = production

# instance name, defaults to HOSTNAME environment variable value or hostname if HOSTNAME var is empty
;instance_name = ${HOSTNAME}

#################################### Paths ####################################
[paths]
# Path to where grafana can store temp files, sessions, and the sqlite3 db (if that is used)
;data = /var/lib/grafana

# Temporary files in `data` directory older than given duration will be removed
;temp_data_lifetime = 24h

# Directory where grafana can store logs
;logs = /var/log/grafana

# Directory where grafana will automatically scan and look for plugins
;plugins = /var/lib/grafana/plugins

# folder that contains provisioning config files that grafana will apply on startup and while running.
;provisioning = conf/provisioning

#################################### Server ####################################
[server]
# Protocol (http, https, h2, socket)
protocol = https

# The ip address to bind to, empty will bind to all interfaces
;http_addr =

# The http port  to use
;http_port = 3000

# The public facing domain name used to access grafana from a browser
;domain = localhost

# Redirect to correct domain if host header does not match domain
# Prevents DNS rebinding attacks
;enforce_domain = false

# The full public facing url you use in browser, used for redirects and emails
# If you use reverse proxy and sub path specify full url (with sub path)
;root_url = %(protocol)s://%(domain)s:%(http_port)s/
root_url = %(protocol)s://%(domain)s:%(http_port)s/grafana/

# Serve Grafana from subpath specified in `root_url` setting. By default it is set to `false` for compatibility reasons.
;serve_from_sub_path = false
serve_from_sub_path = true

# Log web requests
;router_logging = false

# the path relative working path
;static_root_path = public

# enable gzip
;enable_gzip = false

# https certs & key file
cert_file = /etc/grafana/grafana.pem
cert_key = /etc/grafana/grafana.key

# Unix socket path
;socket =

#################################### Database ####################################
[database]
# You can configure the database connection by specifying type, host, name, user and password
# as separate properties or as on string using the url properties.

# Either "mysql", "postgres" or "sqlite3", it's your choice
;type = sqlite3
;host = 127.0.0.1:3306
;name = grafana
;user = root
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
;password =

# Use either URL or the previous fields to configure the database
# Example: mysql://user:secret@host:port/database
;url =

# For "postgres" only, either "disable", "require" or "verify-full"
;ssl_mode = disable

;ca_cert_path =
;client_key_path =
;client_cert_path =
;server_cert_name =

# For "sqlite3" only, path relative to data_path setting
;path = grafana.db

# Max idle conn setting default is 2
;max_idle_conn = 2

# Max conn setting default is 0 (mean not set)
;max_open_conn =

# Connection Max Lifetime default is 14400 (means 14400 seconds or 4 hours)
;conn_max_lifetime = 14400

# Set to true to log the sql calls and execution times.
;log_queries =

# For "sqlite3" only. cache mode setting used for connecting to the database. (private, shared)
;cache_mode = private

#################################### Cache server #############################
[remote_cache]
# Either "redis", "memcached" or "database" default is "database"
;type = database

# cache connectionstring options
# database: will use Grafana primary database.
# redis: config like redis server e.g. `addr=127.0.0.1:6379,pool_size=100,db=0,ssl=false`. Only addr is required. ssl may be 'true', 'false', or 'insecure'.
# memcache: 127.0.0.1:11211
;connstr =

#################################### Data proxy ###########################
[dataproxy]

# This enables data proxy logging, default is false
;logging = false

# How long the data proxy waits before timing out, default is 30 seconds.
# This setting also applies to core backend HTTP data sources where query requests use an HTTP client with timeout set.
;timeout = 30

# How many seconds the data proxy waits before sending a keepalive probe request.
;keep_alive_seconds = 30

# How many seconds the data proxy waits for a successful TLS Handshake before timing out.
;tls_handshake_timeout_seconds = 10

# How many seconds the data proxy will wait for a server's first response headers after
# fully writing the request headers if the request has an "Expect: 100-continue"
# header. A value of 0 will result in the body being sent immediately, without
# waiting for the server to approve.
;expect_continue_timeout_seconds = 1

# The maximum number of idle connections that Grafana will keep alive.
;max_idle_connections = 100

# How many seconds the data proxy keeps an idle connection open before timing out.
;idle_conn_timeout_seconds = 90

# If enabled and user is not anonymous, data proxy will add X-Grafana-User header with username into the request, default is false.
;send_user_header = false

#################################### Analytics ####################################
[analytics]
# Server reporting, sends usage counters to stats.grafana.org every 24 hours.
# No ip addresses are being tracked, only simple counters to track
# running instances, dashboard and error counts. It is very helpful to us.
# Change this option to false to disable reporting.
;reporting_enabled = true

# Set to false to disable all checks to https://grafana.net
# for new versions (grafana itself and plugins), check is used
# in some UI views to notify that grafana or plugin update exists
# This option does not cause any auto updates, nor send any information
# only a GET request to http://grafana.com to get latest versions
;check_for_updates = true

# Google Analytics universal tracking code, only enabled if you specify an id here
;google_analytics_ua_id =

# Google Tag Manager ID, only enabled if you specify an id here
;google_tag_manager_id =

#################################### Security ####################################
[security]
# disable creation of admin user on first start of grafana
;disable_initial_admin_creation = false

# default admin user, created on startup
;admin_user = admin

# default admin password, can be changed before first start of grafana,  or in profile settings
;admin_password = admin

# used for signing
;secret_key = SW2YcwTIb9zpOOhoPsMm

# disable gravatar profile images
;disable_gravatar = false

# data source proxy whitelist (ip_or_domain:port separated by spaces)
;data_source_proxy_whitelist =

# disable protection against brute force login attempts
;disable_brute_force_login_protection = false

# set to true if you host Grafana behind HTTPS. default is false.
;cookie_secure = false

# set cookie SameSite attribute. defaults to `lax`. can be set to "lax", "strict", "none" and "disabled"
;cookie_samesite = lax

# set to true if you want to allow browsers to render Grafana in a <frame>, <iframe>, <embed> or <object>. default is false.
allow_embedding = true

# Set to true if you want to enable http strict transport security (HSTS) response header.
# This is only sent when HTTPS is enabled in this configuration.
# HSTS tells browsers that the site should only be accessed using HTTPS.
;strict_transport_security = false

# Sets how long a browser should cache HSTS. Only applied if strict_transport_security is enabled.
;strict_transport_security_max_age_seconds = 86400

# Set to true if to enable HSTS preloading option. Only applied if strict_transport_security is enabled.
;strict_transport_security_preload = false

# Set to true if to enable the HSTS includeSubDomains option. Only applied if strict_transport_security is enabled.
;strict_transport_security_subdomains = false

# Set to true to enable the X-Content-Type-Options response header.
# The X-Content-Type-Options response HTTP header is a marker used by the server to indicate that the MIME types advertised
# in the Content-Type headers should not be changed and be followed.
;x_content_type_options = true

# Set to true to enable the X-XSS-Protection header, which tells browsers to stop pages from loading
# when they detect reflected cross-site scripting (XSS) attacks.
;x_xss_protection = true

#################################### Snapshots ###########################
[snapshots]
# snapshot sharing options
;external_enabled = true
;external_snapshot_url = https://snapshots-origin.raintank.io
;external_snapshot_name = Publish to snapshot.raintank.io

# Set to true to enable this Grafana instance act as an external snapshot server and allow unauthenticated requests for
# creating and deleting snapshots.
;public_mode = false

# remove expired snapshot
;snapshot_remove_expired = true

#################################### Dashboards History ##################
[dashboards]
# Number dashboard versions to keep (per dashboard). Default: 20, Minimum: 1
;versions_to_keep = 20

# Minimum dashboard refresh interval. When set, this will restrict users to set the refresh interval of a dashboard lower than given interval. Per default this is 5 seconds.
# The interval string is a possibly signed sequence of decimal numbers, followed by a unit suffix (ms, s, m, h, d), e.g. 30s or 1m.
;min_refresh_interval = 5s

# Path to the default home dashboard. If this value is empty, then Grafana uses StaticRootPath + "dashboards/home.json"
;default_home_dashboard_path =

#################################### Users ###############################
[users]
# disable user signup / registration
;allow_sign_up = true

# Allow non admin users to create organizations
;allow_org_create = true

# Set to true to automatically assign new users to the default organization (id 1)
;auto_assign_org = true

# Set this value to automatically add new users to the provided organization (if auto_assign_org above is set to true)
;auto_assign_org_id = 1

# Default role new users will be automatically assigned (if disabled above is set to true)
auto_assign_org_role = Viewer

# Require email validation before sign up completes
;verify_email_enabled = false

# Background text for the user field on the login page
;login_hint = email or username
;password_hint = password

# Default UI theme ("dark" or "light")
default_theme = light

# External user management, these options affect the organization users view
;external_manage_link_url =
;external_manage_link_name =
;external_manage_info =

# Viewers can edit/inspect dashboard settings in the browser. But not save the dashboard.
;viewers_can_edit = false

# Editors can administrate dashboard, folders and teams they create
;editors_can_admin = false

# The duration in time a user invitation remains valid before expiring. This setting should be expressed as a duration. Examples: 6h (hours), 2d (days), 1w (week). Default is 24h (24 hours). The minimum supported duration is 15m (15 minutes).
;user_invite_max_lifetime_duration = 24h

[auth]
# Login cookie name
;login_cookie_name = grafana_session

# The maximum lifetime (duration) an authenticated user can be inactive before being required to login at next visit. Default is 7 days (7d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month). The lifetime resets at each successful token rotation.
;login_maximum_inactive_lifetime_duration =

# The maximum lifetime (duration) an authenticated user can be logged in since login time before being required to login. Default is 30 days (30d). This setting should be expressed as a duration, e.g. 5m (minutes), 6h (hours), 10d (days), 2w (weeks), 1M (month).
;login_maximum_lifetime_duration =

# How often should auth tokens be rotated for authenticated users when being active. The default is each 10 minutes.
;token_rotation_interval_minutes = 10

# Set to true to disable (hide) the login form, useful if you use OAuth, defaults to false
;disable_login_form = false

# Set to true to disable the signout link in the side menu. useful if you use auth.proxy, defaults to false
;disable_signout_menu = false

# URL to redirect the user to after sign out
;signout_redirect_url =

# Set to true to attempt login with OAuth automatically, skipping the login screen.
# This setting is ignored if multiple OAuth providers are configured.
;oauth_auto_login = false

# OAuth state max age cookie duration in seconds. Defaults to 600 seconds.
;oauth_state_cookie_max_age = 600

# limit of api_key seconds to live before expiration
;api_key_max_seconds_to_live = -1

# Set to true to enable SigV4 authentication option for HTTP-based datasources.
;sigv4_auth_enabled = false

#################################### Anonymous Auth ######################
[auth.anonymous]
# enable anonymous access
enabled = false

# specify organization name that should be used for unauthenticated users
;org_name = Main Org.

# specify role for unauthenticated users
;org_role = Editor

# mask the Grafana version number for unauthenticated users
;hide_version = false

#################################### GitHub Auth ##########################
[auth.github]
;enabled = false
;allow_sign_up = true
;client_id = some_id
;client_secret = some_secret
;scopes = user:email,read:org
;auth_url = https://github.com/login/oauth/authorize
;token_url = https://github.com/login/oauth/access_token
;api_url = https://api.github.com/user
;allowed_domains =
;team_ids =
;allowed_organizations =

#################################### GitLab Auth #########################
[auth.gitlab]
;enabled = false
;allow_sign_up = true
;client_id = some_id
;client_secret = some_secret
;scopes = api
;auth_url = https://gitlab.com/oauth/authorize
;token_url = https://gitlab.com/oauth/token
;api_url = https://gitlab.com/api/v4
;allowed_domains =
;allowed_groups =

#################################### Google Auth ##########################
[auth.google]
;enabled = false
;allow_sign_up = true
;client_id = some_client_id
;client_secret = some_client_secret
;scopes = https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email
;auth_url = https://accounts.google.com/o/oauth2/auth
;token_url = https://accounts.google.com/o/oauth2/token
;api_url = https://www.googleapis.com/oauth2/v1/userinfo
;allowed_domains =
;hosted_domain =

#################################### Grafana.com Auth ####################
[auth.grafana_com]
;enabled = false
;allow_sign_up = true
;client_id = some_id
;client_secret = some_secret
;scopes = user:email
;allowed_organizations =

#################################### Azure AD OAuth #######################
[auth.azuread]
;name = Azure AD
;enabled = false
;allow_sign_up = true
;client_id = some_client_id
;client_secret = some_client_secret
;scopes = openid email profile
;auth_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/authorize
;token_url = https://login.microsoftonline.com/<tenant-id>/oauth2/v2.0/token
;allowed_domains =
;allowed_groups =

#################################### Okta OAuth #######################
[auth.okta]
;name = Okta
;enabled = false
;allow_sign_up = true
;client_id = some_id
;client_secret = some_secret
;scopes = openid profile email groups
;auth_url = https://<tenant-id>.okta.com/oauth2/v1/authorize
;token_url = https://<tenant-id>.okta.com/oauth2/v1/token
;api_url = https://<tenant-id>.okta.com/oauth2/v1/userinfo
;allowed_domains =
;allowed_groups =
;role_attribute_path =

#################################### Generic OAuth ##########################
[auth.generic_oauth]
;enabled = false
;name = OAuth
;allow_sign_up = true
;client_id = some_id
;client_secret = some_secret
;scopes = user:email,read:org
;email_attribute_name = email:primary
;email_attribute_path =
;login_attribute_path =
;id_token_attribute_name =
;auth_url = https://foo.bar/login/oauth/authorize
;token_url = https://foo.bar/login/oauth/access_token
;api_url = https://foo.bar/user
;allowed_domains =
;team_ids =
;allowed_organizations =
;role_attribute_path =
;tls_skip_verify_insecure = false
;tls_client_cert =
;tls_client_key =
;tls_client_ca =

#################################### Basic Auth ##########################
[auth.basic]
enabled = true

#################################### Auth Proxy ##########################
[auth.proxy]
enabled = true
;header_name = X-WEBAUTH-USER
;header_property = username
;auto_sign_up = true
;sync_ttl = 60
;whitelist = 172.19.199.148
;headers = Email:X-User-Email, Name:X-User-Name
# Read the auth proxy docs for details on what the setting below enables
;enable_login_token = false

#################################### Auth LDAP ##########################
[auth.ldap]
;enabled = false
;config_file = /etc/grafana/ldap.toml
;allow_sign_up = true

# LDAP backround sync (Enterprise only)
# At 1 am every day
;sync_cron = "0 0 1 * * *"
;active_sync_enabled = true

#################################### SMTP / Emailing ##########################
[smtp]
;enabled = false
;host = localhost:25
;user =
# If the password contains # or ; you have to wrap it with triple quotes. Ex """#password;"""
;password =
;cert_file =
;key_file =
;skip_verify = false
;from_address = admin@grafana.localhost
;from_name = Grafana
# EHLO identity in SMTP dialog (defaults to instance_name)
;ehlo_identity = dashboard.example.com
# SMTP startTLS policy (defaults to 'OpportunisticStartTLS')
;startTLS_policy = NoStartTLS

[emails]
;welcome_email_on_sign_up = false
;templates_pattern = emails/*.html

#################################### Logging ##########################
[log]
# Either "console", "file", "syslog". Default is console and  file
# Use space to separate multiple modes, e.g. "console file"
;mode = console file

# Either "debug", "info", "warn", "error", "critical", default is "info"
;level = info

# optional settings to set different levels for specific loggers. Ex filters = sqlstore:debug
;filters =

# For "console" mode only
[log.console]
;level =

# log line format, valid options are text, console and json
;format = console

# For "file" mode only
[log.file]
;level =

# log line format, valid options are text, console and json
;format = text

# This enables automated log rotate(switch of following options), default is true
;log_rotate = true

# Max line number of single file, default is 1000000
;max_lines = 1000000

# Max size shift of single file, default is 28 means 1 << 28, 256MB
;max_size_shift = 28

# Segment log daily, default is true
;daily_rotate = true

# Expired days of log file(delete after max days), default is 7
;max_days = 7

[log.syslog]
;level =

# log line format, valid options are text, console and json
;format = text

# Syslog network type and address. This can be udp, tcp, or unix. If left blank, the default unix endpoints will be used.
;network =
;address =

# Syslog facility. user, daemon and local0 through local7 are valid.
;facility =

# Syslog tag. By default, the process' argv[0] is used.
;tag =

#################################### Usage Quotas ########################
[quota]
; enabled = false

#### set quotas to -1 to make unlimited. ####
# limit number of users per Org.
; org_user = 10

# limit number of dashboards per Org.
; org_dashboard = 100

# limit number of data_sources per Org.
; org_data_source = 10

# limit number of api_keys per Org.
; org_api_key = 10

# limit number of orgs a user can create.
; user_org = 10

# Global limit of users.
; global_user = -1

# global limit of orgs.
; global_org = -1

# global limit of dashboards
; global_dashboard = -1

# global limit of api_keys
; global_api_key = -1

# global limit on number of logged in users.
; global_session = -1

#################################### Alerting ############################
[alerting]
# Disable alerting engine & UI features
;enabled = true
# Makes it possible to turn off alert rule execution but alerting UI is visible
;execute_alerts = true

# Default setting for new alert rules. Defaults to categorize error and timeouts as alerting. (alerting, keep_state)
;error_or_timeout = alerting

# Default setting for how Grafana handles nodata or null values in alerting. (alerting, no_data, keep_state, ok)
;nodata_or_nullvalues = no_data

# Alert notifications can include images, but rendering many images at the same time can overload the server
# This limit will protect the server from render overloading and make sure notifications are sent out quickly
;concurrent_render_limit = 5


# Default setting for alert calculation timeout. Default value is 30
;evaluation_timeout_seconds = 30

# Default setting for alert notification timeout. Default value is 30
;notification_timeout_seconds = 30

# Default setting for max attempts to sending alert notifications. Default value is 3
;max_attempts = 3

# Makes it possible to enforce a minimal interval between evaluations, to reduce load on the backend
;min_interval_seconds = 1

# Configures for how long alert annotations are stored. Default is 0, which keeps them forever.
# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).
;max_annotation_age =

# Configures max number of alert annotations that Grafana stores. Default value is 0, which keeps all alert annotations.
;max_annotations_to_keep =

#################################### Annotations #########################

[annotations.dashboard]
# Dashboard annotations means that annotations are associated with the dashboard they are created on.

# Configures how long dashboard annotations are stored. Default is 0, which keeps them forever.
# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).
;max_age =

# Configures max number of dashboard annotations that Grafana stores. Default value is 0, which keeps all dashboard annotations.
;max_annotations_to_keep =

[annotations.api]
# API annotations means that the annotations have been created using the API without any
# association with a dashboard.

# Configures how long Grafana stores API annotations. Default is 0, which keeps them forever.
# This setting should be expressed as a duration. Examples: 6h (hours), 10d (days), 2w (weeks), 1M (month).
;max_age =

# Configures max number of API annotations that Grafana keeps. Default value is 0, which keeps all API annotations.
;max_annotations_to_keep =

#################################### Explore #############################
[explore]
# Enable the Explore section
;enabled = true

#################################### Internal Grafana Metrics ##########################
# Metrics available at HTTP API Url /metrics
[metrics]
# Disable / Enable internal metrics
;enabled           = true
# Graphite Publish interval
;interval_seconds  = 10
# Disable total stats (stat_totals_*) metrics to be generated
;disable_total_stats = false

#If both are set, basic auth will be required for the metrics endpoint.
; basic_auth_username =
; basic_auth_password =

# Metrics environment info adds dimensions to the `grafana_environment_info` metric, which
# can expose more information about the Grafana instance.
[metrics.environment_info]
#exampleLabel1 = exampleValue1
#exampleLabel2 = exampleValue2

# Send internal metrics to Graphite
[metrics.graphite]
# Enable by setting the address setting (ex localhost:2003)
;address =
;prefix = prod.grafana.%(instance_name)s.

#################################### Grafana.com integration  ##########################
# Url used to import dashboards directly from Grafana.com
[grafana_com]
;url = https://grafana.com

#################################### Distributed tracing ############
[tracing.jaeger]
# Enable by setting the address sending traces to jaeger (ex localhost:6831)
;address = localhost:6831
# Tag that will always be included in when creating new spans. ex (tag1:value1,tag2:value2)
;always_included_tag = tag1:value1
# Type specifies the type of the sampler: const, probabilistic, rateLimiting, or remote
;sampler_type = const
# jaeger samplerconfig param
# for "const" sampler, 0 or 1 for always false/true respectively
# for "probabilistic" sampler, a probability between 0 and 1
# for "rateLimiting" sampler, the number of spans per second
# for "remote" sampler, param is the same as for "probabilistic"
# and indicates the initial sampling rate before the actual one
# is received from the mothership
;sampler_param = 1
# sampling_server_url is the URL of a sampling manager providing a sampling strategy.
;sampling_server_url =
# Whether or not to use Zipkin propagation (x-b3- HTTP headers).
;zipkin_propagation = false
# Setting this to true disables shared RPC spans.
# Not disabling is the most common setting when using Zipkin elsewhere in your infrastructure.
;disable_shared_zipkin_spans = false

#################################### External image storage ##########################
[external_image_storage]
# Used for uploading images to public servers so they can be included in slack/email messages.
# you can choose between (s3, webdav, gcs, azure_blob, local)
;provider =

[external_image_storage.s3]
;endpoint =
;path_style_access =
;bucket =
;region =
;path =
;access_key =
;secret_key =

[external_image_storage.webdav]
;url =
;public_url =
;username =
;password =

[external_image_storage.gcs]
;key_file =
;bucket =
;path =

[external_image_storage.azure_blob]
;account_name =
;account_key =
;container_name =

[external_image_storage.local]
# does not require any configuration

[rendering]
# Options to configure a remote HTTP image rendering service, e.g. using https://github.com/grafana/grafana-image-renderer.
# URL to a remote HTTP image renderer service, e.g. http://localhost:8081/render, will enable Grafana to render panels and dashboards to PNG-images using HTTP requests to an external service.
;server_url =
# If the remote HTTP image renderer service runs on a different server than the Grafana server you may have to configure this to a URL where Grafana is reachable, e.g. http://grafana.domain/.
;callback_url =
# Concurrent render request limit affects when the /render HTTP endpoint is used. Rendering many images at the same time can overload the server,
# which this setting can help protect against by only allowing a certain amount of concurrent requests.
;concurrent_render_request_limit = 30

[panels]
# If set to true Grafana will allow script tags in text panels. Not recommended as it enable XSS vulnerabilities.
;disable_sanitize_html = false

[plugins]
;enable_alpha = false
;app_tls_skip_verify_insecure = false
# Enter a comma-separated list of plugin identifiers to identify plugins that are allowed to be loaded even if they lack a valid signature.
;allow_loading_unsigned_plugins =
;marketplace_url = https://grafana.com/grafana/plugins/

#################################### Grafana Image Renderer Plugin ##########################
[plugin.grafana-image-renderer]
# Instruct headless browser instance to use a default timezone when not provided by Grafana, e.g. when rendering panel image of alert.
# See ICU’s metaZones.txt (https://cs.chromium.org/chromium/src/third_party/icu/source/data/misc/metaZones.txt) for a list of supported
# timezone IDs. Fallbacks to TZ environment variable if not set.
;rendering_timezone =

# Instruct headless browser instance to use a default language when not provided by Grafana, e.g. when rendering panel image of alert.
# Please refer to the HTTP header Accept-Language to understand how to format this value, e.g. 'fr-CH, fr;q=0.9, en;q=0.8, de;q=0.7, *;q=0.5'.
;rendering_language =

# Instruct headless browser instance to use a default device scale factor when not provided by Grafana, e.g. when rendering panel image of alert.
# Default is 1. Using a higher value will produce more detailed images (higher DPI), but will require more disk space to store an image.
;rendering_viewport_device_scale_factor =

# Instruct headless browser instance whether to ignore HTTPS errors during navigation. Per default HTTPS errors are not ignored. Due to
# the security risk it's not recommended to ignore HTTPS errors.
;rendering_ignore_https_errors =

# Instruct headless browser instance whether to capture and log verbose information when rendering an image. Default is false and will
# only capture and log error messages. When enabled, debug messages are captured and logged as well.
# For the verbose information to be included in the Grafana server log you have to adjust the rendering log level to debug, configure
# [log].filter = rendering:debug.
;rendering_verbose_logging =

# Instruct headless browser instance whether to output its debug and error messages into running process of remote rendering service.
# Default is false. This can be useful to enable (true) when troubleshooting.
;rendering_dumpio =

# Additional arguments to pass to the headless browser instance. Default is --no-sandbox. The list of Chromium flags can be found
# here (https://peter.sh/experiments/chromium-command-line-switches/). Multiple arguments is separated with comma-character.
;rendering_args =

# You can configure the plugin to use a different browser binary instead of the pre-packaged version of Chromium.
# Please note that this is not recommended, since you may encounter problems if the installed version of Chrome/Chromium is not
# compatible with the plugin.
;rendering_chrome_bin =

# Instruct how headless browser instances are created. Default is 'default' and will create a new browser instance on each request.
# Mode 'clustered' will make sure that only a maximum of browsers/incognito pages can execute concurrently.
# Mode 'reusable' will have one browser instance and will create a new incognito page on each request.
;rendering_mode =

# When rendering_mode = clustered you can instruct how many browsers or incognito pages can execute concurrently. Default is 'browser'
# and will cluster using browser instances.
# Mode 'context' will cluster using incognito pages.
;rendering_clustering_mode =
# When rendering_mode = clustered you can define maximum number of browser instances/incognito pages that can execute concurrently..
;rendering_clustering_max_concurrency =

# Limit the maximum viewport width, height and device scale factor that can be requested.
;rendering_viewport_max_width =
;rendering_viewport_max_height =
;rendering_viewport_max_device_scale_factor =

# Change the listening host and port of the gRPC server. Default host is 127.0.0.1 and default port is 0 and will automatically assign
# a port not in use.
;grpc_host =
;grpc_port =

[enterprise]
# Path to a valid Grafana Enterprise license.jwt file
;license_path =

[feature_toggles]
# enable features, separated by spaces
;enable =

[date_formats]
# For information on what formatting patterns that are supported https://momentjs.com/docs/#/displaying/

# Default system date format used in time range picker and other places where full time is displayed
;full_date = YYYY-MM-DD HH:mm:ss

# Used by graph and other places where we only show small intervals
;interval_second = HH:mm:ss
;interval_minute = HH:mm
;interval_hour = MM/DD HH:mm
;interval_day = MM/DD
;interval_month = YYYY-MM
;interval_year = YYYY

# Experimental feature
;use_browser_locale = false

# Default timezone for user preferences. Options are 'browser' for the browser local timezone or a timezone name from IANA Time Zone database, e.g. 'UTC' or 'Europe/Amsterdam' etc.
;default_timezone = browser


================================================
FILE: install/conf/grafana/grafana.key
================================================
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA24z73a6FyNu+v/QlOtk7LxIz0oAnM5zyGH57FtO7xK1yNRBO
QTsA8V0B694uYiOmGl+nwyjS9PqNVQ+KIaYC8wQT+LxeH82rNqHMkTSNQ+I6wX/e
i8PriATgb9NhEeinyzjsvEPIUNVwUvTon8Kix51uq0wDX9Pdc2uHeTwEs2qLCx/t
QZBieXmODcInbscyizf4Ta7+6C4lHX00E/LzEA/ERh+jCVi7IWF+Mf31wr08kfRu
OGqWAoBg1koyw/ZzNQ5D6WUPUd9OQMOvKio0JMUGWcZuFg/ZxmDFjR6H9uakurW0
qYrxqrGZp+NkNnqgybnwmZqmS36OxpxymhbArwIDAQABAoIBAC+/eKNcqlHloJWE
lng2+E0ja0vTfTMXZft3vnNXdxWuFxF9S1eaankTnjBa8MF9OUmxFf42qbKHrycZ
qxPoU+ngMCu/Y8UM6LiH9cJ6qGJkGB0vHwpMgLPjQ6BuW0UW0S88YRgMscsKsFQK
WXEtVlONZJ0yeeVkYVwRvbPbHraaBRe1O4CgfCCGhtCV5ln5MVzhgATH3kZJbXT2
31YkvbKa+bECgJ9OH7PT0OBIBq89mRCUrNemGuc8RJBK6bRt4Mq8Ej3gkyTZ3azS
P5wD1olIWabmpuIsjEUBpsP5DtdGAHceC0gXo66PgqGXSG303S3V6wovZOeUMtH8
Hxsrt9kCgYEA9SnEc6o+PH3O2jo7hil3CWVQdGXpzTfrYWXzbppESuTxgJQLvPDL
UpNjCZ15rJTrlPZyU4MmMpxyjIKTJRScBYAIrPYw+QHn7FW4wrDQHLQHGMPOzk5Y
M9HCGzDLVJR+mo4Qpd1W63QFXxgiEMrZ87mKj20XlefHQTZ2nHNpjW0CgYEA5UFj
wFMWN2xTQvTd7BTFum8wMBNhxzroeoAWFA4TYsKpgwJFTGyGdRMPBVhZRQHYVK19
8pzuRc+AMQhFDeBb01aRE4Lp7N5O4TJCiqcpqJBtaNSg0mXSS2vmrP1eH9rNfSjP
VMWTtQ/D+E0VwsHV9tpalA5Pv1lwvpbUlCgZQQsCgYEAjuKM8KykITVhvaZ60rKQ
AhXeUjijj0usD9QPkMKwUsYkSr/+J1xf4/yqmAwDwiX5N5R7BVlGhfDQgjwH7nCY
jkwUwlmqKTaHKSK80Buk71WtXS2h9nOKzIjQDHDf0KfLMeDiqwjZg9jW2JmEIS1Y
4cedjgIS4Pd5FfTcJErPlfECgYEAs3eFB0ID2k9KvtfCAtYgE9qG9pu1p6lN5Nfw
cLK0KlQJLy3P4gvzFiNdVunauFLBb0iBmDORs8TErZ2zsTE5sS/LUmLhjTRau6AE
x1YlHngxricF3q8m+TP22OVfkcBPrPMNm2cwQkWdO/vcVSI4xY4Z6l1pwHnb8NdS
gskBPBECgYBPOrx57pJesyNpcTuIJ0Ot+9/qke3V2ZjyxFjaKjv3gupg0WBRayn7
PNlkNvjR0InjVkxx8+fwmi1kn8yPN3kaB9CvyR0AVgn36i840XcOqtjgsdmVzzpK
x92xUbukNlgDWgDfLugRp8mrryik0MeHKgfZbpUnIU3dPwSTbr+BoQ==
-----END RSA PRIVATE KEY-----


================================================
FILE: install/conf/grafana/grafana.pem
================================================
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEA24z73a6FyNu+v/QlOtk7LxIz0oAnM5zyGH57FtO7xK1yNRBO
QTsA8V0B694uYiOmGl+nwyjS9PqNVQ+KIaYC8wQT+LxeH82rNqHMkTSNQ+I6wX/e
i8PriATgb9NhEeinyzjsvEPIUNVwUvTon8Kix51uq0wDX9Pdc2uHeTwEs2qLCx/t
QZBieXmODcInbscyizf4Ta7+6C4lHX00E/LzEA/ERh+jCVi7IWF+Mf31wr08kfRu
OGqWAoBg1koyw/ZzNQ5D6WUPUd9OQMOvKio0JMUGWcZuFg/ZxmDFjR6H9uakurW0
qYrxqrGZp+NkNnqgybnwmZqmS36OxpxymhbArwIDAQABAoIBAC+/eKNcqlHloJWE
lng2+E0ja0vTfTMXZft3vnNXdxWuFxF9S1eaankTnjBa8MF9OUmxFf42qbKHrycZ
qxPoU+ngMCu/Y8UM6LiH9cJ6qGJkGB0vHwpMgLPjQ6BuW0UW0S88YRgMscsKsFQK
WXEtVlONZJ0yeeVkYVwRvbPbHraaBRe1O4CgfCCGhtCV5ln5MVzhgATH3kZJbXT2
31YkvbKa+bECgJ9OH7PT0OBIBq89mRCUrNemGuc8RJBK6bRt4Mq8Ej3gkyTZ3azS
P5wD1olIWabmpuIsjEUBpsP5DtdGAHceC0gXo66PgqGXSG303S3V6wovZOeUMtH8
Hxsrt9kCgYEA9SnEc6o+PH3O2jo7hil3CWVQdGXpzTfrYWXzbppESuTxgJQLvPDL
UpNjCZ15rJTrlPZyU4MmMpxyjIKTJRScBYAIrPYw+QHn7FW4wrDQHLQHGMPOzk5Y
M9HCGzDLVJR+mo4Qpd1W63QFXxgiEMrZ87mKj20XlefHQTZ2nHNpjW0CgYEA5UFj
wFMWN2xTQvTd7BTFum8wMBNhxzroeoAWFA4TYsKpgwJFTGyGdRMPBVhZRQHYVK19
8pzuRc+AMQhFDeBb01aRE4Lp7N5O4TJCiqcpqJBtaNSg0mXSS2vmrP1eH9rNfSjP
VMWTtQ/D+E0VwsHV9tpalA5Pv1lwvpbUlCgZQQsCgYEAjuKM8KykITVhvaZ60rKQ
AhXeUjijj0usD9QPkMKwUsYkSr/+J1xf4/yqmAwDwiX5N5R7BVlGhfDQgjwH7nCY
jkwUwlmqKTaHKSK80Buk71WtXS2h9nOKzIjQDHDf0KfLMeDiqwjZg9jW2JmEIS1Y
4cedjgIS4Pd5FfTcJErPlfECgYEAs3eFB0ID2k9KvtfCAtYgE9qG9pu1p6lN5Nfw
cLK0KlQJLy3P4gvzFiNdVunauFLBb0iBmDORs8TErZ2zsTE5sS/LUmLhjTRau6AE
x1YlHngxricF3q8m+TP22OVfkcBPrPMNm2cwQkWdO/vcVSI4xY4Z6l1pwHnb8NdS
gskBPBECgYBPOrx57pJesyNpcTuIJ0Ot+9/qke3V2ZjyxFjaKjv3gupg0WBRayn7
PNlkNvjR0InjVkxx8+fwmi1kn8yPN3kaB9CvyR0AVgn36i840XcOqtjgsdmVzzpK
x92xUbukNlgDWgDfLugRp8mrryik0MeHKgfZbpUnIU3dPwSTbr+BoQ==
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIDhTCCAm2gAwIBAgIJAOYHQ0+YL1oXMA0GCSqGSIb3DQEBCwUAMGUxCzAJBgNV
BAYTAkNOMRAwDgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRAwDgYD
VQQKDAdCZWlKaW5nMQ8wDQYDVQQLDAZPcHNBbnkxDzANBgNVBAMMBk9wc0FueTAe
Fw0yMDEyMjEwODA0MzlaFw0zMDEyMTkwODA0MzlaMGUxCzAJBgNVBAYTAkNOMRAw
DgYDVQQIDAdCZWlKaW5nMRAwDgYDVQQHDAdCZWlKaW5nMRAwDgYDVQQKDAdCZWlK
aW5nMQ8wDQYDVQQLDAZPcHNBbnkxDzANBgNVBAMMBk9wc0FueTCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBANuM+92uhcjbvr/0JTrZOy8SM9KAJzOc8hh+
exbTu8StcjUQTkE7APFdAeveLmIjphpfp8Mo0vT6jVUPiiGmAvMEE/i8Xh/Nqzah
zJE0jUPiOsF/3ovD64gE4G/TYRHop8s47LxDyFDVcFL06J/CosedbqtMA1/T3XNr
h3k8BLNqiwsf7UGQYnl5jg3CJ27HMos3+E2u/uguJR19NBPy8xAPxEYfowlYuyFh
fjH99cK9PJH0bjhqlgKAYNZKMsP2czUOQ+llD1HfTkDDryoqNCTFBlnGbhYP2cZg
xY0eh/bmpLq1tKmK8aqxmafjZDZ6oMm58Jmapkt+jsaccpoWwK8CAwEAAaM4MDYw
DAYDVR0TAQH/BAIwADAOBgNVHQ8BAf8EBAMCA+gwFgYDVR0lAQH/BAwwCgYIKwYB
BQUHAwEwDQYJKoZIhvcNAQELBQADggEBAEYLjlmcMl724apSYS8lqwA4extOL2ZO
JRLG0DNqaCDFtDm8D0figeWJ/P4Oo6U7wHWsIRrX71mabCeGf/kY+MtY/yGEZoEO
oDu3rj5iiq1lzGNo5hy95cs1mZdCsnPzJK9PWTLMhTDLZy8Tr+XAflfFHyqsxIsa
/rGO3GoWzqgw9mXsm6Z2DcC7CiV3ZJRey15DMRUr/Jxp/MD2AHDKj088fUh+oe/p
Biq4osuTrxxyiCf3AWuczzQD6bDLsqd+JS14AdGeuW9L6xerXkxGdRNP8fuc4/ek
WG4/6JOMUxIpZQPj6x74LXbS02cZw59bDHhg0+gG3IpajjS0PV51jmA=
-----END CERTIFICATE-----


================================================
FILE: install/conf/kubernetes/.gitkeep
================================================


================================================
FILE: install/conf/mongodb/.gitkeep
================================================


================================================
FILE: install/conf/mysql/mysqld.cnf
================================================
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation.  The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
default_authentication_plugin=mysql_native_password
symbolic-links=0
default-storage-engine = innodb
innodb_file_per_table = on
collation-server = utf8_general_ci
character-set-server = utf8
max_connections = 4096
# 7 day
binlog_expire_logs_seconds = 604800

# Memory Truning
innodb_buffer_pool_size=128M
innodb_log_buffer_size=32M
key_buffer_size=64M


================================================
FILE: install/conf/mysqld.cnf
================================================
# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation.  The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysqld]
default_authentication_plugin=mysql_native_password
symbolic-links=0
default-storage-engine = innodb
innodb_file_per_table = on
collation-server = utf8_general_ci
character-set-server = utf8
max_connections = 4096
# 7 day
binlog_expire_logs_seconds = 604800

# Memory Truning
innodb_buffer_pool_size=128M
innodb_log_buffer_size=32M
key_buffer_size=64M


================================================
FILE: install/conf/nginx-conf.d/nginx_paas.conf.bak
================================================
# upstream - web
upstream OPEN_PAAS {
    server LOCAL_IP:8001 max_fails=1  fail_timeout=30s;
}
upstream OPEN_PAAS_APPENGINE {
    server LOCAL_IP:8000 max_fails=1  fail_timeout=30s;
}
upstream OPEN_PAAS_ESB {
    server LOCAL_IP:8002 max_fails=1  fail_timeout=30s;
}
upstream OPEN_PAAS_LOGIN {
    server LOCAL_IP:8003 max_fails=1  fail_timeout=30s;
}
upstream BASTION_WS {
    server LOCAL_IP:8004 max_fails=1  fail_timeout=30s;
}
upstream MONITOR_ZABBIX {
    server LOCAL_IP:8006 max_fails=1  fail_timeout=30s;
}
upstream DASHBOARD_GRAFANA {
    server LOCAL_IP:8007 max_fails=1  fail_timeout=30s;
}

# upstream - paasagent
upstream PAAS_AGENT_TEST {
    server LOCAL_IP:8084 max_fails=1  fail_timeout=30s;
}
upstream PAAS_AGENT_PROD {
    server LOCAL_IP:8085 max_fails=1  fail_timeout=30s;
}
# proxy_next_upstream  http_502 http_504 error timeout invalid_header;

server {
    listen 80;
    server_name DOMAIN_NAME;
    location ~ ^/uploads/(.*) {
        autoindex off;
        root /opt/opsany/;
    }
    location ~/ {
        rewrite ^(.*)$ https://$host$1 permanent;
    }
}

server {
     listen       443 ssl;
     server_name  DOMAIN_NAME;
     access_log /opt/opsany/logs/paas_nginx_access.log;
     error_log /opt/opsany/logs/paas_nginx_error.log;
     ssl_certificate /etc/nginx/conf.d/ssl/DOMAIN_NAME.pem;
     ssl_certificate_key /etc/nginx/conf.d/ssl/DOMAIN_NAME.key;
     ssl_session_timeout 5m;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_prefer_server_ciphers on;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size    2048m;

    # ============================ paas ============================
    # Zabbix
    location /zabbix/ {
        proxy_pass http://MONITOR_ZABBIX;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
    
    # Grafana
    location /grafana/ {
        proxy_pass https://DASHBOARD_GRAFANA;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-WEBAUTH-USER admin;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }

    # BASTION WebSocket
     location /ws/bastion/ {
        proxy_pass http://BASTION_WS;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
    # PAAS_SERVICE HOST/PORT
    location / {
        proxy_pass http://OPEN_PAAS;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }

    # uploads    
    location ~ ^/uploads/(.*) {
        autoindex off;
        root /opt/opsany/;
    }

    # docs
    location ~ ^/docs/ {
        index index.html;
        root /opt/opsany/uploads/;
    }

    # ============================ appengine ============================
    # ENGINE_SERVICE HOST/PORT
    location ~ ^/v1 {
        proxy_pass http://OPEN_PAAS_APPENGINE;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header X-Scheme $scheme;
        proxy_read_timeout 600;
    }

    # ============================ esb ============================
    # ESB_SERVICE HOST/PORT
    location ~ ^/api/(.*) {
        proxy_pass http://OPEN_PAAS_ESB/$1$is_args$args;
        proxy_pass_header Server;
        proxy_set_header X-Request-Uri $request_uri;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }


    # ============================ login ============================
    # LOGIN_SERVICE HOST/PORT
    location ~ ^/login/(.*) {
        proxy_pass http://OPEN_PAAS_LOGIN/$1$is_args$args;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
        proxy_read_timeout 600;
    }


    # ============================ paas_agent ============================
    # for apps test
    location ~ ^/t/ {
        proxy_pass http://PAAS_AGENT_TEST;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }

    # for apps prod
    location ~ ^/o/ {
        proxy_pass http://PAAS_AGENT_PROD;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
}


================================================
FILE: install/conf/nginx-conf.d/opsany_paas.conf
================================================
# upstream for paas
upstream OPEN_PAAS {
    server LOCAL_IP:8001 max_fails=1  fail_timeout=30s;
}
upstream OPEN_PAAS_APPENGINE {
    server LOCAL_IP:8000 max_fails=1  fail_timeout=30s;
}
upstream OPEN_PAAS_ESB {
    server LOCAL_IP:8002 max_fails=1  fail_timeout=30s;
}
upstream OPEN_PAAS_LOGIN {
    server LOCAL_IP:8003 max_fails=1  fail_timeout=30s;
}
upstream BASTION_WS {
    server LOCAL_IP:8004 max_fails=1  fail_timeout=30s;
}
upstream MONITOR_ZABBIX {
    server LOCAL_IP:8006 max_fails=1  fail_timeout=30s;
}
upstream DASHBOARD_GRAFANA {
    server LOCAL_IP:8007 max_fails=1  fail_timeout=30s;
}

# upstream for saas

upstream SAAS_RBAC {
    server LOCAL_IP:7001 max_fails=1  fail_timeout=30s;
}
upstream SAAS_WORKBENCH {
    server LOCAL_IP:7002 max_fails=1  fail_timeout=30s;
}
upstream SAAS_CMDB {
    server LOCAL_IP:7003 max_fails=1  fail_timeout=30s;
}
upstream SAAS_CONTROL {
    server LOCAL_IP:7004 max_fails=1  fail_timeout=30s;
}
upstream SAAS_JOB {
    server LOCAL_IP:7005 max_fails=1  fail_timeout=30s;
}
upstream SAAS_MONITOR {
    server LOCAL_IP:7006 max_fails=1  fail_timeout=30s;
}
upstream SAAS_CMP {
    server LOCAL_IP:7007 max_fails=1  fail_timeout=30s;
}
upstream SAAS_BASTION {
    server LOCAL_IP:7008 max_fails=1  fail_timeout=30s;
}
upstream SAAS_DEVOPS {
    server LOCAL_IP:7009 max_fails=1  fail_timeout=30s;
}
upstream SAAS_PIPELINE {
    server LOCAL_IP:7017 max_fails=1  fail_timeout=30s;
}
upstream SAAS_DEPLOY {
    server LOCAL_IP:7018 max_fails=1  fail_timeout=30s;
}
upstream SAAS_REPO {
    server LOCAL_IP:7020 max_fails=1  fail_timeout=30s;
}
upstream SAAS_CODE {
    server LOCAL_IP:7010 max_fails=1  fail_timeout=30s;
}

# upstream for paasagent
upstream PAAS_AGENT_TEST {
    server LOCAL_IP:8084 max_fails=1  fail_timeout=30s;
}
upstream PAAS_AGENT_PROD {
    server LOCAL_IP:8085 max_fails=1  fail_timeout=30s;
}

server {
    listen 80;
    server_name DOMAIN_NAME;
    location ~ ^/uploads/(.*) {
        autoindex off;
        root /opt/opsany/;
    }
    location ~/ {
        rewrite ^(.*)$ https://$host$1 permanent;
    }
}

server {
     listen       443 ssl;
     server_name  DOMAIN_NAME;
     access_log /opt/opsany/logs/paas_nginx_access.log;
     error_log /opt/opsany/logs/paas_nginx_error.log;
     ssl_certificate /etc/nginx/conf.d/ssl/DOMAIN_NAME.pem;
     ssl_certificate_key /etc/nginx/conf.d/ssl/DOMAIN_NAME.key;
     ssl_session_timeout 5m;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_prefer_server_ciphers on;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size    2048m;

    # ============================ paas ============================
    # Zabbix
    location /zabbix/ {
        proxy_pass http://MONITOR_ZABBIX;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
    
    # Grafana
    location /grafana/ {
        proxy_pass https://DASHBOARD_GRAFANA;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-WEBAUTH-USER admin;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }

    # BASTION WebSocket
     location /ws/bastion/ {
        proxy_pass http://BASTION_WS;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
    # PAAS_SERVICE HOST/PORT
    location / {
        proxy_pass http://OPEN_PAAS;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Scheme $scheme;
        proxy_redirect http:// $scheme://;
        proxy_read_timeout 600;
    }
    

    # uploads    
    location ~ ^/uploads/(.*) {
        autoindex off;
        root /opt/opsany/;
    }

    # docs
    location ~ ^/docs/ {
        index index.html;
        root /opt/opsany/uploads/;
    }
    
    # app
        location ~ ^/phone/ {
        index index.html;
        root /opt/opsany/uploads/;
    }

    # ============================ appengine ============================
    # ENGINE_SERVICE HOST/PORT
    location ~ ^/v1 {
        proxy_pass http://OPEN_PAAS_APPENGINE;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header X-Scheme $scheme;
        proxy_read_timeout 600;
    }

    # ============================ esb ============================
    # ESB_SERVICE HOST/PORT
    location ~ ^/api/(.*) {
        proxy_pass http://OPEN_PAAS_ESB/$1$is_args$args;
        proxy_pass_header Server;
        proxy_set_header X-Request-Uri $request_uri;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }


    # ============================ login ============================
    # LOGIN_SERVICE HOST/PORT
    location ~ ^/login/(.*) {
        proxy_pass http://OPEN_PAAS_LOGIN/$1$is_args$args;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
        proxy_read_timeout 600;
    }

    # ============================ paas_agent ============================
    # for apps test
    location ~ ^/t/ {
        proxy_pass http://PAAS_AGENT_TEST;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }

    # ============================ OpsAny SaaS ============================
    # for rbac
    location ~ ^/o/rbac/ {
        proxy_pass http://SAAS_RBAC;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    #for workbench
    location ~ ^/o/workbench/ {
        proxy_pass http://SAAS_WORKBENCH;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for cmdb
    location ~ ^/o/cmdb/ {
        proxy_pass http://SAAS_CMDB;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for control
    location ~ ^/o/control/ {
        proxy_pass http://SAAS_CONTROL;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for job
    location ~ ^/o/job/ {
        proxy_pass http://SAAS_JOB;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for monitor
    location ~ ^/o/monitor/ {
        proxy_pass http://SAAS_MONITOR;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for cmp
    location ~ ^/o/cmp/ {
        proxy_pass http://SAAS_CMP;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for bastion
    location ~ ^/o/bastion/ {
        proxy_pass http://SAAS_BASTION;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for devops
    location ~ ^/o/devops/ {
        proxy_pass http://SAAS_DEVOPS;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for pipeline
    location ~ ^/o/pipeline/ {
        proxy_pass http://SAAS_PIPELINE;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for deploy
    location ~ ^/o/deploy/ {
        proxy_pass http://SAAS_DEPLOY;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for repo
    location ~ ^/o/repo/ {
        proxy_pass http://SAAS_REPO;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for code
    location ~ ^/o/code/ {
        proxy_pass http://SAAS_CODE;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
}


================================================
FILE: install/conf/nginx-conf.d/opsany_paas_k8s.config
================================================
# upstream for paas
upstream OPEN_PAAS {
    server opsany-paas-paas:8001 max_fails=1  fail_timeout=30s;
}
upstream OPEN_PAAS_APPENGINE {
    server opsany-paas-appengine:8000 max_fails=1  fail_timeout=30s;
}
upstream OPEN_PAAS_ESB {
    server opsany-paas-esb:8002 max_fails=1  fail_timeout=30s;
}
upstream OPEN_PAAS_LOGIN {
    server opsany-paas-login:8003 max_fails=1  fail_timeout=30s;
}
upstream BASTION_WS {
    server opsany-paas-websocket:8004 max_fails=1  fail_timeout=30s;
}
upstream DASHBOARD_GRAFANA {
    server opsany-paas-grafana:8007 max_fails=1  fail_timeout=30s;
}

# upstream for saas

upstream SAAS_RBAC {
    server 127.0.0.1:7001 max_fails=1  fail_timeout=30s;
}
upstream SAAS_WORKBENCH {
    server 127.0.0.1:7002 max_fails=1  fail_timeout=30s;
}
upstream SAAS_CMDB {
    server 127.0.0.1:7003 max_fails=1  fail_timeout=30s;
}
upstream SAAS_CONTROL {
    server 127.0.0.1:7004 max_fails=1  fail_timeout=30s;
}
upstream SAAS_JOB {
    server 127.0.0.1:7005 max_fails=1  fail_timeout=30s;
}
upstream SAAS_MONITOR {
    server 127.0.0.1:7006 max_fails=1  fail_timeout=30s;
}
upstream SAAS_CMP {
    server 127.0.0.1:7007 max_fails=1  fail_timeout=30s;
}
upstream SAAS_BASTION {
    server 127.0.0.1:7008 max_fails=1  fail_timeout=30s;
}
upstream SAAS_DEVOPS {
    server 127.0.0.1:7009 max_fails=1  fail_timeout=30s;
}
upstream SAAS_CODE {
    server 127.0.0.1:7010 max_fails=1  fail_timeout=30s;
}
upstream SAAS_PIPELINE {
    server 127.0.0.1:7017 max_fails=1  fail_timeout=30s;
}
upstream SAAS_REPO {
    server 127.0.0.1:7020 max_fails=1  fail_timeout=30s;
}
upstream SAAS_DEPLOY {
    server 127.0.0.1:7018 max_fails=1  fail_timeout=30s;
}

server {
    listen 80;
    server_name DOMAIN_NAME;
    location ~ ^/uploads/(.*) {
        autoindex off;
        root /opt/opsany/;
    }
    location ~/ {
        rewrite ^(.*)$ https://$host$1 permanent;
    }
}

server {
     listen       443 ssl;
     server_name  DOMAIN_NAME;
     access_log /opt/opsany/logs/paas_nginx_access.log;
     error_log /opt/opsany/logs/paas_nginx_error.log;
     ssl_certificate /etc/nginx/conf.d/ssl/DOMAIN_NAME.pem;
     ssl_certificate_key /etc/nginx/conf.d/ssl/DOMAIN_NAME.key;
     ssl_session_timeout 5m;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_prefer_server_ciphers on;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size    2048m;

    # ============================ paas ============================
    
    # Grafana
    location /grafana/ {
        proxy_pass https://DASHBOARD_GRAFANA;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-WEBAUTH-USER admin;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }

    # BASTION WebSocket
     location /ws/bastion/ {
        proxy_pass http://BASTION_WS;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $server_name;
    }
    # PAAS_SERVICE HOST/PORT
    location / {
        proxy_pass http://OPEN_PAAS;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Scheme $scheme;
        proxy_redirect http:// $scheme://;
        proxy_read_timeout 600;
    }


    # uploads    
    location ~ ^/uploads/(.*) {
        autoindex off;
        root /opt/opsany/;
    }

    # docs
    location ~ ^/docs/ {
        index index.html;
        root /opt/opsany/uploads/;
    }
    
    # app
        location ~ ^/phone/ {
        index index.html;
        root /opt/opsany/uploads/;
    }

    # ============================ appengine ============================
    # ENGINE_SERVICE HOST/PORT
    location ~ ^/v1 {
        proxy_pass http://OPEN_PAAS_APPENGINE;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $http_host;
        proxy_set_header X-Scheme $scheme;
        proxy_read_timeout 600;
    }

    # ============================ esb ============================
    # ESB_SERVICE HOST/PORT
    location ~ ^/api/(.*) {
        proxy_pass http://OPEN_PAAS_ESB/$1$is_args$args;
        proxy_pass_header Server;
        proxy_set_header X-Request-Uri $request_uri;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }


    # ============================ login ============================
    # LOGIN_SERVICE HOST/PORT
    location ~ ^/login/(.*) {
        proxy_pass http://OPEN_PAAS_LOGIN/$1$is_args$args;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_redirect off;
        proxy_read_timeout 600;
    }

    # ============================ OpsAny SaaS ============================
    # for rbac
    location ~ ^/o/rbac/ {
        proxy_pass http://SAAS_RBAC;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    #for workbench
    location ~ ^/o/workbench/ {
        proxy_pass http://SAAS_WORKBENCH;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for cmdb
    location ~ ^/o/cmdb/ {
        proxy_pass http://SAAS_CMDB;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for control
    location ~ ^/o/control/ {
        proxy_pass http://SAAS_CONTROL;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for job
    location ~ ^/o/job/ {
        proxy_pass http://SAAS_JOB;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for monitor
    location ~ ^/o/monitor/ {
        proxy_pass http://SAAS_MONITOR;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for cmp
    location ~ ^/o/cmp/ {
        proxy_pass http://SAAS_CMP;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for bastion
    location ~ ^/o/bastion/ {
        proxy_pass http://SAAS_BASTION;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for devops
    location ~ ^/o/devops/ {
        proxy_pass http://SAAS_DEVOPS;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for code
    location ~ ^/o/code/ {
        proxy_pass http://SAAS_CODE;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for pipeline
    location ~ ^/o/pipeline/ {
        proxy_pass http://SAAS_PIPELINE;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for repo
    location ~ ^/o/repo/ {
        proxy_pass http://SAAS_REPO;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
    # for deploy
    location ~ ^/o/deploy/ {
        proxy_pass http://SAAS_DEPLOY;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }
}


================================================
FILE: install/conf/nginx-conf.d/opsany_proxy.conf
================================================
# upstream - proxy
upstream OPSANY_PROXY {
    server LOCAL_IP:8010 max_fails=1  fail_timeout=30s;
}

# HTTPS
server {
     listen       8012;
     server_name  DOMAIN_NAME;
     access_log /opt/opsany/logs/opsany_proxy_access.log;
     error_log /opt/opsany/logs/opsany_proxy_error.log;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size    2048m;

    # PROXY_SERVICE HOST/PORT
    location / {
        proxy_pass http://OPSANY_PROXY;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }

    # uploads    
    location ~ ^/uploads/(.*) {
        autoindex off;
        root /opt/opsany/;
    }
}



# HTTPS
server {
     listen       8011 ssl;
     server_name  DOMAIN_NAME;
     access_log /opt/opsany/logs/opsany_proxy_access.log;
     error_log /opt/opsany/logs/opsany_proxy_error.log;
     ssl_certificate /etc/nginx/conf.d/ssl/DOMAIN_NAME.pem;
     ssl_certificate_key /etc/nginx/conf.d/ssl/DOMAIN_NAME.key;
     ssl_session_timeout 5m;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_prefer_server_ciphers on;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size    2048m;

    # PROXY_SERVICE HOST/PORT
    location / {
        proxy_pass http://OPSANY_PROXY;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }

    # uploads    
    location ~ ^/uploads/(.*) {
        autoindex off;
        root /opt/opsany/;
    }
}


================================================
FILE: install/conf/nginx-conf.d/opsany_proxy_k8s.config
================================================
# upstream - proxy
upstream OPSANY_PROXY {
    server opsany-paas-proxy:8010 max_fails=1  fail_timeout=30s;
}

# HTTPS
server {
     listen       8012;
     server_name  DOMAIN_NAME;
     access_log /opt/opsany/logs/opsany_proxy_access.log;
     error_log /opt/opsany/logs/opsany_proxy_error.log;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size    2048m;

    # PROXY_SERVICE HOST/PORT
    location / {
        proxy_pass http://OPSANY_PROXY;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }

    # uploads    
    location ~ ^/uploads/(.*) {
        autoindex off;
        root /opt/opsany/;
    }
}



# HTTPS
server {
     listen       8011 ssl;
     server_name  DOMAIN_NAME;
     access_log /opt/opsany/logs/opsany_proxy_access.log;
     error_log /opt/opsany/logs/opsany_proxy_error.log;
     ssl_certificate /etc/nginx/conf.d/ssl/DOMAIN_NAME.pem;
     ssl_certificate_key /etc/nginx/conf.d/ssl/DOMAIN_NAME.key;
     ssl_session_timeout 5m;
     ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
     ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
     ssl_prefer_server_ciphers on;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size    2048m;

    # PROXY_SERVICE HOST/PORT
    location / {
        proxy_pass http://OPSANY_PROXY;
        proxy_pass_header Server;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 600;
    }

    # uploads    
    location ~ ^/uploads/(.*) {
        autoindex off;
        root /opt/opsany/;
    }
}


================================================
FILE: install/conf/nginx-conf.d/ssl/.gitkeep
================================================


================================================
FILE: install/conf/nginx.conf
================================================
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user root;
worker_processes auto;
error_log /opt/opsany/logs/openresty_error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /etc/nginx/conf.d/*.conf;

events {
    worker_connections 1024;
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /opt/opsany/logs/openresty_access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;
    client_max_body_size 2G;
    server_names_hash_bucket_size 256;
    underscores_in_headers on;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/conf.d/*.conf;

        location / {
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
}



================================================
FILE: install/conf/openssl.cnf
================================================
####################################################################
[ req ]
default_bits		= 2048
default_keyfile 	= privkey.pem
distinguished_name	= req_distinguished_name
req_extensions = req_ext
x509_extensions = v3_req
prompt = no

[ req_distinguished_name ]
countryName			= CN
countryName_default		= CN
countryName_min			= 2
countryName_max			= 2

stateOrProvinceName		= 北京
stateOrProvinceName_default	= 北京

localityName			= 北京

0.organizationName		= OpsAny
0.organizationName_default	= OpsAny

organizationalUnitName		= OpsAny
#organizationalUnitName_default	= OpsAny

commonName			= Common Name (e.g. server FQDN or YOUR name)
commonName_max			= 64

emailAddress			= OpsAny@womaiyun.com
emailAddress_max		= 64

[req_ext]
subjectAltName = @alt_names

[ v3_req ]

basicConstraints = critical, CA:FALSE
keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment, keyAgreement
extendedKeyUsage = critical, serverAuth
#subjectAltName = @alt_names

#[alt_names]
#IP.1 = 127.0.0.1


================================================
FILE: install/conf/opsany-paas/appengine/appengine.ini
================================================
[program:opsany-appengine]
command=gunicorn wsgi --bind 0.0.0.0:8000 -k gevent -w 4 -n appengine --access-logfile - --error-logfile -
directory=/opt/opsany/paas/appengine
environment=BK_ENV="production",PAAS_LOGGING_DIR="/opt/opsany/logs"
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/opt/opsany/logs/paas_appengine.log


================================================
FILE: install/conf/opsany-paas/appengine/settings_production.py.appengine
================================================
# -*- coding: utf-8 -*-

from controller.settings_default import * # noqa
# Debug
DEBUG = False

# Log
LOG_LEVEL = 'ERROR'

# Database
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'opsany_paas',
        'USER': 'opsany',
        'PASSWORD': 'MYSQL_OPSANY_PASSWORD',
        'HOST': 'MYSQL_SERVER_IP',
        'PORT': 'MYSQL_SERVER_PORT',
    }
}

# Secret Key
SECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'


================================================
FILE: install/conf/opsany-paas/esb/esb.ini
================================================
[program:opsany-esb]
command=gunicorn wsgi --bind 0.0.0.0:8002 -k gevent -w 8 -n esb --access-logfile - --error-logfile -
directory=/opt/opsany/paas/esb
environment=BK_ENV="production",PAAS_LOGGING_DIR="/opt/opsany/logs"
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/opt/opsany/logs/paas_esb.log


================================================
FILE: install/conf/opsany-paas/esb/settings_production.py.esb
================================================
# -*- coding: utf-8 -*-

# Debug
DEBUG = False

# Database
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'opsany_paas',
        'USER': 'opsany',
        'PASSWORD': 'MYSQL_OPSANY_PASSWORD',
        'HOST': 'MYSQL_SERVER_IP',
        'PORT': 'MYSQL_SERVER_PORT',
    }
}

# esb components
PAAS_DOMAIN = 'LOCAL_IP'
BK_ENV = "o"
HOST_CC = ''

# Log settings
LOG_LEVEL = 'ERROR'

# ESB token
ESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'

# PaaS
PAAS_HOST = 'http://PAAS_PAAS_IP:8001'

# Login
HOST_BK_LOGIN = 'http://PAAS_LOGIN_IP:8003'

# Secret Key
SECRET_KEY = 'iXNyPrK6vEyiz97S0ydm8mnYSr6mmAiGFfCdI4yJpNsvYkNNnF'


================================================
FILE: install/conf/opsany-paas/login/login.ini
================================================
[program:opsany-login]
command=gunicorn wsgi --bind 0.0.0.0:8003 -k gevent -w 8 -n login --access-logfile - --error-logfile -
directory=/opt/opsany/paas/login
environment=DJANGO_SETTINGS_MODULE=settings,BK_ENV="production",PAAS_LOGGING_DIR="/opt/opsany/logs"
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/opt/opsany/logs/paas_login.log


================================================
FILE: install/conf/opsany-paas/login/settings_production.py.login
================================================
# -*- coding: utf-8 -*-

from conf.default import LOGGING

# Debug
DEBUG = False

# Log settings
LOG_LEVEL = 'ERROR'

LOGGING.update(**{
    'loggers': {
        'django': {
            'handlers': ['null'],
            'level': LOG_LEVEL,
            'propagate': True,
        },
        'django.request': {
            'handlers': ['console'],
            'level': LOG_LEVEL,
            'propagate': True,
        },
        'root': {
            'handlers': ['root'],
            'level': LOG_LEVEL,
            'propagate': True,
        },
        'django.db.backends': {
            'handlers': ['wb_mysql'],
            'level': LOG_LEVEL,
            'propagate': True,
        },
    },
})

# use the static root 'static' in production envs
if not DEBUG:
    STATIC_ROOT = 'static'

# For Nginx
SITE_URL = "/login/"
STATIC_URL = "/static/"

# Database
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',   # 默认用mysql
        'NAME': 'opsany_paas',
        'USER': 'opsany',
        'PASSWORD': 'MYSQL_OPSANY_PASSWORD',
        'HOST': 'MYSQL_SERVER_IP',
        'PORT': 'MYSQL_SERVER_PORT',
    }
}

# Init User
USERNAME = 'admin'
PASSWORD = 'admin'

# Inner domain
PAAS_INNER_DOMAIN = 'LOCAL_IP'
HTTP_SCHEMA = 'https'

# Cookie
BK_COOKIE_DOMAIN = ''
CSRF_COOKIE_HTTPONLY = True
CSRF_TRUSTED_ORIGINS = [
    'https://DOMAIN_NAME',
    'https://LOCAL_IP',
    'http://DOMAIN_NAME',
    'http://LOCAL_IP',
]

# Secret Key
SECRET_KEY = 'jO149njrTj4kEx6ZbUH8Zc53bfQJctINWaEzTWIsOoxSDNwK2I'

# ESB Token
ESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'
RBAC_APP_SECRET = "RBAC_SECRET_KEY"


================================================
FILE: install/conf/opsany-paas/mcp-server/config.yaml
================================================
apiVersion: v2.3.2
apiService:
  url: https://DOMAIN_NAME
  bk_app_code: cmdb
  bk_app_secret: CMDB_SECRET_KEY
  super_username: admin  # 管理员用户名 用作部分API接口内部调用
  api_version: 4.0.2  # esb api服务版本
server:
  host: 0.0.0.0
  port: 8020
  auth_token: "MCP_AUTH_TOKEN"  # MCP Server的认证Token,安装时自动生成,调用时需要添加在Header中。
config:
  resourceIdDefaultField: "code,VISIBLE_NAME,name"
  resourceIdFieldSearch: false
  resourceDefaultLimit: 20
  apiResourcesDefaultLimit: 100


================================================
FILE: install/conf/opsany-paas/mcp-server/mcp-supervisor.ini
================================================
[program: mcp-server]
command = python3 /opt/opsany/opsany-mcp-server/server.py --config /opt/opsany/opsany-mcp-server/config/config.yaml
stdout_logfile = /opt/opsany/logs/opsany-mcp-server/server.log
redirect_stderr = true
autorestart = true
stopsignal = QUIT


================================================
FILE: install/conf/opsany-paas/mcp-server/mcp.json
================================================
{
    "mcpServers": {
      "opsany-mcp-server": {
        "url": "http://DOMAIN_NAME:8020/sse",
        "headers": {
          "username": "admin",
          "user-api-token": "Please modify here",
          "mcp-auth-token": "MCP_AUTH_TOKEN"
          }
      }
    }
}


================================================
FILE: install/conf/opsany-paas/mcp-server/supervisord.conf
================================================
; Sample supervisor config file.

[unix_http_server]
file=/var/run/supervisor.sock   ; (the path to the socket file)
;chmod=0700                 ; sockef file mode (default 0700)
;chown=nobody:nogroup       ; socket file uid:gid owner
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

;[inet_http_server]         ; inet (TCP) server disabled by default
;port=127.0.0.1:9001        ; (ip_address:port specifier, *:port for all iface)
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

[supervisord]
logfile=/var/log/supervisord.log  ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10          ; (num of main logfile rotation backups;default 10)
loglevel=info               ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=true              ; (start in foreground if true;default false)
minfds=1024                 ; (min. avail startup file descriptors;default 1024)
minprocs=200                ; (min. avail process descriptors;default 200)
;umask=022                  ; (process file creation umask;default 022)
;user=chrism                 ; (default is current user, required if root)
;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')
;directory=/tmp              ; (default is not to cd during start)
;nocleanup=true              ; (don't clean up tempfiles at start;default false)
;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)
;environment=KEY=value       ; (key value pairs to add to environment)
;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL  for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris              ; should be same as http_username if set
;password=123                ; should be same as http_password if set
;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history  ; use readline history if available

; The below sample program section shows all possible program subsection values,
; create one or more 'real' program: sections to be able to control them under
; supervisor.

;[program:theprogramname]
;command=/bin/cat              ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=999                  ; the relative start priority (default 999)
;autostart=true                ; start at supervisord start (default: true)
;autorestart=true              ; retstart at unexpected quit (default: true)
;startsecs=10                  ; number of secs prog must stay running (def. 1)
;startretries=3                ; max # of serial start failures (default 3)
;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A=1,B=2           ; process environment additions (def no adds)
;serverurl=AUTO                ; override serverurl computation (childutils)

; The below sample eventlistener section shows all possible
; eventlistener subsection values, create one or more 'real'
; eventlistener: sections to be able to handle event notifications
; sent by supervisor.

;[eventlistener:theeventlistenername]
;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;events=EVENT                  ; event notif. types to subscribe to (req'd)
;buffer_size=10                ; event buffer queue size (default 10)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=-1                   ; the relative start priority (default -1)
;autostart=true                ; start at supervisord start (default: true)
;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)
;startsecs=10                  ; number of secs prog must stay running (def. 1)
;startretries=3                ; max # of serial start failures (default 3)
;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups        ; # of stderr logfile backups (default 10)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A=1,B=2           ; process environment additions
;serverurl=AUTO                ; override serverurl computation (childutils)

; The below sample group section shows all possible group values,
; create one or more 'real' group: sections to create "heterogeneous"
; process groups.

;[group:thegroupname]
;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
;priority=999                  ; the relative start priority (default 999)

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = supervisord.d/*.ini


================================================
FILE: install/conf/opsany-paas/paas/paas.ini
================================================
[program:opsany-paas]
command=gunicorn wsgi --bind 0.0.0.0:8001 -k gevent -w 4 -n paas --access-logfile - --error-logfile -
directory=/opt/opsany/paas/paas
environment=DJANGO_SETTINGS_MODULE=settings,BK_ENV="production",PAAS_LOGGING_DIR="/opt/opsany/logs"
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/opt/opsany/logs/paas_paas.log


================================================
FILE: install/conf/opsany-paas/paas/settings_production.py.paas
================================================
# -*- coding: utf-8 -*-

# Debug
DEBUG = False

# Log settings
LOG_LEVEL = 'ERROR'

# use the static root 'static' in production envs
if not DEBUG:
    STATIC_ROOT = 'static'

# Database
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'opsany_paas',
        'USER': 'opsany',
        'PASSWORD': 'MYSQL_OPSANY_PASSWORD',
        'HOST': 'MYSQL_SERVER_IP',
        'PORT': 'MYSQL_SERVER_PORT',
    }
}

# domain
PAAS_DOMAIN = 'DOMAIN_NAME'

# inner domain
PAAS_INNER_DOMAIN = 'LOCAL_IP'
HTTP_SCHEMA = 'https'


# Cookie 
BK_COOKIE_NAME = 'bk_token'
BK_COOKIE_AGE = 60 * 60 * 24
BK_COOKIE_DOMAIN = ''

# CSRF Cookie
CSRF_COOKIE_HTTPONLY = True
CSRF_TRUSTED_ORIGINS = [
    'https://DOMAIN_NAME',
    'https://DOMAIN_NAME',
    'http://LOCAL_IP',
    'http://LOCAL_IP',
]

# Appengine
ENGINE_HOST = "http://PAAS_APPENGINE_IP:8000"

# Login
LOGIN_HOST = "http://PAAS_LOGIN_IP:8003"

# Secret key
SECRET_KEY = 'XEz7VLlQNdIq9iFl1t6LtWobQEcG4ayoPa2esHwatkHZxiuDf0'

# ESB Token
ESB_TOKEN = '41f076b7-afce-46eb-9e85-dab245eb0931'


================================================
FILE: install/conf/opsany-paas/websocket/settings_production.py.websocket
================================================
# -*- coding: utf-8 -*-
from config import RUN_VER, MFA_TIME_OUT
from urllib import parse

if RUN_VER == 'open':
    from blueapps.patch.settings_open_saas import *  # noqa
else:
    from blueapps.patch.settings_paas_services import *  # noqa

# Run Mode
RUN_MODE = 'PRODUCT'

# Log
LOG_LEVEL = 'ERROR'

# Guacd
GUACD_HOST = 'WEBSOCKET_GUACD_HOST'
GUACD_PORT = '4822'
GUACD_PATH = "/srv/guacamole"
MEDIA_URL = ''
UPLOAD_PATH = "/opt/opsany/"
TERMINAL_PATH = "/opt/opsany/uploads/terminal"
ORI_GUACD_PATH = "/opt/opsany/uploads/guacamole"
TERMINAL_TIMEOUT = 1800

INSTALLED_APPS += (
    'channels',
)

# Database
DATABASES.update(
    {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'bastion',  # 数据库名
            'USER': 'bastion',  # 数据库用户
            'PASSWORD': "MYSQL_OPSANY_PASSWORD",  # 数据库密码
            'HOST': "MYSQL_SERVER_IP",  # 数据库主机
            'PORT': int("MYSQL_SERVER_PORT"),  # 数据库端口
            'OPTIONS': {
                "init_command": "SET default_storage_engine=INNODB",
            }

        },
    }
)

# Redis
REDIS_HOST = "REDIS_SERVER_IP"
REDIS_PORT = "REDIS_SERVER_PORT"
REDIS_USERNAME = parse.quote("REDIS_SERVER_USER")
REDIS_PASSWORD = parse.quote("REDIS_SERVER_PASSWORD")
if REDIS_USERNAME == "REDIS_USERNAME":  # 当该变量没有被替换时设置为空,防止与密码直接拼入
    REDIS_USERNAME = ""

CACHES.update(
    {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://{}:{}@{}:{}/8".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),
            'TIMEOUT': 86400,
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 1000},
                # "PASSWORD": REDIS_PASSWORD,
            }
        },
        "cache": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://{}:{}@{}:{}/8".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),
            'TIMEOUT': 1800,
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 1000},
                # "PASSWORD": REDIS_PASSWORD,
            }
        },
        "mfa": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://{}:{}@{}:{}/8".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),
            'TIMEOUT': 1800,
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 1000},
                # "PASSWORD": REDIS_PASSWORD,
            }
        },
        "pod_login": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://{}:{}@{}:{}/14".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),
            'TIMEOUT': 1800,
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 1000},
                # "PASSWORD": REDIS_PASSWORD,
            }
        }
    }
)

CHANNEL_LAYERS = {
    'default': {
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': {
            'hosts': ["redis://{}:{}@{}:{}/8".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT)],
            "symmetric_encryption_keys": [SECRET_KEY],
        },
    }
}


# Elastic APM
ELASTIC_APM = {
  'ENABLED': 'false',
  'SERVICE_NAME': 'opsany-paas-websocket',
  'SECRET_TOKEN': 'APM_SECRET_TOKEN',
  'SERVER_URL': 'https://APM_SERVER_HOST:8200',
  'VERIFY_SERVER_CERT': 'false',
  'ENVIRONMENT': 'prod',
}


================================================
FILE: install/conf/opsany-paas/websocket/settings_production.py.websocket.init
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import

__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'BASE_DIR']


import os

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from blueapps.core.celery import celery_app

# app 基本信息

# SaaS运行版本,如非必要请勿修改
RUN_VER = 'open'
# SaaS应用ID
APP_CODE = 'bastion'
# SaaS安全密钥,注意请勿泄露该密钥
SECRET_KEY = "BASTION_SECRET_KEY"
# PAAS平台URL
BK_URL = "https://PAAS_PAAS_IP"
# UploadPath
UPLOAD_PATH = "/opt/opsany/"
# MFA过期时间,单位:秒
MFA_TIME_OUT = 1800

access_token="opsany-esb-auth-token-9e8083137204"

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(
    __file__)))

DEFAULT_LANGUAGE = "chinese_simplified"
DEFAULT_THEME = "theme-default"


================================================
FILE: install/conf/opsany-paas/websocket/websocket.ini
================================================
[program:websocket]
command=uvicorn --proxy-headers --host 0.0.0.0 --port 8004 asgi:application --workers 4
directory=/opt/opsany/websocket
environment=BK_ENV="production",BK_LOG_DIR="/opt/opsany/logs",APP_ID="bastion"
startsecs=0
stopwaitsecs=0
autostart=true
autorestart=true
redirect_stderr=true
stdout_logfile=/opt/opsany/logs/paas_websocket.log
stopasgroup=true
killasgroup=true

================================================
FILE: install/conf/opsany-saas/apm/apm-init.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import

__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']

import os

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from blueapps.core.celery import celery_app

# app 基本信息

# SaaS运行版本,如非必要请勿修改
RUN_VER = 'open'
# SaaS应用ID
APP_CODE = 'apm'
# SaaS安全密钥,注意请勿泄露该密钥
SECRET_KEY = "APM_SECRET_KEY"
# PaaS平台URL
BK_URL = "https://DOMAIN_NAME"
PAAS_ESB_URL = "http://LOCAL_IP:8002"
PAAS_LOGIN_URL = 'http://LOCAL_IP:8003'

# Upload目录
UPLOAD_PATH = "/opt/opsany"

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

# 工作台首页默认用户图标路径
DEFAULT_USER_ICON = "uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png"
DEFAULT_LANGUAGE = "chinese_simplified"
DEFAULT_THEME = "theme-default"

if 'BKPAAS_ENVIRONMENT' in os.environ:
    ENVIRONMENT = os.getenv('BKPAAS_ENVIRONMENT', 'dev')
# V2判断环境的环境变量为BK_ENV
else:
    PAAS_V2_ENVIRONMENT = os.environ.get('BK_ENV', 'development')
    ENVIRONMENT = {
        'development': 'dev',
        'testing': 'stag',
        'production': 'prod',
    }.get(PAAS_V2_ENVIRONMENT)

================================================
FILE: install/conf/opsany-saas/apm/apm-nginx-main.conf
================================================
# /etc/nginx/nginx.conf

user root;

# Set number of worker processes automatically based on number of CPU cores.
worker_processes 2;

# Enables the use of JIT for regular expressions to speed-up their processing.
pcre_jit on;

# Configures default error logger.
error_log /opt/opsany/logs/apm/nginx-error.log warn;

# Includes files with directives to load dynamic modules.
include /etc/nginx/modules/*.conf;

# Uncomment to include files with config snippets into the root context.
# NOTE: This will be enabled by default in Alpine 3.15.
#include /etc/nginx/conf.d/*.conf;

events {
        # The maximum number of simultaneous connections that can be opened by
        # a worker process.
        worker_connections 4096;
}

http {
        # Includes mapping of file name extensions to MIME types of responses
        # and defines the default type.
        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        # Name servers used to resolve names of upstream servers into addresses.
        # It's also needed when using tcpsocket and udpsocket in Lua modules.
        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;

        # Don't tell nginx version to the clients. Default is 'on'.
        server_tokens off;

        # Specifies the maximum accepted body size of a client request, as
        # indicated by the request header Content-Length. If the stated content
        # length is greater than this size, then the client receives the HTTP
        # error code 413. Set to 0 to disable. Default is '1m'.
        client_max_body_size 1m;

        # Sendfile copies data between one FD and other from within the kernel,
        # which is more efficient than read() + write(). Default is off.
        sendfile on;

        # Causes nginx to attempt to send its HTTP response head in one packet,
        # instead of using partial frames. Default is 'off'.
        tcp_nopush on;


        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.
        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

        # Path of the file with Diffie-Hellman parameters for EDH ciphers.
        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`
        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;

        # Specifies that our cipher suits should be preferred over client ciphers.
        # Default is 'off'.
        ssl_prefer_server_ciphers on;

        # Enables a shared SSL cache with size that can hold around 8000 sessions.
        # Default is 'none'.
        ssl_session_cache shared:SSL:2m;

        # Specifies a time during which a client may reuse the session parameters.
        # Default is '5m'.
        ssl_session_timeout 1h;

        # Disable TLS session tickets (they are insecure). Default is 'on'.
        ssl_session_tickets off;


        # Enable gzipping of responses.
        #gzip on;

        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.
        gzip_vary on;


        # Helper variable for proxying websockets.
        map $http_upgrade $connection_upgrade {
                default upgrade;
                '' close;
        }


        # Specifies the main log format.
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

        # Sets the path, format, and configuration for a buffered log write.
        access_log /opt/opsany/logs/apm/nginx-access.log main;


        # Includes virtual hosts configs.
        include /etc/nginx/http.d/*.conf;
}


================================================
FILE: install/conf/opsany-saas/apm/apm-nginx.conf
================================================
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size    8192m;
    location ~ ^/o/([^/]+)/static/(.*)$ {
                alias /opt/opsany/$1/static/$2;
        }

    location ~ ^/(t|o)/([^/]+) {
        include uwsgi_params;
        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {
            return 404;
        }
        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;
        uwsgi_param SCRIPT_NAME /$1/$2;
        uwsgi_read_timeout 300;
        uwsgi_modifier1 30;
    }
}


================================================
FILE: install/conf/opsany-saas/apm/apm-prod.py
================================================
# -*- coding: utf-8 -*-
from config import RUN_VER
if RUN_VER == 'open':
    from blueapps.patch.settings_open_saas import *  # noqa
else:
    from blueapps.patch.settings_paas_services import *  # noqa
from urllib import parse

# 正式环境
RUN_MODE = 'PRODUCT'

# 只对正式环境日志级别进行配置,可以在这里修改
LOG_LEVEL = 'ERROR'

UPLOAD_PATH = "/opt/opsany/"
# V2
# import logging
# logging.getLogger('root').setLevel('INFO')
# V3
# import logging
# logging.getLogger('app').setLevel('INFO')


# MySQL Config
DATABASES.update(
    {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': APP_CODE,  # 数据库名
            'USER': APP_CODE,  # 数据库用户
            'PASSWORD': "MYSQL_OPSANY_APM_PASSWORD",  # 数据库密码
            'HOST': "MYSQL_SERVER_IP",  # 数据库主机
            'PORT': int("MYSQL_SERVER_PORT"),  # 数据库端口
            'OPTIONS': {
                "init_command": "SET default_storage_engine=INNODB;\
                                 SET sql_mode='STRICT_TRANS_TABLES';",
            }
        },
    }
)
KIBANA_ES_USERNAME = "KIBANA_USERNAME"
KIBANA_ES_PASSWORD = "KIBANA_PASSWORD"
KIBANA_ES_CLUSTER = "KIBANA_CLUSTER"

ES_USERNAME = "ELASTIC_USERNAME"
ES_PASSWORD = "ELASTIC_PASSWORD"
ES_CLUSTER = "ELASTIC_CLUSTER"
HEART_BEAT_INDEX = "ELASTIC_SEARCH_INDEX"
CORS_ALLOW_CREDENTIALS = True


import mongoengine

# MongoDB Config
MONGO_CONN = mongoengine.connect(
    db='prom',  # 需要进行操作的数据库名称
    alias='default',  # 必须定义一个default数据库
    host="MONGO_SERVER_IP",
    port=int("MONGO_SERVER_PORT"),
    username='prom',
    password="MONGO_PROM_PASSWORD",
    connect=False
    # authentication_source="admin",           # 进行身份认证的数据库,通常这个数据库为admin
)

# Elastic APM
ELASTIC_APM = {
  'ENABLED': 'false',
  'SERVICE_NAME': 'opsany-saas-apm',
  'SECRET_TOKEN': 'APM_SECRET_TOKEN',
  'SERVER_URL': 'https://APM_SERVER_HOST:8200',
  'VERIFY_SERVER_CERT': 'false',
  'ENVIRONMENT': 'prod',
}

# Elastic frontend APM
FRONTEND_ELASTIC_APM = {
    'FRONTEND_SERVICE_NAME': 'opsany-saas-apm-frontend',
    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',
    "FRONTEND_ENABLED": 'false',
    'FRONTEND_ENVIRONMENT': 'prod',
}

# 单位秒
HOME_PAGE_LAST_TIME = 60 * 15

# Redis Config
REDIS_HOST = "REDIS_SERVER_IP"
REDIS_PORT = "REDIS_SERVER_PORT"
REDIS_USERNAME = parse.quote("REDIS_SERVER_USER")
REDIS_PASSWORD = parse.quote("REDIS_SERVER_PASSWORD")

# Redis Celery AMQP
BROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/21'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)

# Reids Cache
CACHES.update(
    {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://{}:{}@{}:{}/21".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),
             # 'TIMEOUT': 86400,  # 1天
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                # "CONNECTION_POOL_KWARGS": {"max_connections": 1000},
                # "PASSWORD": REDIS_PASSWORD,
            }
        }
    },
)


================================================
FILE: install/conf/opsany-saas/apm/apm-supervisor.ini
================================================
[program: apm_uwsgi]
command = uwsgi --ini /opt/opsany/uwsgi/apm.ini
stdout_logfile = /opt/opsany/logs/apm/uwsgi.log
redirect_stderr = true
autorestart = true
stopsignal = QUIT
environment = BK_ENV="production",BK_LOG_DIR="/opt/opsany/logs/"

[program: apm_celery]
command = /usr/local/bin/python3 /opt/opsany/apm/manage.py celery worker -n apm -l INFO --autoscale=16,4
directory = /opt/opsany/apm
stdout_logfile = /opt/opsany/logs/apm/celery.log
redirect_stderr = true
stopwaitsecs = 10
stopsignal = QUIT
autorestart = true
environment = BK_ENV="production",BK_LOG_DIR="/opt/opsany/logs/"

[program:apm]
command = /usr/local/bin/python3 /opt/opsany/apm/manage.py celery beat
directory = /opt/opsany/apm
stdout_logfile =/opt/opsany/logs/apm/celery-beat.log
redirect_stderr = true
stopwaitsecs = 10
stopsignal = QUIT
autorestart = true
environment = BK_ENV="production",BK_LOG_DIR="/opt/opsany/logs/"


================================================
FILE: install/conf/opsany-saas/apm/apm-uwsgi.ini
================================================
[uwsgi]
socket = /opt/opsany/uwsgi/uwsgi.sock
pidfile = /opt/opsany/uwsgi/uwsgi.pid
logto = /opt/opsany/logs/apm/uwsgi.log
log-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]
master = true
vacuum = true
chdir = /opt/opsany/apm
module = wsgi:application
mount = /o/apm=wsgi.py
manage-script-name = true

# Worker
processes = 16
threads = 2
enable-threads = true
cheaper = 4
cheaper-initial = 4
cheaper-algo = busyness
cheaper-overload = 20
cheaper-step = 2
cheaper-busyness-multiplier = 50
listen = 128

# Tuning
reload-mercy = 30
worker-reload-mercy = 30
harakiri = 120
buffer-size = 65536
post-buffering = 65536
max-requests = 2048
max-requests-delta = 20
limit-as = 1024

================================================
FILE: install/conf/opsany-saas/auto/auto-init.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import

__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']

import os

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from blueapps.core.celery import celery_app

# app 基本信息

# SaaS运行版本,如非必要请勿修改
RUN_VER = 'open'
# SaaS应用ID
APP_CODE = 'auto'
# SaaS安全密钥,注意请勿泄露该密钥
SECRET_KEY = "AUTO_SECRET_KEY"
# PAAS平台URL
BK_URL = "https://DOMAIN_NAME"
PAAS_ESB_URL = "http://LOCAL_IP:8002"
PAAS_LOGIN_URL = 'http://LOCAL_IP:8003'
# 默认头像
DEFAULT_USER_ICON = "uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png"
# Upload目录
UPLOAD_PATH = "/opt/opsany/"

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(
    __file__)))


DEFAULT_LANGUAGE = "chinese_simplified"
DEFAULT_THEME = "theme-default"


================================================
FILE: install/conf/opsany-saas/auto/auto-nginx-main.conf
================================================
# /etc/nginx/nginx.conf

user root;

# Set number of worker processes automatically based on number of CPU cores.
worker_processes 2;

# Enables the use of JIT for regular expressions to speed-up their processing.
pcre_jit on;

# Configures default error logger.
error_log /opt/opsany/logs/auto/nginx-error.log warn;

# Includes files with directives to load dynamic modules.
include /etc/nginx/modules/*.conf;

# Uncomment to include files with config snippets into the root context.
# NOTE: This will be enabled by default in Alpine 3.15.
#include /etc/nginx/conf.d/*.conf;

events {
        # The maximum number of simultaneous connections that can be opened by
        # a worker process.
        worker_connections 4096;
}

http {
        # Includes mapping of file name extensions to MIME types of responses
        # and defines the default type.
        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        # Name servers used to resolve names of upstream servers into addresses.
        # It's also needed when using tcpsocket and udpsocket in Lua modules.
        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;

        # Don't tell nginx version to the clients. Default is 'on'.
        server_tokens off;

        # Specifies the maximum accepted body size of a client request, as
        # indicated by the request header Content-Length. If the stated content
        # length is greater than this size, then the client receives the HTTP
        # error code 413. Set to 0 to disable. Default is '1m'.
        client_max_body_size 1m;

        # Sendfile copies data between one FD and other from within the kernel,
        # which is more efficient than read() + write(). Default is off.
        sendfile on;

        # Causes nginx to attempt to send its HTTP response head in one packet,
        # instead of using partial frames. Default is 'off'.
        tcp_nopush on;


        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.
        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

        # Path of the file with Diffie-Hellman parameters for EDH ciphers.
        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`
        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;

        # Specifies that our cipher suits should be preferred over client ciphers.
        # Default is 'off'.
        ssl_prefer_server_ciphers on;

        # Enables a shared SSL cache with size that can hold around 8000 sessions.
        # Default is 'none'.
        ssl_session_cache shared:SSL:2m;

        # Specifies a time during which a client may reuse the session parameters.
        # Default is '5m'.
        ssl_session_timeout 1h;

        # Disable TLS session tickets (they are insecure). Default is 'on'.
        ssl_session_tickets off;


        # Enable gzipping of responses.
        #gzip on;

        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.
        gzip_vary on;


        # Helper variable for proxying websockets.
        map $http_upgrade $connection_upgrade {
                default upgrade;
                '' close;
        }


        # Specifies the main log format.
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

        # Sets the path, format, and configuration for a buffered log write.
        access_log /opt/opsany/logs/auto/nginx-access.log main;


        # Includes virtual hosts configs.
        include /etc/nginx/http.d/*.conf;
}


================================================
FILE: install/conf/opsany-saas/auto/auto-nginx.conf
================================================
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size    8192m;
    location ~ ^/o/([^/]+)/static/(.*)$ {
                alias /opt/opsany/$1/static/$2;
        }

    location ~ ^/(t|o)/([^/]+) {
        include uwsgi_params;
        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {
            return 404;
        }
        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;
        uwsgi_param SCRIPT_NAME /$1/$2;
        uwsgi_read_timeout 300;
        uwsgi_modifier1 30;
    }
}


================================================
FILE: install/conf/opsany-saas/auto/auto-prod.py
================================================
# -*- coding: utf-8 -*-
from config import RUN_VER
from urllib import parse
import mongoengine

if RUN_VER == 'open':
    from blueapps.patch.settings_open_saas import *  # noqa
else:
    from blueapps.patch.settings_paas_services import *  # noqa

# 正式环境
RUN_MODE = 'PRODUCT'

# 只对正式环境日志级别进行配置,可以在这里修改
LOG_LEVEL = 'ERROR'

# V2
# import logging
# logging.getLogger('root').setLevel('INFO')
# V3
# import logging
# logging.getLogger('app').setLevel('INFO')

# MySQL Config
DATABASES.update(
    {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': APP_CODE,  # 数据库名
            'USER': APP_CODE,  # 数据库用户
            'PASSWORD': "MYSQL_OPSANY_AUTO_PASSWORD",  # 数据库密码
            'HOST': "MYSQL_SERVER_IP",  # 数据库主机
            'PORT': int("MYSQL_SERVER_PORT"),  # 数据库端口
            'OPTIONS': {
                "init_command": "SET default_storage_engine=INNODB;\
                                 SET sql_mode='STRICT_TRANS_TABLES';",
            }

        },
    }
)

# MongoDB Config
MONGO_CONN = mongoengine.connect(
        db=APP_CODE,                                 # 需要进行操作的数据库名称
        alias='default',                          # 必须定义一个default数据库
        host="MONGO_SERVER_IP",
        port=int("MONGO_SERVER_PORT"),
        username=APP_CODE,
        password="MONGO_AUTO_PASSWORD",
        connect=False
)

# Redis Config
REDIS_HOST = "REDIS_SERVER_IP"
REDIS_PORT = "REDIS_SERVER_PORT"
REDIS_USERNAME = parse.quote("REDIS_SERVER_USER")
REDIS_PASSWORD = parse.quote("REDIS_SERVER_PASSWORD")

# Redis Celery AMQP
BROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/12'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)

# Elastic APM
ELASTIC_APM = {
  'ENABLED': 'false',
  'SERVICE_NAME': 'opsany-saas-auto',
  'SECRET_TOKEN': 'APM_SECRET_TOKEN',
  'SERVER_URL': 'https://APM_SERVER_HOST:8200',
  'VERIFY_SERVER_CERT': 'false',
  'ENVIRONMENT': 'prod',
}

# Elastic frontend APM
FRONTEND_ELASTIC_APM = {
    'FRONTEND_SERVICE_NAME': 'opsany-saas-auto-frontend',
    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',
    "FRONTEND_ENABLED": 'false',
    'FRONTEND_ENVIRONMENT': 'prod',
}


================================================
FILE: install/conf/opsany-saas/auto/auto-supervisor.ini
================================================
[program: auto_uwsgi]
command = uwsgi --ini /opt/opsany/uwsgi/auto.ini
stdout_logfile = /opt/opsany/logs/auto/uwsgi.log
redirect_stderr = true
autorestart = true
stopsignal = QUIT
environment = BK_ENV="production",BK_LOG_DIR="/opt/opsany/logs/"

[program: auto_celery]
command = /usr/local/bin/python3 /opt/opsany/auto/manage.py celery worker -n auto -l INFO --autoscale=16,4
directory = /opt/opsany/auto
stdout_logfile = /opt/opsany/logs/auto/celery.log
redirect_stderr = true
stopwaitsecs = 10
stopsignal = QUIT
autorestart = true
environment = BK_ENV="production",BK_LOG_DIR="/opt/opsany/logs/"

[program:auto_beat]
command = /usr/local/bin/python3 /opt/opsany/auto/manage.py celery beat
directory = /opt/opsany/auto
stdout_logfile =/opt/opsany/logs/auto/celery-beat.log
redirect_stderr = true
stopwaitsecs = 10
stopsignal = QUIT
autorestart = true
environment = BK_ENV="production",BK_LOG_DIR="/opt/opsany/logs/"


================================================
FILE: install/conf/opsany-saas/auto/auto-uwsgi.ini
================================================
[uwsgi]
socket = /opt/opsany/uwsgi/uwsgi.sock
pidfile = /opt/opsany/uwsgi/uwsgi.pid
logto = /opt/opsany/logs/auto/uwsgi.log
log-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]
master = true
vacuum = true
chdir = /opt/opsany/auto
module = wsgi:application
mount = /o/auto=wsgi.py
manage-script-name = true

# Worker
processes = 16
threads = 2
enable-threads = true
cheaper = 4
cheaper-initial = 4
cheaper-algo = busyness
cheaper-overload = 20
cheaper-step = 2
cheaper-busyness-multiplier = 50
listen = 128

# Tuning
reload-mercy = 30
worker-reload-mercy = 30
harakiri = 120
buffer-size = 65536
post-buffering = 65536
max-requests = 2048
max-requests-delta = 20
limit-as = 1024

================================================
FILE: install/conf/opsany-saas/bastion/bastion-init.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import

__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']

import os

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from blueapps.core.celery import celery_app

# app 基本信息

# SaaS运行版本,如非必要请勿修改
RUN_VER = 'open'
# SaaS应用ID
APP_CODE = 'bastion'
# SaaS安全密钥,注意请勿泄露该密钥
SECRET_KEY = "BASTION_SECRET_KEY"
# PAAS平台URL
BK_URL = "https://DOMAIN_NAME"
PAAS_ESB_URL = "http://LOCAL_IP:8002"
PAAS_LOGIN_URL = "http://LOCAL_IP:8003"
# UploadPath
UPLOAD_PATH = "/opt/opsany/"
# MFA过期时间,单位:秒
MFA_TIME_OUT = 1800

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(
    __file__)))

# 默认语言和主题
DEFAULT_LANGUAGE = "chinese_simplified"
DEFAULT_THEME = "theme-default"


================================================
FILE: install/conf/opsany-saas/bastion/bastion-nginx-main.conf
================================================
# /etc/nginx/nginx.conf

user root;

# Set number of worker processes automatically based on number of CPU cores.
worker_processes 2;

# Enables the use of JIT for regular expressions to speed-up their processing.
pcre_jit on;

# Configures default error logger.
error_log /opt/opsany/logs/bastion/nginx-error.log warn;

# Includes files with directives to load dynamic modules.
include /etc/nginx/modules/*.conf;

# Uncomment to include files with config snippets into the root context.
# NOTE: This will be enabled by default in Alpine 3.15.
#include /etc/nginx/conf.d/*.conf;

events {
        # The maximum number of simultaneous connections that can be opened by
        # a worker process.
        worker_connections 4096;
}

http {
        # Includes mapping of file name extensions to MIME types of responses
        # and defines the default type.
        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        # Name servers used to resolve names of upstream servers into addresses.
        # It's also needed when using tcpsocket and udpsocket in Lua modules.
        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;

        # Don't tell nginx version to the clients. Default is 'on'.
        server_tokens off;

        # Specifies the maximum accepted body size of a client request, as
        # indicated by the request header Content-Length. If the stated content
        # length is greater than this size, then the client receives the HTTP
        # error code 413. Set to 0 to disable. Default is '1m'.
        client_max_body_size 1m;

        # Sendfile copies data between one FD and other from within the kernel,
        # which is more efficient than read() + write(). Default is off.
        sendfile on;

        # Causes nginx to attempt to send its HTTP response head in one packet,
        # instead of using partial frames. Default is 'off'.
        tcp_nopush on;


        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.
        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

        # Path of the file with Diffie-Hellman parameters for EDH ciphers.
        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`
        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;

        # Specifies that our cipher suits should be preferred over client ciphers.
        # Default is 'off'.
        ssl_prefer_server_ciphers on;

        # Enables a shared SSL cache with size that can hold around 8000 sessions.
        # Default is 'none'.
        ssl_session_cache shared:SSL:2m;

        # Specifies a time during which a client may reuse the session parameters.
        # Default is '5m'.
        ssl_session_timeout 1h;

        # Disable TLS session tickets (they are insecure). Default is 'on'.
        ssl_session_tickets off;


        # Enable gzipping of responses.
        #gzip on;

        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.
        gzip_vary on;


        # Helper variable for proxying websockets.
        map $http_upgrade $connection_upgrade {
                default upgrade;
                '' close;
        }


        # Specifies the main log format.
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

        # Sets the path, format, and configuration for a buffered log write.
        access_log /opt/opsany/logs/bastion/nginx-access.log main;


        # Includes virtual hosts configs.
        include /etc/nginx/http.d/*.conf;
}


================================================
FILE: install/conf/opsany-saas/bastion/bastion-nginx.conf
================================================
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size    8192m;
    location ~ ^/o/([^/]+)/static/(.*)$ {
                alias /opt/opsany/$1/static/$2;
        }

    location ~ ^/(t|o)/([^/]+) {
        include uwsgi_params;
        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {
            return 404;
        }
        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;
        uwsgi_param SCRIPT_NAME /$1/$2;
        uwsgi_read_timeout 300;
        uwsgi_modifier1 30;
    }
}


================================================
FILE: install/conf/opsany-saas/bastion/bastion-prod.py
================================================
# -*- coding: utf-8 -*-
from urllib import parse
from config import RUN_VER, MFA_TIME_OUT

if RUN_VER == 'open':
    from blueapps.patch.settings_open_saas import *  # noqa
else:
    from blueapps.patch.settings_paas_services import *  # noqa

# 正式环境
RUN_MODE = 'PRODUCT'

# 只对正式环境日志级别进行配置,可以在这里修改
LOG_LEVEL = 'ERROR'

# V2
# import logging
# logging.getLogger('root').setLevel('INFO')
# V3
# import logging
# logging.getLogger('app').setLevel('INFO')

#GUACD_HOST = '127.0.0.1'
#GUACD_PORT = '4822'
FOOT_CLIENT_IP = "BASTION_FOOT_CLIENT_IP"
FOOT_CLIENT_PORT = "BASTION_FOOT_CLIENT_PORT"

# 对应guacd的路径如下
GUACD_PATH = "/srv/guacamole"

MEDIA_URL = ''
UPLOAD_PATH = "/opt/opsany/"
TERMINAL_PATH = "/opt/opsany/uploads/terminal"
ORI_GUACD_PATH = os.path.join("/opt/opsany/uploads/guacamole")
TERMINAL_TIMEOUT = 1800

DATABASES.update(
    {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'bastion',  # 数据库名
            'USER': 'bastion',  # 数据库用户
            'PASSWORD': "MYSQL_OPSANY_BASTION_PASSWORD",  # 数据库密码
            'HOST': "MYSQL_SERVER_IP",  # 数据库主机
            'PORT': int("MYSQL_SERVER_PORT"),  # 数据库端口
            'OPTIONS': {
                "init_command": "SET default_storage_engine=INNODB;\
                                 SET sql_mode='STRICT_TRANS_TABLES';",
            }

        },
    }
)

# Redis Config
REDIS_HOST = "REDIS_SERVER_IP"
REDIS_PORT = "REDIS_SERVER_PORT"
REDIS_USERNAME = parse.quote("REDIS_SERVER_USER")
REDIS_PASSWORD = parse.quote("REDIS_SERVER_PASSWORD")

# Redis Celery AMQP
# BROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/8'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)

# Redis Cache
CACHES.update(
    {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://{}:{}@{}:{}/8".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),
            'TIMEOUT': 86400,
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 1000},
            }
        },
        "cache": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://{}:{}@{}:{}/8".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),
            'TIMEOUT': 1800,
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 1000},
                # "PASSWORD": REDIS_PASSWORD,
            }
        },
        "mfa": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://{}:{}@{}:{}/8".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),
            'TIMEOUT': 1800,
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 1000},
                # "PASSWORD": REDIS_PASSWORD,
            }
        },
        "pod_login": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": "redis://{}:{}@{}:{}/14".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT),
            'TIMEOUT': 1800,
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "CONNECTION_POOL_KWARGS": {"max_connections": 1000},
                # "PASSWORD": REDIS_PASSWORD,
            }
        }
    }
)

WEBSOCKET_CHANNEL_LAYERS = ["redis://{}:{}@{}:{}/8".format(REDIS_USERNAME, REDIS_PASSWORD, REDIS_HOST, REDIS_PORT)]

# Elastic APM
ELASTIC_APM = {
  'ENABLED': 'false',
  'SERVICE_NAME': 'opsany-saas-bastion',
  'SECRET_TOKEN': 'APM_SECRET_TOKEN',
  'SERVER_URL': 'https://APM_SERVER_HOST:8200',
  'VERIFY_SERVER_CERT': 'false',
  'ENVIRONMENT': 'prod',
}

# Elastic frontend APM
FRONTEND_ELASTIC_APM = {
    'FRONTEND_SERVICE_NAME': 'opsany-saas-bastion-frontend',
    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',
    "FRONTEND_ENABLED": 'false',
    'FRONTEND_ENVIRONMENT': 'prod',
}


================================================
FILE: install/conf/opsany-saas/bastion/bastion-supervisor.ini
================================================
[program: bastion_uwsgi]
command = uwsgi --ini /opt/opsany/uwsgi/bastion.ini
stdout_logfile = /opt/opsany/logs/bastion/uwsgi.log
redirect_stderr = true
autorestart = true
stopsignal = QUIT
environment = BK_ENV="production",BK_LOG_DIR="/opt/opsany/logs/"


================================================
FILE: install/conf/opsany-saas/bastion/bastion-uwsgi.ini
================================================
[uwsgi]
socket = /opt/opsany/uwsgi/uwsgi.sock
pidfile = /opt/opsany/uwsgi/uwsgi.pid
logto = /opt/opsany/logs/bastion/uwsgi.log
log-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]
master = true
vacuum = true
chdir = /opt/opsany/bastion
module = wsgi:application
mount = /o/bastion=wsgi.py
manage-script-name = true

# Worker
processes = 16
threads = 2
enable-threads = true
cheaper = 3
cheaper-initial = 3
cheaper-algo = busyness
cheaper-overload = 20
cheaper-step = 2
cheaper-busyness-multiplier = 50
listen = 128

# Tuning
reload-mercy = 30
worker-reload-mercy = 30
harakiri = 120
buffer-size = 65536
post-buffering = 65536
max-requests = 2048
max-requests-delta = 20
limit-as = 1024



================================================
FILE: install/conf/opsany-saas/cmdb/cmdb-init.py
================================================
# -*- coding: utf-8 -*-
"""
Copyright © 2012-2020 OpsAny. All Rights Reserved. 

需要配置和开发中心一致的SECRET_KEY,会记录在paas_app表中的auth_token字段。
"""


from __future__ import absolute_import

__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']

import os

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from blueapps.core.celery import celery_app

# app 基本信息

# SaaS运行版本,如非必要请勿修改
RUN_VER = 'open'
# SaaS应用ID
APP_CODE = 'cmdb'
# SaaS安全密钥,注意请勿泄露该密钥
SECRET_KEY = "CMDB_SECRET_KEY"
# 开发中心URL
BK_URL = "https://DOMAIN_NAME"
PAAS_ESB_URL = "http://LOCAL_IP:8002"
PAAS_LOGIN_URL = "http://LOCAL_IP:8003"
# Upload目录
UPLOAD_PATH = "/opt/opsany"
# 默认头像
DEFAULT_USER_ICON = "uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png"

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(
    __file__)))


DEFAULT_LANGUAGE = "chinese_simplified"
DEFAULT_THEME = "theme-default"


================================================
FILE: install/conf/opsany-saas/cmdb/cmdb-nginx-main.conf
================================================
# /etc/nginx/nginx.conf

user root;

# Set number of worker processes automatically based on number of CPU cores.
worker_processes 2;

# Enables the use of JIT for regular expressions to speed-up their processing.
pcre_jit on;

# Configures default error logger.
error_log /opt/opsany/logs/cmdb/nginx-error.log warn;

# Includes files with directives to load dynamic modules.
include /etc/nginx/modules/*.conf;

# Uncomment to include files with config snippets into the root context.
# NOTE: This will be enabled by default in Alpine 3.15.
#include /etc/nginx/conf.d/*.conf;

events {
        # The maximum number of simultaneous connections that can be opened by
        # a worker process.
        worker_connections 4096;
}

http {
        # Includes mapping of file name extensions to MIME types of responses
        # and defines the default type.
        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        # Name servers used to resolve names of upstream servers into addresses.
        # It's also needed when using tcpsocket and udpsocket in Lua modules.
        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;

        # Don't tell nginx version to the clients. Default is 'on'.
        server_tokens off;

        # Specifies the maximum accepted body size of a client request, as
        # indicated by the request header Content-Length. If the stated content
        # length is greater than this size, then the client receives the HTTP
        # error code 413. Set to 0 to disable. Default is '1m'.
        client_max_body_size 1m;

        # Sendfile copies data between one FD and other from within the kernel,
        # which is more efficient than read() + write(). Default is off.
        sendfile on;

        # Causes nginx to attempt to send its HTTP response head in one packet,
        # instead of using partial frames. Default is 'off'.
        tcp_nopush on;


        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.
        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

        # Path of the file with Diffie-Hellman parameters for EDH ciphers.
        # TIP: Generate with: `openssl dhparam -out /etc/ssl/nginx/dh2048.pem 2048`
        #ssl_dhparam /etc/ssl/nginx/dh2048.pem;

        # Specifies that our cipher suits should be preferred over client ciphers.
        # Default is 'off'.
        ssl_prefer_server_ciphers on;

        # Enables a shared SSL cache with size that can hold around 8000 sessions.
        # Default is 'none'.
        ssl_session_cache shared:SSL:2m;

        # Specifies a time during which a client may reuse the session parameters.
        # Default is '5m'.
        ssl_session_timeout 1h;

        # Disable TLS session tickets (they are insecure). Default is 'on'.
        ssl_session_tickets off;


        # Enable gzipping of responses.
        #gzip on;

        # Set the Vary HTTP header as defined in the RFC 2616. Default is 'off'.
        gzip_vary on;


        # Helper variable for proxying websockets.
        map $http_upgrade $connection_upgrade {
                default upgrade;
                '' close;
        }


        # Specifies the main log format.
        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                        '$status $body_bytes_sent "$http_referer" '
                        '"$http_user_agent" "$http_x_forwarded_for"';

        # Sets the path, format, and configuration for a buffered log write.
        access_log /opt/opsany/logs/cmdb/nginx-access.log main;


        # Includes virtual hosts configs.
        include /etc/nginx/http.d/*.conf;
}


================================================
FILE: install/conf/opsany-saas/cmdb/cmdb-nginx.conf
================================================
server {
    listen 80 default_server;
    listen [::]:80 default_server;
    # gzip config
    gzip on;
    gzip_min_length 1k;
    gzip_comp_level 9;
    gzip_types text/plain application/javascript application/x-javascript text/css application/xml text/javascript application/x-httpd-php image/jpeg image/gif image/png;
    gzip_vary on;
    gzip_disable "MSIE [1-6]\.";
    client_max_body_size    8192m;
    location ~ ^/o/([^/]+)/static/(.*)$ {
                alias /opt/opsany/$1/static/$2;
        }

    location ~ ^/(t|o)/([^/]+) {
        include uwsgi_params;
        if (!-f /opt/opsany/uwsgi/uwsgi.pid) {
            return 404;
        }
        uwsgi_pass  unix:/opt/opsany/uwsgi/uwsgi.sock;
        uwsgi_param SCRIPT_NAME /$1/$2;
        uwsgi_read_timeout 300;
        uwsgi_modifier1 30;
    }
}


================================================
FILE: install/conf/opsany-saas/cmdb/cmdb-prod.py
================================================
# -*- coding: utf-8 -*-
"""
Copyright © 2012-2020 OpsAny. All Rights Reserved. 

""" # noqa
from urllib import parse
from config import RUN_VER
if RUN_VER == 'open':
    from blueapps.patch.settings_open_saas import *  # noqa
else:
    from blueapps.patch.settings_paas_services import *  # noqa

# 正式环境
RUN_MODE = 'PRODUCT'

# 只对正式环境日志级别进行配置,可以在这里修改
LOG_LEVEL = 'ERROR'

# V2
# import logging
# logging.getLogger('root').setLevel('INFO')
# V3
# import logging
# logging.getLogger('app').setLevel('INFO')

# 正式环境数据库可以在这里配置
DATABASES.update(
    {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': APP_CODE,  # 数据库名
            'USER': APP_CODE,  # 数据库用户
            'PASSWORD': "MYSQL_OPSANY_CMDB_PASSWORD",  # 数据库密码
            'HOST': "MYSQL_SERVER_IP",  # 数据库主机
            'PORT': int("MYSQL_SERVER_PORT"),  # 数据库端口
            'OPTIONS': {
                "init_command": "SET default_storage_engine=INNODB;\
                                 SET sql_mode='STRICT_TRANS_TABLES';",
            }

        },
    }
)

import mongoengine

MONGO_CONN = mongoengine.connect(
        db=APP_CODE,                                 # 需要进行操作的数据库名称
        alias='default',                          # 必须定义一个default数据库
        host="MONGO_SERVER_IP",
        port=int("MONGO_SERVER_PORT"),
        username=APP_CODE,
        password="MONGO_CMDB_PASSWORD",
        connect=False
        # authentication_source="admin",           # 进行身份认证的数据库,通常这个数据库为admin
)

CORS_ORIGIN_WHITELIST = [
    'http://localhost:8000',
]

CORS_ALLOW_CREDENTIALS = True

# Redis Config
REDIS_HOST = "REDIS_SERVER_IP"
REDIS_PORT = "REDIS_SERVER_PORT"
REDIS_USERNAME = parse.quote("REDIS_SERVER_USER")
REDIS_PASSWORD = parse.quote("REDIS_SERVER_PASSWORD")

# Redis Celery AMQP
BROKER_URL = 'redis://{REDIS_USERNAME}:{REDIS_PASSWORD}@{REDIS_HOST}:{REDIS_PORT}/3'.format(REDIS_USERNAME=REDIS_USERNAME, REDIS_PASSWORD=REDIS_PASSWORD, REDIS_HOST=REDIS_HOST, REDIS_PORT=REDIS_PORT)

# Elastic APM
ELASTIC_APM = {
  'ENABLED': 'false',
  'SERVICE_NAME': 'opsany-saas-cmdb',
  'SECRET_TOKEN': 'APM_SECRET_TOKEN',
  'SERVER_URL': 'https://APM_SERVER_HOST:8200',
  'VERIFY_SERVER_CERT': 'false',
  'ENVIRONMENT': 'prod',
}

# Elastic frontend APM
FRONTEND_ELASTIC_APM = {
    'FRONTEND_SERVICE_NAME': 'opsany-saas-cmdb-frontend',
    'FRONTEND_SERVER_URL': 'https://APM_SERVER_HOST:8200',
    "FRONTEND_ENABLED": 'false',
    'FRONTEND_ENVIRONMENT': 'prod',
}


================================================
FILE: install/conf/opsany-saas/cmdb/cmdb-supervisor.ini
================================================
[program: cmdb_uwsgi]
command = uwsgi --ini /opt/opsany/uwsgi/cmdb.ini
stdout_logfile = /opt/opsany/logs/cmdb/uwsgi.log
redirect_stderr = true
autorestart = true
stopsignal = QUIT
environment = BK_ENV="production",BK_LOG_DIR="/opt/opsany/logs/"
stopasgroup=true
killasgroup=true

[program: cmdb_celery]
command = /usr/local/bin/python3 /opt/opsany/cmdb/manage.py celery worker -n cmdb -l INFO --autoscale=8,1
directory = /opt/opsany/cmdb
stdout_logfile = /opt/opsany/logs/cmdb/celery.log
redirect_stderr = true
stopwaitsecs = 10
stopsignal = QUIT
autorestart = true
environment = BK_ENV="production",BK_LOG_DIR="/opt/opsany/logs/"
stopasgroup=true
killasgroup=true

[program:cmdb_beat]
command = /usr/local/bin/python3 /opt/opsany/cmdb/manage.py celery beat
directory = /opt/opsany/cmdb
stdout_logfile =/opt/opsany/logs/cmdb/celery-beat.log
redirect_stderr = true
stopwaitsecs = 10
stopsignal = QUIT
autorestart = true
environment = BK_ENV="production",BK_LOG_DIR="/opt/opsany/logs/"
stopasgroup=true
killasgroup=true

================================================
FILE: install/conf/opsany-saas/cmdb/cmdb-uwsgi.ini
================================================
[uwsgi]
socket = /opt/opsany/uwsgi/uwsgi.sock
pidfile = /opt/opsany/uwsgi/uwsgi.pid
logto = /opt/opsany/logs/cmdb/uwsgi.log
log-format = [%(addr)] [%(ctime)] [%(method)] [%(uri)] [%(proto)] [%(status)] [%(msecs)] [%(referer)] [%(uagent)]
master = true
vacuum = true
chdir = /opt/opsany/cmdb
module = wsgi:application
mount = /o/cmdb=wsgi.py
manage-script-name = true

# Worker
processes = 16
threads = 2
enable-threads = true
cheaper = 3
cheaper-initial = 3
cheaper-algo = busyness
cheaper-overload = 20
cheaper-step = 2
cheaper-busyness-multiplier = 50
listen = 128

# Tuning
reload-mercy = 30
worker-reload-mercy = 30
harakiri = 120
buffer-size = 65536
post-buffering = 65536
max-requests = 2048
max-requests-delta = 20
limit-as = 1024



================================================
FILE: install/conf/opsany-saas/cmp/cmp-init.py
================================================
# -*- coding: utf-8 -*-
from __future__ import absolute_import

__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_KEY', 'BK_URL', 'PAAS_ESB_URL', 'PAAS_LOGIN_URL', 'BASE_DIR']

import os

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from blueapps.core.celery import celery_app

# app 基本信息

# SaaS运行版本,如非必要请勿修改
RUN_VER = 'open'
# SaaS应用ID
APP_CODE = 'cmp'
# SaaS安全密钥,注意请勿泄露该密钥
SECRET_KEY = "CMP_SECRET_KEY"
# PAAS平台URL
BK_URL = "https://DOMAIN_NAME"
PAAS_ESB_URL = "http://LOCAL_IP:8002"
PAAS_LOGIN_URL = "http://LOCAL_IP:8003"

# 默认头像
DEFAULT_USER_ICON = "uploads/workbench/user_icon/edfb99ee-08d6-41b8-ac5f-117fb86b0912.png"
# MFA过期时间,单位:秒
MFA_TIME_OUT = 1800


# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(
    __file__)))


================================================
FILE: install/conf/opsany-saas/cmp/cmp-nginx-main.conf
================================================
# /etc/nginx/nginx.conf

user root;

# Set number of worker processes automatically based on number of CPU cores.
worker_processes 2;

# Enables the use of JIT for regular expressions to speed-up their processing.
pcre_jit on;

# Configures default error logger.
error_log /opt/opsany/logs/cmp/nginx-error.log warn;

# Includes files with directives to load dynamic modules.
include /etc/nginx/modules/*.conf;

# Uncomment to include files with config snippets into the root context.
# NOTE: This will be enabled by default in Alpine 3.15.
#include /etc/nginx/conf.d/*.conf;

events {
        # The maximum number of simultaneous connections that can be opened by
        # a worker process.
        worker_connections 4096;
}

http {
        # Includes mapping of file name extensions to MIME types of responses
        # and defines the default type.
        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        # Name servers used to resolve names of upstream servers into addresses.
        # It's also needed when using tcpsocket and udpsocket in Lua modules.
        #resolver 1.1.1.1 1.0.0.1 2606:4700:4700::1111 2606:4700:4700::1001;

        # Don't tell nginx version to the clients. Default is 'on'.
        server_tokens off;

        # Specifies the maximum accepted body size of a client request, as
        # indicated by the request header Content-Length. If the stated content
        # length is greater than this size, then the client receives the HTTP
        # error code 413. Set to 0 to disable. Default is '1m'.
        client_max_body_size 1m;

        # Sendfile copies data between one FD and other from within the kernel,
        # which is more efficient than read() + write(). Default is off.
        sendfile on;

        # Causes nginx to attempt to send its HTTP response head in one packet,
        # instead of using partial frames. Default is 'off'.
        tcp_nopush on;


        # Enables the specified protocols. Default is TLSv1 TLSv1.1 TLSv1.2.
        # TIP: If you're not obligated to support ancient clients, remove TLSv1.1.
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;

        # P
Download .txt
Showing preview only (258K chars total). Download the full file or copy to clipboard to get everything.
gitextract_n46_2v49/

├── .gitignore
├── LICENSE.txt
├── README.md
├── docs/
│   ├── CONTRIBUTING.md
│   ├── ISSUE_TEMPLATE.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   └── README.md
├── install/
│   ├── .gitkeep
│   ├── README.md
│   ├── conf/
│   │   ├── README.md
│   │   ├── consul.hcl
│   │   ├── daemon.json
│   │   ├── elastic/
│   │   │   ├── apm-server.yml
│   │   │   ├── elasticsearch.yml
│   │   │   ├── heartbeat.yml
│   │   │   └── kibana.yml
│   │   ├── grafana/
│   │   │   ├── grafana.ini
│   │   │   ├── grafana.key
│   │   │   └── grafana.pem
│   │   ├── kubernetes/
│   │   │   └── .gitkeep
│   │   ├── mongodb/
│   │   │   └── .gitkeep
│   │   ├── mysql/
│   │   │   └── mysqld.cnf
│   │   ├── mysqld.cnf
│   │   ├── nginx-conf.d/
│   │   │   ├── nginx_paas.conf.bak
│   │   │   ├── opsany_paas.conf
│   │   │   ├── opsany_paas_k8s.config
│   │   │   ├── opsany_proxy.conf
│   │   │   ├── opsany_proxy_k8s.config
│   │   │   └── ssl/
│   │   │       └── .gitkeep
│   │   ├── nginx.conf
│   │   ├── openssl.cnf
│   │   ├── opsany-paas/
│   │   │   ├── appengine/
│   │   │   │   ├── appengine.ini
│   │   │   │   └── settings_production.py.appengine
│   │   │   ├── esb/
│   │   │   │   ├── esb.ini
│   │   │   │   └── settings_production.py.esb
│   │   │   ├── login/
│   │   │   │   ├── login.ini
│   │   │   │   └── settings_production.py.login
│   │   │   ├── mcp-server/
│   │   │   │   ├── config.yaml
│   │   │   │   ├── mcp-supervisor.ini
│   │   │   │   ├── mcp.json
│   │   │   │   └── supervisord.conf
│   │   │   ├── paas/
│   │   │   │   ├── paas.ini
│   │   │   │   └── settings_production.py.paas
│   │   │   └── websocket/
│   │   │       ├── settings_production.py.websocket
│   │   │       ├── settings_production.py.websocket.init
│   │   │       └── websocket.ini
│   │   ├── opsany-saas/
│   │   │   ├── apm/
│   │   │   │   ├── apm-init.py
│   │   │   │   ├── apm-nginx-main.conf
│   │   │   │   ├── apm-nginx.conf
│   │   │   │   ├── apm-prod.py
│   │   │   │   ├── apm-supervisor.ini
│   │   │   │   └── apm-uwsgi.ini
│   │   │   ├── auto/
│   │   │   │   ├── auto-init.py
│   │   │   │   ├── auto-nginx-main.conf
│   │   │   │   ├── auto-nginx.conf
│   │   │   │   ├── auto-prod.py
│   │   │   │   ├── auto-supervisor.ini
│   │   │   │   └── auto-uwsgi.ini
│   │   │   ├── bastion/
│   │   │   │   ├── bastion-init.py
│   │   │   │   ├── bastion-nginx-main.conf
│   │   │   │   ├── bastion-nginx.conf
│   │   │   │   ├── bastion-prod.py
│   │   │   │   ├── bastion-supervisor.ini
│   │   │   │   └── bastion-uwsgi.ini
│   │   │   ├── cmdb/
│   │   │   │   ├── cmdb-init.py
│   │   │   │   ├── cmdb-nginx-main.conf
│   │   │   │   ├── cmdb-nginx.conf
│   │   │   │   ├── cmdb-prod.py
│   │   │   │   ├── cmdb-supervisor.ini
│   │   │   │   └── cmdb-uwsgi.ini
│   │   │   ├── cmp/
│   │   │   │   ├── cmp-init.py
│   │   │   │   ├── cmp-nginx-main.conf
│   │   │   │   ├── cmp-nginx.conf
│   │   │   │   ├── cmp-prod.py
│   │   │   │   ├── cmp-supervisor.ini
│   │   │   │   └── cmp-uwsgi.ini
│   │   │   ├── code/
│   │   │   │   ├── code-init.py
│   │   │   │   ├── code-nginx-main.conf
│   │   │   │   ├── code-nginx.conf
│   │   │   │   ├── code-prod.py
│   │   │   │   ├── code-supervisor.ini
│   │   │   │   └── code-uwsgi.ini
│   │   │   ├── control/
│   │   │   │   ├── control-init.py
│   │   │   │   ├── control-nginx-main.conf
│   │   │   │   ├── control-nginx.conf
│   │   │   │   ├── control-prod.py
│   │   │   │   ├── control-supervisor.ini
│   │   │   │   └── control-uwsgi.ini
│   │   │   ├── dashboard/
│   │   │   │   ├── dashboard-init.py
│   │   │   │   ├── dashboard-nginx-main.conf
│   │   │   │   ├── dashboard-nginx.conf
│   │   │   │   ├── dashboard-prod.py
│   │   │   │   ├── dashboard-supervisor.ini
│   │   │   │   └── dashboard-uwsgi.ini
│   │   │   ├── deploy/
│   │   │   │   ├── deploy-init.py
│   │   │   │   ├── deploy-nginx-main.conf
│   │   │   │   ├── deploy-nginx.conf
│   │   │   │   ├── deploy-prod.py
│   │   │   │   ├── deploy-supervisor.ini
│   │   │   │   └── deploy-uwsgi.ini
│   │   │   ├── devops/
│   │   │   │   ├── devops-init.py
│   │   │   │   ├── devops-nginx-main.conf
│   │   │   │   ├── devops-nginx.conf
│   │   │   │   ├── devops-prod.py
│   │   │   │   ├── devops-supervisor.ini
│   │   │   │   └── devops-uwsgi.ini
│   │   │   ├── event/
│   │   │   │   ├── event-init.py
│   │   │   │   ├── event-nginx-main.conf
│   │   │   │   ├── event-nginx.conf
│   │   │   │   ├── event-prod.py
│   │   │   │   ├── event-supervisor.ini
│   │   │   │   └── event-uwsgi.ini
│   │   │   ├── foot/
│   │   │   │   ├── .gitkeep
│   │   │   │   ├── config.yml
│   │   │   │   └── foot-supervisor.ini
│   │   │   ├── job/
│   │   │   │   ├── job-init.py
│   │   │   │   ├── job-nginx-main.conf
│   │   │   │   ├── job-nginx.conf
│   │   │   │   ├── job-prod.py
│   │   │   │   ├── job-supervisor.ini
│   │   │   │   └── job-uwsgi.ini
│   │   │   ├── k8s/
│   │   │   │   ├── k8s-init.py
│   │   │   │   ├── k8s-nginx-main.conf
│   │   │   │   ├── k8s-nginx.conf
│   │   │   │   ├── k8s-prod.py
│   │   │   │   ├── k8s-supervisor.ini
│   │   │   │   └── k8s-uwsgi.ini
│   │   │   ├── kbase/
│   │   │   │   ├── kbase-init.py
│   │   │   │   ├── kbase-nginx-main.conf
│   │   │   │   ├── kbase-nginx.conf
│   │   │   │   ├── kbase-prod.py
│   │   │   │   ├── kbase-supervisor.ini
│   │   │   │   └── kbase-uwsgi.ini
│   │   │   ├── llmops/
│   │   │   │   ├── llmops-init.py
│   │   │   │   ├── llmops-nginx-main.conf
│   │   │   │   ├── llmops-nginx.conf
│   │   │   │   ├── llmops-prod.py
│   │   │   │   ├── llmops-supervisor.ini
│   │   │   │   └── llmops-uwsgi.ini
│   │   │   ├── log/
│   │   │   │   ├── log-init.py
│   │   │   │   ├── log-nginx-main.conf
│   │   │   │   ├── log-nginx.conf
│   │   │   │   ├── log-prod.py
│   │   │   │   ├── log-supervisor.ini
│   │   │   │   └── log-uwsgi.ini
│   │   │   ├── monitor/
│   │   │   │   ├── monitor-init.py
│   │   │   │   ├── monitor-nginx-main.conf
│   │   │   │   ├── monitor-nginx.conf
│   │   │   │   ├── monitor-prod.py
│   │   │   │   ├── monitor-supervisor.ini
│   │   │   │   └── monitor-uwsgi.ini
│   │   │   ├── pipeline/
│   │   │   │   ├── pipeline-init.py
│   │   │   │   ├── pipeline-nginx-main.conf
│   │   │   │   ├── pipeline-nginx.conf
│   │   │   │   ├── pipeline-prod.py
│   │   │   │   ├── pipeline-supervisor.ini
│   │   │   │   └── pipeline-uwsgi.ini
│   │   │   ├── prom/
│   │   │   │   ├── prom-init.py
│   │   │   │   ├── prom-nginx-main.conf
│   │   │   │   ├── prom-nginx.conf
│   │   │   │   ├── prom-prod.py
│   │   │   │   ├── prom-supervisor.ini
│   │   │   │   └── prom-uwsgi.ini
│   │   │   ├── rbac/
│   │   │   │   ├── rbac-init.py
│   │   │   │   ├── rbac-nginx-main.conf
│   │   │   │   ├── rbac-nginx.conf
│   │   │   │   ├── rbac-prod.py
│   │   │   │   ├── rbac-supervisor.ini
│   │   │   │   └── rbac-uwsgi.ini
│   │   │   ├── repo/
│   │   │   │   ├── repo-init.py
│   │   │   │   ├── repo-nginx-main.conf
│   │   │   │   ├── repo-nginx.conf
│   │   │   │   ├── repo-prod.py
│   │   │   │   ├── repo-supervisor.ini
│   │   │   │   └── repo-uwsgi.ini
│   │   │   └── workbench/
│   │   │       ├── workbench-init.py
│   │   │       ├── workbench-nginx-main.conf
│   │   │       ├── workbench-nginx.conf
│   │   │       ├── workbench-prod.py
│   │   │       ├── workbench-supervisor.ini
│   │   │       └── workbench-uwsgi.ini
│   │   ├── paas_agent/
│   │   │   ├── paas_agent_config.yaml
│   │   │   ├── paasagent.conf
│   │   │   ├── supervisord.conf
│   │   │   ├── uwsgi.ini.16g
│   │   │   └── uwsgi.ini.8g
│   │   ├── prometheus/
│   │   │   ├── alertmanager.yml
│   │   │   ├── blackbox.yml
│   │   │   ├── prometheus.yml
│   │   │   └── web.yml
│   │   ├── proxy/
│   │   │   ├── nginx-conf.d/
│   │   │   │   ├── nginx_proxy.conf
│   │   │   │   └── ssl/
│   │   │   │       ├── .gitkeep
│   │   │   │       ├── opsany-proxy.key
│   │   │   │       └── opsany-proxy.pem
│   │   │   ├── nginx.conf
│   │   │   ├── proxy.ini
│   │   │   ├── saltapi.ini
│   │   │   ├── saltmaster.ini
│   │   │   ├── settings_production.py.proxy
│   │   │   └── settings_production.py.proxy-standalone
│   │   ├── redis/
│   │   │   └── redis.conf
│   │   ├── salt/
│   │   │   ├── certs/
│   │   │   │   ├── saltstack.key
│   │   │   │   └── saltstack.pem
│   │   │   ├── master
│   │   │   ├── master.d/
│   │   │   │   ├── api.conf
│   │   │   │   └── user.conf
│   │   │   ├── minion
│   │   │   └── pki/
│   │   │       └── master/
│   │   │           ├── master.pem
│   │   │           └── master.pub
│   │   └── stackstorm/
│   │       ├── files/
│   │       │   ├── config.js
│   │       │   ├── htpasswd
│   │       │   ├── rbac/
│   │       │   │   ├── assignments/
│   │       │   │   │   ├── st2admin.yaml
│   │       │   │   │   └── stanley.yaml
│   │       │   │   └── roles/
│   │       │   │       └── sample.yaml
│   │       │   ├── st2-cli.conf
│   │       │   ├── st2.docker.conf
│   │       │   └── st2.user.conf
│   │       ├── mongodb_event.js
│   │       ├── opsany_core.yaml
│   │       ├── packs/
│   │       │   ├── opsany_core/
│   │       │   │   ├── .gitignore
│   │       │   │   ├── LICENSE
│   │       │   │   ├── README.md
│   │       │   │   ├── actions/
│   │       │   │   │   ├── control_execute_command.py
│   │       │   │   │   ├── control_execute_command.yaml
│   │       │   │   │   ├── control_run_command.py
│   │       │   │   │   ├── control_run_command.yaml
│   │       │   │   │   ├── control_run_script.py
│   │       │   │   │   ├── control_run_script.yaml
│   │       │   │   │   ├── gitlab_clone_project.py
│   │       │   │   │   ├── gitlab_clone_project.yaml
│   │       │   │   │   ├── lib/
│   │       │   │   │   │   ├── __init__.py
│   │       │   │   │   │   └── base_action.py
│   │       │   │   │   ├── nexus_project.py
│   │       │   │   │   ├── nexus_project.yaml
│   │       │   │   │   ├── send_mail.py
│   │       │   │   │   ├── send_mail.yaml
│   │       │   │   │   ├── send_message.py
│   │       │   │   │   ├── send_message.yaml
│   │       │   │   │   └── test.py
│   │       │   │   ├── config.schema.yaml
│   │       │   │   ├── demo.sh
│   │       │   │   ├── opsany_core.yaml
│   │       │   │   ├── opsany_core.yaml.example
│   │       │   │   ├── pack.yaml
│   │       │   │   ├── requirements-tests.txt
│   │       │   │   └── requirements.txt
│   │       │   └── opsany_workflow/
│   │       │       ├── .gitignore
│   │       │       ├── README.md
│   │       │       ├── actions/
│   │       │       │   ├── demo.py
│   │       │       │   └── demo.yaml
│   │       │       ├── pack.yaml
│   │       │       ├── requirements-tests.txt
│   │       │       └── requirements.txt
│   │       └── tests/
│   │           ├── st2tests-tools.sh
│   │           ├── st2tests.sh
│   │           └── st2tests.yaml
│   ├── database-backup.sh
│   ├── db-backup.sh
│   ├── db-create.sh
│   ├── dev-install.sh
│   ├── devops-install.sh
│   ├── init/
│   │   ├── cmdb-init/
│   │   │   ├── field_group.json
│   │   │   ├── icon_model.json
│   │   │   ├── link_relationship_model.json
│   │   │   ├── model_field.json
│   │   │   ├── model_group.json
│   │   │   └── model_info.json
│   │   ├── cmdb-model/
│   │   │   └── .gitkeep
│   │   ├── control-resource/
│   │   │   └── .gitkeep
│   │   ├── dashboard-init/
│   │   │   ├── zabbix-linux-host.json
│   │   │   ├── zabbix-network_device.json
│   │   │   └── zabbix-windows-host.json
│   │   ├── esb-init/
│   │   │   ├── esb_api_doc.sql
│   │   │   ├── esb_channel.sql
│   │   │   ├── esb_component_system.sql
│   │   │   └── esb_function_controller.sql
│   │   ├── import_script.py
│   │   ├── init_alert_rule.py
│   │   ├── init_dashboard.py
│   │   ├── init_metric_collect_plugin.py
│   │   ├── job-playbook/
│   │   │   └── .gitkeep
│   │   ├── job-script/
│   │   │   ├── .gitkeep
│   │   │   ├── 查看Linux交换分区进程占用.json
│   │   │   ├── 查看Linux系统CPU和内存使用Top 5进程.json
│   │   │   ├── 查看Linux系统UID为0的用户.json
│   │   │   ├── 查看Linux系统所有开机启动服务.json
│   │   │   ├── 查看Linux系统所有用户计划任务.json
│   │   │   ├── 查看Linux系统有登录权限的用户.json
│   │   │   └── 查看连接本机的IP地址统计.json
│   │   ├── job-sls/
│   │   │   └── .gitkeep
│   │   ├── job-task/
│   │   │   └── .gitkeep
│   │   ├── mongodb-init/
│   │   │   ├── .gitkeep
│   │   │   ├── mongodb_init.js
│   │   │   ├── mongodb_init_ee.js
│   │   │   └── mongodb_init_llmops.js
│   │   └── opsany-paas.sql
│   ├── install-k8s.config.example
│   ├── install.config.example
│   ├── llmops-install.sh
│   ├── opsai-install.sh
│   ├── opsany-ce/
│   │   ├── README.md
│   │   ├── opsany-appengine/
│   │   │   ├── Dockerfile
│   │   │   ├── Dockerfile-PY3
│   │   │   ├── README.md
│   │   │   ├── appengine.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-bk-websocket/
│   │   │   ├── Dockerfile
│   │   │   ├── README.md
│   │   │   ├── supervisord.conf
│   │   │   └── websocket.ini
│   │   ├── opsany-esb/
│   │   │   ├── Dockerfile
│   │   │   ├── Dockerfile-PY3
│   │   │   ├── README.md
│   │   │   ├── esb.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-heartbeat/
│   │   │   └── Dockerfile
│   │   ├── opsany-init/
│   │   │   ├── .gitkeep
│   │   │   └── Dockerfile
│   │   ├── opsany-login/
│   │   │   ├── Dockerfile
│   │   │   ├── Dockerfile-PY3
│   │   │   ├── README.md
│   │   │   ├── login.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-mcp-server/
│   │   │   ├── Dockerfile
│   │   │   ├── mcp-supervisor.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-paas/
│   │   │   ├── Dockerfile
│   │   │   ├── Dockerfile-PY3
│   │   │   ├── README.md
│   │   │   ├── paas.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-paasagent/
│   │   │   ├── Dockerfile
│   │   │   ├── README.md
│   │   │   ├── nginx.conf
│   │   │   ├── nginx.ini
│   │   │   ├── paasagent.ini
│   │   │   └── supervisord.conf
│   │   ├── opsany-proxy/
│   │   │   ├── Dockerfile
│   │   │   ├── Dockerfile-PY3
│   │   │   ├── Dockerfile-centos
│   │   │   ├── Dockerfile-deabian
│   │   │   ├── README.md
│   │   │   ├── nginx.ini
│   │   │   ├── nginx_proxy.conf
│   │   │   ├── proxy.ini
│   │   │   ├── saltapi.ini
│   │   │   ├── saltmaster.ini
│   │   │   ├── ssh_config
│   │   │   └── supervisord.conf
│   │   ├── opsany-st2/
│   │   │   ├── CHANGELOG.md
│   │   │   ├── LICENSE
│   │   │   ├── README.md
│   │   │   ├── docker-compose.yml
│   │   │   ├── files/
│   │   │   │   ├── config.js
│   │   │   │   ├── htpasswd
│   │   │   │   ├── rbac/
│   │   │   │   │   ├── assignments/
│   │   │   │   │   │   ├── st2admin.yaml
│   │   │   │   │   │   └── stanley.yaml
│   │   │   │   │   └── roles/
│   │   │   │   │       └── sample.yaml
│   │   │   │   ├── st2-cli.conf
│   │   │   │   ├── st2.docker.conf
│   │   │   │   └── st2.user.conf
│   │   │   ├── st2-install.sh
│   │   │   └── tests/
│   │   │       ├── st2tests-tools.sh
│   │   │       ├── st2tests.sh
│   │   │       └── st2tests.yaml
│   │   ├── opsany-stackstorm/
│   │   │   ├── Dockerfile
│   │   │   ├── README.md
│   │   │   ├── nginx.conf
│   │   │   ├── nginx.ini
│   │   │   ├── st2actionrunner.ini
│   │   │   ├── st2api.ini
│   │   │   ├── st2auth.ini
│   │   │   ├── st2notifier.ini
│   │   │   ├── st2scheduler.ini
│   │   │   ├── st2stream.ini
│   │   │   ├── st2timersengine.ini
│   │   │   ├── st2workflowengine.ini
│   │   │   └── supervisord.conf
│   │   └── opsany-websocket/
│   │       ├── Dockerfile
│   │       ├── README.md
│   │       ├── supervisord.conf
│   │       └── websocket.ini
│   ├── opsany-ce-k8s-update.sh
│   ├── opsany-ce-offline.sh
│   ├── opsany-ce-update.sh
│   ├── opsany_dispatch.py
│   ├── paas-change-domain.sh
│   ├── paas-change.sh
│   ├── paas-install.sh
│   ├── paas-k8s-install.sh
│   ├── password-init.py
│   ├── prom-install.sh
│   ├── prom-k8s-install.sh
│   ├── prom-pass.py
│   ├── proxy-install.sh
│   ├── proxy-uninstall.sh
│   ├── proxy-update.sh
│   ├── reset_admin.sh
│   ├── saas-ce-install.sh
│   ├── saas-ce-k8s-install.sh
│   ├── saas-dev-install.sh
│   ├── saas-esb-update.sh
│   ├── saas-log-clean.sh
│   ├── saas-update.sh
│   ├── st2-install.sh
│   ├── test/
│   │   ├── README.md
│   │   ├── almalinux-8.10/
│   │   │   └── Dockerfile
│   │   ├── almalinux-9.5/
│   │   │   └── Dockerfile
│   │   ├── opsany-test.sh
│   │   ├── rockylinux-8.10/
│   │   │   └── Dockerfile
│   │   ├── rockylinux-9.4/
│   │   │   └── Dockerfile
│   │   ├── test-import.xlsx
│   │   ├── ubuntu-16.04/
│   │   │   ├── Dockerfile
│   │   │   └── README.md
│   │   ├── ubuntu-18.04/
│   │   │   └── Dockerfile
│   │   ├── ubuntu-20.04/
│   │   │   └── Dockerfile
│   │   ├── ubuntu-22.04/
│   │   │   └── Dockerfile
│   │   └── ubuntu-24.04/
│   │       └── Dockerfile
│   ├── uninstall.sh
│   ├── update-ce-2.0.0.sh
│   ├── uploads/
│   │   └── control/
│   │       ├── collect/
│   │       │   └── script/
│   │       │       └── collect_script.txt
│   │       ├── metric/
│   │       │   └── logo/
│   │       │       └── metric_logo.txt
│   │       └── minion_cache_file/
│   │           └── minion_cache_file.txt
│   ├── zabbix-agent.sh
│   └── zabbix-install.sh
├── kubernetes/
│   ├── .gitkeep
│   ├── README.md
│   ├── addons/
│   │   ├── metrics-server.yaml
│   │   ├── mysql-operator/
│   │   │   ├── README.md
│   │   │   ├── deploy-crds.yaml
│   │   │   └── deploy-operator.yaml
│   │   ├── nginx-ingress.yaml
│   │   └── volumesnapshot/
│   │       ├── snapshot.storage.k8s.io_volumesnapshotclasses.yaml
│   │       ├── snapshot.storage.k8s.io_volumesnapshotcontents.yaml
│   │       └── snapshot.storage.k8s.io_volumesnapshots.yaml
│   ├── helm/
│   │   ├── README.md
│   │   ├── opsany-base/
│   │   │   ├── consul/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── storage.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── heartbeat/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── mongodb/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── README.md
│   │   │   │   ├── charts/
│   │   │   │   │   └── common/
│   │   │   │   │       ├── .helmignore
│   │   │   │   │       ├── Chart.yaml
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── templates/
│   │   │   │   │       │   ├── _affinities.tpl
│   │   │   │   │       │   ├── _capabilities.tpl
│   │   │   │   │       │   ├── _errors.tpl
│   │   │   │   │       │   ├── _images.tpl
│   │   │   │   │       │   ├── _ingress.tpl
│   │   │   │   │       │   ├── _labels.tpl
│   │   │   │   │       │   ├── _names.tpl
│   │   │   │   │       │   ├── _secrets.tpl
│   │   │   │   │       │   ├── _storage.tpl
│   │   │   │   │       │   ├── _tplvalues.tpl
│   │   │   │   │       │   ├── _utils.tpl
│   │   │   │   │       │   ├── _warnings.tpl
│   │   │   │   │       │   └── validations/
│   │   │   │   │       │       ├── _cassandra.tpl
│   │   │   │   │       │       ├── _mariadb.tpl
│   │   │   │   │       │       ├── _mongodb.tpl
│   │   │   │   │       │       ├── _mysql.tpl
│   │   │   │   │       │       ├── _postgresql.tpl
│   │   │   │   │       │       ├── _redis.tpl
│   │   │   │   │       │       └── _validations.tpl
│   │   │   │   │       └── values.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── arbiter/
│   │   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   │   ├── headless-svc.yaml
│   │   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   │   └── statefulset.yaml
│   │   │   │   │   ├── common-scripts-cm.yaml
│   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   ├── extra-list.yaml
│   │   │   │   │   ├── hidden/
│   │   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   │   ├── external-access-svc.yaml
│   │   │   │   │   │   ├── headless-svc.yaml
│   │   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   │   └── statefulset.yaml
│   │   │   │   │   ├── initialization-configmap.yaml
│   │   │   │   │   ├── metrics-svc.yaml
│   │   │   │   │   ├── prometheusrule.yaml
│   │   │   │   │   ├── psp.yaml
│   │   │   │   │   ├── replicaset/
│   │   │   │   │   │   ├── external-access-svc.yaml
│   │   │   │   │   │   ├── headless-svc.yaml
│   │   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   │   ├── scripts-configmap.yaml
│   │   │   │   │   │   ├── statefulset.yaml
│   │   │   │   │   │   └── svc.yaml
│   │   │   │   │   ├── role.yaml
│   │   │   │   │   ├── rolebinding.yaml
│   │   │   │   │   ├── secrets-ca.yaml
│   │   │   │   │   ├── secrets.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── servicemonitor.yaml
│   │   │   │   │   └── standalone/
│   │   │   │   │       ├── dep-sts.yaml
│   │   │   │   │       ├── pvc.yaml
│   │   │   │   │       └── svc.yaml
│   │   │   │   ├── values.schema.json
│   │   │   │   └── values.yaml
│   │   │   ├── mysql/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── README.md
│   │   │   │   ├── charts/
│   │   │   │   │   └── common/
│   │   │   │   │       ├── .helmignore
│   │   │   │   │       ├── Chart.yaml
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── templates/
│   │   │   │   │       │   ├── _affinities.tpl
│   │   │   │   │       │   ├── _capabilities.tpl
│   │   │   │   │       │   ├── _errors.tpl
│   │   │   │   │       │   ├── _images.tpl
│   │   │   │   │       │   ├── _ingress.tpl
│   │   │   │   │       │   ├── _labels.tpl
│   │   │   │   │       │   ├── _names.tpl
│   │   │   │   │       │   ├── _secrets.tpl
│   │   │   │   │       │   ├── _storage.tpl
│   │   │   │   │       │   ├── _tplvalues.tpl
│   │   │   │   │       │   ├── _utils.tpl
│   │   │   │   │       │   ├── _warnings.tpl
│   │   │   │   │       │   └── validations/
│   │   │   │   │       │       ├── _cassandra.tpl
│   │   │   │   │       │       ├── _mariadb.tpl
│   │   │   │   │       │       ├── _mongodb.tpl
│   │   │   │   │       │       ├── _mysql.tpl
│   │   │   │   │       │       ├── _postgresql.tpl
│   │   │   │   │       │       ├── _redis.tpl
│   │   │   │   │       │       └── _validations.tpl
│   │   │   │   │       └── values.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── extra-list.yaml
│   │   │   │   │   ├── metrics-svc.yaml
│   │   │   │   │   ├── networkpolicy.yaml
│   │   │   │   │   ├── primary/
│   │   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   │   ├── initialization-configmap.yaml
│   │   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   │   ├── statefulset.yaml
│   │   │   │   │   │   ├── svc-headless.yaml
│   │   │   │   │   │   └── svc.yaml
│   │   │   │   │   ├── prometheusrule.yaml
│   │   │   │   │   ├── role.yaml
│   │   │   │   │   ├── rolebinding.yaml
│   │   │   │   │   ├── secondary/
│   │   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   │   ├── statefulset.yaml
│   │   │   │   │   │   ├── svc-headless.yaml
│   │   │   │   │   │   └── svc.yaml
│   │   │   │   │   ├── secrets.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   └── servicemonitor.yaml
│   │   │   │   ├── values.schema.json
│   │   │   │   └── values.yaml
│   │   │   ├── nfs-subdir-external-provisioner/
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── README.md
│   │   │   │   ├── ci/
│   │   │   │   │   └── test-values.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── clusterrole.yaml
│   │   │   │   │   ├── clusterrolebinding.yaml
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── persistentvolume.yaml
│   │   │   │   │   ├── persistentvolumeclaim.yaml
│   │   │   │   │   ├── poddisruptionbudget.yaml
│   │   │   │   │   ├── podsecuritypolicy.yaml
│   │   │   │   │   ├── role.yaml
│   │   │   │   │   ├── rolebinding.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   └── storageclass.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── prometheus/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── storage.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── rabbitmq/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── README.md
│   │   │   │   ├── charts/
│   │   │   │   │   └── common/
│   │   │   │   │       ├── .helmignore
│   │   │   │   │       ├── Chart.yaml
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── templates/
│   │   │   │   │       │   ├── _affinities.tpl
│   │   │   │   │       │   ├── _capabilities.tpl
│   │   │   │   │       │   ├── _errors.tpl
│   │   │   │   │       │   ├── _images.tpl
│   │   │   │   │       │   ├── _ingress.tpl
│   │   │   │   │       │   ├── _labels.tpl
│   │   │   │   │       │   ├── _names.tpl
│   │   │   │   │       │   ├── _secrets.tpl
│   │   │   │   │       │   ├── _storage.tpl
│   │   │   │   │       │   ├── _tplvalues.tpl
│   │   │   │   │       │   ├── _utils.tpl
│   │   │   │   │       │   ├── _warnings.tpl
│   │   │   │   │       │   └── validations/
│   │   │   │   │       │       ├── _cassandra.tpl
│   │   │   │   │       │       ├── _mariadb.tpl
│   │   │   │   │       │       ├── _mongodb.tpl
│   │   │   │   │       │       ├── _mysql.tpl
│   │   │   │   │       │       ├── _postgresql.tpl
│   │   │   │   │       │       ├── _redis.tpl
│   │   │   │   │       │       └── _validations.tpl
│   │   │   │   │       └── values.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── config-secret.yaml
│   │   │   │   │   ├── extra-list.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── init-configmap.yaml
│   │   │   │   │   ├── networkpolicy.yaml
│   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   ├── prometheusrule.yaml
│   │   │   │   │   ├── role.yaml
│   │   │   │   │   ├── rolebinding.yaml
│   │   │   │   │   ├── secrets.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── servicemonitor.yaml
│   │   │   │   │   ├── statefulset.yaml
│   │   │   │   │   ├── svc-headless.yaml
│   │   │   │   │   ├── svc.yaml
│   │   │   │   │   ├── tls-secrets.yaml
│   │   │   │   │   └── validation.yaml
│   │   │   │   ├── values.schema.json
│   │   │   │   └── values.yaml
│   │   │   ├── redis/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── README.md
│   │   │   │   ├── charts/
│   │   │   │   │   └── common/
│   │   │   │   │       ├── .helmignore
│   │   │   │   │       ├── Chart.yaml
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── templates/
│   │   │   │   │       │   ├── _affinities.tpl
│   │   │   │   │       │   ├── _capabilities.tpl
│   │   │   │   │       │   ├── _errors.tpl
│   │   │   │   │       │   ├── _images.tpl
│   │   │   │   │       │   ├── _ingress.tpl
│   │   │   │   │       │   ├── _labels.tpl
│   │   │   │   │       │   ├── _names.tpl
│   │   │   │   │       │   ├── _secrets.tpl
│   │   │   │   │       │   ├── _storage.tpl
│   │   │   │   │       │   ├── _tplvalues.tpl
│   │   │   │   │       │   ├── _utils.tpl
│   │   │   │   │       │   ├── _warnings.tpl
│   │   │   │   │       │   └── validations/
│   │   │   │   │       │       ├── _cassandra.tpl
│   │   │   │   │       │       ├── _mariadb.tpl
│   │   │   │   │       │       ├── _mongodb.tpl
│   │   │   │   │       │       ├── _mysql.tpl
│   │   │   │   │       │       ├── _postgresql.tpl
│   │   │   │   │       │       ├── _redis.tpl
│   │   │   │   │       │       └── _validations.tpl
│   │   │   │   │       └── values.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   ├── extra-list.yaml
│   │   │   │   │   ├── headless-svc.yaml
│   │   │   │   │   ├── health-configmap.yaml
│   │   │   │   │   ├── master/
│   │   │   │   │   │   ├── application.yaml
│   │   │   │   │   │   ├── psp.yaml
│   │   │   │   │   │   ├── pvc.yaml
│   │   │   │   │   │   ├── service.yaml
│   │   │   │   │   │   └── serviceaccount.yaml
│   │   │   │   │   ├── metrics-svc.yaml
│   │   │   │   │   ├── networkpolicy.yaml
│   │   │   │   │   ├── pdb.yaml
│   │   │   │   │   ├── prometheusrule.yaml
│   │   │   │   │   ├── replicas/
│   │   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   │   ├── service.yaml
│   │   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   │   └── statefulset.yaml
│   │   │   │   │   ├── role.yaml
│   │   │   │   │   ├── rolebinding.yaml
│   │   │   │   │   ├── scripts-configmap.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── sentinel/
│   │   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   │   ├── node-services.yaml
│   │   │   │   │   │   ├── ports-configmap.yaml
│   │   │   │   │   │   ├── service.yaml
│   │   │   │   │   │   └── statefulset.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── servicemonitor.yaml
│   │   │   │   │   └── tls-secret.yaml
│   │   │   │   ├── values.schema.json
│   │   │   │   └── values.yaml
│   │   │   ├── zabbix-server/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── storage.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   └── zabbix-web/
│   │   │       ├── .helmignore
│   │   │       ├── Chart.yaml
│   │   │       ├── templates/
│   │   │       │   ├── NOTES.txt
│   │   │       │   ├── _helpers.tpl
│   │   │       │   ├── deployment.yaml
│   │   │       │   ├── hpa.yaml
│   │   │       │   ├── ingress.yaml
│   │   │       │   ├── service.yaml
│   │   │       │   ├── serviceaccount.yaml
│   │   │       │   └── tests/
│   │   │       │       └── test-connection.yaml
│   │   │       └── values.yaml
│   │   ├── opsany-paas/
│   │   │   ├── .helmignore
│   │   │   ├── nginx-ingress.yaml
│   │   │   ├── opsany-nfs.yaml
│   │   │   ├── opsany-paas-appengine/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── settings_production.py.appengine
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-esb/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── settings_production.py.esb
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-grafana/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-guacd/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-login/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── settings_production.py.login
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-mcp-server/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-openresty/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── nginx.conf
│   │   │   │   ├── ssl/
│   │   │   │   │   ├── .gitkeep
│   │   │   │   │   ├── test.opsany.cn.key
│   │   │   │   │   └── test.opsany.cn.pem
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-paas/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── settings_production.py.paas
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-paasagent/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-proxy/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── secret.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   ├── serviceaccount.yaml
│   │   │   │   │   ├── storage.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   ├── opsany-paas-websocket/
│   │   │   │   ├── .helmignore
│   │   │   │   ├── Chart.yaml
│   │   │   │   ├── templates/
│   │   │   │   │   ├── NOTES.txt
│   │   │   │   │   ├── _helpers.tpl
│   │   │   │   │   ├── configmap.yaml
│   │   │   │   │   ├── deployment.yaml
│   │   │   │   │   ├── hpa.yaml
│   │   │   │   │   ├── ingress.yaml
│   │   │   │   │   ├── service.yaml
│   │   │   │   │   └── tests/
│   │   │   │   │       └── test-connection.yaml
│   │   │   │   └── values.yaml
│   │   │   └── templates/
│   │   │       ├── NOTES.txt
│   │   │       ├── _helpers.tpl
│   │   │       ├── deployment.yaml
│   │   │       ├── hpa.yaml
│   │   │       ├── ingress.yaml
│   │   │       ├── service.yaml
│   │   │       ├── serviceaccount.yaml
│   │   │       └── tests/
│   │   │           └── test-connection.yaml
│   │   └── opsany-saas/
│   │       ├── opsany-saas-bastion/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-cmdb/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-cmp/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-code/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-control/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-deploy/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-devops/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-job/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-llmops/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-monitor/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-pipeline/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-rbac/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       ├── opsany-saas-repo/
│   │       │   ├── .helmignore
│   │       │   ├── Chart.yaml
│   │       │   ├── templates/
│   │       │   │   ├── NOTES.txt
│   │       │   │   ├── _helpers.tpl
│   │       │   │   ├── configmap.yaml
│   │       │   │   ├── deployment.yaml
│   │       │   │   ├── hpa.yaml
│   │       │   │   ├── service.yaml
│   │       │   │   └── tests/
│   │       │   │       └── test-connection.yaml
│   │       │   └── values.yaml
│   │       └── opsany-saas-workbench/
│   │           ├── .helmignore
│   │           ├── Chart.yaml
│   │           ├── templates/
│   │           │   ├── NOTES.txt
│   │           │   ├── _helpers.tpl
│   │           │   ├── configmap.yaml
│   │           │   ├── deployment.yaml
│   │           │   ├── hpa.yaml
│   │           │   ├── service.yaml
│   │           │   └── tests/
│   │           │       └── test-connection.yaml
│   │           └── values.yaml
│   ├── kubeedge/
│   │   ├── .gitkeep
│   │   └── README.md
│   └── kubevirt/
│       ├── .gitkeep
│       ├── README.md
│       ├── kubevirt-cr.yaml
│       └── kubevirt-operator.yaml
├── opsany-mcp-server/
│   ├── .gitignore
│   ├── README.md
│   ├── config/
│   │   └── config.yaml.example
│   ├── docker/
│   │   ├── Dockerfile
│   │   ├── mcp-supervisor.ini
│   │   └── supervisord.conf
│   ├── opsanymcp/
│   │   ├── __init__.py
│   │   ├── api/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── cmdb_api.py
│   │   │   ├── control_api.py
│   │   │   ├── job_api.py
│   │   │   ├── monitor_api.py
│   │   │   ├── rbac_api.py
│   │   │   └── workbench_api.py
│   │   ├── constants.py
│   │   └── libs.py
│   ├── requirements.txt
│   ├── server.py
│   ├── tests/
│   │   ├── test_basic.py
│   │   ├── test_mcp_server.py
│   │   ├── test_server_logic.py
│   │   └── test_server_startup.py
│   └── tool_list.py
├── opsctl/
│   ├── .gitignore
│   ├── LICENSE
│   ├── README.md
│   ├── __init__.py
│   ├── opsanyctl/
│   │   ├── __init__.py
│   │   ├── api/
│   │   │   ├── __init__.py
│   │   │   ├── base.py
│   │   │   ├── fields.py
│   │   │   ├── resource.py
│   │   │   └── resource_type.py
│   │   ├── config
│   │   ├── constants.py
│   │   ├── help_content.py
│   │   ├── libs.py
│   │   └── main.py
│   ├── requirements.txt
│   ├── runtime.txt
│   ├── setup.cfg
│   ├── setup.py
│   └── tests/
│       ├── __init__.py
│       └── test.py
├── paas-ce/
│   ├── README.md
│   ├── paas/
│   │   ├── .flake8
│   │   ├── .jshintrc
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── VERSION
│   │   ├── appengine/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── api/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── baseview.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── deployment.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── models.py
│   │   │   │   ├── response.py
│   │   │   │   ├── servicemanager.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── common/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── exceptions.py
│   │   │   │   └── http.py
│   │   │   ├── controller/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── settings.py
│   │   │   │   ├── settings_default.py
│   │   │   │   ├── settings_sample.py
│   │   │   │   └── urls.py
│   │   │   ├── manage.py
│   │   │   ├── requirements.txt
│   │   │   └── wsgi.py
│   │   ├── docs/
│   │   │   ├── concepts/
│   │   │   │   ├── index.html
│   │   │   │   └── index.xml
│   │   │   ├── contribution-guidelines/
│   │   │   │   ├── index.html
│   │   │   │   └── index.xml
│   │   │   ├── examples/
│   │   │   │   ├── index.html
│   │   │   │   └── index.xml
│   │   │   ├── getting-started/
│   │   │   │   ├── example-page/
│   │   │   │   │   └── index.html
│   │   │   │   ├── index.html
│   │   │   │   └── index.xml
│   │   │   ├── index.html
│   │   │   ├── index.xml
│   │   │   ├── overview/
│   │   │   │   ├── index.html
│   │   │   │   └── index.xml
│   │   │   ├── reference/
│   │   │   │   ├── index.html
│   │   │   │   ├── index.xml
│   │   │   │   └── parameter-reference/
│   │   │   │       └── index.html
│   │   │   ├── tasks/
│   │   │   │   ├── beds/
│   │   │   │   │   └── index.html
│   │   │   │   ├── index.html
│   │   │   │   ├── index.xml
│   │   │   │   ├── ponycopters/
│   │   │   │   │   ├── configuring-ponycopters/
│   │   │   │   │   │   └── index.html
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── index.xml
│   │   │   │   │   └── launching-ponycopters/
│   │   │   │   │       └── index.html
│   │   │   │   ├── porridge/
│   │   │   │   │   └── index.html
│   │   │   │   └── task/
│   │   │   │       └── index.html
│   │   │   └── tutorials/
│   │   │       ├── index.html
│   │   │       ├── index.xml
│   │   │       ├── multi-bear/
│   │   │       │   └── index.html
│   │   │       └── tutorial2/
│   │   │           └── index.html
│   │   ├── esb/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── apps/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── operate_perm/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base.py
│   │   │   │   │   └── cc_perm.py
│   │   │   │   └── sdk_management/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── constants.py
│   │   │   │       ├── sdk_tmpl/
│   │   │   │       │   └── blueking/
│   │   │   │       │       ├── __init__.py
│   │   │   │       │       └── component/
│   │   │   │       │           ├── README.md
│   │   │   │       │           ├── __init__.py
│   │   │   │       │           ├── apis/
│   │   │   │       │           │   └── __init__.py
│   │   │   │       │           ├── base.py
│   │   │   │       │           ├── client.py
│   │   │   │       │           ├── collections.py
│   │   │   │       │           ├── compat.py
│   │   │   │       │           ├── conf.py
│   │   │   │       │           ├── exceptions.py
│   │   │   │       │           ├── shortcuts.py
│   │   │   │       │           └── utils.py
│   │   │   │       └── utils.py
│   │   │   ├── common/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── base_loggers.py
│   │   │   │   ├── base_redis.py
│   │   │   │   ├── base_utils.py
│   │   │   │   ├── base_validators.py
│   │   │   │   ├── bkerrors.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── django_utils.py
│   │   │   │   ├── djmysql_pool.py
│   │   │   │   ├── errors.py
│   │   │   │   ├── forms.py
│   │   │   │   └── log.py
│   │   │   ├── components/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── bk/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── apis/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── bk_login/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_all_user.py
│   │   │   │   │   │   │   ├── get_batch_user.py
│   │   │   │   │   │   │   ├── get_batch_user_platform_role.py
│   │   │   │   │   │   │   ├── get_user.py
│   │   │   │   │   │   │   ├── is_login.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       └── configs.py
│   │   │   │   │   │   ├── bk_paas/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_app_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       └── configs.py
│   │   │   │   │   │   ├── cc/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── add_app.py
│   │   │   │   │   │   │   ├── add_module.py
│   │   │   │   │   │   │   ├── add_plat_id.py
│   │   │   │   │   │   │   ├── add_set.py
│   │   │   │   │   │   │   ├── clone_host_property.py
│   │   │   │   │   │   │   ├── del_app.py
│   │   │   │   │   │   │   ├── del_host_in_app.py
│   │   │   │   │   │   │   ├── del_module.py
│   │   │   │   │   │   │   ├── del_plat.py
│   │   │   │   │   │   │   ├── del_set.py
│   │   │   │   │   │   │   ├── del_set_host.py
│   │   │   │   │   │   │   ├── edit_app.py
│   │   │   │   │   │   │   ├── enter_ip.py
│   │   │   │   │   │   │   ├── get_app_agent_status.py
│   │   │   │   │   │   │   ├── get_app_by_id.py
│   │   │   │   │   │   │   ├── get_app_by_user.py
│   │   │   │   │   │   │   ├── get_app_by_user_role.py
│   │   │   │   │   │   │   ├── get_app_host_list.py
│   │   │   │   │   │   │   ├── get_app_list.py
│   │   │   │   │   │   │   ├── get_content_by_customer_group_id.py
│   │   │   │   │   │   │   ├── get_customer_group_list.py
│   │   │   │   │   │   │   ├── get_git_server_ip.py
│   │   │   │   │   │   │   ├── get_host_by_company_id.py
│   │   │   │   │   │   │   ├── get_host_company_id.py
│   │   │   │   │   │   │   ├── get_host_list_by_field.py
│   │   │   │   │   │   │   ├── get_host_list_by_ip.py
│   │   │   │   │   │   │   ├── get_hosts_by_property.py
│   │   │   │   │   │   │   ├── get_ip_and_proxy_by_company.py
│   │   │   │   │   │   │   ├── get_module_host_list.py
│   │   │   │   │   │   │   ├── get_modules.py
│   │   │   │   │   │   │   ├── get_modules_by_property.py
│   │   │   │   │   │   │   ├── get_plat_id.py
│   │   │   │   │   │   │   ├── get_proc_config_instance_status.py
│   │   │   │   │   │   │   ├── get_process_port_by_app_id.py
│   │   │   │   │   │   │   ├── get_process_port_by_ip.py
│   │   │   │   │   │   │   ├── get_property_list.py
│   │   │   │   │   │   │   ├── get_set_host_list.py
│   │   │   │   │   │   │   ├── get_set_property.py
│   │   │   │   │   │   │   ├── get_sets_by_property.py
│   │   │   │   │   │   │   ├── get_topo_tree_by_app_id.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   ├── update_custom_property.py
│   │   │   │   │   │   │   ├── update_gse_proxy_status.py
│   │   │   │   │   │   │   ├── update_host_by_app_id.py
│   │   │   │   │   │   │   ├── update_host_info.py
│   │   │   │   │   │   │   ├── update_host_module.py
│   │   │   │   │   │   │   ├── update_host_plat.py
│   │   │   │   │   │   │   ├── update_module_property.py
│   │   │   │   │   │   │   ├── update_proc_config_instance.py
│   │   │   │   │   │   │   ├── update_set_property.py
│   │   │   │   │   │   │   └── update_set_service_status.py
│   │   │   │   │   │   └── fta/
│   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │       ├── fta_component.py
│   │   │   │   │   │       ├── http_relay.py
│   │   │   │   │   │       ├── imap_relay.py
│   │   │   │   │   │       └── toolkit/
│   │   │   │   │   │           ├── __init__.py
│   │   │   │   │   │           ├── configs.py
│   │   │   │   │   │           ├── imap.py
│   │   │   │   │   │           └── tools.py
│   │   │   │   │   └── apisv2/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       ├── bk_login/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── get_all_users.py
│   │   │   │   │       │   ├── get_batch_users.py
│   │   │   │   │       │   ├── get_batch_users_platform_role.py
│   │   │   │   │       │   ├── get_user.py
│   │   │   │   │       │   ├── is_login.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── bk_paas/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── create_app.py
│   │   │   │   │       │   ├── del_app.py
│   │   │   │   │       │   ├── edit_app.py
│   │   │   │   │       │   ├── get_app_info.py
│   │   │   │   │       │   ├── modify_app_logo.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── cc/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── add_host_to_resource.py
│   │   │   │   │       │   ├── bind_role_privilege.py
│   │   │   │   │       │   ├── cc_component.py
│   │   │   │   │       │   ├── create_business.py
│   │   │   │   │       │   ├── create_custom_query.py
│   │   │   │   │       │   ├── create_module.py
│   │   │   │   │       │   ├── create_set.py
│   │   │   │   │       │   ├── delete_business.py
│   │   │   │   │       │   ├── delete_custom_query.py
│   │   │   │   │       │   ├── delete_host.py
│   │   │   │   │       │   ├── delete_module.py
│   │   │   │   │       │   ├── delete_set.py
│   │   │   │   │       │   ├── get_custom_query_data.py
│   │   │   │   │       │   ├── get_custom_query_detail.py
│   │   │   │   │       │   ├── get_host_base_info.py
│   │   │   │   │       │   ├── search_biz_inst_topo.py
│   │   │   │   │       │   ├── search_business.py
│   │   │   │   │       │   ├── search_custom_query.py
│   │   │   │   │       │   ├── search_host.py
│   │   │   │   │       │   ├── search_inst_by_object.py
│   │   │   │   │       │   ├── search_module.py
│   │   │   │   │       │   ├── search_set.py
│   │   │   │   │       │   ├── toolkit/
│   │   │   │   │       │   │   ├── __init__.py
│   │   │   │   │       │   │   ├── configs.py
│   │   │   │   │       │   │   └── tools.py
│   │   │   │   │       │   ├── transfer_host_module.py
│   │   │   │   │       │   ├── transfer_host_to_faultmodule.py
│   │   │   │   │       │   ├── transfer_host_to_idlemodule.py
│   │   │   │   │       │   ├── transfer_host_to_resourcemodule.py
│   │   │   │   │       │   ├── transfer_resourcehost_to_idlemodule.py
│   │   │   │   │       │   ├── update_business.py
│   │   │   │   │       │   ├── update_custom_query.py
│   │   │   │   │       │   ├── update_host.py
│   │   │   │   │       │   ├── update_module.py
│   │   │   │   │       │   ├── update_object_topo_graphics.py
│   │   │   │   │       │   └── update_set.py
│   │   │   │   │       └── sops/
│   │   │   │   │           ├── __init__.py
│   │   │   │   │           ├── sops_component.py
│   │   │   │   │           └── toolkit/
│   │   │   │   │               ├── __init__.py
│   │   │   │   │               └── configs.py
│   │   │   │   ├── component.py
│   │   │   │   ├── confapis/
│   │   │   │   │   ├── cc/
│   │   │   │   │   │   ├── apidocs/
│   │   │   │   │   │   │   ├── en/
│   │   │   │   │   │   │   │   ├── add_host_lock.md
│   │   │   │   │   │   │   │   ├── add_instance_association.md
│   │   │   │   │   │   │   │   ├── batch_delete_inst.md
│   │   │   │   │   │   │   │   ├── batch_delete_set.md
│   │   │   │   │   │   │   │   ├── batch_update_inst.md
│   │   │   │   │   │   │   │   ├── bind_process_module.md
│   │   │   │   │   │   │   │   ├── bind_role_privilege.md
│   │   │   │   │   │   │   │   ├── clone_host_property.md
│   │   │   │   │   │   │   │   ├── create_classification.md
│   │   │   │   │   │   │   │   ├── create_inst.md
│   │   │   │   │   │   │   │   ├── create_object.md
│   │   │   │   │   │   │   │   ├── create_object_attribute.md
│   │   │   │   │   │   │   │   ├── create_user_group.md
│   │   │   │   │   │   │   │   ├── delete_classification.md
│   │   │   │   │   │   │   │   ├── delete_host_lock.md
│   │   │   │   │   │   │   │   ├── delete_inst.md
│   │   │   │   │   │   │   │   ├── delete_instance_association.md
│   │   │   │   │   │   │   │   ├── delete_object.md
│   │   │   │   │   │   │   │   ├── delete_object_attribute.md
│   │   │   │   │   │   │   │   ├── delete_process_module_bind.md
│   │   │   │   │   │   │   │   ├── delete_user_group.md
│   │   │   │   │   │   │   │   ├── find_host_by_module.md
│   │   │   │   │   │   │   │   ├── find_instance_association.md
│   │   │   │   │   │   │   │   ├── find_object_association.md
│   │   │   │   │   │   │   │   ├── get_biz_internal_module.md
│   │   │   │   │   │   │   │   ├── get_mainline_object_topo.md
│   │   │   │   │   │   │   │   ├── get_operation_log.md
│   │   │   │   │   │   │   │   ├── get_process_bind_module.md
│   │   │   │   │   │   │   │   ├── get_role_privilege.md
│   │   │   │   │   │   │   │   ├── get_user_privilege.md
│   │   │   │   │   │   │   │   ├── search_classifications.md
│   │   │   │   │   │   │   │   ├── search_group_privilege.md
│   │   │   │   │   │   │   │   ├── search_host_lock.md
│   │   │   │   │   │   │   │   ├── search_inst.md
│   │   │   │   │   │   │   │   ├── search_inst_association_topo.md
│   │   │   │   │   │   │   │   ├── search_object_attribute.md
│   │   │   │   │   │   │   │   ├── search_object_topo.md
│   │   │   │   │   │   │   │   ├── search_object_topo_graphics.md
│   │   │   │   │   │   │   │   ├── search_objects.md
│   │   │   │   │   │   │   │   ├── search_subscription.md
│   │   │   │   │   │   │   │   ├── search_user_group.md
│   │   │   │   │   │   │   │   ├── subscribe_event.md
│   │   │   │   │   │   │   │   ├── testing_connection.md
│   │   │   │   │   │   │   │   ├── transfer_sethost_to_idle_module.md
│   │   │   │   │   │   │   │   ├── unsubcribe_event.md
│   │   │   │   │   │   │   │   ├── update_business_enable_status.md
│   │   │   │   │   │   │   │   ├── update_classification.md
│   │   │   │   │   │   │   │   ├── update_event_subscribe.md
│   │   │   │   │   │   │   │   ├── update_inst.md
│   │   │   │   │   │   │   │   ├── update_object.md
│   │   │   │   │   │   │   │   ├── update_object_attribute.md
│   │   │   │   │   │   │   │   ├── update_object_topo_graphics.md
│   │   │   │   │   │   │   │   └── update_user_group.md
│   │   │   │   │   │   │   └── zh_hans/
│   │   │   │   │   │   │       ├── add_host_lock.md
│   │   │   │   │   │   │       ├── add_instance_association.md
│   │   │   │   │   │   │       ├── batch_delete_inst.md
│   │   │   │   │   │   │       ├── batch_delete_set.md
│   │   │   │   │   │   │       ├── batch_update_inst.md
│   │   │   │   │   │   │       ├── bind_process_module.md
│   │   │   │   │   │   │       ├── bind_role_privilege.md
│   │   │   │   │   │   │       ├── clone_host_property.md
│   │   │   │   │   │   │       ├── create_classification.md
│   │   │   │   │   │   │       ├── create_inst.md
│   │   │   │   │   │   │       ├── create_object.md
│   │   │   │   │   │   │       ├── create_object_attribute.md
│   │   │   │   │   │   │       ├── create_user_group.md
│   │   │   │   │   │   │       ├── delete_classification.md
│   │   │   │   │   │   │       ├── delete_host_lock.md
│   │   │   │   │   │   │       ├── delete_inst.md
│   │   │   │   │   │   │       ├── delete_instance_association.md
│   │   │   │   │   │   │       ├── delete_object.md
│   │   │   │   │   │   │       ├── delete_object_attribute.md
│   │   │   │   │   │   │       ├── delete_process_module_bind.md
│   │   │   │   │   │   │       ├── delete_user_group.md
│   │   │   │   │   │   │       ├── find_host_by_module.md
│   │   │   │   │   │   │       ├── find_instance_association.md
│   │   │   │   │   │   │       ├── find_object_association.md
│   │   │   │   │   │   │       ├── get_biz_internal_module.md
│   │   │   │   │   │   │       ├── get_mainline_object_topo.md
│   │   │   │   │   │   │       ├── get_operation_log.md
│   │   │   │   │   │   │       ├── get_process_bind_module.md
│   │   │   │   │   │   │       ├── get_role_privilege.md
│   │   │   │   │   │   │       ├── get_user_privilege.md
│   │   │   │   │   │   │       ├── search_classifications.md
│   │   │   │   │   │   │       ├── search_group_privilege.md
│   │   │   │   │   │   │       ├── search_host_lock.md
│   │   │   │   │   │   │       ├── search_inst.md
│   │   │   │   │   │   │       ├── search_inst_association_topo.md
│   │   │   │   │   │   │       ├── search_object_attribute.md
│   │   │   │   │   │   │       ├── search_object_topo.md
│   │   │   │   │   │   │       ├── search_object_topo_graphics.md
│   │   │   │   │   │   │       ├── search_objects.md
│   │   │   │   │   │   │       ├── search_subscription.md
│   │   │   │   │   │   │       ├── search_user_group.md
│   │   │   │   │   │   │       ├── subscribe_event.md
│   │   │   │   │   │   │       ├── testing_connection.md
│   │   │   │   │   │   │       ├── transfer_sethost_to_idle_module.md
│   │   │   │   │   │   │       ├── unsubcribe_event.md
│   │   │   │   │   │   │       ├── update_business_enable_status.md
│   │   │   │   │   │   │       ├── update_classification.md
│   │   │   │   │   │   │       ├── update_event_subscribe.md
│   │   │   │   │   │   │       ├── update_inst.md
│   │   │   │   │   │   │       ├── update_object.md
│   │   │   │   │   │   │       ├── update_object_attribute.md
│   │   │   │   │   │   │       ├── update_object_topo_graphics.md
│   │   │   │   │   │   │       └── update_user_group.md
│   │   │   │   │   │   └── cc.yaml
│   │   │   │   │   └── sops/
│   │   │   │   │       ├── apidocs/
│   │   │   │   │       │   ├── en/
│   │   │   │   │       │   │   ├── create_periodic_task.md
│   │   │   │   │       │   │   ├── create_task.md
│   │   │   │   │       │   │   ├── get_periodic_task_info.md
│   │   │   │   │       │   │   ├── get_periodic_task_list.md
│   │   │   │   │       │   │   ├── get_task_detail.md
│   │   │   │   │       │   │   ├── get_task_node_detail.md
│   │   │   │   │       │   │   ├── get_task_status.md
│   │   │   │   │       │   │   ├── get_template_info.md
│   │   │   │   │       │   │   ├── get_template_list.md
│   │   │   │   │       │   │   ├── import_common_template.md
│   │   │   │   │       │   │   ├── modify_constants_for_periodic_task.md
│   │   │   │   │       │   │   ├── modify_cron_for_periodic_task.md
│   │   │   │   │       │   │   ├── node_callback.md
│   │   │   │   │       │   │   ├── operate_task.md
│   │   │   │   │       │   │   ├── query_task_count.md
│   │   │   │   │       │   │   ├── set_periodic_task_enabled.md
│   │   │   │   │       │   │   └── start_task.md
│   │   │   │   │       │   └── zh_hans/
│   │   │   │   │       │       ├── create_periodic_task.md
│   │   │   │   │       │       ├── create_task.md
│   │   │   │   │       │       ├── get_periodic_task_info.md
│   │   │   │   │       │       ├── get_periodic_task_list.md
│   │   │   │   │       │       ├── get_task_detail.md
│   │   │   │   │       │       ├── get_task_node_detail.md
│   │   │   │   │       │       ├── get_task_status.md
│   │   │   │   │       │       ├── get_template_info.md
│   │   │   │   │       │       ├── get_template_list.md
│   │   │   │   │       │       ├── import_common_template.md
│   │   │   │   │       │       ├── modify_constants_for_periodic_task.md
│   │   │   │   │       │       ├── modify_cron_for_periodic_task.md
│   │   │   │   │       │       ├── node_callback.md
│   │   │   │   │       │       ├── operate_task.md
│   │   │   │   │       │       ├── query_task_count.md
│   │   │   │   │       │       ├── set_periodic_task_enabled.md
│   │   │   │   │       │       └── start_task.md
│   │   │   │   │       └── sops.yaml
│   │   │   │   ├── esb_conf.py
│   │   │   │   ├── generic/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── apis/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── apm/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_app_service_group.py
│   │   │   │   │   │   │   ├── get_delay_of_service.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_service_check_alert_for_prom.py
│   │   │   │   │   │   │   ├── get_service_check_metric_apm.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── post_service_check_for_app_apm.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── auto/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── bastion/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_cache_token.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_network_proxy.py
│   │   │   │   │   │   │   ├── keep_strategy_bastion.py
│   │   │   │   │   │   │   ├── resource_from_control.py
│   │   │   │   │   │   │   ├── sync_rbac_user_group.py
│   │   │   │   │   │   │   ├── sync_user_group.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       └── configs.py
│   │   │   │   │   │   ├── cmdb/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── check_model_data_operation.py
│   │   │   │   │   │   │   ├── delete_business.py
│   │   │   │   │   │   │   ├── delete_import_inst.py
│   │   │   │   │   │   │   ├── encrypt_text.py
│   │   │   │   │   │   │   ├── get-all-business.py
│   │   │   │   │   │   │   ├── get_agent_by_business_code.py
│   │   │   │   │   │   │   ├── get_ali_regin_list.py
│   │   │   │   │   │   │   ├── get_all_business.py
│   │   │   │   │   │   │   ├── get_all_host.py
│   │   │   │   │   │   │   ├── get_all_host_info_for_panel.py
│   │   │   │   │   │   │   ├── get_all_host_v2.py
│   │   │   │   │   │   │   ├── get_application_screen_info.py
│   │   │   │   │   │   │   ├── get_application_screen_info_v2.py
│   │   │   │   │   │   │   ├── get_business_tree.py
│   │   │   │   │   │   │   ├── get_cmdb_data_by_model_code.py
│   │   │   │   │   │   │   ├── get_cmdb_data_by_model_code_v2.py
│   │   │   │   │   │   │   ├── get_cmdb_data_for_work_order.py
│   │   │   │   │   │   │   ├── get_cmdb_model_tree.py
│   │   │   │   │   │   │   ├── get_host_by_instance.py
│   │   │   │   │   │   │   ├── get_import_inst.py
│   │   │   │   │   │   │   ├── get_import_model_tree.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_info_for_workbench_v2.py
│   │   │   │   │   │   │   ├── get_inst_by_business_code.py
│   │   │   │   │   │   │   ├── get_inst_by_rel_data.py
│   │   │   │   │   │   │   ├── get_inst_link_tree.py
│   │   │   │   │   │   │   ├── get_inst_tree.py
│   │   │   │   │   │   │   ├── get_link_inst.py
│   │   │   │   │   │   │   ├── get_link_model_count.py
│   │   │   │   │   │   │   ├── get_link_model_data.py
│   │   │   │   │   │   │   ├── get_link_model_data_v2.py
│   │   │   │   │   │   │   ├── get_model_by_model_group.py
│   │   │   │   │   │   │   ├── get_model_field.py
│   │   │   │   │   │   │   ├── get_model_group.py
│   │   │   │   │   │   │   ├── get_model_instance.py
│   │   │   │   │   │   │   ├── get_tencent_regin_list.py
│   │   │   │   │   │   │   ├── get_upload_file.py
│   │   │   │   │   │   │   ├── get_zc_model.py
│   │   │   │   │   │   │   ├── get_zc_model_v2.py
│   │   │   │   │   │   │   ├── import_grains_from_control.py
│   │   │   │   │   │   │   ├── import_grains_from_control_v2.py
│   │   │   │   │   │   │   ├── import_inst.py
│   │   │   │   │   │   │   ├── import_network_from_control.py
│   │   │   │   │   │   │   ├── import_server_from_control.py
│   │   │   │   │   │   │   ├── import_server_from_control_v2.py
│   │   │   │   │   │   │   ├── keep_strategy_cmdb.py
│   │   │   │   │   │   │   ├── model_data_create.py
│   │   │   │   │   │   │   ├── model_data_delete.py
│   │   │   │   │   │   │   ├── model_data_get.py
│   │   │   │   │   │   │   ├── model_data_update.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── post_ali_inst_info.py
│   │   │   │   │   │   │   ├── post_ali_regin_list.py
│   │   │   │   │   │   │   ├── post_check_collect_task.py
│   │   │   │   │   │   │   ├── post_import_inst.py
│   │   │   │   │   │   │   ├── post_tencent_inst_info.py
│   │   │   │   │   │   │   ├── post_tencent_regin_list.py
│   │   │   │   │   │   │   ├── put_model_group.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   ├── update_agent_state.py
│   │   │   │   │   │   │   ├── update_agent_state_v2.py
│   │   │   │   │   │   │   ├── update_all_business.py
│   │   │   │   │   │   │   ├── update_all_cloud_host.py
│   │   │   │   │   │   │   ├── update_all_private_host.py
│   │   │   │   │   │   │   ├── update_cmp_resource.py
│   │   │   │   │   │   │   ├── update_k8s_cluster.py
│   │   │   │   │   │   │   ├── update_k8s_resource.py
│   │   │   │   │   │   │   └── update_link_inst.py
│   │   │   │   │   │   ├── cmp/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── check_user_resource_quota.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── get_all_cloud_host.py
│   │   │   │   │   │   │   ├── get_all_private_host.py
│   │   │   │   │   │   │   ├── get_cmp_resource.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_support_cloud_vendor_resource.py
│   │   │   │   │   │   │   ├── post_cloud_vendor_resource_parameters.py
│   │   │   │   │   │   │   ├── post_support_resource.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── code/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── app_related_projects.py
│   │   │   │   │   │   │   ├── app_unrelated_projects.py
│   │   │   │   │   │   │   ├── create_gitlab_user.py
│   │   │   │   │   │   │   ├── gitlab_repository_url.py
│   │   │   │   │   │   │   ├── relate_project.py
│   │   │   │   │   │   │   ├── sync_devops_application.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   └── unrelate_project.py
│   │   │   │   │   │   ├── control/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── event_type_count.py
│   │   │   │   │   │   │   ├── get_agent_file_stats.py
│   │   │   │   │   │   │   ├── get_agent_group_list.py
│   │   │   │   │   │   │   ├── get_agent_info_by_group.py
│   │   │   │   │   │   │   ├── get_agent_net_work.py
│   │   │   │   │   │   │   ├── get_agent_ps_info.py
│   │   │   │   │   │   │   ├── get_alarm_rank.py
│   │   │   │   │   │   │   ├── get_all_host_group.py
│   │   │   │   │   │   │   ├── get_all_host_group_prom.py
│   │   │   │   │   │   │   ├── get_all_network_group.py
│   │   │   │   │   │   │   ├── get_all_zabbix_agent.py
│   │   │   │   │   │   │   ├── get_asset_collect.py
│   │   │   │   │   │   │   ├── get_control_agent_info.py
│   │   │   │   │   │   │   ├── get_controller.py
│   │   │   │   │   │   │   ├── get_controller_for_panel.py
│   │   │   │   │   │   │   ├── get_controller_proxy.py
│   │   │   │   │   │   │   ├── get_grafana_server.py
│   │   │   │   │   │   │   ├── get_history_event_count.py
│   │   │   │   │   │   │   ├── get_host_info_for_develop.py
│   │   │   │   │   │   │   ├── get_host_info_for_monitor.py
│   │   │   │   │   │   │   ├── get_host_info_for_prom.py
│   │   │   │   │   │   │   ├── get_host_list.py
│   │   │   │   │   │   │   ├── get_info_for_monitor_workbench.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_manual_add_agent.py
│   │   │   │   │   │   │   ├── get_metric_install_package_log_to_prom.py
│   │   │   │   │   │   │   ├── get_minion_file.py
│   │   │   │   │   │   │   ├── get_monitor_alert_info.py
│   │   │   │   │   │   │   ├── get_monitor_resource_info.py
│   │   │   │   │   │   │   ├── get_network_info_for_monitor.py
│   │   │   │   │   │   │   ├── get_prom_alert_info.py
│   │   │   │   │   │   │   ├── get_prom_alertmanager_alerts.py
│   │   │   │   │   │   │   ├── get_prom_alertmanager_alerts_groups.py
│   │   │   │   │   │   │   ├── get_prom_alertmanager_silence.py
│   │   │   │   │   │   │   ├── get_prom_metadata.py
│   │   │   │   │   │   │   ├── get_prom_rule_info.py
│   │   │   │   │   │   │   ├── get_request_id_status.py
│   │   │   │   │   │   │   ├── get_send_file_v2_request_id_status.py
│   │   │   │   │   │   │   ├── get_status_playbook_record.py
│   │   │   │   │   │   │   ├── get_zabbix_server_list.py
│   │   │   │   │   │   │   ├── get_zabbix_template.py
│   │   │   │   │   │   │   ├── get_zabbix_template_list.py
│   │   │   │   │   │   │   ├── host_admin_from_group_to_job.py
│   │   │   │   │   │   │   ├── host_group_to_job.py
│   │   │   │   │   │   │   ├── host_monitor_type_count.py
│   │   │   │   │   │   │   ├── host_problem_info.py
│   │   │   │   │   │   │   ├── monitor_event_acknowledge.py
│   │   │   │   │   │   │   ├── monitor_event_info.py
│   │   │   │   │   │   │   ├── monitor_host_count.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── post_file.py
│   │   │   │   │   │   │   ├── post_func.py
│   │   │   │   │   │   │   ├── post_metric_collect_to_prom.py
│   │   │   │   │   │   │   ├── post_metric_expr_get_value.py
│   │   │   │   │   │   │   ├── post_metric_inst_status_to_prom.py
│   │   │   │   │   │   │   ├── post_metric_install_package_to_prom.py
│   │   │   │   │   │   │   ├── post_metric_register_prom_to_prom.py
│   │   │   │   │   │   │   ├── post_metric_send_package_to_prom.py
│   │   │   │   │   │   │   ├── post_new_prom_info.py
│   │   │   │   │   │   │   ├── post_new_zabbix_info.py
│   │   │   │   │   │   │   ├── post_prom_tree_to_prom.py
│   │   │   │   │   │   │   ├── post_script.py
│   │   │   │   │   │   │   ├── post_script_v2.py
│   │   │   │   │   │   │   ├── post_send_file_v2.py
│   │   │   │   │   │   │   ├── post_shell.py
│   │   │   │   │   │   │   ├── post_status_playbook_delete.py
│   │   │   │   │   │   │   ├── post_status_playbook_run.py
│   │   │   │   │   │   │   ├── post_status_playbook_update.py
│   │   │   │   │   │   │   ├── problem_info.py
│   │   │   │   │   │   │   ├── prom_alertmanager_config_reload.py
│   │   │   │   │   │   │   ├── prom_alertmanager_create_alert.py
│   │   │   │   │   │   │   ├── prom_alertmanager_create_or_update.py
│   │   │   │   │   │   │   ├── prom_alertmanager_create_or_update_silence.py
│   │   │   │   │   │   │   ├── prom_alertmanager_delete_silence.py
│   │   │   │   │   │   │   ├── prom_config_reload.py
│   │   │   │   │   │   │   ├── prom_rules_create_or_update.py
│   │   │   │   │   │   │   ├── prom_rules_delete.py
│   │   │   │   │   │   │   ├── prom_rules_query_syntax_check.py
│   │   │   │   │   │   │   ├── prom_run_query.py
│   │   │   │   │   │   │   ├── prom_server_check_create_or_update.py
│   │   │   │   │   │   │   ├── prom_server_check_delete.py
│   │   │   │   │   │   │   ├── receive_action_info.py
│   │   │   │   │   │   │   ├── search_application.py
│   │   │   │   │   │   │   ├── search_host.py
│   │   │   │   │   │   │   ├── search_host_group.py
│   │   │   │   │   │   │   ├── search_trigger.py
│   │   │   │   │   │   │   ├── send_message_from_monitor.py
│   │   │   │   │   │   │   ├── stackstorm.py
│   │   │   │   │   │   │   ├── stop_or_start_monitor.py
│   │   │   │   │   │   │   ├── subnet_scan_ip_port.py
│   │   │   │   │   │   │   ├── subnet_scan_ip_port_result.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   └── update_host_sign_variable_template.py
│   │   │   │   │   │   ├── dashboard/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── deploy/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── deploy_step.py
│   │   │   │   │   │   │   ├── deploy_task.py
│   │   │   │   │   │   │   ├── deploy_task_cancel.py
│   │   │   │   │   │   │   ├── deploy_task_clone.py
│   │   │   │   │   │   │   ├── deploy_task_create.py
│   │   │   │   │   │   │   ├── deploy_task_delete.py
│   │   │   │   │   │   │   ├── deploy_task_log.py
│   │   │   │   │   │   │   ├── deploy_task_run.py
│   │   │   │   │   │   │   ├── deploy_task_update.py
│   │   │   │   │   │   │   ├── deploy_template.py
│   │   │   │   │   │   │   ├── deploy_template_group.py
│   │   │   │   │   │   │   ├── get_deploy_task.py
│   │   │   │   │   │   │   ├── get_home_page.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── run_deploy_task_rollback.py
│   │   │   │   │   │   │   ├── run_deploy_task_v3.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   └── upload_script.py
│   │   │   │   │   │   ├── devops/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── application_user_role.py
│   │   │   │   │   │   │   ├── business_application.py
│   │   │   │   │   │   │   ├── business_tree.py
│   │   │   │   │   │   │   ├── business_tree_old.py
│   │   │   │   │   │   │   ├── create_application.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── get_applications.py
│   │   │   │   │   │   │   ├── get_auth_application_host_to_job.py
│   │   │   │   │   │   │   ├── get_auth_application_tree_to_job.py
│   │   │   │   │   │   │   ├── get_business_auth_count.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_test.py
│   │   │   │   │   │   │   ├── git_project.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── nexus_project.py
│   │   │   │   │   │   │   ├── run_deploy_v3.py
│   │   │   │   │   │   │   ├── run_pipeline_v3.py
│   │   │   │   │   │   │   ├── sync_stackstorm_from_control.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── event/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── keep_strategy_event.py
│   │   │   │   │   │   │   ├── sync_stackstorm_from_control.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── job/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_run_result_by_log_id.py
│   │   │   │   │   │   │   ├── get_tool_market_list.py
│   │   │   │   │   │   │   ├── run_job_by_id.py
│   │   │   │   │   │   │   ├── run_script_by_id.py
│   │   │   │   │   │   │   ├── run_script_by_script.py
│   │   │   │   │   │   │   ├── run_task_by_id.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── k8s/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_k8s_cluster.py
│   │   │   │   │   │   │   ├── get_k8s_resource_v2.py
│   │   │   │   │   │   │   ├── get_support_resource.py
│   │   │   │   │   │   │   ├── get_support_resource_fields.py
│   │   │   │   │   │   │   ├── post_apply_resource.py
│   │   │   │   │   │   │   ├── sync_es_from_control.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── kbase/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── llmops/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── log/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── sync_es_from_control.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── monitor/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_service_check_from_monitor.py
│   │   │   │   │   │   │   ├── get_service_check_monitor_by_application.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── pipeline/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── build_abort.py
│   │   │   │   │   │   │   ├── build_delete.py
│   │   │   │   │   │   │   ├── build_proceed.py
│   │   │   │   │   │   │   ├── build_start.py
│   │   │   │   │   │   │   ├── build_stop.py
│   │   │   │   │   │   │   ├── get_all_job.py
│   │   │   │   │   │   │   ├── get_gitlab_all_projects.py
│   │   │   │   │   │   │   ├── get_home_page.py
│   │   │   │   │   │   │   ├── get_job_build_info.py
│   │   │   │   │   │   │   ├── get_job_building_queue.py
│   │   │   │   │   │   │   ├── get_job_pipeline_tool.py
│   │   │   │   │   │   │   ├── get_job_pipeline_tool_post.py
│   │   │   │   │   │   │   ├── get_job_reconfig_parameter.py
│   │   │   │   │   │   │   ├── get_job_reconfig_script.py
│   │   │   │   │   │   │   ├── get_job_reconfig_triggers.py
│   │   │   │   │   │   │   ├── get_job_rename.py
│   │   │   │   │   │   │   ├── get_job_v2.py
│   │   │   │   │   │   │   ├── get_job_v2_build.py
│   │   │   │   │   │   │   ├── get_job_v2_detail.py
│   │   │   │   │   │   │   ├── get_pipeline_jenkins_job.py
│   │   │   │   │   │   │   ├── get_pipeline_template_group.py
│   │   │   │   │   │   │   ├── job_create.py
│   │   │   │   │   │   │   ├── job_delete.py
│   │   │   │   │   │   │   ├── put_job_reconfig_parameter.py
│   │   │   │   │   │   │   ├── put_job_reconfig_script.py
│   │   │   │   │   │   │   ├── put_job_rename.py
│   │   │   │   │   │   │   ├── run_pipeline_task_rollback.py
│   │   │   │   │   │   │   ├── run_pipeline_task_v3.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── prom/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── get_service_check_metric.py
│   │   │   │   │   │   │   ├── keep_strategy_prom.py
│   │   │   │   │   │   │   ├── monitor_to_screen_api.py
│   │   │   │   │   │   │   ├── post_inst_monitor_for_app.py
│   │   │   │   │   │   │   ├── post_metric_inst.py
│   │   │   │   │   │   │   ├── post_service_check_for_app.py
│   │   │   │   │   │   │   ├── pull_app_auth.py
│   │   │   │   │   │   │   ├── service_check_export.py
│   │   │   │   │   │   │   ├── service_check_import.py
│   │   │   │   │   │   │   ├── service_check_import_template.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   └── update_service_check_for_app.py
│   │   │   │   │   │   ├── rbac/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── check_google_verify_code.py
│   │   │   │   │   │   │   ├── create_google_secret_for_user.py
│   │   │   │   │   │   │   ├── get_all_department_user_tree.py
│   │   │   │   │   │   │   ├── get_all_user.py
│   │   │   │   │   │   │   ├── get_auth_config.py
│   │   │   │   │   │   │   ├── get_auth_platform.py
│   │   │   │   │   │   │   ├── get_copyright_config.py
│   │   │   │   │   │   │   ├── get_dep_v2_to_cmdb.py
│   │   │   │   │   │   │   ├── get_department_user_tree.py
│   │   │   │   │   │   │   ├── get_user_auth_api.py
│   │   │   │   │   │   │   ├── get_user_google_auth_status.py
│   │   │   │   │   │   │   ├── get_user_group_sync.py
│   │   │   │   │   │   │   ├── get_user_rbac_auth_config.py
│   │   │   │   │   │   │   ├── get_user_update_info.py
│   │   │   │   │   │   │   ├── get_user_v2_to_cmdb.py
│   │   │   │   │   │   │   ├── get_workorder_sync.py
│   │   │   │   │   │   │   ├── get_wx_work_config.py
│   │   │   │   │   │   │   ├── modify_user_google_auth_status.py
│   │   │   │   │   │   │   ├── post_login_log.py
│   │   │   │   │   │   │   ├── post_menu_privilege.py
│   │   │   │   │   │   │   ├── post_menu_tree.py
│   │   │   │   │   │   │   ├── post_menu_verification.py
│   │   │   │   │   │   │   ├── toolkit/
│   │   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   │   │   └── tools.py
│   │   │   │   │   │   │   ├── update_user_info.py
│   │   │   │   │   │   │   └── user_auth.py
│   │   │   │   │   │   ├── repo/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── delete_nexus_repository.py
│   │   │   │   │   │   │   ├── delete_nexus_repository_component.py
│   │   │   │   │   │   │   ├── get_home_page.py
│   │   │   │   │   │   │   ├── get_nexus_repository.py
│   │   │   │   │   │   │   ├── get_nexus_repository_component.py
│   │   │   │   │   │   │   ├── get_nexus_repository_component_asset.py
│   │   │   │   │   │   │   ├── get_nexus_repository_component_tree.py
│   │   │   │   │   │   │   ├── get_nexus_repository_component_tree_v2.py
│   │   │   │   │   │   │   ├── get_nexus_repository_component_v2.py
│   │   │   │   │   │   │   ├── get_nexus_repository_format.py
│   │   │   │   │   │   │   ├── get_nexus_repository_guide.py
│   │   │   │   │   │   │   ├── get_nexus_search_component.py
│   │   │   │   │   │   │   ├── get_repo.py
│   │   │   │   │   │   │   ├── get_repository_pagination.py
│   │   │   │   │   │   │   ├── post_clone_project.py
│   │   │   │   │   │   │   ├── post_nexus_project.py
│   │   │   │   │   │   │   ├── post_nexus_repository.py
│   │   │   │   │   │   │   ├── post_nexus_repository_component_upload.py
│   │   │   │   │   │   │   ├── post_nexus_repository_guide.py
│   │   │   │   │   │   │   ├── put_repo.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   ├── task/
│   │   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   │   ├── data_for_screen.py
│   │   │   │   │   │   │   ├── get_info_for_workbench.py
│   │   │   │   │   │   │   ├── run_task_by_id.py
│   │   │   │   │   │   │   ├── sync_user_info.py
│   │   │   │   │   │   │   └── toolkit/
│   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │       ├── configs.py
│   │   │   │   │   │   │       └── tools.py
│   │   │   │   │   │   └── workbench/
│   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │       ├── bind_google_auth.py
│   │   │   │   │   │       ├── get_google_auth.py
│   │   │   │   │   │       ├── get_info_for_workbench.py
│   │   │   │   │   │       ├── get_language_theme_config.py
│   │   │   │   │   │       ├── get_message_info.py
│   │   │   │   │   │       ├── get_nav_and_colleciton.py
│   │   │   │   │   │       ├── get_read_all_message.py
│   │   │   │   │   │       ├── get_robot_list.py
│   │   │   │   │   │       ├── get_sync_data.py
│   │   │   │   │   │       ├── get_user_info_from_workbench.py
│   │   │   │   │   │       ├── get_user_ssh_key.py
│   │   │   │   │   │       ├── get_work_order_event.py
│   │   │   │   │   │       ├── get_work_order_inst.py
│   │   │   │   │   │       ├── get_work_order_screen.py
│   │   │   │   │   │       ├── guide.py
│   │   │   │   │   │       ├── monitor_to_screen_api.py
│   │   │   │   │   │       ├── post_collection.py
│   │   │   │   │   │       ├── post_info_to_user.py
│   │   │   │   │   │       ├── post_security_config.py
│   │   │   │   │   │       ├── send_mail.py
│   │   │   │   │   │       ├── send_report.py
│   │   │   │   │   │       ├── send_robot.py
│   │   │   │   │   │       ├── sync_order_user_message.py
│   │   │   │   │   │       ├── toolkit/
│   │   │   │   │   │       │   ├── __init__.py
│   │   │   │   │   │       │   ├── configs.py
│   │   │   │   │   │       │   └── tools.py
│   │   │   │   │   │       └── work_order_submit.py
│   │   │   │   │   └── templates/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       ├── cmsi/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── apidoc/
│   │   │   │   │       │   │   ├── send_mail.js
│   │   │   │   │       │   │   ├── send_mp_weixin.js
│   │   │   │   │       │   │   ├── send_qy_weixin.js
│   │   │   │   │       │   │   ├── send_sms.js
│   │   │   │   │       │   │   ├── send_voice_msg.js
│   │   │   │   │       │   │   └── send_weixin.js
│   │   │   │   │       │   ├── apidocs/
│   │   │   │   │       │   │   ├── en/
│   │   │   │   │       │   │   │   ├── get_msg_type.md
│   │   │   │   │       │   │   │   └── send_msg.md
│   │   │   │   │       │   │   └── zh_hans/
│   │   │   │   │       │   │       ├── get_msg_type.md
│   │   │   │   │       │   │       └── send_msg.md
│   │   │   │   │       │   ├── get_msg_type.py
│   │   │   │   │       │   ├── send_mail.py
│   │   │   │   │       │   ├── send_mp_weixin.py
│   │   │   │   │       │   ├── send_msg.py
│   │   │   │   │       │   ├── send_qy_weixin.py
│   │   │   │   │       │   ├── send_sms.py
│   │   │   │   │       │   ├── send_voice_msg.py
│   │   │   │   │       │   ├── send_weixin.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       ├── send_mail_with_smtp.py
│   │   │   │   │       │       ├── test_send_mail_with_smtp.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── conf.py
│   │   │   │   │       ├── heartbeat/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── detect.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       └── configs.py
│   │   │   │   │       ├── qcloud_sms/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── send_multi_sms.py
│   │   │   │   │       │   ├── send_multi_sms_with_tpl.py
│   │   │   │   │       │   ├── send_sms.py
│   │   │   │   │       │   ├── send_sms_with_tpl.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── qcloud_voice/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── send_voice_msg.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── weixin/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── get_token.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       ├── weixin_mp/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── get_token.py
│   │   │   │   │       │   ├── send_msg_with_tpl.py
│   │   │   │   │       │   └── toolkit/
│   │   │   │   │       │       ├── __init__.py
│   │   │   │   │       │       ├── configs.py
│   │   │   │   │       │       └── tools.py
│   │   │   │   │       └── weixin_qy/
│   │   │   │   │           ├── __init__.py
│   │   │   │   │           ├── get_token.py
│   │   │   │   │           ├── get_user.py
│   │   │   │   │           ├── send_message.py
│   │   │   │   │           └── toolkit/
│   │   │   │   │               ├── __init__.py
│   │   │   │   │               ├── configs.py
│   │   │   │   │               └── tools.py
│   │   │   │   └── urls.py
│   │   │   ├── configs/
│   │   │   │   ├── __init__.py
│   │   │   │   └── default_template.py
│   │   │   ├── doc/
│   │   │   │   └── readme.md
│   │   │   ├── esb/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── apps.py
│   │   │   │   ├── bkapp/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── validators.py
│   │   │   │   ├── bkauth/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── models.py
│   │   │   │   │   └── validators.py
│   │   │   │   ├── bkcore/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── apps.py
│   │   │   │   │   └── models.py
│   │   │   │   ├── bkperm/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── validators.py
│   │   │   │   ├── channel/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base.py
│   │   │   │   │   └── confapis.py
│   │   │   │   ├── component/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base.py
│   │   │   │   │   └── buffet.py
│   │   │   │   ├── compperm/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── validators.py
│   │   │   │   ├── exdb/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── bkpaas.py
│   │   │   │   │   └── connections.py
│   │   │   │   ├── jinja2.py
│   │   │   │   ├── jinja2_esb.py
│   │   │   │   ├── management/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── commands/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── add_compperm_for_app.py
│   │   │   │   │   │   ├── check_service.py
│   │   │   │   │   │   ├── sync_api_docs.py
│   │   │   │   │   │   ├── sync_bk_sdk.py
│   │   │   │   │   │   ├── sync_data_at_deploy.py
│   │   │   │   │   │   ├── sync_function_controller.py
│   │   │   │   │   │   └── sync_system_and_channel_data.py
│   │   │   │   │   └── utils/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       ├── api_docs.py
│   │   │   │   │       ├── channel_tools.py
│   │   │   │   │       ├── component_tools.py
│   │   │   │   │       ├── conf_tools.py
│   │   │   │   │       ├── constants.py
│   │   │   │   │       └── ec_constants.py
│   │   │   │   ├── middlewares.py
│   │   │   │   ├── outgoing.py
│   │   │   │   ├── ratelimit/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── validators.py
│   │   │   │   ├── response.py
│   │   │   │   ├── routers.py
│   │   │   │   ├── utils/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base.py
│   │   │   │   │   ├── confapis.py
│   │   │   │   │   ├── config.py
│   │   │   │   │   └── func_ctrl.py
│   │   │   │   └── views.py
│   │   │   ├── healthz/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── checklist.txt
│   │   │   │   ├── errors.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   ├── views.py
│   │   │   │   └── views_check_codename.py
│   │   │   ├── lib/
│   │   │   │   ├── __init__.py
│   │   │   │   └── redis_rate_limit/
│   │   │   │       ├── __init__.py
│   │   │   │       └── ratelimit.py
│   │   │   ├── manage.py
│   │   │   ├── requirements.txt
│   │   │   ├── settings.py
│   │   │   ├── urls.py
│   │   │   └── wsgi.py
│   │   ├── examples/
│   │   │   ├── README.md
│   │   │   ├── build/
│   │   │   │   └── LICENSE_JSCSS_HEADER
│   │   │   ├── nginx_paas.conf
│   │   │   ├── settings/
│   │   │   │   ├── appengine/
│   │   │   │   │   └── settings.py
│   │   │   │   ├── esb/
│   │   │   │   │   └── default.py
│   │   │   │   ├── login/
│   │   │   │   │   └── settings_production.py
│   │   │   │   └── paas/
│   │   │   │       └── settings_production.py
│   │   │   └── supervisord.d/
│   │   │       ├── appengine.ini
│   │   │       ├── esb.ini
│   │   │       ├── login.ini
│   │   │       ├── paas.ini
│   │   │       ├── paasagent.ini
│   │   │       └── websocket.ini
│   │   ├── gulpfile.js
│   │   ├── login/
│   │   │   ├── .gitignore
│   │   │   ├── Makefile
│   │   │   ├── README.md
│   │   │   ├── __init__.py
│   │   │   ├── bk_i18n/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── apps.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── middlewares.py
│   │   │   │   └── signal_receivers.py
│   │   │   ├── bkaccount/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── accounts.py
│   │   │   │   ├── backends.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── decorators.py
│   │   │   │   ├── encryption.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── geetest.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── middlewares.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_initial_user_data.py
│   │   │   │   │   ├── 0003_bktoken_inactive_expire_time.py
│   │   │   │   │   ├── 0004_auto_20170621_0929.py
│   │   │   │   │   ├── 0005_initial_role.py
│   │   │   │   │   ├── 0006_initial_bkuser_role.py
│   │   │   │   │   ├── 0007_userinfo.py
│   │   │   │   │   ├── 0008_auto_20171116_2026.py
│   │   │   │   │   ├── 0009_add_role_data.py
│   │   │   │   │   ├── 0010_alter_bkrole_code_alter_bkrole_id_and_more.py
│   │   │   │   │   ├── 0011_bktoken_auth_platform_bktoken_create_time_and_more.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── opsany_user_auth.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   ├── views.py
│   │   │   │   ├── views_api.py
│   │   │   │   └── views_api_v2.py
│   │   │   ├── common/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── context_processors.py
│   │   │   │   ├── exceptions.py
│   │   │   │   ├── http.py
│   │   │   │   ├── log.py
│   │   │   │   ├── mixins/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base.py
│   │   │   │   │   └── exempt.py
│   │   │   │   ├── responses.py
│   │   │   │   └── utils/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── basic.py
│   │   │   │       └── time.py
│   │   │   ├── conf/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── default.py
│   │   │   │   ├── settings_development.py.sample
│   │   │   │   ├── settings_production.py.sample
│   │   │   │   └── settings_testing.py.sample
│   │   │   ├── ee_login/
│   │   │   │   ├── __init__.py
│   │   │   │   └── settings_login.py
│   │   │   ├── ee_official_login/
│   │   │   │   ├── __init__.py
│   │   │   │   └── oauth/
│   │   │   │       ├── __init__.py
│   │   │   │       └── google/
│   │   │   │           ├── __init__.py
│   │   │   │           ├── backends.py
│   │   │   │           ├── settings.py
│   │   │   │           ├── utils.py
│   │   │   │           └── views.py
│   │   │   ├── frontend/
│   │   │   │   ├── .eslintrc-auto-import.json
│   │   │   │   ├── .gitignore
│   │   │   │   ├── .prettierrc
│   │   │   │   ├── README.md
│   │   │   │   ├── index.html
│   │   │   │   ├── package.json
│   │   │   │   ├── src/
│   │   │   │   │   ├── App.vue
│   │   │   │   │   ├── api/
│   │   │   │   │   │   └── login.js
│   │   │   │   │   ├── components/
│   │   │   │   │   │   └── SlideVerifyModal/
│   │   │   │   │   │       └── index.vue
│   │   │   │   │   ├── config/
│   │   │   │   │   │   └── defaultSetting.js
│   │   │   │   │   ├── hooks/
│   │   │   │   │   │   └── useI18nCookie.js
│   │   │   │   │   ├── locales/
│   │   │   │   │   │   ├── en.js
│   │   │   │   │   │   ├── index.js
│   │   │   │   │   │   ├── zh-CN.js
│   │   │   │   │   │   └── zh-TW.js
│   │   │   │   │   ├── main.js
│   │   │   │   │   ├── plugins/
│   │   │   │   │   │   └── i18n.js
│   │   │   │   │   ├── style.css
│   │   │   │   │   ├── utils/
│   │   │   │   │   │   ├── request.js
│   │   │   │   │   │   └── util.js
│   │   │   │   │   └── view/
│   │   │   │   │       └── login/
│   │   │   │   │           ├── components/
│   │   │   │   │           │   ├── AD.vue
│   │   │   │   │           │   ├── BindMfa.vue
│   │   │   │   │           │   ├── DingTalk.vue
│   │   │   │   │           │   ├── Feishu.vue
│   │   │   │   │           │   ├── IAM.vue
│   │   │   │   │           │   ├── IDaaS.vue
│   │   │   │   │           │   ├── LDAP.vue
│   │   │   │   │           │   ├── OAuth.vue
│   │   │   │   │           │   ├── Password.vue
│   │   │   │   │           │   ├── QYWX.vue
│   │   │   │   │           │   ├── SSO.vue
│   │   │   │   │           │   └── ValiMfa.vue
│   │   │   │   │           └── login.vue
│   │   │   │   └── vite.config.js
│   │   │   ├── healthz/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── urls.py
│   │   │   │   └── views.py
│   │   │   ├── init_admin.py
│   │   │   ├── init_admin_mfa.py
│   │   │   ├── locale/
│   │   │   │   ├── en/
│   │   │   │   │   └── LC_MESSAGES/
│   │   │   │   │       ├── django.po
│   │   │   │   │       └── djangojs.po
│   │   │   │   └── zh_Hans/
│   │   │   │       └── LC_MESSAGES/
│   │   │   │           ├── django.po
│   │   │   │           └── djangojs.po
│   │   │   ├── login/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── login_views.py
│   │   │   │   ├── return_message.py
│   │   │   │   └── status_code.py
│   │   │   ├── manage.py
│   │   │   ├── requirements.txt
│   │   │   ├── settings.py
│   │   │   ├── static/
│   │   │   │   ├── assets/
│   │   │   │   │   ├── bk-icon-2.0/
│   │   │   │   │   │   ├── iconfont.css
│   │   │   │   │   │   └── iconfont.json
│   │   │   │   │   ├── bkDialog-1.0/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   └── ui-dialog.css
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       └── dialog.js
│   │   │   │   │   ├── bootstrap-3.1.1/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   ├── bootstrap-overrides.css
│   │   │   │   │   │   │   ├── bootstrap-theme.css
│   │   │   │   │   │   │   ├── bootstrap.css
│   │   │   │   │   │   │   ├── bootstrap3.0.0.css
│   │   │   │   │   │   │   ├── button.css
│   │   │   │   │   │   │   ├── docs.css
│   │   │   │   │   │   │   └── extend.css
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       ├── bootstrap.js
│   │   │   │   │   │       └── html5shiv.js
│   │   │   │   │   ├── gt.js
│   │   │   │   │   └── select2-3.5.2/
│   │   │   │   │       ├── .gitignore
│   │   │   │   │       ├── CONTRIBUTING.md
│   │   │   │   │       ├── LICENSE
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── bower.json
│   │   │   │   │       ├── component.json
│   │   │   │   │       ├── composer.json
│   │   │   │   │       ├── release.sh
│   │   │   │   │       ├── select2-2.0.css
│   │   │   │   │       ├── select2-2.0.scss
│   │   │   │   │       ├── select2-bootstrap.css
│   │   │   │   │       ├── select2.css
│   │   │   │   │       ├── select2.jquery.json
│   │   │   │   │       ├── select2.js
│   │   │   │   │       ├── select2_locale_ar.js
│   │   │   │   │       ├── select2_locale_az.js
│   │   │   │   │       ├── select2_locale_bg.js
│   │   │   │   │       ├── select2_locale_ca.js
│   │   │   │   │       ├── select2_locale_cs.js
│   │   │   │   │       ├── select2_locale_da.js
│   │   │   │   │       ├── select2_locale_de.js
│   │   │   │   │       ├── select2_locale_el.js
│   │   │   │   │       ├── select2_locale_en.js.template
│   │   │   │   │       ├── select2_locale_es.js
│   │   │   │   │       ├── select2_locale_et.js
│   │   │   │   │       ├── select2_locale_eu.js
│   │   │   │   │       ├── select2_locale_fa.js
│   │   │   │   │       ├── select2_locale_fi.js
│   │   │   │   │       ├── select2_locale_fr.js
│   │   │   │   │       ├── select2_locale_gl.js
│   │   │   │   │       ├── select2_locale_he.js
│   │   │   │   │       ├── select2_locale_hr.js
│   │   │   │   │       ├── select2_locale_hu.js
│   │   │   │   │       ├── select2_locale_id.js
│   │   │   │   │       ├── select2_locale_is.js
│   │   │   │   │       ├── select2_locale_it.js
│   │   │   │   │       ├── select2_locale_ja.js
│   │   │   │   │       ├── select2_locale_ka.js
│   │   │   │   │       ├── select2_locale_ko.js
│   │   │   │   │       ├── select2_locale_lt.js
│   │   │   │   │       ├── select2_locale_lv.js
│   │   │   │   │       ├── select2_locale_mk.js
│   │   │   │   │       ├── select2_locale_ms.js
│   │   │   │   │       ├── select2_locale_nb.js
│   │   │   │   │       ├── select2_locale_nl.js
│   │   │   │   │       ├── select2_locale_pl.js
│   │   │   │   │       ├── select2_locale_pt-BR.js
│   │   │   │   │       ├── select2_locale_pt-PT.js
│   │   │   │   │       ├── select2_locale_ro.js
│   │   │   │   │       ├── select2_locale_rs.js
│   │   │   │   │       ├── select2_locale_ru.js
│   │   │   │   │       ├── select2_locale_sk.js
│   │   │   │   │       ├── select2_locale_sv.js
│   │   │   │   │       ├── select2_locale_th.js
│   │   │   │   │       ├── select2_locale_tr.js
│   │   │   │   │       ├── select2_locale_ug-CN.js
│   │   │   │   │       ├── select2_locale_uk.js
│   │   │   │   │       ├── select2_locale_vi.js
│   │   │   │   │       ├── select2_locale_zh-CN.js
│   │   │   │   │       └── select2_locale_zh-TW.js
│   │   │   │   ├── bk_user_import.xls
│   │   │   │   ├── bk_user_import_en.xls
│   │   │   │   ├── css/
│   │   │   │   │   ├── base.css
│   │   │   │   │   ├── bk.css
│   │   │   │   │   ├── layout_head.css
│   │   │   │   │   ├── login.css
│   │   │   │   │   ├── login2106031748.min.css.bak
│   │   │   │   │   └── scss/
│   │   │   │   │       └── login.scss
│   │   │   │   ├── icon/
│   │   │   │   │   ├── home_page_picture.png.old
│   │   │   │   │   └── home_top_word.png.old
│   │   │   │   ├── img/
│   │   │   │   │   ├── bg_image.jpg.old
│   │   │   │   │   └── logo/
│   │   │   │   │       └── bk_login.png.old
│   │   │   │   ├── js/
│   │   │   │   │   ├── csrftoken.js
│   │   │   │   │   ├── language.js
│   │   │   │   │   ├── login.js
│   │   │   │   │   └── users.js
│   │   │   │   ├── modal/
│   │   │   │   │   ├── icon/
│   │   │   │   │   │   ├── iconfont.css
│   │   │   │   │   │   └── iconfont.js
│   │   │   │   │   └── modal.css
│   │   │   │   └── vite-static/
│   │   │   │       ├── @ant-design/
│   │   │   │       │   └── icons-vue-ym-L-X2r.js
│   │   │   │       ├── @vueuse/
│   │   │   │       │   ├── core-B6fUiQ3R.js
│   │   │   │       │   └── integrations-iJ2WoaAF.js
│   │   │   │       ├── axios-R-lXtGyY.js
│   │   │   │       ├── index-Bd2G45Id.js
│   │   │   │       ├── index-Cu90Cwu-.css
│   │   │   │       ├── index-DpYBPcyk.css
│   │   │   │       ├── index-lljDL13k.js
│   │   │   │       ├── less-sScrWPmR.js
│   │   │   │       └── lodash-CQd0-CO8.js
│   │   │   ├── templates/
│   │   │   │   ├── 401.html
│   │   │   │   ├── 403.html
│   │   │   │   ├── 404.html
│   │   │   │   ├── 500.html
│   │   │   │   ├── 50x.html
│   │   │   │   ├── bkaccount/
│   │   │   │   │   ├── base.html
│   │   │   │   │   ├── user_table.part
│   │   │   │   │   └── users.html
│   │   │   │   ├── csrf_failure.html
│   │   │   │   └── login/
│   │   │   │       ├── agreement.part
│   │   │   │       ├── login copy.html
│   │   │   │       ├── login.demo.html
│   │   │   │       ├── login.html
│   │   │   │       ├── login.html.copy
│   │   │   │       ├── login06031722.html.bak
│   │   │   │       ├── login_demo.html
│   │   │   │       └── login_juewei.html
│   │   │   ├── unlock_admin.py
│   │   │   ├── unlock_all_user.py
│   │   │   ├── urls.py
│   │   │   └── wsgi.py
│   │   ├── paas/
│   │   │   ├── .gitignore
│   │   │   ├── README.md
│   │   │   ├── VERSION
│   │   │   ├── __init__.py
│   │   │   ├── account/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── backends.py
│   │   │   │   ├── decorators.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── middlewares.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_initial_user_data.py
│   │   │   │   │   ├── 0003_bkuser_role.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── api/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── decorators.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── response.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── app/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── apps.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_auto_20160615_2036.py
│   │   │   │   │   ├── 0003_app_deploy_token.py
│   │   │   │   │   ├── 0004_auto_20160929_1101.py
│   │   │   │   │   ├── 0005_auto_20161017_1038.py
│   │   │   │   │   ├── 0006_app_is_saas.py
│   │   │   │   │   ├── 0007_auto_20161111_1348.py
│   │   │   │   │   ├── 0008_auto_20190124_1708.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── app_env/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_auto_20170821_1814.py
│   │   │   │   │   ├── 0003_auto_20170821_2127.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── bk_app/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_load_bkapps_intial_data.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── tests.py
│   │   │   │   └── utils.py
│   │   │   ├── blueking/
│   │   │   │   ├── __init__.py
│   │   │   │   └── component/
│   │   │   │       ├── README
│   │   │   │       ├── __init__.py
│   │   │   │       ├── apis/
│   │   │   │       │   ├── __init__.py
│   │   │   │       │   └── esb.py
│   │   │   │       ├── base.py
│   │   │   │       ├── client.py
│   │   │   │       ├── collections.py
│   │   │   │       ├── conf.py
│   │   │   │       ├── constants.py
│   │   │   │       ├── exceptions.py
│   │   │   │       ├── shortcuts.py
│   │   │   │       └── utils.py
│   │   │   ├── common/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── context_processors.py
│   │   │   │   ├── decorators.py
│   │   │   │   ├── exceptions.py
│   │   │   │   ├── http.py
│   │   │   │   ├── log.py
│   │   │   │   ├── middlewares/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── exception.py
│   │   │   │   │   ├── utils/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   └── pxfilter.py
│   │   │   │   │   └── xss.py
│   │   │   │   ├── mixins/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── base.py
│   │   │   │   ├── mymako.py
│   │   │   │   ├── responses.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views/
│   │   │   │       ├── __init__.py
│   │   │   │       └── mako.py
│   │   │   ├── components/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── engine.py
│   │   │   │   ├── login.py
│   │   │   │   └── tests.py
│   │   │   ├── conf/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── default.py
│   │   │   │   ├── settings_development.py.sample
│   │   │   │   ├── settings_production.py.sample
│   │   │   │   └── settings_testing.py.sample
│   │   │   ├── engine/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── deploy.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_auto_20160426_0959.py
│   │   │   │   │   ├── 0003_auto_20160629_1545.py
│   │   │   │   │   ├── 0004_auto_20160912_1741.py
│   │   │   │   │   ├── 0005_auto_20160929_1109.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   └── views.py
│   │   │   ├── esb/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── apps/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── api_docs/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── api_views.py
│   │   │   │   │   │   ├── templates/
│   │   │   │   │   │   │   └── api_docs/
│   │   │   │   │   │   │       ├── base.html
│   │   │   │   │   │   │       ├── index.html
│   │   │   │   │   │   │       ├── system_api_base.html
│   │   │   │   │   │   │       ├── system_api_doc.html
│   │   │   │   │   │   │       └── system_api_index.html
│   │   │   │   │   │   ├── urls.py
│   │   │   │   │   │   ├── utils.py
│   │   │   │   │   │   └── views.py
│   │   │   │   │   ├── bootstrapform/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── configs.py
│   │   │   │   │   │   ├── templates/
│   │   │   │   │   │   │   └── bootstrapform/
│   │   │   │   │   │   │       ├── field.html
│   │   │   │   │   │   │       ├── form.html
│   │   │   │   │   │   │       └── formset.html
│   │   │   │   │   │   └── templatetags/
│   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │       └── bootstrap.py
│   │   │   │   │   ├── guide/
│   │   │   │   │   │   ├── __init__.py
│   │   │   │   │   │   ├── component_template/
│   │   │   │   │   │   │   ├── en/
│   │   │   │   │   │   │   │   └── hcp/
│   │   │   │   │   │   │   │       ├── __init__.py
│   │   │   │   │   │   │   │       ├── get_host_list.py
│   │   │   │   │   │   │   │       └── toolkit/
│   │   │   │   │   │   │   │           ├── __init__.py
│   │   │   │   │   │   │   │           ├── configs.py
│   │   │   │   │   │   │   │           └── tools.py
│   │   │   │   │   │   │   └── zh-hans/
│   │   │   │   │   │   │       └── hcp/
│   │   │   │   │   │   │           ├── __init__.py
│   │   │   │   │   │   │           ├── get_host_list.py
│   │   │   │   │   │   │           └── toolkit/
│   │   │   │   │   │   │               ├── __init__.py
│   │   │   │   │   │   │               ├── configs.py
│   │   │   │   │   │   │               └── tools.py
│   │   │   │   │   │   ├── mdfiles/
│   │   │   │   │   │   │   ├── en/
│   │   │   │   │   │   │   │   ├── add_new_component.md
│   │   │   │   │   │   │   │   ├── buffet_component.md
│   │   │   │   │   │   │   │   ├── cmsi_component_guide.md
│   │   │   │   │   │   │   │   ├── custom_conf_manage.md
│   │   │   │   │   │   │   │   ├── esb_introduction.md
│   │   │   │   │   │   │   │   └── use_component.md
│   │   │   │   │   │   │   └── zh-hans/
│   │   │   │   │   │   │       ├── add_new_component.md
│   │   │   │   │   │   │       ├── buffet_component.md
│   │   │   │   │   │   │       ├── cmsi_component_guide.md
│   │   │   │   │   │   │       ├── custom_conf_manage.md
│   │   │   │   │   │   │       ├── esb_introduction.md
│   │   │   │   │   │   │       ├── use_component.md
│   │   │   │   │   │   │       └── weixin_component_guide.md
│   │   │   │   │   │   ├── templates/
│   │   │   │   │   │   │   └── guide/
│   │   │   │   │   │   │       └── page.html
│   │   │   │   │   │   ├── urls.py
│   │   │   │   │   │   ├── utils.py
│   │   │   │   │   │   └── views.py
│   │   │   │   │   └── manager/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       ├── buffet_comp/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── api_views.py
│   │   │   │   │       │   ├── forms.py
│   │   │   │   │       │   └── views.py
│   │   │   │   │       ├── channel/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── api_views.py
│   │   │   │   │       │   ├── forms.py
│   │   │   │   │       │   └── views.py
│   │   │   │   │       ├── index/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   └── views.py
│   │   │   │   │       ├── system/
│   │   │   │   │       │   ├── __init__.py
│   │   │   │   │       │   ├── api_views.py
│   │   │   │   │       │   ├── forms.py
│   │   │   │   │       │   └── views.py
│   │   │   │   │       ├── templates/
│   │   │   │   │       │   └── manager/
│   │   │   │   │       │       ├── base.html
│   │   │   │   │       │       ├── buffet_comp/
│   │   │   │   │       │       │   ├── apply.html
│   │   │   │   │       │       │   ├── base.html
│   │   │   │   │       │       │   ├── edit.html
│   │   │   │   │       │       │   ├── helpers/
│   │   │   │   │       │       │   │   └── buffet_tab.html
│   │   │   │   │       │       │   └── list.html
│   │   │   │   │       │       ├── channel/
│   │   │   │   │       │       │   ├── add.html
│   │   │   │   │       │       │   ├── edit.html
│   │   │   │   │       │       │   └── list.html
│   │   │   │   │       │       ├── index.html
│   │   │   │   │       │       ├── mdfiles/
│   │   │   │   │       │       │   ├── en/
│   │   │   │   │       │       │   │   ├── channel.md
│   │   │   │   │       │       │   │   ├── index.md
│   │   │   │   │       │       │   │   └── system.md
│   │   │   │   │       │       │   └── zh-hans/
│   │   │   │   │       │       │       ├── channel.md
│   │   │   │   │       │       │       ├── index.md
│   │   │   │   │       │       │       └── system.md
│   │   │   │   │       │       └── system/
│   │   │   │   │       │           ├── add.html
│   │   │   │   │       │           ├── add_system_tmpl.html
│   │   │   │   │       │           ├── edit.html
│   │   │   │   │       │           └── list.html
│   │   │   │   │       ├── urls.py
│   │   │   │   │       └── utils.py
│   │   │   │   ├── bkcore/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── admin.py
│   │   │   │   │   ├── constants.py
│   │   │   │   │   ├── migrations/
│   │   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   │   ├── 0002_auto_20160712_2041.py
│   │   │   │   │   │   ├── 0003_load_intial_data.py
│   │   │   │   │   │   ├── 0004_auto_20170220_2054.py
│   │   │   │   │   │   ├── 0005_appaccount.py
│   │   │   │   │   │   ├── 0006_esbchannel_comp_conf.py
│   │   │   │   │   │   ├── 0007_auto_20170619_1050.py
│   │   │   │   │   │   ├── 0008_auto_20170629_1138.py
│   │   │   │   │   │   ├── 0009_wxmpaccesstoken.py
│   │   │   │   │   │   ├── 0010_auto_20180420_1657.py
│   │   │   │   │   │   ├── 0011_auto_20180626_2134.py
│   │   │   │   │   │   └── __init__.py
│   │   │   │   │   └── models.py
│   │   │   │   ├── common/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── base_utils.py
│   │   │   │   │   ├── decorators.py
│   │   │   │   │   └── django_utils.py
│   │   │   │   ├── configs/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   ├── default.py
│   │   │   │   │   └── urls.py
│   │   │   │   └── mainsite/
│   │   │   │       ├── __init__.py
│   │   │   │       └── templates/
│   │   │   │           └── mainsite/
│   │   │   │               ├── base.html
│   │   │   │               └── footer.html
│   │   │   ├── guide/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── migrations/
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   └── views.py
│   │   │   ├── healthz/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── urls.py
│   │   │   │   └── views.py
│   │   │   ├── home/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── esb/
│   │   │   │   │   ├── __init__.py
│   │   │   │   │   └── bkcore/
│   │   │   │   │       ├── __init__.py
│   │   │   │   │       └── models.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_usersettings.py
│   │   │   │   │   ├── 0003_auto_20180126_1702.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── manage.py
│   │   │   ├── media/
│   │   │   │   ├── applogo/
│   │   │   │   │   └── README.md
│   │   │   │   ├── iconlogo/
│   │   │   │   │   └── README.md
│   │   │   │   └── saaslogo/
│   │   │   │       └── README.md
│   │   │   ├── release/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── requirements.txt
│   │   │   ├── resource/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_data_insert_framework.py
│   │   │   │   │   ├── 0003_init_data.py
│   │   │   │   │   ├── 0004_insert_api_dev_template.py
│   │   │   │   │   ├── 0005_data_insert_framework_py3.py
│   │   │   │   │   ├── 0006_upgrade_framework.py
│   │   │   │   │   ├── 0007_update_python_doc_url.py
│   │   │   │   │   ├── 0008_upgrade_framework.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   └── views.py
│   │   │   ├── saas/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── forms.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   ├── 0002_auto_20161025_2016.py
│   │   │   │   │   ├── 0003_saasuploadfile_md5.py
│   │   │   │   │   ├── 0004_saasapp_created_time.py
│   │   │   │   │   ├── 0005_auto_20161101_1025.py
│   │   │   │   │   ├── 0006_auto_20161111_1827.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── utils.py
│   │   │   │   └── views.py
│   │   │   ├── settings.py
│   │   │   ├── static/
│   │   │   │   ├── admin/
│   │   │   │   │   ├── css/
│   │   │   │   │   │   ├── base.css
│   │   │   │   │   │   ├── changelists.css
│   │   │   │   │   │   ├── dashboard.css
│   │   │   │   │   │   ├── forms.css
│   │   │   │   │   │   ├── ie.css
│   │   │   │   │   │   ├── login.css
│   │   │   │   │   │   ├── rtl.css
│   │   │   │   │   │   └── widgets.css
│   │   │   │   │   └── js/
│   │   │   │   │       ├── LICENSE-JQUERY.txt
│   │   │   │   │       ├── SelectBox.js
│   │   │   │   │       ├── SelectFilter2.js
│   │   │   │   │       ├── actions.js
│   │   │   │   │       ├── admin/
│   │   │   │   │       │   ├── DateTimeShortcuts.js
│   │   │   │   │       │   └── RelatedObjectLookups.js
│   │   │   │   │       ├── calendar.js
│   │   │   │   │       ├── collapse.js
│   │   │   │   │       ├── core.js
│   │   │   │   │       ├── inlines.js
│   │   │   │   │       ├── jquery.init.js
│   │   │   │   │       ├── jquery.js
│   │   │   │   │       ├── prepopulate.js
│   │   │   │   │       ├── related-widget-wrapper.js
│   │   │   │   │       ├── timeparse.js
│   │   │   │   │       └── urlify.js
│   │   │   │   ├── assets/
│   │   │   │   │   ├── bk-icon-2.0/
│   │   │   │   │   │   ├── iconfont.css
│   │   │   │   │   │   └── iconfont.json
│   │   │   │   │   ├── bkDialog-1.0/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   └── ui-dialog.css
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       └── dialog.js
│   │   │   │   │   ├── bkDialog-2.0/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   └── dialog.css
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       └── dialog.js
│   │   │   │   │   ├── bootstrap-3.1.1/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   ├── bootstrap-overrides.css
│   │   │   │   │   │   │   ├── bootstrap-theme.css
│   │   │   │   │   │   │   ├── bootstrap.css
│   │   │   │   │   │   │   ├── bootstrap3.0.0.css
│   │   │   │   │   │   │   ├── button.css
│   │   │   │   │   │   │   ├── docs.css
│   │   │   │   │   │   │   └── extend.css
│   │   │   │   │   │   └── js/
│   │   │   │   │   │       ├── bootstrap.js
│   │   │   │   │   │       └── html5shiv.js
│   │   │   │   │   ├── jquery-ui-1.11.0.custom/
│   │   │   │   │   │   ├── external/
│   │   │   │   │   │   │   └── jquery/
│   │   │   │   │   │   │       └── jquery.js
│   │   │   │   │   │   ├── index.html
│   │   │   │   │   │   ├── jquery-ui.css
│   │   │   │   │   │   ├── jquery-ui.js
│   │   │   │   │   │   ├── jquery-ui.structure.css
│   │   │   │   │   │   └── jquery-ui.theme.css
│   │   │   │   │   ├── jquery.zeroclipboard-0.2.0/
│   │   │   │   │   │   ├── ZeroClipboard.swf
│   │   │   │   │   │   └── jquery.zeroclipboard.js
│   │   │   │   │   └── select2-3.5.3/
│   │   │   │   │       ├── .gitignore
│   │   │   │   │       ├── CONTRIBUTING.md
│   │   │   │   │       ├── LICENSE
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── bower.json
│   │   │   │   │       ├── component.json
│   │   │   │   │       ├── composer.json
│   │   │   │   │       ├── release.sh
│   │   │   │   │       ├── select2-bootstrap.css
│   │   │   │   │       ├── select2.css
│   │   │   │   │       ├── select2.jquery.json
│   │   │   │   │       ├── select2.js
│   │   │   │   │       ├── select2_locale_ar.js
│   │   │   │   │       ├── select2_locale_az.js
│   │   │   │   │       ├── select2_locale_bg.js
│   │   │   │   │       ├── select2_locale_ca.js
│   │   │   │   │       ├── select2_locale_cs.js
│   │   │   │   │       ├── select2_locale_da.js
│   │   │   │   │       ├── select2_locale_de.js
│   │   │   │   │       ├── select2_locale_el.js
│   │   │   │   │       ├── select2_locale_en.js.template
│   │   │   │   │       ├── select2_locale_es.js
│   │   │   │   │       ├── select2_locale_et.js
│   │   │   │   │       ├── select2_locale_eu.js
│   │   │   │   │       ├── select2_locale_fa.js
│   │   │   │   │       ├── select2_locale_fi.js
│   │   │   │   │       ├── select2_locale_fr.js
│   │   │   │   │       ├── select2_locale_gl.js
│   │   │   │   │       ├── select2_locale_he.js
│   │   │   │   │       ├── select2_locale_hr.js
│   │   │   │   │       ├── select2_locale_hu.js
│   │   │   │   │       ├── select2_locale_id.js
│   │   │   │   │       ├── select2_locale_is.js
│   │   │   │   │       ├── select2_locale_it.js
│   │   │   │   │       ├── select2_locale_ja.js
│   │   │   │   │       ├── select2_locale_ka.js
│   │   │   │   │       ├── select2_locale_ko.js
│   │   │   │   │       ├── select2_locale_lt.js
│   │   │   │   │       ├── select2_locale_lv.js
│   │   │   │   │       ├── select2_locale_mk.js
│   │   │   │   │       ├── select2_locale_ms.js
│   │   │   │   │       ├── select2_locale_nb.js
│   │   │   │   │       ├── select2_locale_nl.js
│   │   │   │   │       ├── select2_locale_pl.js
│   │   │   │   │       ├── select2_locale_pt-BR.js
│   │   │   │   │       ├── select2_locale_pt-PT.js
│   │   │   │   │       ├── select2_locale_ro.js
│   │   │   │   │       ├── select2_locale_rs.js
│   │   │   │   │       ├── select2_locale_ru.js
│   │   │   │   │       ├── select2_locale_sk.js
│   │   │   │   │       ├── select2_locale_sv.js
│   │   │   │   │       ├── select2_locale_th.js
│   │   │   │   │       ├── select2_locale_tr.js
│   │   │   │   │       ├── select2_locale_ug-CN.js
│   │   │   │   │       ├── select2_locale_uk.js
│   │   │   │   │       ├── select2_locale_vi.js
│   │   │   │   │       ├── select2_locale_zh-CN.js
│   │   │   │   │       └── select2_locale_zh-TW.js
│   │   │   │   ├── css/
│   │   │   │   │   ├── base.css
│   │   │   │   │   ├── guide_newbie.css
│   │   │   │   │   ├── layout_head.css
│   │   │   │   │   ├── login.css
│   │   │   │   │   ├── paas_app.css
│   │   │   │   │   ├── paas_app_env.css
│   │   │   │   │   ├── paas_guide.css
│   │   │   │   │   ├── paas_monitor.css
│   │   │   │   │   ├── paas_profile.css
│   │   │   │   │   ├── paas_release.css
│   │   │   │   │   └── paas_saas.css
│   │   │   │   ├── doc/
│   │   │   │   │   ├── api_data.js
│   │   │   │   │   ├── api_data.json
│   │   │   │   │   ├── api_project.js
│   │   │   │   │   ├── api_project.json
│   │   │   │   │   ├── apidoc.json
│   │   │   │   │   ├── css/
│   │   │   │   │   │   └── style.css
│   │   │   │   │   ├── index.html
│   │   │   │   │   ├── locales/
│   │   │   │   │   │   ├── ca.js
│   │   │   │   │   │   ├── de.js
│   │   │   │   │   │   ├── es.js
│   │   │   │   │   │   ├── fr.js
│   │   │   │   │   │   ├── it.js
│   │   │   │   │   │   ├── locale.js
│   │   │   │   │   │   ├── nl.js
│   │   │   │   │   │   ├── pl.js
│   │   │   │   │   │   ├── pt_br.js
│   │   │   │   │   │   ├── ro.js
│   │   │   │   │   │   ├── ru.js
│   │   │   │   │   │   ├── tr.js
│   │   │   │   │   │   ├── vi.js
│   │   │   │   │   │   ├── zh.js
│   │   │   │   │   │   └── zh_cn.js
│   │   │   │   │   ├── main.js
│   │   │   │   │   ├── utils/
│   │   │   │   │   │   ├── handlebars_helper.js
│   │   │   │   │   │   └── send_sample_request.js
│   │   │   │   │   └── vendor/
│   │   │   │   │       ├── path-to-regexp/
│   │   │   │   │       │   ├── LICENSE
│   │   │   │   │       │   └── index.js
│   │   │   │   │       ├── polyfill.js
│   │   │   │   │       ├── prettify/
│   │   │   │   │       │   ├── lang-Splus.js
│   │   │   │   │       │   ├── lang-aea.js
│   │   │   │   │       │   ├── lang-agc.js
│   │   │   │   │       │   ├── lang-apollo.js
│   │   │   │   │       │   ├── lang-basic.js
│   │   │   │   │       │   ├── lang-cbm.js
│   │   │   │   │       │   ├── lang-cl.js
│   │   │   │   │       │   ├── lang-clj.js
│   │   │   │   │       │   ├── lang-css.js
│   │   │   │   │       │   ├── lang-dart.js
│   │   │   │   │       │   ├── lang-el.js
│   │   │   │   │       │   ├── lang-erl.js
│   │   │   │   │       │   ├── lang-erlang.js
│   │   │   │   │       │   ├── lang-fs.js
│   │   │   │   │       │   ├── lang-go.js
│   │   │   │   │       │   ├── lang-hs.js
│   │   │   │   │       │   ├── lang-lasso.js
│   │   │   │   │       │   ├── lang-lassoscript.js
│   │   │   │   │       │   ├── lang-latex.js
│   │   │   │   │       │   ├── lang-lgt.js
│   │   │   │   │       │   ├── lang-lisp.js
│   │   │   │   │       │   ├── lang-ll.js
│   │   │   │   │       │   ├── lang-llvm.js
│   │   │   │   │       │   ├── lang-logtalk.js
│   │   │   │   │       │   ├── lang-ls.js
│   │   │   │   │       │   ├── lang-lsp.js
│   │   │   │   │       │   ├── lang-lua.js
│   │   │   │   │       │   ├── lang-matlab.js
│   │   │   │   │       │   ├── lang-ml.js
│   │   │   │   │       │   ├── lang-mumps.js
│   │   │   │   │       │   ├── lang-n.js
│   │   │   │   │       │   ├── lang-nemerle.js
│   │   │   │   │       │   ├── lang-pascal.js
│   │   │   │   │       │   ├── lang-proto.js
│   │   │   │   │       │   ├── lang-r.js
│   │   │   │   │       │   ├── lang-rd.js
│   │   │   │   │       │   ├── lang-rkt.js
│   │   │   │   │       │   ├── lang-rust.js
│   │   │   │   │       │   ├── lang-s.js
│   │   │   │   │       │   ├── lang-scala.js
│   │   │   │   │       │   ├── lang-scm.js
│   │   │   │   │       │   ├── lang-sql.js
│   │   │   │   │       │   ├── lang-ss.js
│   │   │   │   │       │   ├── lang-swift.js
│   │   │   │   │       │   ├── lang-tcl.js
│   │   │   │   │       │   ├── lang-tex.js
│   │   │   │   │       │   ├── lang-vb.js
│   │   │   │   │       │   ├── lang-vbs.js
│   │   │   │   │       │   ├── lang-vhd.js
│   │   │   │   │       │   ├── lang-vhdl.js
│   │   │   │   │       │   ├── lang-wiki.js
│   │   │   │   │       │   ├── lang-xq.js
│   │   │   │   │       │   ├── lang-xquery.js
│   │   │   │   │       │   ├── lang-yaml.js
│   │   │   │   │       │   ├── lang-yml.js
│   │   │   │   │       │   ├── prettify.css
│   │   │   │   │       │   ├── prettify.js
│   │   │   │   │       │   └── run_prettify.js
│   │   │   │   │       ├── prettify.css
│   │   │   │   │       └── webfontloader.js
│   │   │   │   ├── esb/
│   │   │   │   │   ├── api_docs/
│   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   ├── index.css
│   │   │   │   │   │   │   ├── md_render.css
│   │   │   │   │   │   │   └── search.css
│   │   │   │   │   │   ├── js/
│   │   │   │   │   │   │   ├── search.js
│   │   │   │   │   │   │   ├── system_api_docs_info.js
│   │   │   │   │   │   │   └── system_info.js
│   │   │   │   │   │   └── res/
│   │   │   │   │   │       └── cc/
│   │   │   │   │   │           ├── classIcon.json
│   │   │   │   │   │           └── modleIcon.json
│   │   │   │   │   ├── assets/
│   │   │   │   │   │   ├── backbone-1.3.3-min.js
│   │   │   │   │   │   ├── bkDialog-1.0/
│   │   │   │   │   │   │   ├── css/
│   │   │   │   │   │   │   │   └── ui-dialog.css
│   │   │   │   │   │   │   └── js/
│   │   │   │   │   │   │       └── dialog.js
│   │   │   │   │   │   ├── handlebars-3.0.1.js
│   │   │   │   │   │   ├── jquery.cookie-1.4.1.js
│   │   │   │   │   │   ├── jquery.validate-1.11.0.js
│   │   │   │   │   │   ├── metis_menu-2.6.1/
│   │   │   │   │   │   │   ├── metisMenu.css
│   │   │   │   │   │   │   └── metisMenu.js
│   │   │   │   │   │   ├── sFlow-1.0/
│   │   │   │   │   │   │   ├── sFlow.css
│   │   │   │   │   │   │   └── sFlow.js
│   │   │   │   │   │   ├── select2-3.5.3/
│   │   │   │   │   │   │   ├── .gitignore
│   │   │   │   │   │   │   ├── CONTRIBUTING.md
│   │   │   │   │   │   │   ├── LICENSE
│   │   │   │   │   │   │   ├── README.md
│   │   │   │   │   │   │   ├── bower.json
│   │   │   │   │   │   │   ├── component.json
│   │   │   │   │   │   │   ├── composer.json
│   │   │   │   │   │   │   ├── release.sh
│   │   │   │   │   │   │   ├── select2-bootstrap.css
│   │   │   │   │   │   │   ├── select2.css
│   │   │   │   │   │   │   ├── select2.jquery.json
│   │   │   │   │   │   │   ├── select2.js
│   │   │   │   │   │   │   ├── select2_locale_ar.js
│   │   │   │   │   │   │   ├── select2_locale_az.js
│   │   │   │   │   │   │   ├── select2_locale_bg.js
│   │   │   │   │   │   │   ├── select2_locale_ca.js
│   │   │   │   │   │   │   ├── select2_locale_cs.js
│   │   │   │   │   │   │   ├── select2_locale_da.js
│   │   │   │   │   │   │   ├── select2_locale_de.js
│   │   │   │   │   │   │   ├── select2_locale_el.js
│   │   │   │   │   │   │   ├── select2_locale_en.js.template
│   │   │   │   │   │   │   ├── select2_locale_es.js
│   │   │   │   │   │   │   ├── select2_locale_et.js
│   │   │   │   │   │   │   ├── select2_locale_eu.js
│   │   │   │   │   │   │   ├── select2_locale_fa.js
│   │   │   │   │   │   │   ├── select2_locale_fi.js
│   │   │   │   │   │   │   ├── select2_locale_fr.js
│   │   │   │   │   │   │   ├── select2_locale_gl.js
│   │   │   │   │   │   │   ├── select2_locale_he.js
│   │   │   │   │   │   │   ├── select2_locale_hr.js
│   │   │   │   │   │   │   ├── select2_locale_hu.js
│   │   │   │   │   │   │   ├── select2_locale_id.js
│   │   │   │   │   │   │   ├── select2_locale_is.js
│   │   │   │   │   │   │   ├── select2_locale_it.js
│   │   │   │   │   │   │   ├── select2_locale_ja.js
│   │   │   │   │   │   │   ├── select2_locale_ka.js
│   │   │   │   │   │   │   ├── select2_locale_ko.js
│   │   │   │   │   │   │   ├── select2_locale_lt.js
│   │   │   │   │   │   │   ├── select2_locale_lv.js
│   │   │   │   │   │   │   ├── select2_locale_mk.js
│   │   │   │   │   │   │   ├── select2_locale_ms.js
│   │   │   │   │   │   │   ├── select2_locale_nb.js
│   │   │   │   │   │   │   ├── select2_locale_nl.js
│   │   │   │   │   │   │   ├── select2_locale_pl.js
│   │   │   │   │   │   │   ├── select2_locale_pt-BR.js
│   │   │   │   │   │   │   ├── select2_locale_pt-PT.js
│   │   │   │   │   │   │   ├── select2_locale_ro.js
│   │   │   │   │   │   │   ├── select2_locale_rs.js
│   │   │   │   │   │   │   ├── select2_locale_ru.js
│   │   │   │   │   │   │   ├── select2_locale_sk.js
│   │   │   │   │   │   │   ├── select2_locale_sv.js
│   │   │   │   │   │   │   ├── select2_locale_th.js
│   │   │   │   │   │   │   ├── select2_locale_tr.js
│   │   │   │   │   │   │   ├── select2_locale_ug-CN.js
│   │   │   │   │   │   │   ├── select2_locale_uk.js
│   │   │   │   │   │   │   ├── select2_locale_vi.js
│   │   │   │   │   │   │   ├── select2_locale_zh-CN.js
│   │   │   │   │   │   │   └── select2_locale_zh-TW.js
│   │   │   │   │   │   ├── underscore-1.8.3-min.js
│   │   │   │   │   │   └── vue-2.4.2.js
│   │   │   │   │   ├── css/
│   │   │   │   │   │   ├── base.css
│   │   │   │   │   │   ├── helper.css
│   │   │   │   │   │   ├── md2html.css
│   │   │   │   │   │   └── style.css
│   │   │   │   │   ├── img/
│   │   │   │   │   │   └── logo_esb_02.png.bak
│   │   │   │   │   ├── js/
│   │   │   │   │   │   ├── buffet_list.js
│   │   │   │   │   │   ├── buffet_update.js
│   │   │   │   │   │   ├── channel.js
│   │   │   │   │   │   ├── channel_list.js
│   │   │   │   │   │   ├── core.js
│   │   │   │   │   │   ├── csrftoken.js
│   │   │   │   │   │   ├── esb_add_system.js
│   │   │   │   │   │   └── system_list.js
│   │   │   │   │   ├── locales/
│   │   │   │   │   │   ├── ca.js
│   │   │   │   │   │   ├── de.js
│   │   │   │   │   │   ├── es.js
│   │   │   │   │   │   ├── fr.js
│   │   │   │   │   │   ├── locale.js
│   │   │   │   │   │   ├── nl.js
│   │   │   │   │   │   ├── pl.js
│   │   │   │   │   │   ├── pt_br.js
│   │   │   │   │   │   ├── ru.js
│   │   │   │   │   │   ├── zh.js
│   │   │   │   │   │   └── zh_cn.js
│   │   │   │   │   └── utils/
│   │   │   │   │       ├── handlebars_helper.js
│   │   │   │   │       └── send_sample_request.js
│   │   │   │   ├── home/
│   │   │   │   │   ├── css/
│   │   │   │   │   │   └── index.css
│   │   │   │   │   └── js/
│   │   │   │   │       ├── csrftoken_v3.js
│   │   │   │   │       └── index.js
│   │   │   │   ├── js/
│   │   │   │   │   ├── core.js
│   │   │   │   │   ├── csrftoken.js
│   │   │   │   │   ├── paas_app.js
│   │   │   │   │   ├── paas_app_env.js
│   │   │   │   │   ├── paas_base.js
│   │   │   │   │   ├── paas_engine.js
│   │   │   │   │   ├── paas_engine_third.js
│   │   │   │   │   ├── paas_release.js
│   │   │   │   │   ├── paas_saas.js
│   │   │   │   │   ├── pagination.js
│   │   │   │   │   └── utils.js
│   │   │   │   └── user_center/
│   │   │   │       ├── css/
│   │   │   │       │   └── weixin.css
│   │   │   │       └── js/
│   │   │   │           └── weixin.js
│   │   │   ├── templates/
│   │   │   │   ├── 401.html
│   │   │   │   ├── 403.html
│   │   │   │   ├── 404.html
│   │   │   │   ├── 500.html
│   │   │   │   ├── 50x.html
│   │   │   │   ├── account/
│   │   │   │   │   ├── profile.html
│   │   │   │   │   └── profile_modify.html
│   │   │   │   ├── admin/
│   │   │   │   │   ├── base_site.html
│   │   │   │   │   └── login.html
│   │   │   │   ├── app/
│   │   │   │   │   ├── create.html
│   │   │   │   │   ├── create_detail.part
│   │   │   │   │   ├── info.html
│   │   │   │   │   ├── info_error.html
│   │   │   │   │   ├── list.html
│   │   │   │   │   ├── list_table.part
│   │   │   │   │   ├── list_tip.part
│   │   │   │   │   └── show_apply_process.html
│   │   │   │   ├── app_env/
│   │   │   │   │   └── home.html
│   │   │   │   ├── base.html
│   │   │   │   ├── base_app.html
│   │   │   │   ├── base_center.html
│   │   │   │   ├── csrf_failure.html
│   │   │   │   ├── developer_403.html
│   │   │   │   ├── engine/
│   │   │   │   │   ├── external_server.html
│   │   │   │   │   └── server.html
│   │   │   │   ├── error/
│   │   │   │   │   ├── app_error1.html
│   │   │   │   │   ├── app_error2.html
│   │   │   │   │   ├── app_error3.html
│   │   │   │   │   ├── app_error4.html
│   │   │   │   │   ├── app_error_dialog1.html
│   │   │   │   │   ├── app_error_dialog2.html
│   │   │   │   │   ├── app_error_dialog3.html
│   │   │   │   │   └── app_error_dialog4.html
│   │   │   │   ├── guide/
│   │   │   │   │   ├── newbie.html
│   │   │   │   │   └── services.html
│   │   │   │   ├── home/
│   │   │   │   │   └── index.html
│   │   │   │   ├── release/
│   │   │   │   │   ├── base_history.html
│   │   │   │   │   ├── home.html
│   │   │   │   │   ├── offline_form.part
│   │   │   │   │   ├── online_form.part
│   │   │   │   │   ├── record.html
│   │   │   │   │   ├── record_list.part
│   │   │   │   │   ├── release_flow.part
│   │   │   │   │   ├── test_form.part
│   │   │   │   │   └── version.html
│   │   │   │   ├── resource/
│   │   │   │   │   └── index.html
│   │   │   │   ├── saas/
│   │   │   │   │   ├── info.html
│   │   │   │   │   ├── list.html
│   │   │   │   │   ├── list_table.part
│   │   │   │   │   ├── offline.html
│   │   │   │   │   ├── record.html
│   │   │   │   │   └── release.html
│   │   │   │   └── user_center/
│   │   │   │       ├── weixin_bind_error.html
│   │   │   │       └── weixin_qy_bind_success.html
│   │   │   ├── urls.py
│   │   │   ├── user_center/
│   │   │   │   ├── __init__.py
│   │   │   │   ├── admin.py
│   │   │   │   ├── constants.py
│   │   │   │   ├── decorators.py
│   │   │   │   ├── manager.py
│   │   │   │   ├── migrations/
│   │   │   │   │   ├── 0001_initial.py
│   │   │   │   │   └── __init__.py
│   │   │   │   ├── models.py
│   │   │   │   ├── tests.py
│   │   │   │   ├── urls.py
│   │   │   │   ├── views.py
│   │   │   │   └── weixin/
│   │   │   │       ├── __init__.py
│   │   │   │       ├── core.py
│   │   │   │       └── utils.py
│   │   │   └── wsgi.py
│   │   ├── package.json
│   │   └── websocket/
│   │       ├── .gitignore
│   │       ├── README.md
│   │       ├── VERSION
│   │       ├── __init__.py
│   │       ├── app.yml
│   │       ├── asgi.py
│   │       ├── bastion/
│   │       │   ├── __init__.py
│   │       │   ├── admin.py
│   │       │   ├── apps.py
│   │       │   ├── component/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── common.py
│   │       │   │   ├── core.py
│   │       │   │   └── redis_client_conn.py
│   │       │   ├── constant.py
│   │       │   ├── core/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── consumers.py
│   │       │   │   ├── consumers.py.old
│   │       │   │   ├── consumers_database_mysql_web.py
│   │       │   │   ├── consumers_database_redis_web.py
│   │       │   │   ├── consumers_database_shell.py
│   │       │   │   ├── consumers_namespace_pod.py
│   │       │   │   ├── consumers_network.py
│   │       │   │   ├── consumers_windows.py
│   │       │   │   ├── guacamole/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── client.py
│   │       │   │   │   ├── component.py
│   │       │   │   │   ├── exceptions.py
│   │       │   │   │   └── instruction.py
│   │       │   │   ├── status_code.py
│   │       │   │   └── terminal/
│   │       │   │       ├── __init__.py
│   │       │   │       └── component.py
│   │       │   ├── migrations/
│   │       │   │   └── __init__.py
│   │       │   ├── models.py
│   │       │   ├── routing.py
│   │       │   ├── tests.py
│   │       │   └── utils/
│   │       │       ├── __init__.py
│   │       │       ├── base_model.py
│   │       │       ├── constants.py
│   │       │       ├── encryption.py
│   │       │       └── esb_api.py
│   │       ├── blueapps/
│   │       │   ├── __init__.py
│   │       │   ├── account/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── admin.py
│   │       │   │   ├── apps.py
│   │       │   │   ├── backends.py
│   │       │   │   ├── components/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── bk_jwt/
│   │       │   │   │   │   ├── __init__.py
│   │       │   │   │   │   ├── backends.py
│   │       │   │   │   │   └── middlewares.py
│   │       │   │   │   ├── bk_token/
│   │       │   │   │   │   ├── __init__.py
│   │       │   │   │   │   ├── backends.py
│   │       │   │   │   │   ├── forms.py
│   │       │   │   │   │   ├── middlewares.py
│   │       │   │   │   │   └── models.py
│   │       │   │   │   ├── null/
│   │       │   │   │   │   └── __init__.py
│   │       │   │   │   └── weixin/
│   │       │   │   │       ├── __init__.py
│   │       │   │   │       ├── backends.py
│   │       │   │   │       ├── forms.py
│   │       │   │   │       └── middlewares.py
│   │       │   │   ├── conf.py
│   │       │   │   ├── decorators.py
│   │       │   │   ├── forms.py
│   │       │   │   ├── handlers/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── response.py
│   │       │   │   ├── middlewares.py
│   │       │   │   ├── migrations/
│   │       │   │   │   ├── 0001_initial.py
│   │       │   │   │   ├── 0002_init_superuser.py
│   │       │   │   │   ├── 0003_verifyinfo.py
│   │       │   │   │   └── __init__.py
│   │       │   │   ├── models.py
│   │       │   │   ├── readme.md
│   │       │   │   ├── sites/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── default.py
│   │       │   │   │   └── open/
│   │       │   │   │       ├── __init__.py
│   │       │   │   │       └── conf.py
│   │       │   │   ├── static/
│   │       │   │   │   └── account/
│   │       │   │   │       └── login.js
│   │       │   │   ├── templates/
│   │       │   │   │   └── account/
│   │       │   │   │       ├── login_page.html
│   │       │   │   │       └── login_success.html
│   │       │   │   ├── urls.py
│   │       │   │   ├── utils/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── http.py
│   │       │   │   │   └── sms.py
│   │       │   │   └── views.py
│   │       │   ├── conf/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── database.py
│   │       │   │   ├── default_settings.py
│   │       │   │   ├── environ.py
│   │       │   │   ├── log.py
│   │       │   │   └── sites/
│   │       │   │       ├── __init__.py
│   │       │   │       └── open/
│   │       │   │           └── __init__.py
│   │       │   ├── contrib/
│   │       │   │   ├── __init__.py
│   │       │   │   └── bk_commands/
│   │       │   │       ├── __init__.py
│   │       │   │       ├── management/
│   │       │   │       │   ├── __init__.py
│   │       │   │       │   ├── commands/
│   │       │   │       │   │   ├── __init__.py
│   │       │   │       │   │   ├── init.py
│   │       │   │       │   │   ├── startexample.py
│   │       │   │       │   │   ├── startweixin.py
│   │       │   │       │   │   └── startwxapp.py
│   │       │   │       │   └── templates.py
│   │       │   │       └── test.py
│   │       │   ├── core/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── celery/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── celery.py
│   │       │   │   ├── exceptions/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── base.py
│   │       │   │   │   └── middleware.py
│   │       │   │   ├── handler/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── wsgi.py
│   │       │   │   ├── sites/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── middleware.py
│   │       │   │   └── wsgi.py
│   │       │   ├── middleware/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── bkui/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── middlewares.py
│   │       │   │   ├── request_provider.py
│   │       │   │   └── xss/
│   │       │   │       ├── __init__.py
│   │       │   │       ├── decorators.py
│   │       │   │       ├── middlewares.py
│   │       │   │       ├── pxfilter.py
│   │       │   │       └── utils.py
│   │       │   ├── patch/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── log.py
│   │       │   │   ├── settings_open_saas.py
│   │       │   │   └── settings_paas_services.py
│   │       │   ├── template/
│   │       │   │   ├── __init__.py
│   │       │   │   ├── backends/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   └── mako.py
│   │       │   │   └── context_processors.py
│   │       │   └── utils/
│   │       │       ├── __init__.py
│   │       │       ├── esbclient.py
│   │       │       ├── logger.py
│   │       │       ├── request_provider.py
│   │       │       ├── sites/
│   │       │       │   ├── __init__.py
│   │       │       │   ├── clouds/
│   │       │       │   │   └── __init__.py
│   │       │       │   ├── ieod/
│   │       │       │   │   └── __init__.py
│   │       │       │   ├── open/
│   │       │       │   │   └── __init__.py
│   │       │       │   ├── qcloud/
│   │       │       │   │   └── __init__.py
│   │       │       │   └── tencent/
│   │       │       │       └── __init__.py
│   │       │       └── unique.py
│   │       ├── blueking/
│   │       │   ├── __init__.py
│   │       │   ├── component/
│   │       │   │   ├── README.md
│   │       │   │   ├── __init__.py
│   │       │   │   ├── apis/
│   │       │   │   │   ├── __init__.py
│   │       │   │   │   ├── bk_login.py
│   │       │   │   │   ├── bk_paas.py
│   │       │   │   │   ├── cc.py
│   │       │   │   │   ├── cmsi.py
│   │       │   │   │   ├── gse.py
│   │       │   │   │   ├── job.py
│   │       │   │   │   └── sops.py
│   │       │   │   ├── base.py
│   │       │   │   ├── client.py
│   │       │   │   ├── collections.py
│   │       │   │   ├── compat.py
│   │       │   │   ├── conf.py
│   │       │   │   ├── exceptions.py
│   │       │   │   ├── shortcuts.py
│   │       │   │   └── utils.py
│   │       │   └── tests/
│   │       │       ├── README.md
│   │       │       ├── __init__.py
│   │       │       ├── test_client.py
│   │       │       ├── test_shortcuts.py
│   │       │       ├── test_utils.py
│   │       │       └── utils/
│   │       │           ├── __init__.py
│   │       │           └── utils.py
│   │       ├── config/
│   │       │   ├── __init__.py
│   │       │   ├── default.py
│   │       │   ├── dev.py
│   │       │   ├── prod.py
│   │       │   ├── redis_demo.py
│   │       │   └── stag.py
│   │       ├── k8s_api.py
│   │       ├── manage.py
│   │       ├── requirements.txt
│   │       ├── runtime.txt
│   │       ├── settings.py
│   │       ├── tianyi.pem
│   │       ├── urls.py
│   │       └── wsgi.py
│   ├── paasagent/
│   │   ├── Gopkg.toml
│   │   ├── Makefile
│   │   ├── README.md
│   │   ├── VERSION
│   │   ├── core/
│   │   │   ├── http.go
│   │   │   ├── states.go
│   │   │   └── utils.go
│   │   ├── etc/
│   │   │   ├── build/
│   │   │   │   ├── packages/
│   │   │   │   │   └── requirements.txt
│   │   │   │   └── virtualenv/
│   │   │   │       ├── build
│   │   │   │       └── saas/
│   │   │   │           └── buildsaas
│   │   │   ├── nginx/
│   │   │   │   └── paasagent.conf
│   │   │   ├── paas_agent_config.yaml
│   │   │   └── templates/
│   │   │       ├── supervisord.conf
│   │   │       └── uwsgi.ini
│   │   ├── job/
│   │   │   └── job.go
│   │   ├── main.go
│   │   ├── server/
│   │   │   ├── http.go
│   │   │   └── response.go
│   │   └── vendor/
│   │       ├── github.com/
│   │       │   ├── fsnotify/
│   │       │   │   └── fsnotify/
│   │       │   │       ├── .editorconfig
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── AUTHORS
│   │       │   │       ├── CHANGELOG.md
│   │       │   │       ├── CONTRIBUTING.md
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── fen.go
│   │       │   │       ├── fsnotify.go
│   │       │   │       ├── inotify.go
│   │       │   │       ├── inotify_poller.go
│   │       │   │       ├── kqueue.go
│   │       │   │       ├── open_mode_bsd.go
│   │       │   │       ├── open_mode_darwin.go
│   │       │   │       └── windows.go
│   │       │   ├── hashicorp/
│   │       │   │   └── hcl/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── LICENSE
│   │       │   │       ├── Makefile
│   │       │   │       ├── README.md
│   │       │   │       ├── appveyor.yml
│   │       │   │       ├── decoder.go
│   │       │   │       ├── go.mod
│   │       │   │       ├── go.sum
│   │       │   │       ├── hcl/
│   │       │   │       │   ├── ast/
│   │       │   │       │   │   ├── ast.go
│   │       │   │       │   │   └── walk.go
│   │       │   │       │   ├── parser/
│   │       │   │       │   │   ├── error.go
│   │       │   │       │   │   └── parser.go
│   │       │   │       │   ├── printer/
│   │       │   │       │   │   ├── nodes.go
│   │       │   │       │   │   └── printer.go
│   │       │   │       │   ├── scanner/
│   │       │   │       │   │   └── scanner.go
│   │       │   │       │   ├── strconv/
│   │       │   │       │   │   └── quote.go
│   │       │   │       │   └── token/
│   │       │   │       │       ├── position.go
│   │       │   │       │       └── token.go
│   │       │   │       ├── hcl.go
│   │       │   │       ├── json/
│   │       │   │       │   ├── parser/
│   │       │   │       │   │   ├── flatten.go
│   │       │   │       │   │   └── parser.go
│   │       │   │       │   ├── scanner/
│   │       │   │       │   │   └── scanner.go
│   │       │   │       │   └── token/
│   │       │   │       │       ├── position.go
│   │       │   │       │       └── token.go
│   │       │   │       ├── lex.go
│   │       │   │       └── parse.go
│   │       │   ├── labstack/
│   │       │   │   └── gommon/
│   │       │   │       ├── LICENSE
│   │       │   │       ├── color/
│   │       │   │       │   ├── README.md
│   │       │   │       │   └── color.go
│   │       │   │       └── log/
│   │       │   │           ├── README.md
│   │       │   │           ├── color.go
│   │       │   │           ├── log.go
│   │       │   │           └── white.go
│   │       │   ├── magiconair/
│   │       │   │   └── properties/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── CHANGELOG.md
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── decode.go
│   │       │   │       ├── doc.go
│   │       │   │       ├── integrate.go
│   │       │   │       ├── lex.go
│   │       │   │       ├── load.go
│   │       │   │       ├── parser.go
│   │       │   │       ├── properties.go
│   │       │   │       └── rangecheck.go
│   │       │   ├── mattn/
│   │       │   │   ├── go-colorable/
│   │       │   │   │   ├── LICENSE
│   │       │   │   │   ├── README.md
│   │       │   │   │   ├── colorable_others.go
│   │       │   │   │   ├── colorable_windows.go
│   │       │   │   │   └── noncolorable.go
│   │       │   │   └── go-isatty/
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── doc.go
│   │       │   │       ├── isatty_appengine.go
│   │       │   │       ├── isatty_bsd.go
│   │       │   │       ├── isatty_linux.go
│   │       │   │       ├── isatty_solaris.go
│   │       │   │       └── isatty_windows.go
│   │       │   ├── mitchellh/
│   │       │   │   └── mapstructure/
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── CHANGELOG.md
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── decode_hooks.go
│   │       │   │       ├── error.go
│   │       │   │       ├── go.mod
│   │       │   │       └── mapstructure.go
│   │       │   ├── moul/
│   │       │   │   └── http2curl/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── LICENSE
│   │       │   │       ├── Makefile
│   │       │   │       ├── README.md
│   │       │   │       └── http2curl.go
│   │       │   ├── parnurzeal/
│   │       │   │   └── gorequest/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── CHANGELOG
│   │       │   │       ├── CONTRIBUTING.md
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       └── gorequest.go
│   │       │   ├── pelletier/
│   │       │   │   └── go-toml/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── benchmark.json
│   │       │   │       ├── benchmark.sh
│   │       │   │       ├── benchmark.toml
│   │       │   │       ├── benchmark.yml
│   │       │   │       ├── doc.go
│   │       │   │       ├── example-crlf.toml
│   │       │   │       ├── example.toml
│   │       │   │       ├── fuzz.go
│   │       │   │       ├── fuzz.sh
│   │       │   │       ├── keysparsing.go
│   │       │   │       ├── lexer.go
│   │       │   │       ├── marshal.go
│   │       │   │       ├── marshal_test.toml
│   │       │   │       ├── parser.go
│   │       │   │       ├── position.go
│   │       │   │       ├── test.sh
│   │       │   │       ├── token.go
│   │       │   │       ├── toml.go
│   │       │   │       ├── tomltree_create.go
│   │       │   │       └── tomltree_write.go
│   │       │   ├── pkg/
│   │       │   │   └── errors/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── appveyor.yml
│   │       │   │       ├── errors.go
│   │       │   │       └── stack.go
│   │       │   ├── spf13/
│   │       │   │   ├── afero/
│   │       │   │   │   ├── .travis.yml
│   │       │   │   │   ├── LICENSE.txt
│   │       │   │   │   ├── README.md
│   │       │   │   │   ├── afero.go
│   │       │   │   │   ├── appveyor.yml
│   │       │   │   │   ├── basepath.go
│   │       │   │   │   ├── cacheOnReadFs.go
│   │       │   │   │   ├── const_bsds.go
│   │       │   │   │   ├── const_win_unix.go
│   │       │   │   │   ├── copyOnWriteFs.go
│   │       │   │   │   ├── go.mod
│   │       │   │   │   ├── httpFs.go
│   │       │   │   │   ├── ioutil.go
│   │       │   │   │   ├── lstater.go
│   │       │   │   │   ├── match.go
│   │       │   │   │   ├── mem/
│   │       │   │   │   │   ├── dir.go
│   │       │   │   │   │   ├── dirmap.go
│   │       │   │   │   │   └── file.go
│   │       │   │   │   ├── memmap.go
│   │       │   │   │   ├── os.go
│   │       │   │   │   ├── path.go
│   │       │   │   │   ├── readonlyfs.go
│   │       │   │   │   ├── regexpfs.go
│   │       │   │   │   ├── unionFile.go
│   │       │   │   │   └── util.go
│   │       │   │   ├── cast/
│   │       │   │   │   ├── .gitignore
│   │       │   │   │   ├── .travis.yml
│   │       │   │   │   ├── LICENSE
│   │       │   │   │   ├── Makefile
│   │       │   │   │   ├── README.md
│   │       │   │   │   ├── cast.go
│   │       │   │   │   ├── caste.go
│   │       │   │   │   ├── go.mod
│   │       │   │   │   └── go.sum
│   │       │   │   ├── jwalterweatherman/
│   │       │   │   │   ├── .gitignore
│   │       │   │   │   ├── LICENSE
│   │       │   │   │   ├── README.md
│   │       │   │   │   ├── default_notepad.go
│   │       │   │   │   ├── go.mod
│   │       │   │   │   ├── log_counter.go
│   │       │   │   │   └── notepad.go
│   │       │   │   ├── pflag/
│   │       │   │   │   ├── .gitignore
│   │       │   │   │   ├── .travis.yml
│   │       │   │   │   ├── LICENSE
│   │       │   │   │   ├── README.md
│   │       │   │   │   ├── bool.go
│   │       │   │   │   ├── bool_slice.go
│   │       │   │   │   ├── bytes.go
│   │       │   │   │   ├── count.go
│   │       │   │   │   ├── duration.go
│   │       │   │   │   ├── duration_slice.go
│   │       │   │   │   ├── flag.go
│   │       │   │   │   ├── float32.go
│   │       │   │   │   ├── float64.go
│   │       │   │   │   ├── golangflag.go
│   │       │   │   │   ├── int.go
│   │       │   │   │   ├── int16.go
│   │       │   │   │   ├── int32.go
│   │       │   │   │   ├── int64.go
│   │       │   │   │   ├── int8.go
│   │       │   │   │   ├── int_slice.go
│   │       │   │   │   ├── ip.go
│   │       │   │   │   ├── ip_slice.go
│   │       │   │   │   ├── ipmask.go
│   │       │   │   │   ├── ipnet.go
│   │       │   │   │   ├── string.go
│   │       │   │   │   ├── string_array.go
│   │       │   │   │   ├── string_slice.go
│   │       │   │   │   ├── string_to_int.go
│   │       │   │   │   ├── string_to_string.go
│   │       │   │   │   ├── uint.go
│   │       │   │   │   ├── uint16.go
│   │       │   │   │   ├── uint32.go
│   │       │   │   │   ├── uint64.go
│   │       │   │   │   ├── uint8.go
│   │       │   │   │   └── uint_slice.go
│   │       │   │   └── viper/
│   │       │   │       ├── .gitignore
│   │       │   │       ├── .travis.yml
│   │       │   │       ├── LICENSE
│   │       │   │       ├── README.md
│   │       │   │       ├── flags.go
│   │       │   │       ├── go.mod
│   │       │   │       ├── go.sum
│   │       │   │       ├── util.go
│   │       │   │       └── viper.go
│   │       │   └── valyala/
│   │       │       └── fasttemplate/
│   │       │           ├── LICENSE
│   │       │           ├── README.md
│   │       │           └── template.go
│   │       ├── golang.org/
│   │       │   └── x/
│   │       │       ├── net/
│   │       │       │   ├── AUTHORS
│   │       │       │   ├── CONTRIBUTORS
│   │       │       │   ├── LICENSE
│   │       │       │   ├── PATENTS
│   │       │       │   ├── context/
│   │       │       │   │   ├── context.go
│   │       │       │   │   ├── go17.go
│   │       │       │   │   ├── go19.go
│   │       │       │   │   ├── pre_go17.go
│   │       │       │   │   └── pre_go19.go
│   │       │       │   ├── idna/
│   │       │       │   │   ├── idna.go
│   │       │       │   │   ├── punycode.go
│   │       │       │   │   ├── tables.go
│   │       │       │   │   ├── trie.go
│   │       │       │   │   └── trieval.go
│   │       │       │   └── publicsuffix/
│   │       │       │       ├── gen.go
│   │       │       │       ├── list.go
│   │       │       │       └── table.go
│   │       │       ├── sys/
│   │       │       │   ├── AUTHORS
│   │       │       │   ├── CONTRIBUTORS
│   │       │       │   ├── LICENSE
│   │       │       │   ├── PATENTS
│   │       │       │   └── unix/
│   │       │       │       ├── .gitignore
│   │       │       │       ├── README.md
│   │       │       │       ├── affinity_linux.go
│   │       │       │       ├── aliases.go
│   │       │       │       ├── asm_aix_ppc64.s
│   │       │       │       ├── asm_darwin_386.s
│   │       │       │       ├── asm_darwin_amd64.s
│   │       │       │       ├── asm_darwin_arm.s
│   │       │       │       ├── asm_darwin_arm64.s
│   │       │       │       ├── asm_dragonfly_amd64.s
│   │       │       │       ├── asm_freebsd_386.s
│   │       │       │       ├── asm_freebsd_amd64.s
│   │       │       │       ├── asm_freebsd_arm.s
│   │       │       │       ├── asm_linux_386.s
│   │       │       │       ├── asm_linux_amd64.s
│   │       │       │       ├── asm_linux_arm.s
│   │       │       │       ├── asm_linux_arm64.s
│   │       │       │       ├── asm_linux_mips64x.s
│   │       │       │       ├── asm_linux_mipsx.s
│   │       │       │       ├── asm_linux_ppc64x.s
│   │       │       │       ├── asm_linux_s390x.s
│   │       │       │       ├── asm_netbsd_386.s
│   │       │       │       ├── asm_netbsd_amd64.s
│   │       │       │       ├── asm_netbsd_arm.s
│   │       │       │       ├── asm_openbsd_386.s
│   │       │       │       ├── asm_openbsd_amd64.s
│   │       │       │       ├── asm_openbsd_arm.s
│   │       │       │       ├── asm_solaris_amd64.s
│   │       │       │       ├── bluetooth_linux.go
│   │       │       │       ├── cap_freebsd.go
│   │       │       │       ├── constants.go
│   │       │       │       ├── dev_aix_ppc.go
│   │       │       │       ├── dev_aix_ppc64.go
│   │       │       │       ├── dev_darwin.go
│   │       │       │       ├── dev_dragonfly.go
│   │       │       │       ├── dev_freebsd.go
│   │       │       │       ├── dev_linux.go
│   │       │       │       ├── dev_netbsd.go
│   │       │       │       ├── dev_openbsd.go
│   │       │       │       ├── dirent.go
│   │       │       │       ├── endian_big.go
│   │       │       │       ├── endian_little.go
│   │       │       │       ├── env_unix.go
│   │       │       │       ├── errors_freebsd_386.go
│   │       │       │       ├── errors_freebsd_amd64.go
│   │       │       │       ├── errors_freebsd_arm.go
│   │       │       │       ├── fcntl.go
│   │       │       │       ├── fcntl_linux_32bit.go
│   │       │       │       ├── gccgo.go
│   │       │       │       ├── gccgo_c.c
│   │       │       │       ├── gccgo_linux_amd64.go
│   │       │       │       ├── ioctl.go
│   │       │       │       ├── mkall.sh
│   │       │       │       ├── mkerrors.sh
│   │       │       │       ├── mkpost.go
│   │       │       │       ├── mksyscall.pl
│   │       │       │       ├── mksyscall_aix_ppc.pl
│   │       │       │       ├── mksyscall_aix_ppc64.pl
│   │       │       │       ├── mksyscall_solaris.pl
│   │       │       │       ├── mksysctl_openbsd.pl
│   │       │       │       ├── mksysnum_darwin.pl
│   │       │       │       ├── mksysnum_dragonfly.pl
│   │       │       │       ├── mksysnum_freebsd.pl
│   │       │       │       ├── mksysnum_netbsd.pl
│   │       │       │       ├── mksysnum_openbsd.pl
│   │       │       │       ├── openbsd_pledge.go
│   │       │       │       ├── openbsd_unveil.go
│   │       │       │       ├── pagesize_unix.go
│   │       │       │       ├── race.go
│   │       │       │       ├── race0.go
│   │       │       │       ├── sockcmsg_linux.go
│   │       │       │       ├── sockcmsg_unix.go
│   │       │       │       ├── str.go
│   │       │       │       ├── syscall.go
│   │       │       │       ├── syscall_aix.go
│   │       │       │       ├── syscall_aix_ppc.go
│   │       │       │       ├── syscall_aix_ppc64.go
│   │       │       │       ├── syscall_bsd.go
│   │       │       │       ├── syscall_darwin.go
│   │       │       │       ├── syscall_darwin_386.go
│   │       │       │       ├── syscall_darwin_amd64.go
│   │       │       │       ├── syscall_darwin_arm.go
│   │       │       │       ├── syscall_darwin_arm64.go
│   │       │       │       ├── syscall_dragonfly.go
│   │       │       │       ├── syscall_dragonfly_amd64.go
│   │       │       │       ├── syscall_freebsd.go
│   │       │       │       ├── syscall_freebsd_386.go
│   │       │       │       ├── syscall_freebsd_amd64.go
│   │       │       │       ├── syscall_freebsd_arm.go
│   │       │       │       ├── syscall_linux.go
│   │       │       │       ├── syscall_linux_386.go
│   │       │       │       ├── syscall_linux_amd64.go
│   │       │       │       ├── syscall_linux_amd64_gc.go
│   │       │       │       ├── syscall_linux_arm.go
│   │       │       │       ├── syscall_linux_arm64.go
│   │       │       │       ├── syscall_linux_gc.go
│   │       │       │       ├── syscall_linux_gc_386.go
│   │       │       │       ├── syscall_linux_gccgo_386.go
│   │       │       │       ├── syscall_linux_gccgo_arm.go
│   │       │       │       ├── syscall_linux_mips64x.go
│   │       │       │       ├── syscall_linux_mipsx.go
│   │       │       │       ├── syscall_linux_ppc64x.go
│   │       │       │       ├── syscall_linux_riscv64.go
│   │       │       │       ├── syscall_linux_s390x.go
│   │       │       │       ├── syscall_linux_sparc64.go
│   │       │       │       ├── syscall_netbsd.go
│   │       │       │       ├── syscall_netbsd_386.go
│   │       │       │       ├── syscall_netbsd_amd64.go
│   │       │       │       ├── syscall_netbsd_arm.go
│   │       │       │       ├── syscall_openbsd.go
│   │       │       │       ├── syscall_openbsd_386.go
│   │       │       │       ├── syscall_openbsd_amd64.go
│   │       │       │       ├── syscall_openbsd_arm.go
│   │       │       │       ├── syscall_solaris.go
│   │       │       │       ├── syscall_solaris_amd64.go
│   │       │       │       ├── syscall_unix.go
│   │       │       │       ├── syscall_unix_gc.go
│   │       │       │       ├── syscall_unix_gc_ppc64x.go
│   │       │       │       ├── timestruct.go
│   │       │       │       ├── types_aix.go
│   │       │       │       ├── types_darwin.go
│   │       │       │       ├── types_dragonfly.go
│   │       │       │       ├── types_freebsd.go
│   │       │       │       ├── types_netbsd.go
│   │       │       │       ├── types_openbsd.go
│   │       │       │       ├── types_solaris.go
│   │       │       │       ├── xattr_bsd.go
│   │       │       │       ├── zerrors_aix_ppc.go
│   │       │       │       ├── zerrors_aix_ppc64.go
│   │       │       │       ├── zerrors_darwin_386.go
│   │       │       │       ├── zerrors_darwin_amd64.go
│   │       │       │       ├── zerrors_darwin_arm.go
│   │       │       │       ├── zerrors_darwin_arm64.go
│   │       │       │       ├── zerrors_dragonfly_amd64.go
│   │       │       │       ├── zerrors_freebsd_386.go
│   │       │       │       ├── zerrors_freebsd_amd64.go
│   │       │       │       ├── zerrors_freebsd_arm.go
│   │       │       │       ├── zerrors_linux_386.go
│   │       │       │       ├── zerrors_linux_amd64.go
│   │       │       │       ├── zerrors_linux_arm.go
│   │       │       │       ├── zerrors_linux_arm64.go
│   │       │       │       ├── zerrors_linux_mips.go
│   │       │       │       ├── zerrors_linux_mips64.go
│   │       │       │       ├── zerrors_linux_mips64le.go
│   │       │       │       ├── zerrors_linux_mipsle.go
│   │       │       │       ├── zerrors_linux_ppc64.go
│   │       │       │       ├── zerrors_linux_ppc64le.go
│   │       │       │       ├── zerrors_linux_riscv64.go
│   │       │       │       ├── zerrors_linux_s390x.go
│   │       │       │       ├── zerrors_linux_sparc64.go
│   │       │       │       ├── zerrors_netbsd_386.go
│   │       │       │       ├── zerrors_netbsd_amd64.go
│   │       │       │       ├── zerrors_netbsd_arm.go
│   │       │       │       ├── zerrors_openbsd_386.go
│   │       │       │       ├── zerrors_openbsd_amd64.go
│   │       │       │       ├── zerrors_openbsd_arm.go
│   │       │       │       ├── zerrors_solaris_amd64.go
│   │       │       │       ├── zptrace386_linux.go
│   │       │       │       ├── zptracearm_linux.go
│   │       │       │       ├── zptracemips_linux.go
│   │       │       │       ├── zptracemipsle_linux.go
│   │       │       │       ├── zsyscall_aix_ppc.go
│   │       │       │       ├── zsyscall_aix_ppc64.go
│   │       │       │       ├── zsyscall_aix_ppc64_gc.go
│   │       │       │       ├── zsyscall_aix_ppc64_gccgo.go
│   │       │       │       ├── zsyscall_darwin_386.go
│   │       │       │       ├── zsyscall_darwin_amd64.go
│   │       │       │       ├── zsyscall_darwin_arm.go
│   │       │       │       ├── zsyscall_darwin_arm64.go
│   │       │       │       ├── zsyscall_dragonfly_amd64.go
│   │       │       │       ├── zsyscall_freebsd_386.go
│   │       │       │       ├── zsyscall_freebsd_amd64.go
│   │       │       │       ├── zsyscall_freebsd_arm.go
│   │       │       │       ├── zsyscall_linux_386.go
│   │       │       │       ├── zsyscall_linux_amd64.go
│   │       │       │       ├── zsyscall_linux_arm.go
│   │       │       │       ├── zsyscall_linux_arm64.go
│   │       │       │       ├── zsyscall_linux_mips.go
│   │       │       │       ├── zsyscall_linux_mips64.go
│   │       │       │       ├── zsyscall_linux_mips64le.go
│   │       │       │       ├── zsyscall_linux_mipsle.go
│   │       │       │       ├── zsyscall_linux_ppc64.go
│   │       │       │       ├── zsyscall_linux_ppc64le.go
│   │       │       │       ├── zsyscall_linux_riscv64.go
│   │       │       │       ├── zsyscall_linux_s390x.go
│   │       │       │       ├── zsyscall_linux_sparc64.go
│   │       │       │       ├── zsyscall_netbsd_386.go
│   │       │       │       ├── zsyscall_netbsd_amd64.go
│   │       │       │       ├── zsyscall_netbsd_arm.go
│   │       │       │       ├── zsyscall_openbsd_386.go
│   │       │       │       ├── zsyscall_openbsd_amd64.go
│   │       │       │       ├── zsyscall_openbsd_arm.go
│   │       │       │       ├── zsyscall_solaris_amd64.go
│   │       │       │       ├── zsysctl_openbsd_386.go
│   │       │       │       ├── zsysctl_openbsd_amd64.go
│   │       │       │       ├── zsysctl_openbsd_arm.go
│   │       │       │       ├── zsysnum_darwin_386.go
│   │       │       │       ├── zsysnum_darwin_amd64.go
│   │       │       │       ├── zsysnum_darwin_arm.go
│   │       │       │       ├── zsysnum_darwin_arm64.go
│   │       │       │       ├── zsysnum_dragonfly_amd64.go
│   │       │       │       ├── zsysnum_freebsd_386.go
│   │       │       │       ├── zsysnum_freebsd_amd64.go
│   │       │       │       ├── zsysnum_freebsd_arm.go
│   │       │       │       ├── zsysnum_linux_386.go
│   │       │       │       ├── zsysnum_linux_amd64.go
│   │       │       │       ├── zsysnum_linux_arm.go
│   │       │       │       ├── zsysnum_linux_arm64.go
│   │       │       │       ├── zsysnum_linux_mips.go
│   │       │       │       ├── zsysnum_linux_mips64.go
│   │       │       │       ├── zsysnum_linux_mips64le.go
│   │       │       │       ├── zsysnum_linux_mipsle.go
│   │       │       │       ├── zsysnum_linux_ppc64.go
│   │       │       │       ├── zsysnum_linux_ppc64le.go
│   │       │       │       ├── zsysnum_linux_riscv64.go
│   │       │       │       ├── zsysnum_linux_s390x.go
│   │       │       │       ├── zsysnum_linux_sparc64.go
│   │       │       │       ├── zsysnum_netbsd_386.go
│   │       │       │       ├── zsysnum_netbsd_amd64.go
│   │       │       │       ├── zsysnum_netbsd_arm.go
│   │       │       │       ├── zsysnum_openbsd_386.go
│   │       │       │       ├── zsysnum_openbsd_amd64.go
│   │       │       │       ├── zsysnum_openbsd_arm.go
│   │       │       │       ├── ztypes_aix_ppc.go
│   │       │       │       ├── ztypes_aix_ppc64.go
│   │       │       │       ├── ztypes_darwin_386.go
│   │       │       │       ├── ztypes_darwin_amd64.go
│   │       │       │       ├── ztypes_darwin_arm.go
│   │       │       │       ├── ztypes_darwin_arm64.go
│   │       │       │       ├── ztypes_dragonfly_amd64.go
│   │       │       │       ├── ztypes_freebsd_386.go
│   │       │       │       ├── ztypes_freebsd_amd64.go
│   │       │       │       ├── ztypes_freebsd_arm.go
│   │       │       │       ├── ztypes_linux_386.go
│   │       │       │       ├── ztypes_linux_amd64.go
│   │       │       │       ├── ztypes_linux_arm.go
│   │       │       │       ├── ztypes_linux_arm64.go
│   │       │       │       ├── ztypes_linux_mips.go
│   │       │       │       ├── ztypes_linux_mips64.go
│   │       │       │       ├── ztypes_linux_mips64le.go
│   │       │       │       ├── ztypes_linux_mipsle.go
│   │       │       │       ├── ztypes_linux_ppc64.go
│   │       │       │       ├── ztypes_linux_ppc64le.go
│   │       │       │       ├── ztypes_linux_riscv64.go
│   │       │       │       ├── ztypes_linux_s390x.go
│   │       │       │       ├── ztypes_linux_sparc64.go
│   │       │       │       ├── ztypes_netbsd_386.go
│   │       │       │       ├── ztypes_netbsd_amd64.go
│   │       │       │       ├── ztypes_netbsd_arm.go
│   │       │       │       ├── ztypes_openbsd_386.go
│   │       │       │       ├── ztypes_openbsd_amd64.go
│   │       │       │       ├── ztypes_openbsd_arm.go
│   │       │       │       └── ztypes_solaris_amd64.go
│   │       │       └── text/
│   │       │           ├── AUTHORS
│   │       │           ├── CONTRIBUTORS
│   │       │           ├── LICENSE
│   │       │           ├── PATENTS
│   │       │           ├── collate/
│   │       │           │   ├── build/
│   │       │           │   │   ├── builder.go
│   │       │           │   │   ├── colelem.go
│   │       │           │   │   ├── contract.go
│   │       │           │   │   ├── order.go
│   │       │           │   │   ├── table.go
│   │       │           │   │   └── trie.go
│   │       │           │   ├── collate.go
│   │       │           │   ├── index.go
│   │       │           │   ├── maketables.go
│   │       │           │   ├── option.go
│   │       │           │   ├── sort.go
│   │       │           │   └── tables.go
│   │       │           ├── internal/
│   │       │           │   ├── colltab/
│   │       │           │   │   ├── collelem.go
│   │       │           │   │   ├── colltab.go
│   │       │           │   │   ├── contract.go
│   │       │           │   │   ├── iter.go
│   │       │           │   │   ├── numeric.go
│   │       │           │   │   ├── table.go
│   │       │           │   │   ├── trie.go
│   │       │           │   │   └── weighter.go
│   │       │           │   ├── gen/
│   │       │           │   │   ├── code.go
│   │       │           │   │   └── gen.go
│   │       │           │   ├── tag/
│   │       │           │   │   └── tag.go
│   │       │           │   ├── triegen/
│   │       │           │   │   ├── compact.go
│   │       │           │   │   ├── print.go
│   │       │           │   │   └── triegen.go
│   │       │           │   └── ucd/
│   │       │           │       └── ucd.go
│   │       │           ├── language/
│   │       │           │   ├── Makefile
│   │       │           │   ├── common.go
│   │       │           │   ├── coverage.go
│   │       │           │   ├── doc.go
│   │       │           │   ├── gen.go
│   │       │           │   ├── gen_common.go
│   │       │           │   ├── gen_index.go
│   │       │           │   ├── go1_1.go
│   │       │           │   ├── go1_2.go
│   │       │           │   ├── index.go
│   │       │           │   ├── language.go
│   │       │           │   ├── lookup.go
│   │       │           │   ├── match.go
│   │       │           │   ├── parse.go
│   │       │           │   ├── tables.go
│   │       │           │   └── tags.go
│   │       │           ├── secure/
│   │       │           │   └── bidirule/
│   │       │           │       ├── bidirule.go
│   │       │           │       ├── bidirule10.0.0.go
│   │       │           │       └── bidirule9.0.0.go
│   │       │           ├── transform/
│   │       │           │   └── transform.go
│   │       │           └── unicode/
│   │       │               ├── bidi/
│   │       │               │   ├── bidi.go
│   │       │               │   ├── bracket.go
│   │       │               │   ├── core.go
│   │       │               │   ├── gen.go
│   │       │               │   ├── gen_ranges.go
│   │       │               │   ├── gen_trieval.go
│   │       │               │   ├── prop.go
│   │       │               │   ├── tables10.0.0.go
│   │       │               │   ├── tables9.0.0.go
│   │       │               │   └── trieval.go
│   │       │               ├── cldr/
│   │       │               │   ├── base.go
│   │       │               │   ├── cldr.go
│   │       │               │   ├── collate.go
│   │       │               │   ├── decode.go
│   │       │               │   ├── makexml.go
│   │       │               │   ├── resolve.go
│   │       │               │   ├── slice.go
│   │       │               │   └── xml.go
│   │       │               ├── norm/
│   │       │               │   ├── composition.go
│   │       │               │   ├── forminfo.go
│   │       │               │   ├── input.go
│   │       │               │   ├── iter.go
│   │       │               │   ├── maketables.go
│   │       │               │   ├── normalize.go
│   │       │               │   ├── readwriter.go
│   │       │               │   ├── tables10.0.0.go
│   │       │               │   ├── tables9.0.0.go
│   │       │               │   ├── transform.go
│   │       │               │   ├── trie.go
│   │       │               │   └── triegen.go
│   │       │               └── rangetable/
│   │       │                   ├── gen.go
│   │       │                   ├── merge.go
│   │       │                   ├── rangetable.go
│   │       │                   ├── tables10.0.0.go
│   │       │                   └── tables9.0.0.go
│   │       └── gopkg.in/
│   │           └── yaml.v2/
│   │               ├── .travis.yml
│   │               ├── LICENSE
│   │               ├── LICENSE.libyaml
│   │               ├── NOTICE
│   │               ├── README.md
│   │               ├── apic.go
│   │               ├── decode.go
│   │               ├── emitterc.go
│   │               ├── encode.go
│   │               ├── go.mod
│   │               ├── parserc.go
│   │               ├── readerc.go
│   │               ├── resolve.go
│   │               ├── scannerc.go
│   │               ├── sorter.go
│   │               ├── writerc.go
│   │               ├── yaml.go
│   │               ├── yamlh.go
│   │               └── yamlprivateh.go
│   └── saas/
│       └── .gitkeep
└── saas/
    ├── .gitkeep
    ├── README.md
    ├── add_env.py
    ├── archive/
    │   ├── add_ee_env.py
    │   ├── add_env.py
    │   └── dashboard/
    │       ├── README.md
    │       ├── add_env_script.py
    │       ├── add_nav_script.py
    │       ├── dashboard-install.sh
    │       ├── dashboard.config
    │       ├── delete_nav_script.py
    │       └── saas_deploy_add.py
    ├── default_host_dashboard_dict.py
    ├── default_monitor_dashboard_dict.py
    ├── deploy.py
    ├── engine-server-script.py
    ├── init-ce-base.py
    ├── init-ce-devops.py
    ├── init-ce-monitor-zabbix.py
    ├── init-ce-monitor.py
    ├── init-ce-monitor_zabbix.py
    ├── init-ce-prometheus.py
    ├── init-ce-st2.py
    ├── init-ee-prometheus.py
    ├── init-llmops-ollama-script.py
    ├── init_cmdb_app_to_devops.py
    ├── init_work_order.py
    ├── invscript.py
    ├── invscript_proxy.py
    ├── opsany_dispatch.py
    ├── password-init.py
    ├── pipeline_batch_import.py
    ├── prom-pass.py
    ├── register_online_saas.py
    ├── reset_login_sort.py
    ├── sync-user-script.py
    ├── sync_proxy_hosts.py
    └── update-ce-st2.py
Download .txt
Showing preview only (8,234K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (103577 symbols across 1508 files)

FILE: install/conf/stackstorm/packs/opsany_core/actions/control_execute_command.py
  class ControlRunCommand (line 9) | class ControlRunCommand(base_action.OpsAnyCoreRestAPI):
    method run (line 10) | def run(self, host_list, shell_command):

FILE: install/conf/stackstorm/packs/opsany_core/actions/control_run_command.py
  class ControlRunCommand (line 9) | class ControlRunCommand(base_action.OpsAnyCoreRestAPI):
    method run (line 10) | def run(self, host_list, shell_command):

FILE: install/conf/stackstorm/packs/opsany_core/actions/control_run_script.py
  class ControlRunScript (line 10) | class ControlRunScript(base_action.OpsAnyCoreRestAPI):
    method run (line 13) | def run(self, host_list, script_url, script_arg="", timeout=1800):

FILE: install/conf/stackstorm/packs/opsany_core/actions/gitlab_clone_project.py
  class GitlabCloneProject (line 10) | class GitlabCloneProject(base_action.OpsAnyCoreRestAPI):
    method run (line 11) | def run(

FILE: install/conf/stackstorm/packs/opsany_core/actions/lib/base_action.py
  class OpsAnyCoreRestAPI (line 11) | class OpsAnyCoreRestAPI(Action):
    method __init__ (line 12) | def __init__(self, *args, **kwargs):
    method _get_request_id_status (line 22) | def _get_request_id_status(self, requests_id, retry=3):
    method get_return (line 31) | def get_return(self, requests_id):
    method run_shell (line 93) | def run_shell(self, host_list, command):
    method run_script (line 116) | def run_script(self, host_list, script_url, script_arg=None, timeout=1...
    method send_out_message (line 141) | def send_out_message(self, temp_id, subscribe_type, parameter, operato...
    method send_robot (line 167) | def send_robot(self, temp_id, parameter, robot_list, alert_info=None, ...
    method download_nexus_project (line 191) | def download_nexus_project(self, download_url):
    method post_file (line 213) | def post_file(self, host_list, file_url, file_path):
    method send_mail (line 237) | def send_mail(self, receiver, subject, text, text_type):
    method get_request_id_status (line 262) | def get_request_id_status(self, request_id):

FILE: install/conf/stackstorm/packs/opsany_core/actions/nexus_project.py
  class NexusProject (line 10) | class NexusProject(base_action.OpsAnyCoreRestAPI):
    method run (line 11) | def run(self, host_list, project_dir, download_url, timeout=600):

FILE: install/conf/stackstorm/packs/opsany_core/actions/send_mail.py
  class SendMail (line 10) | class SendMail(base_action.OpsAnyCoreRestAPI):
    method run (line 11) | def run(self, receiver, subject, text):

FILE: install/conf/stackstorm/packs/opsany_core/actions/send_message.py
  class SendMessage (line 10) | class SendMessage(base_action.OpsAnyCoreRestAPI):
    method run (line 11) | def run(self, name, message_title, message_info, task_name, notify_obj...

FILE: install/conf/stackstorm/packs/opsany_workflow/actions/demo.py
  class Demo (line 3) | class Demo(Action):
    method run (line 4) | def run(self, name):

FILE: install/init/esb-init/esb_api_doc.sql
  type `esb_api_doc` (line 25) | CREATE TABLE `esb_api_doc` (

FILE: install/init/esb-init/esb_channel.sql
  type `esb_channel` (line 25) | CREATE TABLE `esb_channel` (

FILE: install/init/esb-init/esb_component_system.sql
  type `esb_component_system` (line 25) | CREATE TABLE `esb_component_system` (

FILE: install/init/esb-init/esb_function_controller.sql
  type `esb_function_controller` (line 25) | CREATE TABLE `esb_function_controller` (

FILE: install/init/import_script.py
  class OpsAnyApi (line 24) | class OpsAnyApi:
    method __init__ (line 25) | def __init__(self, paas_domain, username, password, env="prod"):
    method login (line 36) | def login(self, verify_code=""):
    method get_menu (line 58) | def get_menu(self, app_code):
    method get_script_default_group_id (line 71) | def get_script_default_group_id(self):
    method get_group_info (line 84) | def get_group_info(self, API):
    method get_task_default_group_id (line 98) | def get_task_default_group_id(self):
    method upload_file (line 110) | def upload_file(self, api, form_data, file_form):
    method import_info (line 122) | def import_info(self, api, data):
    method import_script (line 135) | def import_script(self, target_list):
    method get_control_server_default_group (line 162) | def get_control_server_default_group(self):
    method import_asset_collection (line 175) | def import_asset_collection(self, target_list):
    method import_patrol_template (line 191) | def import_patrol_template(self, target_list):
    method import_task (line 207) | def import_task(self, target_list):
  function get_target (line 241) | def get_target(target_path="", target_file="", file_type=".json"):
  function run (line 266) | def run(options):
  function add_parameter (line 296) | def add_parameter():

FILE: install/init/init_alert_rule.py
  class OpsAnyApi (line 45) | class OpsAnyApi:
    method __init__ (line 46) | def __init__(self, paas_domain, username, password, env="prod"):
    method login (line 59) | def login(self, verify_code=""):
    method init_alert_rule (line 82) | def init_alert_rule(self, prom, name, yml_str):
    method init_notify_policy (line 101) | def init_notify_policy(self, data):
    method get_alert_rule_list (line 117) | def get_alert_rule_list(self, target_path, file_type=".yml"):
  function run (line 141) | def run(domain, paas_username, paas_password, prom_name, notify_name, ta...
  function add_parameter (line 165) | def add_parameter():

FILE: install/init/init_dashboard.py
  class GrafanaBasicApi (line 11) | class GrafanaBasicApi:
    method __init__ (line 12) | def __init__(self, grafana_url, grafana_token="", username=None, passw...
    method create_or_update_dashboard (line 18) | def create_or_update_dashboard(self, dashboard):
    method get_dashboard_list (line 36) | def get_dashboard_list(self, target_path, file_type=".json"):
  function run (line 61) | def run(grafana_url, grafana_token, grafana_username=None, grafana_passw...
  function add_parameter (line 86) | def add_parameter():

FILE: install/init/init_metric_collect_plugin.py
  class OpsAnyApi (line 11) | class OpsAnyApi:
    method __init__ (line 12) | def __init__(self, paas_domain, username, password, env="prod"):
    method login (line 24) | def login(self, verify_code=""):
    method init_plugin (line 46) | def init_plugin(self, name, json_data):
    method get_plugin_list (line 61) | def get_plugin_list(self, target_path, file_type=".json"):
  function run (line 85) | def run(domain, paas_username, paas_password, target_path="./alert-rules"):
  function add_parameter (line 103) | def add_parameter():

FILE: install/init/opsany-paas.sql
  type `account_bktoken` (line 25) | CREATE TABLE `account_bktoken` (
  type `account_bkuser` (line 50) | CREATE TABLE `account_bkuser` (
  type `account_bkuser_groups` (line 85) | CREATE TABLE `account_bkuser_groups` (
  type `account_bkuser_user_permissions` (line 113) | CREATE TABLE `account_bkuser_user_permissions` (
  type `account_loignlog` (line 141) | CREATE TABLE `account_loignlog` (
  type `auth_group` (line 171) | CREATE TABLE `auth_group` (
  type `auth_group_permissions` (line 195) | CREATE TABLE `auth_group_permissions` (
  type `auth_permission` (line 223) | CREATE TABLE `auth_permission` (
  type `bkaccount_bkuser` (line 251) | CREATE TABLE `bkaccount_bkuser` (
  type `bkaccount_bkuser_groups` (line 284) | CREATE TABLE `bkaccount_bkuser_groups` (
  type `bkaccount_bkuser_user_permissions` (line 312) | CREATE TABLE `bkaccount_bkuser_user_permissions` (
  type `console_wx_bkuser_tmp_record` (line 340) | CREATE TABLE `console_wx_bkuser_tmp_record` (
  type `django_admin_log` (line 367) | CREATE TABLE `django_admin_log` (
  type `django_content_type` (line 400) | CREATE TABLE `django_content_type` (
  type `django_migrations` (line 426) | CREATE TABLE `django_migrations` (
  type `django_session` (line 452) | CREATE TABLE `django_session` (
  type `engine_app_envs` (line 477) | CREATE TABLE `engine_app_envs` (
  type `engine_app_event_logs` (line 507) | CREATE TABLE `engine_app_event_logs` (
  type `engine_app_events` (line 535) | CREATE TABLE `engine_app_events` (
  type `engine_app_tokens` (line 564) | CREATE TABLE `engine_app_tokens` (
  type `engine_apps` (line 592) | CREATE TABLE `engine_apps` (
  type `engine_clusters` (line 623) | CREATE TABLE `engine_clusters` (
  type `engine_hosting_ships` (line 649) | CREATE TABLE `engine_hosting_ships` (
  type `engine_servers` (line 681) | CREATE TABLE `engine_servers` (
  type `engine_third_servers` (line 715) | CREATE TABLE `engine_third_servers` (
  type `esb_api_doc` (line 743) | CREATE TABLE `esb_api_doc` (
  type `esb_api_doc_feedback` (line 775) | CREATE TABLE `esb_api_doc_feedback` (
  type `esb_app_account` (line 803) | CREATE TABLE `esb_app_account` (
  type `esb_app_component_perm` (line 830) | CREATE TABLE `esb_app_component_perm` (
  type `esb_buffet_component` (line 858) | CREATE TABLE `esb_buffet_component` (
  type `esb_buffet_component_mapping` (line 901) | CREATE TABLE `esb_buffet_component_mapping` (
  type `esb_channel` (line 932) | CREATE TABLE `esb_channel` (
  type `esb_component_system` (line 975) | CREATE TABLE `esb_component_system` (
  type `esb_function_controller` (line 1008) | CREATE TABLE `esb_function_controller` (
  type `esb_system_doc_category` (line 1038) | CREATE TABLE `esb_system_doc_category` (
  type `esb_user_auth_token` (line 1064) | CREATE TABLE `esb_user_auth_token` (
  type `esb_wxmp_access_token` (line 1093) | CREATE TABLE `esb_wxmp_access_token` (
  type `login_bklog` (line 1119) | CREATE TABLE `login_bklog` (
  type `login_bkrole` (line 1149) | CREATE TABLE `login_bkrole` (
  type `login_bktoken` (line 1174) | CREATE TABLE `login_bktoken` (
  type `login_bkuser_role` (line 1200) | CREATE TABLE `login_bkuser_role` (
  type `login_userinfo` (line 1230) | CREATE TABLE `login_userinfo` (
  type `paas_app` (line 1259) | CREATE TABLE `paas_app` (
  type `paas_app_desktop_settings` (line 1306) | CREATE TABLE `paas_app_desktop_settings` (
  type `paas_app_developer` (line 1331) | CREATE TABLE `paas_app_developer` (
  type `paas_app_envvars` (line 1359) | CREATE TABLE `paas_app_envvars` (
  type `paas_app_secureinfo` (line 1387) | CREATE TABLE `paas_app_secureinfo` (
  type `paas_apptags` (line 1421) | CREATE TABLE `paas_apptags` (
  type `paas_release_record` (line 1449) | CREATE TABLE `paas_release_record` (
  type `paas_release_useroperaterecord` (line 1488) | CREATE TABLE `paas_release_useroperaterecord` (
  type `paas_release_version` (line 1517) | CREATE TABLE `paas_release_version` (
  type `paas_release_versiondetail` (line 1548) | CREATE TABLE `paas_release_versiondetail` (
  type `paas_resources` (line 1575) | CREATE TABLE `paas_resources` (
  type `paas_saas_app` (line 1606) | CREATE TABLE `paas_saas_app` (
  type `paas_saas_app_version` (line 1633) | CREATE TABLE `paas_saas_app_version` (
  type `paas_saas_upload_file` (line 1655) | CREATE TABLE `paas_saas_upload_file` (
  type `paas_usefullinks` (line 1675) | CREATE TABLE `paas_usefullinks` (
  type `paas_userapps` (line 1704) | CREATE TABLE `paas_userapps` (
  type `paas_usersettings` (line 1729) | CREATE TABLE `paas_usersettings` (

FILE: install/opsany_dispatch.py
  class SendAlertToOpsAny (line 19) | class SendAlertToOpsAny:
    method __init__ (line 21) | def __init__(self, opsany_url, app_code, app_secret):
    method send_out_message (line 26) | def send_out_message(self, parameter, operator, temp_id, subscribe_typ...
    method send (line 51) | def send(self, alert_sendto, alert_subject, alert_message):
  function main (line 60) | def main():

FILE: install/password-init.py
  class BkApi (line 20) | class BkApi:
    method __init__ (line 21) | def __init__(self, paas_domain, username, password, verify_code=""):
    method login (line 30) | def login(self, verify_code=""):
    method set_new_password (line 53) | def set_new_password(self, password):
  function add_parameter (line 72) | def add_parameter():

FILE: opsany-mcp-server/opsanymcp/api/__init__.py
  function get_opsany_api (line 24) | def get_opsany_api(name, config, username, api_token):

FILE: opsany-mcp-server/opsanymcp/api/base.py
  class BaseObj (line 6) | class BaseObj:
    method __init__ (line 7) | def __init__(self, name, config, username=None, api_token=None):
    method to_json (line 20) | def to_json(self, success=False, msg="", result=None, ensure_ascii=Fal...
    method run (line 24) | def run(self, arguments: dict):

FILE: opsany-mcp-server/opsanymcp/api/cmdb_api.py
  class CMDBApi (line 5) | class CMDBApi(BaseObj):
    method opsany_cmdb_api_resources (line 10) | def opsany_cmdb_api_resources(self, **kwargs):
    method opsany_cmdb_get_resource_fields (line 82) | def opsany_cmdb_get_resource_fields(self, **kwargs):
    method opsany_cmdb_get_resource (line 125) | def opsany_cmdb_get_resource(self, **kwargs):

FILE: opsany-mcp-server/opsanymcp/api/control_api.py
  class ControlApi (line 5) | class ControlApi(BaseObj):
    method opsany_control_get_managed_host_list (line 8) | def opsany_control_get_managed_host_list(self, **kwargs):

FILE: opsany-mcp-server/opsanymcp/api/job_api.py
  class JobApi (line 5) | class JobApi(BaseObj):
    method opsany_job_get_tool_market_list (line 12) | def opsany_job_get_tool_market_list(self, **kwargs):
    method opsany_job_get_job_list (line 103) | def opsany_job_get_job_list(self, **kwargs):
    method opsany_job_get_script_list (line 167) | def opsany_job_get_script_list(self, **kwargs):
    method opsany_job_run_job_by_id (line 215) | def opsany_job_run_job_by_id(self, **kwargs):
    method opsany_job_run_script_by_id (line 224) | def opsany_job_run_script_by_id(self, **kwargs):
    method opsany_job_run_script_by_script (line 251) | def opsany_job_run_script_by_script(self, **kwargs):
    method opsany_job_get_run_result_by_log_id (line 286) | def opsany_job_get_run_result_by_log_id(self, **kwargs):

FILE: opsany-mcp-server/opsanymcp/api/monitor_api.py
  class MonitorApi (line 5) | class MonitorApi(BaseObj):
    method opsany_monitor_alert_info (line 8) | def opsany_monitor_alert_info(self, **kwargs):

FILE: opsany-mcp-server/opsanymcp/api/rbac_api.py
  class RbacApi (line 5) | class RbacApi(BaseObj):
    method opsany_rbac_get_or_search_all_user (line 33) | def opsany_rbac_get_or_search_all_user(self, **kwarg):
    method opsany_rbac_get_my_user_info (line 71) | def opsany_rbac_get_my_user_info(self, **kwarg):

FILE: opsany-mcp-server/opsanymcp/api/workbench_api.py
  class WorkbenchApi (line 5) | class WorkbenchApi(BaseObj):
    method opsany_workbench_work_order_inst (line 8) | def opsany_workbench_work_order_inst(self, **kwargs):

FILE: opsany-mcp-server/opsanymcp/constants.py
  class APIEndpoints (line 10) | class APIEndpoints:

FILE: opsany-mcp-server/opsanymcp/libs.py
  class Request (line 15) | class Request:
    method __init__ (line 16) | def __init__(self, config, username, api_token):
    method check_user (line 30) | def check_user(self):
    method _request (line 62) | def _request(self, url_path, method, params, body, headers=None, timeo...
  function load_yaml_config (line 93) | def load_yaml_config(config_path=None) -> tuple:
  function check_auth (line 124) | def check_auth(request, expected_token: Optional[str]) -> Optional[Respo...

FILE: opsany-mcp-server/server.py
  class ServerConfig (line 34) | class ServerConfig:
  class AuthenticatedPostMessageApp (line 41) | class AuthenticatedPostMessageApp:
    method __init__ (line 43) | def __init__(self, inner_app: ASGIApp, expected_token: Optional[str]):
    method __call__ (line 47) | async def __call__(self, scope: Scope, receive: Receive, send: Send):
    method _send_unauthorized (line 58) | async def _send_unauthorized(self, send: Send):
  class OpsAnyMCPServer (line 74) | class OpsAnyMCPServer:
    method __init__ (line 75) | def __init__(self, config: ServerConfig):
    method _register_handlers (line 81) | def _register_handlers(self):
  function main (line 102) | async def main():

FILE: opsany-mcp-server/tests/test_basic.py
  function test_config_loading (line 14) | def test_config_loading():
  function test_api_classes (line 37) | def test_api_classes(config):
  function main (line 67) | def main():

FILE: opsany-mcp-server/tests/test_mcp_server.py
  function test_mcp_server (line 10) | async def test_mcp_server():

FILE: opsany-mcp-server/tests/test_server_logic.py
  function test_server_logic (line 15) | async def test_server_logic():

FILE: opsany-mcp-server/tests/test_server_startup.py
  function test_server_startup (line 14) | async def test_server_startup():

FILE: opsctl/opsanyctl/api/base.py
  class BaseObj (line 4) | class BaseObj:
    method __init__ (line 5) | def __init__(self, config):

FILE: opsctl/opsanyctl/api/fields.py
  class ResourceFields (line 5) | class ResourceFields(BaseObj):
    method get_resource_field (line 6) | def get_resource_field(self, resource):

FILE: opsctl/opsanyctl/api/resource.py
  class Resource (line 7) | class Resource(BaseObj):
    method get_resource (line 8) | def get_resource(self, resource, resource_id, search, fields, page=1, ...

FILE: opsctl/opsanyctl/api/resource_type.py
  class ResourceType (line 5) | class ResourceType(BaseObj):
    method get_resources_type (line 6) | def get_resources_type(self, output=None, limit=100, default_short=None):

FILE: opsctl/opsanyctl/libs.py
  class Request (line 15) | class Request:
    method __init__ (line 16) | def __init__(self, config):
    method _request (line 23) | def _request(self, url_path, method, params, body, headers=None, timeo...
  function load_yaml_config (line 45) | def load_yaml_config() -> tuple:
  function check_command (line 70) | def check_command(supported_commands):

FILE: opsctl/opsanyctl/main.py
  function config (line 72) | def config():
  function api_resources (line 84) | def api_resources(
  function res (line 117) | def res(
  function get (line 134) | def get(

FILE: opsctl/tests/test.py
  function get_close_matches (line 5) | def get_close_matches(word, possibilities, n=3, cutoff=0.6):

FILE: paas-ce/paas/appengine/api/admin.py
  class BkServerAdmin (line 15) | class BkServerAdmin(admin.ModelAdmin):

FILE: paas-ce/paas/appengine/api/baseview.py
  class BaseView (line 17) | class BaseView(View):
    method dispatch (line 19) | def dispatch(self, request, *args, **kwargs):
  class AppView (line 29) | class AppView(BaseView):
    method dispatch (line 31) | def dispatch(self, request, *args, **kwargs):
  class AgentView (line 55) | class AgentView(BaseView):
    method dispatch (line 56) | def dispatch(self, request, *args, **kwargs):

FILE: paas-ce/paas/appengine/api/deployment.py
  class DeployController (line 19) | class DeployController(object):
    method __init__ (line 21) | def __init__(self, bk_app, mode, deploy_config):
    method _init_envs (line 26) | def _init_envs(self):
    method _set_envs (line 30) | def _set_envs(self, envs):
    method online (line 37) | def online(self):
    method _assign_servers (line 67) | def _assign_servers(self):
    method _use_third_service (line 81) | def _use_third_service(self):
    method _apply_third_service (line 88) | def _apply_third_service(self, service_name):
    method offline (line 93) | def offline(self):
    method _request (line 108) | def _request(self, bk_servers, handle):
    method _fail_bk_app_event (line 128) | def _fail_bk_app_event(self, message):

FILE: paas-ce/paas/appengine/api/forms.py
  class AgentRegisterForm (line 12) | class AgentRegisterForm(forms.Form):
  class AppInitForm (line 19) | class AppInitForm(forms.Form):
  class AppEventLogsForm (line 25) | class AppEventLogsForm(forms.Form):
  class ServiceServerRegisterForm (line 31) | class ServiceServerRegisterForm(forms.Form):
  class AgentServerRegisterForm (line 35) | class AgentServerRegisterForm(forms.Form):

FILE: paas-ce/paas/appengine/api/models.py
  class BkApp (line 23) | class BkApp(models.Model):
    method token (line 34) | def token(self):
    method app_envs (line 38) | def app_envs(self):
    method serializer_data (line 45) | def serializer_data(self):
    class Meta (line 57) | class Meta:
  class BkAppToken (line 63) | class BkAppToken(models.Model):
    class Meta (line 69) | class Meta:
  class BkServer (line 75) | class BkServer(models.Model):
    class Meta (line 90) | class Meta:
  class BkHostingShip (line 97) | class BkHostingShip(models.Model):
    class Meta (line 105) | class Meta:
    method __str__ (line 110) | def __str__(self):
  class BkAppEnv (line 114) | class BkAppEnv(models.Model):
    class Meta (line 122) | class Meta:
  class BkAppEvent (line 128) | class BkAppEvent(models.Model):
    method logs (line 137) | def logs(self):
    method serializer_data (line 144) | def serializer_data(self):
    class Meta (line 152) | class Meta:
  class BkAppEventLog (line 158) | class BkAppEventLog(models.Model):
    class Meta (line 165) | class Meta:
    method __str__ (line 170) | def __str__(self):
  class ThirdServer (line 174) | class ThirdServer(models.Model):
    method server_data (line 184) | def server_data(self):
    class Meta (line 190) | class Meta:

FILE: paas-ce/paas/appengine/api/response.py
  class FailJsonResponse (line 12) | class FailJsonResponse(JsonResponse):
    method __init__ (line 13) | def __init__(self, message, **kwargs):
  class OKJsonResponse (line 30) | class OKJsonResponse(JsonResponse):
    method __init__ (line 31) | def __init__(self, **kwargs):

FILE: paas-ce/paas/appengine/api/servicemanager.py
  function update_or_create_rabbitmq_server (line 18) | def update_or_create_rabbitmq_server(**kwargs):  # can abstract ServiceS...
  function ServiceManagerFactory (line 34) | def ServiceManagerFactory(service_name):
  class ThirdServiceManager (line 40) | class ThirdServiceManager(object, metaclass=ABCMeta):
    method apply (line 42) | def apply(self, bk_app, mode, triggers):
    method health_check (line 46) | def health_check(self, server_id):
  class RabbitmqManager (line 50) | class RabbitmqManager(ThirdServiceManager):
    method apply (line 52) | def apply(self, bk_app, mode, triggers):
    method _apply_mq_res (line 77) | def _apply_mq_res(self, server_url, admin_account, user_account, vhost):
    method health_check (line 119) | def health_check(self, server_id):

FILE: paas-ce/paas/appengine/api/utils.py
  function get_server_category (line 13) | def get_server_category(mode):
  function has_active_server (line 17) | def has_active_server(category):
  function has_active_thirdserver (line 23) | def has_active_thirdserver(category):
  function agent_header (line 29) | def agent_header(sid, token):
  function check_agent_health (line 37) | def check_agent_health(bk_server):

FILE: paas-ce/paas/appengine/api/views.py
  class AgentViewSet (line 23) | class AgentViewSet(BaseView):
    method put (line 24) | def put(self, request, agent_ip):
    method post (line 48) | def post(self, request):
  class AgentActiveViewSet (line 71) | class AgentActiveViewSet(BaseView):
    method put (line 72) | def put(self, request, server_id):
  class AppViewSet (line 97) | class AppViewSet(AppView):
    method post (line 98) | def post(self, request):
    method get (line 120) | def get(self, request, app_code):
  class AppReleaseViewSet (line 128) | class AppReleaseViewSet(AppView):
    method post (line 129) | def post(self, request, app_code, mode):
    method delete (line 158) | def delete(self, request, app_code, mode):
  class AppLogsViewSet (line 172) | class AppLogsViewSet(AppView):
    method get (line 173) | def get(self, request, app_code, event_id):
  class AppEventLogsViewSet (line 182) | class AppEventLogsViewSet(AgentView):
    method post (line 184) | def post(self, request, app_code, event_id):
  class HealthCheckView (line 205) | class HealthCheckView(View):
    method _check_db (line 207) | def _check_db(self):
    method _check_agent (line 212) | def _check_agent(self):
    method get (line 220) | def get(self, request):
  class AgentHealthCheckView (line 238) | class AgentHealthCheckView(View):
    method get (line 239) | def get(self, request, server_id):
  class ServiceHealthCheckView (line 250) | class ServiceHealthCheckView(View):
    method get (line 251) | def get(self, request, server_name, server_id):
  class ServiceServerViewSet (line 261) | class ServiceServerViewSet(BaseView):
    method post (line 262) | def post(self, request, service_name):
    method put (line 297) | def put(self, request, service_name, server_id):
  class AgentRegistryView (line 327) | class AgentRegistryView(View):
    method post (line 329) | def post(self, request, *args, **kwargs):
    method get (line 355) | def get(self, request):
  class MqRegistryView (line 383) | class MqRegistryView(View):
    method post (line 384) | def post(self, request):

FILE: paas-ce/paas/appengine/common/exceptions.py
  class BadResponse (line 12) | class BadResponse(Exception):
    method __init__ (line 13) | def __init__(self, resp):
    method __str__ (line 21) | def __str__(self):

FILE: paas-ce/paas/appengine/common/http.py
  function http_request (line 18) | def http_request(method, url, desired_code=codes.ok, **kwargs):

FILE: paas-ce/paas/esb/apps/operate_perm/base.py
  class BasePerm (line 12) | class BasePerm(object):
    method __init__ (line 14) | def __init__(self, request, current_user):
    method get_user_allowed_cc_app (line 18) | def get_user_allowed_cc_app(self):

FILE: paas-ce/paas/esb/apps/operate_perm/cc_perm.py
  class CCPerm (line 13) | class CCPerm(BasePerm):
    method assert_app_perm (line 15) | def assert_app_perm(self, app_id):

FILE: paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/base.py
  class ComponentAPI (line 19) | class ComponentAPI(object):
    method __init__ (line 24) | def __init__(self, client, method, path, description='', default_retur...
    method get_url_with_api_ver (line 34) | def get_url_with_api_ver(self):
    method __call__ (line 39) | def __call__(self, *args, **kwargs):
    method _call (line 60) | def _call(self, *args, **kwargs):

FILE: paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/client.py
  class BaseComponentClient (line 32) | class BaseComponentClient(object):
    method setup_components (line 36) | def setup_components(cls, components):
    method __init__ (line 39) | def __init__(self, app_code=None, app_secret=None, common_args=None, u...
    method set_use_test_env (line 55) | def set_use_test_env(self, use_test_env):
    method set_language (line 62) | def set_language(self, language):
    method get_cur_language (line 65) | def get_cur_language(self):
    method set_bk_api_ver (line 72) | def set_bk_api_ver(self, bk_api_ver):
    method get_bk_api_ver (line 75) | def get_bk_api_ver(self):
    method merge_params_data_with_common_args (line 78) | def merge_params_data_with_common_args(self, method, params, data, ena...
    method request (line 94) | def request(self, method, url, params=None, data=None, **kwargs):
    method __getattr__ (line 109) | def __getattr__(self, key):
  class ComponentClientWithSignature (line 119) | class ComponentClientWithSignature(BaseComponentClient):
    method request (line 122) | def request(self, method, url, params=None, data=None, **kwargs):

FILE: paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/exceptions.py
  class ComponentBaseException (line 11) | class ComponentBaseException(Exception):
  class ComponentAPIException (line 15) | class ComponentAPIException(ComponentBaseException):
    method __init__ (line 18) | def __init__(self, api_obj, error_message, resp=None):

FILE: paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/shortcuts.py
  function get_client_by_request (line 22) | def get_client_by_request(request, **kwargs):
  function get_client_by_user (line 41) | def get_client_by_user(user, **kwargs):

FILE: paas-ce/paas/esb/apps/sdk_management/sdk_tmpl/blueking/component/utils.py
  function get_signature (line 17) | def get_signature(method, path, app_secret, params=None, data=None):

FILE: paas-ce/paas/esb/apps/sdk_management/utils.py
  class SDKGenerator (line 19) | class SDKGenerator(object):
    method __init__ (line 21) | def __init__(self, channels, target_dir=''):
    method get_target_dir (line 25) | def get_target_dir(self):
    method get_tmp_dir (line 28) | def get_tmp_dir(self):
    method generate_files_for_sdk (line 31) | def generate_files_for_sdk(self):
    method get_available_channels (line 36) | def get_available_channels(self, channels):
    method copy_tmpl_to_target_dir (line 48) | def copy_tmpl_to_target_dir(self):
    method generate_collections_py (line 58) | def generate_collections_py(self):
    method generate_apis_files (line 63) | def generate_apis_files(self):
    method get_collections_py_content (line 70) | def get_collections_py_content(self):
    method get_api_file_content (line 94) | def get_api_file_content(self, system_name, channels):
    method smart_system_name (line 113) | def smart_system_name(self, system_name):
    method write_content_to_file (line 118) | def write_content_to_file(self, content, file_path):
    method group_channels_by_api_ver (line 125) | def group_channels_by_api_ver(self, channels):

FILE: paas-ce/paas/esb/common/base_loggers.py
  class BasicRequestLogger (line 16) | class BasicRequestLogger(object):
    method write (line 21) | def write(self, request, response):

FILE: paas-ce/paas/esb/common/base_redis.py
  function get_redis_pool (line 31) | def get_redis_pool(redis_conf, redis_sentinel_conf):

FILE: paas-ce/paas/esb/common/base_utils.py
  class CustomJSONEncoder (line 22) | class CustomJSONEncoder(json.JSONEncoder):
    method default (line 31) | def default(self, o):
  function jsonize (line 44) | def jsonize(d):
  function str_bool (line 48) | def str_bool(value):
  class FancyDict (line 68) | class FancyDict(dict):
    method __getattr__ (line 69) | def __getattr__(self, key):
    method __setattr__ (line 75) | def __setattr__(self, key, value):
    method __delattr__ (line 78) | def __delattr__(self, key):
  function smart_lower (line 85) | def smart_lower(value):
  function smart_upper (line 98) | def smart_upper(value):
  function smart_str (line 108) | def smart_str(s, encoding='utf-8'):
  function smart_unicode (line 120) | def smart_unicode(s, encoding='utf-8'):
  function smart_unicode_v2 (line 129) | def smart_unicode_v2(s, encoding=None):
  function unique (line 158) | def unique(obj):
  function get_not_empty_value (line 166) | def get_not_empty_value(kwargs):
  function generate_token (line 182) | def generate_token(length=30, chars=UNICODE_ASCII_CHARACTER_SET):
  function get_client_ip (line 190) | def get_client_ip(request):
  function get_client_real_ip (line 207) | def get_client_real_ip(request):
  function get_request_params (line 217) | def get_request_params(request):
  function datetime_format (line 238) | def datetime_format(dt):
  function get_md5 (line 251) | def get_md5(src):
  function load_yaml (line 257) | def load_yaml(path):
  function read_file (line 262) | def read_file(path):
  function html_escape (line 267) | def html_escape(html, is_json=False):

FILE: paas-ce/paas/esb/common/base_validators.py
  class ValidationError (line 11) | class ValidationError(Exception):
  class BaseValidator (line 15) | class BaseValidator(object):
    method validate (line 20) | def validate(self, request):

FILE: paas-ce/paas/esb/common/bkerrors.py
  class ErrorCode (line 66) | class ErrorCode(object):
    method __init__ (line 71) | def __init__(self, code_name, code, reason, solution):
  class BkErrorCodes (line 78) | class BkErrorCodes(object):
    method __init__ (line 80) | def __init__(self):
    method __getattr__ (line 86) | def __getattr__(self, code_name):

FILE: paas-ce/paas/esb/common/django_utils.py
  class JsonResponse (line 17) | class JsonResponse(HttpResponse):
    method __init__ (line 18) | def __init__(self, content, *args, **kwargs):

FILE: paas-ce/paas/esb/common/djmysql_pool.py
  function patch_mysql (line 12) | def patch_mysql(pool_options={}):
  class ManagerProxy (line 27) | class ManagerProxy(object):
    method __init__ (line 28) | def __init__(self, pool):
    method __getattr__ (line 31) | def __getattr__(self, key):
    method connect (line 34) | def connect(self, *args, **kwargs):
    method dispose (line 37) | def dispose(self):

FILE: paas-ce/paas/esb/common/errors.py
  function wrap_error_code (line 15) | def wrap_error_code(code):
  class BaseException (line 22) | class BaseException(Exception):
  class RequestThirdPartyException (line 26) | class RequestThirdPartyException(BaseException):
    method __init__ (line 31) | def __init__(self, raw_exc, system_name, interface_name):
    method __str__ (line 36) | def __str__(self):
    method get_message (line 41) | def get_message(self):
  class RequestSSLException (line 50) | class RequestSSLException(BaseException):
    method __init__ (line 53) | def __init__(self, raw_exc, system_name, interface_name):
    method __str__ (line 58) | def __str__(self):
    method get_message (line 61) | def get_message(self):
  class TestHostNotFoundException (line 73) | class TestHostNotFoundException(BaseException):
  class RequestBlockedException (line 80) | class RequestBlockedException(BaseException):
  class APIError (line 87) | class APIError(BaseException):
    method __init__ (line 91) | def __init__(self, code):
    method __str__ (line 95) | def __str__(self):
    method format_prompt (line 99) | def format_prompt(self, prompt=None, replace=False, args=(), kwargs={}):
  class ErrorCode (line 118) | class ErrorCode(object):
    method __init__ (line 123) | def __init__(self, code_name, code, prompt, status=200):
    method as_dict (line 129) | def as_dict(self):
  class ErrorCodes (line 138) | class ErrorCodes(object):
    method __getattr__ (line 174) | def __getattr__(self, code_name):
  class RequestThirdPartyErrorCodes (line 179) | class RequestThirdPartyErrorCodes(object):
  class CommonAPIError (line 199) | class CommonAPIError(APIError):
    method __init__ (line 204) | def __init__(self, message, error_code=None, status=None):

FILE: paas-ce/paas/esb/common/forms.py
  function get_error_prompt (line 27) | def get_error_prompt(form):
  class BaseComponentForm (line 50) | class BaseComponentForm(forms.Form):
    method __init__ (line 56) | def __init__(self, *args, **kwargs):
    method _safe_get_field (line 64) | def _safe_get_field(self, field):
    method fancy_cleaned_data (line 68) | def fancy_cleaned_data(self):
    method clean (line 71) | def clean(self):
    method from_request (line 78) | def from_request(cls, request):
    method get_cleaned_data_or_error (line 83) | def get_cleaned_data_or_error(self, status=None):
    method full_clean (line 92) | def full_clean(self):
    method get_cleaned_data_when_exist (line 117) | def get_cleaned_data_when_exist(self, keys=[]):
  class ListField (line 138) | class ListField(Field):
    method __init__ (line 147) | def __init__(self, delimiter='', *args, **kwargs):
    method to_python_unicode (line 152) | def to_python_unicode(self, value):
    method to_python (line 158) | def to_python(self, value):
  class TypeCheckField (line 177) | class TypeCheckField(Field):
    method __init__ (line 188) | def __init__(self, promise_type=None, *args, **kwargs):
    method to_python (line 192) | def to_python(self, value):
  class DefaultBooleanField (line 205) | class DefaultBooleanField(Field):
    method __init__ (line 209) | def __init__(self, default=False, *args, **kwargs):
    method to_python (line 213) | def to_python(self, value):

FILE: paas-ce/paas/esb/components/bk/apis/bk_login/get_all_user.py
  class GetAllUser (line 19) | class GetAllUser(Component):
    class Form (line 71) | class Form(BaseComponentForm):
    method handle (line 75) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/bk_login/get_batch_user.py
  class GetBatchUser (line 20) | class GetBatchUser(Component):
    class Form (line 85) | class Form(BaseComponentForm):
    method handle (line 89) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/bk_login/get_batch_user_platform_role.py
  class GetBatchUserPlatformRole (line 20) | class GetBatchUserPlatformRole(Component):
    class Form (line 82) | class Form(BaseComponentForm):
    method handle (line 86) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/bk_login/get_user.py
  class GetUser (line 19) | class GetUser(Component):
    class Form (line 73) | class Form(BaseComponentForm):
      method clean (line 78) | def clean(self):
    method handle (line 85) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/bk_login/is_login.py
  class IsLogin (line 19) | class IsLogin(Component):
    class Form (line 62) | class Form(BaseComponentForm):
    method handle (line 65) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/bk_paas/get_app_info.py
  class GetAppInfo (line 17) | class GetAppInfo(Component):
    class Form (line 68) | class Form(BaseComponentForm):
      method clean (line 71) | def clean(self):
    method handle (line 76) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/add_app.py
  class AddApp (line 18) | class AddApp(Component):
    class Form (line 80) | class Form(BaseComponentForm):
      method clean (line 91) | def clean(self):
    method handle (line 105) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/add_module.py
  class AddModule (line 20) | class AddModule(Component):
    class Form (line 77) | class Form(BaseComponentForm):
      method clean (line 86) | def clean(self):
    method handle (line 98) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/add_plat_id.py
  class AddPlatId (line 18) | class AddPlatId(Component):
    class Form (line 64) | class Form(BaseComponentForm):
      method clean (line 67) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/add_set.py
  class AddSet (line 20) | class AddSet(Component):
    class Form (line 74) | class Form(BaseComponentForm):
      method clean (line 84) | def clean(self):
    method handle (line 102) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/clone_host_property.py
  class CloneHostProperty (line 18) | class CloneHostProperty(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 76) | def clean(self):
    method handle (line 85) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/del_app.py
  class DelApp (line 18) | class DelApp(Component):
    class Form (line 64) | class Form(BaseComponentForm):
      method clean (line 67) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/del_host_in_app.py
  class DelHostInApp (line 18) | class DelHostInApp(Component):
    class Form (line 65) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 76) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/del_module.py
  class DelModule (line 18) | class DelModule(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 70) | def clean(self):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/del_plat.py
  class DelPlat (line 18) | class DelPlat(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 72) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/del_set.py
  class DelSet (line 18) | class DelSet(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 70) | def clean(self):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/del_set_host.py
  class DelSetHost (line 18) | class DelSetHost(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 70) | def clean(self):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/edit_app.py
  class EditApp (line 18) | class EditApp(Component):
    class Form (line 73) | class Form(BaseComponentForm):
      method clean (line 83) | def clean(self):
    method handle (line 105) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/enter_ip.py
  class EnterIp (line 18) | class EnterIp(Component):
    class Form (line 73) | class Form(BaseComponentForm):
      method clean (line 81) | def clean(self):
    method handle (line 92) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_app_agent_status.py
  class GetAppAgentStatus (line 17) | class GetAppAgentStatus(Component):
    class Form (line 100) | class Form(BaseComponentForm):
      method clean (line 105) | def clean(self):
    method handle (line 108) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_app_by_id.py
  class GetAppById (line 17) | class GetAppById(Component):
    class Form (line 103) | class Form(BaseComponentForm):
      method clean (line 106) | def clean(self):
    method handle (line 112) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_app_by_user.py
  class GetAppByUser (line 15) | class GetAppByUser(Component):
    class Form (line 115) | class Form(BaseComponentForm):
      method clean (line 119) | def clean(self):
    method handle (line 125) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_app_by_user_role.py
  class GetAppByUserRole (line 15) | class GetAppByUserRole(Component):
    class Form (line 79) | class Form(BaseComponentForm):
      method clean (line 82) | def clean(self):
    method handle (line 88) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_app_host_list.py
  class GetAppHostList (line 17) | class GetAppHostList(Component):
    class Form (line 86) | class Form(BaseComponentForm):
      method clean (line 89) | def clean(self):
    method handle (line 95) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_app_list.py
  class GetAppList (line 14) | class GetAppList(Component):
    method handle (line 75) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_content_by_customer_group_id.py
  class GetContentByCustomerGroupId (line 17) | class GetContentByCustomerGroupId(Component):
    class Form (line 28) | class Form(BaseComponentForm):
      method clean (line 35) | def clean(self):
    method handle (line 45) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_customer_group_list.py
  class GetCustomerGroupList (line 17) | class GetCustomerGroupList(Component):
    class Form (line 28) | class Form(BaseComponentForm):
      method clean (line 32) | def clean(self):
    method handle (line 39) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_git_server_ip.py
  class GetGitServerIp (line 14) | class GetGitServerIp(Component):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_host_by_company_id.py
  class GetHostByCompanyId (line 17) | class GetHostByCompanyId(Component):
    class Form (line 77) | class Form(BaseComponentForm):
      method clean (line 82) | def clean(self):
    method handle (line 90) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_host_company_id.py
  class GetHostCompanyId (line 15) | class GetHostCompanyId(Component):
    class Form (line 82) | class Form(BaseComponentForm):
      method clean (line 85) | def clean(self):
    method handle (line 91) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_host_list_by_field.py
  class GetHostListByField (line 17) | class GetHostListByField(Component):
    class Form (line 82) | class Form(BaseComponentForm):
      method clean (line 86) | def clean(self):
    method handle (line 93) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_host_list_by_ip.py
  class GetHostListByIp (line 17) | class GetHostListByIp(Component):
    class Form (line 88) | class Form(BaseComponentForm):
      method clean (line 92) | def clean(self):
    method handle (line 99) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_hosts_by_property.py
  class GetHostsByProperty (line 17) | class GetHostsByProperty(Component):
    class Form (line 75) | class Form(BaseComponentForm):
      method clean (line 82) | def clean(self):
    method handle (line 92) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_ip_and_proxy_by_company.py
  class GetIpAndProxyByCompany (line 18) | class GetIpAndProxyByCompany(Component):
    class Form (line 75) | class Form(BaseComponentForm):
      method clean (line 80) | def clean(self):
    method handle (line 88) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_module_host_list.py
  class GetModuleHostList (line 17) | class GetModuleHostList(Component):
    class Form (line 90) | class Form(BaseComponentForm):
      method clean (line 94) | def clean(self):
    method handle (line 101) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_modules.py
  class GetModules (line 17) | class GetModules(Component):
    class Form (line 77) | class Form(BaseComponentForm):
      method clean (line 80) | def clean(self):
    method handle (line 86) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_modules_by_property.py
  class GetModulesByProperty (line 17) | class GetModulesByProperty(Component):
    class Form (line 69) | class Form(BaseComponentForm):
      method clean (line 75) | def clean(self):
    method handle (line 84) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_plat_id.py
  class GetPlatId (line 15) | class GetPlatId(Component):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_proc_config_instance_status.py
  class GetProcConfigInstanceStatus (line 17) | class GetProcConfigInstanceStatus(Component):
    class Form (line 76) | class Form(BaseComponentForm):
      method clean (line 80) | def clean(self):
    method handle (line 86) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_process_port_by_app_id.py
  class GetProcessPortByAppId (line 17) | class GetProcessPortByAppId(Component):
    class Form (line 95) | class Form(BaseComponentForm):
      method clean (line 98) | def clean(self):
    method handle (line 104) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_process_port_by_ip.py
  class GetProcessPortByIp (line 15) | class GetProcessPortByIp(Component):
    class Form (line 83) | class Form(BaseComponentForm):
      method clean (line 86) | def clean(self):
    method handle (line 92) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_property_list.py
  class GetPropertyList (line 18) | class GetPropertyList(Component):
    class Form (line 74) | class Form(BaseComponentForm):
      method clean (line 78) | def clean(self):
    method handle (line 85) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_set_host_list.py
  class GetSetHostList (line 17) | class GetSetHostList(Component):
    class Form (line 89) | class Form(BaseComponentForm):
      method clean (line 93) | def clean(self):
    method handle (line 100) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_set_property.py
  class GetSetProperty (line 14) | class GetSetProperty(Component):
    method handle (line 66) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_sets_by_property.py
  class GetSetsByProperty (line 17) | class GetSetsByProperty(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 75) | def clean(self):
    method handle (line 83) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/get_topo_tree_by_app_id.py
  class GetTopoTreeByAppId (line 17) | class GetTopoTreeByAppId(Component):
    class Form (line 115) | class Form(BaseComponentForm):
      method clean (line 118) | def clean(self):
    method handle (line 124) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/toolkit/tools.py
  class CCClient (line 19) | class CCClient(object):
    method __init__ (line 21) | def __init__(self, component):
    method request (line 29) | def request(self, method, host, path, params=None, data=None, headers=...
    method post_request (line 37) | def post_request(self, host, path, data=None, headers_json=True, **kwa...
    method verify_app_can_use_superadmin (line 64) | def verify_app_can_use_superadmin(self):
  class CmdbFunctionControllerClient (line 72) | class CmdbFunctionControllerClient(FunctionControllerClient):
    method is_allowed_use_superadmin (line 75) | def is_allowed_use_superadmin(cls, app_code):

FILE: paas-ce/paas/esb/components/bk/apis/cc/update_custom_property.py
  class UpdateCustomProperty (line 20) | class UpdateCustomProperty(Component):
    class Form (line 72) | class Form(BaseComponentForm):
      method clean (line 77) | def clean(self):
    method handle (line 85) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/update_gse_proxy_status.py
  class UpdateGseProxyStatus (line 18) | class UpdateGseProxyStatus(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 76) | def clean(self):
    method handle (line 85) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/update_host_by_app_id.py
  class UpdateHostByAppId (line 19) | class UpdateHostByAppId(Component):
    class Form (line 81) | class Form(BaseComponentForm):
      method clean (line 86) | def clean(self):
    class ProxyForm (line 97) | class ProxyForm(BaseComponentForm):
      method clean (line 101) | def clean(self):
    method handle (line 107) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/update_host_info.py
  class UpdateHostInfo (line 20) | class UpdateHostInfo(Component):
    class Form (line 75) | class Form(BaseComponentForm):
      method clean (line 81) | def clean(self):
    method handle (line 90) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/update_host_module.py
  class UpdateHostModule (line 18) | class UpdateHostModule(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 76) | def clean(self):
    method handle (line 85) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/update_host_plat.py
  class UpdateHostPlat (line 18) | class UpdateHostPlat(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 76) | def clean(self):
    method handle (line 85) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/update_module_property.py
  class UpdateModuleProperty (line 18) | class UpdateModuleProperty(Component):
    class Form (line 72) | class Form(BaseComponentForm):
      method clean (line 80) | def clean(self):
    method handle (line 92) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/update_proc_config_instance.py
  class UpdateProcConfigInstance (line 18) | class UpdateProcConfigInstance(Component):
    class Form (line 78) | class Form(BaseComponentForm):
      method clean (line 82) | def clean(self):
    method handle (line 89) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/update_set_property.py
  class UpdateSetProperty (line 18) | class UpdateSetProperty(Component):
    class Form (line 74) | class Form(BaseComponentForm):
      method clean (line 85) | def clean(self):
    method handle (line 100) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/cc/update_set_service_status.py
  class UpdateSetServiceStatus (line 18) | class UpdateSetServiceStatus(Component):
    class Form (line 68) | class Form(BaseComponentForm):
      method clean (line 73) | def clean(self):
    method handle (line 81) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/fta/fta_component.py
  class FtaComponent (line 17) | class FtaComponent(BaseComponent, SetupConfMixin):
    method handle (line 21) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/fta/http_relay.py
  class HttpRelay (line 17) | class HttpRelay(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean_kwargs (line 81) | def clean_kwargs(self):
    method handle (line 84) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/fta/imap_relay.py
  class ImapRelay (line 18) | class ImapRelay(Component):
    class Form (line 71) | class Form(BaseComponentForm):
      method clean_before (line 94) | def clean_before(self):
      method clean_since (line 102) | def clean_since(self):
    method handle (line 110) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apis/fta/toolkit/imap.py
  class EMail (line 27) | class EMail(dict):
    method __getattr__ (line 30) | def __getattr__(self, attr):
    method __init__ (line 33) | def __init__(self, uid, message, criteria=None, charset="utf-8"):
    method to_dict (line 46) | def to_dict(self):
    method decode (line 59) | def decode(cls, content, charset=None):
    method _get_payload (line 67) | def _get_payload(cls, message, charset=None):
    method refresh (line 84) | def refresh(self, message, criteria=None):
  function contain_one (line 115) | def contain_one(content, patterns):
  class MailPoller (line 122) | class MailPoller(object):
    method __init__ (line 126) | def __init__(self, email, password, imap_host, imap_port, secure=False):
    method imap_client (line 135) | def imap_client(self):
    method noop (line 150) | def noop(self):
    method select (line 154) | def select(self, mailbox="INBOX"):
    method search (line 157) | def search(self, charset=None, unseen=None, before=None, since=None, s...
    method filter (line 174) | def filter(self, mails, sent_from=None, sent_to=None, subject=None, be...
    method fetch_header (line 196) | def fetch_header(self, mails):
    method fetch (line 200) | def fetch(self, mails, criteria=None):
    method iter_fetch_chunks (line 214) | def iter_fetch_chunks(self, mails, chunks=100, criteria=None):
    method fetch_by (line 229) | def fetch_by(self, charset=None, unseen=None, before=None, since=None,...

FILE: paas-ce/paas/esb/components/bk/apis/fta/toolkit/tools.py
  class HttpClient (line 15) | class HttpClient(object):
    method request (line 17) | def request(self, method, url, **kwargs):
  class IMAPClient (line 30) | class IMAPClient(object):
    method __init__ (line 32) | def __init__(self, email, password, imap_host, imap_port, secure=False):
    method request (line 35) | def request(self, charset=None, unseen=None, before=None, since=None, ...

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_login/get_all_users.py
  class GetAllUsers (line 19) | class GetAllUsers(Component):
    class Form (line 92) | class Form(BaseComponentForm):
    method handle (line 96) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_login/get_batch_users.py
  class GetBatchUsers (line 20) | class GetBatchUsers(Component):
    class Form (line 91) | class Form(BaseComponentForm):
    method handle (line 95) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_login/get_batch_users_platform_role.py
  class GetBatchUsersPlatformRole (line 20) | class GetBatchUsersPlatformRole(Component):
    class Form (line 84) | class Form(BaseComponentForm):
    method handle (line 88) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_login/get_user.py
  class GetUser (line 19) | class GetUser(Component):
    class Form (line 80) | class Form(BaseComponentForm):
    method handle (line 84) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_login/is_login.py
  class IsLogin (line 19) | class IsLogin(Component):
    class Form (line 60) | class Form(BaseComponentForm):
    method handle (line 63) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_login/toolkit/tools.py
  class LOGINClient (line 12) | class LOGINClient(object):
    method __init__ (line 14) | def __init__(self, http_client):
    method request (line 17) | def request(self, method, host, path, data=None, params=None):
    method post (line 28) | def post(self, host, path, data=None):
    method get (line 31) | def get(self, host, path, params=None):
    method format_result (line 34) | def format_result(self, result):

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_paas/create_app.py
  class CreateApp (line 22) | class CreateApp(Component):
    class Form (line 82) | class Form(BaseComponentForm):
      method clean (line 91) | def clean(self):
    method handle (line 100) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_paas/del_app.py
  class DelApp (line 22) | class DelApp(Component):
    class Form (line 69) | class Form(BaseComponentForm):
    method handle (line 72) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_paas/edit_app.py
  class EditApp (line 22) | class EditApp(Component):
    class Form (line 82) | class Form(BaseComponentForm):
      method clean (line 92) | def clean(self):
    method handle (line 102) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_paas/get_app_info.py
  class GetAppInfo (line 17) | class GetAppInfo(Component):
    class Form (line 69) | class Form(BaseComponentForm):
      method clean (line 73) | def clean(self):
    method handle (line 79) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_paas/modify_app_logo.py
  class ModifyAppLogo (line 22) | class ModifyAppLogo(Component):
    class Form (line 71) | class Form(BaseComponentForm):
    method handle (line 75) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/bk_paas/toolkit/tools.py
  class PAASClient (line 12) | class PAASClient(object):
    method __init__ (line 14) | def __init__(self, http_client):
    method request (line 17) | def request(self, method, host, path, data=None, params=None):
    method post (line 28) | def post(self, host, path, data=None):
    method get (line 31) | def get(self, host, path, params=None):
    method format_result (line 34) | def format_result(self, result):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/add_host_to_resource.py
  class AddHostToResource (line 19) | class AddHostToResource(Component):
    class Form (line 83) | class Form(BaseComponentForm):
      method clean (line 88) | def clean(self):
    method handle (line 91) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/bind_role_privilege.py
  class BindRolePrivilege (line 19) | class BindRolePrivilege(Component):
    class Form (line 88) | class Form(BaseComponentForm):
    method handle (line 94) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/cc_component.py
  class CcComponent (line 15) | class CcComponent(ConfComponent):
    method handle (line 22) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/create_business.py
  class CreateBusiness (line 19) | class CreateBusiness(Component):
    class Form (line 91) | class Form(BaseComponentForm):
      method clean (line 95) | def clean(self):
    method handle (line 100) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/create_custom_query.py
  class CreateCustomQuery (line 19) | class CreateCustomQuery(Component):
    class Form (line 99) | class Form(BaseComponentForm):
    method handle (line 104) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/create_module.py
  class CreateModule (line 19) | class CreateModule(Component):
    class Form (line 84) | class Form(BaseComponentForm):
      method clean (line 90) | def clean(self):
    method handle (line 96) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/create_set.py
  class CreateSet (line 19) | class CreateSet(Component):
    class Form (line 88) | class Form(BaseComponentForm):
      method clean (line 93) | def clean(self):
    method handle (line 99) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/delete_business.py
  class DeleteBusiness (line 17) | class DeleteBusiness(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 70) | def clean(self):
    method handle (line 75) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/delete_custom_query.py
  class DeleteCustomQuery (line 17) | class DeleteCustomQuery(Component):
    class Form (line 68) | class Form(BaseComponentForm):
    method handle (line 72) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/delete_host.py
  class DeleteHost (line 19) | class DeleteHost(Component):
    class Form (line 68) | class Form(BaseComponentForm):
      method clean (line 72) | def clean(self):
    method handle (line 78) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/delete_module.py
  class DeleteModule (line 17) | class DeleteModule(Component):
    class Form (line 70) | class Form(BaseComponentForm):
    method handle (line 75) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/delete_set.py
  class DeleteSet (line 17) | class DeleteSet(Component):
    class Form (line 67) | class Form(BaseComponentForm):
    method handle (line 71) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/get_custom_query_data.py
  class GetCustomQueryData (line 17) | class GetCustomQueryData(Component):
    class Form (line 115) | class Form(BaseComponentForm):
    method handle (line 121) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/get_custom_query_detail.py
  class GetCustomQueryDetail (line 17) | class GetCustomQueryDetail(Component):
    class Form (line 109) | class Form(BaseComponentForm):
    method handle (line 113) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/get_host_base_info.py
  class GetHostBaseInfo (line 17) | class GetHostBaseInfo(Component):
    class Form (line 88) | class Form(BaseComponentForm):
      method clean (line 92) | def clean(self):
    method handle (line 97) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/search_biz_inst_topo.py
  class SearchBizInstTopo (line 17) | class SearchBizInstTopo(Component):
    class Form (line 115) | class Form(BaseComponentForm):
      method clean (line 120) | def clean(self):
    method handle (line 126) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/search_business.py
  class SearchBusiness (line 19) | class SearchBusiness(Component):
    class Form (line 107) | class Form(BaseComponentForm):
      method clean (line 113) | def clean(self):
    method handle (line 119) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/search_custom_query.py
  class SearchCustomQuery (line 19) | class SearchCustomQuery(Component):
    class Form (line 129) | class Form(BaseComponentForm):
      method clean (line 135) | def clean(self):
    method handle (line 142) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/search_host.py
  class SearchHost (line 19) | class SearchHost(Component):
    class Form (line 262) | class Form(BaseComponentForm):
      method clean (line 269) | def clean(self):
    method handle (line 272) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/search_inst_by_object.py
  class SearchInstByObject (line 19) | class SearchInstByObject(Component):
    class Form (line 124) | class Form(BaseComponentForm):
      method clean (line 131) | def clean(self):
    method handle (line 137) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/search_module.py
  class SearchModule (line 19) | class SearchModule(Component):
    class Form (line 109) | class Form(BaseComponentForm):
      method clean (line 117) | def clean(self):
    method handle (line 123) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/search_set.py
  class SearchSet (line 19) | class SearchSet(Component):
    class Form (line 106) | class Form(BaseComponentForm):
      method clean (line 113) | def clean(self):
    method handle (line 119) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/toolkit/tools.py
  class CCClient (line 17) | class CCClient(object):
    method __init__ (line 19) | def __init__(self, component):
    method request (line 27) | def request(self, method, host, path, params=None, data=None, headers=...
    method get (line 40) | def get(self, host, path, params=None, headers={}, **kwargs):
    method post (line 44) | def post(self, host, path, data=None, headers={}, **kwargs):
    method put (line 48) | def put(self, host, path, data=None, headers={}, **kwargs):
    method delete (line 52) | def delete(self, host, path, data=None, headers={}, **kwargs):
    method format_response (line 56) | def format_response(self, response):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/transfer_host_module.py
  class TransferHostModule (line 19) | class TransferHostModule(Component):
    class Form (line 79) | class Form(BaseComponentForm):
    method handle (line 85) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/transfer_host_to_faultmodule.py
  class TransferHostToFaultmodule (line 19) | class TransferHostToFaultmodule(Component):
    class Form (line 73) | class Form(BaseComponentForm):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/transfer_host_to_idlemodule.py
  class TransferHostToIdlemodule (line 19) | class TransferHostToIdlemodule(Component):
    class Form (line 73) | class Form(BaseComponentForm):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/transfer_host_to_resourcemodule.py
  class TransferHostToResourcemodule (line 19) | class TransferHostToResourcemodule(Component):
    class Form (line 73) | class Form(BaseComponentForm):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/transfer_resourcehost_to_idlemodule.py
  class TransferResourcehostToIdlemodule (line 19) | class TransferResourcehostToIdlemodule(Component):
    class Form (line 73) | class Form(BaseComponentForm):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/update_business.py
  class UpdateBusiness (line 19) | class UpdateBusiness(Component):
    class Form (line 88) | class Form(BaseComponentForm):
      method clean (line 93) | def clean(self):
    method handle (line 98) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/update_custom_query.py
  class UpdateCustomQuery (line 19) | class UpdateCustomQuery(Component):
    class Form (line 90) | class Form(BaseComponentForm):
      method clean (line 96) | def clean(self):
    method handle (line 104) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/update_host.py
  class UpdateHost (line 17) | class UpdateHost(Component):
    class Form (line 79) | class Form(BaseComponentForm):
      method clean (line 83) | def clean(self):
    method handle (line 88) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/update_module.py
  class UpdateModule (line 19) | class UpdateModule(Component):
    class Form (line 84) | class Form(BaseComponentForm):
    method handle (line 90) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/update_object_topo_graphics.py
  class UpdateObjectTopoGraphics (line 19) | class UpdateObjectTopoGraphics(Component):
    class Form (line 104) | class Form(BaseComponentForm):
    method handle (line 110) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/cc/update_set.py
  class UpdateSet (line 19) | class UpdateSet(Component):
    class Form (line 83) | class Form(BaseComponentForm):
    method handle (line 88) | def handle(self):

FILE: paas-ce/paas/esb/components/bk/apisv2/sops/sops_component.py
  class SopsComponent (line 15) | class SopsComponent(ConfComponent):
    method handle (line 20) | def handle(self):

FILE: paas-ce/paas/esb/components/component.py
  class ApiChannelForAPIS (line 24) | class ApiChannelForAPIS(ApiChannel):
  class ESBApiChannelForAPIS (line 37) | class ESBApiChannelForAPIS(ApiChannel):
  class FTAApiChannelForAPIS (line 44) | class FTAApiChannelForAPIS(ApiChannel):
  class Component (line 51) | class Component(BaseComponent):
  class SetupConfMixin (line 56) | class SetupConfMixin(object):
    method setup_conf (line 58) | def setup_conf(self, conf):
    method set_host (line 63) | def set_host(self, host):
  class ConfComponent (line 72) | class ConfComponent(BaseComponent, SetupConfMixin):
    method get_request_info (line 75) | def get_request_info(self):
    method get_extra_param_fields (line 113) | def get_extra_param_fields(self):

FILE: paas-ce/paas/esb/components/esb_conf.py
  function _rel_path (line 25) | def _rel_path(x):

FILE: paas-ce/paas/esb/components/generic/apis/apm/get_app_service_group.py
  class GetAppServiceGroup (line 11) | class GetAppServiceGroup(Component):
    class Form (line 58) | class Form(BaseComponentForm):
      method clean (line 62) | def clean(self):
    method handle (line 66) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/apm/get_delay_of_service.py
  class GetDelayOfService (line 11) | class GetDelayOfService(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/apm/get_info_for_workbench.py
  class GetInfoForWorkbench (line 11) | class GetInfoForWorkbench(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/apm/get_service_check_alert_for_prom.py
  class GetServiceCheckAlertForProm (line 11) | class GetServiceCheckAlertForProm(Component):
    class Form (line 45) | class Form(BaseComponentForm):
      method clean (line 49) | def clean(self):
    method handle (line 53) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/apm/get_service_check_metric_apm.py
  class GetServiceCheckMetricApm (line 11) | class GetServiceCheckMetricApm(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 61) | def clean(self):
    method handle (line 65) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/apm/monitor_to_screen_api.py
  class MonitorToScreenApi (line 11) | class MonitorToScreenApi(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 68) | def clean(self):
    method handle (line 72) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/apm/post_service_check_for_app_apm.py
  class PostServiceCheckForAppApm (line 11) | class PostServiceCheckForAppApm(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/apm/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/auto/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/bastion/get_cache_token.py
  class GetCacheToken (line 13) | class GetCacheToken(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 74) | def clean(self):
    method handle (line 78) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/bastion/get_info_for_workbench.py
  class GetInfoForWorkbench (line 12) | class GetInfoForWorkbench(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/bastion/get_network_proxy.py
  class GetNetworkProxy (line 13) | class GetNetworkProxy(Component):
    class Form (line 65) | class Form(BaseComponentForm):
      method clean (line 70) | def clean(self):
    method handle (line 74) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/bastion/keep_strategy_bastion.py
  class KeepStrategyBastion (line 13) | class KeepStrategyBastion(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 59) | def clean(self):
    method handle (line 63) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/bastion/resource_from_control.py
  class ResourceFromControl (line 13) | class ResourceFromControl(Component):
    class Form (line 50) | class Form(BaseComponentForm):
      method clean (line 57) | def clean(self):
    method handle (line 61) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/bastion/sync_rbac_user_group.py
  class SyncRbacUserGroup (line 13) | class SyncRbacUserGroup(Component):
    class Form (line 59) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 69) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/bastion/sync_user_group.py
  class SyncUserGroup (line 13) | class SyncUserGroup(Component):
    class Form (line 39) | class Form(BaseComponentForm):
      method clean (line 43) | def clean(self):
    method handle (line 47) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/check_model_data_operation.py
  class CheckModelDataOperation (line 12) | class CheckModelDataOperation(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/delete_business.py
  class DeleteBusiness (line 12) | class DeleteBusiness(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/delete_import_inst.py
  class DeleteImportInst (line 12) | class DeleteImportInst(Component):
    class Form (line 59) | class Form(BaseComponentForm):
      method clean (line 63) | def clean(self):
    method handle (line 67) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/encrypt_text.py
  class EncryptText (line 12) | class EncryptText(Component):
    class Form (line 59) | class Form(BaseComponentForm):
      method clean (line 63) | def clean(self):
    method handle (line 67) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get-all-business.py
  class GetAllBusiness (line 12) | class GetAllBusiness(Component):
    class Form (line 82) | class Form(BaseComponentForm):
      method clean (line 86) | def clean(self):
    method handle (line 90) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_agent_by_business_code.py
  class GetAgentByBusinessCode (line 12) | class GetAgentByBusinessCode(Component):
    class Form (line 87) | class Form(BaseComponentForm):
      method clean (line 91) | def clean(self):
    method handle (line 95) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_ali_regin_list.py
  class GetAliReginList (line 12) | class GetAliReginList(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_all_business.py
  class GetAllBusiness (line 12) | class GetAllBusiness(Component):
    class Form (line 82) | class Form(BaseComponentForm):
      method clean (line 86) | def clean(self):
    method handle (line 90) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_all_host.py
  class GetAllHost (line 15) | class GetAllHost(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 59) | def clean(self):
    method handle (line 63) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_all_host_info_for_panel.py
  class GetAllHostInfoForPanel (line 12) | class GetAllHostInfoForPanel(Component):
    class Form (line 43) | class Form(BaseComponentForm):
      method clean (line 47) | def clean(self):
    method handle (line 51) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_all_host_v2.py
  class GetAllHostV2 (line 15) | class GetAllHostV2(Component):
    class Form (line 55) | class Form(BaseComponentForm):
      method clean (line 63) | def clean(self):
    method handle (line 67) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_application_screen_info.py
  class GetApplicationScreenInfo (line 12) | class GetApplicationScreenInfo(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_application_screen_info_v2.py
  class GetApplicationScreenInfoV2 (line 12) | class GetApplicationScreenInfoV2(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_business_tree.py
  class GetBusinessTree (line 12) | class GetBusinessTree(Component):
    class Form (line 38) | class Form(BaseComponentForm):
      method clean (line 43) | def clean(self):
    method handle (line 47) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_cmdb_data_by_model_code.py
  class GetCmdbDataByModelCode (line 12) | class GetCmdbDataByModelCode(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 48) | def clean(self):
    method handle (line 52) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_cmdb_data_by_model_code_v2.py
  class GetCmdbDataByModelCodeV2 (line 12) | class GetCmdbDataByModelCodeV2(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 48) | def clean(self):
    method handle (line 52) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_cmdb_data_for_work_order.py
  class GetCmdbDataForWorkOrder (line 12) | class GetCmdbDataForWorkOrder(Component):
    class Form (line 50) | class Form(BaseComponentForm):
      method clean (line 59) | def clean(self):
    method handle (line 63) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_cmdb_model_tree.py
  class GetCmdbModelTree (line 15) | class GetCmdbModelTree(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_host_by_instance.py
  class GetHostByInstance (line 15) | class GetHostByInstance(Component):
    class Form (line 55) | class Form(BaseComponentForm):
      method clean (line 61) | def clean(self):
    method handle (line 65) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_import_inst.py
  class GetImportInst (line 12) | class GetImportInst(Component):
    class Form (line 56) | class Form(BaseComponentForm):
      method clean (line 60) | def clean(self):
    method handle (line 64) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_import_model_tree.py
  class GetImportModelTree (line 15) | class GetImportModelTree(Component):
    class Form (line 58) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_info_for_workbench.py
  class GetInfoForWorkbench (line 12) | class GetInfoForWorkbench(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_info_for_workbench_v2.py
  class GetInfoForWorkbenchV2 (line 12) | class GetInfoForWorkbenchV2(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_inst_by_business_code.py
  class GetInstByBusinessCode (line 12) | class GetInstByBusinessCode(Component):
    class Form (line 58) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_inst_by_rel_data.py
  class GetInstByRelData (line 12) | class GetInstByRelData(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 62) | def clean(self):
    method handle (line 66) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_inst_link_tree.py
  class GetInstLinkTree (line 15) | class GetInstLinkTree(Component):
    class Form (line 54) | class Form(BaseComponentForm):
      method clean (line 61) | def clean(self):
    method handle (line 65) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_inst_tree.py
  class GetInstTree (line 15) | class GetInstTree(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_link_inst.py
  class GetLinkInst (line 12) | class GetLinkInst(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_link_model_count.py
  class GetLinkModelCount (line 12) | class GetLinkModelCount(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_link_model_data.py
  class GetLinkModelData (line 12) | class GetLinkModelData(Component):
    class Form (line 49) | class Form(BaseComponentForm):
      method clean (line 58) | def clean(self):
    method handle (line 63) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_link_model_data_v2.py
  class GetLinkModelDataV2 (line 12) | class GetLinkModelDataV2(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_model_by_model_group.py
  class GetModelByModelGroup (line 15) | class GetModelByModelGroup(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_model_field.py
  class GetModelField (line 15) | class GetModelField(Component):
    class Form (line 67) | class Form(BaseComponentForm):
      method clean (line 72) | def clean(self):
    method handle (line 76) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_model_group.py
  class GetModelGroup (line 15) | class GetModelGroup(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_model_instance.py
  class GetModelInstance (line 15) | class GetModelInstance(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_tencent_regin_list.py
  class GetTencentReginList (line 12) | class GetTencentReginList(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_upload_file.py
  class GetUploadFile (line 12) | class GetUploadFile(Component):
    class Form (line 46) | class Form(BaseComponentForm):
      method clean (line 50) | def clean(self):
    method handle (line 54) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_zc_model.py
  class GetZcModel (line 15) | class GetZcModel(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/get_zc_model_v2.py
  class GetZcModelV2 (line 15) | class GetZcModelV2(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/import_grains_from_control.py
  class ImportGrainsFromControl (line 12) | class ImportGrainsFromControl(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 74) | def clean(self):
    method handle (line 78) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/import_grains_from_control_v2.py
  class ImportGrainsFromControlV2 (line 12) | class ImportGrainsFromControlV2(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 74) | def clean(self):
    method handle (line 78) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/import_inst.py
  class ImportInst (line 15) | class ImportInst(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 74) | def clean(self):
    method handle (line 78) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/import_network_from_control.py
  class ImportNetworkFromControl (line 12) | class ImportNetworkFromControl(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 74) | def clean(self):
    method handle (line 78) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/import_server_from_control.py
  class ImportServerFromControl (line 12) | class ImportServerFromControl(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 74) | def clean(self):
    method handle (line 78) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/import_server_from_control_v2.py
  class ImportServerFromControlV2 (line 12) | class ImportServerFromControlV2(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 74) | def clean(self):
    method handle (line 78) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/keep_strategy_cmdb.py
  class KeepStrategyCmdb (line 13) | class KeepStrategyCmdb(Component):
    class Form (line 50) | class Form(BaseComponentForm):
      method clean (line 57) | def clean(self):
    method handle (line 61) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/model_data_create.py
  class ModelDataCreate (line 12) | class ModelDataCreate(Component):
    class Form (line 69) | class Form(BaseComponentForm):
      method clean (line 75) | def clean(self):
    method handle (line 80) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/model_data_delete.py
  class ModelDataDelete (line 12) | class ModelDataDelete(Component):
    class Form (line 69) | class Form(BaseComponentForm):
      method clean (line 75) | def clean(self):
    method handle (line 80) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/model_data_get.py
  class ModelDataGet (line 15) | class ModelDataGet(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 72) | def clean(self):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/model_data_update.py
  class ModelDataUpdate (line 12) | class ModelDataUpdate(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 77) | def clean(self):
    method handle (line 82) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/monitor_to_screen_api.py
  class MonitorToScreenApi (line 12) | class MonitorToScreenApi(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/post_ali_inst_info.py
  class PostAliInstInfo (line 12) | class PostAliInstInfo(Component):
    class Form (line 75) | class Form(BaseComponentForm):
      method clean (line 79) | def clean(self):
    method handle (line 83) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/post_ali_regin_list.py
  class PostAliReginList (line 12) | class PostAliReginList(Component):
    class Form (line 71) | class Form(BaseComponentForm):
      method clean (line 76) | def clean(self):
    method handle (line 80) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/post_check_collect_task.py
  class PostCheckCollectTask (line 12) | class PostCheckCollectTask(Component):
    class Form (line 69) | class Form(BaseComponentForm):
      method clean (line 73) | def clean(self):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/post_import_inst.py
  class PostImportInst (line 12) | class PostImportInst(Component):
    class Form (line 69) | class Form(BaseComponentForm):
      method clean (line 73) | def clean(self):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/post_tencent_inst_info.py
  class PostTencentInstInfo (line 12) | class PostTencentInstInfo(Component):
    class Form (line 74) | class Form(BaseComponentForm):
      method clean (line 78) | def clean(self):
    method handle (line 82) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/post_tencent_regin_list.py
  class PostTencentReginList (line 12) | class PostTencentReginList(Component):
    class Form (line 72) | class Form(BaseComponentForm):
      method clean (line 77) | def clean(self):
    method handle (line 81) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/put_model_group.py
  class PutModelGroup (line 15) | class PutModelGroup(Component):
    class Form (line 70) | class Form(BaseComponentForm):
      method clean (line 77) | def clean(self):
    method handle (line 81) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/sync_user_info.py
  class SyncUserInfo (line 12) | class SyncUserInfo(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/update_agent_state.py
  class UpdateAgentState (line 12) | class UpdateAgentState(Component):
    class Form (line 91) | class Form(BaseComponentForm):
      method clean (line 95) | def clean(self):
    method handle (line 99) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/update_agent_state_v2.py
  class UpdateAgentStateV2 (line 12) | class UpdateAgentStateV2(Component):
    class Form (line 91) | class Form(BaseComponentForm):
      method clean (line 95) | def clean(self):
    method handle (line 99) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/update_all_business.py
  class UpdateAllBusiness (line 12) | class UpdateAllBusiness(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/update_all_cloud_host.py
  class UpdateAllCloudHost (line 12) | class UpdateAllCloudHost(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 46) | def clean(self):
    method handle (line 50) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/update_all_private_host.py
  class UpdateAllPrivateHost (line 12) | class UpdateAllPrivateHost(Component):
    class Form (line 45) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/update_cmp_resource.py
  class UpdateCmpResource (line 12) | class UpdateCmpResource(Component):
    class Form (line 45) | class Form(BaseComponentForm):
      method clean (line 49) | def clean(self):
    method handle (line 53) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/update_k8s_cluster.py
  class UpdateK8sCluster (line 12) | class UpdateK8sCluster(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/update_k8s_resource.py
  class UpdateK8sResource (line 12) | class UpdateK8sResource(Component):
    class Form (line 45) | class Form(BaseComponentForm):
      method clean (line 50) | def clean(self):
    method handle (line 54) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmdb/update_link_inst.py
  class UpdateLinkInst (line 12) | class UpdateLinkInst(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 62) | def clean(self):
    method handle (line 66) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmp/check_user_resource_quota.py
  class CheckUserResourceQuota (line 11) | class CheckUserResourceQuota(Component):
    class Form (line 44) | class Form(BaseComponentForm):
      method clean (line 48) | def clean(self):
    method handle (line 52) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmp/data_for_screen.py
  class DataForScreen (line 11) | class DataForScreen(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmp/get_all_cloud_host.py
  class GetAllCloudHost (line 11) | class GetAllCloudHost(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmp/get_all_private_host.py
  class GetAllPrivateHost (line 11) | class GetAllPrivateHost(Component):
    class Form (line 43) | class Form(BaseComponentForm):
      method clean (line 47) | def clean(self):
    method handle (line 51) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmp/get_cmp_resource.py
  class GetCmpResource (line 11) | class GetCmpResource(Component):
    class Form (line 44) | class Form(BaseComponentForm):
      method clean (line 48) | def clean(self):
    method handle (line 52) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmp/get_info_for_workbench.py
  class GetInfoForWorkbench (line 11) | class GetInfoForWorkbench(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmp/get_support_cloud_vendor_resource.py
  class GetSupportCloudVendorResource (line 11) | class GetSupportCloudVendorResource(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmp/post_cloud_vendor_resource_parameters.py
  class PostCloudVendorResourceParameters (line 11) | class PostCloudVendorResourceParameters(Component):
    class Form (line 44) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmp/post_support_resource.py
  class PostSupportResource (line 11) | class PostSupportResource(Component):
    class Form (line 44) | class Form(BaseComponentForm):
      method clean (line 48) | def clean(self):
    method handle (line 52) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/cmp/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/code/app_related_projects.py
  class AppRelatedProjects (line 11) | class AppRelatedProjects(Component):
    class Form (line 54) | class Form(BaseComponentForm):
      method clean (line 62) | def clean(self):
    method handle (line 66) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/code/app_unrelated_projects.py
  class AppUnrelatedProjects (line 11) | class AppUnrelatedProjects(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/code/create_gitlab_user.py
  class CreateGitlabUser (line 11) | class CreateGitlabUser(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 54) | def clean(self):
    method handle (line 58) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/code/gitlab_repository_url.py
  class GitlabRepositoryUrl (line 11) | class GitlabRepositoryUrl(Component):
    class Form (line 59) | class Form(BaseComponentForm):
      method clean (line 63) | def clean(self):
    method handle (line 67) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/code/relate_project.py
  class RelateProject (line 11) | class RelateProject(Component):
    class Form (line 46) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/code/sync_devops_application.py
  class SyncDevopsApplication (line 11) | class SyncDevopsApplication(Component):
    class Form (line 38) | class Form(BaseComponentForm):
      method clean (line 42) | def clean(self):
    method handle (line 46) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/code/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/code/unrelate_project.py
  class UnrelateProject (line 11) | class UnrelateProject(Component):
    class Form (line 46) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/data_for_screen.py
  class DataForScreen (line 12) | class DataForScreen(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/event_type_count.py
  class EventTypeCount (line 11) | class EventTypeCount(Component):
    class Form (line 39) | class Form(BaseComponentForm):
      method clean (line 43) | def clean(self):
    method handle (line 47) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_agent_file_stats.py
  class GetAgentFileStats (line 12) | class GetAgentFileStats(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_agent_group_list.py
  class GetAgentGroupList (line 12) | class GetAgentGroupList(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_agent_info_by_group.py
  class GetAgentInfoByGroup (line 12) | class GetAgentInfoByGroup(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_agent_net_work.py
  class GetAgentNetWork (line 12) | class GetAgentNetWork(Component):
    class Form (line 59) | class Form(BaseComponentForm):
      method clean (line 63) | def clean(self):
    method handle (line 67) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_agent_ps_info.py
  class GetAgentPsInfo (line 12) | class GetAgentPsInfo(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_alarm_rank.py
  class GetAlarmRank (line 12) | class GetAlarmRank(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 63) | def clean(self):
    method handle (line 75) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_all_host_group.py
  class GetAllHostGroup (line 12) | class GetAllHostGroup(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_all_host_group_prom.py
  class GetAllHostGroupProm (line 12) | class GetAllHostGroupProm(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 46) | def clean(self):
    method handle (line 50) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_all_network_group.py
  class GetAllNetworkGroup (line 12) | class GetAllNetworkGroup(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_all_zabbix_agent.py
  class GetAllZabbixAgent (line 12) | class GetAllZabbixAgent(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_asset_collect.py
  class GetAssetCollect (line 12) | class GetAssetCollect(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_control_agent_info.py
  class GetControlAgentInfo (line 12) | class GetControlAgentInfo(Component):
    class Form (line 56) | class Form(BaseComponentForm):
      method clean (line 68) | def clean(self):
    method handle (line 74) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_controller.py
  class GetController (line 12) | class GetController(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_controller_for_panel.py
  class GetControllerForPanel (line 12) | class GetControllerForPanel(Component):
    class Form (line 49) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_controller_proxy.py
  class GetControllerProxy (line 12) | class GetControllerProxy(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_grafana_server.py
  class GetGrafanaServer (line 12) | class GetGrafanaServer(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_history_event_count.py
  class GetHistoryEventCount (line 12) | class GetHistoryEventCount(Component):
    class Form (line 42) | class Form(BaseComponentForm):
      method clean (line 46) | def clean(self):
    method handle (line 50) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_host_info_for_develop.py
  class GetHostInfoForDevelop (line 12) | class GetHostInfoForDevelop(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 61) | def clean(self):
    method handle (line 65) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_host_info_for_monitor.py
  class GetHostInfoForMonitor (line 12) | class GetHostInfoForMonitor(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 47) | def clean(self):
    method handle (line 51) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_host_info_for_prom.py
  class GetHostInfoForProm (line 12) | class GetHostInfoForProm(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 48) | def clean(self):
    method handle (line 52) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_host_list.py
  class GetHostList (line 12) | class GetHostList(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_info_for_monitor_workbench.py
  class GetInfoForMonitorWorkbench (line 12) | class GetInfoForMonitorWorkbench(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_info_for_workbench.py
  class GetInfoForWorkbench (line 12) | class GetInfoForWorkbench(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_manual_add_agent.py
  class GetManualAddAgent (line 12) | class GetManualAddAgent(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_metric_install_package_log_to_prom.py
  class GetMetricInstallPackageLogToProm (line 12) | class GetMetricInstallPackageLogToProm(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_minion_file.py
  class GetMinionFile (line 12) | class GetMinionFile(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 67) | def clean(self):
    method handle (line 71) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_monitor_alert_info.py
  class GetMonitorAlertInfo (line 12) | class GetMonitorAlertInfo(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 54) | def clean(self):
    method handle (line 58) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_monitor_resource_info.py
  class GetMonitorResourceInfo (line 12) | class GetMonitorResourceInfo(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 49) | def clean(self):
    method handle (line 53) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_network_info_for_monitor.py
  class GetNetworkInfoForMonitor (line 12) | class GetNetworkInfoForMonitor(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 47) | def clean(self):
    method handle (line 51) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_prom_alert_info.py
  class GetPromAlertInfo (line 12) | class GetPromAlertInfo(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_prom_alertmanager_alerts.py
  class GetPromAlertmanagerAlerts (line 12) | class GetPromAlertmanagerAlerts(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_prom_alertmanager_alerts_groups.py
  class GetPromAlertmanagerAlertsGroups (line 12) | class GetPromAlertmanagerAlertsGroups(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_prom_alertmanager_silence.py
  class GetPromAlertmanagerSilence (line 12) | class GetPromAlertmanagerSilence(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 54) | def clean(self):
    method handle (line 58) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_prom_metadata.py
  class GetPromMetadata (line 12) | class GetPromMetadata(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_prom_rule_info.py
  class GetPromRuleInfo (line 12) | class GetPromRuleInfo(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_request_id_status.py
  class GetRequestIdStatus (line 12) | class GetRequestIdStatus(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_send_file_v2_request_id_status.py
  class GetSendFileV2RequestIdStatus (line 12) | class GetSendFileV2RequestIdStatus(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_status_playbook_record.py
  class GetStatusPlaybookRecord (line 12) | class GetStatusPlaybookRecord(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_zabbix_server_list.py
  class GetZabbixServerList (line 12) | class GetZabbixServerList(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_zabbix_template.py
  class GetZabbixTemplate (line 12) | class GetZabbixTemplate(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/get_zabbix_template_list.py
  class GetZabbixTemplateList (line 12) | class GetZabbixTemplateList(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/host_admin_from_group_to_job.py
  class HostAdminFromGroupToJob (line 12) | class HostAdminFromGroupToJob(Component):
    class Form (line 49) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/host_group_to_job.py
  class HostGroupToJob (line 12) | class HostGroupToJob(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/host_monitor_type_count.py
  class HostMonitorTypeCount (line 12) | class HostMonitorTypeCount(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/host_problem_info.py
  class HostProblemInfo (line 11) | class HostProblemInfo(Component):
    class Form (line 45) | class Form(BaseComponentForm):
      method clean (line 49) | def clean(self):
    method handle (line 53) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/monitor_event_acknowledge.py
  class MonitorEventAcknowledge (line 12) | class MonitorEventAcknowledge(Component):
    class Form (line 68) | class Form(BaseComponentForm):
      method clean (line 80) | def clean(self):
    method handle (line 84) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/monitor_event_info.py
  class MonitorEventInfo (line 12) | class MonitorEventInfo(Component):
    class Form (line 49) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/monitor_host_count.py
  class MonitorHostCount (line 12) | class MonitorHostCount(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/monitor_to_screen_api.py
  class MonitorToScreenApi (line 12) | class MonitorToScreenApi(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_file.py
  class PostFile (line 12) | class PostFile(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_func.py
  class PostFunc (line 12) | class PostFunc(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 68) | def clean(self):
    method handle (line 72) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_metric_collect_to_prom.py
  class PostMetricCollectToProm (line 12) | class PostMetricCollectToProm(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_metric_expr_get_value.py
  class PostMetricExprGetValue (line 12) | class PostMetricExprGetValue(Component):
    class Form (line 50) | class Form(BaseComponentForm):
      method clean (line 58) | def clean(self):
    method handle (line 62) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_metric_inst_status_to_prom.py
  class PostMetricInstStatusToProm (line 12) | class PostMetricInstStatusToProm(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 54) | def clean(self):
    method handle (line 58) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_metric_install_package_to_prom.py
  class PostMetricInstallPackageToProm (line 12) | class PostMetricInstallPackageToProm(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 54) | def clean(self):
    method handle (line 58) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_metric_register_prom_to_prom.py
  class PostMetricRegisterPromToProm (line 12) | class PostMetricRegisterPromToProm(Component):
    class Form (line 49) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_metric_send_package_to_prom.py
  class PostMetricSendPackageToProm (line 12) | class PostMetricSendPackageToProm(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_new_prom_info.py
  class PostNewPromInfo (line 12) | class PostNewPromInfo(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_new_zabbix_info.py
  class PostNewZabbixInfo (line 12) | class PostNewZabbixInfo(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_prom_tree_to_prom.py
  class PostPromTreeToProm (line 12) | class PostPromTreeToProm(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_script.py
  class PostScript (line 12) | class PostScript(Component):
    class Form (line 65) | class Form(BaseComponentForm):
      method clean (line 72) | def clean(self):
    method handle (line 76) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_script_v2.py
  class PostScriptV2 (line 12) | class PostScriptV2(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 71) | def clean(self):
    method handle (line 75) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_send_file_v2.py
  class PostSendFileV2 (line 12) | class PostSendFileV2(Component):
    class Form (line 64) | class Form(BaseComponentForm):
      method clean (line 73) | def clean(self):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_shell.py
  class PostShell (line 12) | class PostShell(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_status_playbook_delete.py
  class PostStatusPlaybookDelete (line 12) | class PostStatusPlaybookDelete(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_status_playbook_run.py
  class PostStatusPlaybookRun (line 12) | class PostStatusPlaybookRun(Component):
    class Form (line 64) | class Form(BaseComponentForm):
      method clean (line 71) | def clean(self):
    method handle (line 75) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/post_status_playbook_update.py
  class PostStatusPlaybookUpdate (line 12) | class PostStatusPlaybookUpdate(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/problem_info.py
  class ProblemInfo (line 12) | class ProblemInfo(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 72) | def clean(self):
    method handle (line 76) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_alertmanager_config_reload.py
  class PromAlertmanagerConfigReload (line 12) | class PromAlertmanagerConfigReload(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_alertmanager_create_alert.py
  class PromAlertmanagerCreateAlert (line 12) | class PromAlertmanagerCreateAlert(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_alertmanager_create_or_update.py
  class PromAlertmanagerCreateOrUpdate (line 12) | class PromAlertmanagerCreateOrUpdate(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 73) | def clean(self):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_alertmanager_create_or_update_silence.py
  class PromAlertmanagerCreateOrUpdateSilence (line 12) | class PromAlertmanagerCreateOrUpdateSilence(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_alertmanager_delete_silence.py
  class PromAlertmanagerDeleteSilence (line 12) | class PromAlertmanagerDeleteSilence(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 65) | def clean(self):
    method handle (line 69) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_config_reload.py
  class PromConfigReload (line 12) | class PromConfigReload(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_rules_create_or_update.py
  class PromRulesCreateOrUpdate (line 12) | class PromRulesCreateOrUpdate(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 73) | def clean(self):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_rules_delete.py
  class PromRulesDelete (line 11) | class PromRulesDelete(Component):
    class Form (line 59) | class Form(BaseComponentForm):
      method clean (line 65) | def clean(self):
    method handle (line 69) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_rules_query_syntax_check.py
  class PromRulesQuerySyntaxCheck (line 12) | class PromRulesQuerySyntaxCheck(Component):
    class Form (line 65) | class Form(BaseComponentForm):
      method clean (line 71) | def clean(self):
    method handle (line 75) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_run_query.py
  class PromRunQuery (line 12) | class PromRunQuery(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 54) | def clean(self):
    method handle (line 58) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_server_check_create_or_update.py
  class PromServerCheckCreateOrUpdate (line 12) | class PromServerCheckCreateOrUpdate(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 73) | def clean(self):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/prom_server_check_delete.py
  class PromServerCheckDelete (line 12) | class PromServerCheckDelete(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/receive_action_info.py
  class ReceiveActionInfo (line 11) | class ReceiveActionInfo(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/search_application.py
  class SearchApplication (line 11) | class SearchApplication(Component):
    class Form (line 59) | class Form(BaseComponentForm):
      method clean (line 63) | def clean(self):
    method handle (line 67) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/search_host.py
  class SearchHost (line 12) | class SearchHost(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/search_host_group.py
  class SearchHostGroup (line 12) | class SearchHostGroup(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/search_trigger.py
  class SearchTrigger (line 12) | class SearchTrigger(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/send_message_from_monitor.py
  class SendMessageFromMonitor (line 11) | class SendMessageFromMonitor(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/stackstorm.py
  class Stackstorm (line 12) | class Stackstorm(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/stop_or_start_monitor.py
  class StopOrStartMonitor (line 12) | class StopOrStartMonitor(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/subnet_scan_ip_port.py
  class SubnetScanIpPort (line 12) | class SubnetScanIpPort(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 76) | def clean(self):
    method handle (line 80) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/subnet_scan_ip_port_result.py
  class SubnetScanIpPortResult (line 12) | class SubnetScanIpPortResult(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/sync_user_info.py
  class SyncUserInfo (line 12) | class SyncUserInfo(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/control/update_host_sign_variable_template.py
  class UpdateHostSignVariableTemplate (line 12) | class UpdateHostSignVariableTemplate(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 70) | def clean(self):
    method handle (line 74) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/dashboard/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/deploy_step.py
  class DeployStep (line 12) | class DeployStep(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/deploy_task.py
  class DeployTask (line 12) | class DeployTask(Component):
    class Form (line 54) | class Form(BaseComponentForm):
      method clean (line 65) | def clean(self):
    method handle (line 69) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_cancel.py
  class DeployTaskCancel (line 12) | class DeployTaskCancel(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_clone.py
  class DeployTaskClone (line 12) | class DeployTaskClone(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_create.py
  class DeployTaskCreate (line 12) | class DeployTaskCreate(Component):
    class Form (line 64) | class Form(BaseComponentForm):
      method clean (line 72) | def clean(self):
    method handle (line 76) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_delete.py
  class DeployTaskDelete (line 12) | class DeployTaskDelete(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_log.py
  class DeployTaskLog (line 12) | class DeployTaskLog(Component):
    class Form (line 54) | class Form(BaseComponentForm):
      method clean (line 65) | def clean(self):
    method handle (line 69) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_run.py
  class DeployTaskRun (line 12) | class DeployTaskRun(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/deploy_task_update.py
  class DeployTaskUpdate (line 12) | class DeployTaskUpdate(Component):
    class Form (line 65) | class Form(BaseComponentForm):
      method clean (line 74) | def clean(self):
    method handle (line 78) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/deploy_template.py
  class DeployTemplate (line 12) | class DeployTemplate(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/deploy_template_group.py
  class DeployTemplateGroup (line 12) | class DeployTemplateGroup(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/get_deploy_task.py
  class GetDeployTask (line 13) | class GetDeployTask(Component):
    class Form (line 86) | class Form(BaseComponentForm):
      method clean (line 94) | def clean(self):
    method handle (line 98) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/get_home_page.py
  class GetHomePage (line 13) | class GetHomePage(Component):
    class Form (line 114) | class Form(BaseComponentForm):
      method clean (line 118) | def clean(self):
    method handle (line 122) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/monitor_to_screen_api.py
  class MonitorToScreenApi (line 12) | class MonitorToScreenApi(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/run_deploy_task_rollback.py
  class RunDeployTaskRollback (line 12) | class RunDeployTaskRollback(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 65) | def clean(self):
    method handle (line 69) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/run_deploy_task_v3.py
  class RunDeployTaskV3 (line 12) | class RunDeployTaskV3(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 70) | def clean(self):
    method handle (line 74) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/sync_user_info.py
  class SyncUserInfo (line 12) | class SyncUserInfo(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/deploy/upload_script.py
  class UploadScript (line 12) | class UploadScript(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/application_user_role.py
  class ApplicationUserRole (line 12) | class ApplicationUserRole(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 57) | def clean(self):
    method handle (line 61) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/business_application.py
  class BusinessApplication (line 12) | class BusinessApplication(Component):
    class Form (line 78) | class Form(BaseComponentForm):
      method clean (line 82) | def clean(self):
    method handle (line 86) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/business_tree.py
  class BusinessTree (line 12) | class BusinessTree(Component):
    class Form (line 41) | class Form(BaseComponentForm):
    method clean (line 49) | def clean(self):
    method handle (line 53) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/business_tree_old.py
  class BusinessTree (line 15) | class BusinessTree(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/create_application.py
  class CreateApplication (line 12) | class CreateApplication(Component):
    class Form (line 79) | class Form(BaseComponentForm):
      method clean (line 83) | def clean(self):
    method handle (line 87) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/data_for_screen.py
  class DataForScreen (line 12) | class DataForScreen(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/get_applications.py
  class GetApplications (line 12) | class GetApplications(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 70) | def clean(self):
    method handle (line 74) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/get_auth_application_host_to_job.py
  class GetAuthApplicationHostToJob (line 12) | class GetAuthApplicationHostToJob(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 48) | def clean(self):
    method handle (line 52) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/get_auth_application_tree_to_job.py
  class GetAuthApplicationTreeToJob (line 12) | class GetAuthApplicationTreeToJob(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 49) | def clean(self):
    method handle (line 53) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/get_business_auth_count.py
  class GetBusinessAuthCount (line 12) | class GetBusinessAuthCount(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/get_info_for_workbench.py
  class GetInfoForWorkbench (line 12) | class GetInfoForWorkbench(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/get_test.py
  class GetTest (line 15) | class GetTest(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 57) | def clean(self):
    method handle (line 61) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/git_project.py
  class PostScript (line 12) | class PostScript(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/monitor_to_screen_api.py
  class MonitorToScreenApi (line 12) | class MonitorToScreenApi(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/nexus_project.py
  class NexusProject (line 12) | class NexusProject(Component):
    class Form (line 59) | class Form(BaseComponentForm):
      method clean (line 63) | def clean(self):
    method handle (line 67) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/run_deploy_v3.py
  class RunDeployV3 (line 12) | class RunDeployV3(Component):
    class Form (line 64) | class Form(BaseComponentForm):
      method clean (line 72) | def clean(self):
    method handle (line 76) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/run_pipeline_v3.py
  class RunPipelineV3 (line 12) | class RunPipelineV3(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 74) | def clean(self):
    method handle (line 78) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/sync_stackstorm_from_control.py
  class SyncStackstormFromControl (line 12) | class SyncStackstormFromControl(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 65) | def clean(self):
    method handle (line 69) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/devops/sync_user_info.py
  class SyncUserInfo (line 12) | class SyncUserInfo(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/event/keep_strategy_event.py
  class KeepStrategyEvent (line 12) | class KeepStrategyEvent(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 54) | def clean(self):
    method handle (line 58) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/event/sync_stackstorm_from_control.py
  class SyncStackstormFromControl (line 11) | class SyncStackstormFromControl(Component):
    class Form (line 59) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/event/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/job/data_for_screen.py
  class DataForScreen (line 11) | class DataForScreen(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/job/get_info_for_workbench.py
  class GetInfoForWorkbench (line 11) | class GetInfoForWorkbench(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/job/get_run_result_by_log_id.py
  class GetRunResultByLogId (line 11) | class GetRunResultByLogId(Component):
    class Form (line 46) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/job/get_tool_market_list.py
  class GetToolMarketList (line 11) | class GetToolMarketList(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 67) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/job/run_job_by_id.py
  class RunJobById (line 13) | class RunJobById(Component):
    class Form (line 55) | class Form(BaseComponentForm):
      method clean (line 59) | def clean(self):
    method handle (line 63) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/job/run_script_by_id.py
  class RunScriptById (line 13) | class RunScriptById(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 73) | def clean(self):
    method handle (line 77) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/job/run_script_by_script.py
  class RunScriptByScript (line 13) | class RunScriptByScript(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 75) | def clean(self):
    method handle (line 79) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/job/run_task_by_id.py
  class RunTaskById (line 13) | class RunTaskById(Component):
    class Form (line 55) | class Form(BaseComponentForm):
      method clean (line 59) | def clean(self):
    method handle (line 63) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/job/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/k8s/get_info_for_workbench.py
  class GetInfoForWorkbench (line 11) | class GetInfoForWorkbench(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/k8s/get_k8s_cluster.py
  class GetK8sCluster (line 11) | class GetK8sCluster(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/k8s/get_k8s_resource_v2.py
  class GetK8sResourceV2 (line 11) | class GetK8sResourceV2(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 58) | def clean(self):
    method handle (line 62) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/k8s/get_support_resource.py
  class GetSupportResource (line 11) | class GetSupportResource(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/k8s/get_support_resource_fields.py
  class GetSupportResourceFields (line 11) | class GetSupportResourceFields(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 58) | def clean(self):
    method handle (line 62) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/k8s/post_apply_resource.py
  class PostApplyResource (line 11) | class PostApplyResource(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/k8s/sync_es_from_control.py
  class SyncEsFromControl (line 11) | class SyncEsFromControl(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/k8s/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/kbase/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/llmops/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/log/sync_es_from_control.py
  class SyncEsFromControl (line 11) | class SyncEsFromControl(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/log/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/monitor/data_for_screen.py
  class DataForScreen (line 11) | class DataForScreen(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/monitor/get_info_for_workbench.py
  class GetInfoForWorkbench (line 11) | class GetInfoForWorkbench(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/monitor/get_service_check_from_monitor.py
  class GetServiceCheckFromMonitor (line 11) | class GetServiceCheckFromMonitor(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/monitor/get_service_check_monitor_by_application.py
  class GetServiceCheckMonitorByApplication (line 11) | class GetServiceCheckMonitorByApplication(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/monitor/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/build_abort.py
  class BuildAbort (line 12) | class BuildAbort(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/build_delete.py
  class BuildDelete (line 12) | class BuildDelete(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 68) | def clean(self):
    method handle (line 72) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/build_proceed.py
  class BuildProceed (line 12) | class BuildProceed(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/build_start.py
  class BuildStart (line 12) | class BuildStart(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 68) | def clean(self):
    method handle (line 72) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/build_stop.py
  class BuildStop (line 12) | class BuildStop(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 68) | def clean(self):
    method handle (line 72) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_all_job.py
  class GetAllJob (line 13) | class GetAllJob(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_gitlab_all_projects.py
  class GetGitlabAllProjects (line 13) | class GetGitlabAllProjects(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_home_page.py
  class GetHomePage (line 13) | class GetHomePage(Component):
    class Form (line 114) | class Form(BaseComponentForm):
      method clean (line 118) | def clean(self):
    method handle (line 122) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_job_build_info.py
  class GetJobBuildInfo (line 12) | class GetJobBuildInfo(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_job_building_queue.py
  class GetJobBuildingQueue (line 12) | class GetJobBuildingQueue(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_job_pipeline_tool.py
  class GetJobPipelineTool (line 13) | class GetJobPipelineTool(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_job_pipeline_tool_post.py
  class GetJobPipelineToolPost (line 13) | class GetJobPipelineToolPost(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_job_reconfig_parameter.py
  class GetJobReconfigParameter (line 12) | class GetJobReconfigParameter(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_job_reconfig_script.py
  class GetJobReconfigScript (line 13) | class GetJobReconfigScript(Component):
    class Form (line 49) | class Form(BaseComponentForm):
      method clean (line 54) | def clean(self):
    method handle (line 58) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_job_reconfig_triggers.py
  class GetJobReconfigTriggers (line 13) | class GetJobReconfigTriggers(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_job_rename.py
  class GetJobRename (line 13) | class GetJobRename(Component):
    class Form (line 49) | class Form(BaseComponentForm):
      method clean (line 54) | def clean(self):
    method handle (line 58) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_job_v2.py
  class GetJobV2 (line 13) | class GetJobV2(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 58) | def clean(self):
    method handle (line 62) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_job_v2_build.py
  class GetJobV2Build (line 12) | class GetJobV2Build(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_job_v2_detail.py
  class GetJobV2Detail (line 12) | class GetJobV2Detail(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_pipeline_jenkins_job.py
  class GetPipelineJenkinsJob (line 13) | class GetPipelineJenkinsJob(Component):
    class Form (line 83) | class Form(BaseComponentForm):
      method clean (line 91) | def clean(self):
    method handle (line 95) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/get_pipeline_template_group.py
  class GetPipelineTemplateGroup (line 12) | class GetPipelineTemplateGroup(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/job_create.py
  class JobCreate (line 12) | class JobCreate(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 70) | def clean(self):
    method handle (line 74) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/job_delete.py
  class JobDelete (line 12) | class JobDelete(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 66) | def clean(self):
    method handle (line 70) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/put_job_reconfig_parameter.py
  class PutJobReconfigParameter (line 12) | class PutJobReconfigParameter(Component):
    class Form (line 49) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/put_job_reconfig_script.py
  class PutJobReconfigScript (line 13) | class PutJobReconfigScript(Component):
    class Form (line 50) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/put_job_rename.py
  class PutJobRename (line 13) | class PutJobRename(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 60) | def clean(self):
    method handle (line 64) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/run_pipeline_task_rollback.py
  class RunPipelineTaskRollback (line 12) | class RunPipelineTaskRollback(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 68) | def clean(self):
    method handle (line 72) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/run_pipeline_task_v3.py
  class RunPipelineTaskV3 (line 12) | class RunPipelineTaskV3(Component):
    class Form (line 66) | class Form(BaseComponentForm):
      method clean (line 74) | def clean(self):
    method handle (line 78) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/pipeline/sync_user_info.py
  class SyncUserInfo (line 12) | class SyncUserInfo(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/get_info_for_workbench.py
  class GetInfoForWorkbench (line 11) | class GetInfoForWorkbench(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/get_service_check_metric.py
  class get_service_check_metric (line 11) | class get_service_check_metric(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 61) | def clean(self):
    method handle (line 65) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/keep_strategy_prom.py
  class KeepStrategyProm (line 12) | class KeepStrategyProm(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 54) | def clean(self):
    method handle (line 58) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/monitor_to_screen_api.py
  class MonitorToScreenApi (line 11) | class MonitorToScreenApi(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 68) | def clean(self):
    method handle (line 72) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/post_inst_monitor_for_app.py
  class PostInstMonitorForApp (line 11) | class PostInstMonitorForApp(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/post_metric_inst.py
  class PostMetricInst (line 11) | class PostMetricInst(Component):
    class Form (line 46) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/post_service_check_for_app.py
  class PostServiceCheckForApp (line 11) | class PostServiceCheckForApp(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/pull_app_auth.py
  class PullAppAuth (line 11) | class PullAppAuth(Component):
    class Form (line 46) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/service_check_export.py
  class ServiceCheckExport (line 11) | class ServiceCheckExport(Component):
    class Form (line 46) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/service_check_import.py
  class ServiceCheckImport (line 11) | class ServiceCheckImport(Component):
    class Form (line 46) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/service_check_import_template.py
  class ServiceCheckImportTemplate (line 11) | class ServiceCheckImportTemplate(Component):
    class Form (line 45) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/prom/update_service_check_for_app.py
  class UpdateServiceCheckForApp (line 11) | class UpdateServiceCheckForApp(Component):
    class Form (line 46) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/check_google_verify_code.py
  class CheckGoogleVerifyCode (line 11) | class CheckGoogleVerifyCode(Component):
    class Form (line 33) | class Form(BaseComponentForm):
      method clean (line 40) | def clean(self):
    method handle (line 44) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/create_google_secret_for_user.py
  class CreateGoogleSecretForUser (line 11) | class CreateGoogleSecretForUser(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 46) | def clean(self):
    method handle (line 50) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_all_department_user_tree.py
  class GetAllDepartmentUserTree (line 13) | class GetAllDepartmentUserTree(Component):
    class Form (line 72) | class Form(BaseComponentForm):
      method clean (line 76) | def clean(self):
    method handle (line 80) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_all_user.py
  class GetAllUser (line 13) | class GetAllUser(Component):
    class Form (line 38) | class Form(BaseComponentForm):
      method clean (line 50) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_auth_config.py
  class GetAuthConfig (line 13) | class GetAuthConfig(Component):
    class Form (line 38) | class Form(BaseComponentForm):
      method clean (line 43) | def clean(self):
    method handle (line 47) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_auth_platform.py
  class GetAuthPlatform (line 13) | class GetAuthPlatform(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_copyright_config.py
  class GetCopyrightConfig (line 13) | class GetCopyrightConfig(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_dep_v2_to_cmdb.py
  class GetDepV2ToCmdb (line 13) | class GetDepV2ToCmdb(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_department_user_tree.py
  class GetDepartmentUserTree (line 13) | class GetDepartmentUserTree(Component):
    class Form (line 72) | class Form(BaseComponentForm):
      method clean (line 76) | def clean(self):
    method handle (line 80) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_user_auth_api.py
  class GetUserAuthApi (line 11) | class GetUserAuthApi(Component):
    class Form (line 50) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_user_google_auth_status.py
  class GetUserGoogleAuthStatus (line 11) | class GetUserGoogleAuthStatus(Component):
    class Form (line 33) | class Form(BaseComponentForm):
      method clean (line 38) | def clean(self):
    method handle (line 42) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_user_group_sync.py
  class GetUserGroupSync (line 13) | class GetUserGroupSync(Component):
    class Form (line 38) | class Form(BaseComponentForm):
      method clean (line 42) | def clean(self):
    method handle (line 46) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_user_rbac_auth_config.py
  class GetUserRbacAuthConfig (line 11) | class GetUserRbacAuthConfig(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 46) | def clean(self):
    method handle (line 50) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_user_update_info.py
  class GetUserUpdateInfo (line 13) | class GetUserUpdateInfo(Component):
    class Form (line 38) | class Form(BaseComponentForm):
      method clean (line 42) | def clean(self):
    method handle (line 46) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_user_v2_to_cmdb.py
  class GetUserV2ToCmdb (line 13) | class GetUserV2ToCmdb(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 57) | def clean(self):
    method handle (line 61) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_workorder_sync.py
  class GetWorkorderSync (line 13) | class GetWorkorderSync(Component):
    class Form (line 38) | class Form(BaseComponentForm):
      method clean (line 42) | def clean(self):
    method handle (line 46) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/get_wx_work_config.py
  class GetWxWorkConfig (line 13) | class GetWxWorkConfig(Component):
    class Form (line 38) | class Form(BaseComponentForm):
      method clean (line 42) | def clean(self):
    method handle (line 46) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/modify_user_google_auth_status.py
  class ModifyUserGoogleAuthStatus (line 11) | class ModifyUserGoogleAuthStatus(Component):
    class Form (line 33) | class Form(BaseComponentForm):
      method clean (line 38) | def clean(self):
    method handle (line 42) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/post_login_log.py
  class PostLoginLog (line 13) | class PostLoginLog(Component):
    class Form (line 54) | class Form(BaseComponentForm):
      method clean (line 62) | def clean(self):
    method handle (line 66) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/post_menu_privilege.py
  class PostMenuPrivilege (line 13) | class PostMenuPrivilege(Component):
    class Form (line 58) | class Form(BaseComponentForm):
      method clean (line 62) | def clean(self):
    method handle (line 66) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/post_menu_tree.py
  class PostMenuTree (line 13) | class PostMenuTree(Component):
    class Form (line 78) | class Form(BaseComponentForm):
      method clean (line 82) | def clean(self):
    method handle (line 86) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/post_menu_verification.py
  class PostMenuVerification (line 13) | class PostMenuVerification(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/update_user_info.py
  class UpdateUserInfo (line 13) | class UpdateUserInfo(Component):
    class Form (line 50) | class Form(BaseComponentForm):
      method clean (line 59) | def clean(self):
    method handle (line 63) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/rbac/user_auth.py
  class UserAuth (line 11) | class UserAuth(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 53) | def clean(self):
    method handle (line 57) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/delete_nexus_repository.py
  class DeleteNexusRepository (line 12) | class DeleteNexusRepository(Component):
    class Form (line 46) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/delete_nexus_repository_component.py
  class DeleteNexusRepositoryComponent (line 12) | class DeleteNexusRepositoryComponent(Component):
    class Form (line 48) | class Form(BaseComponentForm):
      method clean (line 54) | def clean(self):
    method handle (line 58) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_home_page.py
  class GetHomePage (line 13) | class GetHomePage(Component):
    class Form (line 73) | class Form(BaseComponentForm):
      method clean (line 77) | def clean(self):
    method handle (line 81) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository.py
  class GetNexusRepository (line 12) | class GetNexusRepository(Component):
    class Form (line 72) | class Form(BaseComponentForm):
      method clean (line 80) | def clean(self):
    method handle (line 84) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_component.py
  class GetNexusRepositoryComponent (line 13) | class GetNexusRepositoryComponent(Component):
    class Form (line 78) | class Form(BaseComponentForm):
      method clean (line 84) | def clean(self):
    method handle (line 88) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_component_asset.py
  class GetNexusRepositoryComponentAsset (line 13) | class GetNexusRepositoryComponentAsset(Component):
    class Form (line 43) | class Form(BaseComponentForm):
      method clean (line 48) | def clean(self):
    method handle (line 52) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_component_tree.py
  class GetNexusRepositoryComponentTree (line 12) | class GetNexusRepositoryComponentTree(Component):
    class Form (line 43) | class Form(BaseComponentForm):
      method clean (line 48) | def clean(self):
    method handle (line 52) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_component_tree_v2.py
  class GetNexusRepositoryComponentTreeV2 (line 12) | class GetNexusRepositoryComponentTreeV2(Component):
    class Form (line 42) | class Form(BaseComponentForm):
      method clean (line 46) | def clean(self):
    method handle (line 50) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_component_v2.py
  class GetNexusRepositoryComponentV2 (line 13) | class GetNexusRepositoryComponentV2(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 61) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_format.py
  class GetNexusRepositoryFormat (line 12) | class GetNexusRepositoryFormat(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 67) | def clean(self):
    method handle (line 71) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_nexus_repository_guide.py
  class GetNexusRepositoryGuide (line 12) | class GetNexusRepositoryGuide(Component):
    class Form (line 64) | class Form(BaseComponentForm):
      method clean (line 70) | def clean(self):
    method handle (line 74) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_nexus_search_component.py
  class GetNexusSearchComponent (line 13) | class GetNexusSearchComponent(Component):
    class Form (line 49) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_repo.py
  class GetRepo (line 13) | class GetRepo(Component):
    class Form (line 59) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/get_repository_pagination.py
  class GetRepositoryPagination (line 13) | class GetRepositoryPagination(Component):
    class Form (line 83) | class Form(BaseComponentForm):
      method clean (line 91) | def clean(self):
    method handle (line 95) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/post_clone_project.py
  class PostCloneProject (line 12) | class PostCloneProject(Component):
    class Form (line 43) | class Form(BaseComponentForm):
      method clean (line 49) | def clean(self):
    method handle (line 53) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/post_nexus_project.py
  class PostNexusProject (line 12) | class PostNexusProject(Component):
    class Form (line 42) | class Form(BaseComponentForm):
      method clean (line 46) | def clean(self):
    method handle (line 50) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/post_nexus_repository.py
  class PostNexusRepository (line 12) | class PostNexusRepository(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 60) | def clean(self):
    method handle (line 64) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/post_nexus_repository_component_upload.py
  class PostNexusRepositoryComponentUpload (line 12) | class PostNexusRepositoryComponentUpload(Component):
    class Form (line 49) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/post_nexus_repository_guide.py
  class PostNexusRepositoryGuide (line 12) | class PostNexusRepositoryGuide(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 52) | def clean(self):
    method handle (line 56) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/put_repo.py
  class PutRepo (line 13) | class PutRepo(Component):
    class Form (line 49) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/repo/sync_user_info.py
  class SyncUserInfo (line 12) | class SyncUserInfo(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/task/data_for_screen.py
  class DataForScreen (line 11) | class DataForScreen(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/task/get_info_for_workbench.py
  class GetInfoForWorkbench (line 11) | class GetInfoForWorkbench(Component):
    class Form (line 40) | class Form(BaseComponentForm):
      method clean (line 44) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/task/run_task_by_id.py
  class RunTaskById (line 13) | class RunTaskById(Component):
    class Form (line 55) | class Form(BaseComponentForm):
      method clean (line 59) | def clean(self):
    method handle (line 63) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/task/sync_user_info.py
  class SyncUserInfo (line 11) | class SyncUserInfo(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/bind_google_auth.py
  class BindGoogleAuth (line 12) | class BindGoogleAuth(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_google_auth.py
  class GetGoogleAuth (line 12) | class GetGoogleAuth(Component):
    class Form (line 51) | class Form(BaseComponentForm):
      method clean (line 55) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_info_for_workbench.py
  class GetInfoForWorkbench (line 12) | class GetInfoForWorkbench(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_language_theme_config.py
  class GetLanguageThemeConfig (line 12) | class GetLanguageThemeConfig(Component):
    class Form (line 59) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_message_info.py
  class GetMessageInfo (line 12) | class GetMessageInfo(Component):
    class Form (line 54) | class Form(BaseComponentForm):
      method clean (line 59) | def clean(self):
    method handle (line 63) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_nav_and_colleciton.py
  class GetNavAndCollection (line 12) | class GetNavAndCollection(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 46) | def clean(self):
    method handle (line 50) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_read_all_message.py
  class GetReadAllMessage (line 12) | class GetReadAllMessage(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 58) | def clean(self):
    method handle (line 62) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_robot_list.py
  class GetRobotList (line 12) | class GetRobotList(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 58) | def clean(self):
    method handle (line 62) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_sync_data.py
  class GetSyncData (line 14) | class GetSyncData(Component):
    class Form (line 39) | class Form(BaseComponentForm):
      method clean (line 43) | def clean(self):
    method handle (line 47) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_user_info_from_workbench.py
  class GetUserInfoFromWorkbench (line 12) | class GetUserInfoFromWorkbench(Component):
    class Form (line 47) | class Form(BaseComponentForm):
      method clean (line 51) | def clean(self):
    method handle (line 55) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_user_ssh_key.py
  class GetUserSshKey (line 12) | class GetUserSshKey(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 58) | def clean(self):
    method handle (line 62) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_work_order_event.py
  class GetWorkOrderEvent (line 12) | class GetWorkOrderEvent(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 48) | def clean(self):
    method handle (line 52) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_work_order_inst.py
  class GetWorkOrderInst (line 12) | class GetWorkOrderInst(Component):
    class Form (line 61) | class Form(BaseComponentForm):
      method clean (line 80) | def clean(self):
    method handle (line 87) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/get_work_order_screen.py
  class GetWorkOrderScreen (line 12) | class GetWorkOrderScreen(Component):
    class Form (line 41) | class Form(BaseComponentForm):
      method clean (line 45) | def clean(self):
    method handle (line 49) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/guide.py
  class Guide (line 12) | class Guide(Component):
    class Form (line 53) | class Form(BaseComponentForm):
      method clean (line 57) | def clean(self):
    method handle (line 61) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/monitor_to_screen_api.py
  class MonitorToScreenApi (line 12) | class MonitorToScreenApi(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 69) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/post_collection.py
  class PostCollection (line 12) | class PostCollection(Component):
    class Form (line 60) | class Form(BaseComponentForm):
      method clean (line 64) | def clean(self):
    method handle (line 68) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/post_info_to_user.py
  class PostInfoToUser (line 12) | class PostInfoToUser(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 72) | def clean(self):
    method handle (line 76) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/post_security_config.py
  class PostSecurityConfig (line 12) | class PostSecurityConfig(Component):
    class Form (line 58) | class Form(BaseComponentForm):
      method clean (line 62) | def clean(self):
    method handle (line 66) | def handle(self):  # 获取Form clean处理后的数据

FILE: paas-ce/paas/esb/components/generic/apis/workbench/send_mail.py
  class SendMail (line 12) | class SendMail(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 71) | def clean(self):
    method handle (line 75) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/send_report.py
  class SendReport (line 12) | class SendReport(Component):
    class Form (line 62) | class Form(BaseComponentForm):
      method clean (line 68) | def clean(self):
    method handle (line 72) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/send_robot.py
  class SendRobot (line 12) | class SendRobot(Component):
    class Form (line 64) | class Form(BaseComponentForm):
      method clean (line 72) | def clean(self):
    method handle (line 76) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/sync_order_user_message.py
  class SyncOrderUserMessage (line 12) | class SyncOrderUserMessage(Component):
    class Form (line 52) | class Form(BaseComponentForm):
      method clean (line 56) | def clean(self):
    method handle (line 60) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/apis/workbench/work_order_submit.py
  class WorkOrderSubmit (line 12) | class WorkOrderSubmit(Component):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 71) | def clean(self):
    method handle (line 75) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/cmsi/get_msg_type.py
  class GetMsgType (line 15) | class GetMsgType(Component, SetupConfMixin):
    method handle (line 23) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/cmsi/send_mail.py
  class SendMail (line 21) | class SendMail(Component, SetupConfMixin):
    class Form (line 92) | class Form(BaseComponentForm):
      method clean (line 105) | def clean(self):
    class AttachmentForm (line 126) | class AttachmentForm(BaseComponentForm):
      method clean (line 133) | def clean(self):
    method handle (line 137) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/cmsi/send_mp_weixin.py
  class SendMpWeixin (line 20) | class SendMpWeixin(Component, SetupConfMixin):
    class Form (line 81) | class Form(BaseComponentForm):
      method clean (line 85) | def clean(self):
    class DataForm (line 92) | class DataForm(BaseComponentForm):
      method decode_message (line 100) | def decode_message(self, message, is_message_base64):
      method clean (line 108) | def clean(self):
    method handle (line 127) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/cmsi/send_msg.py
  class SendMsg (line 18) | class SendMsg(Component, SetupConfMixin):
    class Form (line 27) | class Form(BaseComponentForm):
      method clean (line 43) | def clean(self):
    method handle (line 59) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/cmsi/send_qy_weixin.py
  class SendQyWeixin (line 17) | class SendQyWeixin(Component, SetupConfMixin):
    class Form (line 63) | class Form(BaseComponentForm):
      method clean (line 67) | def clean(self):
    method handle (line 73) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/cmsi/send_sms.py
  class SendSms (line 20) | class SendSms(Component, SetupConfMixin):
    class Form (line 72) | class Form(BaseComponentForm):
      method decode_content (line 79) | def decode_content(self, content, is_content_base64):
      method clean (line 87) | def clean(self):
    method handle (line 94) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/cmsi/send_voice_msg.py
  class SendVoiceMsg (line 18) | class SendVoiceMsg(Component, SetupConfMixin):
    class Form (line 81) | class Form(BaseComponentForm):
      method clean (line 86) | def clean(self):
    class UserListInfoForm (line 101) | class UserListInfoForm(BaseComponentForm):
      method clean (line 105) | def clean(self):
    method handle (line 111) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/cmsi/send_weixin.py
  class SendWeixin (line 20) | class SendWeixin(Component, SetupConfMixin):
    class Form (line 85) | class Form(BaseComponentForm):
      method clean (line 90) | def clean(self):
    class DataForm (line 105) | class DataForm(BaseComponentForm):
      method decode_message (line 113) | def decode_message(self, message, is_message_base64):
      method clean (line 121) | def clean(self):
    method get_mp_msg_data (line 129) | def get_mp_msg_data(self, data):
    method get_qy_msg_content (line 145) | def get_qy_msg_content(self, data):
    method handle (line 155) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/cmsi/toolkit/send_mail_with_smtp.py
  class SMTPClient (line 22) | class SMTPClient(object):
    method __init__ (line 24) | def __init__(self, smtp_host, smtp_port, smtp_user='',
    method send_mail (line 35) | def send_mail(self, kwargs):
    method add_content_to_msg (line 65) | def add_content_to_msg(self, mail_msg, content, body_format):
    method add_attachment_to_msg (line 70) | def add_attachment_to_msg(self, mail_msg, attachments):
    method get_smtp_client (line 104) | def get_smtp_client(self):

FILE: paas-ce/paas/esb/components/generic/templates/cmsi/toolkit/test_send_mail_with_smtp.py
  function send_mail (line 16) | def send_mail(smtp_host, smtp_port, smtp_user, smtp_pwd, smtp_usessl, sm...
  function main (line 56) | def main():

FILE: paas-ce/paas/esb/components/generic/templates/cmsi/toolkit/tools.py
  function valid_email (line 12) | def valid_email(email):
  function valid_phone (line 18) | def valid_phone(phone):
  function get_user_contact (line 24) | def get_user_contact(user, contact_way):
  function validate_receiver (line 36) | def validate_receiver(receiver, contact_way='phone'):
  function get_receiver_with_username (line 58) | def get_receiver_with_username(receiver__username=None,    # noqa
  function get_user_contact_with_username (line 119) | def get_user_contact_with_username(username_list=None, contact_way='phon...

FILE: paas-ce/paas/esb/components/generic/templates/heartbeat/detect.py
  class Detect (line 18) | class Detect(Component):
    class Form (line 24) | class Form(BaseComponentForm):
    method handle (line 28) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/qcloud_sms/send_multi_sms.py
  class SendMultiSms (line 17) | class SendMultiSms(Component, SetupConfMixin):
    class Form (line 23) | class Form(BaseComponentForm):
      method clean (line 33) | def clean(self):
    method handle (line 48) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/qcloud_sms/send_multi_sms_with_tpl.py
  class SendMultiSmsWithTpl (line 17) | class SendMultiSmsWithTpl(Component, SetupConfMixin):
    class Form (line 23) | class Form(BaseComponentForm):
      method clean (line 34) | def clean(self):
    method handle (line 50) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/qcloud_sms/send_sms.py
  class SendSms (line 17) | class SendSms(Component, SetupConfMixin):
    class Form (line 23) | class Form(BaseComponentForm):
      method clean (line 33) | def clean(self):
    method handle (line 45) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/qcloud_sms/send_sms_with_tpl.py
  class SendSmsWithTpl (line 17) | class SendSmsWithTpl(Component, SetupConfMixin):
    class Form (line 23) | class Form(BaseComponentForm):
      method clean (line 34) | def clean(self):
    method handle (line 47) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/qcloud_sms/toolkit/tools.py
  class QCloudSmsClient (line 17) | class QCloudSmsClient(object):
    method __init__ (line 19) | def __init__(self, http_client):
    method get_random (line 22) | def get_random(self):
    method get_cur_time (line 25) | def get_cur_time(self):
    method calculate_sig (line 28) | def calculate_sig(self, app_key, rnd, cur_time, phone_numbers):
    method post (line 34) | def post(self, path, data):

FILE: paas-ce/paas/esb/components/generic/templates/qcloud_voice/send_voice_msg.py
  class SendVoiceMsg (line 17) | class SendVoiceMsg(Component, SetupConfMixin):
    class Form (line 23) | class Form(BaseComponentForm):
      method kwargs_generator (line 30) | def kwargs_generator(self, data):
      method clean (line 44) | def clean(self):
    method handle (line 52) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/qcloud_voice/toolkit/tools.py
  class QCloudVoiceClient (line 17) | class QCloudVoiceClient(object):
    method __init__ (line 19) | def __init__(self, http_client):
    method get_random (line 22) | def get_random(self):
    method get_cur_time (line 25) | def get_cur_time(self):
    method generate_sig (line 28) | def generate_sig(self, qcloud_app_key, mobile, random_int, now):
    method post (line 32) | def post(self, path, data):

FILE: paas-ce/paas/esb/components/generic/templates/weixin/get_token.py
  class GetToken (line 19) | class GetToken(Component, SetupConfMixin):
    class Form (line 25) | class Form(BaseComponentForm):
    method get_wx_config (line 28) | def get_wx_config(self):
    method handle (line 36) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/weixin_mp/get_token.py
  class GetToken (line 22) | class GetToken(Component, SetupConfMixin):
    class Form (line 28) | class Form(BaseComponentForm):
    method get_wx_token (line 33) | def get_wx_token(self):
    method handle (line 46) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/weixin_mp/send_msg_with_tpl.py
  class SendMsgWithTpl (line 19) | class SendMsgWithTpl(Component, SetupConfMixin):
    class Form (line 25) | class Form(BaseComponentForm):
    method send_msg (line 32) | def send_msg(self, wx_client, access_token, data):
    method get_wx_access_token (line 38) | def get_wx_access_token(self, params, need_new_token=False):
    method handle (line 43) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/weixin_mp/toolkit/tools.py
  class WEIXINClient (line 12) | class WEIXINClient(object):
    method __init__ (line 14) | def __init__(self, http_client):
    method request (line 17) | def request(self, method, path, params=None, data=None):
    method post (line 36) | def post(self, *args, **kwargs):
    method get (line 39) | def get(self, *args, **kwargs):

FILE: paas-ce/paas/esb/components/generic/templates/weixin_qy/get_token.py
  class GetToken (line 17) | class GetToken(Component, SetupConfMixin):
    class Form (line 21) | class Form(BaseComponentForm):
    method handle (line 25) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/weixin_qy/get_user.py
  class GetUser (line 17) | class GetUser(Component, SetupConfMixin):
    class Form (line 21) | class Form(BaseComponentForm):
    method get_wx_access_token (line 26) | def get_wx_access_token(self, params):
    method handle (line 30) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/weixin_qy/send_message.py
  class SendMessage (line 19) | class SendMessage(Component, SetupConfMixin):
    class Form (line 23) | class Form(BaseComponentForm):
    method get_wx_access_token (line 30) | def get_wx_access_token(self, params):
    method handle (line 34) | def handle(self):

FILE: paas-ce/paas/esb/components/generic/templates/weixin_qy/toolkit/tools.py
  class WEIXINClient (line 12) | class WEIXINClient(object):
    method __init__ (line 14) | def __init__(self, http_client):
    method request (line 17) | def request(self, method, path, params=None, data=None):
    method post (line 32) | def post(self, *args, **kwargs):
    method get (line 35) | def get(self, *args, **kwargs):

FILE: paas-ce/paas/esb/esb/apps.py
  class ESBConfig (line 3) | class ESBConfig(AppConfig):

FILE: paas-ce/paas/esb/esb/bkapp/validators.py
  class AppAuthValidator (line 19) | class AppAuthValidator(BaseValidator):
    method __init__ (line 21) | def __init__(self, verified_type='signature_or_app_secret', *args, **k...
    method validate (line 28) | def validate(self, request):
  class AppSecretValidator (line 55) | class AppSecretValidator(BaseValidator):
    method __init__ (line 60) | def __init__(self, *args, **kwargs):
    method validate (line 63) | def validate(self, request):
  class SignatureValidator (line 82) | class SignatureValidator(BaseValidator):
    method __init__ (line 87) | def __init__(self, *args, **kwargs):
    method get_request_path (line 90) | def get_request_path(self, request):
    method validate (line 99) | def validate(self, request):
    method verify_signature (line 126) | def verify_signature(self, method, path, params, signature, valid_app_...
    method check_app_code (line 140) | def check_app_code(self, app_code):
    method check_nonce (line 152) | def check_nonce(self, bk_nonce):
    method check_timestamp (line 166) | def check_timestamp(self, bk_timestamp):
  class AppCodeWhiteListValidator (line 183) | class AppCodeWhiteListValidator(BaseValidator):
    method __init__ (line 185) | def __init__(self, white_list=(), *args, **kwargs):
    method validate (line 189) | def validate(self, request):

FILE: paas-ce/paas/esb/esb/bkauth/models.py
  class User (line 11) | class User(object):
    method __init__ (line 18) | def __init__(self, username):
    method is_authenticated (line 21) | def is_authenticated():
  class AnonymousUser (line 25) | class AnonymousUser(object):
    method is_authenticated (line 32) | def is_authenticated():

FILE: paas-ce/paas/esb/esb/bkauth/validators.py
  class UserAuthValidator (line 14) | class UserAuthValidator(BaseValidator):
    method __init__ (line 19) | def __init__(self, *args, **kwargs):
    method validate (line 22) | def validate(self, request):
    method sync_current_username (line 49) | def sync_current_username(self, request, username):
    method validate_bk_token (line 52) | def validate_bk_token(self):
    method validate_access_token (line 55) | def validate_access_token(self, app_code, access_token):

FILE: paas-ce/paas/esb/esb/bkcore/apps.py
  class BkcoreConfig (line 3) | class BkcoreConfig(AppConfig):

FILE: paas-ce/paas/esb/esb/bkcore/models.py
  class ComponentSystem (line 22) | class ComponentSystem(models.Model):
    class Meta (line 40) | class Meta:
    method __unicode__ (line 44) | def __unicode__(self):
    method is_official (line 48) | def is_official(self):
  class ESBChannel (line 52) | class ESBChannel(models.Model):
    class Meta (line 88) | class Meta:
    method __unicode__ (line 91) | def __unicode__(self):
    method api_path (line 95) | def api_path(self):
    method api_version (line 99) | def api_version(self):
    method channel_conf (line 105) | def channel_conf(self):
    method is_confapi (line 114) | def is_confapi(self):
    method extra_info_json (line 118) | def extra_info_json(self):
  class FunctionController (line 125) | class FunctionController(models.Model):
    class Meta (line 137) | class Meta:
    method __unicode__ (line 140) | def __unicode__(self):
  class UserAuthToken (line 144) | class UserAuthToken(models.Model):
    method __unicode__ (line 154) | def __unicode__(self):
    class Meta (line 157) | class Meta:
    method touch (line 160) | def touch(self):
    method has_expired (line 163) | def has_expired(self):
    method expires_in (line 166) | def expires_in(self):
    method get_info (line 171) | def get_info(self):
  class ESBBuffetComponent (line 183) | class ESBBuffetComponent(models.Model):
    method __unicode__ (line 227) | def __unicode__(self):
    class Meta 
Copy disabled (too large) Download .json
Condensed preview — 3826 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (41,798K chars).
[
  {
    "path": ".gitignore",
    "chars": 1691,
    "preview": "### Python ###\n# Byte-compiled / optimized / DLL files\npaas-ce/paas/paas/media/saas_files/\n__pycache__/\n*.py[cod]\n*$py.c"
  },
  {
    "path": "LICENSE.txt",
    "chars": 22156,
    "preview": "Tencent is pleased to support the open source community by making 蓝鲸智云PaaS平台社区版 (BlueKing PaaS Community Edition) availa"
  },
  {
    "path": "README.md",
    "chars": 3956,
    "preview": "# OpsAny运维PAAS平台\n\nOpsAny-PaaS是基于腾讯开源[bk-PaaS](https://github.com/Tencent/bk-PaaS) 二次开发的运维开发平台,让运维开发者可以方便快捷地创建、开发、部署和管理运维"
  },
  {
    "path": "docs/CONTRIBUTING.md",
    "chars": 788,
    "preview": "# Contributing to bk-PaaS\n\n我们欢迎[report Issues](https://github.com/unixhot/opsany-paas/issues) 或者 [pull requests](https:/"
  },
  {
    "path": "docs/ISSUE_TEMPLATE.md",
    "chars": 1036,
    "preview": "<!--\n感谢提交issue, 在提交前, 请回答下列的问题, 以便更高效地沟通.\n\n另外, 可以先根据关键字搜索issue, 可能已经有其他用户提交过了.\n\n如果是一个 bug反馈. 尽可能提供详细的信息, 否则我们可能无法帮助到你\n\n如"
  },
  {
    "path": "docs/PULL_REQUEST_TEMPLATE.md",
    "chars": 245,
    "preview": "<!--\n请保证PR标题明确清晰, 易于理解\nKeep PR title verbose enough\n\n相关issue可以是 #编号 或者贴 issue链接\n`Fixes #<issue number>`, or `Fixes (past"
  },
  {
    "path": "docs/README.md",
    "chars": 10902,
    "preview": "# PaaS开发环境部署文档\n\n提示:本文档适合开发者在本地开发主机部署PaaS开发环境,大部分情况下是不需要进行PaaS开发的。如果仅仅是开发SaaS平台,不需要参考此文档,可以使用容器化部署OpsAny,然后查看官方文档-开发手册-Sa"
  },
  {
    "path": "install/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "install/README.md",
    "chars": 596,
    "preview": "# 安装目录介绍\n\ninstall是OpsAny社区版的安装脚本存放目录,安装脚本会进行系统初始化,并使用Docker启动所有服务。\n\n## 安装脚本介绍\n\n- paas-install.sh:用来安装PaaS平台,注意,仅安装PaaS平台"
  },
  {
    "path": "install/conf/README.md",
    "chars": 100,
    "preview": "# 安装配置目录\n\n本目录下存放安装时的所有配置文件,安装脚本会将该目录复制到安装的目标路径后,使用sed将相关的配置项进行查找替换,然后所有OpsAny容器启动后,挂载的均为安装目录下的配置文件。\n"
  },
  {
    "path": "install/conf/consul.hcl",
    "chars": 134,
    "preview": "acl {\n   enabled = true\n   default_policy = \"deny\"\n   down_policy = \"extend-cache\"\n   tokens = {\n      master = \"CONSUL_"
  },
  {
    "path": "install/conf/daemon.json",
    "chars": 242,
    "preview": "{\n  \"registry-mirrors\": [\"https://dx5z2hy7.mirror.aliyuncs.com\"],\n   \"insecure-registries\" : [\"nexus.opsany.com:8009\"],\n"
  },
  {
    "path": "install/conf/elastic/apm-server.yml",
    "chars": 196,
    "preview": "apm-server:\n  host: \"0.0.0.0:8200\"\noutput.elasticsearch:\n  hosts: [\"http://ES_SERVER_IP:ELASTIC_PORT\"]\n  auth:\n    secre"
  },
  {
    "path": "install/conf/elastic/elasticsearch.yml",
    "chars": 53,
    "preview": "cluster.name: \"docker-cluster\"\nnetwork.host: 0.0.0.0\n"
  },
  {
    "path": "install/conf/elastic/heartbeat.yml",
    "chars": 7288,
    "preview": "################### Heartbeat Configuration Example #########################\n\n# This file is an example configuration f"
  },
  {
    "path": "install/conf/elastic/kibana.yml",
    "chars": 228,
    "preview": "elasticsearch.hosts: [ \"http://ES_SERVER_IP:ELASTIC_PORT\" ]\nserver.host: \"0.0.0.0\"\nelasticsearch.username: \"ES_USER\"\nela"
  },
  {
    "path": "install/conf/grafana/grafana.ini",
    "chars": 31516,
    "preview": "##################### Grafana Configuration Example #####################\n#\n# Everything has defaults so you only need t"
  },
  {
    "path": "install/conf/grafana/grafana.key",
    "chars": 1679,
    "preview": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA24z73a6FyNu+v/QlOtk7LxIz0oAnM5zyGH57FtO7xK1yNRBO\nQTsA8V0B694uYiOmGl+nwyj"
  },
  {
    "path": "install/conf/grafana/grafana.pem",
    "chars": 2960,
    "preview": "-----BEGIN RSA PRIVATE KEY-----\nMIIEpAIBAAKCAQEA24z73a6FyNu+v/QlOtk7LxIz0oAnM5zyGH57FtO7xK1yNRBO\nQTsA8V0B694uYiOmGl+nwyj"
  },
  {
    "path": "install/conf/kubernetes/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "install/conf/mongodb/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "install/conf/mysql/mysqld.cnf",
    "chars": 1647,
    "preview": "# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.\n#\n# This program is free software; you ca"
  },
  {
    "path": "install/conf/mysqld.cnf",
    "chars": 1647,
    "preview": "# Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.\n#\n# This program is free software; you ca"
  },
  {
    "path": "install/conf/nginx-conf.d/nginx_paas.conf.bak",
    "chars": 6405,
    "preview": "# upstream - web\nupstream OPEN_PAAS {\n    server LOCAL_IP:8001 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_APPEN"
  },
  {
    "path": "install/conf/nginx-conf.d/opsany_paas.conf",
    "chars": 12357,
    "preview": "# upstream for paas\nupstream OPEN_PAAS {\n    server LOCAL_IP:8001 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN_PAAS_AP"
  },
  {
    "path": "install/conf/nginx-conf.d/opsany_paas_k8s.config",
    "chars": 11232,
    "preview": "# upstream for paas\nupstream OPEN_PAAS {\n    server opsany-paas-paas:8001 max_fails=1  fail_timeout=30s;\n}\nupstream OPEN"
  },
  {
    "path": "install/conf/nginx-conf.d/opsany_proxy.conf",
    "chars": 2475,
    "preview": "# upstream - proxy\nupstream OPSANY_PROXY {\n    server LOCAL_IP:8010 max_fails=1  fail_timeout=30s;\n}\n\n# HTTPS\nserver {\n "
  },
  {
    "path": "install/conf/nginx-conf.d/opsany_proxy_k8s.config",
    "chars": 2484,
    "preview": "# upstream - proxy\nupstream OPSANY_PROXY {\n    server opsany-paas-proxy:8010 max_fails=1  fail_timeout=30s;\n}\n\n# HTTPS\ns"
  },
  {
    "path": "install/conf/nginx-conf.d/ssl/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "install/conf/nginx.conf",
    "chars": 1736,
    "preview": "# For more information on configuration, see:\n#   * Official English Documentation: http://nginx.org/en/docs/\n#   * Offi"
  },
  {
    "path": "install/conf/openssl.cnf",
    "chars": 993,
    "preview": "####################################################################\n[ req ]\ndefault_bits\t\t= 2048\ndefault_keyfile \t= pri"
  },
  {
    "path": "install/conf/opsany-paas/appengine/appengine.ini",
    "chars": 370,
    "preview": "[program:opsany-appengine]\ncommand=gunicorn wsgi --bind 0.0.0.0:8000 -k gevent -w 4 -n appengine --access-logfile - --er"
  },
  {
    "path": "install/conf/opsany-paas/appengine/settings_production.py.appengine",
    "chars": 474,
    "preview": "# -*- coding: utf-8 -*-\n\nfrom controller.settings_default import * # noqa\n# Debug\nDEBUG = False\n\n# Log\nLOG_LEVEL = 'ERRO"
  },
  {
    "path": "install/conf/opsany-paas/esb/esb.ini",
    "chars": 346,
    "preview": "[program:opsany-esb]\ncommand=gunicorn wsgi --bind 0.0.0.0:8002 -k gevent -w 8 -n esb --access-logfile - --error-logfile "
  },
  {
    "path": "install/conf/opsany-paas/esb/settings_production.py.esb",
    "chars": 667,
    "preview": "# -*- coding: utf-8 -*-\n\n# Debug\nDEBUG = False\n\n# Database\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.b"
  },
  {
    "path": "install/conf/opsany-paas/login/login.ini",
    "chars": 386,
    "preview": "[program:opsany-login]\ncommand=gunicorn wsgi --bind 0.0.0.0:8003 -k gevent -w 8 -n login --access-logfile - --error-logf"
  },
  {
    "path": "install/conf/opsany-paas/login/settings_production.py.login",
    "chars": 1622,
    "preview": "# -*- coding: utf-8 -*-\n\nfrom conf.default import LOGGING\n\n# Debug\nDEBUG = False\n\n# Log settings\nLOG_LEVEL = 'ERROR'\n\nLO"
  },
  {
    "path": "install/conf/opsany-paas/mcp-server/config.yaml",
    "chars": 459,
    "preview": "apiVersion: v2.3.2\napiService:\n  url: https://DOMAIN_NAME\n  bk_app_code: cmdb\n  bk_app_secret: CMDB_SECRET_KEY\n  super_u"
  },
  {
    "path": "install/conf/opsany-paas/mcp-server/mcp-supervisor.ini",
    "chars": 261,
    "preview": "[program: mcp-server]\ncommand = python3 /opt/opsany/opsany-mcp-server/server.py --config /opt/opsany/opsany-mcp-server/c"
  },
  {
    "path": "install/conf/opsany-paas/mcp-server/mcp.json",
    "chars": 272,
    "preview": "{\n    \"mcpServers\": {\n      \"opsany-mcp-server\": {\n        \"url\": \"http://DOMAIN_NAME:8020/sse\",\n        \"headers\": {\n  "
  },
  {
    "path": "install/conf/opsany-paas/mcp-server/supervisord.conf",
    "chars": 7919,
    "preview": "; Sample supervisor config file.\n\n[unix_http_server]\nfile=/var/run/supervisor.sock   ; (the path to the socket file)\n;ch"
  },
  {
    "path": "install/conf/opsany-paas/paas/paas.ini",
    "chars": 382,
    "preview": "[program:opsany-paas]\ncommand=gunicorn wsgi --bind 0.0.0.0:8001 -k gevent -w 4 -n paas --access-logfile - --error-logfil"
  },
  {
    "path": "install/conf/opsany-paas/paas/settings_production.py.paas",
    "chars": 1067,
    "preview": "# -*- coding: utf-8 -*-\n\n# Debug\nDEBUG = False\n\n# Log settings\nLOG_LEVEL = 'ERROR'\n\n# use the static root 'static' in pr"
  },
  {
    "path": "install/conf/opsany-paas/websocket/settings_production.py.websocket",
    "chars": 3724,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER, MFA_TIME_OUT\nfrom urllib import parse\n\nif RUN_VER == 'open':\n    fro"
  },
  {
    "path": "install/conf/opsany-paas/websocket/settings_production.py.websocket.init",
    "chars": 845,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-paas/websocket/websocket.ini",
    "chars": 383,
    "preview": "[program:websocket]\ncommand=uvicorn --proxy-headers --host 0.0.0.0 --port 8004 asgi:application --workers 4\ndirectory=/o"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-init.py",
    "chars": 1288,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-nginx-main.conf",
    "chars": 3741,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-prod.py",
    "chars": 3086,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas impo"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-supervisor.ini",
    "chars": 900,
    "preview": "[program: apm_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/apm.ini\nstdout_logfile = /opt/opsany/logs/apm/uwsgi.log\nred"
  },
  {
    "path": "install/conf/opsany-saas/apm/apm-uwsgi.ini",
    "chars": 734,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/apm/uwsgi.l"
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-init.py",
    "chars": 960,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-nginx-main.conf",
    "chars": 3743,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-prod.py",
    "chars": 2241,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nfrom urllib import parse\nimport mongoengine\n\nif RUN_VER == 'open':\n  "
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-supervisor.ini",
    "chars": 917,
    "preview": "[program: auto_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/auto.ini\nstdout_logfile = /opt/opsany/logs/auto/uwsgi.log\n"
  },
  {
    "path": "install/conf/opsany-saas/auto/auto-uwsgi.ini",
    "chars": 737,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/auto/uwsgi."
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-init.py",
    "chars": 914,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-nginx-main.conf",
    "chars": 3749,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-prod.py",
    "chars": 4163,
    "preview": "# -*- coding: utf-8 -*-\nfrom urllib import parse\nfrom config import RUN_VER, MFA_TIME_OUT\n\nif RUN_VER == 'open':\n    fro"
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-supervisor.ini",
    "chars": 254,
    "preview": "[program: bastion_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/bastion.ini\nstdout_logfile = /opt/opsany/logs/bastion/u"
  },
  {
    "path": "install/conf/opsany-saas/bastion/bastion-uwsgi.ini",
    "chars": 748,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/bastion/uws"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-init.py",
    "chars": 1072,
    "preview": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2020 OpsAny. All Rights Reserved. \n\n需要配置和开发中心一致的SECRET_KEY,会记录在paas_app表中的a"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-nginx-main.conf",
    "chars": 3743,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-prod.py",
    "chars": 2460,
    "preview": "# -*- coding: utf-8 -*-\n\"\"\"\nCopyright © 2012-2020 OpsAny. All Rights Reserved. \n\n\"\"\" # noqa\nfrom urllib import parse\nfro"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-supervisor.ini",
    "chars": 1017,
    "preview": "[program: cmdb_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/cmdb.ini\nstdout_logfile = /opt/opsany/logs/cmdb/uwsgi.log\n"
  },
  {
    "path": "install/conf/opsany-saas/cmdb/cmdb-uwsgi.ini",
    "chars": 739,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/cmdb/uwsgi."
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-init.py",
    "chars": 881,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-nginx-main.conf",
    "chars": 3741,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-nginx.conf",
    "chars": 818,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-prod.py",
    "chars": 3098,
    "preview": "# -*- coding: utf-8 -*-\nfrom urllib import parse\nfrom config import RUN_VER, MFA_TIME_OUT\nimport mongoengine\n\nif RUN_VER"
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-supervisor.ini",
    "chars": 904,
    "preview": "[program: cmp_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/cmp.ini\nstdout_logfile = /opt/opsany/logs/cmp/uwsgi.log\nred"
  },
  {
    "path": "install/conf/opsany-saas/cmp/cmp-uwsgi.ini",
    "chars": 736,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/cmp/uwsgi.l"
  },
  {
    "path": "install/conf/opsany-saas/code/code-init.py",
    "chars": 965,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/code/code-nginx-main.conf",
    "chars": 3743,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/code/code-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/code/code-prod.py",
    "chars": 1503,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas imp"
  },
  {
    "path": "install/conf/opsany-saas/code/code-supervisor.ini",
    "chars": 246,
    "preview": "[program: code_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/code.ini\nstdout_logfile = /opt/opsany/logs/code/uwsgi.log\n"
  },
  {
    "path": "install/conf/opsany-saas/code/code-uwsgi.ini",
    "chars": 739,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/code/uwsgi."
  },
  {
    "path": "install/conf/opsany-saas/control/control-init.py",
    "chars": 1169,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/control/control-nginx-main.conf",
    "chars": 3749,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/control/control-nginx.conf",
    "chars": 818,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/control/control-prod.py",
    "chars": 4312,
    "preview": "# -*- coding: utf-8 -*-\nfrom urllib import parse\n\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.pa"
  },
  {
    "path": "install/conf/opsany-saas/control/control-supervisor.ini",
    "chars": 1072,
    "preview": "[program: control_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/control.ini\nstdout_logfile = /opt/opsany/logs/control/u"
  },
  {
    "path": "install/conf/opsany-saas/control/control-uwsgi.ini",
    "chars": 748,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/control/uws"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-init.py",
    "chars": 780,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-nginx-main.conf",
    "chars": 3753,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-prod.py",
    "chars": 1534,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas impo"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-supervisor.ini",
    "chars": 260,
    "preview": "[program: dashboard_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/dashboard.ini\nstdout_logfile = /opt/opsany/logs/dashb"
  },
  {
    "path": "install/conf/opsany-saas/dashboard/dashboard-uwsgi.ini",
    "chars": 664,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile2 = /opt/opsany/uwsgi/uwsgi.pid\nlogto2 = /opt/opsany/logs/dashboard"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-init.py",
    "chars": 977,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-nginx-main.conf",
    "chars": 3747,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-prod.py",
    "chars": 2346,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nfrom urllib import parse\n\nif RUN_VER == 'open':\n    from blueapps.pat"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-supervisor.ini",
    "chars": 614,
    "preview": "[program: deploy_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/deploy.ini\nstdout_logfile = /opt/opsany/logs/deploy/uwsg"
  },
  {
    "path": "install/conf/opsany-saas/deploy/deploy-uwsgi.ini",
    "chars": 745,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/deploy/uwsg"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-init.py",
    "chars": 1137,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-nginx-main.conf",
    "chars": 3747,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-prod.py",
    "chars": 2404,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas imp"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-supervisor.ini",
    "chars": 614,
    "preview": "[program: devops_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/devops.ini\nstdout_logfile = /opt/opsany/logs/devops/uwsg"
  },
  {
    "path": "install/conf/opsany-saas/devops/devops-uwsgi.ini",
    "chars": 745,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/devops/uwsg"
  },
  {
    "path": "install/conf/opsany-saas/event/event-init.py",
    "chars": 999,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/event/event-nginx-main.conf",
    "chars": 3745,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/event/event-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/event/event-prod.py",
    "chars": 2398,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas impo"
  },
  {
    "path": "install/conf/opsany-saas/event/event-supervisor.ini",
    "chars": 929,
    "preview": "[program: event_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/event.ini\nstdout_logfile = /opt/opsany/logs/event/uwsgi.l"
  },
  {
    "path": "install/conf/opsany-saas/event/event-uwsgi.ini",
    "chars": 742,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/event/uwsgi"
  },
  {
    "path": "install/conf/opsany-saas/foot/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "install/conf/opsany-saas/foot/config.yml",
    "chars": 882,
    "preview": "# Paas域名地址(用来获取堡垒机主机数据)\nPAAS_DOMAIN: DOMAIN_NAME\n# 绑定IP\nBIND_HOST: 0.0.0.0\n# 绑定端口\nSSHD_PORT: 8013\n# 堡垒机秘钥用来解析密码\nSECRET_K"
  },
  {
    "path": "install/conf/opsany-saas/foot/foot-supervisor.ini",
    "chars": 215,
    "preview": "[program: foot]\ncommand = python3 /opt/opsany/bastion-foot/maind start\nstdout_logfile = /opt/opsany/logs/foot/server.log"
  },
  {
    "path": "install/conf/opsany-saas/job/job-init.py",
    "chars": 1167,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/job/job-nginx-main.conf",
    "chars": 3741,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/job/job-nginx.conf",
    "chars": 818,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/job/job-prod.py",
    "chars": 2755,
    "preview": "# -*- coding: utf-8 -*-\nfrom urllib import parse\n\nfrom config import RUN_VER\nimport mongoengine\nif RUN_VER == 'open':\n  "
  },
  {
    "path": "install/conf/opsany-saas/job/job-supervisor.ini",
    "chars": 904,
    "preview": "[program: job_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/job.ini\nstdout_logfile = /opt/opsany/logs/job/uwsgi.log\nred"
  },
  {
    "path": "install/conf/opsany-saas/job/job-uwsgi.ini",
    "chars": 736,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/job/uwsgi.l"
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-init.py",
    "chars": 818,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-nginx-main.conf",
    "chars": 3741,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-prod.py",
    "chars": 2413,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas impo"
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-supervisor.ini",
    "chars": 905,
    "preview": "[program: k8s_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/k8s.ini\nstdout_logfile = /opt/opsany/logs/k8s/uwsgi.log\nred"
  },
  {
    "path": "install/conf/opsany-saas/k8s/k8s-uwsgi.ini",
    "chars": 735,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/k8s/uwsgi.l"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-init.py",
    "chars": 975,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-nginx-main.conf",
    "chars": 3745,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-prod.py",
    "chars": 2271,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas imp"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-supervisor.ini",
    "chars": 249,
    "preview": "[program: kbase_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/kbase.ini\nstdout_logfile = /opt/opsany/logs/kbase/uwsgi.l"
  },
  {
    "path": "install/conf/opsany-saas/kbase/kbase-uwsgi.ini",
    "chars": 741,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/kbase/uwsgi"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-init.py",
    "chars": 973,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-nginx-main.conf",
    "chars": 3747,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-prod.py",
    "chars": 2825,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas impo"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-supervisor.ini",
    "chars": 251,
    "preview": "[program: llmops_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/llmops.ini\nstdout_logfile = /opt/opsany/logs/llmops/uwsg"
  },
  {
    "path": "install/conf/opsany-saas/llmops/llmops-uwsgi.ini",
    "chars": 808,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/llmops/uwsg"
  },
  {
    "path": "install/conf/opsany-saas/log/log-init.py",
    "chars": 971,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/log/log-nginx-main.conf",
    "chars": 3741,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/log/log-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/log/log-prod.py",
    "chars": 1501,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open_saas imp"
  },
  {
    "path": "install/conf/opsany-saas/log/log-supervisor.ini",
    "chars": 243,
    "preview": "[program: log_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/log.ini\nstdout_logfile = /opt/opsany/logs/log/uwsgi.log\nred"
  },
  {
    "path": "install/conf/opsany-saas/log/log-uwsgi.ini",
    "chars": 735,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/log/uwsgi.l"
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-init.py",
    "chars": 1254,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-nginx-main.conf",
    "chars": 3749,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-nginx.conf",
    "chars": 818,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-prod.py",
    "chars": 1893,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER, default\nfrom urllib import parse\n\n\nif RUN_VER == 'open':\n    from bl"
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-supervisor.ini",
    "chars": 255,
    "preview": "[program: monitor_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/monitor.ini\nstdout_logfile = /opt/opsany/logs/monitor/u"
  },
  {
    "path": "install/conf/opsany-saas/monitor/monitor-uwsgi.ini",
    "chars": 748,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/monitor/uws"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-init.py",
    "chars": 970,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-nginx-main.conf",
    "chars": 3751,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-prod.py",
    "chars": 2358,
    "preview": "# -*- coding: utf-8 -*-\nfrom urllib import parse\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.pat"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-supervisor.ini",
    "chars": 631,
    "preview": "[program: pipeline_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/pipeline.ini\nstdout_logfile = /opt/opsany/logs/pipelin"
  },
  {
    "path": "install/conf/opsany-saas/pipeline/pipeline-uwsgi.ini",
    "chars": 751,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/pipeline/uw"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-init.py",
    "chars": 1149,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-nginx-main.conf",
    "chars": 3743,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-prod.py",
    "chars": 2897,
    "preview": "# -*- coding: utf-8 -*-\nfrom config import RUN_VER, default\n\nif RUN_VER == 'open':\n    from blueapps.patch.settings_open"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-supervisor.ini",
    "chars": 917,
    "preview": "[program: prom_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/prom.ini\nstdout_logfile = /opt/opsany/logs/prom/uwsgi.log\n"
  },
  {
    "path": "install/conf/opsany-saas/prom/prom-uwsgi.ini",
    "chars": 738,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/prom/uwsgi."
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-init.py",
    "chars": 1016,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-nginx-main.conf",
    "chars": 3743,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-prod.py",
    "chars": 2703,
    "preview": "# -*- coding: utf-8 -*-\nfrom urllib import parse\nfrom config import RUN_VER, UPLOAD_PATH\nif RUN_VER == 'open':\n    from "
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-supervisor.ini",
    "chars": 917,
    "preview": "[program: rbac_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/rbac.ini\nstdout_logfile = /opt/opsany/logs/rbac/uwsgi.log\n"
  },
  {
    "path": "install/conf/opsany-saas/rbac/rbac-uwsgi.ini",
    "chars": 738,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/rbac/uwsgi."
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-init.py",
    "chars": 962,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-nginx-main.conf",
    "chars": 3743,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-nginx.conf",
    "chars": 817,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-prod.py",
    "chars": 2460,
    "preview": "# -*- coding: utf-8 -*-\nfrom urllib import parse\nfrom config import RUN_VER\n\nif RUN_VER == 'open':\n    from blueapps.pat"
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-supervisor.ini",
    "chars": 246,
    "preview": "[program: repo_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/repo.ini\nstdout_logfile = /opt/opsany/logs/repo/uwsgi.log\n"
  },
  {
    "path": "install/conf/opsany-saas/repo/repo-uwsgi.ini",
    "chars": 739,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/repo/uwsgi."
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-init.py",
    "chars": 1072,
    "preview": "# -*- coding: utf-8 -*-\nfrom __future__ import absolute_import\n\n__all__ = ['celery_app', 'RUN_VER', 'APP_CODE', 'SECRET_"
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-nginx-main.conf",
    "chars": 3753,
    "preview": "# /etc/nginx/nginx.conf\n\nuser root;\n\n# Set number of worker processes automatically based on number of CPU cores.\nworker"
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-nginx.conf",
    "chars": 818,
    "preview": "server {\n    listen 80 default_server;\n    listen [::]:80 default_server;\n    # gzip config\n    gzip on;\n    gzip_min_le"
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-prod.py",
    "chars": 3674,
    "preview": "# -*- coding: utf-8 -*-\nfrom urllib import parse\n\nimport mongoengine\nfrom config import RUN_VER\nif RUN_VER == 'open':\n  "
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-supervisor.ini",
    "chars": 1096,
    "preview": "[program: workbench_uwsgi]\ncommand = uwsgi --ini /opt/opsany/uwsgi/workbench.ini\nstdout_logfile = /opt/opsany/logs/workb"
  },
  {
    "path": "install/conf/opsany-saas/workbench/workbench-uwsgi.ini",
    "chars": 754,
    "preview": "[uwsgi]\nsocket = /opt/opsany/uwsgi/uwsgi.sock\npidfile = /opt/opsany/uwsgi/uwsgi.pid\nlogto = /opt/opsany/logs/workbench/u"
  },
  {
    "path": "install/conf/paas_agent/paas_agent_config.yaml",
    "chars": 513,
    "preview": "auth:\n  sid: BK_PAASAGENT_SID\n  token: BK_PAASAGENT_TOKEN\nsettings:\n  CONTROLLER_SERVER_URL: 'http://LOCAL_IP:8000' # Ap"
  },
  {
    "path": "install/conf/paas_agent/paasagent.conf",
    "chars": 980,
    "preview": "server {\n    listen       \t8085;\n    server_name\t \tlocalhost;\n    # gzip config\n    gzip on;\n    gzip_min_length 1k;\n   "
  },
  {
    "path": "install/conf/paas_agent/supervisord.conf",
    "chars": 1770,
    "preview": "[unix_http_server]\nfile = {{.app_project_path}}/{{.app_code}}/run/supervisord.sock\n\n[supervisorctl]\nconfiguration = {{.a"
  },
  {
    "path": "install/conf/paas_agent/uwsgi.ini.16g",
    "chars": 686,
    "preview": "[uwsgi]\nsocket = {{.app_project_path}}/{{.app_code}}/run/uwsgi.sock\npidfile2 = {{.app_project_path}}/{{.app_code}}/run/u"
  },
  {
    "path": "install/conf/paas_agent/uwsgi.ini.8g",
    "chars": 686,
    "preview": "[uwsgi]\nsocket = {{.app_project_path}}/{{.app_code}}/run/uwsgi.sock\npidfile2 = {{.app_project_path}}/{{.app_code}}/run/u"
  },
  {
    "path": "install/conf/prometheus/alertmanager.yml",
    "chars": 417,
    "preview": "templates:\n  - '/etc/alertmanager/template/*.tmpl'  #告警模板位置\n\nroute:\n  group_by: ['alertname']\n  group_wait: 30s\n  group_"
  },
  {
    "path": "install/conf/prometheus/blackbox.yml",
    "chars": 956,
    "preview": "modules:\n  http_2xx:\n    prober: http\n    http:\n      preferred_ip_protocol: \"ip4\"\n  http_post_2xx:\n    prober: http\n   "
  },
  {
    "path": "install/conf/prometheus/prometheus.yml",
    "chars": 3430,
    "preview": "# my global config\nglobal:\n  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minu"
  },
  {
    "path": "install/conf/prometheus/web.yml",
    "chars": 46,
    "preview": "basic_auth_users:\n    admin: PROM_SERVER_HASH\n"
  },
  {
    "path": "install/conf/proxy/nginx-conf.d/nginx_proxy.conf",
    "chars": 2449,
    "preview": "# upstream - proxy\nupstream OPSANY_PROXY {\n    server LOCAL_IP:8010 max_fails=1  fail_timeout=30s;\n}\n\n# HTTP\nserver {\n  "
  },
  {
    "path": "install/conf/proxy/nginx-conf.d/ssl/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "install/conf/proxy/nginx-conf.d/ssl/opsany-proxy.key",
    "chars": 1675,
    "preview": "-----BEGIN RSA PRIVATE KEY-----\nMIIEowIBAAKCAQEAqa3V0oAfc59DQ01uGJAy6fJ5zQ+9HqsfSUD20Wbb8rCcltoV\nHjt5gLS+jyrhlreEaswxid8"
  },
  {
    "path": "install/conf/proxy/nginx-conf.d/ssl/opsany-proxy.pem",
    "chars": 3805,
    "preview": "-----BEGIN CERTIFICATE-----\nMIIF9TCCBN2gAwIBAgIQC5qO6QG0JQEkiFZqQ9aSozANBgkqhkiG9w0BAQsFADBu\nMQswCQYDVQQGEwJVUzEVMBMGA1U"
  },
  {
    "path": "install/conf/proxy/nginx.conf",
    "chars": 2604,
    "preview": "# For more information on configuration, see:\n#   * Official English Documentation: http://nginx.org/en/docs/\n#   * Offi"
  },
  {
    "path": "install/conf/proxy/proxy.ini",
    "chars": 844,
    "preview": "[program:opsany-proxy]\ncommand=gunicorn wsgi --bind 0.0.0.0:8010 -k gevent -w 3 -n proxy --access-logfile - --error-logf"
  },
  {
    "path": "install/conf/proxy/saltapi.ini",
    "chars": 168,
    "preview": "[program:salt-api]\ncommand=/usr/local/bin/salt-api \nautostart=true\npriority=20\nautorestart=true\nredirect_stderr=true\nstd"
  },
  {
    "path": "install/conf/proxy/saltmaster.ini",
    "chars": 176,
    "preview": "[program:salt-master]\ncommand=/usr/local/bin/salt-master\nautostart=true\npriority=10\nautorestart=true\nredirect_stderr=tru"
  },
  {
    "path": "install/conf/proxy/settings_production.py.proxy",
    "chars": 2720,
    "preview": "# -*- coding: utf-8 -*-\n# 正式环境\nimport os\nfrom urllib import parse\nfrom config.default import *\n\nRUN_MODE = 'PRODUCT'\n\nDE"
  },
  {
    "path": "install/conf/proxy/settings_production.py.proxy-standalone",
    "chars": 2720,
    "preview": "# -*- coding: utf-8 -*-\n# 正式环境\nimport os\nfrom urllib import parse\nfrom config.default import *\n\nRUN_MODE = 'PRODUCT'\n\nDE"
  }
]

// ... and 3626 more files (download for full content)

About this extraction

This page contains the full source code of the unixhot/opsany-paas GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3826 files (36.4 MB), approximately 9.8M tokens, and a symbol index with 103577 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!