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