-- Copyright (c) 2026 Huawei Technologies Co., Ltd.
-- openUBMC is licensed under Mulan PSL v2.
-- You can use this software according to the terms and conditions of the Mulan PSL v2.
-- You may obtain a copy of Mulan PSL v2 at:
--          http://license.coscl.org.cn/MulanPSL2
-- THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
-- EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
-- MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
-- See the Mulan PSL v2 for more details.
local validate = require 'mc.validate'
local utils = require 'mc.utils'
local mdb = require 'mc.mdb'

local SuperPodLabel = {}

---@class SuperPodLabel.InterconType
---@field InterconType integer
local TInterconType = {}
TInterconType.__index = TInterconType
TInterconType.group = {}

local function TInterconType_from_obj(obj)
    return setmetatable(obj, TInterconType)
end

function TInterconType.new(InterconType)
    return TInterconType_from_obj({InterconType = InterconType or 0})
end
---@param obj SuperPodLabel.InterconType
function TInterconType:init_from_obj(obj)
    self.InterconType = obj.InterconType or 0
end

function TInterconType:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TInterconType.group)
end

TInterconType.from_obj = TInterconType_from_obj

TInterconType.proto_property = {'InterconType'}

TInterconType.default = {0}

TInterconType.struct = {{name = 'InterconType', is_array = false, struct = nil}}

function TInterconType:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'InterconType', self.InterconType, 'uint8', true, errs, need_convert)

    TInterconType:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TInterconType.proto_property, errs, need_convert)
    return self
end

function TInterconType:unpack(_)
    return self.InterconType
end

SuperPodLabel.InterconType = TInterconType

---@class SuperPodLabel.NPUBootOption
---@field NPUBootOption integer
local TNPUBootOption = {}
TNPUBootOption.__index = TNPUBootOption
TNPUBootOption.group = {}

local function TNPUBootOption_from_obj(obj)
    return setmetatable(obj, TNPUBootOption)
end

function TNPUBootOption.new(NPUBootOption)
    return TNPUBootOption_from_obj({NPUBootOption = NPUBootOption or 0})
end
---@param obj SuperPodLabel.NPUBootOption
function TNPUBootOption:init_from_obj(obj)
    self.NPUBootOption = obj.NPUBootOption or 0
end

function TNPUBootOption:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TNPUBootOption.group)
end

TNPUBootOption.from_obj = TNPUBootOption_from_obj

TNPUBootOption.proto_property = {'NPUBootOption'}

TNPUBootOption.default = {0}

TNPUBootOption.struct = {{name = 'NPUBootOption', is_array = false, struct = nil}}

function TNPUBootOption:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'NPUBootOption', self.NPUBootOption, 'uint8', true, errs, need_convert)

    TNPUBootOption:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TNPUBootOption.proto_property, errs, need_convert)
    return self
end

function TNPUBootOption:unpack(_)
    return self.NPUBootOption
end

SuperPodLabel.NPUBootOption = TNPUBootOption

---@class SuperPodLabel.PresentDPUCount
---@field PresentDPUCount integer
local TPresentDPUCount = {}
TPresentDPUCount.__index = TPresentDPUCount
TPresentDPUCount.group = {}

local function TPresentDPUCount_from_obj(obj)
    return setmetatable(obj, TPresentDPUCount)
end

function TPresentDPUCount.new(PresentDPUCount)
    return TPresentDPUCount_from_obj({PresentDPUCount = PresentDPUCount or 0})
end
---@param obj SuperPodLabel.PresentDPUCount
function TPresentDPUCount:init_from_obj(obj)
    self.PresentDPUCount = obj.PresentDPUCount or 0
end

function TPresentDPUCount:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TPresentDPUCount.group)
end

TPresentDPUCount.from_obj = TPresentDPUCount_from_obj

TPresentDPUCount.proto_property = {'PresentDPUCount'}

TPresentDPUCount.default = {0}

TPresentDPUCount.struct = {{name = 'PresentDPUCount', is_array = false, struct = nil}}

function TPresentDPUCount:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'PresentDPUCount', self.PresentDPUCount, 'uint8', true, errs, need_convert)

    TPresentDPUCount:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TPresentDPUCount.proto_property, errs, need_convert)
    return self
end

function TPresentDPUCount:unpack(_)
    return self.PresentDPUCount
end

SuperPodLabel.PresentDPUCount = TPresentDPUCount

---@class SuperPodLabel.LogicalSlotNumber
---@field LogicalSlotNumber integer
local TLogicalSlotNumber = {}
TLogicalSlotNumber.__index = TLogicalSlotNumber
TLogicalSlotNumber.group = {}

local function TLogicalSlotNumber_from_obj(obj)
    return setmetatable(obj, TLogicalSlotNumber)
end

function TLogicalSlotNumber.new(LogicalSlotNumber)
    return TLogicalSlotNumber_from_obj({LogicalSlotNumber = LogicalSlotNumber or 255})
end
---@param obj SuperPodLabel.LogicalSlotNumber
function TLogicalSlotNumber:init_from_obj(obj)
    self.LogicalSlotNumber = obj.LogicalSlotNumber or 255
end

function TLogicalSlotNumber:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TLogicalSlotNumber.group)
end

TLogicalSlotNumber.from_obj = TLogicalSlotNumber_from_obj

TLogicalSlotNumber.proto_property = {'LogicalSlotNumber'}

TLogicalSlotNumber.default = {0}

TLogicalSlotNumber.struct = {{name = 'LogicalSlotNumber', is_array = false, struct = nil}}

function TLogicalSlotNumber:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'LogicalSlotNumber', self.LogicalSlotNumber, 'uint8', true, errs, need_convert)

    TLogicalSlotNumber:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TLogicalSlotNumber.proto_property, errs, need_convert)
    return self
end

function TLogicalSlotNumber:unpack(_)
    return self.LogicalSlotNumber
end

SuperPodLabel.LogicalSlotNumber = TLogicalSlotNumber

---@class SuperPodLabel.IsUBControlNode
---@field IsUBControlNode boolean
local TIsUBControlNode = {}
TIsUBControlNode.__index = TIsUBControlNode
TIsUBControlNode.group = {}

local function TIsUBControlNode_from_obj(obj)
    return setmetatable(obj, TIsUBControlNode)
end

function TIsUBControlNode.new(IsUBControlNode)
    return TIsUBControlNode_from_obj({IsUBControlNode = IsUBControlNode or false})
end
---@param obj SuperPodLabel.IsUBControlNode
function TIsUBControlNode:init_from_obj(obj)
    self.IsUBControlNode = obj.IsUBControlNode or false
end

function TIsUBControlNode:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TIsUBControlNode.group)
end

TIsUBControlNode.from_obj = TIsUBControlNode_from_obj

TIsUBControlNode.proto_property = {'IsUBControlNode'}

TIsUBControlNode.default = {false}

TIsUBControlNode.struct = {{name = 'IsUBControlNode', is_array = false, struct = nil}}

function TIsUBControlNode:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'IsUBControlNode', self.IsUBControlNode, 'bool', true, errs, need_convert)

    TIsUBControlNode:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TIsUBControlNode.proto_property, errs, need_convert)
    return self
end

function TIsUBControlNode:unpack(_)
    return self.IsUBControlNode
end

SuperPodLabel.IsUBControlNode = TIsUBControlNode

---@class SuperPodLabel.IsUBFabricMode
---@field IsUBFabricMode boolean
local TIsUBFabricMode = {}
TIsUBFabricMode.__index = TIsUBFabricMode
TIsUBFabricMode.group = {}

local function TIsUBFabricMode_from_obj(obj)
    return setmetatable(obj, TIsUBFabricMode)
end

function TIsUBFabricMode.new(IsUBFabricMode)
    return TIsUBFabricMode_from_obj({IsUBFabricMode = IsUBFabricMode or false})
end
---@param obj SuperPodLabel.IsUBFabricMode
function TIsUBFabricMode:init_from_obj(obj)
    self.IsUBFabricMode = obj.IsUBFabricMode or false
end

function TIsUBFabricMode:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TIsUBFabricMode.group)
end

TIsUBFabricMode.from_obj = TIsUBFabricMode_from_obj

TIsUBFabricMode.proto_property = {'IsUBFabricMode'}

TIsUBFabricMode.default = {false}

TIsUBFabricMode.struct = {{name = 'IsUBFabricMode', is_array = false, struct = nil}}

function TIsUBFabricMode:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'IsUBFabricMode', self.IsUBFabricMode, 'bool', true, errs, need_convert)

    TIsUBFabricMode:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TIsUBFabricMode.proto_property, errs, need_convert)
    return self
end

function TIsUBFabricMode:unpack(_)
    return self.IsUBFabricMode
end

SuperPodLabel.IsUBFabricMode = TIsUBFabricMode

---@class SuperPodLabel.UBMDeployMode
---@field UBMDeployMode integer
local TUBMDeployMode = {}
TUBMDeployMode.__index = TUBMDeployMode
TUBMDeployMode.group = {}

local function TUBMDeployMode_from_obj(obj)
    return setmetatable(obj, TUBMDeployMode)
end

function TUBMDeployMode.new(UBMDeployMode)
    return TUBMDeployMode_from_obj({UBMDeployMode = UBMDeployMode or 0})
end
---@param obj SuperPodLabel.UBMDeployMode
function TUBMDeployMode:init_from_obj(obj)
    self.UBMDeployMode = obj.UBMDeployMode or 0
end

function TUBMDeployMode:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TUBMDeployMode.group)
end

TUBMDeployMode.from_obj = TUBMDeployMode_from_obj

TUBMDeployMode.proto_property = {'UBMDeployMode'}

TUBMDeployMode.default = {0}

TUBMDeployMode.struct = {{name = 'UBMDeployMode', is_array = false, struct = nil}}

function TUBMDeployMode:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'UBMDeployMode', self.UBMDeployMode, 'uint8', true, errs, need_convert)

    TUBMDeployMode:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TUBMDeployMode.proto_property, errs, need_convert)
    return self
end

function TUBMDeployMode:unpack(_)
    return self.UBMDeployMode
end

SuperPodLabel.UBMDeployMode = TUBMDeployMode

---@class SuperPodLabel.ChassisId
---@field ChassisId integer
local TChassisId = {}
TChassisId.__index = TChassisId
TChassisId.group = {}

local function TChassisId_from_obj(obj)
    return setmetatable(obj, TChassisId)
end

function TChassisId.new(ChassisId)
    return TChassisId_from_obj({ChassisId = ChassisId or 65535})
end
---@param obj SuperPodLabel.ChassisId
function TChassisId:init_from_obj(obj)
    self.ChassisId = obj.ChassisId or 65535
end

function TChassisId:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TChassisId.group)
end

TChassisId.from_obj = TChassisId_from_obj

TChassisId.proto_property = {'ChassisId'}

TChassisId.default = {0}

TChassisId.struct = {{name = 'ChassisId', is_array = false, struct = nil}}

function TChassisId:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'ChassisId', self.ChassisId, 'uint16', true, errs, need_convert)

    TChassisId:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TChassisId.proto_property, errs, need_convert)
    return self
end

function TChassisId:unpack(_)
    return self.ChassisId
end

SuperPodLabel.ChassisId = TChassisId

---@class SuperPodLabel.TopologyType
---@field TopologyType integer
local TTopologyType = {}
TTopologyType.__index = TTopologyType
TTopologyType.group = {}

local function TTopologyType_from_obj(obj)
    return setmetatable(obj, TTopologyType)
end

function TTopologyType.new(TopologyType)
    return TTopologyType_from_obj({TopologyType = TopologyType or 0})
end
---@param obj SuperPodLabel.TopologyType
function TTopologyType:init_from_obj(obj)
    self.TopologyType = obj.TopologyType or 0
end

function TTopologyType:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TTopologyType.group)
end

TTopologyType.from_obj = TTopologyType_from_obj

TTopologyType.proto_property = {'TopologyType'}

TTopologyType.default = {0}

TTopologyType.struct = {{name = 'TopologyType', is_array = false, struct = nil}}

function TTopologyType:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'TopologyType', self.TopologyType, 'uint8', true, errs, need_convert)

    TTopologyType:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TTopologyType.proto_property, errs, need_convert)
    return self
end

function TTopologyType:unpack(_)
    return self.TopologyType
end

SuperPodLabel.TopologyType = TTopologyType

---@class SuperPodLabel.SuperPodEnabled
---@field SuperPodEnabled boolean
local TSuperPodEnabled = {}
TSuperPodEnabled.__index = TSuperPodEnabled
TSuperPodEnabled.group = {}

local function TSuperPodEnabled_from_obj(obj)
    return setmetatable(obj, TSuperPodEnabled)
end

function TSuperPodEnabled.new(SuperPodEnabled)
    return TSuperPodEnabled_from_obj({SuperPodEnabled = SuperPodEnabled or false})
end
---@param obj SuperPodLabel.SuperPodEnabled
function TSuperPodEnabled:init_from_obj(obj)
    self.SuperPodEnabled = obj.SuperPodEnabled or false
end

function TSuperPodEnabled:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSuperPodEnabled.group)
end

TSuperPodEnabled.from_obj = TSuperPodEnabled_from_obj

TSuperPodEnabled.proto_property = {'SuperPodEnabled'}

TSuperPodEnabled.default = {false}

TSuperPodEnabled.struct = {{name = 'SuperPodEnabled', is_array = false, struct = nil}}

function TSuperPodEnabled:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'SuperPodEnabled', self.SuperPodEnabled, 'bool', true, errs, need_convert)

    TSuperPodEnabled:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSuperPodEnabled.proto_property, errs, need_convert)
    return self
end

function TSuperPodEnabled:unpack(_)
    return self.SuperPodEnabled
end

SuperPodLabel.SuperPodEnabled = TSuperPodEnabled

---@class SuperPodLabel.SuperPodSize
---@field SuperPodSize integer
local TSuperPodSize = {}
TSuperPodSize.__index = TSuperPodSize
TSuperPodSize.group = {}

local function TSuperPodSize_from_obj(obj)
    return setmetatable(obj, TSuperPodSize)
end

function TSuperPodSize.new(SuperPodSize)
    return TSuperPodSize_from_obj({SuperPodSize = SuperPodSize or 384})
end
---@param obj SuperPodLabel.SuperPodSize
function TSuperPodSize:init_from_obj(obj)
    self.SuperPodSize = obj.SuperPodSize or 384
end

function TSuperPodSize:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSuperPodSize.group)
end

TSuperPodSize.from_obj = TSuperPodSize_from_obj

TSuperPodSize.proto_property = {'SuperPodSize'}

TSuperPodSize.default = {0}

TSuperPodSize.struct = {{name = 'SuperPodSize', is_array = false, struct = nil}}

function TSuperPodSize:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'SuperPodSize', self.SuperPodSize, 'uint16', true, errs, need_convert)

    TSuperPodSize:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSuperPodSize.proto_property, errs, need_convert)
    return self
end

function TSuperPodSize:unpack(_)
    return self.SuperPodSize
end

SuperPodLabel.SuperPodSize = TSuperPodSize

---@class SuperPodLabel.ServerIndex
---@field ServerIndex integer
local TServerIndex = {}
TServerIndex.__index = TServerIndex
TServerIndex.group = {}

local function TServerIndex_from_obj(obj)
    return setmetatable(obj, TServerIndex)
end

function TServerIndex.new(ServerIndex)
    return TServerIndex_from_obj({ServerIndex = ServerIndex or 65535})
end
---@param obj SuperPodLabel.ServerIndex
function TServerIndex:init_from_obj(obj)
    self.ServerIndex = obj.ServerIndex or 65535
end

function TServerIndex:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TServerIndex.group)
end

TServerIndex.from_obj = TServerIndex_from_obj

TServerIndex.proto_property = {'ServerIndex'}

TServerIndex.default = {0}

TServerIndex.struct = {{name = 'ServerIndex', is_array = false, struct = nil}}

function TServerIndex:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'ServerIndex', self.ServerIndex, 'uint16', true, errs, need_convert)

    TServerIndex:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TServerIndex.proto_property, errs, need_convert)
    return self
end

function TServerIndex:unpack(_)
    return self.ServerIndex
end

SuperPodLabel.ServerIndex = TServerIndex

---@class SuperPodLabel.SuperPodId
---@field SuperPodId integer
local TSuperPodId = {}
TSuperPodId.__index = TSuperPodId
TSuperPodId.group = {}

local function TSuperPodId_from_obj(obj)
    return setmetatable(obj, TSuperPodId)
end

function TSuperPodId.new(SuperPodId)
    return TSuperPodId_from_obj({SuperPodId = SuperPodId or 4294967295})
end
---@param obj SuperPodLabel.SuperPodId
function TSuperPodId:init_from_obj(obj)
    self.SuperPodId = obj.SuperPodId or 4294967295
end

function TSuperPodId:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSuperPodId.group)
end

TSuperPodId.from_obj = TSuperPodId_from_obj

TSuperPodId.proto_property = {'SuperPodId'}

TSuperPodId.default = {0}

TSuperPodId.struct = {{name = 'SuperPodId', is_array = false, struct = nil}}

function TSuperPodId:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'SuperPodId', self.SuperPodId, 'uint32', true, errs, need_convert)

    TSuperPodId:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSuperPodId.proto_property, errs, need_convert)
    return self
end

function TSuperPodId:unpack(_)
    return self.SuperPodId
end

SuperPodLabel.SuperPodId = TSuperPodId

---@class SuperPodLabel.SetSuperPodLabelRsp
local TSetSuperPodLabelRsp = {}
TSetSuperPodLabelRsp.__index = TSetSuperPodLabelRsp
TSetSuperPodLabelRsp.group = {}

local function TSetSuperPodLabelRsp_from_obj(obj)
    return setmetatable(obj, TSetSuperPodLabelRsp)
end

function TSetSuperPodLabelRsp.new()
    return TSetSuperPodLabelRsp_from_obj({})
end
---@param obj SuperPodLabel.SetSuperPodLabelRsp
function TSetSuperPodLabelRsp:init_from_obj(obj)

end

function TSetSuperPodLabelRsp:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSetSuperPodLabelRsp.group)
end

TSetSuperPodLabelRsp.from_obj = TSetSuperPodLabelRsp_from_obj

TSetSuperPodLabelRsp.proto_property = {}

TSetSuperPodLabelRsp.default = {}

TSetSuperPodLabelRsp.struct = {}

function TSetSuperPodLabelRsp:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    TSetSuperPodLabelRsp:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSetSuperPodLabelRsp.proto_property, errs, need_convert)
    return self
end

function TSetSuperPodLabelRsp:unpack(_)
end

SuperPodLabel.SetSuperPodLabelRsp = TSetSuperPodLabelRsp

---@class SuperPodLabel.RestoreDefaultsRsp
---@field Result boolean
local TRestoreDefaultsRsp = {}
TRestoreDefaultsRsp.__index = TRestoreDefaultsRsp
TRestoreDefaultsRsp.group = {}

local function TRestoreDefaultsRsp_from_obj(obj)
    return setmetatable(obj, TRestoreDefaultsRsp)
end

function TRestoreDefaultsRsp.new(Result)
    return TRestoreDefaultsRsp_from_obj({Result = Result})
end
---@param obj SuperPodLabel.RestoreDefaultsRsp
function TRestoreDefaultsRsp:init_from_obj(obj)
    self.Result = obj.Result
end

function TRestoreDefaultsRsp:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TRestoreDefaultsRsp.group)
end

TRestoreDefaultsRsp.from_obj = TRestoreDefaultsRsp_from_obj

TRestoreDefaultsRsp.proto_property = {'Result'}

TRestoreDefaultsRsp.default = {false}

TRestoreDefaultsRsp.struct = {{name = 'Result', is_array = false, struct = nil}}

function TRestoreDefaultsRsp:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'Result', self.Result, 'bool', false, errs, need_convert)

    TRestoreDefaultsRsp:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TRestoreDefaultsRsp.proto_property, errs, need_convert)
    return self
end

function TRestoreDefaultsRsp:unpack(_)
    return self.Result
end

SuperPodLabel.RestoreDefaultsRsp = TRestoreDefaultsRsp

---@class SuperPodLabel.RestoreDefaultsReq
local TRestoreDefaultsReq = {}
TRestoreDefaultsReq.__index = TRestoreDefaultsReq
TRestoreDefaultsReq.group = {}

local function TRestoreDefaultsReq_from_obj(obj)
    return setmetatable(obj, TRestoreDefaultsReq)
end

function TRestoreDefaultsReq.new()
    return TRestoreDefaultsReq_from_obj({})
end
---@param obj SuperPodLabel.RestoreDefaultsReq
function TRestoreDefaultsReq:init_from_obj(obj)

end

function TRestoreDefaultsReq:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TRestoreDefaultsReq.group)
end

TRestoreDefaultsReq.from_obj = TRestoreDefaultsReq_from_obj

TRestoreDefaultsReq.proto_property = {}

TRestoreDefaultsReq.default = {}

TRestoreDefaultsReq.struct = {}

function TRestoreDefaultsReq:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    TRestoreDefaultsReq:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TRestoreDefaultsReq.proto_property, errs, need_convert)
    return self
end

function TRestoreDefaultsReq:unpack(_)
end

SuperPodLabel.RestoreDefaultsReq = TRestoreDefaultsReq

---@class SuperPodLabel.SetSuperPodEnabledRsp
local TSetSuperPodEnabledRsp = {}
TSetSuperPodEnabledRsp.__index = TSetSuperPodEnabledRsp
TSetSuperPodEnabledRsp.group = {}

local function TSetSuperPodEnabledRsp_from_obj(obj)
    return setmetatable(obj, TSetSuperPodEnabledRsp)
end

function TSetSuperPodEnabledRsp.new()
    return TSetSuperPodEnabledRsp_from_obj({})
end
---@param obj SuperPodLabel.SetSuperPodEnabledRsp
function TSetSuperPodEnabledRsp:init_from_obj(obj)

end

function TSetSuperPodEnabledRsp:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSetSuperPodEnabledRsp.group)
end

TSetSuperPodEnabledRsp.from_obj = TSetSuperPodEnabledRsp_from_obj

TSetSuperPodEnabledRsp.proto_property = {}

TSetSuperPodEnabledRsp.default = {}

TSetSuperPodEnabledRsp.struct = {}

function TSetSuperPodEnabledRsp:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    TSetSuperPodEnabledRsp:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSetSuperPodEnabledRsp.proto_property, errs, need_convert)
    return self
end

function TSetSuperPodEnabledRsp:unpack(_)
end

SuperPodLabel.SetSuperPodEnabledRsp = TSetSuperPodEnabledRsp

---@class SuperPodLabel.SetSuperPodEnabledReq
---@field SuperPodEnabled boolean
local TSetSuperPodEnabledReq = {}
TSetSuperPodEnabledReq.__index = TSetSuperPodEnabledReq
TSetSuperPodEnabledReq.group = {}

local function TSetSuperPodEnabledReq_from_obj(obj)
    return setmetatable(obj, TSetSuperPodEnabledReq)
end

function TSetSuperPodEnabledReq.new(SuperPodEnabled)
    return TSetSuperPodEnabledReq_from_obj({SuperPodEnabled = SuperPodEnabled})
end
---@param obj SuperPodLabel.SetSuperPodEnabledReq
function TSetSuperPodEnabledReq:init_from_obj(obj)
    self.SuperPodEnabled = obj.SuperPodEnabled
end

function TSetSuperPodEnabledReq:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSetSuperPodEnabledReq.group)
end

TSetSuperPodEnabledReq.from_obj = TSetSuperPodEnabledReq_from_obj

TSetSuperPodEnabledReq.proto_property = {'SuperPodEnabled'}

TSetSuperPodEnabledReq.default = {false}

TSetSuperPodEnabledReq.struct = {{name = 'SuperPodEnabled', is_array = false, struct = nil}}

function TSetSuperPodEnabledReq:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'SuperPodEnabled', self.SuperPodEnabled, 'bool', false, errs, need_convert)

    TSetSuperPodEnabledReq:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSetSuperPodEnabledReq.proto_property, errs, need_convert)
    return self
end

function TSetSuperPodEnabledReq:unpack(_)
    return self.SuperPodEnabled
end

SuperPodLabel.SetSuperPodEnabledReq = TSetSuperPodEnabledReq

---@class SuperPodLabel.SetSuperPodSizeRsp
---@field Result boolean
local TSetSuperPodSizeRsp = {}
TSetSuperPodSizeRsp.__index = TSetSuperPodSizeRsp
TSetSuperPodSizeRsp.group = {}

local function TSetSuperPodSizeRsp_from_obj(obj)
    return setmetatable(obj, TSetSuperPodSizeRsp)
end

function TSetSuperPodSizeRsp.new(Result)
    return TSetSuperPodSizeRsp_from_obj({Result = Result})
end
---@param obj SuperPodLabel.SetSuperPodSizeRsp
function TSetSuperPodSizeRsp:init_from_obj(obj)
    self.Result = obj.Result
end

function TSetSuperPodSizeRsp:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSetSuperPodSizeRsp.group)
end

TSetSuperPodSizeRsp.from_obj = TSetSuperPodSizeRsp_from_obj

TSetSuperPodSizeRsp.proto_property = {'Result'}

TSetSuperPodSizeRsp.default = {false}

TSetSuperPodSizeRsp.struct = {{name = 'Result', is_array = false, struct = nil}}

function TSetSuperPodSizeRsp:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'Result', self.Result, 'bool', false, errs, need_convert)

    TSetSuperPodSizeRsp:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSetSuperPodSizeRsp.proto_property, errs, need_convert)
    return self
end

function TSetSuperPodSizeRsp:unpack(_)
    return self.Result
end

SuperPodLabel.SetSuperPodSizeRsp = TSetSuperPodSizeRsp

---@class SuperPodLabel.SetSuperPodSizeReq
---@field SuperPodSize integer
local TSetSuperPodSizeReq = {}
TSetSuperPodSizeReq.__index = TSetSuperPodSizeReq
TSetSuperPodSizeReq.group = {}

local function TSetSuperPodSizeReq_from_obj(obj)
    return setmetatable(obj, TSetSuperPodSizeReq)
end

function TSetSuperPodSizeReq.new(SuperPodSize)
    return TSetSuperPodSizeReq_from_obj({SuperPodSize = SuperPodSize})
end
---@param obj SuperPodLabel.SetSuperPodSizeReq
function TSetSuperPodSizeReq:init_from_obj(obj)
    self.SuperPodSize = obj.SuperPodSize
end

function TSetSuperPodSizeReq:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSetSuperPodSizeReq.group)
end

TSetSuperPodSizeReq.from_obj = TSetSuperPodSizeReq_from_obj

TSetSuperPodSizeReq.proto_property = {'SuperPodSize'}

TSetSuperPodSizeReq.default = {0}

TSetSuperPodSizeReq.struct = {{name = 'SuperPodSize', is_array = false, struct = nil}}

function TSetSuperPodSizeReq:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'SuperPodSize', self.SuperPodSize, 'uint16', false, errs, need_convert)

    TSetSuperPodSizeReq:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSetSuperPodSizeReq.proto_property, errs, need_convert)
    return self
end

function TSetSuperPodSizeReq:unpack(_)
    return self.SuperPodSize
end

SuperPodLabel.SetSuperPodSizeReq = TSetSuperPodSizeReq

---@class SuperPodLabel.SetServerIndexRsp
---@field Result boolean
local TSetServerIndexRsp = {}
TSetServerIndexRsp.__index = TSetServerIndexRsp
TSetServerIndexRsp.group = {}

local function TSetServerIndexRsp_from_obj(obj)
    return setmetatable(obj, TSetServerIndexRsp)
end

function TSetServerIndexRsp.new(Result)
    return TSetServerIndexRsp_from_obj({Result = Result})
end
---@param obj SuperPodLabel.SetServerIndexRsp
function TSetServerIndexRsp:init_from_obj(obj)
    self.Result = obj.Result
end

function TSetServerIndexRsp:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSetServerIndexRsp.group)
end

TSetServerIndexRsp.from_obj = TSetServerIndexRsp_from_obj

TSetServerIndexRsp.proto_property = {'Result'}

TSetServerIndexRsp.default = {false}

TSetServerIndexRsp.struct = {{name = 'Result', is_array = false, struct = nil}}

function TSetServerIndexRsp:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'Result', self.Result, 'bool', false, errs, need_convert)

    TSetServerIndexRsp:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSetServerIndexRsp.proto_property, errs, need_convert)
    return self
end

function TSetServerIndexRsp:unpack(_)
    return self.Result
end

SuperPodLabel.SetServerIndexRsp = TSetServerIndexRsp

---@class SuperPodLabel.SetServerIndexReq
---@field ServerIndex integer
local TSetServerIndexReq = {}
TSetServerIndexReq.__index = TSetServerIndexReq
TSetServerIndexReq.group = {}

local function TSetServerIndexReq_from_obj(obj)
    return setmetatable(obj, TSetServerIndexReq)
end

function TSetServerIndexReq.new(ServerIndex)
    return TSetServerIndexReq_from_obj({ServerIndex = ServerIndex})
end
---@param obj SuperPodLabel.SetServerIndexReq
function TSetServerIndexReq:init_from_obj(obj)
    self.ServerIndex = obj.ServerIndex
end

function TSetServerIndexReq:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSetServerIndexReq.group)
end

TSetServerIndexReq.from_obj = TSetServerIndexReq_from_obj

TSetServerIndexReq.proto_property = {'ServerIndex'}

TSetServerIndexReq.default = {0}

TSetServerIndexReq.struct = {{name = 'ServerIndex', is_array = false, struct = nil}}

function TSetServerIndexReq:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'ServerIndex', self.ServerIndex, 'uint16', false, errs, need_convert)

    TSetServerIndexReq:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSetServerIndexReq.proto_property, errs, need_convert)
    return self
end

function TSetServerIndexReq:unpack(_)
    return self.ServerIndex
end

SuperPodLabel.SetServerIndexReq = TSetServerIndexReq

---@class SuperPodLabel.SetSuperPodIdRsp
---@field Result boolean
local TSetSuperPodIdRsp = {}
TSetSuperPodIdRsp.__index = TSetSuperPodIdRsp
TSetSuperPodIdRsp.group = {}

local function TSetSuperPodIdRsp_from_obj(obj)
    return setmetatable(obj, TSetSuperPodIdRsp)
end

function TSetSuperPodIdRsp.new(Result)
    return TSetSuperPodIdRsp_from_obj({Result = Result})
end
---@param obj SuperPodLabel.SetSuperPodIdRsp
function TSetSuperPodIdRsp:init_from_obj(obj)
    self.Result = obj.Result
end

function TSetSuperPodIdRsp:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSetSuperPodIdRsp.group)
end

TSetSuperPodIdRsp.from_obj = TSetSuperPodIdRsp_from_obj

TSetSuperPodIdRsp.proto_property = {'Result'}

TSetSuperPodIdRsp.default = {false}

TSetSuperPodIdRsp.struct = {{name = 'Result', is_array = false, struct = nil}}

function TSetSuperPodIdRsp:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'Result', self.Result, 'bool', false, errs, need_convert)

    TSetSuperPodIdRsp:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSetSuperPodIdRsp.proto_property, errs, need_convert)
    return self
end

function TSetSuperPodIdRsp:unpack(_)
    return self.Result
end

SuperPodLabel.SetSuperPodIdRsp = TSetSuperPodIdRsp

---@class SuperPodLabel.SetSuperPodIdReq
---@field SuperPodId integer
local TSetSuperPodIdReq = {}
TSetSuperPodIdReq.__index = TSetSuperPodIdReq
TSetSuperPodIdReq.group = {}

local function TSetSuperPodIdReq_from_obj(obj)
    return setmetatable(obj, TSetSuperPodIdReq)
end

function TSetSuperPodIdReq.new(SuperPodId)
    return TSetSuperPodIdReq_from_obj({SuperPodId = SuperPodId})
end
---@param obj SuperPodLabel.SetSuperPodIdReq
function TSetSuperPodIdReq:init_from_obj(obj)
    self.SuperPodId = obj.SuperPodId
end

function TSetSuperPodIdReq:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSetSuperPodIdReq.group)
end

TSetSuperPodIdReq.from_obj = TSetSuperPodIdReq_from_obj

TSetSuperPodIdReq.proto_property = {'SuperPodId'}

TSetSuperPodIdReq.default = {0}

TSetSuperPodIdReq.struct = {{name = 'SuperPodId', is_array = false, struct = nil}}

function TSetSuperPodIdReq:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'SuperPodId', self.SuperPodId, 'uint32', false, errs, need_convert)

    TSetSuperPodIdReq:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSetSuperPodIdReq.proto_property, errs, need_convert)
    return self
end

function TSetSuperPodIdReq:unpack(_)
    return self.SuperPodId
end

SuperPodLabel.SetSuperPodIdReq = TSetSuperPodIdReq

---@class SuperPodLabel.SuperPodLabel
---@field Key string
---@field Value integer
local TSuperPodLabel = {}
TSuperPodLabel.__index = TSuperPodLabel
TSuperPodLabel.group = {}

local function TSuperPodLabel_from_obj(obj)
    return setmetatable(obj, TSuperPodLabel)
end

function TSuperPodLabel.new(Key, Value)
    return TSuperPodLabel_from_obj({Key = Key, Value = Value})
end
---@param obj SuperPodLabel.SuperPodLabel
function TSuperPodLabel:init_from_obj(obj)
    self.Key = obj.Key
    self.Value = obj.Value
end

function TSuperPodLabel:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSuperPodLabel.group)
end

TSuperPodLabel.from_obj = TSuperPodLabel_from_obj

TSuperPodLabel.proto_property = {'Key', 'Value'}

TSuperPodLabel.default = {'', 0}

TSuperPodLabel.struct = {
    {name = 'Key', is_array = false, struct = nil}, {name = 'Value', is_array = false, struct = nil}
}

function TSuperPodLabel:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    validate.Optional(prefix .. 'Key', self.Key, 'string', false, errs, need_convert)
    validate.Optional(prefix .. 'Value', self.Value, 'uint32', false, errs, need_convert)

    TSuperPodLabel:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSuperPodLabel.proto_property, errs, need_convert)
    return self
end

function TSuperPodLabel:unpack(_)
    return self.Key, self.Value
end

SuperPodLabel.SuperPodLabel = TSuperPodLabel

---@class SuperPodLabel.SetSuperPodLabelReq
---@field Policy integer
---@field SuperPodLabel SuperPodLabel.SuperPodLabel[]
local TSetSuperPodLabelReq = {}
TSetSuperPodLabelReq.__index = TSetSuperPodLabelReq
TSetSuperPodLabelReq.group = {}

local function TSetSuperPodLabelReq_from_obj(obj)
    obj.SuperPodLabel = utils.from_obj(SuperPodLabel.SuperPodLabel, obj.SuperPodLabel, true)
    return setmetatable(obj, TSetSuperPodLabelReq)
end

function TSetSuperPodLabelReq.new(Policy, SuperPodLabel)
    return TSetSuperPodLabelReq_from_obj({Policy = Policy or 0, SuperPodLabel = SuperPodLabel})
end
---@param obj SuperPodLabel.SetSuperPodLabelReq
function TSetSuperPodLabelReq:init_from_obj(obj)
    self.Policy = obj.Policy or 0
    self.SuperPodLabel = obj.SuperPodLabel
end

function TSetSuperPodLabelReq:remove_error_props(errs, obj)
    utils.remove_obj_error_property(obj, errs, TSetSuperPodLabelReq.group)
end

TSetSuperPodLabelReq.from_obj = TSetSuperPodLabelReq_from_obj

TSetSuperPodLabelReq.proto_property = {'Policy', 'SuperPodLabel'}

TSetSuperPodLabelReq.default = {0, {}}

TSetSuperPodLabelReq.struct = {
    {name = 'Policy', is_array = false, struct = nil},
    {name = 'SuperPodLabel', is_array = true, struct = SuperPodLabel.SuperPodLabel.struct}
}

function TSetSuperPodLabelReq:validate(prefix, errs, need_convert)
    prefix = prefix or ''

    for _, v in pairs(self.SuperPodLabel) do
        SuperPodLabel.SuperPodLabel.new(v.Key, v.Value):validate(prefix, errs, need_convert)
    end

    validate.Optional(prefix .. 'Policy', self.Policy, 'uint8', false, errs, need_convert)

    TSetSuperPodLabelReq:remove_error_props(errs, self)
    validate.CheckUnknowProperty(self, TSetSuperPodLabelReq.proto_property, errs, need_convert)
    return self
end

function TSetSuperPodLabelReq:unpack(raw)
    return self.Policy, utils.unpack(raw, self.SuperPodLabel, true)
end

SuperPodLabel.SetSuperPodLabelReq = TSetSuperPodLabelReq

SuperPodLabel.interface = mdb.register_interface('bmc.kepler.Chassis.SuperPodLabel', {
    SuperPodId = {'u', {'EMIT_CHANGE'}, true, 4294967295},
    ServerIndex = {'q', {'EMIT_CHANGE'}, true, 65535},
    SuperPodSize = {'q', {'EMIT_CHANGE'}, true, 384},
    SuperPodEnabled = {'b', {'EMIT_CHANGE'}, true, false},
    TopologyType = {'y', {}, true, 0},
    ChassisId = {'q', {}, true, 65535},
    UBMDeployMode = {'y', {}, true, 0},
    IsUBFabricMode = {'b', {}, true, false},
    IsUBControlNode = {'b', {}, true, false},
    LogicalSlotNumber = {'y', {'EMIT_CHANGE'}, true, 255},
    PresentDPUCount = {'y', {}, true, 0},
    NPUBootOption = {'y', {}, true, 0},
    InterconType = {'y', {}, true, 0}
}, {
    SetSuperPodId = {'a{ss}u', 'b', TSetSuperPodIdReq, TSetSuperPodIdRsp},
    SetServerIndex = {'a{ss}q', 'b', TSetServerIndexReq, TSetServerIndexRsp},
    SetSuperPodSize = {'a{ss}q', 'b', TSetSuperPodSizeReq, TSetSuperPodSizeRsp},
    SetSuperPodEnabled = {'a{ss}b', '', TSetSuperPodEnabledReq, TSetSuperPodEnabledRsp},
    RestoreDefaults = {'a{ss}', 'b', TRestoreDefaultsReq, TRestoreDefaultsRsp},
    SetSuperPodLabel = {'a{ss}ya(su)', '', TSetSuperPodLabelReq, TSetSuperPodLabelRsp}
}, {})

return SuperPodLabel
