ohai 8.10.0 → 8.11.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -2
- data/Rakefile +13 -4
- data/bin/ohai +3 -4
- data/lib/ohai.rb +4 -4
- data/lib/ohai/application.rb +7 -6
- data/lib/ohai/common/dmi.rb +56 -56
- data/lib/ohai/config.rb +12 -8
- data/lib/ohai/dsl.rb +3 -3
- data/lib/ohai/dsl/plugin.rb +5 -5
- data/lib/ohai/dsl/plugin/versionvi.rb +0 -1
- data/lib/ohai/dsl/plugin/versionvii.rb +1 -0
- data/lib/ohai/hints.rb +1 -1
- data/lib/ohai/loader.rb +7 -7
- data/lib/ohai/log.rb +1 -1
- data/lib/ohai/mash.rb +3 -2
- data/lib/ohai/mixin/command.rb +25 -23
- data/lib/ohai/mixin/dmi_decode.rb +10 -10
- data/lib/ohai/mixin/ec2_metadata.rb +40 -39
- data/lib/ohai/mixin/gce_metadata.rb +9 -9
- data/lib/ohai/mixin/network_constants.rb +1 -1
- data/lib/ohai/mixin/os.rb +3 -3
- data/lib/ohai/mixin/seconds_to_human.rb +0 -2
- data/lib/ohai/mixin/softlayer_metadata.rb +10 -10
- data/lib/ohai/mixin/string.rb +2 -2
- data/lib/ohai/plugin_config.rb +1 -1
- data/lib/ohai/plugins/aix/cpu.rb +2 -2
- data/lib/ohai/plugins/aix/filesystem.rb +2 -2
- data/lib/ohai/plugins/aix/memory.rb +2 -2
- data/lib/ohai/plugins/aix/network.rb +9 -10
- data/lib/ohai/plugins/aix/os.rb +2 -2
- data/lib/ohai/plugins/aix/uptime.rb +3 -3
- data/lib/ohai/plugins/aix/virtualization.rb +23 -23
- data/lib/ohai/plugins/azure.rb +32 -5
- data/lib/ohai/plugins/bsd/virtualization.rb +22 -22
- data/lib/ohai/plugins/c.rb +3 -3
- data/lib/ohai/plugins/chef.rb +1 -1
- data/lib/ohai/plugins/cloud.rb +59 -60
- data/lib/ohai/plugins/cloud_v2.rb +37 -39
- data/lib/ohai/plugins/darwin/cpu.rb +1 -1
- data/lib/ohai/plugins/darwin/filesystem2.rb +5 -5
- data/lib/ohai/plugins/darwin/memory.rb +5 -6
- data/lib/ohai/plugins/darwin/network.rb +7 -7
- data/lib/ohai/plugins/darwin/system_profiler.rb +32 -33
- data/lib/ohai/plugins/darwin/virtualization.rb +9 -9
- data/lib/ohai/plugins/digital_ocean.rb +16 -16
- data/lib/ohai/plugins/dmi.rb +6 -6
- data/lib/ohai/plugins/dragonflybsd/cpu.rb +2 -2
- data/lib/ohai/plugins/dragonflybsd/memory.rb +0 -1
- data/lib/ohai/plugins/dragonflybsd/network.rb +4 -4
- data/lib/ohai/plugins/dragonflybsd/os.rb +1 -1
- data/lib/ohai/plugins/ec2.rb +39 -15
- data/lib/ohai/plugins/elixir.rb +1 -1
- data/lib/ohai/plugins/erlang.rb +3 -3
- data/lib/ohai/plugins/eucalyptus.rb +16 -12
- data/lib/ohai/plugins/freebsd/cpu.rb +2 -2
- data/lib/ohai/plugins/freebsd/memory.rb +0 -1
- data/lib/ohai/plugins/freebsd/network.rb +4 -4
- data/lib/ohai/plugins/freebsd/os.rb +1 -1
- data/lib/ohai/plugins/gce.rb +6 -6
- data/lib/ohai/plugins/hostname.rb +7 -7
- data/lib/ohai/plugins/init_package.rb +1 -1
- data/lib/ohai/plugins/ip_scopes.rb +9 -9
- data/lib/ohai/plugins/java.rb +1 -1
- data/lib/ohai/plugins/joyent.rb +7 -7
- data/lib/ohai/plugins/kernel.rb +8 -8
- data/lib/ohai/plugins/linode.rb +7 -4
- data/lib/ohai/plugins/linux/cpu.rb +5 -5
- data/lib/ohai/plugins/linux/filesystem.rb +16 -16
- data/lib/ohai/plugins/linux/filesystem2.rb +15 -15
- data/lib/ohai/plugins/linux/mdadm.rb +3 -3
- data/lib/ohai/plugins/linux/network.rb +85 -51
- data/lib/ohai/plugins/linux/platform.rb +24 -24
- data/lib/ohai/plugins/linux/virtualization.rb +8 -8
- data/lib/ohai/plugins/mono.rb +1 -1
- data/lib/ohai/plugins/netbsd/cpu.rb +1 -1
- data/lib/ohai/plugins/netbsd/network.rb +2 -2
- data/lib/ohai/plugins/network.rb +11 -11
- data/lib/ohai/plugins/network_listeners.rb +30 -26
- data/lib/ohai/plugins/ohai.rb +3 -3
- data/lib/ohai/plugins/openbsd/cpu.rb +4 -4
- data/lib/ohai/plugins/openbsd/memory.rb +4 -4
- data/lib/ohai/plugins/openbsd/network.rb +3 -3
- data/lib/ohai/plugins/openstack.rb +12 -12
- data/lib/ohai/plugins/os.rb +2 -2
- data/lib/ohai/plugins/packages.rb +22 -22
- data/lib/ohai/plugins/passwd.rb +4 -4
- data/lib/ohai/plugins/powershell.rb +9 -9
- data/lib/ohai/plugins/ps.rb +2 -2
- data/lib/ohai/plugins/python.rb +1 -1
- data/lib/ohai/plugins/rackspace.rb +13 -13
- data/lib/ohai/plugins/root_group.rb +4 -4
- data/lib/ohai/plugins/ruby.rb +6 -6
- data/lib/ohai/plugins/rust.rb +1 -1
- data/lib/ohai/plugins/sigar/cpu.rb +1 -1
- data/lib/ohai/plugins/sigar/filesystem.rb +1 -1
- data/lib/ohai/plugins/sigar/network.rb +13 -13
- data/lib/ohai/plugins/sigar/network_route.rb +34 -29
- data/lib/ohai/plugins/softlayer.rb +8 -7
- data/lib/ohai/plugins/solaris2/cpu.rb +19 -19
- data/lib/ohai/plugins/solaris2/dmi.rb +63 -63
- data/lib/ohai/plugins/solaris2/filesystem.rb +13 -13
- data/lib/ohai/plugins/solaris2/memory.rb +2 -2
- data/lib/ohai/plugins/solaris2/network.rb +5 -5
- data/lib/ohai/plugins/solaris2/virtualization.rb +18 -18
- data/lib/ohai/plugins/solaris2/zpools.rb +1 -1
- data/lib/ohai/plugins/ssh_host_key.rb +2 -2
- data/lib/ohai/plugins/uptime.rb +4 -5
- data/lib/ohai/plugins/virtualbox.rb +2 -2
- data/lib/ohai/plugins/virtualization.rb +17 -17
- data/lib/ohai/plugins/vmware.rb +2 -2
- data/lib/ohai/plugins/windows/cpu.rb +14 -14
- data/lib/ohai/plugins/windows/drivers.rb +8 -8
- data/lib/ohai/plugins/windows/filesystem.rb +4 -4
- data/lib/ohai/plugins/windows/memory.rb +1 -1
- data/lib/ohai/plugins/windows/network.rb +10 -10
- data/lib/ohai/plugins/windows/platform.rb +1 -2
- data/lib/ohai/plugins/windows/virtualization.rb +17 -17
- data/lib/ohai/provides_map.rb +7 -7
- data/lib/ohai/runner.rb +3 -3
- data/lib/ohai/system.rb +21 -20
- data/lib/ohai/util/file_helper.rb +1 -2
- data/lib/ohai/util/ip_helper.rb +4 -4
- data/lib/ohai/util/win32.rb +5 -5
- data/lib/ohai/util/win32/group_helper.rb +4 -5
- data/lib/ohai/version.rb +1 -1
- data/ohai.gemspec +7 -5
- data/spec/functional/application_spec.rb +23 -23
- data/spec/functional/loader_spec.rb +1 -1
- data/spec/functional/plugins/powershell_spec.rb +13 -13
- data/spec/functional/plugins/root_group_spec.rb +5 -5
- data/spec/ohai_spec.rb +1 -1
- data/spec/spec_helper.rb +9 -9
- data/spec/support/integration_helper.rb +7 -7
- data/spec/support/platform_helpers.rb +1 -1
- data/spec/unit/application_spec.rb +17 -17
- data/spec/unit/config_spec.rb +2 -2
- data/spec/unit/dsl/plugin_spec.rb +28 -28
- data/spec/unit/hints_spec.rb +3 -3
- data/spec/unit/loader_spec.rb +9 -9
- data/spec/unit/mixin/command_spec.rb +5 -5
- data/spec/unit/mixin/ec2_metadata_spec.rb +6 -6
- data/spec/unit/mixin/softlayer_metadata_spec.rb +19 -23
- data/spec/unit/plugin_config_spec.rb +5 -5
- data/spec/unit/plugins/abort_spec.rb +3 -3
- data/spec/unit/plugins/aix/cpu_spec.rb +1 -1
- data/spec/unit/plugins/aix/filesystem_spec.rb +25 -25
- data/spec/unit/plugins/aix/hostname_spec.rb +1 -2
- data/spec/unit/plugins/aix/kernel_spec.rb +3 -3
- data/spec/unit/plugins/aix/memory_spec.rb +8 -8
- data/spec/unit/plugins/aix/network_spec.rb +38 -38
- data/spec/unit/plugins/aix/os_spec.rb +1 -2
- data/spec/unit/plugins/aix/platform_spec.rb +1 -1
- data/spec/unit/plugins/aix/uptime_spec.rb +1 -1
- data/spec/unit/plugins/aix/virtualization_spec.rb +11 -11
- data/spec/unit/plugins/azure_spec.rb +118 -20
- data/spec/unit/plugins/bsd/filesystem_spec.rb +1 -1
- data/spec/unit/plugins/bsd/virtualization_spec.rb +4 -4
- data/spec/unit/plugins/c_spec.rb +12 -12
- data/spec/unit/plugins/chef_spec.rb +2 -2
- data/spec/unit/plugins/cloud_spec.rb +37 -37
- data/spec/unit/plugins/cloud_v2_spec.rb +64 -65
- data/spec/unit/plugins/darwin/cpu_spec.rb +1 -2
- data/spec/unit/plugins/darwin/filesystem2_spec.rb +7 -7
- data/spec/unit/plugins/darwin/filesystem_spec.rb +5 -5
- data/spec/unit/plugins/darwin/hostname_spec.rb +1 -4
- data/spec/unit/plugins/darwin/kernel_spec.rb +6 -10
- data/spec/unit/plugins/darwin/memory_spec.rb +5 -5
- data/spec/unit/plugins/darwin/network_spec.rb +352 -353
- data/spec/unit/plugins/darwin/platform_spec.rb +1 -2
- data/spec/unit/plugins/darwin/system_profiler_spec.rb +3 -3
- data/spec/unit/plugins/darwin/virtualization_spec.rb +6 -6
- data/spec/unit/plugins/digital_ocean_spec.rb +38 -37
- data/spec/unit/plugins/dmi_spec.rb +3 -3
- data/spec/unit/plugins/ec2_spec.rb +97 -88
- data/spec/unit/plugins/elixir_spec.rb +1 -2
- data/spec/unit/plugins/erlang_spec.rb +2 -2
- data/spec/unit/plugins/eucalyptus_spec.rb +19 -19
- data/spec/unit/plugins/fail_spec.rb +2 -2
- data/spec/unit/plugins/freebsd/cpu_spec.rb +14 -14
- data/spec/unit/plugins/freebsd/hostname_spec.rb +1 -2
- data/spec/unit/plugins/freebsd/kernel_spec.rb +2 -3
- data/spec/unit/plugins/freebsd/os_spec.rb +4 -5
- data/spec/unit/plugins/freebsd/platform_spec.rb +1 -2
- data/spec/unit/plugins/gce_spec.rb +9 -9
- data/spec/unit/plugins/go_spec.rb +1 -1
- data/spec/unit/plugins/groovy_spec.rb +1 -2
- data/spec/unit/plugins/hostname_spec.rb +1 -2
- data/spec/unit/plugins/init_package_spec.rb +1 -1
- data/spec/unit/plugins/ip_scopes_spec.rb +38 -38
- data/spec/unit/plugins/java_spec.rb +52 -1
- data/spec/unit/plugins/joyent_spec.rb +9 -11
- data/spec/unit/plugins/kernel_spec.rb +11 -12
- data/spec/unit/plugins/linode_spec.rb +29 -29
- data/spec/unit/plugins/linux/block_device_spec.rb +21 -21
- data/spec/unit/plugins/linux/cpu_spec.rb +3 -3
- data/spec/unit/plugins/linux/filesystem2_spec.rb +7 -7
- data/spec/unit/plugins/linux/filesystem_spec.rb +85 -86
- data/spec/unit/plugins/linux/hostname_spec.rb +1 -3
- data/spec/unit/plugins/linux/kernel_spec.rb +1 -1
- data/spec/unit/plugins/linux/lsb_spec.rb +1 -2
- data/spec/unit/plugins/linux/mdadm_spec.rb +4 -4
- data/spec/unit/plugins/linux/memory_spec.rb +29 -33
- data/spec/unit/plugins/linux/network_spec.rb +463 -245
- data/spec/unit/plugins/linux/platform_spec.rb +64 -65
- data/spec/unit/plugins/linux/uptime_spec.rb +1 -2
- data/spec/unit/plugins/linux/virtualization_spec.rb +42 -42
- data/spec/unit/plugins/lua_spec.rb +1 -2
- data/spec/unit/plugins/mono_spec.rb +1 -2
- data/spec/unit/plugins/netbsd/hostname_spec.rb +1 -2
- data/spec/unit/plugins/netbsd/kernel_spec.rb +1 -2
- data/spec/unit/plugins/netbsd/platform_spec.rb +1 -1
- data/spec/unit/plugins/network_spec.rb +118 -118
- data/spec/unit/plugins/nodejs_spec.rb +1 -1
- data/spec/unit/plugins/ohai_spec.rb +1 -1
- data/spec/unit/plugins/ohai_time_spec.rb +1 -2
- data/spec/unit/plugins/openbsd/hostname_spec.rb +1 -2
- data/spec/unit/plugins/openbsd/kernel_spec.rb +1 -2
- data/spec/unit/plugins/openbsd/platform_spec.rb +1 -2
- data/spec/unit/plugins/openstack_spec.rb +35 -37
- data/spec/unit/plugins/os_spec.rb +7 -8
- data/spec/unit/plugins/packages_spec.rb +118 -118
- data/spec/unit/plugins/passwd_spec.rb +18 -18
- data/spec/unit/plugins/perl_spec.rb +1 -1
- data/spec/unit/plugins/php_spec.rb +4 -4
- data/spec/unit/plugins/platform_spec.rb +8 -9
- data/spec/unit/plugins/powershell_spec.rb +3 -3
- data/spec/unit/plugins/python_spec.rb +1 -1
- data/spec/unit/plugins/rackspace_spec.rb +66 -68
- data/spec/unit/plugins/root_group_spec.rb +26 -26
- data/spec/unit/plugins/ruby_spec.rb +14 -15
- data/spec/unit/plugins/rust_spec.rb +2 -2
- data/spec/unit/plugins/sigar/network_route_spec.rb +36 -36
- data/spec/unit/plugins/softlayer_spec.rb +10 -10
- data/spec/unit/plugins/solaris2/cpu_spec.rb +20 -21
- data/spec/unit/plugins/solaris2/dmi_spec.rb +5 -6
- data/spec/unit/plugins/solaris2/filesystem.rb +5 -5
- data/spec/unit/plugins/solaris2/hostname_spec.rb +1 -1
- data/spec/unit/plugins/solaris2/kernel_spec.rb +3 -3
- data/spec/unit/plugins/solaris2/memory_spec.rb +5 -5
- data/spec/unit/plugins/solaris2/network_spec.rb +7 -8
- data/spec/unit/plugins/solaris2/platform_spec.rb +1 -1
- data/spec/unit/plugins/solaris2/virtualization_spec.rb +3 -5
- data/spec/unit/plugins/solaris2/zpools_spec.rb +6 -6
- data/spec/unit/plugins/ssh_host_keys_spec.rb +1 -1
- data/spec/unit/plugins/virtualbox_spec.rb +19 -19
- data/spec/unit/plugins/vmware_spec.rb +28 -28
- data/spec/unit/plugins/windows/cpu_spec.rb +46 -48
- data/spec/unit/plugins/windows/memory_spec.rb +5 -5
- data/spec/unit/plugins/windows/virtualization_spec.rb +163 -163
- data/spec/unit/provides_map_spec.rb +10 -10
- data/spec/unit/runner_spec.rb +10 -10
- data/spec/unit/system_spec.rb +19 -19
- data/spec/unit/util/file_helper_spec.rb +5 -6
- data/spec/unit/util/ip_helper_spec.rb +39 -39
- metadata +31 -4
@@ -18,7 +18,7 @@
|
|
18
18
|
# limitations under the License.
|
19
19
|
#
|
20
20
|
|
21
|
-
require File.expand_path(File.join(File.dirname(__FILE__),
|
21
|
+
require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "/spec_helper.rb"))
|
22
22
|
|
23
23
|
describe Ohai::System, "plugin nodejs" do
|
24
24
|
|
@@ -18,7 +18,7 @@
|
|
18
18
|
# limitations under the License.
|
19
19
|
#
|
20
20
|
|
21
|
-
require File.expand_path(File.dirname(__FILE__) +
|
21
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper.rb")
|
22
22
|
|
23
23
|
describe Ohai::System, "plugin ohai" do
|
24
24
|
before(:each) do
|
@@ -16,8 +16,7 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper.rb')
|
19
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper.rb")
|
21
20
|
|
22
21
|
describe Ohai::System, "plugin ohai_time" do
|
23
22
|
before(:each) do
|
@@ -16,8 +16,7 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
|
19
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper.rb")
|
21
20
|
|
22
21
|
describe Ohai::System, "OpenBSD hostname plugin" do
|
23
22
|
before(:each) do
|
@@ -16,8 +16,7 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
|
19
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper.rb")
|
21
20
|
|
22
21
|
describe Ohai::System, "OpenBSD kernel plugin" do
|
23
22
|
before(:each) do
|
@@ -16,8 +16,7 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
|
20
|
-
require File.expand_path(File.dirname(__FILE__) + '/../../../spec_helper.rb')
|
19
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../../spec_helper.rb")
|
21
20
|
|
22
21
|
describe Ohai::System, "OpenBSD plugin platform" do
|
23
22
|
before(:each) do
|
@@ -16,8 +16,8 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
-
require
|
20
|
-
require
|
19
|
+
require "spec_helper"
|
20
|
+
require "ohai/plugins/openstack"
|
21
21
|
|
22
22
|
describe "OpenStack Plugin" do
|
23
23
|
|
@@ -53,7 +53,7 @@ describe "OpenStack Plugin" do
|
|
53
53
|
|
54
54
|
before do
|
55
55
|
expect(openstack_plugin).to receive(:can_metadata_connect?).
|
56
|
-
with(Ohai::Mixin::Ec2Metadata::EC2_METADATA_ADDR,80).
|
56
|
+
with(Ohai::Mixin::Ec2Metadata::EC2_METADATA_ADDR, 80).
|
57
57
|
and_return(false)
|
58
58
|
end
|
59
59
|
|
@@ -114,7 +114,7 @@ EOM
|
|
114
114
|
"aki-id" => "aki-00000036",
|
115
115
|
"block-device-mapping/" => "ami\nroot",
|
116
116
|
"block-device-mapping/ami" => "vda",
|
117
|
-
"block-device-mapping/root" => "/dev/vda"
|
117
|
+
"block-device-mapping/root" => "/dev/vda",
|
118
118
|
}
|
119
119
|
end
|
120
120
|
|
@@ -148,13 +148,13 @@ EOM
|
|
148
148
|
|
149
149
|
def expect_get_response(url, response_body)
|
150
150
|
expect(http_client).to receive(:get_response).
|
151
|
-
with(url,nil,nil).
|
151
|
+
with(url, nil, nil).
|
152
152
|
and_return(double("HTTP Response", :code => "200", :body => response_body))
|
153
153
|
end
|
154
154
|
|
155
155
|
before do
|
156
156
|
expect(openstack_plugin).to receive(:can_metadata_connect?).
|
157
|
-
with(Ohai::Mixin::Ec2Metadata::EC2_METADATA_ADDR,80).
|
157
|
+
with(Ohai::Mixin::Ec2Metadata::EC2_METADATA_ADDR, 80).
|
158
158
|
and_return(true)
|
159
159
|
|
160
160
|
allow(Net::HTTP).to receive(:start).
|
@@ -171,99 +171,97 @@ EOM
|
|
171
171
|
|
172
172
|
expect_get_response(
|
173
173
|
URI.parse("#{openstack_metadata_endpoint}#{openstack_metadata_version}/meta_data.json"),
|
174
|
-
openstack_metadata_values
|
174
|
+
openstack_metadata_values,
|
175
175
|
)
|
176
176
|
|
177
177
|
openstack_plugin.run
|
178
178
|
end
|
179
179
|
|
180
180
|
it "reads the reservation_id from the metadata service" do
|
181
|
-
expect(ohai_data[
|
181
|
+
expect(ohai_data["openstack"]["reservation_id"]).to eq("r-4tjvl99h")
|
182
182
|
end
|
183
183
|
it "reads the public_keys_0_openssh_key from the metadata service" do
|
184
|
-
expect(ohai_data[
|
184
|
+
expect(ohai_data["openstack"]["public_keys_0_openssh_key"]).to eq("SSH KEY DATA")
|
185
185
|
end
|
186
186
|
it "reads the security_groups from the metadata service" do
|
187
|
-
expect(ohai_data[
|
187
|
+
expect(ohai_data["openstack"]["security_groups"]).to eq(["default"])
|
188
188
|
end
|
189
189
|
it "reads the public_ipv4 from the metadata service" do
|
190
|
-
expect(ohai_data[
|
190
|
+
expect(ohai_data["openstack"]["public_ipv4"]).to eq("")
|
191
191
|
end
|
192
192
|
it "reads the ami_manifest_path from the metadata service" do
|
193
|
-
expect(ohai_data[
|
193
|
+
expect(ohai_data["openstack"]["ami_manifest_path"]).to eq("FIXME")
|
194
194
|
end
|
195
195
|
it "reads the instance_type from the metadata service" do
|
196
|
-
expect(ohai_data[
|
196
|
+
expect(ohai_data["openstack"]["instance_type"]).to eq("opc-tester")
|
197
197
|
end
|
198
198
|
it "reads the instance_id from the metadata service" do
|
199
|
-
expect(ohai_data[
|
199
|
+
expect(ohai_data["openstack"]["instance_id"]).to eq("i-0000162a")
|
200
200
|
end
|
201
201
|
it "reads the local_ipv4 from the metadata service" do
|
202
|
-
expect(ohai_data[
|
202
|
+
expect(ohai_data["openstack"]["local_ipv4"]).to eq("172.31.7.23")
|
203
203
|
end
|
204
204
|
it "reads the ari_id from the metadata service" do
|
205
|
-
expect(ohai_data[
|
205
|
+
expect(ohai_data["openstack"]["ari_id"]).to eq("ari-00000037")
|
206
206
|
end
|
207
207
|
it "reads the local_hostname from the metadata service" do
|
208
|
-
expect(ohai_data[
|
208
|
+
expect(ohai_data["openstack"]["local_hostname"]).to eq("ohai-7-system-test.opscode.us")
|
209
209
|
end
|
210
210
|
it "reads the placement_availability_zone from the metadata service" do
|
211
|
-
expect(ohai_data[
|
211
|
+
expect(ohai_data["openstack"]["placement_availability_zone"]).to eq("nova")
|
212
212
|
end
|
213
213
|
it "reads the ami_launch_index from the metadata service" do
|
214
|
-
expect(ohai_data[
|
214
|
+
expect(ohai_data["openstack"]["ami_launch_index"]).to eq("0")
|
215
215
|
end
|
216
216
|
it "reads the public_hostname from the metadata service" do
|
217
|
-
expect(ohai_data[
|
217
|
+
expect(ohai_data["openstack"]["public_hostname"]).to eq("ohai-7-system-test.opscode.us")
|
218
218
|
end
|
219
219
|
it "reads the hostname from the metadata service" do
|
220
|
-
expect(ohai_data[
|
220
|
+
expect(ohai_data["openstack"]["hostname"]).to eq("ohai-7-system-test.opscode.us")
|
221
221
|
end
|
222
222
|
it "reads the ami_id from the metadata service" do
|
223
|
-
expect(ohai_data[
|
223
|
+
expect(ohai_data["openstack"]["ami_id"]).to eq("ami-00000035")
|
224
224
|
end
|
225
225
|
it "reads the instance_action from the metadata service" do
|
226
|
-
expect(ohai_data[
|
226
|
+
expect(ohai_data["openstack"]["instance_action"]).to eq("none")
|
227
227
|
end
|
228
228
|
it "reads the aki_id from the metadata service" do
|
229
|
-
expect(ohai_data[
|
229
|
+
expect(ohai_data["openstack"]["aki_id"]).to eq("aki-00000036")
|
230
230
|
end
|
231
231
|
it "reads the block_device_mapping_ami from the metadata service" do
|
232
|
-
expect(ohai_data[
|
232
|
+
expect(ohai_data["openstack"]["block_device_mapping_ami"]).to eq("vda")
|
233
233
|
end
|
234
234
|
it "reads the block_device_mapping_root from the metadata service" do
|
235
|
-
expect(ohai_data[
|
235
|
+
expect(ohai_data["openstack"]["block_device_mapping_root"]).to eq("/dev/vda")
|
236
236
|
end
|
237
237
|
it "reads the provider from the metadata service" do
|
238
|
-
expect(ohai_data[
|
238
|
+
expect(ohai_data["openstack"]["provider"]).to eq("openstack")
|
239
239
|
end
|
240
240
|
|
241
|
-
context
|
241
|
+
context "Retreive openStack specific metadata" do
|
242
242
|
it "reads the availability_zone from the openstack metadata service" do
|
243
|
-
expect(ohai_data[
|
243
|
+
expect(ohai_data["openstack"]["metadata"]["availability_zone"]).to eq("nova")
|
244
244
|
end
|
245
245
|
it "reads the hostname from the openstack metadata service" do
|
246
|
-
expect(ohai_data[
|
246
|
+
expect(ohai_data["openstack"]["metadata"]["hostname"]).to eq("ohai.novalocal")
|
247
247
|
end
|
248
248
|
it "reads the launch_index from the openstack metadata service" do
|
249
|
-
expect(ohai_data[
|
249
|
+
expect(ohai_data["openstack"]["metadata"]["launch_index"]).to eq(0)
|
250
250
|
end
|
251
251
|
it "reads the meta from the openstack metadata service" do
|
252
|
-
expect(ohai_data[
|
252
|
+
expect(ohai_data["openstack"]["metadata"]["meta"]).to eq({ "priority" => "low", "role" => "ohaiserver" })
|
253
253
|
end
|
254
254
|
it "reads the name from the openstack metadata service" do
|
255
|
-
expect(ohai_data[
|
255
|
+
expect(ohai_data["openstack"]["metadata"]["name"]).to eq("ohai_spec")
|
256
256
|
end
|
257
257
|
it "reads the public_keys from the openstack metadata service" do
|
258
|
-
expect(ohai_data[
|
258
|
+
expect(ohai_data["openstack"]["metadata"]["public_keys"]).to eq({ "mykey" => "SSH KEY DATA" })
|
259
259
|
end
|
260
260
|
it "reads the uuid from the openstack metadata service" do
|
261
|
-
expect(ohai_data[
|
261
|
+
expect(ohai_data["openstack"]["metadata"]["uuid"]).to eq("00000000-0000-0000-0000-100000000000")
|
262
262
|
end
|
263
263
|
end
|
264
264
|
end
|
265
265
|
|
266
|
-
|
267
266
|
end
|
268
267
|
end
|
269
|
-
|
@@ -16,10 +16,9 @@
|
|
16
16
|
# limitations under the License.
|
17
17
|
#
|
18
18
|
|
19
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper.rb")
|
19
20
|
|
20
|
-
|
21
|
-
|
22
|
-
ORIGINAL_CONFIG_HOST_OS = ::RbConfig::CONFIG['host_os']
|
21
|
+
ORIGINAL_CONFIG_HOST_OS = ::RbConfig::CONFIG["host_os"]
|
23
22
|
|
24
23
|
describe Ohai::System, "plugin os" do
|
25
24
|
before(:each) do
|
@@ -29,7 +28,7 @@ describe Ohai::System, "plugin os" do
|
|
29
28
|
end
|
30
29
|
|
31
30
|
after do
|
32
|
-
::RbConfig::CONFIG[
|
31
|
+
::RbConfig::CONFIG["host_os"] = ORIGINAL_CONFIG_HOST_OS
|
33
32
|
end
|
34
33
|
|
35
34
|
it "should set os_version to kernel_release" do
|
@@ -39,7 +38,7 @@ describe Ohai::System, "plugin os" do
|
|
39
38
|
|
40
39
|
describe "on linux" do
|
41
40
|
before(:each) do
|
42
|
-
::RbConfig::CONFIG[
|
41
|
+
::RbConfig::CONFIG["host_os"] = "linux"
|
43
42
|
end
|
44
43
|
|
45
44
|
it "should set the os to linux" do
|
@@ -50,7 +49,7 @@ describe Ohai::System, "plugin os" do
|
|
50
49
|
|
51
50
|
describe "on darwin" do
|
52
51
|
before(:each) do
|
53
|
-
::RbConfig::CONFIG[
|
52
|
+
::RbConfig::CONFIG["host_os"] = "darwin10.0"
|
54
53
|
end
|
55
54
|
|
56
55
|
it "should set the os to darwin" do
|
@@ -61,7 +60,7 @@ describe Ohai::System, "plugin os" do
|
|
61
60
|
|
62
61
|
describe "on solaris" do
|
63
62
|
before do
|
64
|
-
::RbConfig::CONFIG[
|
63
|
+
::RbConfig::CONFIG["host_os"] = "solaris2.42" #heh
|
65
64
|
end
|
66
65
|
|
67
66
|
it "sets the os to solaris2" do
|
@@ -72,7 +71,7 @@ describe Ohai::System, "plugin os" do
|
|
72
71
|
|
73
72
|
describe "on something we have never seen before, but ruby has" do
|
74
73
|
before do
|
75
|
-
::RbConfig::CONFIG[
|
74
|
+
::RbConfig::CONFIG["host_os"] = "tron"
|
76
75
|
end
|
77
76
|
|
78
77
|
it "sets the os to the ruby 'host_os'" do
|
@@ -17,9 +17,9 @@
|
|
17
17
|
# limitations under the License.
|
18
18
|
#
|
19
19
|
|
20
|
-
require File.expand_path(File.dirname(__FILE__) +
|
20
|
+
require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper.rb")
|
21
21
|
|
22
|
-
describe Ohai::System,
|
22
|
+
describe Ohai::System, "plugin packages" do
|
23
23
|
context "when the packages plugin is disabled" do
|
24
24
|
before do
|
25
25
|
Ohai.config[:plugin][:packages][:enabled] = false
|
@@ -28,7 +28,7 @@ describe Ohai::System, 'plugin packages' do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
let(:plugin) do
|
31
|
-
get_plugin(
|
31
|
+
get_plugin("packages").tap do |plugin|
|
32
32
|
plugin[:platform_family] = platform_family
|
33
33
|
end
|
34
34
|
end
|
@@ -49,222 +49,222 @@ describe Ohai::System, 'plugin packages' do
|
|
49
49
|
Ohai.config[:plugin][:packages][:enabled] = true
|
50
50
|
end
|
51
51
|
|
52
|
-
context
|
52
|
+
context "on debian" do
|
53
53
|
let(:plugin) do
|
54
|
-
get_plugin(
|
55
|
-
plugin[:platform_family] =
|
54
|
+
get_plugin("packages").tap do |plugin|
|
55
|
+
plugin[:platform_family] = "debian"
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
59
|
let(:stdout) do
|
60
|
-
File.read(File.join(SPEC_PLUGIN_PATH,
|
60
|
+
File.read(File.join(SPEC_PLUGIN_PATH, "dpkg-query.output"))
|
61
61
|
end
|
62
62
|
|
63
63
|
before(:each) do
|
64
64
|
allow(plugin).to receive(:collect_os).and_return(:linux)
|
65
65
|
allow(plugin).to receive(:shell_out)
|
66
|
-
.with(
|
67
|
-
.and_return(mock_shell_out(0, stdout,
|
66
|
+
.with("dpkg-query -W")
|
67
|
+
.and_return(mock_shell_out(0, stdout, ""))
|
68
68
|
plugin.run
|
69
69
|
end
|
70
70
|
|
71
|
-
it
|
71
|
+
it "calls dpkg query" do
|
72
72
|
expect(plugin).to receive(:shell_out)
|
73
|
-
.with(
|
74
|
-
.and_return(mock_shell_out(0, stdout,
|
73
|
+
.with("dpkg-query -W")
|
74
|
+
.and_return(mock_shell_out(0, stdout, ""))
|
75
75
|
plugin.run
|
76
76
|
end
|
77
77
|
|
78
|
-
it
|
79
|
-
expect(plugin[:packages][
|
78
|
+
it "gets packages and versions" do
|
79
|
+
expect(plugin[:packages]["vim-common"][:version]).to eq("2:7.4.052-1ubuntu3")
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
-
context
|
83
|
+
context "on fedora" do
|
84
84
|
let(:plugin) do
|
85
|
-
get_plugin(
|
86
|
-
plugin[:platform_family] =
|
85
|
+
get_plugin("packages").tap do |plugin|
|
86
|
+
plugin[:platform_family] = "fedora"
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
90
|
let(:format) { Shellwords.escape '%{NAME}\t%{VERSION}\t%{RELEASE}\n' }
|
91
91
|
|
92
92
|
let(:stdout) do
|
93
|
-
File.read(File.join(SPEC_PLUGIN_PATH,
|
93
|
+
File.read(File.join(SPEC_PLUGIN_PATH, "rpmquery.output"))
|
94
94
|
end
|
95
95
|
|
96
96
|
before(:each) do
|
97
97
|
allow(plugin).to receive(:collect_os).and_return(:linux)
|
98
|
-
allow(plugin).to receive(:shell_out).with("rpm -qa --queryformat #{format}").and_return(mock_shell_out(0, stdout,
|
98
|
+
allow(plugin).to receive(:shell_out).with("rpm -qa --queryformat #{format}").and_return(mock_shell_out(0, stdout, ""))
|
99
99
|
plugin.run
|
100
100
|
end
|
101
101
|
|
102
|
-
it
|
102
|
+
it "calls rpm -qa" do
|
103
103
|
expect(plugin).to receive(:shell_out)
|
104
104
|
.with("rpm -qa --queryformat #{format}")
|
105
|
-
.and_return(mock_shell_out(0, stdout,
|
105
|
+
.and_return(mock_shell_out(0, stdout, ""))
|
106
106
|
plugin.run
|
107
107
|
end
|
108
108
|
|
109
|
-
it
|
110
|
-
expect(plugin[:packages][
|
111
|
-
expect(plugin[:packages][
|
109
|
+
it "gets packages and versions/release" do
|
110
|
+
expect(plugin[:packages]["vim-common"][:version]).to eq("7.2.411")
|
111
|
+
expect(plugin[:packages]["vim-common"][:release]).to eq("1.8.el6")
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
|
-
context
|
116
|
-
require
|
115
|
+
context "on windows", :windows_only do
|
116
|
+
require "wmi-lite"
|
117
117
|
|
118
118
|
let(:plugin) do
|
119
|
-
get_plugin(
|
120
|
-
plugin[:platform_family] =
|
119
|
+
get_plugin("packages").tap do |plugin|
|
120
|
+
plugin[:platform_family] = "windows"
|
121
121
|
end
|
122
122
|
end
|
123
123
|
|
124
124
|
let(:win32_product_output) do
|
125
|
-
[{
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
{
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
125
|
+
[{ "assignmenttype" => 0,
|
126
|
+
"caption" => "NXLOG-CE",
|
127
|
+
"description" => "NXLOG-CE",
|
128
|
+
"helplink" => nil,
|
129
|
+
"helptelephone" => nil,
|
130
|
+
"identifyingnumber" => "{22FA28AB-3C1B-438B-A8B5-E23892C8B567}",
|
131
|
+
"installdate" => "20150511",
|
132
|
+
"installdate2" => nil,
|
133
|
+
"installlocation" => nil,
|
134
|
+
"installsource" => 'C:\\chef\\cache\\',
|
135
|
+
"installstate" => 5,
|
136
|
+
"language" => "1033",
|
137
|
+
"localpackage" => 'C:\\Windows\\Installer\\30884.msi',
|
138
|
+
"name" => "NXLOG-CE",
|
139
|
+
"packagecache" => 'C:\\Windows\\Installer\\30884.msi',
|
140
|
+
"packagecode" => "{EC3A13C4-4634-47FC-9662-DC293CB96F9F}",
|
141
|
+
"packagename" => "nexlog-ce-2.8.1248.msi",
|
142
|
+
"productid" => nil,
|
143
|
+
"regcompany" => nil,
|
144
|
+
"regowner" => nil,
|
145
|
+
"skunumber" => nil,
|
146
|
+
"transforms" => nil,
|
147
|
+
"urlinfoabout" => nil,
|
148
|
+
"urlupdateinfo" => nil,
|
149
|
+
"vendor" => "nxsec.com",
|
150
|
+
"version" => "2.8.1248",
|
151
|
+
"wordcount" => 2 },
|
152
|
+
{ "assignmenttype" => 1,
|
153
|
+
"caption" => "Chef Development Kit v0.7.0",
|
154
|
+
"description" => "Chef Development Kit v0.7.0",
|
155
|
+
"helplink" => "http://www.getchef.com/support/",
|
156
|
+
"helptelephone" => nil,
|
157
|
+
"identifyingnumber" => "{90754A33-404C-4172-8F3B-7F04CE98011C}",
|
158
|
+
"installdate" => "20150925", "installdate2" => nil,
|
159
|
+
"installlocation" => nil,
|
160
|
+
"installsource" => 'C:\\Users\\skhajamohid1\\Downloads\\',
|
161
|
+
"installstate" => 5, "language" => "1033",
|
162
|
+
"localpackage" => 'C:\\WINDOWS\\Installer\\d9e1ca7.msi',
|
163
|
+
"name" => "Chef Development Kit v0.7.0",
|
164
|
+
"packagecache" => 'C:\\WINDOWS\\Installer\\d9e1ca7.msi',
|
165
|
+
"packagecode" => "{9B82FB86-40AE-4CDF-9DE8-97574F9395B9}",
|
166
|
+
"packagename" => "chefdk-0.7.0-1 (2).msi",
|
167
|
+
"productid" => nil,
|
168
|
+
"regcompany" => nil,
|
169
|
+
"regowner" => nil,
|
170
|
+
"skunumber" => nil,
|
171
|
+
"transforms" => nil,
|
172
|
+
"urlinfoabout" => nil,
|
173
|
+
"urlupdateinfo" => nil,
|
174
|
+
"vendor" => "\"Chef Software, Inc. <maintainers@chef.io>\"",
|
175
|
+
"version" => "0.7.0.1",
|
176
|
+
"wordcount" => 2 }]
|
177
177
|
end
|
178
178
|
|
179
179
|
before(:each) do
|
180
180
|
allow(plugin).to receive(:collect_os).and_return(:windows)
|
181
|
-
expect_any_instance_of(WmiLite::Wmi).to receive(:instances_of).with(
|
181
|
+
expect_any_instance_of(WmiLite::Wmi).to receive(:instances_of).with("Win32_Product").and_return(win32_product_output)
|
182
182
|
plugin.run
|
183
183
|
end
|
184
184
|
|
185
|
-
it
|
186
|
-
expect(plugin[:packages][
|
187
|
-
expect(plugin[:packages][
|
188
|
-
expect(plugin[:packages][
|
185
|
+
it "gets package info" do
|
186
|
+
expect(plugin[:packages]["Chef Development Kit v0.7.0"][:version]).to eq("0.7.0.1")
|
187
|
+
expect(plugin[:packages]["Chef Development Kit v0.7.0"][:vendor]).to eq("\"Chef Software, Inc. <maintainers@chef.io>\"")
|
188
|
+
expect(plugin[:packages]["Chef Development Kit v0.7.0"][:installdate]).to eq("20150925")
|
189
189
|
|
190
|
-
expect(plugin[:packages][
|
191
|
-
expect(plugin[:packages][
|
192
|
-
expect(plugin[:packages][
|
190
|
+
expect(plugin[:packages]["NXLOG-CE"][:version]).to eq("2.8.1248")
|
191
|
+
expect(plugin[:packages]["NXLOG-CE"][:vendor]).to eq("nxsec.com")
|
192
|
+
expect(plugin[:packages]["NXLOG-CE"][:installdate]).to eq("20150511")
|
193
193
|
end
|
194
194
|
end
|
195
195
|
|
196
|
-
context
|
197
|
-
let(:plugin) { get_plugin(
|
196
|
+
context "on aix" do
|
197
|
+
let(:plugin) { get_plugin("packages") }
|
198
198
|
|
199
199
|
let(:stdout) do
|
200
|
-
File.read(File.join(SPEC_PLUGIN_PATH,
|
200
|
+
File.read(File.join(SPEC_PLUGIN_PATH, "lslpp.output"))
|
201
201
|
end
|
202
202
|
|
203
203
|
before(:each) do
|
204
204
|
allow(plugin).to receive(:collect_os).and_return(:aix)
|
205
|
-
allow(plugin).to receive(:shell_out).with(
|
205
|
+
allow(plugin).to receive(:shell_out).with("lslpp -L -q -c").and_return(mock_shell_out(0, stdout, ""))
|
206
206
|
plugin.run
|
207
207
|
end
|
208
208
|
|
209
|
-
it
|
209
|
+
it "calls lslpp -L -q -c" do
|
210
210
|
expect(plugin).to receive(:shell_out)
|
211
|
-
.with(
|
212
|
-
.and_return(mock_shell_out(0, stdout,
|
211
|
+
.with("lslpp -L -q -c")
|
212
|
+
.and_return(mock_shell_out(0, stdout, ""))
|
213
213
|
plugin.run
|
214
214
|
end
|
215
215
|
|
216
|
-
it
|
217
|
-
expect(plugin[:packages][
|
216
|
+
it "gets packages with version" do
|
217
|
+
expect(plugin[:packages]["chef"][:version]).to eq("12.5.1.1")
|
218
218
|
end
|
219
219
|
end
|
220
220
|
|
221
|
-
context
|
222
|
-
let(:plugin) { get_plugin(
|
221
|
+
context "on solaris2" do
|
222
|
+
let(:plugin) { get_plugin("packages") }
|
223
223
|
|
224
224
|
let(:pkglist_output) do
|
225
|
-
File.read(File.join(SPEC_PLUGIN_PATH,
|
225
|
+
File.read(File.join(SPEC_PLUGIN_PATH, "pkglist.output"))
|
226
226
|
end
|
227
227
|
|
228
228
|
let(:pkginfo_output) do
|
229
|
-
File.read(File.join(SPEC_PLUGIN_PATH,
|
229
|
+
File.read(File.join(SPEC_PLUGIN_PATH, "pkginfo.output"))
|
230
230
|
end
|
231
231
|
|
232
232
|
before(:each) do
|
233
233
|
allow(plugin).to receive(:collect_os).and_return(:solaris2)
|
234
|
-
allow(plugin).to receive(:shell_out).with(
|
235
|
-
allow(plugin).to receive(:shell_out).with(
|
234
|
+
allow(plugin).to receive(:shell_out).with("pkg list -H").and_return(mock_shell_out(0, pkglist_output, ""))
|
235
|
+
allow(plugin).to receive(:shell_out).with("pkginfo -l").and_return(mock_shell_out(0, pkginfo_output, ""))
|
236
236
|
plugin.run
|
237
237
|
end
|
238
238
|
|
239
|
-
it
|
239
|
+
it "calls pkg list -H" do
|
240
240
|
expect(plugin).to receive(:shell_out)
|
241
|
-
.with(
|
242
|
-
.and_return(mock_shell_out(0, pkglist_output,
|
241
|
+
.with("pkg list -H")
|
242
|
+
.and_return(mock_shell_out(0, pkglist_output, ""))
|
243
243
|
plugin.run
|
244
244
|
end
|
245
245
|
|
246
|
-
it
|
246
|
+
it "calls pkginfo -l" do
|
247
247
|
expect(plugin).to receive(:shell_out)
|
248
|
-
.with(
|
249
|
-
.and_return(mock_shell_out(0, pkginfo_output,
|
248
|
+
.with("pkginfo -l")
|
249
|
+
.and_return(mock_shell_out(0, pkginfo_output, ""))
|
250
250
|
plugin.run
|
251
251
|
end
|
252
252
|
|
253
|
-
it
|
254
|
-
expect(plugin[:packages][
|
253
|
+
it "gets ips packages with version" do
|
254
|
+
expect(plugin[:packages]["chef"][:version]).to eq("12.5.1")
|
255
255
|
end
|
256
256
|
|
257
|
-
it
|
258
|
-
expect(plugin[:packages][
|
259
|
-
expect(plugin[:packages][
|
257
|
+
it "gets ips packages with version and publisher" do
|
258
|
+
expect(plugin[:packages]["system/EMCpower"][:version]).to eq("6.0.0.1.0-3")
|
259
|
+
expect(plugin[:packages]["system/EMCpower"][:publisher]).to eq("emc.com")
|
260
260
|
end
|
261
261
|
|
262
|
-
it
|
263
|
-
expect(plugin[:packages][
|
262
|
+
it "gets sysv packages with version" do
|
263
|
+
expect(plugin[:packages]["chef"][:version]).to eq("12.5.1")
|
264
264
|
end
|
265
265
|
|
266
|
-
it
|
267
|
-
expect(plugin[:packages][
|
266
|
+
it "gets sysv packages with version" do
|
267
|
+
expect(plugin[:packages]["mqm"][:version]).to eq("7.0.1.4")
|
268
268
|
end
|
269
269
|
end
|
270
270
|
end
|