mcp-souschef 2.2.0__py3-none-any.whl → 2.8.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mcp_souschef-2.2.0.dist-info → mcp_souschef-2.8.0.dist-info}/METADATA +226 -38
- mcp_souschef-2.8.0.dist-info/RECORD +42 -0
- mcp_souschef-2.8.0.dist-info/entry_points.txt +4 -0
- souschef/__init__.py +10 -2
- souschef/assessment.py +113 -30
- souschef/ci/__init__.py +11 -0
- souschef/ci/github_actions.py +379 -0
- souschef/ci/gitlab_ci.py +299 -0
- souschef/ci/jenkins_pipeline.py +343 -0
- souschef/cli.py +605 -5
- souschef/converters/__init__.py +2 -2
- souschef/converters/cookbook_specific.py +125 -0
- souschef/converters/cookbook_specific.py.backup +109 -0
- souschef/converters/playbook.py +853 -15
- souschef/converters/resource.py +103 -1
- souschef/core/constants.py +13 -0
- souschef/core/path_utils.py +12 -9
- souschef/core/validation.py +35 -2
- souschef/deployment.py +29 -27
- souschef/filesystem/operations.py +0 -7
- souschef/parsers/__init__.py +6 -1
- souschef/parsers/attributes.py +397 -32
- souschef/parsers/inspec.py +343 -18
- souschef/parsers/metadata.py +30 -0
- souschef/parsers/recipe.py +48 -10
- souschef/server.py +429 -178
- souschef/ui/__init__.py +8 -0
- souschef/ui/app.py +2998 -0
- souschef/ui/health_check.py +36 -0
- souschef/ui/pages/ai_settings.py +497 -0
- souschef/ui/pages/cookbook_analysis.py +1360 -0
- mcp_souschef-2.2.0.dist-info/RECORD +0 -31
- mcp_souschef-2.2.0.dist-info/entry_points.txt +0 -4
- {mcp_souschef-2.2.0.dist-info → mcp_souschef-2.8.0.dist-info}/WHEEL +0 -0
- {mcp_souschef-2.2.0.dist-info → mcp_souschef-2.8.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,29 +1,46 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mcp-souschef
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.8.0
|
|
4
4
|
Summary: AI-powered MCP server for Chef to Ansible conversion
|
|
5
5
|
License: MIT
|
|
6
6
|
License-File: LICENSE
|
|
7
|
+
Keywords: chef,ansible,migration,infrastructure,automation,mcp,ai,conversion
|
|
7
8
|
Author: SousChef Contributors
|
|
8
9
|
Requires-Python: >=3.14,<4.0
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Intended Audience :: System Administrators
|
|
9
13
|
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
10
15
|
Classifier: Programming Language :: Python :: 3
|
|
11
16
|
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
|
+
Classifier: Topic :: System :: Systems Administration
|
|
19
|
+
Classifier: Topic :: Utilities
|
|
20
|
+
Provides-Extra: ui
|
|
12
21
|
Requires-Dist: anthropic (>=0.75.0)
|
|
13
22
|
Requires-Dist: click (>=8.1.0)
|
|
14
23
|
Requires-Dist: mcp (>=1.25.0)
|
|
24
|
+
Requires-Dist: openai (>=1.0.0)
|
|
25
|
+
Requires-Dist: pandas (>=2.0.0) ; extra == "ui"
|
|
26
|
+
Requires-Dist: plotly (>=5.0.0)
|
|
15
27
|
Requires-Dist: python-dotenv (>=1.2.1)
|
|
28
|
+
Requires-Dist: pyyaml (>=6.0.0)
|
|
29
|
+
Requires-Dist: streamlit (>=1.28.0)
|
|
16
30
|
Requires-Dist: zod (>=0.8.0)
|
|
31
|
+
Project-URL: Documentation, https://kpeacocke.github.io/souschef/
|
|
32
|
+
Project-URL: Homepage, https://github.com/kpeacocke/souschef
|
|
33
|
+
Project-URL: Repository, https://github.com/kpeacocke/souschef
|
|
17
34
|
Description-Content-Type: text/markdown
|
|
18
35
|
|
|
19
36
|
# Chef to Ansible migration - SousChef MCP
|
|
20
37
|
|
|
21
38
|
An AI-powered MCP (Model Context Protocol) server that provides comprehensive Chef-to-Ansible migration capabilities for enterprise infrastructure transformation.
|
|
22
39
|
|
|
23
|
-
[](https://github.com/kpeacocke/souschef/releases)
|
|
24
41
|
[](https://www.python.org/downloads/)
|
|
25
42
|
[](https://opensource.org/licenses/MIT)
|
|
26
|
-
[](htmlcov/index.html)
|
|
27
44
|
[](https://github.com/astral-sh/ruff)
|
|
28
45
|
[](http://mypy-lang.org/)
|
|
29
46
|
[](https://sonarcloud.io/summary/new_code?id=kpeacocke_souschef)
|
|
@@ -32,7 +49,17 @@ An AI-powered MCP (Model Context Protocol) server that provides comprehensive Ch
|
|
|
32
49
|
|
|
33
50
|
## Overview - Chef to Ansible features
|
|
34
51
|
|
|
35
|
-
SousChef is a complete enterprise-grade migration platform with
|
|
52
|
+
SousChef is a complete enterprise-grade migration platform with **32 primary MCP tools** organised across **10 major capability areas** to facilitate Chef-to-Ansible AWX/AAP migrations. From cookbook analysis to deployment pattern conversion, including Chef Habitat to containerised deployments and CI/CD pipeline generation, SousChef provides everything needed for a successful infrastructure automation migration.
|
|
53
|
+
|
|
54
|
+
### About Tool Counts
|
|
55
|
+
|
|
56
|
+
**Why 32 tools in the documentation but more in the server?**
|
|
57
|
+
|
|
58
|
+
The MCP server provides **37 total tools** (35 public + 2 internal). This documentation focuses on the **32 primary user-facing tools** that cover the main migration capabilities. The remaining 3 tools are low-level filesystem operations and helper utilities used internally by the main tools.
|
|
59
|
+
|
|
60
|
+
As a user, you'll primarily interact with the 27 documented tools. Your AI assistant may use the additional tools automatically when needed, but you don't need to know about them for successful migrations.
|
|
61
|
+
|
|
62
|
+
> **For developers:** See `souschef/server.py` for the complete list of all 37 registered tools.
|
|
36
63
|
|
|
37
64
|
## Model Agnostic - Works with Any AI Model
|
|
38
65
|
|
|
@@ -45,10 +72,17 @@ SousChef is a complete enterprise-grade migration platform with 38 MCP tools org
|
|
|
45
72
|
- **Local Models** (Ollama, llama.cpp, etc.)
|
|
46
73
|
- **Custom Enterprise Models**
|
|
47
74
|
|
|
48
|
-
**How it works:** You choose your AI model provider in your MCP client. SousChef provides the Chef/Ansible expertise through
|
|
75
|
+
**How it works:** You choose your AI model provider in your MCP client. SousChef provides the Chef/Ansible expertise through 27 specialized tools. The model calls these tools to help with your migration.
|
|
49
76
|
|
|
50
77
|
> See [config/CONFIGURATION.md](config/CONFIGURATION.md) for configuration examples with different model providers.
|
|
51
78
|
|
|
79
|
+
## Quick Links
|
|
80
|
+
|
|
81
|
+
- **[Terraform Provider](terraform-provider/README.md)** - Manage migrations with infrastructure-as-code
|
|
82
|
+
- **[User Guide](docs/user-guide/)** - Complete documentation
|
|
83
|
+
- **[API Reference](docs/api-reference/)** - Detailed tool documentation
|
|
84
|
+
- **[Migration Guide](docs/migration-guide/)** - Step-by-step migration process
|
|
85
|
+
|
|
52
86
|
## Installation
|
|
53
87
|
|
|
54
88
|
```bash
|
|
@@ -73,7 +107,7 @@ Complete cookbook introspection and analysis tools:
|
|
|
73
107
|
- **list_directory** - Navigate and explore cookbook directory structures
|
|
74
108
|
- **read_file** - Read cookbook files with error handling
|
|
75
109
|
- **read_cookbook_metadata** - Parse metadata.rb files for dependencies and cookbook information
|
|
76
|
-
- **parse_recipe** -
|
|
110
|
+
- **parse_recipe** - Analyse Chef recipes and extract resources, actions, and properties
|
|
77
111
|
- **parse_attributes** - Parse attribute files with **advanced precedence resolution** (6 levels: default, force_default, normal, override, force_override, automatic)
|
|
78
112
|
- **list_cookbook_structure** - Display complete cookbook directory hierarchy
|
|
79
113
|
|
|
@@ -94,7 +128,7 @@ Convert Chef search patterns to dynamic Ansible inventory:
|
|
|
94
128
|
|
|
95
129
|
- **convert_chef_search_to_inventory** - Transform Chef search queries to Ansible inventory groups
|
|
96
130
|
- **generate_dynamic_inventory_script** - Create dynamic inventory scripts from Chef server queries
|
|
97
|
-
- **
|
|
131
|
+
- **analyse_chef_search_patterns** - Discover and analyse search usage in cookbooks
|
|
98
132
|
|
|
99
133
|
### 4. InSpec Integration & Validation
|
|
100
134
|
Complete InSpec-to-Ansible testing pipeline:
|
|
@@ -108,14 +142,14 @@ Chef data bags to Ansible vars/vault conversion:
|
|
|
108
142
|
|
|
109
143
|
- **convert_chef_databag_to_vars** - Transform data bags to Ansible variable files
|
|
110
144
|
- **generate_ansible_vault_from_databags** - Convert encrypted data bags to Ansible Vault
|
|
111
|
-
- **
|
|
145
|
+
- **analyse_chef_databag_usage** - Analyse data bag usage patterns in cookbooks
|
|
112
146
|
|
|
113
147
|
### 6. Environment & Configuration Management
|
|
114
148
|
Chef environments to Ansible inventory groups:
|
|
115
149
|
|
|
116
150
|
- **convert_chef_environment_to_inventory_group** - Transform Chef environments to inventory
|
|
117
151
|
- **generate_inventory_from_chef_environments** - Generate complete inventory from environments
|
|
118
|
-
- **
|
|
152
|
+
- **analyse_chef_environment_usage** - Analyse environment usage in cookbooks
|
|
119
153
|
|
|
120
154
|
### 7. AWX/Ansible Automation Platform Integration
|
|
121
155
|
Enterprise AWX/AAP configuration generation:
|
|
@@ -139,7 +173,67 @@ Modern deployment strategies and migration planning:
|
|
|
139
173
|
- **generate_blue_green_deployment_playbook** - Create blue/green deployment playbooks
|
|
140
174
|
- **generate_canary_deployment_strategy** - Generate canary deployment configurations
|
|
141
175
|
|
|
142
|
-
### 10.
|
|
176
|
+
### 10. CI/CD Pipeline Generation
|
|
177
|
+
Generate Jenkins, GitLab CI, and GitHub Actions workflows from Chef cookbook CI patterns:
|
|
178
|
+
|
|
179
|
+
- **generate_jenkinsfile_from_chef** - Generate Jenkinsfile (Declarative or Scripted) from Chef cookbook CI/CD patterns
|
|
180
|
+
- **generate_gitlab_ci_from_chef** - Generate .gitlab-ci.yml from Chef cookbook testing tools
|
|
181
|
+
- **generate_github_workflow_from_chef** - Generate GitHub Actions workflow from Chef cookbook CI/CD patterns
|
|
182
|
+
|
|
183
|
+
Automatically detects and converts:
|
|
184
|
+
- **Test Kitchen** configurations (.kitchen.yml) → Integration test stages
|
|
185
|
+
- **ChefSpec** tests (spec/) → Unit test stages
|
|
186
|
+
- **Cookstyle/Foodcritic** → Lint stages
|
|
187
|
+
- Multiple test suites → Parallel execution strategies
|
|
188
|
+
|
|
189
|
+
#### Example Usage
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# Generate Jenkins Declarative pipeline
|
|
193
|
+
souschef generate-jenkinsfile ./mycookbook
|
|
194
|
+
|
|
195
|
+
# Generate Jenkins Scripted pipeline
|
|
196
|
+
souschef generate-jenkinsfile ./mycookbook --pipeline-type scripted
|
|
197
|
+
|
|
198
|
+
# Generate GitLab CI configuration
|
|
199
|
+
souschef generate-gitlab-ci ./mycookbook
|
|
200
|
+
|
|
201
|
+
# Generate GitHub Actions workflow
|
|
202
|
+
souschef generate-github-workflow ./mycookbook
|
|
203
|
+
|
|
204
|
+
# Customize with options
|
|
205
|
+
souschef generate-gitlab-ci ./mycookbook --no-cache --no-artifacts
|
|
206
|
+
souschef generate-github-workflow ./mycookbook --workflow-name "My CI" --no-cache
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
**MCP Tool Usage:**
|
|
210
|
+
```python
|
|
211
|
+
# From an AI assistant with SousChef MCP
|
|
212
|
+
|
|
213
|
+
# Generate Jenkins pipeline
|
|
214
|
+
generate_jenkinsfile_from_chef(
|
|
215
|
+
cookbook_path="/path/to/cookbook",
|
|
216
|
+
pipeline_type="declarative", # or "scripted"
|
|
217
|
+
enable_parallel="yes" # or "no"
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
# Generate GitLab CI
|
|
221
|
+
generate_gitlab_ci_from_chef(
|
|
222
|
+
cookbook_path="/path/to/cookbook",
|
|
223
|
+
enable_cache="yes", # or "no"
|
|
224
|
+
enable_artifacts="yes" # or "no"
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
# Generate GitHub Actions workflow
|
|
228
|
+
generate_github_workflow_from_chef(
|
|
229
|
+
cookbook_path="/path/to/cookbook",
|
|
230
|
+
workflow_name="Chef Cookbook CI",
|
|
231
|
+
enable_cache="yes", # or "no"
|
|
232
|
+
enable_artifacts="yes" # or "no"
|
|
233
|
+
)
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 11. Conversion Validation Framework
|
|
143
237
|
Comprehensive validation of Chef-to-Ansible conversions:
|
|
144
238
|
|
|
145
239
|
- **validate_conversion** - Validate conversions across multiple dimensions
|
|
@@ -181,10 +275,10 @@ Output formats:
|
|
|
181
275
|
- **json**: Structured JSON for programmatic processing
|
|
182
276
|
- **summary**: Quick overview with counts only
|
|
183
277
|
|
|
184
|
-
- **
|
|
278
|
+
- **analyse_chef_application_patterns** - Identify application deployment patterns
|
|
185
279
|
- **assess_chef_migration_complexity** - Comprehensive migration complexity assessment
|
|
186
280
|
- **generate_migration_plan** - Create detailed migration execution plans
|
|
187
|
-
- **
|
|
281
|
+
- **analyse_cookbook_dependencies** - Analyse dependencies and migration order
|
|
188
282
|
- **generate_migration_report** - Generate executive and technical migration reports
|
|
189
283
|
|
|
190
284
|
## Migration Workflow
|
|
@@ -194,8 +288,8 @@ Output formats:
|
|
|
194
288
|
# Assess migration complexity
|
|
195
289
|
assess_chef_migration_complexity /path/to/cookbooks
|
|
196
290
|
|
|
197
|
-
#
|
|
198
|
-
|
|
291
|
+
# Analyse cookbook dependencies
|
|
292
|
+
analyse_cookbook_dependencies /path/to/cookbook
|
|
199
293
|
|
|
200
294
|
# Generate migration plan
|
|
201
295
|
generate_migration_plan '{\"cookbooks\": [\"/path/to/cookbook1\", \"/path/to/cookbook2\"]}'
|
|
@@ -266,14 +360,84 @@ profile_cookbook_performance /path/to/large_cookbook
|
|
|
266
360
|
profile_parsing_operation recipe /path/to/recipe.rb --detailed
|
|
267
361
|
```
|
|
268
362
|
|
|
269
|
-
|
|
270
|
-
-
|
|
271
|
-
|
|
272
|
-
-
|
|
273
|
-
-
|
|
274
|
-
-
|
|
363
|
+
### 10. Visual Migration Planning Interface
|
|
364
|
+
Interactive web-based interface for Chef-to-Ansible migration planning and visualization:
|
|
365
|
+
|
|
366
|
+
- **Cookbook Analysis Dashboard**: Interactive directory scanning with metadata parsing and complexity assessment
|
|
367
|
+
- **Migration Planning Wizard**: Step-by-step migration planning with effort estimation and risk analysis
|
|
368
|
+
- **Dependency Mapping**: Visual dependency graphs showing cookbook relationships and migration ordering
|
|
369
|
+
- **Validation Reports**: Conversion validation results with syntax checking and best practice compliance
|
|
370
|
+
- **Progress Tracking**: Real-time migration progress with completion metrics and bottleneck identification
|
|
371
|
+
|
|
372
|
+
**Launch the UI:**
|
|
373
|
+
```bash
|
|
374
|
+
# Using Poetry (development)
|
|
375
|
+
poetry run souschef ui
|
|
376
|
+
|
|
377
|
+
# Using pip (installed)
|
|
378
|
+
souschef ui
|
|
379
|
+
|
|
380
|
+
# Custom port
|
|
381
|
+
souschef ui --port 8080
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
**Run in Docker:**
|
|
385
|
+
```bash
|
|
386
|
+
# Build the image
|
|
387
|
+
docker build -t souschef-ui .
|
|
388
|
+
|
|
389
|
+
# Run the container
|
|
390
|
+
docker run -p 8501:8501 souschef-ui
|
|
391
|
+
|
|
392
|
+
# Or use docker-compose
|
|
393
|
+
docker-compose up
|
|
394
|
+
```
|
|
275
395
|
|
|
276
|
-
|
|
396
|
+
**Docker Compose (recommended for development):**
|
|
397
|
+
```yaml
|
|
398
|
+
version: '3.8'
|
|
399
|
+
services:
|
|
400
|
+
souschef-ui:
|
|
401
|
+
build: .
|
|
402
|
+
ports:
|
|
403
|
+
- "8501:8501"
|
|
404
|
+
restart: unless-stopped
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
**Features:**
|
|
408
|
+
- Clean, professional design matching documentation standards
|
|
409
|
+
- Real-time cookbook analysis with progress indicators
|
|
410
|
+
- **Interactive dependency visualization** with Plotly graphs and NetworkX analysis
|
|
411
|
+
- **Static graph visualization** with matplotlib for reports and documentation
|
|
412
|
+
- **Real-time progress tracking** for all analysis operations
|
|
413
|
+
- Migration planning wizards with effort estimation
|
|
414
|
+
- Validation reporting dashboard with conversion quality metrics
|
|
415
|
+
- Cross-platform compatibility (Linux, macOS, Windows)
|
|
416
|
+
|
|
417
|
+
### Advanced UI Features
|
|
418
|
+
|
|
419
|
+
#### Interactive Dependency Visualization
|
|
420
|
+
The UI includes sophisticated dependency graph visualization powered by NetworkX and Plotly:
|
|
421
|
+
|
|
422
|
+
- **Graph Analysis**: Automatic detection of cookbook dependencies, circular references, and migration ordering
|
|
423
|
+
- **Interactive Exploration**: Zoom, pan, and hover over nodes to explore complex dependency relationships
|
|
424
|
+
- **Color Coding**: Visual distinction between cookbooks, dependencies, community cookbooks, and circular dependencies
|
|
425
|
+
- **Static Export**: Matplotlib-based static graphs for reports and documentation
|
|
426
|
+
- **Large Graph Support**: Optimized layouts for complex cookbook ecosystems
|
|
427
|
+
|
|
428
|
+
#### Real-Time Progress Tracking
|
|
429
|
+
All analysis operations include comprehensive progress feedback:
|
|
430
|
+
|
|
431
|
+
- **Progress Bars**: Visual progress indicators for long-running operations
|
|
432
|
+
- **Status Updates**: Real-time status messages during analysis phases
|
|
433
|
+
- **Operation Tracking**: Separate progress tracking for dependency analysis, validation, and migration planning
|
|
434
|
+
- **Error Handling**: Graceful error display with recovery suggestions
|
|
435
|
+
|
|
436
|
+
#### Enhanced User Experience
|
|
437
|
+
- **Responsive Design**: Clean, professional interface that works across different screen sizes
|
|
438
|
+
- **Export Options**: Download analysis results, graphs, and migration plans
|
|
439
|
+
- **Session Persistence**: Maintain analysis state across page refreshes
|
|
440
|
+
- **Quick Actions**: One-click access to common migration tasks
|
|
277
441
|
|
|
278
442
|
### Migration Assessment & Reporting
|
|
279
443
|
- **Complexity Analysis**: Automated assessment of migration effort and risk factors
|
|
@@ -299,7 +463,7 @@ profile_parsing_operation recipe /path/to/recipe.rb --detailed
|
|
|
299
463
|
### Prerequisites
|
|
300
464
|
- Python 3.14+
|
|
301
465
|
- [Poetry](https://python-poetry.org/) for dependency management
|
|
302
|
-
- MCP-compatible client (Claude Desktop, VS Code with
|
|
466
|
+
- MCP-compatible client (Claude Desktop, VS Code 1.102+ with GitHub Copilot, etc.)
|
|
303
467
|
|
|
304
468
|
### Quick Start
|
|
305
469
|
|
|
@@ -312,9 +476,21 @@ profile_parsing_operation recipe /path/to/recipe.rb --detailed
|
|
|
312
476
|
|
|
313
477
|
Use the pre-configured files in the `config/` directory for quick setup with Claude Desktop, VS Code Copilot, or other MCP clients.
|
|
314
478
|
|
|
479
|
+
**Claude Desktop** (macOS):
|
|
315
480
|
```bash
|
|
316
|
-
# Example: Claude Desktop (macOS)
|
|
317
481
|
cp config/claude-desktop.json ~/Library/Application\ Support/Claude/claude_desktop_config.json
|
|
482
|
+
# Restart Claude Desktop
|
|
483
|
+
```
|
|
484
|
+
|
|
485
|
+
**VS Code + GitHub Copilot** (requires VS Code 1.102+):
|
|
486
|
+
```bash
|
|
487
|
+
# macOS/Linux
|
|
488
|
+
cp config/vscode-copilot.json ~/.config/Code/User/mcp.json
|
|
489
|
+
|
|
490
|
+
# Windows
|
|
491
|
+
copy config\vscode-copilot.json %APPDATA%\Code\User\mcp.json
|
|
492
|
+
|
|
493
|
+
# Reload VS Code window, then trust the server when prompted
|
|
318
494
|
```
|
|
319
495
|
|
|
320
496
|
** See [config/CONFIGURATION.md](config/CONFIGURATION.md) for:**
|
|
@@ -358,6 +534,7 @@ souschef-cli inspec-convert controls.rb --format testinfra
|
|
|
358
534
|
- `inspec-parse` - Parse InSpec profiles and controls
|
|
359
535
|
- `inspec-convert` - Convert InSpec to Testinfra/Ansible tests
|
|
360
536
|
- `inspec-generate` - Generate InSpec validation from recipes
|
|
537
|
+
- `ui` - Launch the Visual Migration Planning Interface
|
|
361
538
|
- `ls` / `cat` - File system operations
|
|
362
539
|
|
|
363
540
|
### Development Setup
|
|
@@ -450,7 +627,7 @@ Each MCP tool includes comprehensive documentation:
|
|
|
450
627
|
- **[Testing Strategy Guide](docs/testing-strategy.md)** - Validation and testing approaches
|
|
451
628
|
- **[Best Practices](docs/best-practices.md)** - Recommended patterns and approaches
|
|
452
629
|
|
|
453
|
-
##
|
|
630
|
+
## Contributing
|
|
454
631
|
|
|
455
632
|
We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for:
|
|
456
633
|
- Development setup and workflow
|
|
@@ -458,13 +635,13 @@ We welcome contributions! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for:
|
|
|
458
635
|
- Pull request process
|
|
459
636
|
- Issue reporting guidelines
|
|
460
637
|
|
|
461
|
-
##
|
|
638
|
+
## License
|
|
462
639
|
|
|
463
640
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
464
641
|
|
|
465
642
|
## Roadmap
|
|
466
643
|
|
|
467
|
-
### Completed
|
|
644
|
+
### Completed
|
|
468
645
|
- Complete Chef cookbook parsing (recipes, attributes, metadata, templates)
|
|
469
646
|
- InSpec profile parsing and conversion to Testinfra/Ansible tests
|
|
470
647
|
- Chef resource to Ansible task conversion with module mapping
|
|
@@ -485,18 +662,29 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
485
662
|
- Enhanced error handling with custom exceptions and actionable recovery suggestions
|
|
486
663
|
- Technical debt reduction - ALL PHASES COMPLETE: 16 functions refactored (15 C-grade eliminated, 70+ helpers extracted, average 77% complexity reduction, zero C-grade functions remaining)
|
|
487
664
|
- Performance profiling and optimization for large cookbooks (profiling module, CLI commands, MCP tools)
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
-
|
|
491
|
-
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
-
|
|
495
|
-
-
|
|
665
|
+
- Code duplication elimination (InSpec functions refactored: 55 duplicate lines removed, improved architecture)
|
|
666
|
+
- Documentation website with MkDocs + Material theme (charcoal + teal colour scheme, 16 pages)
|
|
667
|
+
- Comprehensive documentation content (Getting Started, Tool Reference, Migration Guide, API docs, Examples)
|
|
668
|
+
- Integration with additional test frameworks (ServerSpec, Goss) - InSpec conversion now supports 4 output formats
|
|
669
|
+
- Jenkins/GitLab CI pipeline generation from Chef cookbook CI patterns (Test Kitchen, ChefSpec, Cookstyle)
|
|
670
|
+
- Visual migration planning interface with Streamlit-based web UI for interactive cookbook analysis and migration planning
|
|
671
|
+
- **Interactive dependency mapping and visualization** with Plotly graphs and NetworkX analysis
|
|
672
|
+
- **Real-time progress tracking** for all analysis operations with Streamlit progress bars
|
|
673
|
+
- **Static graph visualization** with matplotlib for reports and documentation
|
|
674
|
+
|
|
675
|
+
### Planned
|
|
676
|
+
- 📅 Enhanced graph layout algorithms for large dependency networks (force-directed, hierarchical)
|
|
677
|
+
- 📅 Export functionality for graphs (PNG, SVG, PDF formats)
|
|
678
|
+
- 📅 UI configuration options and themes
|
|
679
|
+
- 📅 Performance caching for expensive analysis operations
|
|
680
|
+
- 📅 Mobile-responsive design improvements
|
|
681
|
+
- 📅 Accessibility enhancements (ARIA labels, keyboard navigation)
|
|
682
|
+
- 📅 Integration testing for UI components
|
|
683
|
+
- 📅 Advanced filtering and search in dependency graphs
|
|
684
|
+
- 📅 Migration templates and presets
|
|
496
685
|
- 📅 Terraform provider for infrastructure state management
|
|
497
|
-
- 📅 Jenkins/GitLab CI pipeline generation
|
|
498
686
|
|
|
499
|
-
##
|
|
687
|
+
## Support & Community
|
|
500
688
|
|
|
501
689
|
- **Issues**: [GitHub Issues](https://github.com/kpeacocke/souschef/issues)
|
|
502
690
|
- **Discussions**: [GitHub Discussions](https://github.com/kpeacocke/souschef/discussions)
|
|
@@ -504,7 +692,7 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
504
692
|
|
|
505
693
|
---
|
|
506
694
|
|
|
507
|
-
**SousChef** - *Transforming infrastructure automation, one recipe at a time.*
|
|
695
|
+
**SousChef** - *Transforming infrastructure automation, one recipe at a time.*
|
|
508
696
|
desc 'Ensure package nginx is properly configured'
|
|
509
697
|
impact 1.0
|
|
510
698
|
|
|
@@ -1221,5 +1409,5 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
|
|
|
1221
1409
|
|
|
1222
1410
|
---
|
|
1223
1411
|
|
|
1224
|
-
**SousChef** - *Ansible automation, one recipe at a time.*
|
|
1412
|
+
**SousChef** - *Ansible automation, one recipe at a time.*
|
|
1225
1413
|
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
souschef/__init__.py,sha256=oJgStDVoLf97poc0CoNXfD6ZTRe23R9vE_37Q8L2OhE,650
|
|
2
|
+
souschef/assessment.py,sha256=QRU3bgGrASYyp2f0aAgdnqt8t1Uvpz-0oj7Z5nuhMqw,53933
|
|
3
|
+
souschef/ci/__init__.py,sha256=GHaqDk4auB2kI7_fQtF2FRg5nP-iX6wJchj_uTlXcYg,411
|
|
4
|
+
souschef/ci/github_actions.py,sha256=-Ov7pD2cEyImMgOY3ZYBC7qTc6Z9Rq0WUUVCZ0HjBSE,11215
|
|
5
|
+
souschef/ci/gitlab_ci.py,sha256=p7N5t5AavQyJMUFN1JwIBENltNggBBnpdQGkNbD6ieY,8373
|
|
6
|
+
souschef/ci/jenkins_pipeline.py,sha256=rKeyc0fozKJRektAFz75J5rSODE5JpZXGwfvJs_v28w,9264
|
|
7
|
+
souschef/cli.py,sha256=q7p9bY75PHFPAyHtXboWbMorxFoJ-ruojLS6JnzUrpw,33772
|
|
8
|
+
souschef/converters/__init__.py,sha256=kkPm758XiFDdUYvdVPAVjssFvf15LasJcob1EY1EMIs,681
|
|
9
|
+
souschef/converters/cookbook_specific.py,sha256=ZvE9-bZtyXuf2E3HW4E9_GWzAqtm7e4YHj9qm1Xu_XI,3767
|
|
10
|
+
souschef/converters/cookbook_specific.py.backup,sha256=9XycZz6oNNTEtLINo0hHNR3df-pbZIkLprhLniE2ENI,3468
|
|
11
|
+
souschef/converters/habitat.py,sha256=4eVGAcX0576zLXW9yqYvuaRxOK2g6BOIJo_ws-PonHU,22516
|
|
12
|
+
souschef/converters/playbook.py,sha256=fHOBNwO2a1-_mFwdJpME3xQzgrtfvqrmfLcZOoChDIo,84425
|
|
13
|
+
souschef/converters/resource.py,sha256=MTfesZ9aGj1GeYZXxoyeupFS6ErcxiZg81CQ1zK7FiE,13428
|
|
14
|
+
souschef/core/__init__.py,sha256=80a0G6wQGfh-Z7U1gsFaeC97bM4sp_3YGil-lN02Pl0,1894
|
|
15
|
+
souschef/core/constants.py,sha256=AyIpc9cJjQEDc1yOcoKc_2-cJB4PekSpPKEK2S9jDl8,5122
|
|
16
|
+
souschef/core/errors.py,sha256=zj_LHDRxUvHmcs-nZjOWu4B_MhY5WVq2okyZOxyycCI,8605
|
|
17
|
+
souschef/core/path_utils.py,sha256=2hG6joupZR_08MMpHHbv2KKOFu-8tMafuQMqV0_1Nqw,1790
|
|
18
|
+
souschef/core/ruby_utils.py,sha256=vUeFZBdjbFFFJlwo4fIboR23rXmbcYL2Tztt4RYhps0,1043
|
|
19
|
+
souschef/core/validation.py,sha256=f37CFiJwPVaC0tN1nKlLFHIAdcZwT2CPNPnj2SHavss,17896
|
|
20
|
+
souschef/deployment.py,sha256=EANWsnMN0VxGS17gQdJU4yXhwmCzMe73TVXcRfQ7Eas,60332
|
|
21
|
+
souschef/filesystem/__init__.py,sha256=2H7Pdeedz0MfmgpRlmii_vx61qr0jtxFndT0APPm6Qs,142
|
|
22
|
+
souschef/filesystem/operations.py,sha256=OMMozBfV_o70b47KioiZ2i6HViiUQPE5mVBeKcKFepo,1654
|
|
23
|
+
souschef/parsers/__init__.py,sha256=gF-vPslzs9iLxsaDzFnWDPpYFDAIwyAifjUwzYurPLg,1104
|
|
24
|
+
souschef/parsers/attributes.py,sha256=JmgFaYjlT0i2__hCk6hSqZRjq4xJaTdGsBDgHEu3ItY,18239
|
|
25
|
+
souschef/parsers/habitat.py,sha256=CtVgLfmpo7SLp-ADyR-DXRYaRUur3bwJjlnpLyocMhc,10483
|
|
26
|
+
souschef/parsers/inspec.py,sha256=zhlIDZmE6A9qws5gnrLxhGGBfHOebNTLWpZZI-XXTkU,34209
|
|
27
|
+
souschef/parsers/metadata.py,sha256=laSxlsebsgTzRDM_B8eIXddeApbR4ATm-W4GAGucZpc,6324
|
|
28
|
+
souschef/parsers/recipe.py,sha256=guhEttS_AyT2kckbde3_-kAyGoR4JyFMNZFAP5V1XIM,7090
|
|
29
|
+
souschef/parsers/resource.py,sha256=EHxmojbQ7Hx5GsL5-x9mFBYk3FhGTpx-qw1uUVKQkRo,5348
|
|
30
|
+
souschef/parsers/template.py,sha256=iOHMoQH7KkPzigTyyoxav8rb2ENYmfxgcvKGqvoYkgU,10532
|
|
31
|
+
souschef/profiling.py,sha256=a6Pn57CZR3UPR1YIY8gfbuTPRuPkFrfIFBmctOcaZgY,17315
|
|
32
|
+
souschef/server.py,sha256=O5WAYc992M9QzowcURDsw91q-WUnErDL68ftjMLRuXo,87150
|
|
33
|
+
souschef/ui/__init__.py,sha256=U3W6X4ww7CxQVuetcocObWn5iY6lUFiNX7WoDBJeD34,195
|
|
34
|
+
souschef/ui/app.py,sha256=pKzoVQE_qy4FzjLIxF5BUpfe76evxz6a6Ossarib37Q,98112
|
|
35
|
+
souschef/ui/health_check.py,sha256=mEzec8L6XPRekOBAXngqQz5dnzal-a4p3D70mkPriiA,903
|
|
36
|
+
souschef/ui/pages/ai_settings.py,sha256=HRmTQjs0EPg8FdSkcozonpDDXnTf0WHn9IvFAhigGM4,15911
|
|
37
|
+
souschef/ui/pages/cookbook_analysis.py,sha256=Llx3o1QJsD9PCHhZD_SjjVyz_JwrA9K3iToMtp9ZF9g,47108
|
|
38
|
+
mcp_souschef-2.8.0.dist-info/METADATA,sha256=yc21kT6owG-dLD6pXdkEJOzpmQuSj7XS0QcLnyKZETo,51221
|
|
39
|
+
mcp_souschef-2.8.0.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
40
|
+
mcp_souschef-2.8.0.dist-info/entry_points.txt,sha256=NVSk61tLG4W0xEkWGOMXAVCIUyodyZCY_j3Z_0m6rkQ,80
|
|
41
|
+
mcp_souschef-2.8.0.dist-info/licenses/LICENSE,sha256=t31dYSuvYYNw6trj-coWSsLK-Tg_Iyl8ObcolQcrUKM,1078
|
|
42
|
+
mcp_souschef-2.8.0.dist-info/RECORD,,
|
souschef/__init__.py
CHANGED
|
@@ -1,17 +1,25 @@
|
|
|
1
1
|
"""SousChef: AI-powered Chef to Ansible converter."""
|
|
2
2
|
|
|
3
3
|
from souschef.assessment import (
|
|
4
|
-
|
|
4
|
+
analyse_cookbook_dependencies,
|
|
5
5
|
assess_chef_migration_complexity,
|
|
6
6
|
generate_migration_plan,
|
|
7
7
|
generate_migration_report,
|
|
8
8
|
validate_conversion,
|
|
9
9
|
)
|
|
10
|
+
from souschef.deployment import (
|
|
11
|
+
analyse_chef_application_patterns,
|
|
12
|
+
)
|
|
13
|
+
from souschef.server import (
|
|
14
|
+
analyse_chef_search_patterns,
|
|
15
|
+
)
|
|
10
16
|
|
|
11
17
|
__all__ = [
|
|
12
|
-
"
|
|
18
|
+
"analyse_cookbook_dependencies",
|
|
13
19
|
"assess_chef_migration_complexity",
|
|
14
20
|
"generate_migration_plan",
|
|
15
21
|
"generate_migration_report",
|
|
16
22
|
"validate_conversion",
|
|
23
|
+
"analyse_chef_application_patterns",
|
|
24
|
+
"analyse_chef_search_patterns",
|
|
17
25
|
]
|