refactor: extract helpers from create_server in binarylane, ramnode, upcloud (#430)

Extract response-handling and body-building helpers from the longest
create_server functions to improve readability and reduce per-function
complexity:

- binarylane: 69 -> 31 lines (extract _binarylane_build_server_body,
  _binarylane_handle_create_response)
- ramnode: 57 -> 40 lines (extract _ramnode_handle_create_response)
- upcloud: 56 -> 39 lines (extract _upcloud_handle_create_response)

Agent: complexity-hunter

Co-authored-by: A <6723574+louisgv@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
A 2026-02-11 04:06:32 -08:00 committed by GitHub
parent fdc5d5e58b
commit 4452f69144
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 102 additions and 77 deletions

View file

@ -404,6 +404,29 @@ for net_name, addrs in addresses.items():
return 1
}
# Parse server ID from create response, or log error and return 1
# Sets RAMNODE_SERVER_ID on success
_ramnode_handle_create_response() {
local response="$1"
if echo "$response" | grep -q '"error"'; then
log_error "Failed to create RamNode server"
local error_msg
error_msg=$(echo "$response" | python3 -c "import json,sys; d=json.loads(sys.stdin.read()); print(d.get('error',{}).get('message','Unknown error'))" 2>/dev/null || echo "$response")
log_error "API Error: $error_msg"
log_error ""
log_error "Common issues:"
log_error " - Insufficient cloud credit (minimum \$3 required)"
log_error " - Flavor not available"
log_error " - SSH key not found"
return 1
fi
RAMNODE_SERVER_ID=$(echo "$response" | python3 -c "import json,sys; print(json.loads(sys.stdin.read())['server']['id'])")
export RAMNODE_SERVER_ID
log_info "Server created: ID=$RAMNODE_SERVER_ID"
}
# Create a RamNode server
create_server() {
local name="$1"
@ -416,7 +439,6 @@ create_server() {
log_info "Fetching Ubuntu 24.04 image..."
local image_id
image_id=$(_list_images)
if [[ -z "$image_id" ]]; then
log_error "Could not find Ubuntu 24.04 image"
return 1
@ -441,23 +463,7 @@ create_server() {
local response
response=$(ramnode_compute_api POST "/servers" "$body")
if echo "$response" | grep -q '"error"'; then
log_error "Failed to create RamNode server"
local error_msg
error_msg=$(echo "$response" | python3 -c "import json,sys; d=json.loads(sys.stdin.read()); print(d.get('error',{}).get('message','Unknown error'))" 2>/dev/null || echo "$response")
log_error "API Error: $error_msg"
log_error ""
log_error "Common issues:"
log_error " - Insufficient cloud credit (minimum \$3 required)"
log_error " - Flavor not available"
log_error " - SSH key not found"
return 1
fi
# Extract server ID
RAMNODE_SERVER_ID=$(echo "$response" | python3 -c "import json,sys; print(json.loads(sys.stdin.read())['server']['id'])")
export RAMNODE_SERVER_ID
log_info "Server created: ID=$RAMNODE_SERVER_ID"
_ramnode_handle_create_response "$response" || return 1
# Wait for IP assignment
_ramnode_wait_for_ip