У менеджера лицензирования Cisco есть недостаток в том, что он предоставляет данные о лицензировании для каждого предприятия, а не для кластера. Я пытаюсь использовать SQL-запросы для получения этих данных. В настоящее время у меня есть два запроса, которые предоставляют некоторую релевантную информацию.
SELECT name,value FROM TABLE (FUNCTION LicenseTotals()) (pkid,name,value,UserValue,DeviceValue)
который производит этот вывод
name value
================= ===================
CUWL Standard 0
EnhancedPlus 0
Enhanced 2953
Basic 0
Essential 1349
TelePresence Room 0
TotalUsers 0
TotalDevices 4302
Timestamp 2014-06-06 11:45:21
ElmLastContact 1402044739
Elm XXXXXXXXXELM1
и
select typeproduct.name, typelicensedresource.name from typeproduct, typelicensedresource, typelicensedresourceproductmap where typelicensedresource.enum = typelicensedresourceproductmap.tklicensedresource and typelicensedresourceproductmap.tkproduct = typeproduct.enum
который производит этот вывод
name name
======================================== ============
Analog Phone Tin
Cisco 6901 Tin
Cisco 6911 Copper
Cisco 6921 Copper
H.323 Client Bronze
Cisco 30 SP+ Bronze
я бы хотел как-то извлечь информацию из таблиц пула устройств, но уникальный идентификатор лицензирования не совпадает с уникальными идентификаторами пула устройств. моя конечная цель что-то вроде
Count Licensetype Site
========================================================
50 Tin Site 1
30 Tin Site 2
75 Copper Site 1
100 Copper Site 2
80 Bronze Site 3
110 Bronze Site 3
предыдущий код, который может подсчитывать количество сайтов, -
run sql SELECT sum(analog_phones) as analog_phones, sum(ip_phones) as ip_phones, devicepool FROM (SELECT 0 AS analog_phones, count(d.name) AS IP_Phones, dp.name AS DevicePool FROM Device AS d INNER JOIN DevicePool AS dp ON d.fkDevicePool=dp.pkid INNER JOIN typemodel AS tm ON tm.enum=d.tkmodel WHERE (d.tkclass=1 AND dp.name LIKE '%PH%') GROUP BY dp.name UNION ALL SELECT count(d.name) AS Analog_Phones, 0 AS ip_phones, dp.name AS DevicePool FROM Device AS d INNER JOIN DevicePool AS dp ON d.fkDevicePool=dp.pkid INNER JOIN typemodel AS tm ON tm.enum=d.tkmodel WHERE (tm.name = 'Analog Phone') GROUP BY dp.name) a GROUP BY devicepool ORDER BY devicepool
который возвращает этот результат
analog_phones ip_phones devicepool
============= ========= ===============
12 0 BRLED-AGW-DP
0 36 BRLED-PHONES-DP
0 46 CRMBT-PHONES-DP
532 0 DRMC-AGW-DP
1 695 DRMC-PHONES-DP
Руководство, которое я использовал для определения правильных таблиц, - это словарь данных для моей версии диспетчера вызовов
Копаться в таблицах потребовалось некоторое время (меня тоже не было в городе пару недель), но вот как я в итоге это сделал.
run sql select count(typeproduct.name) as Count,
typelicensedresource.name as LicenseType,
dp.name AS Site from typeproduct,
typelicensedresource, typelicensedresourceproductmap, devicepool as dp,
device as d where typelicensedresource.enum = typelicensedresourceproductmap.tklicensedresource and typelicensedresourceproductmap.tkproduct = typeproduct.enum and
typeproduct.tkmodel = d.tkmodel and d.fkDevicePool=dp.pkid AND
(dp.name LIKE '%PH%' OR dp.name LIKE '%AGW%' OR dp.name LIKE '%FGW%') AND
typeproduct.name <> 'CTI Port' group by dp.name, typelicensedresource.name
ORDER by typelicensedresource.name
Это возвращает эти результаты
count licensetype site
===== =========== ==============
793 Bronze NWMC-PHONES-DP
44 Bronze CORL-PHSRST-DP
98 Bronze NWMC-PHSRST-DP
119 Bronze UHMC-PHSRST-DP
4 Bronze CORL-PHONES-DP
2 Bronze UHMC-FGW-DP
1 Bronze ALSC-PHONES-DP
27 Bronze ALSC-PHSRST-DP
598 Bronze UHMC-PHONES-DP
20 Tin NWMC-PHSRST-DP
353 Tin NWMC-AGW-DP
409 Tin UHMC-AGW-DP
9 Tin NWMC-PHONES-DP
1 Tin WRMC-PHONES-DP
28 Tin UHMC-PHONES-DP
У меня есть код PowerShell, который завершит приведение в порядок этого, чтобы преобразовать пул устройств в полное имя сайта и объединить такие вещи, как AGW и PHSRST, вместе для получения 1 общего количества на тип лицензии.