ovfparse 0.0.95 → 0.0.97

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