问题描述
function lsw_main:register_csr_object_mgmt()
local ret = constants.RET.RET_OK
-- 注册对象响应回调函数
-- 添加对象回调
object_manage.on_add_object(self.bus, function(class_name, object, position)
self.lsw.lsw_cfg_mgmt:on_add_object(class_name, object, position)
end,
function(object)
return false
end
)
-- 删除对象回调
object_manage.on_delete_object(self.bus, function(class_name, object, position)
end)
-- 添加对象完成回调
object_manage.on_add_object_complete(self.bus, function(position)
local ret = constants.RET.RET_OK
ret = self.lsw.lsw_cfg_mgmt:convert_csr_to_soft()
if ret ~= constants.RET.RET_OK then
logging:error('[on_add_object_complete] convert_csr_to_soft failed, ret(%u)', ret)
end
logging:notice('[register_object_mgmt] add object complete, position: %s', position)
end)
-- 删除对象完成回调
object_manage.on_delete_object_complete(self.bus, function(position)
end)
end
function lsw_cfg_mgmt:on_add_object(class_name, object, position)
(({
['Port'] = function ()
self.port_cfg_mgmt.port_attr_mgmt:add_port_object(object, position)
end,
['MacInfoTable'] = function ()
self.mac_cfg_mgmt.mac_attr:add_mac_object(object, position)
end,
['ACLRuleInfo'] = function ()
self.acl_cfg_mgmt.acl_attr_mgmt:add_all_acl_object(object, position)
end
})[class_name] or function() end)()
end
手动上树调用处
function port_attr_mgmt:add_port_object(obj, position)
local ret, port_obj = constants.RET.RET_OK, nil
local db = orm_object_manage.get_instance().per_db
if db == nil then
log:error("db is nil.")
end
local port_db = db:select(db.Port):where(db.Port.LogicPortId:eq(obj.LogicPortId)):first()
if port_db == nil then
db:insert(db.Port):value(obj):exec()
local port_object = base_service:CreatePort(1, obj.LogicPortId, function(object)
object.LogicPortId = obj.LogicPortId
object.PortName = obj.PortName
object.Enable = obj.Enable
end)
else
log:error("%u---------------%s----------------%s in db", port_db.LogicPortId, port_db.PortName, tostring(port_db.Enable))
local port_object = base_service:CreatePort(1, obj.LogicPortId, function(object)
object.LogicPortId = port_db.LogicPortId
object.PortName = port_db.PortName
object.Enable = port_db.Enable
end)
obj = port_db
end
ret, port_obj = port_attr_mgmt:fetch_port_info_from_csr(obj)
if ret == constants.RET.RET_OK and port_obj ~= nil then
table.insert(self.ports_obj, port_obj)
table.sort(self.ports_obj, function(a, b)
return a.LogicPortId < b.LogicPortId
end)
return constants.RET.RET_OK
else
log:error("[add_port_object]: fetch_port_info_from_csr failed, ret(%u).", ret)
return constants.RET.RET_ERR
end
end
Service bmc.kepler.lsw_main:
└─/bmc
└─/bmc/kepler
├─/bmc/kepler/Debug
│ └─/bmc/kepler/Debug/LswMainDebug
├─/bmc/kepler/IpmiCmds
│ └─/bmc/kepler/IpmiCmds/30
│ └─/bmc/kepler/IpmiCmds/30/93
│ └─/bmc/kepler/IpmiCmds/30/93/SetOtherSmmPortEnable
├─/bmc/kepler/Switch
│ ├─/bmc/kepler/Switch/1
│ │ └─/bmc/kepler/Switch/1/Ports
│ │ ├─/bmc/kepler/Switch/1/Ports/1
│ │ ├─/bmc/kepler/Switch/1/Ports/10
│ │ ├─/bmc/kepler/Switch/1/Ports/11
│ │ ├─/bmc/kepler/Switch/1/Ports/12
│ │ ├─/bmc/kepler/Switch/1/Ports/13
│ │ ├─/bmc/kepler/Switch/1/Ports/14
│ │ ├─/bmc/kepler/Switch/1/Ports/15
│ │ ├─/bmc/kepler/Switch/1/Ports/16
│ │ ├─/bmc/kepler/Switch/1/Ports/17
│ │ ├─/bmc/kepler/Switch/1/Ports/18
│ │ ├─/bmc/kepler/Switch/1/Ports/19
│ │ ├─/bmc/kepler/Switch/1/Ports/2
│ │ ├─/bmc/kepler/Switch/1/Ports/20
│ │ ├─/bmc/kepler/Switch/1/Ports/21
│ │ ├─/bmc/kepler/Switch/1/Ports/22
│ │ ├─/bmc/kepler/Switch/1/Ports/23
│ │ ├─/bmc/kepler/Switch/1/Ports/24
│ │ ├─/bmc/kepler/Switch/1/Ports/25
│ │ ├─/bmc/kepler/Switch/1/Ports/26
│ │ ├─/bmc/kepler/Switch/1/Ports/27
│ │ ├─/bmc/kepler/Switch/1/Ports/28
│ │ ├─/bmc/kepler/Switch/1/Ports/29
│ │ ├─/bmc/kepler/Switch/1/Ports/3
│ │ ├─/bmc/kepler/Switch/1/Ports/30
│ │ ├─/bmc/kepler/Switch/1/Ports/31
│ │ ├─/bmc/kepler/Switch/1/Ports/4
│ │ ├─/bmc/kepler/Switch/1/Ports/5
│ │ ├─/bmc/kepler/Switch/1/Ports/6
│ │ ├─/bmc/kepler/Switch/1/Ports/7
│ │ ├─/bmc/kepler/Switch/1/Ports/8
│ │ └─/bmc/kepler/Switch/1/Ports/9
│ ├─/bmc/kepler/Switch/Port_10_01010B
│ │ └─/bmc/kepler/Switch/Port_10_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_10_01010B/Ports/Port_10_01010B
│ ├─/bmc/kepler/Switch/Port_11_01010B
│ │ └─/bmc/kepler/Switch/Port_11_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_11_01010B/Ports/Port_11_01010B
│ ├─/bmc/kepler/Switch/Port_12_01010B
│ │ └─/bmc/kepler/Switch/Port_12_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_12_01010B/Ports/Port_12_01010B
│ ├─/bmc/kepler/Switch/Port_13_01010B
│ │ └─/bmc/kepler/Switch/Port_13_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_13_01010B/Ports/Port_13_01010B
│ ├─/bmc/kepler/Switch/Port_14_01010B
│ │ └─/bmc/kepler/Switch/Port_14_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_14_01010B/Ports/Port_14_01010B
│ ├─/bmc/kepler/Switch/Port_15_01010B
│ │ └─/bmc/kepler/Switch/Port_15_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_15_01010B/Ports/Port_15_01010B
│ ├─/bmc/kepler/Switch/Port_16_01010B
│ │ └─/bmc/kepler/Switch/Port_16_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_16_01010B/Ports/Port_16_01010B
│ ├─/bmc/kepler/Switch/Port_17_01010B
│ │ └─/bmc/kepler/Switch/Port_17_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_17_01010B/Ports/Port_17_01010B
│ ├─/bmc/kepler/Switch/Port_18_01010B
│ │ └─/bmc/kepler/Switch/Port_18_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_18_01010B/Ports/Port_18_01010B
│ ├─/bmc/kepler/Switch/Port_19_01010B
│ │ └─/bmc/kepler/Switch/Port_19_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_19_01010B/Ports/Port_19_01010B
│ ├─/bmc/kepler/Switch/Port_1_01010B
│ │ └─/bmc/kepler/Switch/Port_1_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_1_01010B/Ports/Port_1_01010B
│ ├─/bmc/kepler/Switch/Port_20_01010B
│ │ └─/bmc/kepler/Switch/Port_20_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_20_01010B/Ports/Port_20_01010B
│ ├─/bmc/kepler/Switch/Port_21_01010B
│ │ └─/bmc/kepler/Switch/Port_21_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_21_01010B/Ports/Port_21_01010B
│ ├─/bmc/kepler/Switch/Port_22_01010B
│ │ └─/bmc/kepler/Switch/Port_22_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_22_01010B/Ports/Port_22_01010B
│ ├─/bmc/kepler/Switch/Port_23_01010B
│ │ └─/bmc/kepler/Switch/Port_23_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_23_01010B/Ports/Port_23_01010B
│ ├─/bmc/kepler/Switch/Port_24_01010B
│ │ └─/bmc/kepler/Switch/Port_24_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_24_01010B/Ports/Port_24_01010B
│ ├─/bmc/kepler/Switch/Port_25_01010B
│ │ └─/bmc/kepler/Switch/Port_25_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_25_01010B/Ports/Port_25_01010B
│ ├─/bmc/kepler/Switch/Port_26_01010B
│ │ └─/bmc/kepler/Switch/Port_26_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_26_01010B/Ports/Port_26_01010B
│ ├─/bmc/kepler/Switch/Port_27_01010B
│ │ └─/bmc/kepler/Switch/Port_27_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_27_01010B/Ports/Port_27_01010B
│ ├─/bmc/kepler/Switch/Port_28_01010B
│ │ └─/bmc/kepler/Switch/Port_28_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_28_01010B/Ports/Port_28_01010B
│ ├─/bmc/kepler/Switch/Port_29_01010B
│ │ └─/bmc/kepler/Switch/Port_29_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_29_01010B/Ports/Port_29_01010B
│ ├─/bmc/kepler/Switch/Port_2_01010B
│ │ └─/bmc/kepler/Switch/Port_2_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_2_01010B/Ports/Port_2_01010B
│ ├─/bmc/kepler/Switch/Port_30_01010B
│ │ └─/bmc/kepler/Switch/Port_30_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_30_01010B/Ports/Port_30_01010B
│ ├─/bmc/kepler/Switch/Port_31_01010B
│ │ └─/bmc/kepler/Switch/Port_31_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_31_01010B/Ports/Port_31_01010B
│ ├─/bmc/kepler/Switch/Port_3_01010B
│ │ └─/bmc/kepler/Switch/Port_3_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_3_01010B/Ports/Port_3_01010B
│ ├─/bmc/kepler/Switch/Port_4_01010B
│ │ └─/bmc/kepler/Switch/Port_4_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_4_01010B/Ports/Port_4_01010B
│ ├─/bmc/kepler/Switch/Port_5_01010B
│ │ └─/bmc/kepler/Switch/Port_5_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_5_01010B/Ports/Port_5_01010B
│ ├─/bmc/kepler/Switch/Port_6_01010B
│ │ └─/bmc/kepler/Switch/Port_6_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_6_01010B/Ports/Port_6_01010B
│ ├─/bmc/kepler/Switch/Port_7_01010B
│ │ └─/bmc/kepler/Switch/Port_7_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_7_01010B/Ports/Port_7_01010B
│ ├─/bmc/kepler/Switch/Port_8_01010B
│ │ └─/bmc/kepler/Switch/Port_8_01010B/Ports
│ │ └─/bmc/kepler/Switch/Port_8_01010B/Ports/Port_8_01010B
│ └─/bmc/kepler/Switch/Port_9_01010B
│ └─/bmc/kepler/Switch/Port_9_01010B/Ports
│ └─/bmc/kepler/Switch/Port_9_01010B/Ports/Port_9_01010B
└─/bmc/kepler/lsw_main
└─/bmc/kepler/lsw_main/MicroComponent
└─/bmc/kepler/lsw_main/MicroComponent/Debug