77
88 def self . instances
99 proxies = zbx . proxies . all
10+ proxygroups = zbx . proxygroup . all
11+
1012 api_hosts = zbx . query (
1113 method : 'host.get' ,
1214 params : {
1315 selectParentTemplates : [ 'host' ] ,
1416 selectInterfaces : %w[ interfaceid type main ip port useip details ] ,
1517 selectGroups : [ 'name' ] ,
1618 selectMacros : %w[ macro value ] ,
17- output : %w[ host proxy_hostid tls_accept tls_connect tls_issuer tls_subject ]
19+ output : %w[ host proxyid proxy_groupid tls_accept tls_connect tls_issuer tls_subject ]
1820 }
1921 )
2022
@@ -23,8 +25,10 @@ def self.instances
2325 # there is only 1 interface that can be default
2426 interface = h [ 'interfaces' ] . select { |i | i [ 'main' ] . to_i == 1 } . first
2527 use_ip = !interface [ 'useip' ] . to_i . zero?
26- proxy_select = proxies . select { |_name , id | id == h [ 'proxy_hostid ' ] } . keys . first
28+ proxy_select = proxies . select { |_name , id | id == h [ 'proxyid ' ] } . keys . first
2729 proxy_select = '' if proxy_select . nil?
30+ proxygroup_select = proxygroups . select { |_name , id | id == h [ 'proxy_groupid' ] } . keys . first
31+ proxygroup_select = '' if proxygroup_select . nil?
2832 new (
2933 ensure : :present ,
3034 id : h [ 'hostid' ] . to_i ,
@@ -38,6 +42,7 @@ def self.instances
3842 templates : h [ 'parentTemplates' ] . map { |x | x [ 'host' ] } ,
3943 macros : h [ 'macros' ] . map { |macro | { macro [ 'macro' ] => macro [ 'value' ] } } ,
4044 proxy : proxy_select ,
45+ proxygroup : proxygroup_select ,
4146 interfacetype : interface [ 'type' ] . to_i ,
4247 interfacedetails : interface [ 'details' ] ,
4348 tls_accept : h [ 'tls_accept' ] . to_i ,
@@ -63,15 +68,18 @@ def create
6368 gids = get_groupids ( @resource [ :groups ] , @resource [ :group_create ] )
6469 groups = transform_to_array_hash ( 'groupid' , gids )
6570
66- proxy_hostid = @resource [ :proxy ] . nil? || @resource [ :proxy ] . empty? ? nil : zbx . proxies . get_id ( host : @resource [ :proxy ] )
71+ proxyid = @resource [ :proxy ] . nil? || @resource [ :proxy ] . empty? ? nil : zbx . proxies . get_id ( name : @resource [ :proxy ] )
72+ proxy_groupid = @resource [ :proxygroup ] . nil? || @resource [ :proxygroup ] . empty? ? nil : zbx . proxygroup . get_id ( name : @resource [ :proxygroup ] )
73+ monitored_by = proxy_groupid && proxyid . nil? ? 2 : 1
6774
6875 tls_accept = @resource [ :tls_accept ] . nil? ? 1 : @resource [ :tls_accept ]
6976 tls_connect = @resource [ :tls_connect ] . nil? ? 1 : @resource [ :tls_connect ]
7077
71- # Now we create the host
72- zbx . hosts . create (
78+ host_params = {
7379 host : @resource [ :hostname ] ,
74- proxy_hostid : proxy_hostid ,
80+ proxyid : proxyid ,
81+ proxy_groupid : proxy_groupid ,
82+ monitored_by : monitored_by ,
7583 interfaces : [
7684 {
7785 type : @resource [ :interfacetype ] . nil? ? 1 : @resource [ :interfacetype ] ,
@@ -89,7 +97,13 @@ def create
8997 tls_accept : tls_accept ,
9098 tls_issuer : @resource [ :tls_issuer ] . nil? ? '' : @resource [ :tls_issuer ] ,
9199 tls_subject : @resource [ :tls_subject ] . nil? ? '' : @resource [ :tls_subject ]
92- )
100+ }
101+
102+ host_params . delete ( :proxyid ) if host_params [ :proxy_groupid ] || host_params [ :proxyid ] . nil?
103+ host_params . delete ( :proxy_groupid ) if host_params [ :proxy_groupid ] . nil?
104+
105+ # Now we create the host
106+ zbx . hosts . create ( host_params )
93107 end
94108
95109 def exists?
@@ -233,7 +247,16 @@ def macros=(array)
233247 def proxy = ( string )
234248 zbx . hosts . create_or_update (
235249 host : @resource [ :hostname ] ,
236- proxy_hostid : zbx . proxies . get_id ( host : string )
250+ monitored_by : '1' ,
251+ proxyid : zbx . proxies . get_id ( name : string )
252+ )
253+ end
254+
255+ def proxygroup = ( string )
256+ zbx . hosts . create_or_update (
257+ host : @resource [ :hostname ] ,
258+ monitored_by : '2' ,
259+ proxy_groupid : zbx . proxygroup . get_id ( name : string )
237260 )
238261 end
239262
0 commit comments