occi-core 4.2.9 → 4.2.10

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 048de127a2481ac6c0fffea83b1c94f6823e8204
4
- data.tar.gz: a3428c76af76ab77a58d8835ab9843c651c5ea1e
3
+ metadata.gz: 24ac48413195e65ec6847bb7d4c3ebad5a13e910
4
+ data.tar.gz: 039a79688fea638a32f959e5faa7dbba6e71938a
5
5
  SHA512:
6
- metadata.gz: cc0813f8ebfbacbabd56be0c9dd01fc30ed29c21c966c53c2b534e3d5b6436e8693337d3a1d5421a5e91bf8311ea0d03e00f559c73d36196fa1cd485a2b49b05
7
- data.tar.gz: 4ccef9118f96d9e260f42a7b3101e719b2d9498d88236893eb63f3f09f5f64d4a8111609e8dc71f54e918464fc313d620fecb345eaf04065eb625b3dcabeebfc
6
+ metadata.gz: aa4eeb03ceadf69c476ace568a61d1517b166043a3e0104a0451b569a91f16882a258144ae48254a2ca2d9e7c4c0ec62be9a1c5b9cc9cf62b6fcebd92ecc92f8
7
+ data.tar.gz: f601b3b6bde0c77b61da0c2d7c817761060d2556ff4b716d6f787ae9c5f80e25a2b31e3ca4039ac2c698efb10333f37f2aece544b4c5c04878d9d5d7af5ba29c
data/README.md CHANGED
@@ -14,14 +14,10 @@ Requirements
14
14
  * RubyGems have to be installed
15
15
  * Rake has to be installed (e.g., `gem install rake`)
16
16
 
17
- ### Dependencies
18
- * `libxslt1-dev` or `libxslt-devel`
19
- * `libxml2-dev`or `libxml2-devel`
20
-
21
17
  ### Examples
22
18
  #### For distros based on Debian:
23
19
  ~~~
24
- apt-get install ruby rubygems ruby-dev libxslt1-dev libxml2-dev
20
+ apt-get install ruby rubygems ruby-dev
25
21
  ~~~
26
22
  ~~~
27
23
  ruby -v
@@ -31,7 +27,7 @@ ruby -v
31
27
 
32
28
  #### For distros based on RHEL:
33
29
  ~~~
34
- yum install libxml2-devel libxslt-devel ruby-devel openssl-devel gcc gcc-c++ ruby rubygems
30
+ yum install ruby-devel openssl-devel gcc gcc-c++ ruby rubygems
35
31
  ~~~
36
32
  ~~~
37
33
  ruby -v
@@ -132,30 +128,6 @@ OCCI messages can be parsed to an OCCI collection for example like
132
128
  body = %Q|Category: compute; scheme="http://schemas.ogf.org/occi/infrastructure#"; class="kind"|
133
129
  collection=Occi::Parser.parse(media_type, body)
134
130
 
135
- ### Parsing OVF / OVA files
136
-
137
- Parsing of OVF/OVA files is partly supported and will be improved in future versions.
138
-
139
- The example in [DMTF DSP 2021](http://www.dmtf.org/sites/default/files/standards/documents/DSP2021_1.0.0.tar) is
140
- bundled with rOCCI and can be parsed to an OCCI collection with
141
-
142
- require 'open-uri'
143
- ova=open 'https://raw.github.com/gwdg/rOCCI/master/spec/occi/test.ova'
144
- collection=Occi::Parser.ova(ova.read)
145
-
146
- Currently only the following entries of OVF files are parsed
147
-
148
- * File in References
149
- * Disk in the DiskSection
150
- * Network in the NetworkSection
151
- * In the VirutalSystemSection:
152
- * Info
153
- * in the VirtualHardwareSection the items regarding
154
- * Processor
155
- * Memory
156
- * Ethernet Adapter
157
- * Parallel port
158
-
159
131
  ### Using the OCCI model
160
132
 
161
133
  The occi-core gem includes all OCCI Core classes necessary to handly arbitrary OCCI objects.
data/lib/occi/parser.rb CHANGED
@@ -86,12 +86,6 @@ module Occi
86
86
  collection = parse_body_plain(body, category, entity_type)
87
87
  when 'application/occi+json', 'application/json'
88
88
  collection = Occi::Parser::Json.collection body
89
- when 'application/occi+xml', 'application/xml'
90
- collection = Occi::Parser::Xml.collection body
91
- when 'application/ovf', 'application/ovf+xml'
92
- collection = Occi::Parser::Ovf.collection body
93
- when 'application/ova'
94
- collection = Occi::Parser::Ova.collection body
95
89
  else
96
90
  raise Occi::Errors::ParserTypeError, "Content type #{media_type} not supported"
97
91
  end
data/lib/occi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Occi
2
- VERSION = "4.2.9" unless defined?(::Occi::VERSION)
2
+ VERSION = "4.2.10" unless defined?(::Occi::VERSION)
3
3
  end
data/lib/occi-core.rb CHANGED
@@ -10,7 +10,6 @@ require 'active_support/notifications'
10
10
 
11
11
  require 'logger'
12
12
  require 'uuidtools'
13
- require 'nokogiri'
14
13
  require 'rubygems/package'
15
14
  require 'zlib'
16
15
  require 'tempfile'
data/occi-core.gemspec CHANGED
@@ -21,7 +21,6 @@ Gem::Specification.new do |gem|
21
21
  gem.add_dependency 'json'
22
22
  gem.add_dependency 'hashie'
23
23
  gem.add_dependency 'uuidtools', '>=2.1.3'
24
- gem.add_dependency 'nokogiri', '~>1.6.0'
25
24
  gem.add_dependency 'activesupport', '~>4.0.0'
26
25
  gem.add_dependency 'settingslogic'
27
26
 
@@ -86,48 +86,6 @@ module Occi
86
86
  end
87
87
  end
88
88
 
89
- it "parses an OVF file" do
90
- media_type = 'application/ovf+xml'
91
- body = File.read('spec/occi/parser/ovf_samples/test.ovf')
92
- collection = Occi::Parser.parse(media_type, body)
93
-
94
- collection.resources.each { |res| res.id="noid" } #Equalize auto-generated IDs
95
-
96
- expected = Marshal.load(File.open("spec/occi/parser/ovf_samples/test.dump", "rb"))
97
- expect(collection).to eql expected
98
- end
99
-
100
- it 'copes with faulty OVF' #do
101
- # expect{ Occi::Parser.parse('application/ovf', "{This is not an OVF}")}.to raise_error(Occi::Errors::ParserInputError)
102
- # end
103
-
104
- it "parses an OVA container" do
105
- media_type = 'application/ova'
106
- body = File.read('spec/occi/parser/ova_samples/test.ova')
107
- collection = Occi::Parser.parse(media_type, body)
108
-
109
- collection.resources.each { |res| res.id="noid" } #Equalize auto-generated IDs
110
-
111
- expected = Marshal.load(File.open("spec/occi/parser/ova_samples/test.dump", "rb"))
112
- expect(collection).to eql expected
113
- end
114
-
115
- it 'copes with faulty OVA' do
116
- expect{ Occi::Parser.parse('application/ova', "{This is not an OVA}")}.to raise_error(Occi::Errors::ParserInputError)
117
- end
118
-
119
- # ZS 11 Oct 2013: XML format not yet properly specified
120
- # it "parses a XML file" do
121
- # media_type = 'application/xml'
122
- # body = File.read('spec/occi/parser/xml_samples/test.xml')
123
- # collection = Occi::Parser.parse(media_type, body)
124
- #
125
- # end
126
-
127
- it 'copes with faulty XML' do
128
- expect{ collection = Occi::Parser.parse('application/xml', "{This is not a XML}") }.to raise_error(Occi::Errors::ParserInputError)
129
- end
130
-
131
89
  it 'copes with non-existent MIME-type' do
132
90
  expect{ collection = Occi::Parser.parse('application/notexist', 'X-OCCI-Location: http://example.com:8090/a/b/vm1"') }.to raise_error(Occi::Errors::ParserTypeError)
133
91
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: occi-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.9
4
+ version: 4.2.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Feldhaus
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-02-09 00:00:00.000000000 Z
13
+ date: 2014-02-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: json
@@ -54,20 +54,6 @@ dependencies:
54
54
  - - '>='
55
55
  - !ruby/object:Gem::Version
56
56
  version: 2.1.3
57
- - !ruby/object:Gem::Dependency
58
- name: nokogiri
59
- requirement: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - ~>
62
- - !ruby/object:Gem::Version
63
- version: 1.6.0
64
- type: :runtime
65
- prerelease: false
66
- version_requirements: !ruby/object:Gem::Requirement
67
- requirements:
68
- - - ~>
69
- - !ruby/object:Gem::Version
70
- version: 1.6.0
71
57
  - !ruby/object:Gem::Dependency
72
58
  name: activesupport
73
59
  requirement: !ruby/object:Gem::Requirement
@@ -173,11 +159,8 @@ files:
173
159
  - lib/occi/model.rb
174
160
  - lib/occi/parser.rb
175
161
  - lib/occi/parser/json.rb
176
- - lib/occi/parser/ova.rb
177
- - lib/occi/parser/ovf.rb
178
162
  - lib/occi/parser/text.rb
179
163
  - lib/occi/parser/text/constants.rb
180
- - lib/occi/parser/xml.rb
181
164
  - lib/occi/settings.rb
182
165
  - lib/occi/version.rb
183
166
  - occi-core.gemspec
@@ -207,10 +190,6 @@ files:
207
190
  - spec/occi/log_spec.rb
208
191
  - spec/occi/model_spec.rb
209
192
  - spec/occi/parser/json_samples/test.json
210
- - spec/occi/parser/ova_samples/test.dump
211
- - spec/occi/parser/ova_samples/test.ova
212
- - spec/occi/parser/ovf_samples/test.dump
213
- - spec/occi/parser/ovf_samples/test.ovf
214
193
  - spec/occi/parser/text_samples/occi_categories.dump
215
194
  - spec/occi/parser/text_samples/occi_categories.text
216
195
  - spec/occi/parser/text_samples/occi_compute_rocci_server.dump
@@ -240,7 +219,6 @@ files:
240
219
  - spec/occi/parser/text_samples/occi_storage_rocci_server.resource.dump
241
220
  - spec/occi/parser/text_samples/occi_storage_rocci_server.text
242
221
  - spec/occi/parser/text_spec.rb
243
- - spec/occi/parser/xml_samples/test.xml
244
222
  - spec/occi/parser_spec.rb
245
223
  - spec/spec_helper.rb
246
224
  homepage: https://github.com/gwdg/rOCCI-core
@@ -1,41 +0,0 @@
1
- module Occi
2
- module Parser
3
- module Ova
4
-
5
- # @param [String] string
6
- # @return [Occi::Collection]
7
- def self.collection(string)
8
- Occi::Log.debug "[#{self}] Parsing ova format"
9
- tar = Gem::Package::TarReader.new(StringIO.new(string))
10
- ovf = mf = cert = nil
11
- files = {}
12
-
13
- tar.each do |entry|
14
- tempfile = Tempfile.new(entry.full_name)
15
- tempfile.write(entry.read)
16
- tempfile.close
17
- files[entry.full_name] = tempfile.path
18
-
19
- ovf = tempfile.path if entry.full_name.end_with? '.ovf'
20
- mf = tempfile.path if entry.full_name.end_with? '.mf'
21
- cert = tempfile.path if entry.full_name.end_with? '.cert'
22
- end
23
-
24
- Occi::Log.debug "[#{self}] In ova found: #{ovf} #{mf} #{cert}"
25
- raise Occi::Errors::ParserInputError, 'No ovf file found' unless ovf
26
-
27
- File.read(mf).each_line do |line|
28
- line = line.scan(/SHA1\(([^\)]*)\)= (.*)/).flatten
29
- name = line.first
30
- sha1 = line.last
31
-
32
- Occi::Log.debug "[#{self}] SHA1 hash #{Digest::SHA1.hexdigest(files[name])}"
33
- raise Occi::Errors::ParserInputError, "SHA1 mismatch for file #{name}" unless Digest::SHA1.hexdigest(File.read(files[name])) == sha1
34
- end if mf
35
-
36
- Occi::Parser::Ovf.collection(File.read(ovf), files)
37
- end
38
-
39
- end
40
- end
41
- end
@@ -1,211 +0,0 @@
1
- module Occi
2
- module Parser
3
- module Ovf
4
-
5
- # Declaring Class constants for OVF XML namespaces (defined in OVF specification ver.1.1)
6
- OVF ="http://schemas.dmtf.org/ovf/envelope/1"
7
- RASD ="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData"
8
- VSSD ="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData"
9
- OVFENV="http://schemas.dmtf.org/ovf/environment/1"
10
- CIM ="http://schemas.dmtf.org/wbem/wscim/1/common"
11
-
12
- class << self
13
-
14
- # @param [String] string
15
- # @param [Hash] files key value pairs of file names and paths to the file
16
- def collection(string, files={})
17
- collection = Occi::Collection.new
18
- doc = Nokogiri::XML(string)
19
-
20
- references = parse_references(doc, files)
21
- parse_storage(doc, references, collection)
22
- parse_network(doc, collection)
23
- parse_compute(doc, references, collection)
24
-
25
- collection
26
- end
27
-
28
- def parse_references(doc, files)
29
- references = {}
30
-
31
- doc.xpath('envelope:Envelope/envelope:References/envelope:File', 'envelope' => "#{OVF}").each do |file|
32
- href = URI.parse(file.attributes['href'].to_s)
33
- references[file.attributes['id'].to_s] = if href.relative?
34
- files[href.to_s] ? "file://#{files[href.to_s]}" : "file://#{href.to_s}"
35
- else
36
- href.to_s
37
- end
38
- end
39
-
40
- references
41
- end
42
-
43
- def parse_storage(doc, references, collection)
44
- doc.xpath('envelope:Envelope/envelope:DiskSection/envelope:Disk', 'envelope' => "#{OVF}").each do |disk|
45
- storage = Occi::Infrastructure::Storage.new
46
-
47
- if disk.attributes['fileRef']
48
- parse_storage_disk_file(disk, storage, references)
49
- else
50
- parse_storage_disk_alloc(disk, storage, references)
51
- end
52
-
53
- collection.resources << storage
54
- end
55
-
56
- collection
57
- end
58
-
59
- def parse_storage_disk_file(disk, storage, references)
60
- storagelink = Occi::Infrastructure::Storagelink.new
61
- storagelink.title = disk.attributes['fileRef'].to_s
62
- storagelink.target = references[disk.attributes['fileRef'].to_s]
63
-
64
- storage.title = disk.attributes['diskId'].to_s
65
- storage.links << storagelink
66
-
67
- storage
68
- end
69
-
70
- def parse_storage_disk_alloc(disk, storage)
71
- #OCCI accepts storage size in GB
72
- #OVF ver 1.1: The capacity of a virtual disk shall be specified by the ovf:capacity attribute with an xs:long integer
73
- #value. The default unit odf allocation shall be bytes. The optional string attribute
74
- #ovf:capacityAllocationUnits may be used to specify a particular unit of allocation.
75
- alloc_units = disk.attributes['capacityAllocationUnits'].to_s
76
-
77
- if alloc_units.empty?
78
- # The capacity is defined in bytes, convert to GB and pass it to OCCI
79
- capacity = disk.attributes['capacity'].to_s.to_i
80
- else
81
- alloc_unit_bytes = alloc_units_bytes(alloc_units)
82
- capacity = calculate_capacity_bytes(disk.attributes['capacity'].to_s, alloc_unit_bytes)
83
- end
84
-
85
- capacity_gb = calculate_capacity_gb(capacity)
86
- storage.size = capacity_gb.to_s if capacity_gb
87
- storage.title = disk.attributes['diskId'].to_s if disk.attributes['diskId']
88
-
89
- storage
90
- end
91
-
92
- def parse_network(doc, collection)
93
- doc.xpath('envelope:Envelope/envelope:NetworkSection/envelope:Network', 'envelope' => "#{OVF}").each do |nw|
94
- network = Occi::Infrastructure::Network.new
95
- network.title = nw.attributes['name'].to_s
96
- collection.resources << network
97
- end
98
-
99
- collection
100
- end
101
-
102
- def parse_compute(doc, references, collection)
103
- # Iteration through all the virtual hardware sections,and a sub-iteration on each Item defined in the Virtual Hardware section
104
- doc.xpath('envelope:Envelope/envelope:VirtualSystem', 'envelope' => "#{OVF}").each do |virtsys|
105
- compute = Occi::Infrastructure::Compute.new
106
-
107
- doc.xpath('envelope:Envelope/envelope:VirtualSystem/envelope:VirtualHardwareSection', 'envelope' => "#{OVF}").each do |virthwsec|
108
- compute.summary = virthwsec.xpath("item:Info/text()", 'item' => "#{RASD}").to_s
109
- parse_compute_resources(collection, compute, virthwsec)
110
- end
111
-
112
- collection.resources << compute
113
- end
114
-
115
- collection
116
- end
117
-
118
- def parse_compute_resources(collection, compute, virthwsec)
119
- virthwsec.xpath('envelope:Item', 'envelope' => "#{OVF}").each do |resource_alloc|
120
- resType = resource_alloc.xpath("item:ResourceType/text()", 'item' => "#{RASD}")
121
-
122
- case resType.to_s
123
- when "4" then
124
- # 4 is the ResourceType for memory in the CIM_ResourceAllocationSettingData
125
- parse_compute_memory(resource_alloc, compute)
126
- when "3" then
127
- # 3 is the ResourceType for processor in the CIM_ResourceAllocationSettingData
128
- compute.cores = resource_alloc.xpath("item:VirtualQuantity/text()", 'item' => "#{RASD}").to_s.to_i
129
- when "10" then
130
- # extract the network
131
- parse_compute_network(resource_alloc, compute, collection)
132
- when "17" then
133
- # extract the mountpoint
134
- parse_compute_storage(resource_alloc, compute, collection)
135
- end
136
-
137
- ##Add the cpu architecture
138
- #system_sec = virthwsec.xpath('envelope:System', 'envelope' => "#{OVF}")
139
- #compute.architecture = system_sec.xpath('vssd_:VirtualSystemType/text()', 'vssd_' => "#{VSSD}")
140
- end
141
-
142
- compute
143
- end
144
-
145
- def parse_compute_memory(resource_alloc, compute)
146
- alloc_units = resource_alloc.xpath("item:AllocationUnits/text()", 'item' => "#{RASD}").to_s
147
-
148
- alloc_unit_bytes = alloc_units_bytes(alloc_units)
149
- capacity = calculate_capacity_bytes(resource_alloc.xpath("item:VirtualQuantity/text()", 'item' => "#{RASD}").to_s, alloc_unit_bytes)
150
- capacity_gb = calculate_capacity_gb(capacity)
151
-
152
- compute.memory = capacity_gb
153
- # compute.attributes.occi!.compute!.memory = resource_alloc.xpath("item:VirtualQuantity/text()", 'item' => "#{RASD}").to_s.to_i
154
-
155
- compute
156
- end
157
-
158
- def parse_compute_network(resource_alloc, compute, collection)
159
- id = resource_alloc.xpath("item:Connection/text()", 'item' => "#{RASD}").to_s
160
- network = collection.resources.select { |resource| resource.title == id }.first
161
- raise Occi::Errors::ParserInputError, "Network with id #{id} not found" unless network
162
-
163
- networkinterface = compute.networkinterface(network)
164
- networkinterface.title = resource_alloc.xpath("item:ElementName/text()", 'item' => "#{RASD}").to_s
165
-
166
- compute
167
- end
168
-
169
- def parse_compute_storage(resource_alloc, compute, collection)
170
- host_resource = resource_alloc.xpath("item:HostResource/text()", 'item' => "#{RASD}").to_s
171
-
172
- if host_resource.start_with? 'ovf:/disk/'
173
- id = host_resource.gsub('ovf:/disk/', '')
174
- storage = collection.resources.select { |resource| resource.title == id }.first
175
- raise Occi::Errors::ParserInputError, "Disk with id #{id} not found" unless storage
176
- elsif host_resource.start_with? 'ovf:/file/'
177
- raise Occi::Errors::ParserInputError, 'OVF files are not supported!'
178
- #id = host_resource.gsub('ovf:/file/', '')
179
- #storagelink.attributes.occi!.core!.target = references[id]
180
- end
181
-
182
- storagelink = compute.storagelink(storage)
183
- storagelink.title = resource_alloc.xpath("item:ElementName/text()", 'item' => "#{RASD}").to_s
184
-
185
- compute
186
- end
187
-
188
- def calculate_capacity_bytes(capacity, alloc_units_bytes)
189
- total_capacity_bytes = alloc_units_bytes * capacity.to_i
190
- total_capacity_bytes
191
- end
192
-
193
- def calculate_capacity_gb(capacity)
194
- capacity_gb = capacity.to_f/(2**30)
195
- capacity_gb
196
- end
197
-
198
- def alloc_units_bytes(alloc_units)
199
- units = alloc_units.split('*')
200
- #check units[1] is nil??
201
- units[1].strip!
202
- alloc_vars = units[1].split('^')
203
- alloc_units_bytes = (alloc_vars[0].to_i**alloc_vars[1].to_i)
204
- alloc_units_bytes
205
- end
206
-
207
- end
208
-
209
- end
210
- end
211
- end
@@ -1,20 +0,0 @@
1
- module Occi
2
- module Parser
3
- module Xml
4
- # @param [String] string
5
- # @return [Occi::Collection]
6
- def self.collection(string)
7
-
8
- begin
9
- parsed_xml = Nokogiri::XML(string) { |config| config.strict.nonet }
10
- rescue Nokogiri::XML::SyntaxError => perr
11
- Occi::Log.error "[#{self}] Failed to parse XML input: #{perr.message}"
12
- raise Occi::Errors::ParserInputError, perr.message
13
- end
14
-
15
- hash = Hashie::Mash.new(Hash.from_xml(parsed_xml))
16
- Occi::Collection.new(hash)
17
- end
18
- end
19
- end
20
- end
Binary file
Binary file
Binary file
@@ -1,198 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8"?>
2
- <Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
- xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData"
4
- xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData"
5
- xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1"
6
- xmlns="http://schemas.dmtf.org/ovf/envelope/1"
7
- xsi:schemaLocation="http://schemas.dmtf.org/ovf/envelope/1 ../dsp8023.xsd">
8
-
9
- <!-- This example reference a local schema file, to validate against online schema use:
10
- xsi:schemaLocation="http://schemas.dmtf.org/ovf/envelope/1 http://schemas.dmtf.org/ovf/envelope/1/dsp8023_1.0.0.xsd"
11
- -->
12
-
13
- <!-- References to all external files -->
14
- <References>
15
- <File ovf:id="lamp" ovf:href="http://example.com/lamp.vmdk" ovf:size="180114671"/>
16
- </References>
17
- <!-- Describes meta-information about all virtual disks in the package -->
18
- <DiskSection>
19
- <Info>List of the virtual disks used in the package</Info>
20
- <Disk ovf:diskId="lamp" ovf:fileRef="lamp" ovf:capacity="4294967296"
21
- ovf:populatedSize="1924967692"
22
- ovf:format="http://www.vmware.com/interfaces/specifications/vmdk.html#streamOptimized"/>
23
- </DiskSection>
24
- <!-- Describes all networks used in the package -->
25
- <NetworkSection>
26
- <Info>Logical networks used in the package</Info>
27
- <Network ovf:name="VM Network">
28
- <Description>The network that the LAMP Service will be available
29
- on</Description>
30
- </Network>
31
- </NetworkSection>
32
- <VirtualSystem ovf:id="MyLampService">
33
- <Info>Single-VM Virtual appliance with LAMP stack</Info>
34
- <Name>LAMP Virtual Appliance</Name>
35
- <!-- Overall information about the product -->
36
- <ProductSection>
37
- <Info>Product information for the service</Info>
38
- <Product>Lamp Service</Product>
39
- <Version>1.0</Version>
40
- <FullVersion>1.0.0</FullVersion>
41
- </ProductSection>
42
- <!-- Linux component configuration parameters -->
43
- <ProductSection ovf:class="org.linuxdist.x">
44
- <Info>Product customization for the installed Linux system</Info>
45
- <Product>Linux Distribution X</Product>
46
- <Version>2.6.3</Version>
47
- <Property ovf:key="hostname" ovf:type="string">
48
- <Description>Specifies the hostname for the appliance</Description>
49
- </Property>
50
- <Property ovf:key="ip" ovf:type="string">
51
- <Description>Specifies the IP address for the appliance</Description>
52
- </Property>
53
- <Property ovf:key="subnet" ovf:type="string">
54
- <Description> Specifies the subnet to use on the deployed network
55
- </Description>
56
- </Property>
57
- <Property ovf:key="gateway" ovf:type="string">
58
- <Description> Specifies the gateway on the deployed network
59
- </Description>
60
- </Property>
61
- <Property ovf:key="dns" ovf:type="string">
62
- <Description> A comma separated list of DNS servers on the deployed
63
- network </Description>
64
- </Property>
65
- <Property ovf:key="netCoreRmemMaxMB" ovf:type="uint16" ovf:value="16"
66
- ovf:userConfigurable="true">
67
- <Description> Specify TCP read max buffer size in mega bytes. Default is
68
- 16. </Description>
69
- </Property>
70
- <Property ovf:key="netCoreWmemMaxMB" ovf:type="uint16" ovf:value="16"
71
- ovf:userConfigurable="true">
72
- <Description> Specify TCP write max buffer size in mega bytes. Default is
73
- 16. </Description>
74
- </Property>
75
- </ProductSection>
76
- <!-- Apache component configuration parameters -->
77
- <ProductSection ovf:class="org.apache.httpd">
78
- <Info>Product customization for the installed Apache Web Server</Info>
79
- <Product>Apache Distribution Y</Product>
80
- <Version>2.6.6</Version>
81
- <Property ovf:key="httpPort" ovf:type="uint16" ovf:value="80"
82
- ovf:userConfigurable="true">
83
- <Description>Port number for HTTP requests</Description>
84
- </Property>
85
- <Property ovf:key="httpsPort" ovf:type="uint16" ovf:value="443"
86
- ovf:userConfigurable="true">
87
- <Description>Port number for HTTPS requests</Description>
88
- </Property>
89
- <Property ovf:key="startThreads" ovf:type="uint16" ovf:value="50"
90
- ovf:userConfigurable="true">
91
- <Description>Number of threads created on startup. </Description>
92
- </Property>
93
- <Property ovf:key="minSpareThreads" ovf:type="uint16" ovf:value="15"
94
- ovf:userConfigurable="true">
95
- <Description> Minimum number of idle threads to handle request spikes.
96
- </Description>
97
- </Property>
98
- <Property ovf:key="maxSpareThreads" ovf:type="uint16" ovf:value="30"
99
- ovf:userConfigurable="true">
100
- <Description>Maximum number of idle threads </Description>
101
- </Property>
102
- <Property ovf:key="maxClients" ovf:type="uint16" ovf:value="256"
103
- ovf:userConfigurable="true">
104
- <Description>Limit the number of simultaneous requests that will be
105
- served. </Description>
106
- </Property>
107
- </ProductSection>
108
- <!-- MySQL component configuration parameters -->
109
- <ProductSection ovf:class="org.mysql.db">
110
- <Info>Product customization for the installed MySql Database Server</Info>
111
- <Product>MySQL Distribution Z</Product>
112
- <Version>5.0</Version>
113
- <Property ovf:key="queryCacheSizeMB" ovf:type="uint16" ovf:value="32"
114
- ovf:userConfigurable="true">
115
- <Description>Buffer to cache repeated queries for faster access (in
116
- MB)</Description>
117
- </Property>
118
- <Property ovf:key="maxConnections" ovf:type="uint16" ovf:value="500"
119
- ovf:userConfigurable="true">
120
- <Description>The number of concurrent connections that can be
121
- served</Description>
122
- </Property>
123
- <Property ovf:key="waitTimeout" ovf:type="uint16" ovf:value="100"
124
- ovf:userConfigurable="true">
125
- <Description>Number of seconds to wait before timing out a connection
126
- </Description>
127
- </Property>
128
- </ProductSection>
129
- <!-- PHP component configuration parameters -->
130
- <ProductSection ovf:class="net.php">
131
- <Info>Product customization for the installed PHP component</Info>
132
- <Product>PHP Distribution U</Product>
133
- <Version>5.0</Version>
134
- <Property ovf:key="sessionTimeout" ovf:type="uint16" ovf:value="5"
135
- ovf:userConfigurable="true">
136
- <Description> How many minutes a session has to be idle before it is
137
- timed out </Description>
138
- </Property>
139
- <Property ovf:key="concurrentSessions" ovf:type="uint16" ovf:value="500"
140
- ovf:userConfigurable="true">
141
- <Description> The number of concurrent sessions that can be served
142
- </Description>
143
- </Property>
144
- <Property ovf:key="memoryLimit" ovf:type="uint16" ovf:value="32"
145
- ovf:userConfigurable="true">
146
- <Description> How much memory in megabytes a script can consume before
147
- being killed </Description>
148
- </Property>
149
- </ProductSection>
150
- <OperatingSystemSection ovf:id="36">
151
- <Info>Guest Operating System</Info>
152
- <Description>Linux 2.6.x</Description>
153
- </OperatingSystemSection>
154
- <VirtualHardwareSection>
155
- <Info>Virtual Hardware Requirements: 256MB, 1 CPU, 1 disk, 1 NIC</Info>
156
- <System>
157
- <vssd:ElementName>Virtual Hardware Family</vssd:ElementName>
158
- <vssd:InstanceID>0</vssd:InstanceID>
159
- <vssd:VirtualSystemType>vmx-04</vssd:VirtualSystemType>
160
- </System>
161
- <Item>
162
- <rasd:Description>Number of virtual CPUs</rasd:Description>
163
- <rasd:ElementName>1 virtual CPU</rasd:ElementName>
164
- <rasd:InstanceID>1</rasd:InstanceID>
165
- <rasd:ResourceType>3</rasd:ResourceType>
166
- <rasd:VirtualQuantity>1</rasd:VirtualQuantity>
167
- </Item>
168
- <Item>
169
- <rasd:AllocationUnits>byte * 2^20</rasd:AllocationUnits>
170
- <rasd:Description>Memory Size</rasd:Description>
171
- <rasd:ElementName>256 MB of memory</rasd:ElementName>
172
- <rasd:InstanceID>2</rasd:InstanceID>
173
- <rasd:ResourceType>4</rasd:ResourceType>
174
- <rasd:VirtualQuantity>256</rasd:VirtualQuantity>
175
- </Item>
176
- <Item>
177
- <rasd:AutomaticAllocation>true</rasd:AutomaticAllocation>
178
- <rasd:Connection>VM Network</rasd:Connection>
179
- <rasd:ElementName>Ethernet adapter on "VM Network"</rasd:ElementName>
180
- <rasd:InstanceID>3</rasd:InstanceID>
181
- <rasd:ResourceType>10</rasd:ResourceType>
182
- </Item>
183
- <Item>
184
- <rasd:ElementName>SCSI Controller 0 - LSI Logic</rasd:ElementName>
185
- <rasd:InstanceID>4</rasd:InstanceID>
186
- <rasd:ResourceSubType>LsiLogic</rasd:ResourceSubType>
187
- <rasd:ResourceType>6</rasd:ResourceType>
188
- </Item>
189
- <Item>
190
- <rasd:ElementName>Harddisk 1</rasd:ElementName>
191
- <rasd:HostResource>ovf:/disk/lamp</rasd:HostResource>
192
- <rasd:InstanceID>5</rasd:InstanceID>
193
- <rasd:Parent>4</rasd:Parent>
194
- <rasd:ResourceType>17</rasd:ResourceType>
195
- </Item>
196
- </VirtualHardwareSection>
197
- </VirtualSystem>
198
- </Envelope>
@@ -1,352 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <occi:extension xmlns:occi="http://schemas.ogf.org/occi"
3
- xmlns:xsd="http://www.w3.org/2001/XMLSchema"
4
- scheme="http://schemas.ogf.org/occi/infrastructure" name="infrastructure" >
5
- <!--
6
- Compute Resource
7
- -->
8
- <occi:kind term="compute" title="Compute Resource" >
9
- <xsd:annotation>
10
- <xsd:documentation xml:lang="en" >Information processing resources.</xsd:documentation>
11
- </xsd:annotation>
12
- <occi:related scheme="http://schemas.ogf.org/occi/core" term="resource" />
13
- <occi:attribute name="occi.compute.architecture" mutable="true" >
14
- <xsd:annotation>
15
- <xsd:documentation xml:lang="en" >CPU architecture of the instance</xsd:documentation>
16
- </xsd:annotation>
17
- <xsd:simpleType>
18
- <xsd:restriction base="xsd:string" >
19
- <xsd:enumeration name="x86" />
20
- <xsd:enumeration name="x64" />
21
- </xsd:restriction>
22
- </xsd:simpleType>
23
- </occi:attribute>
24
- <occi:attribute name="occi.compute.cores" type="xsd:integer" >
25
- <xsd:annotation>
26
- <xsd:documentation xml:lang="en" >Number of CPU cores assigned to the instance</xsd:documentation>
27
- </xsd:annotation>
28
- </occi:attribute>
29
- <occi:attribute name="occi.compute.hostname" type="xsd:string" >
30
- <xsd:annotation>
31
- <xsd:documentation xml:lang="en" >Fully qualified DNS hostname for the instance</xsd:documentation>
32
- </xsd:annotation>
33
- </occi:attribute>
34
- <occi:attribute name="occi.compute.speed" type="xsd:float" >
35
- <xsd:annotation>
36
- <xsd:documentation xml:lang="en" >CPU clock frequency (speed) in gigahertz</xsd:documentation>
37
- </xsd:annotation>
38
- </occi:attribute>
39
- <occi:attribute name="occi.compute.memory" type="xsd:float" >
40
- <xsd:annotation>
41
- <xsd:documentation xml:lang="en" >Maximum RAM in gigabytes allocated to the instance</xsd:documentation>
42
- </xsd:annotation>
43
- </occi:attribute>
44
- <occi:attribute name="occi.compute.state" mutable="false" use="required" >
45
- <xsd:annotation>
46
- <xsd:documentation xml:lang="en" >Current state of the instance</xsd:documentation>
47
- </xsd:annotation>
48
- <xsd:simpleType>
49
- <xsd:restriction base="xsd:string" >
50
- <xsd:enumeration name="active" />
51
- <xsd:enumeration name="inactive" />
52
- </xsd:restriction>
53
- </xsd:simpleType>
54
- </occi:attribute>
55
- <occi:action scheme="./compute/action" term="start" />
56
- <occi:action scheme="./compute/action" term="stop" >
57
- <occi:attribute name="method" >
58
- <xsd:simpleType>
59
- <xsd:restriction base="xsd:string" >
60
- <xsd:enumeration name="graceful" />
61
- <xsd:enumeration name="acpioff" />
62
- <xsd:enumeration name="poweroff" />
63
- </xsd:restriction>
64
- </xsd:simpleType>
65
- </occi:attribute>
66
- </occi:action>
67
- <occi:action scheme="./compute/action" term="restart" >
68
- <occi:attribute name="method" >
69
- <xsd:simpleType>
70
- <xsd:restriction base="xsd:string" >
71
- <xsd:enumeration name="graceful" />
72
- <xsd:enumeration name="warm" />
73
- <xsd:enumeration name="cold" />
74
- </xsd:restriction>
75
- </xsd:simpleType>
76
- </occi:attribute>
77
- </occi:action>
78
- <occi:action scheme="./compute/action" term="suspend" >
79
- <occi:attribute name="method" >
80
- <xsd:simpleType>
81
- <xsd:restriction base="xsd:string" >
82
- <xsd:enumeration name="hibernate" />
83
- <xsd:enumeration name="suspend" />
84
- </xsd:restriction>
85
- </xsd:simpleType>
86
- </occi:attribute>
87
- </occi:action>
88
- </occi:kind>
89
- <!--
90
- Storage Resource
91
- -->
92
- <occi:kind term="storage" title="Storage Resource" >
93
- <xsd:annotation>
94
- <xsd:documentation xml:lang="en" >Information recording resources.</xsd:documentation>
95
- </xsd:annotation>
96
- <occi:related scheme="http://schemas.ogf.org/occi/core" term="resource" />
97
- <occi:attribute name="occi.storage.size" type="xsd:float" use="required" >
98
- <xsd:annotation>
99
- <xsd:documentation xml:lang="en" >Storage size in gigabytes of the instance.</xsd:documentation>
100
- </xsd:annotation>
101
- </occi:attribute>
102
- <occi:attribute name="occi.storage.state" mutable="false" use="required" >
103
- <xsd:annotation>
104
- <xsd:documentation xml:lang="en" >Current status of the instance</xsd:documentation>
105
- </xsd:annotation>
106
- <xsd:simpleType>
107
- <xsd:restriction base="xsd:string" >
108
- <xsd:enumeration name="online" />
109
- <xsd:enumeration name="offline" />
110
- <xsd:enumeration name="backup" />
111
- <xsd:enumeration name="snapshot" />
112
- <xsd:enumeration name="resize" />
113
- <xsd:enumeration name="degraded" />
114
- </xsd:restriction>
115
- </xsd:simpleType>
116
- </occi:attribute>
117
- <occi:action scheme="./storage/action" term="online" />
118
- <occi:action scheme="./storage/action" term="offline" />
119
- <occi:action scheme="./storage/action" term="backup" />
120
- <occi:action scheme="./storage/action" term="snapshot" />
121
- <occi:action scheme="./storage/action" term="resize" >
122
- <occi:attribute name="size" type="xsd:float" >
123
- <xsd:annotation>
124
- <xsd:documentation xml:lang="en" >gigabytes</xsd:documentation>
125
- </xsd:annotation>
126
- </occi:attribute>
127
- </occi:action>
128
- </occi:kind>
129
- <!--
130
- StorageLink Link
131
- -->
132
- <occi:kind term="storagelink" title="StorageLink Link" >
133
- <occi:related scheme="http://schemas.ogf.org/occi/core" term="link" />
134
- <occi:attribute name="occi.storagelink.deviceid" use="required" type="xsd:string" >
135
- <xsd:annotation>
136
- <xsd:documentation xml:lang="en" >
137
- Device identifier as defined by the OCCI service provider.
138
- </xsd:documentation>
139
- </xsd:annotation>
140
- </occi:attribute>
141
- <occi:attribute name="occi.storagelink.mountpoint" type="xsd:string" >
142
- <xsd:annotation>
143
- <xsd:documentation xml:lang="en" >
144
- Point to where the storage is mounted in the guest OS.
145
- </xsd:documentation>
146
- </xsd:annotation>
147
- </occi:attribute>
148
- <occi:attribute name="occi.storagelink.state" use="required" mutable="false" >
149
- <xsd:annotation>
150
- <xsd:documentation xml:lang="en" >
151
- Current status of the instance.
152
- </xsd:documentation>
153
- </xsd:annotation>
154
- <xsd:simpleType>
155
- <xsd:restriction base="xsd:string" >
156
- <xsd:enumeration name="active" />
157
- <xsd:enumeration name="inactive" />
158
- </xsd:restriction>
159
- </xsd:simpleType>
160
- </occi:attribute>
161
- </occi:kind>
162
- <!--
163
- Network
164
- -->
165
- <occi:kind term="network" title="Network Resource" >
166
- <xsd:annotation>
167
- <xsd:documentation xml:lang="en" >
168
- Interconnection resoruce and represents a L2 networking
169
- resource. This is complimented by the IPNetwork Mixin.
170
- </xsd:documentation>
171
- </xsd:annotation>
172
- <occi:related scheme="http://schemas.ogf.org/occi/core" term="resource" />
173
- <occi:attribute name="occi.network.vlan" mutable="true" >
174
- <xsd:simpleType>
175
- <xsd:restriction base="xsd:integer" >
176
- <xsd:minInclusive value="0" />
177
- <xsd:maxInclusive value="4095" />
178
- </xsd:restriction>
179
- </xsd:simpleType>
180
- <xsd:annotation>
181
- <xsd:documentation xml:lang="en" >802.1q VLAN identifier (e.g 343)</xsd:documentation>
182
- </xsd:annotation>
183
- </occi:attribute>
184
- <occi:attribute name="occi.network.label" mutable="true" type="xsd:string" >
185
- <xsd:annotation>
186
- <xsd:documentation xml:lang="en" >Tag based VLANs (e.g. external-dmz)</xsd:documentation>
187
- </xsd:annotation>
188
- </occi:attribute>
189
- <occi:attribute name="occi.network.state" mutable="false" use="required" >
190
- <xsd:annotation>
191
- <xsd:documentation xml:lang="en" >Current state of the instance</xsd:documentation>
192
- </xsd:annotation>
193
- <xsd:simpleType>
194
- <xsd:restriction base="xsd:string" >
195
- <xsd:enumeration name="active" />
196
- <xsd:enumeration name="inactive" />
197
- </xsd:restriction>
198
- </xsd:simpleType>
199
- </occi:attribute>
200
- <occi:action scheme="./network/action" term="up" />
201
- <occi:action scheme="./network/action" term="down" />
202
- </occi:kind>
203
- <!--
204
- NetworkInterface Link
205
- -->
206
- <occi:kind term="networkinterface" title="NetworkInterface Link" >
207
- <occi:related scheme="http://schemas.ogf.org/occi/core" term="link" />
208
- <occi:attribute name="occi.networkinterface.interface" mutable="false" type="xsd:string" use="required" >
209
- <xsd:annotation>
210
- <xsd:documentation xml:lang="en" >
211
- Identifier that relates the link to the link's device
212
- interface.
213
- </xsd:documentation>
214
- </xsd:annotation>
215
- </occi:attribute>
216
- <occi:attribute name="occi.networkinterface.mac" type="occi:mac802" use="required" >
217
- <xsd:annotation>
218
- <xsd:documentation xml:lang="en" >
219
- MAC address associated with the link's device interface.
220
- </xsd:documentation>
221
- </xsd:annotation>
222
- </occi:attribute>
223
- <occi:attribute name="occi.networkinterface.state" mutable="false" use="required" >
224
- <xsd:annotation>
225
- <xsd:documentation xml:lang="en" >Current status of the instance.</xsd:documentation>
226
- </xsd:annotation>
227
- <xsd:simpleType>
228
- <xsd:restriction base="xsd:string" >
229
- <xsd:enumeration name="active" />
230
- <xsd:enumeration name="inactive" />
231
- </xsd:restriction>
232
- </xsd:simpleType>
233
- </occi:attribute>
234
- </occi:kind>
235
- <!--
236
- IP Networking Mixin
237
- -->
238
- <occi:mixin term="ipnetwork" title="IP Networking Mixin" scheme="./network" >
239
- <xsd:annotation>
240
- <xsd:documentation xml:lang="en" >
241
- IPNetworking Mixin is defined in order to support L3/L4 capabilities
242
- </xsd:documentation>
243
- </xsd:annotation>
244
- <occi:attribute name="occi.network.address" type="occi:cidr" >
245
- <xsd:annotation>
246
- <xsd:documentation xml:lang="en" >
247
- Internet Protocol (IP) network address (e.g. 192.168.0.1/24, fc00::/7)
248
- </xsd:documentation>
249
- </xsd:annotation>
250
- </occi:attribute>
251
- <occi:attribute name="occi.network.gateway" type="occi:ip" >
252
- <xsd:annotation>
253
- <xsd:documentation xml:lang="en" >
254
- Internet Protocol (IP) network address (e.g. 192.168.0.1, fc00::/7)
255
- </xsd:documentation>
256
- </xsd:annotation>
257
- </occi:attribute>
258
- <occi:attribute name="occi.network.allocation" use="required" >
259
- <xsd:annotation>
260
- <xsd:documentation xml:lang="en" >
261
- Address allocation mechanism, 'dynamic' e.g. uses the
262
- dynamic host configuration protocol, 'static' e.g. uses
263
- user supplied static network configurations.
264
- </xsd:documentation>
265
- </xsd:annotation>
266
- <xsd:simpleType>
267
- <xsd:restriction base="xsd:string" >
268
- <xsd:enumeration name="dynamic" />
269
- <xsd:enumeration name="static" />
270
- </xsd:restriction>
271
- </xsd:simpleType>
272
- </occi:attribute>
273
- </occi:mixin>
274
- <!--
275
- IP NetworkInterface Mixin
276
- -->
277
- <occi:mixin term="ipnetworkinterface" title="IP Network Interface Mixin" scheme="./networkinterface" >
278
- <xsd:annotation>
279
- <xsd:documentation xml:lang="en" >
280
- IPNetworkInterface mixin is described in order for
281
- NetworkInterface to support L3/L4 capabilities (e.g. IP, TCP
282
- etc.).
283
- </xsd:documentation>
284
- </xsd:annotation>
285
- <occi:attribute name="occi.networkinterface.address" type="occi:cidr" use="required" >
286
- <xsd:annotation>
287
- <xsd:documentation xml:lang="en" >
288
- Internet Procotol (IP) network address (e.g. 192.168.0.1/24,
289
- fc00::/7) of the link.
290
- </xsd:documentation>
291
- </xsd:annotation>
292
- </occi:attribute>
293
- <occi:attribute name="occi.networkinterface.gateway" type="occi:ip">
294
- <xsd:annotation>
295
- <xsd:documentation xml:lang="en" >
296
- Internet Protocol (IP) network address (e.g. 192.168.0.1/24, fc00::/7)
297
- </xsd:documentation>
298
- </xsd:annotation>
299
- </occi:attribute>
300
- <occi:attribute name="occi.networkinterface.allocation" use="required" >
301
- <xsd:annotation>
302
- <xsd:documentation xml:lang="en" >
303
- Address mechanism, 'dynamic' e.g. uses the
304
- dynamic host configuration protocol, 'static' e.g. uses
305
- user supplied static network configurations.
306
- </xsd:documentation>
307
- </xsd:annotation>
308
- <xsd:simpleType>
309
- <xsd:restriction base="xsd:string" >
310
- <xsd:enumeration name="dynamic" />
311
- <xsd:enumeration name="static" />
312
- </xsd:restriction>
313
- </xsd:simpleType>
314
- </occi:attribute>
315
- </occi:mixin>
316
- <!--
317
- OS template
318
- -->
319
- <occi:mixin term="os_tpl" title="OS Template" />
320
- <!--
321
- Resource template
322
- -->
323
- <occi:mixin term="resource_tpl" title="Resoruce template" />
324
- <!--
325
- Attribute Types
326
- -->
327
- <xsd:simpleType name="ip">
328
- <xsd:annotation>
329
- <xsd:documentation xml:lang="en">
330
- The datatype denoting a string corresponding to a IPv4 or IPv6 address.
331
- </xsd:documentation>
332
- </xsd:annotation>
333
- <xsd:restriction base="xsd:string">
334
- <xsd:pattern value="(((([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]))|((([\da-fA-F]{1,4})|(\:))\:){7}(([\da-fA-F]{1,4})|(\:))))"/>
335
- </xsd:restriction>
336
- </xsd:simpleType>
337
- <xsd:simpleType name="cidr" >
338
- <xsd:annotation>
339
- <xsd:documentation xml:lang="en">
340
- The datatype denoting a string corresponding to a CIDR block.
341
- </xsd:documentation>
342
- </xsd:annotation>
343
- <xsd:restriction base="xsd:string">
344
- <xsd:pattern value="(((([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\.){3}([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5])\/(\d|[1-2]\d|3[0-2]))|((([\da-fA-F]{0,4})|(\:))\:){7}(([\da-fA-F]{0,4})|(\:)))\/([1-9]?\d|1[01]\d|12[0-8])))"/>
345
- </xsd:restriction>
346
- </xsd:simpleType>
347
- <xsd:simpleType name="mac802" >
348
- <xsd:restriction base="xsd:string" >
349
- <xsd:pattern value="[\da-fA-F]{2}(\:[\da-fA-F]){5}" />
350
- </xsd:restriction>
351
- </xsd:simpleType>
352
- </occi:extension>