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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user