1<?xml version="1.0" encoding="UTF-8"?> 2 3<!-- 4 5 CDDL HEADER START 6 7 The contents of this file are subject to the terms of the 8 Common Development and Distribution License (the "License"). 9 You may not use this file except in compliance with the License. 10 11 You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 12 or http://www.opensolaris.org/os/licensing. 13 See the License for the specific language governing permissions 14 and limitations under the License. 15 16 When distributing Covered Code, include this CDDL HEADER in each 17 file and include the License file at usr/src/OPENSOLARIS.LICENSE. 18 If applicable, add the following below this CDDL HEADER, with the 19 fields enclosed by brackets "[]" replaced with your own identifying 20 information: Portions Copyright [yyyy] [name of copyright owner] 21 22 CDDL HEADER END 23 24 Copyright 2008 Sun Microsystems, Inc. All rights reserved. 25 Use is subject to license terms. 26 27 28--> 29 30<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 31 targetNamespace="http://www.sun.com/schema/isnsmanagement" 32 xmlns:isns="http://www.sun.com/schema/isnsmanagement" 33 elementFormDefault="qualified"> 34 35 <!-- 36 Object type names that are asspcoated with isns Object, 37 Discovery Domain, Discovery Domain Set, Node. 38 --> 39 <xsd:element name="isnsObjectType"> 40 <xsd:simpleType> 41 <xsd:restriction base="xsd:string"> 42 <xsd:enumeration value="DiscoveryDomainSet"></xsd:enumeration> 43 <xsd:enumeration value="DiscoveryDomain"></xsd:enumeration> 44 <xsd:enumeration value="Node"></xsd:enumeration> 45 </xsd:restriction> 46 </xsd:simpleType> 47 </xsd:element> 48 49 <!-- 50 Association type name for Discovery Domain membership and Discovery 51 Domain Set membership. 52 --> 53 <xsd:element name="AssociationType"> 54 <xsd:simpleType> 55 <xsd:restriction base="xsd:string"> 56 <xsd:enumeration value="DiscoveryDomainMember"/> 57 <xsd:enumeration value="DiscoveryDomainSetMember"/> 58 </xsd:restriction> 59 </xsd:simpleType> 60 </xsd:element> 61 62 <!-- 63 Discovery Domain object. 64 Attribute name represent DD Symbolic Name defined in the iSNS spec. 65 Group isnsDDAttrGroup represents other attrtibutes defined in the 66 iSNS spec. 67 Note that the existence of isnsDDAttrGroup is made as optional. 68 --> 69 <xsd:element name="DiscoveryDomain"> 70 <xsd:complexType> 71 <xsd:group ref="isns:isnsDDAttrGroup" minOccurs="0"/> 72 <xsd:attribute name="name" type="xsd:string" use="required"/> 73 <xsd:attribute name="id" type="xsd:positiveInteger" use="optional"/> 74 <xsd:attribute name="nodeCount" type="xsd:nonNegativeInteger" use="optional"/> 75 </xsd:complexType> 76 </xsd:element> 77 <xsd:group name="isnsDDAttrGroup"> 78 <xsd:sequence> 79 <xsd:element name="BootList_Enabled" type="xsd:boolean"/> 80 </xsd:sequence> 81 </xsd:group> 82 83 <!-- 84 Discovery Domain Set object. 85 Attribute name represent DD Set Symbolic Name defined in the iSNS spec. 86 Group isnsDDsetAttrGroup represents other attrtibutes defined in the 87 iSNS spec. 88 Note that the existence of isnsDDsetAttrGroup is made as optional. 89 --> 90 <xsd:element name="DiscoveryDomainSet"> 91 <xsd:complexType> 92 <xsd:group ref="isns:isnsDDsetAttrGroup" minOccurs="0"/> 93 <xsd:attribute name="name" type="xsd:string" use="required"/> 94 <xsd:attribute name="id" type="xsd:positiveInteger" use="optional"/> 95 </xsd:complexType> 96 </xsd:element> 97 <xsd:group name="isnsDDsetAttrGroup"> 98 <xsd:sequence> 99 <xsd:element name="Enabled" type="xsd:boolean"/> 100 </xsd:sequence> 101 </xsd:group> 102 103 <!-- 104 isnsServer object for administratively configurable setting. 105 --> 106 <xsd:element name="isnsServer"> 107 <xsd:complexType> 108 <xsd:group ref="isns:isnsServerAttrGroup" minOccurs="0"/> 109 </xsd:complexType> 110 </xsd:element> 111 112 <xsd:group name="isnsServerAttrGroup"> 113 <xsd:sequence> 114 <xsd:element name="datastoreLocation" type="xsd:string"></xsd:element> 115 <xsd:element name="esiRetryThreshold" type="xsd:nonNegativeInteger"></xsd:element> 116 <xsd:element name="managementSCNEnabled" type="xsd:boolean"></xsd:element> 117 <xsd:element name="controlNodeName" type="xsd:string" nillable="true"></xsd:element> 118 </xsd:sequence> 119 </xsd:group> 120 121 <!-- 122 Node object. Attribute name represent iSCSI name for a node 123 defined in the iSNS spec. 124 Group isnsNodeAttrGroup represents other attrtibutes including 125 Network Entity, Portal and Portal Group Tag. 126 Note that the existence of isnsNodeAttrGroup is made as optional. 127 --> 128 <xsd:element name="Node"> 129 <xsd:complexType> 130 <xsd:group ref="isns:isnsNodeAttrGroup" minOccurs="0"/> 131 <xsd:attributeGroup ref="isns:nodeAttrs"/> 132 </xsd:complexType> 133 </xsd:element> 134 135 <!-- 136 Attributes for Node object. 137 name and nodeType are specified. 138 Both attributes are required. 139 --> 140 <xsd:attributeGroup name="nodeAttrs"> 141 <xsd:attribute name="name" type="xsd:string" use="required"/> 142 <xsd:attribute name="alias" type="xsd:string"/> 143 <!-- 144 Add support for management clients needing XML documents 145 with properties representing whether or not the given node is 146 assigned or not, is registered or not, and a status timestamp stating 147 when the last time this information was determined. 148 149 @todo Since these properties are client-specific, we want to factor 150 them out into a separate schema that includes and extends this one. 151 Since this task has proven difficult in the short term, we defer this 152 until a future product cycle. 153 --> 154 <xsd:attribute name="assigned" type="xsd:boolean" use="optional"/> 155 <xsd:attribute name="registered" type="xsd:boolean" use="optional"/> 156 <xsd:attribute name="timestamp" type="xsd:string" use="optional"/> 157 <xsd:attribute name="type"> 158 <xsd:simpleType> 159 <xsd:restriction base="xsd:string"> 160 <xsd:enumeration value="Target"/> 161 <xsd:enumeration value="Initiator"/> 162 <xsd:enumeration value="Control"/> 163 <xsd:enumeration value="Unknown"/> 164 <xsd:enumeration value="Control/Target"/> 165 <xsd:enumeration value="Control/Initiator"/> 166 </xsd:restriction> 167 </xsd:simpleType> 168 </xsd:attribute> 169 </xsd:attributeGroup> 170 171 <!-- 172 Child elements for Node object. 173 --> 174 <xsd:group name="isnsNodeAttrGroup"> 175 <xsd:sequence> 176 <xsd:element name="SCN_Subscription" minOccurs="0" maxOccurs="8"> 177 <xsd:simpleType> 178 <xsd:restriction base="xsd:string"> 179 <xsd:enumeration value="Initiator and Self information only"/> 180 <xsd:enumeration value="Target and Self information only"/> 181 <xsd:enumeration value="Management Registration/SCN"/> 182 <xsd:enumeration value="Object Removed"/> 183 <xsd:enumeration value="Object Added"/> 184 <xsd:enumeration value="Object Updated"/> 185 <xsd:enumeration value="DD/DD-Set Member Removed"/> 186 <xsd:enumeration value="DD/DD-Set Member Added"/> 187 </xsd:restriction> 188 </xsd:simpleType> 189 </xsd:element> 190 <!-- 191 Network Entity attributes 192 --> 193 <xsd:element name="Network_Entity"> 194 <xsd:complexType> 195 <xsd:sequence> 196 <xsd:element name="Entity_ID"> 197 <xsd:simpleType> 198 <xsd:restriction base="xsd:string"> 199 <xsd:minLength value="4"/> 200 <xsd:maxLength value="256"/> 201 </xsd:restriction> 202 </xsd:simpleType> 203 </xsd:element> 204 <xsd:element name="Entity_Protocol" type="xsd:integer" minOccurs="0"></xsd:element> 205 <xsd:element name="Management_IP_Addr" minOccurs="0"> 206 <xsd:simpleType> 207 <xsd:restriction base="xsd:string"> 208 <xsd:maxLength value="46"/> 209 </xsd:restriction> 210 </xsd:simpleType> 211 </xsd:element> 212 <xsd:element name="Entity_Reg_Timestamp" type="xsd:unsignedLong" minOccurs="0"/> 213 <xsd:element name="Protocol_Version_Range" minOccurs="0"> 214 <xsd:complexType> 215 <xsd:sequence> 216 <xsd:element name="minVersion" type="xsd:unsignedShort"/> 217 <xsd:element name="maxVersion" type="xsd:unsignedShort"/> 218 </xsd:sequence> 219 </xsd:complexType> 220 </xsd:element> 221 <xsd:element name="Registration_Period" type="xsd:unsignedInt" minOccurs="0"/> 222 </xsd:sequence> 223 </xsd:complexType> 224 </xsd:element> 225 226 <!-- 227 Portal attributes including Portal Group Tag 228 --> 229 230 <xsd:element name="Portal" maxOccurs="unbounded" > 231 <xsd:complexType> 232 <xsd:sequence> 233 <xsd:element name="IP_Addr"> 234 <xsd:simpleType> 235 <xsd:restriction base="xsd:string"> 236 <xsd:maxLength value="46"/> 237 </xsd:restriction> 238 </xsd:simpleType> 239 </xsd:element> 240 <xsd:element name="UDP_TCP_port"> 241 <xsd:complexType> 242 <xsd:sequence> 243 <xsd:element name="Port_Type"> 244 <xsd:simpleType> 245 <xsd:restriction base="xsd:string"> 246 <xsd:enumeration value="TCP"/> 247 <xsd:enumeration value="UDP"/> 248 </xsd:restriction> 249 </xsd:simpleType> 250 </xsd:element> 251 <xsd:element name="Port_Number" type="xsd:unsignedShort"/> 252 </xsd:sequence> 253 </xsd:complexType> 254 </xsd:element> 255 <xsd:element name="Group_Tag"> 256 <xsd:simpleType> 257 <xsd:restriction base="xsd:nonNegativeInteger"> 258 <xsd:maxInclusive value="65535"/> 259 </xsd:restriction> 260 </xsd:simpleType> 261 </xsd:element> 262 <xsd:element name="Symbolic_Name" minOccurs="0"> 263 <xsd:simpleType> 264 <xsd:restriction base="xsd:string"> 265 <xsd:maxLength value="256"/> 266 </xsd:restriction> 267 </xsd:simpleType> 268 </xsd:element> 269 <xsd:element name="ESI_Interval" type="xsd:positiveInteger" minOccurs="0"/> 270 <xsd:element name="ESI_Port" minOccurs="0"> 271 <xsd:complexType> 272 <xsd:sequence> 273 <xsd:element name="Port_Type"> 274 <xsd:simpleType> 275 <xsd:restriction base="xsd:string"> 276 <xsd:enumeration value="TCP"/> 277 <xsd:enumeration value="UDP"/> 278 </xsd:restriction> 279 </xsd:simpleType> 280 </xsd:element> 281 <xsd:element name="Port_Number" type="xsd:unsignedShort"/> 282 </xsd:sequence> 283 </xsd:complexType> 284 </xsd:element> 285 <xsd:element name="SCN_Port" minOccurs="0"> 286 <xsd:complexType> 287 <xsd:sequence> 288 <xsd:element name="Port_Type"> 289 <xsd:simpleType> 290 <xsd:restriction base="xsd:string"> 291 <xsd:enumeration value="TCP"/> 292 <xsd:enumeration value="UDP"/> 293 </xsd:restriction> 294 </xsd:simpleType> 295 </xsd:element> 296 <xsd:element name="Port_Number" type="xsd:unsignedShort"/> 297 </xsd:sequence> 298 </xsd:complexType> 299 </xsd:element> 300 </xsd:sequence> 301 </xsd:complexType> 302 </xsd:element> 303 </xsd:sequence> 304 </xsd:group> 305 306 <!-- 307 Discovery Domain Membership Association. 308 Attribute DDName represents Discovery Domain name and NodeName 309 a node name to indicate the association pair. 310 Note that the element has only attributes. 311 --> 312 <xsd:element name="DiscoveryDomainMember"> 313 <xsd:complexType> 314 <xsd:attribute name="DDName" type="xsd:string" use="required"/> 315 <xsd:attribute name="NodeName" type="xsd:string" use="required"/> 316 </xsd:complexType> 317 </xsd:element> 318 319 <!-- 320 Discovery Domain Set Membership Association. 321 Attribute DDName represents Discovery Domain name and DDsetName 322 Discovery Domain Set name to indicate the association pair. 323 Note that the element has only attributes. 324 --> 325 <xsd:element name="DiscoveryDomainSetMember"> 326 <xsd:complexType> 327 <xsd:attribute name="DDName" type="xsd:string" use="required"/> 328 <xsd:attribute name="DDsetName" type="xsd:string" use="required"/> 329 </xsd:complexType> 330 </xsd:element> 331 <xsd:element name="Association"> 332 <xsd:complexType> 333 <xsd:choice> 334 <xsd:element ref="isns:DiscoveryDomainMember"/> 335 <xsd:element ref="isns:DiscoveryDomainSetMember"/> 336 </xsd:choice> 337 </xsd:complexType> 338 </xsd:element> 339 340 <!-- 341 Super element for iSNS object, Discovery Domain, Disocvery Domain 342 set and Node. 343 --> 344 <xsd:element name="isnsObject"> 345 <xsd:complexType> 346 <xsd:choice> 347 <xsd:element ref="isns:Node"/> 348 <xsd:element ref="isns:DiscoveryDomain"/> 349 <xsd:element ref="isns:DiscoveryDomainSet"/> 350 </xsd:choice> 351 </xsd:complexType> 352 </xsd:element> 353 354 355 <!-- 356 Result element represent the response value for an isns request 357 operation including status and error information. 358 --> 359 <xsd:element name="result"> 360 <xsd:complexType> 361 <xsd:sequence> 362 <xsd:element name="status" type="xsd:integer" minOccurs="1"/> 363 <xsd:element name="message" minOccurs="0" nillable="false"> 364 <xsd:simpleType> 365 <xsd:restriction base="xsd:string"> 366 <xsd:whiteSpace value="preserve"/> 367 </xsd:restriction> 368 </xsd:simpleType> 369 </xsd:element> 370 </xsd:sequence> 371 </xsd:complexType> 372 </xsd:element> 373 374 <!-- 375 Request operations for iSNS management applicatioin. 376 Any of request can be included multiple times. 377 --> 378 <xsd:element name="isnsRequest"> 379 <xsd:complexType> 380 <xsd:sequence> 381 <xsd:element name="description" type="xsd:string" minOccurs="0"/> 382 <xsd:choice maxOccurs="1"> 383 384 <!-- 385 get operation returns details of a given iSNS object instance. 386 387 input: an object instance. Specifying only the name 388 attribute of an isnsObject insance will be sufficient 389 for the server to serve the request. 390 Ex) <get 391 output: an object instance with fully populated 392 isns{Node|Discveroy_Domain|Discovery_Domain_Set]AttrGroup 393 or error info when there is failure. 394 --> 395 <xsd:element name="get"> 396 <xsd:complexType> 397 <xsd:choice> 398 <xsd:element ref="isns:isnsObject" maxOccurs="unbounded"/> 399 <xsd:element ref="isns:isnsServer" maxOccurs="1"/> 400 </xsd:choice> 401 </xsd:complexType> 402 </xsd:element> 403 404 <!-- 405 getAssociated operation returns a list of object 406 instances that are asscoiated with the given Association 407 type name and a given object instance. 408 409 input: an Association type name and an object instance. 410 Specifying the name attribute is sufficient for 411 the request. 412 Ex) <get 413 output: a list of object instances which is assciated with 414 the given object instance through the given association. 415 416 When there is failure for the request, error info will 417 be returned. 418 --> 419 <xsd:element name="getAssociated"> 420 <xsd:complexType> 421 <xsd:sequence maxOccurs="unbounded"> 422 <xsd:element ref="isns:AssociationType"/> 423 <xsd:element ref="isns:isnsObject"/> 424 </xsd:sequence> 425 </xsd:complexType> 426 </xsd:element> 427 428 <!-- 429 create operation either creates a new object instance 430 or modify an object instance if the name of the given object 431 instance already exists. 432 433 input: an object instance with fully populated 434 isns{Node|Discveroy_Domain|Discovery_Domain_Set]AttrGroup 435 436 output: status 437 --> 438 <xsd:element name="createModify"> 439 <xsd:complexType> 440 <xsd:choice> 441 <xsd:element ref="isns:DiscoveryDomainMember" maxOccurs="unbounded" /> 442 <xsd:element ref="isns:DiscoveryDomain" maxOccurs="unbounded"/> 443 <xsd:element ref="isns:DiscoveryDomainSetMember" maxOccurs="unbounded"/> 444 <xsd:element ref="isns:DiscoveryDomainSet" maxOccurs="unbounded"/> 445 </xsd:choice> 446 </xsd:complexType> 447 </xsd:element> 448 449 450 <!-- 451 delete operation delete the given object instance. 452 453 input: an object instance. Specifying only the name 454 attribute of an isnsObject insance will be sufficient 455 for the server to serve the request. 456 Ex) <get 457 output: status 458 --> 459 <xsd:element name="delete"> 460 <xsd:complexType> 461 <xsd:choice> 462 <xsd:element ref="isns:DiscoveryDomain" maxOccurs="unbounded"/> 463 <xsd:element ref="isns:DiscoveryDomainSet" maxOccurs="unbounded"/> 464 <xsd:element ref="isns:DiscoveryDomainMember" maxOccurs="unbounded"/> 465 <xsd:element ref="isns:DiscoveryDomainSetMember" maxOccurs="unbounded"/> 466 </xsd:choice> 467 </xsd:complexType> 468 </xsd:element> 469 470 <!-- 471 enumerate operation returns a list of object instances for the 472 given object type. 473 474 input: an object type name. 475 Ex) <get 476 output: a list of object instances for the given obect type 477 or error info when there is failure. 478 --> 479 <xsd:element name="enumerate"> 480 <xsd:complexType> 481 <xsd:sequence> 482 <xsd:element ref="isns:isnsObjectType"/> 483 </xsd:sequence> 484 </xsd:complexType> 485 </xsd:element> 486 </xsd:choice> 487 </xsd:sequence> 488 </xsd:complexType> 489 </xsd:element> 490 491 492 <!-- 493 isnsResponse returns either object instance information or 494 status. 495 496 When the request is 'get' 497 the response should be fully populated an obejct instance. 498 When the request is createModify or delete 499 the response should be status. 500 When the request is getAssociated or enumerate 501 the response should be a list of an object instance 502 with name attribute set. 503 --> 504 505 <xsd:element name="isnsResponse"> 506 <xsd:complexType> 507 <xsd:sequence> 508 <xsd:element name="description" type="xsd:string" minOccurs="0"/> 509 <xsd:element ref="isns:result" maxOccurs="1" minOccurs="1"/> 510 <xsd:choice minOccurs="0"> 511 <xsd:element ref="isns:isnsObject" maxOccurs="unbounded" minOccurs="0"/> 512 <xsd:element ref="isns:isnsServer" maxOccurs="1" minOccurs="0"/> 513 <xsd:element ref="isns:Association" maxOccurs="unbounded" minOccurs="0"/> 514 </xsd:choice> 515 </xsd:sequence> 516 </xsd:complexType> 517 </xsd:element> 518</xsd:schema> 519