ovfparse 0.0.95 → 0.0.97
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.
- data/lib/ovfparse/vmpackage.rb +25 -32
- metadata +14 -14
data/lib/ovfparse/vmpackage.rb
CHANGED
@@ -123,36 +123,22 @@ class VmPackage
|
|
123
123
|
def loadElementRefs
|
124
124
|
children = @xml.root.children
|
125
125
|
|
126
|
-
@references =
|
127
|
-
|
128
|
-
@references = getChildByName(xml.root, 'References')
|
129
|
-
end
|
130
|
-
|
131
|
-
@diskSection = children[1]
|
132
|
-
if(@diskSection.name != 'DiskSection')
|
133
|
-
@diskSection = getChildByName(xml.root, 'DiskSection')
|
134
|
-
end
|
126
|
+
@references = getChildByName(xml.root, 'References')
|
127
|
+
@virtualSystem = getChildByName(xml.root, 'VirtualSystem')
|
135
128
|
|
136
|
-
@
|
137
|
-
|
138
|
-
@networkSection = getChildByName(xml.root, 'NetworkSection')
|
139
|
-
end
|
140
|
-
|
141
|
-
@virtualSystem = children[3]
|
142
|
-
if(@virtualSystem.name != 'VirtualSystem')
|
143
|
-
@virtualSystem = getChildByName(xml.root, 'VirtualSystem')
|
144
|
-
end
|
129
|
+
@diskSection = getChildByName(xml.root, 'DiskSection') || @virtualSystem.add_previous_sibling(xml.create_element('DiskSection', {}))
|
130
|
+
@networkSection = getChildByName(xml.root, 'NetworkSection') || @virtualSystem.add_previous_sibling(xml.create_element('NetworkSection', {}))
|
145
131
|
|
146
132
|
end
|
147
133
|
|
148
134
|
# Returns the first child node of the passed node whose name matches the passed name.
|
149
135
|
def getChildByName(node, childName)
|
150
|
-
return node.children.detect{ |element| element.name == childName}
|
136
|
+
return node.nil? ? nil : node.children.detect{ |element| element.name == childName}
|
151
137
|
end
|
152
138
|
|
153
139
|
# Returns every child node of the passed node whose name matches the passed name.
|
154
140
|
def getChildrenByName(node, childName)
|
155
|
-
return node.children.select{ |element| element.name == childName}
|
141
|
+
return node.nil? ? [] : node.children.select{ |element| element.name == childName}
|
156
142
|
end
|
157
143
|
|
158
144
|
def referenced_file(element)
|
@@ -190,7 +176,9 @@ class VmPackage
|
|
190
176
|
end
|
191
177
|
|
192
178
|
def checkschema(schema)
|
193
|
-
|
179
|
+
puts "Starting schema parse"
|
180
|
+
xsd = Nokogiri::XML::Schema(File.open(schema))
|
181
|
+
puts "Done with schema parse"
|
194
182
|
response = ""
|
195
183
|
|
196
184
|
isValid = true
|
@@ -203,7 +191,7 @@ class VmPackage
|
|
203
191
|
end
|
204
192
|
|
205
193
|
def getVmName
|
206
|
-
return virtualSystem['id']
|
194
|
+
return virtualSystem['id'] || ''
|
207
195
|
end
|
208
196
|
|
209
197
|
def getVmDescription
|
@@ -212,11 +200,13 @@ class VmPackage
|
|
212
200
|
end
|
213
201
|
|
214
202
|
def getVmOS_ID
|
215
|
-
|
203
|
+
osNode = getChildByName(virtualSystem, 'OperatingSystemSection')
|
204
|
+
return osNode.nil? ? '' : osNode['id']
|
216
205
|
end
|
217
206
|
|
218
207
|
def getVmOS
|
219
|
-
|
208
|
+
os = getVmOS_ID
|
209
|
+
return os == '' ? '' : OS_ID_TABLE[os.to_i]
|
220
210
|
end
|
221
211
|
|
222
212
|
|
@@ -403,7 +393,9 @@ class VmPackage
|
|
403
393
|
elsif(new_icon != '' && !new_icon.nil?)
|
404
394
|
if(iconNode.nil?)
|
405
395
|
productNode.add_child(xml.create_element('Icon', {'ovf:fileRef' => productNode['class'] + '_icon'}))
|
406
|
-
references
|
396
|
+
iconRef = getChildrenByName(references, 'File').detect { |fileNode| fileNode['href'] == new_icon} ||
|
397
|
+
references.add_child(xml.create_element('File', {'ovf:href' => new_icon}))
|
398
|
+
iconRef['ovf:id'] = productNode['class'] + '_icon'
|
407
399
|
else
|
408
400
|
productNode.add_child(iconNode)
|
409
401
|
getChildrenByName(references, 'File').detect { |fileNode| fileNode['id'] == iconNode['fileRef']}['ovf:href'] = new_icon
|
@@ -415,22 +407,23 @@ class VmPackage
|
|
415
407
|
element_list.each { |element_details|
|
416
408
|
updated_value = updated_element[element_details['element_ref']]
|
417
409
|
element_node = parent_node.xpath(element_details['full_name'])[0]
|
418
|
-
if((updated_value == '' || updated_value.nil?) && !element_node.nil?)
|
419
|
-
|
420
|
-
elsif(updated_value != '' && !updated_value.nil?)
|
421
|
-
element_node = element_node.nil? ? parent_node.add_child(xml.create_element(element_details['node_ref'],
|
422
|
-
element_node.content = updated_value
|
410
|
+
#if((updated_value == '' || updated_value.nil?) && !element_node.nil?)
|
411
|
+
# element_node.unlink
|
412
|
+
#elsif(updated_value != '' && !updated_value.nil?)
|
413
|
+
element_node = element_node.nil? ? parent_node.add_child(xml.create_element(element_details['node_ref'], {})) : parent_node.add_child(element_node)
|
414
|
+
element_node.content = updated_value || ''
|
423
415
|
if(element_details['required'])
|
424
416
|
element_node['ovf:required'] = 'false'
|
425
417
|
end
|
426
|
-
|
418
|
+
# end
|
427
419
|
}
|
428
420
|
end
|
429
421
|
|
430
422
|
def setAttributes(updated_element, parent_node, attribute_list)
|
431
423
|
attribute_list.each { |attribute_details|
|
432
424
|
updated_value = updated_element[attribute_details['attribute_ref']]
|
433
|
-
|
425
|
+
# (updated_value == '' || updated_value.nil?) ? parent_node.delete(attribute_details['node_ref']) :
|
426
|
+
parent_node[attribute_details['full_name']] = updated_value || ''
|
434
427
|
}
|
435
428
|
end
|
436
429
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ovfparse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 221
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 97
|
10
|
+
version: 0.0.97
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jim Barkley
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-04-
|
18
|
+
date: 2011-04-19 00:00:00 -04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -43,20 +43,20 @@ extensions: []
|
|
43
43
|
extra_rdoc_files:
|
44
44
|
- README
|
45
45
|
files:
|
46
|
-
- lib/ovfparse/esx4_vmrepository.rb
|
47
|
-
- lib/ovfparse/esx_repository.rb
|
48
|
-
- lib/ovfparse/file_vmrepository.rb
|
49
|
-
- lib/ovfparse/ftp_vmrepository.rb
|
50
46
|
- lib/ovfparse/http_vmrepository.rb
|
51
|
-
- lib/ovfparse/https_vmrepository.rb
|
52
|
-
- lib/ovfparse/marketplace_repository.rb
|
53
|
-
- lib/ovfparse/os_id_table.rb
|
54
|
-
- lib/ovfparse/vc4_vmrepository.rb
|
55
47
|
- lib/ovfparse/vc_repository.rb
|
56
|
-
- lib/ovfparse/
|
48
|
+
- lib/ovfparse/os_id_table.rb
|
49
|
+
- lib/ovfparse/file_vmrepository.rb
|
50
|
+
- lib/ovfparse/marketplace_repository.rb
|
57
51
|
- lib/ovfparse/vmrepository.rb
|
58
|
-
- lib/ovfparse.rb
|
52
|
+
- lib/ovfparse/vmpackage.rb
|
53
|
+
- lib/ovfparse/esx4_vmrepository.rb
|
54
|
+
- lib/ovfparse/vc4_vmrepository.rb
|
55
|
+
- lib/ovfparse/https_vmrepository.rb
|
56
|
+
- lib/ovfparse/ftp_vmrepository.rb
|
57
|
+
- lib/ovfparse/esx_repository.rb
|
59
58
|
- lib/test.rb
|
59
|
+
- lib/ovfparse.rb
|
60
60
|
- README
|
61
61
|
has_rdoc: true
|
62
62
|
homepage: http://github.com/ruby-ovf/ovfparse
|