intellistream-sage-cli


Nameintellistream-sage-cli JSON
Version 0.1.4 PyPI version JSON
download
home_pageNone
SummarySAGE Framework - 命令行工具包,提供集群管理、作业部署和配置管理功能
upload_time2025-08-08 13:33:20
maintainerNone
docs_urlNone
authorNone
requires_python>=3.10
licenseMIT
keywords cli command-line sage cluster management deployment job ray intellistream
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # SAGE CLI

SAGE Framework 的命令行工具包,提供集群管理、作业部署和配置管理功能。

## 功能特性

### 🚀 核心功能
- **集群管理**: Ray 集群的启动、停止和监控
- **作业管理**: SAGE 作业的提交、监控和管理  
- **部署管理**: 系统组件的一键部署和配置
- **配置管理**: 统一的配置文件管理和环境设置

### 📋 命令概览
- `sage config` - 配置管理
- `sage deploy` - 系统部署
- `sage job` - 作业管理
- `sage cluster` - 集群管理
- `sage worker` - Worker 节点管理
- `sage head` - Head 节点管理

## 安装

```bash
pip install intsage-cli
```

### 开发安装
```bash
pip install intsage-cli[dev]
```

### 完整功能安装
```bash
pip install intsage-cli[full]
```

## 快速开始

### 1. 初始化配置
```bash
sage config init
```

### 2. 启动 SAGE 系统
```bash
sage deploy start
```

### 3. 检查系统状态
```bash
sage cluster status
```

### 4. 提交作业
```bash
sage job submit my_job.py
```

## 命令参考

### 配置管理 (`sage config`)
```bash
# 显示所有配置
sage config show

# 设置配置项
sage config set ray.head_port 10001

# 获取配置项
sage config get ray.head_port
```

### 部署管理 (`sage deploy`)
```bash
# 启动完整系统 (Ray + JobManager)
sage deploy start

# 仅启动 Ray 集群
sage deploy start --ray-only

# 仅启动 JobManager
sage deploy start --daemon-only

# 停止系统
sage deploy stop
```

### 集群管理 (`sage cluster`)
```bash
# 查看集群状态
sage cluster status

# 启动集群
sage cluster start

# 停止集群
sage cluster stop

# 重启集群
sage cluster restart
```

### 作业管理 (`sage job`)
```bash
# 提交作业
sage job submit script.py

# 查看作业状态
sage job status [job_id]

# 列出所有作业
sage job list

# 取消作业
sage job cancel job_id

# 查看作业日志
sage job logs job_id
```

## 配置文件

CLI 工具使用 `~/.sage/config.yaml` 作为默认配置文件:

```yaml
ray:
  head_port: 10001
  dashboard_port: 8265
  object_store_memory: 1000000000

jobmanager:
  port: 8080
  max_jobs: 100

deployment:
  log_level: INFO
  auto_scaling: true
```

## 环境变量

- `SAGE_CONFIG_PATH`: 自定义配置文件路径
- `SAGE_LOG_LEVEL`: 日志级别 (DEBUG, INFO, WARNING, ERROR)
- `RAY_ADDRESS`: Ray 集群地址
- `SAGE_HOME`: SAGE 安装目录

## 开发

### 项目结构
```
src/sage/cli/
├── __init__.py              # CLI 模块初始化
├── main.py                  # 主命令入口点
├── config_manager.py        # 配置管理
├── deploy.py               # 部署管理
├── job.py                  # 作业管理  
├── cluster_manager.py      # 集群管理
├── worker_manager.py       # Worker 管理
├── head_manager.py         # Head 节点管理
├── jobmanager_controller.py # JobManager 控制器
└── extensions.py           # 扩展管理
```

### 运行测试
```bash
pytest tests/
```

### 代码格式化
```bash
black src/sage/cli/
ruff check src/sage/cli/
```

## 许可证

MIT License - 详见 [LICENSE](../../LICENSE) 文件。

## 贡献

欢迎贡献代码!请查看 [CONTRIBUTING.md](../../CONTRIBUTING.md) 了解详细指南。

## 支持

- 📖 [文档](https://intellistream.github.io/SAGE-Pub/)
- 🐛 [问题报告](https://github.com/intellistream/SAGE/issues)
- 💬 [讨论](https://github.com/intellistream/SAGE/discussions)

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "intellistream-sage-cli",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "cli, command-line, sage, cluster, management, deployment, job, ray, intellistream",
    "author": null,
    "author_email": "IntelliStream Team <intellistream@outlook.com>",
    "download_url": null,
    "platform": null,
    "description": "# SAGE CLI\n\nSAGE Framework \u7684\u547d\u4ee4\u884c\u5de5\u5177\u5305\uff0c\u63d0\u4f9b\u96c6\u7fa4\u7ba1\u7406\u3001\u4f5c\u4e1a\u90e8\u7f72\u548c\u914d\u7f6e\u7ba1\u7406\u529f\u80fd\u3002\n\n## \u529f\u80fd\u7279\u6027\n\n### \ud83d\ude80 \u6838\u5fc3\u529f\u80fd\n- **\u96c6\u7fa4\u7ba1\u7406**: Ray \u96c6\u7fa4\u7684\u542f\u52a8\u3001\u505c\u6b62\u548c\u76d1\u63a7\n- **\u4f5c\u4e1a\u7ba1\u7406**: SAGE \u4f5c\u4e1a\u7684\u63d0\u4ea4\u3001\u76d1\u63a7\u548c\u7ba1\u7406  \n- **\u90e8\u7f72\u7ba1\u7406**: \u7cfb\u7edf\u7ec4\u4ef6\u7684\u4e00\u952e\u90e8\u7f72\u548c\u914d\u7f6e\n- **\u914d\u7f6e\u7ba1\u7406**: \u7edf\u4e00\u7684\u914d\u7f6e\u6587\u4ef6\u7ba1\u7406\u548c\u73af\u5883\u8bbe\u7f6e\n\n### \ud83d\udccb \u547d\u4ee4\u6982\u89c8\n- `sage config` - \u914d\u7f6e\u7ba1\u7406\n- `sage deploy` - \u7cfb\u7edf\u90e8\u7f72\n- `sage job` - \u4f5c\u4e1a\u7ba1\u7406\n- `sage cluster` - \u96c6\u7fa4\u7ba1\u7406\n- `sage worker` - Worker \u8282\u70b9\u7ba1\u7406\n- `sage head` - Head \u8282\u70b9\u7ba1\u7406\n\n## \u5b89\u88c5\n\n```bash\npip install intsage-cli\n```\n\n### \u5f00\u53d1\u5b89\u88c5\n```bash\npip install intsage-cli[dev]\n```\n\n### \u5b8c\u6574\u529f\u80fd\u5b89\u88c5\n```bash\npip install intsage-cli[full]\n```\n\n## \u5feb\u901f\u5f00\u59cb\n\n### 1. \u521d\u59cb\u5316\u914d\u7f6e\n```bash\nsage config init\n```\n\n### 2. \u542f\u52a8 SAGE \u7cfb\u7edf\n```bash\nsage deploy start\n```\n\n### 3. \u68c0\u67e5\u7cfb\u7edf\u72b6\u6001\n```bash\nsage cluster status\n```\n\n### 4. \u63d0\u4ea4\u4f5c\u4e1a\n```bash\nsage job submit my_job.py\n```\n\n## \u547d\u4ee4\u53c2\u8003\n\n### \u914d\u7f6e\u7ba1\u7406 (`sage config`)\n```bash\n# \u663e\u793a\u6240\u6709\u914d\u7f6e\nsage config show\n\n# \u8bbe\u7f6e\u914d\u7f6e\u9879\nsage config set ray.head_port 10001\n\n# \u83b7\u53d6\u914d\u7f6e\u9879\nsage config get ray.head_port\n```\n\n### \u90e8\u7f72\u7ba1\u7406 (`sage deploy`)\n```bash\n# \u542f\u52a8\u5b8c\u6574\u7cfb\u7edf (Ray + JobManager)\nsage deploy start\n\n# \u4ec5\u542f\u52a8 Ray \u96c6\u7fa4\nsage deploy start --ray-only\n\n# \u4ec5\u542f\u52a8 JobManager\nsage deploy start --daemon-only\n\n# \u505c\u6b62\u7cfb\u7edf\nsage deploy stop\n```\n\n### \u96c6\u7fa4\u7ba1\u7406 (`sage cluster`)\n```bash\n# \u67e5\u770b\u96c6\u7fa4\u72b6\u6001\nsage cluster status\n\n# \u542f\u52a8\u96c6\u7fa4\nsage cluster start\n\n# \u505c\u6b62\u96c6\u7fa4\nsage cluster stop\n\n# \u91cd\u542f\u96c6\u7fa4\nsage cluster restart\n```\n\n### \u4f5c\u4e1a\u7ba1\u7406 (`sage job`)\n```bash\n# \u63d0\u4ea4\u4f5c\u4e1a\nsage job submit script.py\n\n# \u67e5\u770b\u4f5c\u4e1a\u72b6\u6001\nsage job status [job_id]\n\n# \u5217\u51fa\u6240\u6709\u4f5c\u4e1a\nsage job list\n\n# \u53d6\u6d88\u4f5c\u4e1a\nsage job cancel job_id\n\n# \u67e5\u770b\u4f5c\u4e1a\u65e5\u5fd7\nsage job logs job_id\n```\n\n## \u914d\u7f6e\u6587\u4ef6\n\nCLI \u5de5\u5177\u4f7f\u7528 `~/.sage/config.yaml` \u4f5c\u4e3a\u9ed8\u8ba4\u914d\u7f6e\u6587\u4ef6\uff1a\n\n```yaml\nray:\n  head_port: 10001\n  dashboard_port: 8265\n  object_store_memory: 1000000000\n\njobmanager:\n  port: 8080\n  max_jobs: 100\n\ndeployment:\n  log_level: INFO\n  auto_scaling: true\n```\n\n## \u73af\u5883\u53d8\u91cf\n\n- `SAGE_CONFIG_PATH`: \u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u8def\u5f84\n- `SAGE_LOG_LEVEL`: \u65e5\u5fd7\u7ea7\u522b (DEBUG, INFO, WARNING, ERROR)\n- `RAY_ADDRESS`: Ray \u96c6\u7fa4\u5730\u5740\n- `SAGE_HOME`: SAGE \u5b89\u88c5\u76ee\u5f55\n\n## \u5f00\u53d1\n\n### \u9879\u76ee\u7ed3\u6784\n```\nsrc/sage/cli/\n\u251c\u2500\u2500 __init__.py              # CLI \u6a21\u5757\u521d\u59cb\u5316\n\u251c\u2500\u2500 main.py                  # \u4e3b\u547d\u4ee4\u5165\u53e3\u70b9\n\u251c\u2500\u2500 config_manager.py        # \u914d\u7f6e\u7ba1\u7406\n\u251c\u2500\u2500 deploy.py               # \u90e8\u7f72\u7ba1\u7406\n\u251c\u2500\u2500 job.py                  # \u4f5c\u4e1a\u7ba1\u7406  \n\u251c\u2500\u2500 cluster_manager.py      # \u96c6\u7fa4\u7ba1\u7406\n\u251c\u2500\u2500 worker_manager.py       # Worker \u7ba1\u7406\n\u251c\u2500\u2500 head_manager.py         # Head \u8282\u70b9\u7ba1\u7406\n\u251c\u2500\u2500 jobmanager_controller.py # JobManager \u63a7\u5236\u5668\n\u2514\u2500\u2500 extensions.py           # \u6269\u5c55\u7ba1\u7406\n```\n\n### \u8fd0\u884c\u6d4b\u8bd5\n```bash\npytest tests/\n```\n\n### \u4ee3\u7801\u683c\u5f0f\u5316\n```bash\nblack src/sage/cli/\nruff check src/sage/cli/\n```\n\n## \u8bb8\u53ef\u8bc1\n\nMIT License - \u8be6\u89c1 [LICENSE](../../LICENSE) \u6587\u4ef6\u3002\n\n## \u8d21\u732e\n\n\u6b22\u8fce\u8d21\u732e\u4ee3\u7801\uff01\u8bf7\u67e5\u770b [CONTRIBUTING.md](../../CONTRIBUTING.md) \u4e86\u89e3\u8be6\u7ec6\u6307\u5357\u3002\n\n## \u652f\u6301\n\n- \ud83d\udcd6 [\u6587\u6863](https://intellistream.github.io/SAGE-Pub/)\n- \ud83d\udc1b [\u95ee\u9898\u62a5\u544a](https://github.com/intellistream/SAGE/issues)\n- \ud83d\udcac [\u8ba8\u8bba](https://github.com/intellistream/SAGE/discussions)\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "SAGE Framework - \u547d\u4ee4\u884c\u5de5\u5177\u5305\uff0c\u63d0\u4f9b\u96c6\u7fa4\u7ba1\u7406\u3001\u4f5c\u4e1a\u90e8\u7f72\u548c\u914d\u7f6e\u7ba1\u7406\u529f\u80fd",
    "version": "0.1.4",
    "project_urls": {
        "Documentation": "https://intellistream.github.io/SAGE-Pub/",
        "Homepage": "https://github.com/intellistream/SAGE",
        "Issues": "https://github.com/intellistream/SAGE/issues",
        "Repository": "https://github.com/intellistream/SAGE.git"
    },
    "split_keywords": [
        "cli",
        " command-line",
        " sage",
        " cluster",
        " management",
        " deployment",
        " job",
        " ray",
        " intellistream"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "f05b93211f9ae38ddaf03bad34ed3e5455ed594cbb8fa11a9571384c1f2faae2",
                "md5": "07af2176b8ef86c79c045298e1fdc0e5",
                "sha256": "77ca5b3e5bfe73b10f0621b43eed9ae554a050d7f448b988adb68879ec0d1610"
            },
            "downloads": -1,
            "filename": "intellistream_sage_cli-0.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "07af2176b8ef86c79c045298e1fdc0e5",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 372177,
            "upload_time": "2025-08-08T13:33:20",
            "upload_time_iso_8601": "2025-08-08T13:33:20.307896Z",
            "url": "https://files.pythonhosted.org/packages/f0/5b/93211f9ae38ddaf03bad34ed3e5455ed594cbb8fa11a9571384c1f2faae2/intellistream_sage_cli-0.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-08 13:33:20",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "intellistream",
    "github_project": "SAGE",
    "github_not_found": true,
    "lcname": "intellistream-sage-cli"
}
        
Elapsed time: 1.07846s