local utils = require('mc.utils')
local VIRTUAL_MEDIA_CD_PATH = '/bmc/kepler/Managers/1/VirtualMedia/CD'
local VIRTUAL_MEDIA_CD_INTF = 'bmc.kepler.Managers.VirtualMedia.CD'
local SYSTEM_VIRTUAL_MEDIA_CD_PATH = '/bmc/kepler/Systems/%s/VirtualMedia/CD'
local SYSTEM_VIRTUAL_MEDIA_CD_INTF = 'bmc.kepler.Systems.VirtualMedia.CD'
local DEFAULT_CONNECT_NUM = 0
local DEFAULT_IMAGE_URL = ''
local DEFAULT_USERNAME = ''
local DEFAULT_PASSWORD = ''
local m = {}
function m.check_vmm_connect(system_id)
local ok, virtual_media_cd_obj
if not system_id or system_id == cjson.null then
ok, virtual_media_cd_obj = pcall(mdb.get_object, bus, VIRTUAL_MEDIA_CD_PATH, VIRTUAL_MEDIA_CD_INTF)
else
local path = string.format(SYSTEM_VIRTUAL_MEDIA_CD_PATH, system_id)
ok, virtual_media_cd_obj = pcall(mdb.get_object, bus, path, SYSTEM_VIRTUAL_MEDIA_CD_INTF)
end
if not ok then
return false
end
return virtual_media_cd_obj.ConnectNum ~= 0
end
function m.get_vmm_infos(system_id)
local ok, virtual_media_cd_obj
local res = cjson.json_object_new_object()
if not system_id then
ok, virtual_media_cd_obj = pcall(mdb.get_object, bus, VIRTUAL_MEDIA_CD_PATH, VIRTUAL_MEDIA_CD_INTF)
else
local path = string.format(SYSTEM_VIRTUAL_MEDIA_CD_PATH, system_id)
ok, virtual_media_cd_obj = pcall(mdb.get_object, bus, path, SYSTEM_VIRTUAL_MEDIA_CD_INTF)
end
if not ok then
res['ConnectNum'] = DEFAULT_CONNECT_NUM
res['ImageUrl'] = DEFAULT_IMAGE_URL
else
res['ConnectNum'] = virtual_media_cd_obj.ConnectNum
res['ImageUrl'] = virtual_media_cd_obj.Image
end
return res
end
function m.get_insert_media_params(uri)
local params = cjson.json_object_new_object()
local supported_auth_protocols = { 'https', 'cifs' }
local protocol, rest = string.match(uri, '(%a)%://(.+)$')
if protocol and utils.array_contains(supported_auth_protocols, protocol) then
local username, password, tmp_rest = string.match(rest, '(%a)%:(.+)@(.*)$')
params['UserName'] = username or DEFAULT_USERNAME
params['Password'] = password or DEFAULT_PASSWORD
params['ProtocolType'] = protocol
params['Image'] = protocol .. '://' .. tmp_rest
else
params['UserName'] = DEFAULT_USERNAME
params['Password'] = DEFAULT_PASSWORD
params['ProtocolType'] = protocol
params['Image'] = uri
end
return params
end
return m