Skip to content

Commit

Permalink
merge
Browse files Browse the repository at this point in the history
  • Loading branch information
evell1992 committed Apr 22, 2024
2 parents a988c50 + e522d48 commit 41ac596
Show file tree
Hide file tree
Showing 34 changed files with 349 additions and 442 deletions.
97 changes: 97 additions & 0 deletions docs/zh/api/v2/period.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# period

## 简介

kubespider支持通过指定binding配置来创建周期性运行的任务

## api

headers: {"Authorization":"bearer {your token}"}

### 查询周期任务列表 /api/v2/period [GET]

```json
{
"code": 200,
"data": [
{
"arguments": {
"keyword": "寄生兽"
},
"bindings": [
{
"id": 1,
"name": "mt"
}
],
"enable": false,
"id": 1,
"name": "search test",
"task_type": "search",
"tigger_config": {
"hours": 0,
"minutes": 0,
"seconds": 10
},
"tigger_type": "interval"
}
],
"msg": "Ok"
}
```

### 创建/更新周期任务 /api/v2/period [POST]

入参示例: interval类型的周期任务,带id为更新,不带id为新增
todo: 支持date,cron类型的周期任务

```json
{
"name": "search test",
"task_type": "search",
"arguments": {
"keyword": "寄生兽"
},
"tigger_type": "interval",
"tigger_config": {
"hours": 0,
"minutes": 0,
"seconds": 60
},
"bindings": [1,2],
"id":1
}
```

```json
{
"code": 200,
"data": null,
"msg": "Ok"
}
```

### 删除周期任务 /api/v2/period/<int:task_id> [DELETE]
```json
{
"code": 200,
"data": null,
"msg": "Ok"
}
```
### 启用/禁用周期任务 /api/v2/period/operate [PUT]

```json
{
"id":1,
"enable":true
}
```

```json
{
"code": 200,
"data": null,
"msg": "Ok"
}
```
3 changes: 0 additions & 3 deletions kubespider/api/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,6 @@ def api_server_error(error):
logging.error(traceback.format_exc())
return server_error(msg=str(error))

from api.v1 import v1_blu, health_blu
from api.v2 import v2_blu
app.register_blueprint(v1_blu)
app.register_blueprint(health_blu)
app.register_blueprint(v2_blu)
return app
21 changes: 0 additions & 21 deletions kubespider/api/v1/__init__.py

This file was deleted.

95 changes: 0 additions & 95 deletions kubespider/api/v1/views.py

This file was deleted.

2 changes: 1 addition & 1 deletion kubespider/api/v2/binding/views.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import json
from flask import request, current_app
from flask import request
from api.response import success
from api.v2.binding import binding_blu
from core.plugin.binding import plugin_binding
Expand Down
27 changes: 18 additions & 9 deletions kubespider/api/v2/period/views.py
Original file line number Diff line number Diff line change
@@ -1,19 +1,17 @@
import json
from flask import request, current_app
from api.response import success, param_error
from flask import request
from api.response import success
from api.v2.period import period_blu
from core.period_manager import period_manager


@period_blu.route('', methods=['GET'])
def get_period_task():
period_manager = current_app.extensions["period_manager"]
tasks = period_manager.get_tasks()
return success(tasks)


@period_blu.route('', methods=['POST'])
def modify_period_task():
period_manager = current_app.extensions["period_manager"]
def create_or_update_period_task():
body: dict = request.json
name: str = body.get("name")
task_type: str = body.get("task_type")
Expand All @@ -26,8 +24,19 @@ def modify_period_task():
return success()


@period_blu.route('/<task_id>', methods=['DELETE'])
def delete_period_task(task_id):
period_manager = current_app.extensions["period_manager"]
@period_blu.route('/<int:task_id>', methods=['DELETE'])
def delete_period_task(task_id: int):
period_manager.delete_task(task_id)
return success()


@period_blu.route('/operate', methods=['PUT'])
def operate_period_task():
body: dict = request.json
task_id: int = body.get("id")
enable: bool = body.get("enable", False)
if enable:
period_manager.enable(task_id)
else:
period_manager.disable(task_id)
return success()
4 changes: 0 additions & 4 deletions kubespider/api/v2/plugin/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,6 @@ def register_from_remote():
if 'definition' not in data:
raise Exception("definition is required")
definition = get_definition(data['definition'])
if plugin_manager.get_plugin(definition.name):
plugin_manager.unregister(definition.name)
plugin_manager.register(definition)
return success()

Expand All @@ -61,8 +59,6 @@ def register_from_local():
if not all([definition_file, binary]):
return param_error(msg="definition and binary cannot be empty")
definition = get_definition(definition_file.read())
if plugin_manager.get_plugin(definition.name):
plugin_manager.unregister(definition.name)
plugin_manager.register(definition, binary.read())
return success()

Expand Down
6 changes: 2 additions & 4 deletions kubespider/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
import os

from core import runner
from models.migrate import migrate


def check_python_version():
Expand All @@ -12,10 +13,6 @@ def check_python_version():
raise Exception(msg)


def migrate():
pass


def print_logo():
print(r'''
_ _ _ _
Expand All @@ -31,6 +28,7 @@ def print_logo():


def main():
migrate()
runner.run()


Expand Down
36 changes: 0 additions & 36 deletions kubespider/core/config_handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@

import logging
import os
import time
from multiprocessing import Process
import shutil
from watchdog.events import FileSystemEventHandler, FileModifiedEvent

from utils.values import Config
from utils.config_reader import YamlFileSectionConfigReader, YamlFileConfigReader
Expand Down Expand Up @@ -46,39 +43,6 @@
}


class ConfigHandler(FileSystemEventHandler):

def __init__(self, run):
self.run = run
self.p_run = Process(target=run)
self.p_run.start()

def on_modified(self, event: FileModifiedEvent):
filepath = os.path.basename(event.src_path)

monitor_files = [
str(Config.DOWNLOAD_PROVIDER),
str(Config.KUBESPIDER_CONFIG),
str(Config.PT_PROVIDER),
str(Config.SOURCE_PROVIDER),
str(Config.NOTIFICATION_PROVIDER),
]
if filepath not in monitor_files:
return
logging.info("%s file has be changed, the kubespider will reboot", event.src_path)

# wait some file handling process finish, to avoid config getting empty
time.sleep(3)
self.p_run.terminate()

if self.p_run.is_alive():
self.p_run.kill()

new_p_run = Process(target=self.run)
new_p_run.start()
self.p_run = new_p_run


def get_source_provider(provider_name: str, config: dict):
provider_type = config['type']
try:
Expand Down
Loading

0 comments on commit 41ac596

Please sign in to comment.