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.
Files changed (2) hide show
  1. data/lib/ovfparse/vmpackage.rb +25 -32
  2. metadata +14 -14
@@ -123,36 +123,22 @@ class VmPackage
123
123
  def loadElementRefs
124
124
  children = @xml.root.children
125
125
 
126
- @references = children[0]
127
- if(@references.name != 'References')
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
- @networkSection = children[2]
137
- if(@networkSection.name != 'NetworkSection')
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
- xsd = Nokogiri::XML::Schema(schema)
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
- return getChildByName(virtualSystem, 'OperatingSystemSection')['id']
203
+ osNode = getChildByName(virtualSystem, 'OperatingSystemSection')
204
+ return osNode.nil? ? '' : osNode['id']
216
205
  end
217
206
 
218
207
  def getVmOS
219
- return OS_ID_TABLE[getVmOS_ID.to_i]
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.add_child(xml.create_element('File', {'ovf:id' => productNode['class'] + '_icon', 'ovf:href' => new_icon}))
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
- element_node.unlink
420
- elsif(updated_value != '' && !updated_value.nil?)
421
- element_node = element_node.nil? ? parent_node.add_child(xml.create_element(element_details['node_ref'], updated_value)) : parent_node.add_child(element_node)
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
- end
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
- (updated_value == '' || updated_value.nil?) ? parent_node.delete(attribute_details['node_ref']) : parent_node[attribute_details['full_name']] = updated_value
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: 161
4
+ hash: 221
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 95
10
- version: 0.0.95
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 00:00:00 -04:00
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/vmpackage.rb
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