示例#1
0
class ISCSIGlobalModel(sa.Model):
    __tablename__ = 'services_iscsitargetglobalconfiguration'

    id = sa.Column(sa.Integer(), primary_key=True)
    iscsi_basename = sa.Column(sa.String(120))
    iscsi_isns_servers = sa.Column(sa.Text())
    iscsi_pool_avail_threshold = sa.Column(sa.Integer(), nullable=True)
    iscsi_alua = sa.Column(sa.Boolean(), default=False)
示例#2
0
class SystemDatasetModel(sa.Model):
    __tablename__ = 'system_systemdataset'

    id = sa.Column(sa.Integer(), primary_key=True)
    sys_pool = sa.Column(sa.String(1024))
    sys_syslog_usedataset = sa.Column(sa.Boolean(), default=False)
    sys_uuid = sa.Column(sa.String(32))
    sys_uuid_b = sa.Column(sa.String(32), nullable=True)
示例#3
0
文件: nfs.py 项目: schnable/freenas
class NFSShareModel(sa.Model):
    __tablename__ = 'sharing_nfs_share'

    id = sa.Column(sa.Integer(), primary_key=True)
    nfs_paths = sa.Column(sa.JSON(type=list))
    nfs_comment = sa.Column(sa.String(120))
    nfs_network = sa.Column(sa.Text())
    nfs_hosts = sa.Column(sa.Text())
    nfs_alldirs = sa.Column(sa.Boolean(), default=False)
    nfs_ro = sa.Column(sa.Boolean(), default=False)
    nfs_quiet = sa.Column(sa.Boolean(), default=False)
    nfs_maproot_user = sa.Column(sa.String(120), nullable=True, default='')
    nfs_maproot_group = sa.Column(sa.String(120), nullable=True, default='')
    nfs_mapall_user = sa.Column(sa.String(120), nullable=True, default='')
    nfs_mapall_group = sa.Column(sa.String(120), nullable=True, default='')
    nfs_security = sa.Column(sa.MultiSelectField())
    nfs_enabled = sa.Column(sa.Boolean(), default=True)
示例#4
0
class KMIPModel(sa.Model):
    __tablename__ = 'system_kmip'

    id = sa.Column(sa.Integer(), primary_key=True)
    server = sa.Column(sa.String(128), default=None, nullable=True)
    ssl_version = sa.Column(sa.String(128), default='PROTOCOL_TLSv1_2')
    port = sa.Column(sa.SmallInteger(), default=5696)
    certificate_id = sa.Column(sa.ForeignKey('system_certificate.id'),
                               index=True,
                               nullable=True)
    certificate_authority_id = sa.Column(
        sa.ForeignKey('system_certificateauthority.id'),
        index=True,
        nullable=True)
    manage_sed_disks = sa.Column(sa.Boolean(), default=False)
    manage_zfs_keys = sa.Column(sa.Boolean(), default=False)
    enabled = sa.Column(sa.Boolean(), default=False)
示例#5
0
class ACLTempateModel(sa.Model):
    __tablename__ = 'filesystem_acltemplate'

    id = sa.Column(sa.Integer(), primary_key=True)
    acltemplate_name = sa.Column(sa.String(120), unique=True)
    acltemplate_acltype = sa.Column(sa.String(255))
    acltemplate_acl = sa.Column(sa.JSON(type=list))
    acltemplate_builtin = sa.Column(sa.Boolean())
示例#6
0
class CatalogModel(sa.Model):
    __tablename__ = 'services_catalog'

    label = sa.Column(sa.String(255), nullable=False, unique=True, primary_key=True)
    repository = sa.Column(sa.Text(), nullable=False)
    branch = sa.Column(sa.String(255), nullable=False)
    builtin = sa.Column(sa.Boolean(), nullable=False, default=False)
    preferred_trains = sa.Column(sa.JSON(type=list))
示例#7
0
class SNMPModel(sa.Model):
    __tablename__ = 'services_snmp'

    id = sa.Column(sa.Integer(), primary_key=True)
    snmp_location = sa.Column(sa.String(255))
    snmp_contact = sa.Column(sa.String(120))
    snmp_traps = sa.Column(sa.Boolean(), default=False)
    snmp_v3 = sa.Column(sa.Boolean(), default=False)
    snmp_community = sa.Column(sa.String(120), default='public')
    snmp_v3_username = sa.Column(sa.String(20))
    snmp_v3_authtype = sa.Column(sa.String(3), default='SHA')
    snmp_v3_password = sa.Column(sa.String(50))
    snmp_v3_privproto = sa.Column(sa.String(3), nullable=True)
    snmp_v3_privpassphrase = sa.Column(sa.String(100), nullable=True)
    snmp_options = sa.Column(sa.Text())
    snmp_loglevel = sa.Column(sa.Integer(), default=3)
    snmp_zilstat = sa.Column(sa.Boolean(), default=False)
示例#8
0
class TruenasCustomerInformationModel(sa.Model):
    __tablename__ = 'truenas_customerinformation'

    id = sa.Column(sa.Integer(), primary_key=True)
    data = sa.Column(sa.Text())
    updated_at = sa.Column(sa.DateTime())
    sent_at = sa.Column(sa.DateTime(), nullable=True)
    form_dismissed = sa.Column(sa.Boolean())
示例#9
0
class VMModel(sa.Model):
    __tablename__ = 'vm_vm'

    id = sa.Column(sa.Integer(), primary_key=True)
    name = sa.Column(sa.String(150))
    description = sa.Column(sa.String(250))
    vcpus = sa.Column(sa.Integer(), default=1)
    memory = sa.Column(sa.Integer())
    autostart = sa.Column(sa.Boolean(), default=False)
    time = sa.Column(sa.String(5), default='LOCAL')
    grubconfig = sa.Column(sa.Text(), nullable=True)
    bootloader = sa.Column(sa.String(50), default='UEFI')
    cores = sa.Column(sa.Integer(), default=1)
    threads = sa.Column(sa.Integer(), default=1)
    shutdown_timeout = sa.Column(sa.Integer(), default=90)
    cpu_mode = sa.Column(sa.Text())
    cpu_model = sa.Column(sa.Text(), nullable=True)
    hide_from_msr = sa.Column(sa.Boolean(), default=False)
示例#10
0
class TunableModel(sa.Model):
    __tablename__ = 'system_tunable'

    id = sa.Column(sa.Integer(), primary_key=True)
    tun_value = sa.Column(sa.String(512))
    tun_type = sa.Column(sa.String(20), default='loader')
    tun_comment = sa.Column(sa.String(100))
    tun_enabled = sa.Column(sa.Boolean(), default=True)
    tun_var = sa.Column(sa.String(128))
示例#11
0
class AlertServiceModel(sa.Model):
    __tablename__ = 'system_alertservice'

    id = sa.Column(sa.Integer(), primary_key=True)
    name = sa.Column(sa.String(120))
    type = sa.Column(sa.String(20))
    attributes = sa.Column(sa.JSON())
    enabled = sa.Column(sa.Boolean())
    level = sa.Column(sa.String(20))
示例#12
0
class PeriodicSnapshotTaskModel(sa.Model):
    __tablename__ = 'storage_task'

    id = sa.Column(sa.Integer(), primary_key=True)
    task_dataset = sa.Column(sa.String(150))
    task_recursive = sa.Column(sa.Boolean(), default=False)
    task_lifetime_value = sa.Column(sa.Integer(), default=2)
    task_lifetime_unit = sa.Column(sa.String(120), default='WEEK')
    task_begin = sa.Column(sa.Time(), default=time(hour=9))
    task_end = sa.Column(sa.Time(), default=time(hour=18))
    task_enabled = sa.Column(sa.Boolean(), default=True)
    task_exclude = sa.Column(sa.JSON(type=list))
    task_naming_schema = sa.Column(sa.String(150), default='auto-%Y-%m-%d_%H-%M')
    task_minute = sa.Column(sa.String(100), default="00")
    task_hour = sa.Column(sa.String(100), default="*")
    task_daymonth = sa.Column(sa.String(100), default="*")
    task_month = sa.Column(sa.String(100), default='*')
    task_dayweek = sa.Column(sa.String(100), default="*")
    task_allow_empty = sa.Column(sa.Boolean(), default=True)
示例#13
0
class TwoFactorAuthModel(sa.Model):
    __tablename__ = 'system_twofactorauthentication'

    id = sa.Column(sa.Integer(), primary_key=True)
    otp_digits = sa.Column(sa.Integer(), default=6)
    secret = sa.Column(sa.EncryptedText(), nullable=True, default=None)
    window = sa.Column(sa.Integer(), default=0)
    interval = sa.Column(sa.Integer(), default=30)
    services = sa.Column(sa.JSON(), default={})
    enabled = sa.Column(sa.Boolean(), default=False)
示例#14
0
class TFTPModel(sa.Model):
    __tablename__ = 'services_tftp'

    id = sa.Column(sa.Integer(), primary_key=True)
    tftp_directory = sa.Column(sa.String(255))
    tftp_newfiles = sa.Column(sa.Boolean(), default=False)
    tftp_port = sa.Column(sa.Integer(), default=21)
    tftp_username = sa.Column(sa.String(120), default="nobody")
    tftp_umask = sa.Column(sa.String(120), default='022')
    tftp_options = sa.Column(sa.String(120))
    tftp_host = sa.Column(sa.String(120), default="0.0.0.0")
示例#15
0
class UserModel(sa.Model):
    __tablename__ = 'account_bsdusers'

    id = sa.Column(sa.Integer(), primary_key=True)
    bsdusr_uid = sa.Column(sa.Integer())
    bsdusr_username = sa.Column(sa.String(16), default='User &')
    bsdusr_unixhash = sa.Column(sa.String(128), default='*')
    bsdusr_smbhash = sa.Column(sa.String(128), default='*')
    bsdusr_home = sa.Column(sa.String(255), default="/nonexistent")
    bsdusr_shell = sa.Column(sa.String(120), default='/bin/csh')
    bsdusr_full_name = sa.Column(sa.String(120))
    bsdusr_builtin = sa.Column(sa.Boolean(), default=False)
    bsdusr_password_disabled = sa.Column(sa.Boolean(), default=False)
    bsdusr_locked = sa.Column(sa.Boolean(), default=False)
    bsdusr_sudo = sa.Column(sa.Boolean(), default=False)
    bsdusr_microsoft_account = sa.Column(sa.Boolean())
    bsdusr_group_id = sa.Column(sa.ForeignKey('account_bsdgroups.id'),
                                index=True)
    bsdusr_attributes = sa.Column(sa.JSON())
    bsdusr_email = sa.Column(sa.String(254), nullable=True)
示例#16
0
class InitShutdownScriptModel(sa.Model):
    __tablename__ = 'tasks_initshutdown'

    id = sa.Column(sa.Integer(), primary_key=True)
    ini_type = sa.Column(sa.String(15), default='command')
    ini_command = sa.Column(sa.String(300))
    ini_script = sa.Column(sa.String(255), nullable=True)
    ini_when = sa.Column(sa.String(15))
    ini_enabled = sa.Column(sa.Boolean(), default=True)
    ini_timeout = sa.Column(sa.Integer(), default=10)
    ini_comment = sa.Column(sa.String(255))
    ini_script_text = sa.Column(sa.Text())
示例#17
0
class LDAPModel(sa.Model):
    __tablename__ = 'directoryservice_ldap'

    id = sa.Column(sa.Integer(), primary_key=True)
    ldap_hostname = sa.Column(sa.String(120))
    ldap_basedn = sa.Column(sa.String(120))
    ldap_binddn = sa.Column(sa.String(256))
    ldap_bindpw = sa.Column(sa.String(120))
    ldap_anonbind = sa.Column(sa.Boolean())
    ldap_ssl = sa.Column(sa.String(120))
    ldap_timeout = sa.Column(sa.Integer())
    ldap_dns_timeout = sa.Column(sa.Integer())
    ldap_has_samba_schema = sa.Column(sa.Boolean())
    ldap_auxiliary_parameters = sa.Column(sa.Text())
    ldap_schema = sa.Column(sa.String(120))
    ldap_enable = sa.Column(sa.Boolean())
    ldap_certificate_id = sa.Column(sa.ForeignKey('system_certificate.id'), index=True, nullable=True)
    ldap_kerberos_realm_id = sa.Column(sa.ForeignKey('directoryservice_kerberosrealm.id'), index=True, nullable=True)
    ldap_kerberos_principal = sa.Column(sa.String(255))
    ldap_validate_certificates = sa.Column(sa.Boolean(), default=True)
    ldap_disable_freenas_cache = sa.Column(sa.Boolean())
示例#18
0
class CertificateAuthorityModel(sa.Model):
    __tablename__ = 'system_certificateauthority'

    id = sa.Column(sa.Integer(), primary_key=True)
    cert_type = sa.Column(sa.Integer())
    cert_name = sa.Column(sa.String(120), unique=True)
    cert_certificate = sa.Column(sa.Text(), nullable=True)
    cert_privatekey = sa.Column(sa.EncryptedText(), nullable=True)
    cert_CSR = sa.Column(sa.Text(), nullable=True)
    cert_revoked_date = sa.Column(sa.DateTime(), nullable=True)
    cert_signedby_id = sa.Column(sa.ForeignKey('system_certificateauthority.id'), index=True, nullable=True)
    cert_add_to_trusted_store = sa.Column(sa.Boolean(), default=False, nullable=False)
示例#19
0
文件: afp.py 项目: stattin42/freenas
class AFPModel(sa.Model):
    __tablename__ = 'services_afp'

    id = sa.Column(sa.Integer(), primary_key=True)
    afp_srv_guest = sa.Column(sa.Boolean(), default=False)
    afp_srv_guest_user = sa.Column(sa.String(120), default="nobody")
    afp_srv_bindip = sa.Column(sa.MultiSelectField(), default=[])
    afp_srv_connections_limit = sa.Column(sa.Integer(), default=50)
    afp_srv_dbpath = sa.Column(sa.String(255), nullable=True)
    afp_srv_global_aux = sa.Column(sa.Text())
    afp_srv_map_acls = sa.Column(sa.String(120))
    afp_srv_chmod_request = sa.Column(sa.String(120))
示例#20
0
class S3Model(sa.Model):
    __tablename__ = 'services_s3'

    id = sa.Column(sa.Integer(), primary_key=True)
    s3_bindip = sa.Column(sa.String(128))
    s3_bindport = sa.Column(sa.SmallInteger(), default=9000)
    s3_access_key = sa.Column(sa.String(128), default='')
    s3_secret_key = sa.Column(sa.EncryptedText(), default='')
    s3_mode = sa.Column(sa.String(120), default="local")
    s3_disks = sa.Column(sa.String(255), default='')
    s3_certificate_id = sa.Column(sa.ForeignKey('system_certificate.id'), index=True, nullable=True)
    s3_browser = sa.Column(sa.Boolean(), default=True)
示例#21
0
class MailModel(sa.Model):
    __tablename__ = 'system_email'

    id = sa.Column(sa.Integer(), primary_key=True)
    em_fromemail = sa.Column(sa.String(120), default='')
    em_outgoingserver = sa.Column(sa.String(120))
    em_port = sa.Column(sa.Integer(), default=25)
    em_security = sa.Column(sa.String(120), default="plain")
    em_smtp = sa.Column(sa.Boolean())
    em_user = sa.Column(sa.String(120), nullable=True)
    em_pass = sa.Column(sa.String(120), nullable=True)
    em_fromname = sa.Column(sa.String(120), default='')
示例#22
0
class SharingAFPModel(sa.Model):
    __tablename__ = 'sharing_afp_share'

    id = sa.Column(sa.Integer(), primary_key=True)
    afp_path = sa.Column(sa.String(255))
    afp_name = sa.Column(sa.String(120))
    afp_comment = sa.Column(sa.String(120))
    afp_allow = sa.Column(sa.String(120))
    afp_deny = sa.Column(sa.String(120))
    afp_ro = sa.Column(sa.String(120))
    afp_rw = sa.Column(sa.String(120))
    afp_timemachine = sa.Column(sa.Boolean(), default=False)
    afp_nodev = sa.Column(sa.Boolean(), default=False)
    afp_nostat = sa.Column(sa.Boolean(), default=False)
    afp_upriv = sa.Column(sa.Boolean(), default=True)
    afp_fperm = sa.Column(sa.String(3), default="644")
    afp_dperm = sa.Column(sa.String(3), default="755")
    afp_umask = sa.Column(sa.String(3), default="000")
    afp_hostsallow = sa.Column(sa.String(120))
    afp_hostsdeny = sa.Column(sa.String(120))
    afp_auxparams = sa.Column(sa.Text())
    afp_timemachine_quota = sa.Column(sa.Integer(), default=0)
    afp_home = sa.Column(sa.Boolean(), default=False)
    afp_enabled = sa.Column(sa.Boolean(), default=True)
    afp_vuid = sa.Column(sa.String(36))
示例#23
0
class SystemGeneralModel(sa.Model):
    __tablename__ = 'system_settings'

    id = sa.Column(sa.Integer(), primary_key=True)
    stg_guiaddress = sa.Column(sa.JSON(type=list), default=['0.0.0.0'])
    stg_guiv6address = sa.Column(sa.JSON(type=list), default=['::'])
    stg_guiallowlist = sa.Column(sa.JSON(type=list), default=[])
    stg_guiport = sa.Column(sa.Integer(), default=80)
    stg_guihttpsport = sa.Column(sa.Integer(), default=443)
    stg_guihttpsredirect = sa.Column(sa.Boolean(), default=False)
    stg_guihttpsprotocols = sa.Column(sa.JSON(type=list), default=['TLSv1', 'TLSv1.1', 'TLSv1.2', 'TLSv1.3'])
    stg_guix_frame_options = sa.Column(sa.String(120), default='SAMEORIGIN')
    stg_guiconsolemsg = sa.Column(sa.Boolean(), default=True)
    stg_language = sa.Column(sa.String(120), default='en')
    stg_kbdmap = sa.Column(sa.String(120), default='us')
    stg_birthday = sa.Column(sa.DateTime(), nullable=True)
    stg_timezone = sa.Column(sa.String(120), default='America/Los_Angeles')
    stg_wizardshown = sa.Column(sa.Boolean(), default=False)
    stg_pwenc_check = sa.Column(sa.String(100))
    stg_guicertificate_id = sa.Column(sa.ForeignKey('system_certificate.id'), index=True, nullable=True)
    stg_crash_reporting = sa.Column(sa.Boolean(), nullable=True)
    stg_usage_collection = sa.Column(sa.Boolean(), nullable=True)
示例#24
0
class SmartTestModel(sa.Model):
    __tablename__ = 'tasks_smarttest'

    id = sa.Column(sa.Integer(), primary_key=True)
    smarttest_type = sa.Column(sa.String(2))
    smarttest_desc = sa.Column(sa.String(120))
    smarttest_hour = sa.Column(sa.String(100), default='*')
    smarttest_daymonth = sa.Column(sa.String(100), default='*')
    smarttest_month = sa.Column(sa.String(100), default='*')
    smarttest_dayweek = sa.Column(sa.String(100), default='*')
    smarttest_all_disks = sa.Column(sa.Boolean(), default=False)

    smarttest_disks = sa.relationship('DiskModel', secondary=lambda: SmartTestDiskModel.__table__)
示例#25
0
class SupportModel(sa.Model):
    __tablename__ = 'system_support'

    id = sa.Column(sa.Integer(), primary_key=True)
    enabled = sa.Column(sa.Boolean(), nullable=True, default=True)
    name = sa.Column(sa.String(200))
    title = sa.Column(sa.String(200))
    email = sa.Column(sa.String(200))
    phone = sa.Column(sa.String(200))
    secondary_name = sa.Column(sa.String(200))
    secondary_title = sa.Column(sa.String(200))
    secondary_email = sa.Column(sa.String(200))
    secondary_phone = sa.Column(sa.String(200))
示例#26
0
class TrueCommandModel(sa.Model):
    __tablename__ = 'system_truecommand'

    id = sa.Column(sa.Integer(), primary_key=True)
    api_key = sa.Column(sa.EncryptedText(), default=None, nullable=True)
    api_key_state = sa.Column(sa.String(128), default='DISABLED', nullable=True)
    wg_public_key = sa.Column(sa.String(255), default=None, nullable=True)
    wg_private_key = sa.Column(sa.EncryptedText(), default=None, nullable=True)
    wg_address = sa.Column(sa.String(255), default=None, nullable=True)
    tc_public_key = sa.Column(sa.String(255), default=None, nullable=True)
    endpoint = sa.Column(sa.String(255), default=None, nullable=True)
    remote_address = sa.Column(sa.String(255), default=None, nullable=True)
    enabled = sa.Column(sa.Boolean(), default=False)
示例#27
0
class AlertModel(sa.Model):
    __tablename__ = 'system_alert'

    id = sa.Column(sa.Integer(), primary_key=True)
    node = sa.Column(sa.String(100))
    source = sa.Column(sa.Text())
    key = sa.Column(sa.Text())
    datetime = sa.Column(sa.DateTime())
    last_occurrence = sa.Column(sa.DateTime())
    text = sa.Column(sa.Text())
    args = sa.Column(sa.JSON(type=None))
    dismissed = sa.Column(sa.Boolean())
    uuid = sa.Column(sa.Text())
    klass = sa.Column(sa.Text())
示例#28
0
class SMBModel(sa.Model):
    __tablename__ = 'services_cifs'

    id = sa.Column(sa.Integer(), primary_key=True)
    cifs_srv_netbiosname = sa.Column(sa.String(120))
    cifs_srv_netbiosname_b = sa.Column(sa.String(120), nullable=True)
    cifs_srv_netbiosalias = sa.Column(sa.String(120), nullable=True)
    cifs_srv_workgroup = sa.Column(sa.String(120))
    cifs_srv_description = sa.Column(sa.String(120))
    cifs_srv_unixcharset = sa.Column(sa.String(120), default="UTF-8")
    cifs_srv_loglevel = sa.Column(sa.String(120), default="0")
    cifs_srv_syslog = sa.Column(sa.Boolean(), default=False)
    cifs_srv_aapl_extensions = sa.Column(sa.Boolean(), default=False)
    cifs_srv_localmaster = sa.Column(sa.Boolean(), default=False)
    cifs_srv_guest = sa.Column(sa.String(120), default="nobody")
    cifs_srv_filemask = sa.Column(sa.String(120))
    cifs_srv_dirmask = sa.Column(sa.String(120))
    cifs_srv_smb_options = sa.Column(sa.Text())
    cifs_srv_bindip = sa.Column(sa.MultiSelectField(), nullable=True)
    cifs_SID = sa.Column(sa.String(120), nullable=True)
    cifs_srv_ntlmv1_auth = sa.Column(sa.Boolean(), default=False)
    cifs_srv_enable_smb1 = sa.Column(sa.Boolean(), default=False)
    cifs_srv_admin_group = sa.Column(sa.String(120), nullable=True, default="")
示例#29
0
class UPSModel(sa.Model):
    __tablename__ = 'services_ups'

    id = sa.Column(sa.Integer(), primary_key=True)
    ups_mode = sa.Column(sa.String(6), default='master')
    ups_identifier = sa.Column(sa.String(120), default='ups')
    ups_remotehost = sa.Column(sa.String(50))
    ups_remoteport = sa.Column(sa.Integer(), default=3493)
    ups_driver = sa.Column(sa.String(120))
    ups_port = sa.Column(sa.String(120))
    ups_options = sa.Column(sa.Text())
    ups_optionsupsd = sa.Column(sa.Text())
    ups_description = sa.Column(sa.String(120))
    ups_shutdown = sa.Column(sa.String(120), default='batt')
    ups_shutdowntimer = sa.Column(sa.Integer(), default=30)
    ups_monuser = sa.Column(sa.String(50), default='upsmon')
    ups_monpwd = sa.Column(sa.EncryptedText(), default='fixmepass')
    ups_extrausers = sa.Column(sa.Text())
    ups_rmonitor = sa.Column(sa.Boolean(), default=False)
    ups_powerdown = sa.Column(sa.Boolean(), default=True)
    ups_nocommwarntime = sa.Column(sa.Integer(), nullable=True)
    ups_hostsync = sa.Column(sa.Integer(), default=15)
    ups_shutdowncmd = sa.Column(sa.String(255), nullable=True)
示例#30
0
class KubernetesModel(sa.Model):
    __tablename__ = 'services_kubernetes'

    id = sa.Column(sa.Integer(), primary_key=True)
    pool = sa.Column(sa.String(255), default=None, nullable=True)
    cluster_cidr = sa.Column(sa.String(128), default='')
    service_cidr = sa.Column(sa.String(128), default='')
    cluster_dns_ip = sa.Column(sa.String(128), default='')
    route_v4_interface = sa.Column(sa.String(128), nullable=True)
    route_v4_gateway = sa.Column(sa.String(128), nullable=True)
    route_v6_interface = sa.Column(sa.String(128), nullable=True)
    route_v6_gateway = sa.Column(sa.String(128), nullable=True)
    node_ip = sa.Column(sa.String(128), default='0.0.0.0')
    cni_config = sa.Column(sa.JSON(type=dict), default={})
    configure_gpus = sa.Column(sa.Boolean(), default=True, nullable=False)