CreaRack-SL

Stencil · Modelo racks

Entidadactiveverificado 2026-04-21#racks#model#stencil#visio

Stencil · Modelo racks

Propósito

Stencil es la plantilla visual de un dispositivo de rack. Encapsula la imagen representativa y los metadatos de altura por defecto para que el editor visual pueda renderizar el dispositivo sin datos reales de instancia. Soporta dos modos: global (organization=None, semilla del sistema visible para todos los tenants) y custom por tenant (subida manual o importación Visio .vssx/.vss/.vdx).

Contrato

Campos:

CampoTipoNotas
nameCharField(100)Nombre del stencil
image_pathCharField(200)Ruta relativa a MEDIA_ROOT o URL absoluta; expuesto como image en la API
default_u_heightIntegerField(default=1)Altura en unidades de rack
manufacturerCharField(100)Fabricante; usado en fuzzy matching durante discovery
categoryCharField(100, default="General")Campo string legacy (pendiente FK)
extra_dataTextField(default="{}")JSON libre para metadatos adicionales
organizationFK(Organization, null)null=True indica stencil global de sistema

Métodos y propiedades:

  • image_url (property) — URL pública: si image_path es relativa antepone /media/; si es absoluta o empieza con / la retorna tal cual; vacío si el campo está vacío.
  • __str__ — retorna name.

Meta:

  • Índice compuesto idx_stencil_org_cat sobre (organization, category).

Dependencias entrantes

MóduloArchivoUso
LibraryServiceracks/services/library.pylist_stencils, create_custom_stencil, import_visio
library API routerracks/api/library.pyEndpoints REST stencils
stencil_matchingnetwork/services/device_discovery/stencil_matching.pyFuzzy match durante discovery
auto_confignetwork/services/auto_config.pySugiere stencil al Rack Editor vía suggested_stencil_id
backup_servicecore/services/backup_service.pySerializa stencils custom en exports
backup/restore APIracks/api/export/backup.py, restore.pyCiclo de exportación e importación de rack
blueprints schemablueprints/api/schemas.pyResuelve Stencil por nombre
Migración semillaracks/migrations/0011_default_stencil_pack.pySiembra 25 stencils globales

Dependencias salientes

  • core.models.Organization — FK con CASCADE; null=True para stencils de sistema.
  • racks.utils.visio_parser.VisioParser — usado por LibraryService.import_visio para extraer masters.
  • racks.utils.vss_converter.VSSConverter — convierte .vss legado a .vssx.
  • django.core.files.storage.default_storage — almacena imágenes bajo stencils/<org_id>/<uuid>.<ext>.

Ejemplos

  • Stencil global de sistema: Stencil(name="Cisco Catalyst 9300", manufacturer="Cisco", category="Switches", default_u_height=1, organization=None).
  • Custom importado desde Visio: creado por LibraryService.import_visio con category="Imported" e image_path="stencils/<org_id>/<uuid>_master.png".
  • Fuzzy match en discovery: match_stencil(vendor="Cisco", model="C9300-48P") → Stencil.objects.filter(manufacturer__icontains="Cisco", name__icontains="C9300-48P") devuelve {"stencil_id": 12, "confidence": 100, "reason": "Exact match"}.
  • entity--racks--model--device — toma default_u_height del stencil seleccionado.
  • entity--racks--model--rack — editor consume el catálogo de stencils.
  • entity--core--model--organization — alcance de aislamiento; null = compartido global.

Véase también

  • [[entity—racks—model—device]]
  • [[entity—racks—model—rack]]
  • [[entity—core—model—organization]]