fog-openstack 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/fog-openstack.gemspec +1 -1
  3. data/lib/fog/openstack.rb +46 -33
  4. data/lib/fog/openstack/docs/compute.md +2 -3
  5. data/lib/fog/openstack/docs/getting_started.md +5 -5
  6. data/lib/fog/openstack/docs/introspection.md +251 -0
  7. data/lib/fog/openstack/docs/metering.md +15 -1
  8. data/lib/fog/openstack/docs/planning.md +2 -2
  9. data/lib/fog/openstack/docs/storage.md +3 -4
  10. data/lib/fog/openstack/examples/compute/basics.rb +1 -1
  11. data/lib/fog/openstack/examples/compute/block_device_mapping_v2.rb +1 -3
  12. data/lib/fog/openstack/examples/identity/basics.rb +6 -7
  13. data/lib/fog/openstack/examples/image/upload-test-image.rb +5 -8
  14. data/lib/fog/openstack/examples/introspection/basics.rb +75 -0
  15. data/lib/fog/openstack/examples/planning/basics.rb +1 -1
  16. data/lib/fog/openstack/examples/storage/set-account-quota.rb +7 -9
  17. data/lib/fog/openstack/identity.rb +99 -5
  18. data/lib/fog/openstack/identity_v2.rb +4 -23
  19. data/lib/fog/openstack/identity_v3.rb +10 -22
  20. data/lib/fog/openstack/introspection.rb +133 -0
  21. data/lib/fog/openstack/models/introspection/rules.rb +29 -0
  22. data/lib/fog/openstack/models/introspection/rules_collection.rb +32 -0
  23. data/lib/fog/openstack/models/metering/events.rb +2 -2
  24. data/lib/fog/openstack/models/network/floating_ip.rb +24 -3
  25. data/lib/fog/openstack/network.rb +1 -0
  26. data/lib/fog/openstack/requests/compute/get_volume_details.rb +4 -0
  27. data/lib/fog/openstack/requests/introspection/abort_introspection.rb +25 -0
  28. data/lib/fog/openstack/requests/introspection/create_introspection.rb +35 -0
  29. data/lib/fog/openstack/requests/introspection/create_rules.rb +37 -0
  30. data/lib/fog/openstack/requests/introspection/delete_rules.rb +23 -0
  31. data/lib/fog/openstack/requests/introspection/delete_rules_all.rb +23 -0
  32. data/lib/fog/openstack/requests/introspection/get_introspection.rb +24 -0
  33. data/lib/fog/openstack/requests/introspection/get_introspection_details.rb +24 -0
  34. data/lib/fog/openstack/requests/introspection/get_rules.rb +24 -0
  35. data/lib/fog/openstack/requests/introspection/list_rules.rb +24 -0
  36. data/lib/fog/openstack/version.rb +1 -1
  37. data/tests/fixtures/introspection.yaml +287 -0
  38. data/tests/openstack/identity_version_tests.rb +25 -0
  39. data/tests/openstack/models/network/floating_ip_tests.rb +14 -1
  40. data/tests/openstack/requests/introspection/introspection_tests.rb +297 -0
  41. data/tests/openstack/requests/introspection/rules_tests.rb +46 -0
  42. metadata +22 -4
@@ -0,0 +1,29 @@
1
+ require 'fog/openstack/models/model'
2
+
3
+ module Fog
4
+ module Introspection
5
+ class OpenStack
6
+ class Rules < Fog::OpenStack::Model
7
+ identity :uuid
8
+
9
+ attribute :description
10
+ attribute :actions
11
+ attribute :conditions
12
+ attribute :links
13
+
14
+ def create
15
+ requires :actions, :conditions
16
+ attributes[:description] = description || ""
17
+ merge_attributes(service.create_rules(attributes).body)
18
+ self
19
+ end
20
+
21
+ def destroy
22
+ requires :uuid
23
+ service.delete_rules(uuid)
24
+ true
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,32 @@
1
+ require 'fog/openstack/models/collection'
2
+ require 'fog/openstack/models/introspection/rules'
3
+
4
+ module Fog
5
+ module Introspection
6
+ class OpenStack
7
+ class RulesCollection < Fog::OpenStack::Collection
8
+ model Fog::Introspection::OpenStack::Rules
9
+
10
+ def all(_options = {})
11
+ load_response(service.list_rules, 'rules')
12
+ end
13
+
14
+ def get(uuid)
15
+ data = service.get_rules(uuid).body
16
+ new(data)
17
+ rescue Fog::Introspection::OpenStack::NotFound
18
+ nil
19
+ end
20
+
21
+ def destroy(uuid)
22
+ rules = get(uuid)
23
+ rules.destroy
24
+ end
25
+
26
+ def destroy_all
27
+ service.delete_rules_all
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -7,8 +7,8 @@ module Fog
7
7
  class Events < Fog::OpenStack::Collection
8
8
  model Fog::Metering::OpenStack::Event
9
9
 
10
- def all(detailed=true)
11
- load_response(service.list_events)
10
+ def all(q=[])
11
+ load_response(service.list_events(q))
12
12
  end
13
13
 
14
14
  def find_by_id(message_id)
@@ -19,9 +19,9 @@ module Fog
19
19
 
20
20
  def create
21
21
  requires :floating_network_id
22
- merge_attributes(service.create_floating_ip(self.floating_network_id,
22
+ merge_attributes(service.create_floating_ip(floating_network_id,
23
23
 
24
- self.attributes).body['floatingip'])
24
+ attributes).body['floatingip'])
25
25
  self
26
26
  end
27
27
 
@@ -31,9 +31,30 @@ module Fog
31
31
 
32
32
  def destroy
33
33
  requires :id
34
- service.delete_floating_ip(self.id)
34
+ service.delete_floating_ip(id)
35
35
  true
36
36
  end
37
+
38
+ def associate(port_id, fixed_ip_address = nil)
39
+ requires :id
40
+ merge_attributes(service.associate_floating_ip(
41
+ id,
42
+ port_id,
43
+ options(fixed_ip_address)).body['floatingip'])
44
+ end
45
+
46
+ def disassociate(fixed_ip_address = nil)
47
+ requires :id
48
+ merge_attributes(service.disassociate_floating_ip(
49
+ id,
50
+ options(fixed_ip_address)).body['floatingip'])
51
+ end
52
+
53
+ private
54
+
55
+ def options(fixed_ip_address)
56
+ fixed_ip_address ? {'fixed_ip_address' => fixed_ip_address} : {}
57
+ end
37
58
  end
38
59
  end
39
60
  end
@@ -309,6 +309,7 @@ module Fog
309
309
  if error.response.body != 'Bad username or password' # token expiration
310
310
  @openstack_must_reauthenticate = true
311
311
  authenticate
312
+ set_api_path
312
313
  retry
313
314
  else # bad credentials
314
315
  raise error
@@ -15,6 +15,10 @@ module Fog
15
15
  def get_volume_details(volume_id)
16
16
  response = Excon::Response.new
17
17
  if data = self.data[:volumes][volume_id]
18
+ if data['status'] == 'creating' \
19
+ && Time.now - Time.parse(data['createdAt']) >= Fog::Mock.delay
20
+ data['status'] = 'available'
21
+ end
18
22
  response.status = 200
19
23
  response.body = { 'volume' => data }
20
24
  response
@@ -0,0 +1,25 @@
1
+ module Fog
2
+ module Introspection
3
+ class OpenStack
4
+ class Real
5
+ def abort_introspection(node_id)
6
+ request(
7
+ :body => "",
8
+ :expects => 202,
9
+ :method => "POST",
10
+ :path => "introspection/#{node_id}/abort"
11
+ )
12
+ end
13
+ end
14
+
15
+ class Mock
16
+ def abort_introspection(_node_id)
17
+ response = Excon::Response.new
18
+ response.status = 202
19
+ response.body = ""
20
+ response
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,35 @@
1
+ module Fog
2
+ module Introspection
3
+ class OpenStack
4
+ class Real
5
+ def create_introspection(node_id, options = {})
6
+ if options
7
+ data = {
8
+ 'new_ipmi_username' => options[:new_ipmi_username],
9
+ 'new_ipmi_password' => options[:new_ipmi_password]
10
+ }
11
+ body = Fog::JSON.encode(data)
12
+ else
13
+ body = ""
14
+ end
15
+
16
+ request(
17
+ :body => body,
18
+ :expects => 202,
19
+ :method => "POST",
20
+ :path => "introspection/#{node_id}"
21
+ )
22
+ end
23
+ end
24
+
25
+ class Mock
26
+ def create_introspection(_node_id, _options = {})
27
+ response = Excon::Response.new
28
+ response.status = 202
29
+ response.body = ""
30
+ response
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,37 @@
1
+ module Fog
2
+ module Introspection
3
+ class OpenStack
4
+ class Real
5
+ def create_rules(attributes)
6
+ attributes_valid = [
7
+ :actions,
8
+ :conditions,
9
+ :uuid,
10
+ :description
11
+ ]
12
+
13
+ # Filter only allowed creation attributes
14
+ data = attributes.select do |key, _|
15
+ attributes_valid.include?(key.to_sym)
16
+ end
17
+
18
+ request(
19
+ :body => Fog::JSON.encode(data),
20
+ :expects => 200,
21
+ :method => "POST",
22
+ :path => "rules"
23
+ )
24
+ end
25
+ end
26
+
27
+ class Mock
28
+ def create_rules(_)
29
+ response = Excon::Response.new
30
+ response.status = 200
31
+ response.body = {"rules" => data[:rules].first}
32
+ response
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,23 @@
1
+ module Fog
2
+ module Introspection
3
+ class OpenStack
4
+ class Real
5
+ def delete_rules(rule_id)
6
+ request(
7
+ :expects => 204,
8
+ :method => "DELETE",
9
+ :path => "rules/#{rule_id}"
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def delete_rules(_rule_id)
16
+ response = Excon::Response.new
17
+ response.status = 204
18
+ response
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ module Fog
2
+ module Introspection
3
+ class OpenStack
4
+ class Real
5
+ def delete_rules_all
6
+ request(
7
+ :expects => 204,
8
+ :method => "DELETE",
9
+ :path => "rules"
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def delete_rules_all
16
+ response = Excon::Response.new
17
+ response.status = 204
18
+ response
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Introspection
3
+ class OpenStack
4
+ class Real
5
+ def get_introspection(node_id)
6
+ request(
7
+ :expects => 200,
8
+ :method => "GET",
9
+ :path => "introspection/#{node_id}"
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def get_introspection(_node_id)
16
+ response = Excon::Response.new
17
+ response.status = 200
18
+ response.body = {"error" => "null", "finished" => "true"}
19
+ response
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Introspection
3
+ class OpenStack
4
+ class Real
5
+ def get_introspection_details(node_id)
6
+ request(
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :path => "introspection/#{node_id}/data"
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def get_introspection_details(_node_id)
16
+ response = Excon::Response.new
17
+ response.status = 200
18
+ response.body = {"data" => data[:introspection_data]}
19
+ response
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Introspection
3
+ class OpenStack
4
+ class Real
5
+ def get_rules(rule_id)
6
+ request(
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :path => "rules/#{rule_id}"
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def get_rules(_rule_id)
16
+ response = Excon::Response.new
17
+ response.status = 200
18
+ response.body = {"rules" => data[:rules].first}
19
+ response
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,24 @@
1
+ module Fog
2
+ module Introspection
3
+ class OpenStack
4
+ class Real
5
+ def list_rules
6
+ request(
7
+ :expects => 200,
8
+ :method => 'GET',
9
+ :path => "rules"
10
+ )
11
+ end
12
+ end
13
+
14
+ class Mock
15
+ def list_rules
16
+ response = Excon::Response.new
17
+ response.status = 200
18
+ response.body = {"rules" => data[:rules].first}
19
+ response
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module Openstack
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
@@ -0,0 +1,287 @@
1
+ ---
2
+ :rules:
3
+ - description: Successful Rule
4
+ actions:
5
+ - action: set-attribute
6
+ path: /extra/rule_success
7
+ value: 'yes'
8
+ conditions:
9
+ - field: memory_mb
10
+ op: ge
11
+ value: 256
12
+ - field: local_gb
13
+ op: ge
14
+ value: 1
15
+ links:
16
+ - href: /v1/rules/8dbc8e15-506e-4bd1-82e7-b090e0d33cae
17
+ rel: self
18
+ uuid: 8dbc8e15-506e-4bd1-82e7-b090e0d33cae
19
+ - description: Failing Rule
20
+ actions:
21
+ - action: set-attribute
22
+ path: /extra/rule_success
23
+ value: 'no'
24
+ - action: fail
25
+ message: This rule should not have run
26
+ conditions:
27
+ - field: memory_mb
28
+ op: lt
29
+ value: 42
30
+ - field: local_gb
31
+ op: eq
32
+ value: 0
33
+ links:
34
+ - href: /v1/rules/abf9337e-a38d-4041-ba7a-d4e5ac0cc134
35
+ rel: self
36
+ uuid: abf9337e-a38d-4041-ba7a-d4e5ac0cc134
37
+ :introspection_data:
38
+ cpu_arch: x86_64
39
+ macs:
40
+ - 52:54:00:40:d0:11
41
+ root_disk:
42
+ rotational: true
43
+ vendor: '0x1af4'
44
+ name: "/dev/vda"
45
+ wwn_vendor_extension:
46
+ wwn_with_extension:
47
+ model: ''
48
+ wwn:
49
+ serial:
50
+ size: 64424509440
51
+ extra:
52
+ network:
53
+ eth0:
54
+ vlan-challenged: off [fixed]
55
+ tx-udp_tnl-segmentation: off [fixed]
56
+ ipv4-network: 192.0.2.0
57
+ rx-vlan-stag-filter: off [fixed]
58
+ highdma: on [fixed]
59
+ tx-nocache-copy: 'off'
60
+ tx-gso-robust: off [fixed]
61
+ fcoe-mtu: off [fixed]
62
+ netns-local: off [fixed]
63
+ udp-fragmentation-offload: 'on'
64
+ serial: 52:54:00:40:d0:11
65
+ latency: 0
66
+ tx-checksumming/tx-checksum-ipv6: off [fixed]
67
+ tx-checksumming/tx-checksum-ipv4: off [fixed]
68
+ ipv4-netmask: 255.255.255.0
69
+ tcp-segmentation-offload/tx-tcp-segmentation: 'on'
70
+ tx-ipip-segmentation: off [fixed]
71
+ rx-vlan-offload: off [fixed]
72
+ tx-gre-segmentation: off [fixed]
73
+ tx-checksumming/tx-checksum-ip-generic: 'on'
74
+ tcp-segmentation-offload/tx-tcp-ecn-segmentation: 'on'
75
+ tx-checksumming/tx-checksum-fcoe-crc: off [fixed]
76
+ ipv4: 192.0.2.100
77
+ businfo: pci@0000:00:03.0
78
+ rx-vlan-stag-hw-parse: off [fixed]
79
+ tx-vlan-offload: off [fixed]
80
+ product: Virtio network device
81
+ vendor: Red Hat, Inc
82
+ tx-checksumming/tx-checksum-sctp: off [fixed]
83
+ driver: virtio_net
84
+ tx-sit-segmentation: off [fixed]
85
+ busy-poll: off [fixed]
86
+ tx-vlan-stag-hw-insert: off [fixed]
87
+ scatter-gather/tx-scatter-gather: 'on'
88
+ link: 'yes'
89
+ ntuple-filters: off [fixed]
90
+ rx-all: off [fixed]
91
+ tcp-segmentation-offload: 'on'
92
+ tcp-segmentation-offload/tx-tcp6-segmentation: 'on'
93
+ rx-checksumming: on [fixed]
94
+ rx-fcs: off [fixed]
95
+ tx-lockless: off [fixed]
96
+ generic-segmentation-offload: 'on'
97
+ tx-fcoe-segmentation: off [fixed]
98
+ tx-checksumming: 'on'
99
+ ipv4-cidr: 24
100
+ large-receive-offload: off [fixed]
101
+ rx-vlan-filter: on [fixed]
102
+ receive-hashing: off [fixed]
103
+ scatter-gather/tx-scatter-gather-fraglist: off [fixed]
104
+ generic-receive-offload: 'on'
105
+ loopback: off [fixed]
106
+ scatter-gather: 'on'
107
+ tx-mpls-segmentation: off [fixed]
108
+ eth1:
109
+ vlan-challenged: off [fixed]
110
+ tx-udp_tnl-segmentation: off [fixed]
111
+ tx-vlan-stag-hw-insert: off [fixed]
112
+ rx-vlan-stag-filter: off [fixed]
113
+ highdma: on [fixed]
114
+ tx-nocache-copy: 'off'
115
+ tx-gso-robust: off [fixed]
116
+ fcoe-mtu: off [fixed]
117
+ netns-local: off [fixed]
118
+ udp-fragmentation-offload: 'on'
119
+ serial: 52:54:00:11:c5:d8
120
+ latency: 0
121
+ tx-checksumming/tx-checksum-ipv6: off [fixed]
122
+ tx-checksumming/tx-checksum-ipv4: off [fixed]
123
+ tx-fcoe-segmentation: off [fixed]
124
+ tcp-segmentation-offload/tx-tcp-segmentation: 'on'
125
+ tx-ipip-segmentation: off [fixed]
126
+ rx-vlan-offload: off [fixed]
127
+ tx-gre-segmentation: off [fixed]
128
+ tx-checksumming/tx-checksum-ip-generic: 'on'
129
+ tcp-segmentation-offload/tx-tcp-ecn-segmentation: 'on'
130
+ tx-checksumming/tx-checksum-fcoe-crc: off [fixed]
131
+ rx-vlan-stag-hw-parse: off [fixed]
132
+ businfo: pci@0000:00:04.0
133
+ tx-vlan-offload: off [fixed]
134
+ product: Virtio network device
135
+ vendor: Red Hat, Inc
136
+ tx-checksumming/tx-checksum-sctp: off [fixed]
137
+ driver: virtio_net
138
+ tx-sit-segmentation: off [fixed]
139
+ busy-poll: off [fixed]
140
+ scatter-gather/tx-scatter-gather: 'on'
141
+ link: 'yes'
142
+ ntuple-filters: off [fixed]
143
+ rx-all: off [fixed]
144
+ tcp-segmentation-offload: 'on'
145
+ tcp-segmentation-offload/tx-tcp6-segmentation: 'on'
146
+ rx-checksumming: on [fixed]
147
+ tx-lockless: off [fixed]
148
+ generic-segmentation-offload: 'on'
149
+ loopback: off [fixed]
150
+ tx-checksumming: 'on'
151
+ large-receive-offload: off [fixed]
152
+ rx-vlan-filter: on [fixed]
153
+ receive-hashing: off [fixed]
154
+ scatter-gather/tx-scatter-gather-fraglist: off [fixed]
155
+ generic-receive-offload: 'on'
156
+ rx-fcs: off [fixed]
157
+ scatter-gather: 'on'
158
+ tx-mpls-segmentation: off [fixed]
159
+ firmware:
160
+ bios:
161
+ date: 01/01/2011
162
+ version: 0.5.1
163
+ vendor: Seabios
164
+ system:
165
+ kernel:
166
+ cmdline: ipa-inspection-callback-url=http://192.0.2.1:5050/v1/continue ipa-inspection-collectors=default,extra-hardware,logs
167
+ systemd.journald.forward_to_console=yes BOOTIF=52:54:00:40:d0:11 ipa-debug=1
168
+ version: 3.10.0-327.10.1.el7.x86_64
169
+ arch: x86_64
170
+ product:
171
+ version: RHEL 7.0.0 PC (i440FX + PIIX, 1996)
172
+ vendor: Red Hat
173
+ name: KVM
174
+ uuid: FB25FBC2-3FF7-45C0-8581-3EF1BA7E7839
175
+ os:
176
+ version: Red Hat Enterprise Linux Server release 7.2 (Maipo)
177
+ vendor: RedHatEnterpriseServer
178
+ memory:
179
+ total:
180
+ size: 4294967296
181
+ disk:
182
+ vda:
183
+ optimal_io_size: 0
184
+ physical_block_size: 512
185
+ rotational: 1
186
+ vendor: '0x1af4'
187
+ size: 64
188
+ logical:
189
+ count: 1
190
+ cpu:
191
+ logical:
192
+ number: 4
193
+ physical_0:
194
+ physid: 401
195
+ product: Intel Xeon E312xx (Sandy Bridge)
196
+ frequency: 2000000000
197
+ vendor: Intel Corp.
198
+ flags: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic sep mtrr pge mca
199
+ cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp x86-64 constant_tsc
200
+ rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 x2apic
201
+ popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm tpr_shadow vnmi
202
+ flexpriority ept xsaveopt xsavec xgetbv1
203
+ physical_1:
204
+ physid: 402
205
+ product: Intel Xeon E312xx (Sandy Bridge)
206
+ frequency: 2000000000
207
+ vendor: Intel Corp.
208
+ flags: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic sep mtrr pge mca
209
+ cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp x86-64 constant_tsc
210
+ rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 x2apic
211
+ popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm tpr_shadow vnmi
212
+ flexpriority ept xsaveopt xsavec xgetbv1
213
+ physical_2:
214
+ physid: 403
215
+ product: Intel Xeon E312xx (Sandy Bridge)
216
+ frequency: 2000000000
217
+ vendor: Intel Corp.
218
+ flags: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic sep mtrr pge mca
219
+ cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp x86-64 constant_tsc
220
+ rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 x2apic
221
+ popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm tpr_shadow vnmi
222
+ flexpriority ept xsaveopt xsavec xgetbv1
223
+ physical_3:
224
+ physid: 404
225
+ product: Intel Xeon E312xx (Sandy Bridge)
226
+ frequency: 2000000000
227
+ vendor: Intel Corp.
228
+ flags: fpu fpu_exception wp de pse tsc msr pae mce cx8 apic sep mtrr pge mca
229
+ cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp x86-64 constant_tsc
230
+ rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 x2apic
231
+ popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm tpr_shadow vnmi
232
+ flexpriority ept xsaveopt xsavec xgetbv1
233
+ physical:
234
+ number: 4
235
+ interfaces:
236
+ eth0:
237
+ ip: 192.0.2.100
238
+ mac: 52:54:00:40:d0:11
239
+ cpus: 4
240
+ boot_interface: 52:54:00:40:d0:11
241
+ memory_mb: 4096
242
+ ipmi_address: ''
243
+ inventory:
244
+ bmc_address: ''
245
+ interfaces:
246
+ - ipv4_address:
247
+ switch_port_descr:
248
+ switch_chassis_descr:
249
+ name: eth1
250
+ mac_address: 52:54:00:11:c5:d8
251
+ - ipv4_address: 192.0.2.100
252
+ switch_port_descr:
253
+ switch_chassis_descr:
254
+ name: eth0
255
+ mac_address: 52:54:00:40:d0:11
256
+ disks:
257
+ - rotational: true
258
+ vendor: '0x1af4'
259
+ name: "/dev/vda"
260
+ wwn_vendor_extension:
261
+ wwn_with_extension:
262
+ model: ''
263
+ wwn:
264
+ serial:
265
+ size: 64424509440
266
+ system_vendor:
267
+ serial_number: Not Specified
268
+ product_name: KVM
269
+ manufacturer: Red Hat
270
+ memory:
271
+ physical_mb: 4096
272
+ total: 4144173056
273
+ cpu:
274
+ count: 4
275
+ frequency: '3408.032'
276
+ model_name: Intel Xeon E312xx (Sandy Bridge)
277
+ architecture: x86_64
278
+ error:
279
+ local_gb: 59
280
+ all_interfaces:
281
+ eth1:
282
+ ip:
283
+ mac: 52:54:00:11:c5:d8
284
+ eth0:
285
+ ip: 192.0.2.100
286
+ mac: 52:54:00:40:d0:11
287
+ logs: Way too long...