Pular para o conteúdo principal

Compute

O Compute é o produto de máquinas virtuais da NNumbers: instâncias, tipos (combinações de vCPU e memória), imagens e chaves públicas, numa das zonas da plataforma.

Visão geral​

Cada pedido vai para uma zona (z1 ou z2), escolhida na tela. A zona é um código NNumbers: a região da nuvem onde ela roda é assunto da plataforma, nunca do seu pedido. As zonas de disponibilidade públicas aparecem como z1-a e z2-a.

O módulo é um relé: ele não fala com a nuvem, não guarda credencial e não guarda estado de recurso. Ele confere a sua decisão (o contexto que o gateway emitiu), repassa o pedido à plataforma de nuvem — que executa em nome da sua organização — e devolve a resposta. Por isso:

  • toda escrita exige Idempotency-Key (o create; as demais mutações a aceitam): repetir o mesmo pedido com a mesma chave devolve a MESMA resposta, sem criar duas máquinas;
  • o relé nunca repete sozinho um pedido: um erro passageiro volta como 503 dependency_unavailable e você decide tentar de novo;
  • as suas tags ({chave: valor}) são o que liga o recurso à sua organização e ao seu centro de custo.

Exemplo​

curl -s https://api-nn.nnumbers.com.br/v1/compute/zones \
-H "Authorization: Bearer $TOKEN"
{"zones": [
{"id": "z1", "display_name": "Zona 1", "status": "available",
"capabilities": {"hostname": false},
"operations_unavailable": [],
"tag_limits": {"max_tags": 20, "key_max": 64, "value_max": 128}},
{"id": "z2", "display_name": "Zona 2", "status": "available",
"capabilities": {"hostname": true},
"operations_unavailable": [],
"tag_limits": {"max_tags": 20, "key_max": 64, "value_max": 128}}]}

O que a zona decide​

A tela consulta as capacidades da zona e esconde o que ela não suporta — nunca mostra uma ação que não funciona ali. Hoje:

RecursoZona 1Zona 2
hostname na criação da instâncianãosim
console remotoVNCVNC

Um campo que só existe numa zona é recusado na outra (nunca descartado em silêncio):

{"error": {"code": "validation_failed", "reason": "field_not_supported_in_zone",
"message": "O campo hostname não existe nesta zona.",
"details": {"field": "hostname", "zone": "z1"}}}

Recursos que não são seus​

Uma máquina que não tem a tag de sistema da sua organização (nn:org) aparece na lista como «Não gerenciada pela NNumbers»: você pode vê-la e abrir o detalhe, mas as ações ficam indisponíveis.

As máquinas de cluster Kubernetes não aparecem nem podem ser operadas por este produto: a regra é do serviço (instância cuja imagem tem -kube- no nome responde 404 not_found em qualquer ação, e criar com uma dessas imagens devolve 400 validation_failed/image_not_allowed). A tela mostra o erro no campo da imagem; ela não é a defesa.