mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-07-09 16:00:59 +00:00
Prepare v6.0.0 release candidate
Tighten v5-to-v6 upgrade safety, release installability, provider MSP mode handling, AI cost accounting, metrics flushing, and frontend guardrails for the v6.0.0 GA candidate.
This commit is contained in:
parent
a73a24259c
commit
bd6f77e093
119 changed files with 4753 additions and 2046 deletions
|
|
@ -94,8 +94,8 @@ func runProviderMSPPreflightWithDependencies(ctx context.Context, cfg *cloudcp.C
|
|||
report.Failures = append(report.Failures, fmt.Sprintf(format, args...))
|
||||
}
|
||||
|
||||
if !cfg.IsProviderHostedMSP() {
|
||||
addFailure("CP_CONTROL_PLANE_MODE must be %s", cloudcp.ControlPlaneModeProviderHostedMSP)
|
||||
if !cfg.IsMSPControlPlane() {
|
||||
addFailure("CP_CONTROL_PLANE_MODE must be %s or %s", cloudcp.ControlPlaneModeProviderHostedMSP, cloudcp.ControlPlaneModePulseHostedMSP)
|
||||
}
|
||||
if cfg.UsesStripeBilling() {
|
||||
addFailure("provider-hosted MSP preflight must be Stripe-free")
|
||||
|
|
|
|||
|
|
@ -112,6 +112,40 @@ func TestProviderMSPPreflightPassesWithLicenseDockerAndStorage(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestProviderMSPPreflightAcceptsPulseHostedMSPMode(t *testing.T) {
|
||||
docker := &fakeProviderMSPPreflightDocker{
|
||||
report: &cpDocker.RuntimePrerequisiteReport{
|
||||
OK: true,
|
||||
DockerReachable: true,
|
||||
NetworkName: "pulse-provider-msp",
|
||||
NetworkOK: true,
|
||||
NetworkID: "network-test",
|
||||
ImageRef: "pulse:test",
|
||||
ImageID: "sha256:test",
|
||||
ImageAvailable: true,
|
||||
},
|
||||
}
|
||||
cfg := testProviderMSPPreflightConfig(t, cloudcp.ProviderMSPPlanSourceLicenseFile)
|
||||
cfg.ControlPlaneMode = cloudcp.ControlPlaneModePulseHostedMSP
|
||||
|
||||
report, err := runProviderMSPPreflightWithDependencies(
|
||||
context.Background(),
|
||||
cfg,
|
||||
providerMSPPreflightOptions{},
|
||||
fakeProviderMSPPreflightDependencies(docker, &cloudcp.StorageGuardrailReport{Enabled: false, OK: true}),
|
||||
)
|
||||
|
||||
if err != nil {
|
||||
t.Fatalf("runProviderMSPPreflightWithDependencies: %v", err)
|
||||
}
|
||||
if !report.OK {
|
||||
t.Fatalf("report.OK = false, failures = %v", report.Failures)
|
||||
}
|
||||
if report.ControlMode != string(cloudcp.ControlPlaneModePulseHostedMSP) {
|
||||
t.Fatalf("ControlMode = %q, want %q", report.ControlMode, cloudcp.ControlPlaneModePulseHostedMSP)
|
||||
}
|
||||
}
|
||||
|
||||
func TestProviderMSPPreflightSkipImagePullUsesInspectOnly(t *testing.T) {
|
||||
docker := &fakeProviderMSPPreflightDocker{
|
||||
report: &cpDocker.RuntimePrerequisiteReport{
|
||||
|
|
|
|||
|
|
@ -153,8 +153,8 @@ func newProviderMSPProofRuntimeFromConfig(cfg *cloudcp.CPConfig) (*providerMSPPr
|
|||
if cfg == nil {
|
||||
return nil, fmt.Errorf("control plane config is required")
|
||||
}
|
||||
if !cfg.IsProviderHostedMSP() {
|
||||
return nil, fmt.Errorf("provider MSP proof requires CP_CONTROL_PLANE_MODE=%s", cloudcp.ControlPlaneModeProviderHostedMSP)
|
||||
if !cfg.IsMSPControlPlane() {
|
||||
return nil, fmt.Errorf("provider MSP proof requires CP_CONTROL_PLANE_MODE=%s or %s", cloudcp.ControlPlaneModeProviderHostedMSP, cloudcp.ControlPlaneModePulseHostedMSP)
|
||||
}
|
||||
if err := os.MkdirAll(cfg.TenantsDir(), 0o755); err != nil {
|
||||
return nil, fmt.Errorf("create tenants dir: %w", err)
|
||||
|
|
|
|||
|
|
@ -65,6 +65,22 @@ func TestProviderMSPProofRequiresLicenseBackedPlanSourceByDefault(t *testing.T)
|
|||
}
|
||||
}
|
||||
|
||||
func TestProviderMSPProofRuntimeAcceptsPulseHostedMSPMode(t *testing.T) {
|
||||
t.Setenv("DOCKER_HOST", "unix:///tmp/pulse-provider-msp-proof-missing-docker.sock")
|
||||
t.Setenv("DOCKER_TLS_VERIFY", "")
|
||||
t.Setenv("DOCKER_CERT_PATH", "")
|
||||
|
||||
cfg := testProviderMSPProofConfig(t)
|
||||
cfg.ControlPlaneMode = cloudcp.ControlPlaneModePulseHostedMSP
|
||||
cfg.BaseURL = "https://acme.msp.pulserelay.pro"
|
||||
|
||||
rt, err := newProviderMSPProofRuntimeFromConfig(cfg)
|
||||
if err != nil {
|
||||
t.Fatalf("newProviderMSPProofRuntimeFromConfig: %v", err)
|
||||
}
|
||||
defer rt.close()
|
||||
}
|
||||
|
||||
func TestProviderMSPProofExercisesWorkspaceInstallHandoffAndIsolation(t *testing.T) {
|
||||
t.Setenv("DOCKER_HOST", "unix:///tmp/pulse-provider-msp-proof-missing-docker.sock")
|
||||
t.Setenv("DOCKER_TLS_VERIFY", "")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue