@robinmordasiewicz/f5xc-auth 1.1.0 → 1.2.0
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.
- package/README.md +89 -111
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,153 +1,131 @@
|
|
|
1
|
-
#
|
|
1
|
+
# F5 Distributed Cloud Monorepo
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Unified monorepo combining F5 Distributed Cloud authentication, Terraform provider, and API MCP server.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Packages
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
npm install @robinmordasiewicz/f5xc-auth
|
|
9
|
-
```
|
|
7
|
+
This monorepo contains three main packages:
|
|
10
8
|
|
|
11
|
-
|
|
9
|
+
### 1. [@robinmordasiewicz/f5xc-auth](./packages/f5xc-auth/)
|
|
12
10
|
|
|
13
|
-
|
|
14
|
-
- **Multiple authentication methods** - API token, P12 certificate, or cert/key pair
|
|
15
|
-
- **Environment variable priority** - Override profile settings with environment variables
|
|
16
|
-
- **URL normalization** - Handles various F5XC tenant URL formats
|
|
17
|
-
- **TLS configuration** - Custom CA bundles and insecure mode for staging
|
|
11
|
+
Shared authentication library for F5 Distributed Cloud MCP servers. Provides XDG-compliant profile management and credential handling.
|
|
18
12
|
|
|
19
|
-
|
|
13
|
+
- **NPM**: `@robinmordasiewicz/f5xc-auth`
|
|
14
|
+
- **Features**: API token, P12 certificate, cert/key authentication, profile management, URL normalization
|
|
15
|
+
- **Directory**: `packages/f5xc-auth/`
|
|
20
16
|
|
|
21
|
-
###
|
|
17
|
+
### 2. [@robinmordasiewicz/f5xc-api-mcp](./packages/f5xc-api-mcp/)
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
import { CredentialManager } from '@robinmordasiewicz/f5xc-auth';
|
|
19
|
+
MCP (Model Context Protocol) server that exposes F5 Distributed Cloud APIs to AI assistants. Enables natural language interaction with F5XC infrastructure through Claude, VS Code, and other MCP-compatible tools.
|
|
25
20
|
|
|
26
|
-
|
|
27
|
-
|
|
21
|
+
- **NPM**: `@robinmordasiewicz/f5xc-api-mcp`
|
|
22
|
+
- **Features**: 1500+ API tools, domain-based documentation, dual-mode operation (docs + execution), curl examples
|
|
23
|
+
- **Directory**: `packages/f5xc-api-mcp/`
|
|
28
24
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
console.log(`Namespace: ${credentialManager.getNamespace()}`);
|
|
33
|
-
}
|
|
34
|
-
```
|
|
25
|
+
### 3. [Terraform Provider for F5 Distributed Cloud](./packages/terraform-provider/)
|
|
26
|
+
|
|
27
|
+
Community Terraform provider for F5 Distributed Cloud (version 3.0.0 - clean break release).
|
|
35
28
|
|
|
36
|
-
|
|
29
|
+
- **Registry**: `robinmordasiewicz/f5xc`
|
|
30
|
+
- **Features**: API v2 based, 98+ resources available, import support, pre-release clean break
|
|
31
|
+
- **Directory**: `packages/terraform-provider/`
|
|
32
|
+
- **Language**: Go
|
|
37
33
|
|
|
38
|
-
|
|
39
|
-
import { getProfileManager } from '@robinmordasiewicz/f5xc-auth';
|
|
34
|
+
## Getting Started
|
|
40
35
|
|
|
41
|
-
|
|
36
|
+
### Prerequisites
|
|
42
37
|
|
|
43
|
-
|
|
44
|
-
|
|
38
|
+
- Node.js >= 18.0.0
|
|
39
|
+
- npm >= 7.0.0 (for workspace support)
|
|
40
|
+
- Go >= 1.22 (for Terraform provider development)
|
|
45
41
|
|
|
46
|
-
|
|
47
|
-
const active = await profileManager.getActiveProfile();
|
|
42
|
+
### Installation
|
|
48
43
|
|
|
49
|
-
|
|
50
|
-
await profileManager.save({
|
|
51
|
-
name: 'production',
|
|
52
|
-
apiUrl: 'https://mytenant.console.ves.volterra.io',
|
|
53
|
-
apiToken: 'my-api-token',
|
|
54
|
-
defaultNamespace: 'my-namespace'
|
|
55
|
-
});
|
|
44
|
+
Clone the repository:
|
|
56
45
|
|
|
57
|
-
|
|
58
|
-
|
|
46
|
+
```bash
|
|
47
|
+
git clone https://github.com/robinmordasiewicz/f5xc.git
|
|
48
|
+
cd f5xc
|
|
59
49
|
```
|
|
60
50
|
|
|
61
|
-
|
|
51
|
+
Install dependencies for all packages:
|
|
62
52
|
|
|
63
|
-
```
|
|
64
|
-
|
|
53
|
+
```bash
|
|
54
|
+
npm install
|
|
55
|
+
```
|
|
65
56
|
|
|
66
|
-
|
|
67
|
-
await credentialManager.initialize();
|
|
57
|
+
### Development
|
|
68
58
|
|
|
69
|
-
|
|
70
|
-
timeout: 30000,
|
|
71
|
-
debug: true
|
|
72
|
-
});
|
|
59
|
+
Run tests across all packages:
|
|
73
60
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
console.log(response.data);
|
|
77
|
-
}
|
|
61
|
+
```bash
|
|
62
|
+
npm test
|
|
78
63
|
```
|
|
79
64
|
|
|
80
|
-
|
|
65
|
+
Build all packages:
|
|
81
66
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
| `F5XC_API_TOKEN` | API token for authentication |
|
|
86
|
-
| `F5XC_P12_BUNDLE` | Path to P12 certificate bundle |
|
|
87
|
-
| `F5XC_CERT` | Path to certificate file |
|
|
88
|
-
| `F5XC_KEY` | Path to private key file |
|
|
89
|
-
| `F5XC_NAMESPACE` | Default namespace |
|
|
90
|
-
| `F5XC_TLS_INSECURE` | Disable TLS verification (staging only) |
|
|
91
|
-
| `F5XC_CA_BUNDLE` | Path to custom CA bundle |
|
|
92
|
-
|
|
93
|
-
Environment variables take priority over profile settings.
|
|
67
|
+
```bash
|
|
68
|
+
npm run build
|
|
69
|
+
```
|
|
94
70
|
|
|
95
|
-
|
|
71
|
+
Lint all packages:
|
|
96
72
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
73
|
+
```bash
|
|
74
|
+
npm run lint
|
|
75
|
+
```
|
|
100
76
|
|
|
101
|
-
|
|
77
|
+
### Working with Individual Packages
|
|
102
78
|
|
|
103
|
-
|
|
79
|
+
Change into a package directory and work as normal:
|
|
104
80
|
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
"defaultNamespace": "my-namespace"
|
|
111
|
-
}
|
|
81
|
+
```bash
|
|
82
|
+
cd packages/f5xc-auth
|
|
83
|
+
npm install
|
|
84
|
+
npm run build
|
|
85
|
+
npm test
|
|
112
86
|
```
|
|
113
87
|
|
|
114
|
-
|
|
88
|
+
## Architecture
|
|
115
89
|
|
|
116
|
-
|
|
117
|
-
```json
|
|
118
|
-
{
|
|
119
|
-
"name": "token-auth",
|
|
120
|
-
"apiUrl": "https://mytenant.console.ves.volterra.io",
|
|
121
|
-
"apiToken": "your-api-token"
|
|
122
|
-
}
|
|
123
|
-
```
|
|
90
|
+
The monorepo structure uses npm workspaces to manage three interdependent components:
|
|
124
91
|
|
|
125
|
-
**P12 Certificate:**
|
|
126
|
-
```json
|
|
127
|
-
{
|
|
128
|
-
"name": "p12-auth",
|
|
129
|
-
"apiUrl": "https://mytenant.console.ves.volterra.io",
|
|
130
|
-
"p12Bundle": "/path/to/certificate.p12"
|
|
131
|
-
}
|
|
132
92
|
```
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}
|
|
93
|
+
f5xc/
|
|
94
|
+
├── packages/
|
|
95
|
+
│ ├── f5xc-auth/ # Core authentication library (TypeScript)
|
|
96
|
+
│ ├── f5xc-api-mcp/ # MCP server wrapper (TypeScript)
|
|
97
|
+
│ └── terraform-provider/ # Terraform provider (Go)
|
|
98
|
+
├── package.json # Workspace root configuration
|
|
99
|
+
├── README.md # This file
|
|
100
|
+
└── .github/ # GitHub workflows
|
|
142
101
|
```
|
|
143
102
|
|
|
144
|
-
##
|
|
103
|
+
## Authentication Flow
|
|
104
|
+
|
|
105
|
+
1. **f5xc-auth**: Handles credential management and profile storage
|
|
106
|
+
2. **f5xc-api-mcp**: Uses f5xc-auth for API authentication
|
|
107
|
+
3. **terraform-provider**: Can use f5xc-auth patterns for credential handling
|
|
108
|
+
|
|
109
|
+
## Documentation
|
|
145
110
|
|
|
146
|
-
-
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
- TLS insecure mode requires explicit opt-in
|
|
111
|
+
- [f5xc-auth Documentation](./packages/f5xc-auth/docs/)
|
|
112
|
+
- [f5xc-api-mcp Documentation](./packages/f5xc-api-mcp/)
|
|
113
|
+
- [Terraform Provider Documentation](./packages/terraform-provider/)
|
|
150
114
|
|
|
151
115
|
## License
|
|
152
116
|
|
|
153
|
-
MIT
|
|
117
|
+
MIT - See individual package LICENSE files for details.
|
|
118
|
+
|
|
119
|
+
## Contributing
|
|
120
|
+
|
|
121
|
+
See [Contributing Guidelines](./packages/f5xc-auth/docs/contributing.md) in the f5xc-auth package.
|
|
122
|
+
|
|
123
|
+
## Support
|
|
124
|
+
|
|
125
|
+
- **Issues**: [GitHub Issues](https://github.com/robinmordasiewicz/f5xc/issues)
|
|
126
|
+
- **F5 Distributed Cloud Docs**: https://docs.cloud.f5.com/
|
|
127
|
+
- **Terraform Registry**: https://registry.terraform.io/providers/robinmordasiewicz/f5xc/
|
|
128
|
+
|
|
129
|
+
## Author
|
|
130
|
+
|
|
131
|
+
Robin Mordasiewicz
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@robinmordasiewicz/f5xc-auth",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "Shared authentication library for F5 Distributed Cloud MCP servers - XDG-compliant profile management",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"bugs": {
|
|
39
39
|
"url": "https://github.com/robinmordasiewicz/f5xc-auth/issues"
|
|
40
40
|
},
|
|
41
|
-
"homepage": "https://github.
|
|
41
|
+
"homepage": "https://robinmordasiewicz.github.io/f5xc-auth/",
|
|
42
42
|
"engines": {
|
|
43
43
|
"node": ">=18"
|
|
44
44
|
},
|