feat: add source_provider mapping for actual VPS provisioning

- Update PricingWithProvider type with source_provider and source_region_code
- Update getPricingWithProvider query to JOIN instance_types for actual plan_id
- Use source_provider (linode/vultr) instead of provider_name (Anvil)
- Use source_region_code for actual provider region (ap-northeast, nrt, icn)

Mapping: anvil_regions.source_provider + anvil_pricing.source_instance_id
         → instance_types.instance_id (actual Linode/Vultr plan)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
kappa
2026-01-28 00:47:03 +09:00
parent 91a6e227ed
commit 006b938ad2
3 changed files with 22 additions and 12 deletions

View File

@@ -196,21 +196,21 @@ export class ProvisioningService {
return;
}
// Get provider
const provider = this.getProvider(pricing.provider_name.toLowerCase() as VPSProvider);
// Get provider (use source_provider: linode/vultr)
const provider = this.getProvider(pricing.source_provider);
if (!provider) {
console.error(`[ProvisioningService] Provider not configured for order ${order_id}`);
await this.repo.rollbackOrder(order_id, user_id, order.price_paid, 'Provider not configured');
console.error(`[ProvisioningService] Provider ${pricing.source_provider} not configured for order ${order_id}`);
await this.repo.rollbackOrder(order_id, user_id, order.price_paid, `Provider ${pricing.source_provider} not configured`);
return;
}
// Get OS image ID
const osImageId = provider.getOsImageId(image);
// Call provider API
// Call provider API (use source_region_code for actual provider region)
const createResult = await provider.createServer({
plan: pricing.instance_id,
region: pricing.region_code,
region: pricing.source_region_code,
osImage: osImageId,
label: label || `order-${order_id}`,
rootPassword: root_password,