fog-openstack 0.1.2 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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...