@@ -41,6 +41,16 @@ def interfaces
4141 Facter . value ( :interfaces ) . split ( ',' )
4242end
4343
44+ Facter . add ( :docker_version ) do
45+ confine { Facter ::Core ::Execution . which ( 'docker' ) }
46+ setcode do
47+ value = Facter ::Core ::Execution . execute (
48+ "#{ docker_command } version --format '{{json .}}'" , timeout : 90
49+ )
50+ JSON . parse ( value )
51+ end
52+ end
53+
4454Facter . add ( :docker_client_version ) do
4555 setcode do
4656 docker_version = Facter . value ( :docker_version )
@@ -65,92 +75,77 @@ def interfaces
6575 end
6676end
6777
68- Facter . add ( :docker_version ) do
69- setcode do
70- if Facter ::Core ::Execution . which ( 'docker' )
71- value = Facter ::Core ::Execution . execute (
72- "#{ docker_command } version --format '{{json .}}'" , timeout : 90
73- )
74- val = JSON . parse ( value )
75- end
76- val
77- end
78- end
79-
8078Facter . add ( :docker_worker_join_token ) do
79+ confine { Facter ::Core ::Execution . which ( 'docker' ) }
8180 setcode do
82- if Facter ::Core ::Execution . which ( 'docker' )
83- # only run `docker swarm` commands if this node is in active in a cluster
84- docker_json_str = Facter ::Core ::Execution . execute (
85- "#{ docker_command } info --format '{{json .}}'" , timeout : 90
86- )
87- begin
88- docker = JSON . parse ( docker_json_str )
89- if docker . fetch ( 'Swarm' , { } ) [ 'LocalNodeState' ] == 'active'
90- val = Facter ::Core ::Execution . execute (
91- "#{ docker_command } swarm join-token worker -q" , timeout : 90
92- )
93- end
94- rescue JSON ::ParserError
95- nil
81+ # only run `docker swarm` commands if this node is in active in a cluster
82+ docker_json_str = Facter ::Core ::Execution . execute (
83+ "#{ docker_command } info --format '{{json .}}'" , timeout : 90
84+ )
85+ begin
86+ docker = JSON . parse ( docker_json_str )
87+ if docker . fetch ( 'Swarm' , { } ) [ 'LocalNodeState' ] == 'active'
88+ val = Facter ::Core ::Execution . execute (
89+ "#{ docker_command } swarm join-token worker -q" , timeout : 90
90+ )
9691 end
92+ rescue JSON ::ParserError
93+ nil
9794 end
9895 val
9996 end
10097end
10198
10299Facter . add ( :docker_manager_join_token ) do
100+ confine { Facter ::Core ::Execution . which ( 'docker' ) }
103101 setcode do
104- if Facter ::Core ::Execution . which ( 'docker' )
105- # only run `docker swarm` commands if this node is in active in a cluster
106- docker_json_str = Facter ::Core ::Execution . execute (
107- "#{ docker_command } info --format '{{json .}}'" , timeout : 90
108- )
109- begin
110- docker = JSON . parse ( docker_json_str )
111- if docker . fetch ( 'Swarm' , { } ) [ 'LocalNodeState' ] == 'active'
112- val = Facter ::Core ::Execution . execute (
113- "#{ docker_command } swarm join-token manager -q" , timeout : 90
114- )
115- end
116- rescue JSON ::ParserError
117- nil
102+ # only run `docker swarm` commands if this node is in active in a cluster
103+ docker_json_str = Facter ::Core ::Execution . execute (
104+ "#{ docker_command } info --format '{{json .}}'" , timeout : 90
105+ )
106+ begin
107+ docker = JSON . parse ( docker_json_str )
108+ if docker . fetch ( 'Swarm' , { } ) [ 'LocalNodeState' ] == 'active'
109+ val = Facter ::Core ::Execution . execute (
110+ "#{ docker_command } swarm join-token manager -q" , timeout : 90
111+ )
118112 end
113+ rescue JSON ::ParserError
114+ nil
119115 end
120116 val
121117 end
122118end
123119
124120Facter . add ( :docker ) do
121+ confine { Facter ::Core ::Execution . which ( 'docker' ) }
125122 setcode do
126123 docker_version = Facter . value ( :docker_client_version )
127124 if docker_version &.match? ( %r{1[0-9][0-2]?[.]\w +} )
128- if Facter ::Core ::Execution . which ( 'docker' )
129- docker_json_str = Facter ::Core ::Execution . execute (
130- "#{ docker_command } info --format '{{json .}}'" , timeout : 90
131- )
132- begin
133- docker = JSON . parse ( docker_json_str )
134- docker [ 'network' ] = { }
125+ docker_json_str = Facter ::Core ::Execution . execute (
126+ "#{ docker_command } info --format '{{json .}}'" , timeout : 90
127+ )
128+ begin
129+ docker = JSON . parse ( docker_json_str )
130+ docker [ 'network' ] = { }
135131
136- docker [ 'network' ] [ 'managed_interfaces' ] = { }
137- network_list = Facter ::Core ::Execution . execute ( "#{ docker_command } network ls | tail -n +2" , timeout : 90 )
138- docker_network_names = [ ]
139- network_list . each_line { |line | docker_network_names . push line . split [ 1 ] }
140- docker_network_ids = [ ]
141- network_list . each_line { |line | docker_network_ids . push line . split [ 0 ] }
142- docker_network_names . each do |network |
143- inspect = JSON . parse ( Facter ::Core ::Execution . execute ( "#{ docker_command } network inspect #{ network } " , timeout : 90 ) )
144- docker [ 'network' ] [ network ] = inspect [ 0 ]
145- network_id = docker [ 'network' ] [ network ] [ 'Id' ] [ 0 ..11 ]
146- interfaces . each do |iface |
147- docker [ 'network' ] [ 'managed_interfaces' ] [ iface ] = network if %r{#{ network_id } } . match? ( iface )
148- end
132+ docker [ 'network' ] [ 'managed_interfaces' ] = { }
133+ network_list = Facter ::Core ::Execution . execute ( "#{ docker_command } network ls | tail -n +2" , timeout : 90 )
134+ docker_network_names = [ ]
135+ network_list . each_line { |line | docker_network_names . push line . split [ 1 ] }
136+ docker_network_ids = [ ]
137+ network_list . each_line { |line | docker_network_ids . push line . split [ 0 ] }
138+ docker_network_names . each do |network |
139+ inspect = JSON . parse ( Facter ::Core ::Execution . execute ( "#{ docker_command } network inspect #{ network } " , timeout : 90 ) )
140+ docker [ 'network' ] [ network ] = inspect [ 0 ]
141+ network_id = docker [ 'network' ] [ network ] [ 'Id' ] [ 0 ..11 ]
142+ interfaces . each do |iface |
143+ docker [ 'network' ] [ 'managed_interfaces' ] [ iface ] = network if %r{#{ network_id } } . match? ( iface )
149144 end
150- docker
151- rescue JSON ::ParserError
152- nil
153145 end
146+ docker
147+ rescue JSON ::ParserError
148+ nil
154149 end
155150 end
156151 end
0 commit comments