add device test template
This commit is contained in:
@@ -2,6 +2,7 @@ import re
|
||||
|
||||
from tenancy.models import Tenant, TenantGroup, Contact, ContactRole, ContactAssignment
|
||||
from ipam.models import Prefix, VRF, Role
|
||||
from dcim.models import DeviceType, DeviceRole, Device
|
||||
from extras.scripts import Script, StringVar, IPNetworkVar, ChoiceVar, ObjectVar
|
||||
from django.core.exceptions import ValidationError
|
||||
from extras.models import CustomField
|
||||
@@ -135,22 +136,29 @@ class CreateTenant(Script):
|
||||
)
|
||||
|
||||
prefix_cidr = IPNetworkVar(
|
||||
label="Префикс для оператора (CIDR) указывается с маской подсети"
|
||||
label="Префикс для оператора (CIDR)",
|
||||
description="Указывается с маской подсети /xx",
|
||||
)
|
||||
prefix_vrf = ObjectVar(label="VRF проекта", model=VRF, required=True)
|
||||
prefix_role = ObjectVar(label="Роль", model=Role, required=True)
|
||||
prefix_role = ObjectVar(
|
||||
label="Роль",
|
||||
description="Роль для малых операторов IPMI-SSH-MGMT",
|
||||
model=Role,
|
||||
required=True,
|
||||
)
|
||||
prefix_description = StringVar(label="Описание префикса", required=False)
|
||||
|
||||
contacts_fio = StringVar(label="ФИО", required=False)
|
||||
contacts_fio = StringVar(
|
||||
label="ФИО",
|
||||
description="Указывается в формате Иванов Иван Иванович, остальные значения игнорируются при отсутсвии ФИО",
|
||||
required=False,
|
||||
)
|
||||
contacts_phone = StringVar(label="Номер тел.", required=False)
|
||||
contacts_email = StringVar(label="E-mail", required=False)
|
||||
contacts_role = ObjectVar(label="Роль контакта", model=ContactRole, required=False)
|
||||
|
||||
def check_tenant_exists(self, data):
|
||||
if Tenant.objects.filter(name=data["tenant_name"]).exists():
|
||||
self.log_failure(
|
||||
f"Оператор с именем '{data['tenant_name']}' уже существует"
|
||||
)
|
||||
raise ValidationError(
|
||||
f"Оператор с именем '{data['tenant_name']}' уже существует"
|
||||
)
|
||||
@@ -266,9 +274,47 @@ class CreateTenant(Script):
|
||||
except ValidationError as e:
|
||||
self.log_failure(f"Ошибка валидации: {e}")
|
||||
except ValidationError as e:
|
||||
self.log_failure(f"Ошибка валидации: {e}")
|
||||
raise e
|
||||
raise AbortScript(f"Ошибка валидации: {e}")
|
||||
except Exception as e:
|
||||
self.log_failure(f"Ошибка при выполнении скрипта: {e}")
|
||||
if commit:
|
||||
self.log_failure("Изменения отменены из-за ошибки")
|
||||
raise
|
||||
|
||||
|
||||
class CreateDevice(Script):
|
||||
class Meta:
|
||||
name = "Создание устройства"
|
||||
description = "Создание устройства и привязка к оператору"
|
||||
scheduling_enabled = False
|
||||
fieldsets = (
|
||||
(
|
||||
"Устройство",
|
||||
(
|
||||
"device_name",
|
||||
"device_type",
|
||||
"device_role",
|
||||
"device_description",
|
||||
"device_tenant",
|
||||
),
|
||||
),
|
||||
)
|
||||
|
||||
device_name = StringVar(label="Имя устройства")
|
||||
device_role = ObjectVar(label="Роль устройства", model=DeviceRole, required=True)
|
||||
device_type = ObjectVar(label="Тип устройства", model=DeviceType, required=True)
|
||||
device_description = StringVar(label="Описание устройства", required=False)
|
||||
device_tenant_group = ObjectVar(
|
||||
label="Группа оператора", model=TenantGroup, required=True
|
||||
)
|
||||
device_tenant = ObjectVar(
|
||||
label="Оператор",
|
||||
model=Tenant,
|
||||
required=True,
|
||||
query_params={
|
||||
"group_id": "$device_tenant_group",
|
||||
},
|
||||
)
|
||||
|
||||
def run(self, data, commit):
|
||||
pass
|
||||
|
||||
Reference in New Issue
Block a user