2025-10-07 11:20:26 +01:00

32 lines
1.3 KiB
Plaintext

# Info: KCL Upcloud provider server schemas for provisioning (Provisioning)
# Author: JesusPerezLorenzo
# Release: 0.0.4
# Date: 15-12-2023
import regex
import provisioning.lib as lib
import .defaults_upcloud as defaults
schema Server_upcloud(defaults.ServerDefaults_upcloud):
"""
Upcloud server settings
"""
# Hostname as reference for resource if is changed later inside server, change will not be updated in resource inventory
hostname: str
title: str
# To use private network it a VPC + Subnet + NetworkInfterface has to be created
# It will be done based on aws_priv_cidr_block value (see top file)
# IP will be assign here
network_private_ip?: str
# extra hostnames for server local resolution
extra_hostnames?: [str]
taskservs?: [lib.TaskServDef]
clusters?: [lib.ClusterDef]
check:
len(hostname) > 0, "Check hostname value"
len(title) > 0, "Check titlevalue"
len(network_private_ip) == 0 or regex.match(network_private_ip, "^\$.*$") or regex.match(network_private_ip, "^((25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])\.){3}(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]?[0-9])$"), "'network_private_ip = ${network_private_ip}' check value definition (use $vaule or xx.xx.xx.xx)"
storages != Undefined, "🛑 Storages is not defined"