From 5c36602be13420df8ff50d11ca1ea356c785eb28 Mon Sep 17 00:00:00 2001 From: Anne Gentle Date: Wed, 14 Sep 2011 09:01:39 -0500 Subject: [PATCH] Adds Compute 1.0 API doc, 1.1API spec, and related WADLs, plus the API extensions proposal document Change-Id: Ia2d6b32dddadddf4c652c48289d2c98f062bbbc4 --- README | 9 + .../apix-intro-proposal.xml | 473 ++ ...-1service-core-extensions-manybackends.png | Bin 0 -> 16465 bytes ...-1service-core-extensions-manybackends.svg | 559 ++ incubation/openstack-api-extensions/pom.xml | 131 + .../CartoGothic-Std/CartoGothicStd-Bold.ttf | Bin 0 -> 56648 bytes .../CartoGothicStd-BoldItalic.ttf | Bin 0 -> 60188 bytes .../CartoGothic-Std/CartoGothicStd-Book.ttf | Bin 0 -> 56692 bytes .../CartoGothic-Std/CartoGothicStd-Italic.ttf | Bin 0 -> 60440 bytes .../CartoGothic-Std/FontSite License.txt | 21 + .../target/docbkx/fonts/fontconfig.st | 35 + .../target/docbkx/images/callouts/1.svg | 15 + .../target/docbkx/images/callouts/10.svg | 18 + .../target/docbkx/images/callouts/11.svg | 16 + .../target/docbkx/images/callouts/12.svg | 18 + .../target/docbkx/images/callouts/13.svg | 20 + .../target/docbkx/images/callouts/14.svg | 17 + .../target/docbkx/images/callouts/15.svg | 19 + .../target/docbkx/images/callouts/16.svg | 20 + .../target/docbkx/images/callouts/17.svg | 17 + .../target/docbkx/images/callouts/18.svg | 21 + .../target/docbkx/images/callouts/19.svg | 20 + .../target/docbkx/images/callouts/2.svg | 17 + .../target/docbkx/images/callouts/20.svg | 20 + .../target/docbkx/images/callouts/21.svg | 18 + .../target/docbkx/images/callouts/22.svg | 20 + .../target/docbkx/images/callouts/23.svg | 22 + .../target/docbkx/images/callouts/24.svg | 19 + .../target/docbkx/images/callouts/25.svg | 21 + .../target/docbkx/images/callouts/26.svg | 22 + .../target/docbkx/images/callouts/27.svg | 19 + .../target/docbkx/images/callouts/28.svg | 23 + .../target/docbkx/images/callouts/29.svg | 22 + .../target/docbkx/images/callouts/3.svg | 19 + .../target/docbkx/images/callouts/30.svg | 22 + .../target/docbkx/images/callouts/4.svg | 16 + .../target/docbkx/images/callouts/5.svg | 18 + .../target/docbkx/images/callouts/6.svg | 19 + .../target/docbkx/images/callouts/7.svg | 16 + .../target/docbkx/images/callouts/8.svg | 20 + .../target/docbkx/images/callouts/9.svg | 19 + .../target/docbkx/images/caution.svg | 79 + .../target/docbkx/images/cc/by-nc-nd.svg | 243 + .../target/docbkx/images/cc/by-nc-sa.svg | 202 + .../target/docbkx/images/cc/by-nc.svg | 190 + .../target/docbkx/images/cc/by-nd.svg | 203 + .../target/docbkx/images/cc/by-sa.svg | 199 + .../target/docbkx/images/cc/by.svg | 155 + .../target/docbkx/images/cloud/cover.svg | 1650 ++++++ .../docbkx/images/cloud/openstack-cover.st | 5262 +++++++++++++++++ .../docbkx/images/cloud/rackspace-cover.st | 5147 ++++++++++++++++ .../target/docbkx/images/home.svg | 26 + .../target/docbkx/images/important.svg | 79 + .../target/docbkx/images/next.svg | 19 + .../target/docbkx/images/note.svg | 108 + .../target/docbkx/images/prev.svg | 19 + .../target/docbkx/images/tip.svg | 115 + .../target/docbkx/images/up.svg | 19 + .../target/docbkx/images/warning.svg | 75 + .../target/docbkx/pdf/apix-intro-proposal.fo | 281 + .../target/docbkx/pdf/apix-intro-proposal.pdf | Bin 0 -> 103449 bytes .../apix-intro-proposal/common/comments.js | 8 + .../apix-intro-proposal/common/css/ie.css | 13 + .../common/css/positioning-openstack.css | 267 + .../common/css/positioning-rackspace.css | 336 ++ .../common/css/positioning.css | 267 + .../webhelp/apix-intro-proposal/common/ga.js | 18 + .../common/images/admon/caution.png | Bin 0 -> 2958 bytes .../common/images/admon/important.png | Bin 0 -> 2960 bytes .../common/images/admon/note.png | Bin 0 -> 2414 bytes .../common/images/admon/tip.png | Bin 0 -> 3062 bytes .../common/images/admon/warning.png | Bin 0 -> 1926 bytes .../common/images/book_open.png | Bin 0 -> 1211 bytes .../common/images/breadcrumb-arrow-white.png | Bin 0 -> 246 bytes .../common/images/breadcrumb-arrow.png | Bin 0 -> 172 bytes .../common/images/callouts/1.png | Bin 0 -> 396 bytes .../common/images/callouts/10.png | Bin 0 -> 524 bytes .../common/images/callouts/11.png | Bin 0 -> 397 bytes .../common/images/callouts/12.png | Bin 0 -> 517 bytes .../common/images/callouts/13.png | Bin 0 -> 520 bytes .../common/images/callouts/14.png | Bin 0 -> 474 bytes .../common/images/callouts/15.png | Bin 0 -> 522 bytes .../common/images/callouts/16.png | Bin 0 -> 539 bytes .../common/images/callouts/17.png | Bin 0 -> 475 bytes .../common/images/callouts/18.png | Bin 0 -> 542 bytes .../common/images/callouts/19.png | Bin 0 -> 539 bytes .../common/images/callouts/2.png | Bin 0 -> 475 bytes .../common/images/callouts/20.png | Bin 0 -> 588 bytes .../common/images/callouts/21.png | Bin 0 -> 517 bytes .../common/images/callouts/22.png | Bin 0 -> 503 bytes .../common/images/callouts/23.png | Bin 0 -> 589 bytes .../common/images/callouts/24.png | Bin 0 -> 542 bytes .../common/images/callouts/25.png | Bin 0 -> 564 bytes .../common/images/callouts/26.png | Bin 0 -> 596 bytes .../common/images/callouts/27.png | Bin 0 -> 547 bytes .../common/images/callouts/28.png | Bin 0 -> 594 bytes .../common/images/callouts/29.png | Bin 0 -> 594 bytes .../common/images/callouts/3.png | Bin 0 -> 506 bytes .../common/images/callouts/30.png | Bin 0 -> 597 bytes .../common/images/callouts/4.png | Bin 0 -> 425 bytes .../common/images/callouts/5.png | Bin 0 -> 490 bytes .../common/images/callouts/6.png | Bin 0 -> 526 bytes .../common/images/callouts/7.png | Bin 0 -> 437 bytes .../common/images/callouts/8.png | Bin 0 -> 509 bytes .../common/images/callouts/9.png | Bin 0 -> 537 bytes .../common/images/cc/by-nc-nd.png | Bin 0 -> 7424 bytes .../common/images/cc/by-nc-sa.png | Bin 0 -> 7636 bytes .../common/images/cc/by-nc.png | Bin 0 -> 6520 bytes .../common/images/cc/by-nd.png | Bin 0 -> 6203 bytes .../common/images/cc/by-sa.png | Bin 0 -> 6519 bytes .../common/images/cc/by.png | Bin 0 -> 5088 bytes .../common/images/favicon-openstack.ico | Bin 0 -> 1150 bytes .../common/images/favicon-rackspace.ico | Bin 0 -> 806 bytes .../common/images/header-bg.gif | Bin 0 -> 619 bytes .../common/images/highlight-blue.gif | Bin 0 -> 471 bytes .../common/images/highlight-yellow.gif | Bin 0 -> 331 bytes .../common/images/highlighter.png | Bin 0 -> 598 bytes .../common/images/loading.gif | Bin 0 -> 729 bytes .../common/images/logo.png | Bin 0 -> 35061 bytes .../common/images/main_bg_fade.png | Bin 0 -> 28710 bytes .../common/images/next-arrow.png | Bin 0 -> 199 bytes .../common/images/openstack-logo.png | Bin 0 -> 3666 bytes .../common/images/page_white_text.png | Bin 0 -> 406 bytes .../apix-intro-proposal/common/images/pdf.png | Bin 0 -> 3271 bytes .../common/images/previous-arrow.png | Bin 0 -> 198 bytes .../common/images/rackspace-logo.png | Bin 0 -> 2846 bytes .../common/images/search-icon.png | Bin 0 -> 278 bytes .../common/images/showHideTreeIcons.png | Bin 0 -> 726 bytes .../common/images/sidebar.png | Bin 0 -> 177 bytes .../common/images/toc-icon.png | Bin 0 -> 169 bytes .../common/jquery/jquery-1.4.2.min.js | 154 + .../jquery/jquery-ui-1.8.2.custom.min.js | 321 + .../common/jquery/jquery.cookie.js | 93 + .../images/ui-anim_basic_16x16.gif | Bin 0 -> 1553 bytes .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_55_fbec88_40x100.png | Bin 0 -> 182 bytes .../images/ui-bg_glass_75_d0e5f5_1x400.png | Bin 0 -> 162 bytes .../images/ui-bg_glass_85_dfeffc_1x400.png | Bin 0 -> 123 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_gloss-wave_55_5c9ccc_500x100.png | Bin 0 -> 3457 bytes .../ui-bg_inset-hard_100_f5f8f9_1x100.png | Bin 0 -> 104 bytes .../ui-bg_inset-hard_100_fcfdfd_1x100.png | Bin 0 -> 88 bytes .../images/ui-icons_217bc0_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_469bdd_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_6da8d5_256x240.png | Bin 0 -> 5355 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_d8e7f3_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_f9bd01_256x240.png | Bin 0 -> 5355 bytes .../theme-redmond/jquery-ui-1.8.2.custom.css | 430 ++ .../common/jquery/treeview/images/file.gif | Bin 0 -> 1008 bytes .../jquery/treeview/images/folder-closed.gif | Bin 0 -> 631 bytes .../jquery/treeview/images/folder-closed2.gif | Bin 0 -> 105 bytes .../common/jquery/treeview/images/folder.gif | Bin 0 -> 631 bytes .../common/jquery/treeview/images/folder2.gif | Bin 0 -> 106 bytes .../common/jquery/treeview/images/minus.gif | Bin 0 -> 837 bytes .../treeview/images/page_white_text.png | Bin 0 -> 406 bytes .../common/jquery/treeview/images/plus.gif | Bin 0 -> 841 bytes .../treeview/images/treeview-black-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-black.gif | Bin 0 -> 1216 bytes .../treeview/images/treeview-default-line.gif | Bin 0 -> 1993 bytes .../treeview/images/treeview-default.gif | Bin 0 -> 1222 bytes .../images/treeview-famfamfam-line.gif | Bin 0 -> 807 bytes .../treeview/images/treeview-famfamfam.gif | Bin 0 -> 1280 bytes .../treeview/images/treeview-gray-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-gray.gif | Bin 0 -> 1230 bytes .../treeview/images/treeview-red-line.gif | Bin 0 -> 1877 bytes .../jquery/treeview/images/treeview-red.gif | Bin 0 -> 1230 bytes .../jquery/treeview/jquery.treeview.async.js | 72 + .../jquery/treeview/jquery.treeview.css | 90 + .../common/jquery/treeview/jquery.treeview.js | 255 + .../jquery/treeview/jquery.treeview.min.js | 16 + .../jquery/treeview/jquery.treeview.pack.js | 16 + .../common/main-openstack.js | 198 + .../common/main-rackspace.js | 200 + .../apix-intro-proposal/common/main.js | 198 + .../content/Background.html | 48 + .../apix-intro-proposal/content/ch01.html | 54 + .../apix-intro-proposal/content/ch01s01.html | 45 + .../apix-intro-proposal/content/ch01s02.html | 54 + .../apix-intro-proposal/content/ch01s03.html | 50 + .../apix-intro-proposal/content/ch02s01.html | 81 + .../apix-intro-proposal/content/ch02s02.html | 97 + .../apix-intro-proposal/content/ch02s03.html | 146 + .../apix-intro-proposal/content/ch02s04.html | 54 + .../apix-intro-proposal/content/ch02s05.html | 52 + .../apix-intro-proposal/content/index.html | 53 + .../content/search/default.props | 1 + .../content/search/en-us.props | 45 + .../content/search/es-es.props | 179 + .../content/search/htmlFileInfoList.js | 11 + .../content/search/htmlFileList.js | 12 + .../content/search/index-1.js | 161 + .../content/search/index-2.js | 160 + .../content/search/index-3.js | 158 + .../content/search/ja-jp.props | 1 + .../content/search/nwSearchFnt.js | 517 ++ .../content/search/punctuation.props | 31 + .../content/search/stemmers/de_stemmer.js | 247 + .../content/search/stemmers/en_stemmer.js | 187 + .../content/search/stemmers/fr_stemmer.js | 299 + .../webhelp/apix-intro-proposal/favicon.ico | Bin 0 -> 1150 bytes ...-1service-core-extensions-manybackends.png | Bin 0 -> 16465 bytes .../webhelp/apix-intro-proposal/index.html | 14 + openstack-compute-api-1.0/pom.xml | 137 + openstack-compute-api-1.0/src/cs-devguide.xml | 3289 +++++++++++ .../src/figures/Arrow_east.png | Bin 0 -> 454 bytes .../src/figures/Arrow_east.svg | 70 + .../src/figures/Check_mark_23x20_02.png | Bin 0 -> 672 bytes .../src/figures/Check_mark_23x20_02.svg | 60 + .../src/js/shjs/sh_java.js | 337 ++ .../src/js/shjs/sh_javascript.js | 347 ++ .../src/js/shjs/sh_main.js | 538 ++ .../src/js/shjs/sh_xml.js | 115 + .../src/js/trc/schema/controller.js | 184 + .../src/js/trc/schema/layoutManager.js | 137 + .../src/js/trc/schema/sampleManager.js | 342 ++ openstack-compute-api-1.0/src/js/trc/util.js | 564 ++ .../src/samples/addip.json | 5 + .../src/samples/addip.xml | 4 + .../src/samples/address.json | 5 + .../src/samples/address.xml | 2 + .../src/samples/addresses.json | 11 + .../src/samples/addresses.xml | 11 + .../src/samples/backup.json | 7 + .../src/samples/backup.xml | 5 + .../src/samples/backupInProgress.json | 7 + .../src/samples/backupInProgress.xml | 4 + .../src/samples/badmediatype.json | 7 + .../src/samples/badmediatype.xml | 4 + .../src/samples/badmethod.json | 8 + .../src/samples/badmethod.xml | 5 + .../src/samples/badrequest.json | 7 + .../src/samples/badrequest.xml | 4 + .../src/samples/build.json | 7 + .../src/samples/build.xml | 4 + .../src/samples/confirmresize.json | 3 + .../src/samples/confirmresize.xml | 3 + .../src/samples/fault.json | 7 + .../src/samples/fault.xml | 4 + .../src/samples/flavor.json | 8 + .../src/samples/flavor.xml | 5 + .../src/samples/flavors.json | 16 + .../src/samples/flavors.xml | 8 + .../src/samples/image.json | 11 + .../src/samples/image.xml | 8 + .../src/samples/images.json | 20 + .../src/samples/images.xml | 15 + .../src/samples/ipgroup.json | 7 + .../src/samples/ipgroup.xml | 10 + .../src/samples/ipgroup2.json | 6 + .../src/samples/ipgroup2.xml | 8 + .../src/samples/ipgroups.json | 14 + .../src/samples/ipgroups.xml | 18 + .../src/samples/limits.json | 56 + .../src/samples/limits.xml | 30 + .../src/samples/notfound.json | 7 + .../src/samples/notfound.xml | 4 + .../src/samples/notimplemented.json | 7 + .../src/samples/notimplemented.xml | 4 + .../src/samples/overlimit.json | 8 + .../src/samples/overlimit.xml | 5 + .../src/samples/private.json | 5 + .../src/samples/private.xml | 5 + .../src/samples/public.json | 6 + .../src/samples/public.xml | 6 + .../src/samples/rateLimits.xml | 26 + .../src/samples/reboot.json | 5 + .../src/samples/reboot.xml | 4 + .../src/samples/rebuild.json | 5 + .../src/samples/rebuild.xml | 4 + .../src/samples/resize.json | 5 + .../src/samples/resize.xml | 4 + .../src/samples/resizeNotAllowed.json | 7 + .../src/samples/resizeNotAllowed.xml | 4 + .../src/samples/revertresize.json | 3 + .../src/samples/revertresize.xml | 3 + .../server-post-req-bad-file-encoding.json | 16 + .../server-post-req-bad-file-encoding.xml | 11 + .../server-post-req-bad-file-length.json | 16 + .../server-post-req-bad-file-length.xml | 13 + .../server-post-req-bad-file-path.json | 16 + .../samples/server-post-req-bad-file-path.xml | 18 + .../samples/server-post-req-bad-files.json | 36 + .../src/samples/server-post-req-bad-files.xml | 58 + .../samples/server-post-req-bad-meta-key.json | 16 + .../samples/server-post-req-bad-meta-key.xml | 18 + .../server-post-req-bad-meta-value.json | 16 + .../server-post-req-bad-meta-value.xml | 18 + .../src/samples/server-post-req-bad-meta.json | 21 + .../src/samples/server-post-req-bad-meta.xml | 23 + .../src/samples/server-post-req.json | 16 + .../src/samples/server-post-req.xml | 21 + .../src/samples/server-post-resp.json | 23 + .../src/samples/server-post-resp.xml | 20 + .../src/samples/server-put-req.json | 7 + .../src/samples/server-put-req.xml | 4 + .../src/samples/server.json | 24 + .../src/samples/server.xml | 22 + .../src/samples/serverCap.json | 7 + .../src/samples/serverCap.xml | 4 + .../src/samples/servers.json | 45 + .../src/samples/servers.xml | 42 + .../src/samples/serviceNotAvailable.json | 7 + .../src/samples/serviceNotAvailable.xml | 4 + .../src/samples/shareip.json | 6 + .../src/samples/shareip.xml | 4 + .../src/samples/snapshot.json | 5 + .../src/samples/snapshot.xml | 4 + .../src/samples/unauth.json | 7 + .../src/samples/unauth.xml | 6 + .../src/samples/version.json | 8 + .../src/samples/version.xml | 7 + .../src/style/schema.css | 82 + .../src/style/shjs/sh_acid.css | 151 + .../src/style/shjs/sh_darkblue.css | 151 + .../src/style/shjs/sh_emacs.css | 139 + .../src/style/shjs/sh_night.css | 151 + .../src/style/shjs/sh_pablo.css | 151 + .../src/style/shjs/sh_print.css | 145 + .../src/style/shjs/sh_style.css | 66 + .../src/style/shjs/sh_whitengrey.css | 139 + openstack-compute-api-1.0/src/xsd/actions.xsd | 256 + openstack-compute-api-1.0/src/xsd/annot.xsd | 625 ++ openstack-compute-api-1.0/src/xsd/api.xjb | 17 + openstack-compute-api-1.0/src/xsd/api.xsd | 141 + openstack-compute-api-1.0/src/xsd/backup.xsd | 374 ++ openstack-compute-api-1.0/src/xsd/common.xsd | 51 + openstack-compute-api-1.0/src/xsd/faults.xsd | 480 ++ openstack-compute-api-1.0/src/xsd/flavor.xsd | 144 + openstack-compute-api-1.0/src/xsd/image.xsd | 263 + openstack-compute-api-1.0/src/xsd/ipgroup.xsd | 215 + openstack-compute-api-1.0/src/xsd/limits.xsd | 354 ++ openstack-compute-api-1.0/src/xsd/server.xsd | 1008 ++++ openstack-compute-api-1.0/src/xsd/version.xsd | 172 + .../src/xslt/schema.xslt | 1330 +++++ openstack-compute-api-1.1/pom.xml | 194 + openstack-compute-api-1.1/src/common.ent | 112 + .../src/figures/Arrow_east.png | Bin 0 -> 433 bytes .../src/figures/Arrow_east.svg | 70 + .../src/figures/Check_mark_23x20_02.png | Bin 0 -> 651 bytes .../src/figures/Check_mark_23x20_02.svg | 60 + .../src/js/shjs/sh_java.js | 337 ++ .../src/js/shjs/sh_javascript.js | 347 ++ .../src/js/shjs/sh_main.js | 538 ++ .../src/js/shjs/sh_xml.js | 115 + .../src/js/trc/schema/controller.js | 184 + .../src/js/trc/schema/layoutManager.js | 137 + .../src/js/trc/schema/sampleManager.js | 342 ++ openstack-compute-api-1.1/src/js/trc/util.js | 564 ++ .../src/os-compute-1.1.wadl | 933 +++ .../src/os-compute-devguide.xml | 3731 ++++++++++++ .../src/samples/addip.json | 5 + .../src/samples/addip.xml | 2 + .../src/samples/address.json | 5 + .../src/samples/address.xml | 2 + .../src/samples/addresses.json | 32 + .../src/samples/addresses.xml | 13 + .../src/samples/backup.json | 7 + .../src/samples/backup.xml | 2 + .../src/samples/backupInProgress.json | 7 + .../src/samples/backupInProgress.xml | 5 + .../src/samples/badmediatype.json | 7 + .../src/samples/badmediatype.xml | 5 + .../src/samples/badmethod.json | 8 + .../src/samples/badmethod.xml | 5 + .../src/samples/badrequest.json | 7 + .../src/samples/badrequest.xml | 5 + .../src/samples/build.json | 7 + .../src/samples/build.xml | 5 + .../src/samples/changepassword.json | 5 + .../src/samples/changepassword.xml | 4 + .../src/samples/choices.json | 44 + .../src/samples/choices.xml | 28 + .../src/samples/confirmresize.json | 3 + .../src/samples/confirmresize.xml | 3 + .../src/samples/createimage.json | 9 + .../src/samples/createimage.xml | 9 + .../src/samples/ext-action.json | 6 + .../src/samples/ext-action.xml | 4 + .../src/samples/ext-server.json | 70 + .../src/samples/ext-server.xml | 40 + .../src/samples/ext-servers.json | 97 + .../src/samples/ext-servers.xml | 58 + .../src/samples/extension.json | 21 + .../src/samples/extension.xml | 24 + .../src/samples/extension2.json | 20 + .../src/samples/extension2.xml | 8 + .../src/samples/extension3.json | 9 + .../src/samples/extension3.xml | 6 + .../src/samples/extension4.json | 8 + .../src/samples/extension4.xml | 6 + .../src/samples/extensions.json | 42 + .../src/samples/extensions.xml | 43 + .../src/samples/fault.json | 7 + .../src/samples/fault.xml | 7 + .../src/samples/flavor.json | 19 + .../src/samples/flavor.xml | 13 + .../src/samples/flavors-page1-sp.xml | 28 + .../src/samples/flavors-page1.json | 44 + .../src/samples/flavors-page1.xml | 25 + .../src/samples/flavors.json | 38 + .../src/samples/flavors.xml | 22 + .../src/samples/forbidden.json | 7 + .../src/samples/forbidden.xml | 5 + .../src/samples/image-fault.json | 27 + .../src/samples/image-fault.xml | 20 + .../src/samples/image-meta-page1.json | 22 + .../src/samples/image-meta-page1.xml | 17 + .../src/samples/image-simple.json | 21 + .../src/samples/image-simple.xml | 16 + .../src/samples/image.json | 37 + .../src/samples/image.xml | 27 + .../src/samples/images-page1-sp.xml | 28 + .../src/samples/images-page1.json | 20 + .../src/samples/images-page1.xml | 13 + .../src/samples/images-page2.json | 20 + .../src/samples/images-page2.xml | 11 + .../src/samples/images-page3.json | 14 + .../src/samples/images-page3.xml | 10 + .../src/samples/images.json | 59 + .../src/samples/images.xml | 46 + .../src/samples/ipgroup.json | 17 + .../src/samples/ipgroup.xml | 16 + .../src/samples/ipgroup2.json | 6 + .../src/samples/ipgroup2.xml | 6 + .../src/samples/ipgroups-page1.json | 49 + .../src/samples/ipgroups-page1.xml | 37 + .../src/samples/ipgroups.json | 41 + .../src/samples/ipgroups.xml | 34 + .../src/samples/ipv6AddressRange.json | 6 + .../src/samples/ipv6AddressRange.xml | 3 + .../src/samples/limits.json | 66 + .../src/samples/limits.xml | 33 + .../src/samples/limits2.json | 53 + .../src/samples/limits2.xml | 14 + .../src/samples/limits3.json | 9 + .../src/samples/limits3.xml | 8 + .../src/samples/limits4.json | 1 + .../src/samples/limits4.xml | 2 + .../src/samples/metadata-page1.json | 14 + .../src/samples/metadata-page1.xml | 10 + .../src/samples/metadata-update-req.json | 5 + .../src/samples/metadata-update-req.xml | 5 + .../src/samples/metadata-update-resp.json | 6 + .../src/samples/metadata-update-resp.xml | 6 + .../src/samples/metadata.json | 6 + .../src/samples/metadata.xml | 6 + .../src/samples/metadata_item.json | 5 + .../src/samples/metadata_item.xml | 4 + .../src/samples/notfound.json | 7 + .../src/samples/notfound.xml | 7 + .../src/samples/notimplemented.json | 7 + .../src/samples/notimplemented.xml | 5 + .../src/samples/overlimit.json | 8 + .../src/samples/overlimit.xml | 8 + .../src/samples/private.json | 9 + .../src/samples/private.xml | 6 + .../src/samples/public.json | 11 + .../src/samples/public.xml | 8 + .../src/samples/rax-extensions.json | 80 + .../src/samples/rax-extensions.xml | 52 + .../src/samples/reboot.json | 5 + .../src/samples/reboot.xml | 4 + .../src/samples/rebuild-resp.json | 78 + .../src/samples/rebuild-resp.xml | 49 + .../src/samples/rebuild.json | 5 + .../src/samples/rebuild.xml | 2 + .../src/samples/rebuild_all.json | 16 + .../src/samples/rebuild_all.xml | 23 + .../samples/rebuild_bad_file_encoding.json | 15 + .../src/samples/rebuild_bad_file_encoding.xml | 11 + .../src/samples/rebuild_bad_file_length.json | 15 + .../src/samples/rebuild_bad_file_length.xml | 11 + .../src/samples/rebuild_bad_file_path.json | 15 + .../src/samples/rebuild_bad_file_path.xml | 19 + .../src/samples/rebuild_bad_files.json | 35 + .../src/samples/rebuild_bad_files.xml | 56 + .../src/samples/rebuild_bad_meta_key.json | 15 + .../src/samples/rebuild_bad_meta_key.xml | 19 + .../src/samples/rebuild_bad_meta_value.json | 15 + .../src/samples/rebuild_bad_meta_value.xml | 20 + .../src/samples/rebuild_both.json | 14 + .../src/samples/rebuild_both.xml | 19 + .../src/samples/rebuild_file.json | 11 + .../src/samples/rebuild_file.xml | 16 + .../src/samples/rebuild_meta.json | 8 + .../src/samples/rebuild_meta.xml | 6 + .../src/samples/rebuild_name.json | 6 + .../src/samples/rebuild_name.xml | 2 + .../src/samples/rebuild_pass.json | 7 + .../src/samples/rebuild_pass.xml | 2 + .../src/samples/resize.json | 5 + .../src/samples/resize.xml | 4 + .../src/samples/resizeNotAllowed.json | 7 + .../src/samples/resizeNotAllowed.xml | 5 + .../src/samples/revertresize.json | 3 + .../src/samples/revertresize.xml | 3 + .../src/samples/server-fault.json | 34 + .../src/samples/server-fault.xml | 21 + .../server-post-req-bad-file-encoding.json | 16 + .../server-post-req-bad-file-encoding.xml | 11 + .../server-post-req-bad-file-length.json | 16 + .../server-post-req-bad-file-length.xml | 13 + .../server-post-req-bad-file-path.json | 16 + .../samples/server-post-req-bad-file-path.xml | 18 + .../samples/server-post-req-bad-files.json | 36 + .../src/samples/server-post-req-bad-files.xml | 58 + .../samples/server-post-req-bad-meta-key.json | 16 + .../samples/server-post-req-bad-meta-key.xml | 18 + .../server-post-req-bad-meta-value.json | 16 + .../server-post-req-bad-meta-value.xml | 18 + .../src/samples/server-post-req-pip.json | 8 + .../src/samples/server-post-req-pip.xml | 5 + .../src/samples/server-post-req-pip2.json | 9 + .../src/samples/server-post-req-pip2.xml | 7 + .../src/samples/server-post-req-short.json | 16 + .../src/samples/server-post-req-short.xml | 24 + .../src/samples/server-post-req.json | 16 + .../src/samples/server-post-req.xml | 23 + .../src/samples/server-post-req2.xml | 24 + .../src/samples/server-post-resp.json | 78 + .../src/samples/server-post-resp.xml | 49 + .../src/samples/server-put-req-ad.json | 7 + .../src/samples/server-put-req-ad.xml | 6 + .../src/samples/server-put-req.json | 6 + .../src/samples/server-put-req.xml | 4 + .../src/samples/server-put-req2.xml | 10 + .../src/samples/server-put-resp-ad.json | 78 + .../src/samples/server-put-resp-ad.xml | 50 + .../src/samples/server-put-resp.json | 78 + .../src/samples/server-put-resp.xml | 50 + .../src/samples/server-simple.json | 16 + .../src/samples/server-simple.xml | 11 + .../src/samples/server.json | 85 + .../src/samples/server.xml | 49 + .../src/samples/serverCap.json | 7 + .../src/samples/serverCap.xml | 5 + .../src/samples/servers-page1-sp.xml | 28 + .../src/samples/servers-page1.json | 170 + .../src/samples/servers-page1.xml | 105 + .../src/samples/servers.json | 160 + .../src/samples/servers.xml | 98 + .../src/samples/serviceNotAvailable.json | 7 + .../src/samples/serviceNotAvailable.xml | 5 + .../src/samples/shareip.json | 6 + .../src/samples/shareip.xml | 4 + .../src/samples/snapshot.json | 5 + .../src/samples/snapshot.xml | 2 + .../src/samples/unauth.json | 7 + .../src/samples/unauth.xml | 5 + .../src/samples/version-atom.xml | 19 + .../src/samples/version.json | 33 + .../src/samples/version.xml | 23 + .../src/samples/version2.json | 19 + .../src/samples/version2.xml | 7 + .../src/samples/version3.json | 7 + .../src/samples/version3.xml | 2 + .../src/samples/version4.json | 6 + .../src/samples/version4.xml | 2 + .../src/samples/version5.json | 17 + .../src/samples/version5.xml | 9 + .../src/samples/version_bad_link.xml | 10 + .../src/samples/versions-atom.xml | 22 + .../src/samples/versions.json | 26 + .../src/samples/versions.xml | 18 + .../src/samples/versions_bad_link.xml | 40 + .../src/style/schema.css | 82 + .../src/style/shjs/sh_acid.css | 151 + .../src/style/shjs/sh_darkblue.css | 151 + .../src/style/shjs/sh_emacs.css | 139 + .../src/style/shjs/sh_night.css | 151 + .../src/style/shjs/sh_pablo.css | 151 + .../src/style/shjs/sh_print.css | 145 + .../src/style/shjs/sh_style.css | 66 + .../src/style/shjs/sh_whitengrey.css | 139 + openstack-compute-api-1.1/src/xsd/.htaccess | 6 + openstack-compute-api-1.1/src/xsd/actions.xsd | 439 ++ .../src/xsd/affinity-id.xjb | 11 + .../src/xsd/affinity-id.xsd | 39 + .../src/xsd/api-common.xjb | 11 + .../src/xsd/api-common.xsd | 66 + openstack-compute-api-1.1/src/xsd/api.xjb | 21 + openstack-compute-api-1.1/src/xsd/api.xsd | 103 + openstack-compute-api-1.1/src/xsd/atom.xjb | 11 + .../src/xsd/atom/atom.xsd | 105 + .../src/xsd/atom/xml.xsd | 294 + openstack-compute-api-1.1/src/xsd/backup.xsd | 378 ++ openstack-compute-api-1.1/src/xsd/common.xsd | 156 + .../src/xsd/ext/rax-dme/api.xsd | 38 + .../src/xsd/ext/rax-dme/rax-dme.xsd | 25 + .../src/xsd/extensions.xsd | 203 + openstack-compute-api-1.1/src/xsd/faults.xsd | 532 ++ openstack-compute-api-1.1/src/xsd/flavor.xsd | 244 + openstack-compute-api-1.1/src/xsd/image.xsd | 443 ++ openstack-compute-api-1.1/src/xsd/ipgroup.xsd | 245 + openstack-compute-api-1.1/src/xsd/limits.xsd | 315 + .../src/xsd/metadata.xsd | 89 + openstack-compute-api-1.1/src/xsd/server.xsd | 1013 ++++ openstack-compute-api-1.1/src/xsd/shareip.xjb | 11 + openstack-compute-api-1.1/src/xsd/shareip.xsd | 83 + .../src/xsd/txt.htaccess | 4 + openstack-compute-api-1.1/src/xsd/version.xsd | 355 ++ openstack-compute-api-1.1/src/xslt/schema.xsl | 1342 +++++ 604 files changed, 55238 insertions(+) create mode 100644 README create mode 100644 incubation/openstack-api-extensions/apix-intro-proposal.xml create mode 100644 incubation/openstack-api-extensions/figures/apix-1service-core-extensions-manybackends.png create mode 100644 incubation/openstack-api-extensions/figures/apix-1service-core-extensions-manybackends.svg create mode 100644 incubation/openstack-api-extensions/pom.xml create mode 100644 incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-Bold.ttf create mode 100644 incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-BoldItalic.ttf create mode 100644 incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-Book.ttf create mode 100644 incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-Italic.ttf create mode 100644 incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/FontSite License.txt create mode 100644 incubation/openstack-api-extensions/target/docbkx/fonts/fontconfig.st create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/1.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/10.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/11.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/12.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/13.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/14.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/15.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/16.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/17.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/18.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/19.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/2.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/20.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/21.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/22.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/23.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/24.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/25.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/26.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/27.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/28.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/29.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/3.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/30.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/4.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/5.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/6.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/7.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/8.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/callouts/9.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/caution.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc-nd.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc-sa.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/cc/by-nd.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/cc/by-sa.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/cc/by.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/cloud/cover.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/cloud/openstack-cover.st create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/cloud/rackspace-cover.st create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/home.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/important.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/next.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/note.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/prev.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/tip.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/up.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/images/warning.svg create mode 100644 incubation/openstack-api-extensions/target/docbkx/pdf/apix-intro-proposal.fo create mode 100644 incubation/openstack-api-extensions/target/docbkx/pdf/apix-intro-proposal.pdf create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/comments.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/ie.css create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning-openstack.css create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning-rackspace.css create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning.css create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/ga.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/caution.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/important.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/note.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/tip.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/warning.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/book_open.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/breadcrumb-arrow-white.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/breadcrumb-arrow.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/1.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/10.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/11.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/12.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/13.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/14.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/15.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/16.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/17.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/18.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/19.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/2.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/20.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/21.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/22.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/23.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/24.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/25.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/26.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/27.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/28.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/29.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/3.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/30.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/4.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/5.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/6.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/7.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/8.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/9.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nc-nd.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nc-sa.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nc.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nd.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-sa.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/favicon-openstack.ico create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/favicon-rackspace.ico create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/header-bg.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/highlight-blue.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/highlight-yellow.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/highlighter.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/loading.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/logo.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/main_bg_fade.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/next-arrow.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/openstack-logo.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/page_white_text.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/pdf.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/previous-arrow.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/rackspace-logo.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/search-icon.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/showHideTreeIcons.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/sidebar.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/toc-icon.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/jquery-1.4.2.min.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/jquery-ui-1.8.2.custom.min.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/jquery.cookie.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-anim_basic_16x16.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-bg_flat_55_fbec88_40x100.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-bg_glass_75_d0e5f5_1x400.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-bg_glass_85_dfeffc_1x400.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_f5f8f9_1x100.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-bg_inset-hard_100_fcfdfd_1x100.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-icons_217bc0_256x240.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-icons_2e83ff_256x240.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-icons_469bdd_256x240.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-icons_6da8d5_256x240.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-icons_cd0a0a_256x240.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-icons_d8e7f3_256x240.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/images/ui-icons_f9bd01_256x240.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/file.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder-closed.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder-closed2.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder2.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/minus.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/page_white_text.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/plus.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-black-line.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-black.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-default-line.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-default.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-famfamfam-line.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-famfamfam.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-gray-line.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-gray.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-red-line.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-red.gif create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.async.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.css create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.min.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.pack.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/main-openstack.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/main-rackspace.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/main.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/Background.html create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01.html create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s01.html create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s02.html create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s03.html create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s01.html create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s02.html create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s03.html create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s04.html create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s05.html create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/index.html create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/default.props create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/en-us.props create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/es-es.props create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/htmlFileInfoList.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/htmlFileList.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-1.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-2.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-3.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/ja-jp.props create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/nwSearchFnt.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/punctuation.props create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/de_stemmer.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/en_stemmer.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/fr_stemmer.js create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/favicon.ico create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/figures/apix-1service-core-extensions-manybackends.png create mode 100644 incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/index.html create mode 100644 openstack-compute-api-1.0/pom.xml create mode 100644 openstack-compute-api-1.0/src/cs-devguide.xml create mode 100644 openstack-compute-api-1.0/src/figures/Arrow_east.png create mode 100644 openstack-compute-api-1.0/src/figures/Arrow_east.svg create mode 100644 openstack-compute-api-1.0/src/figures/Check_mark_23x20_02.png create mode 100644 openstack-compute-api-1.0/src/figures/Check_mark_23x20_02.svg create mode 100644 openstack-compute-api-1.0/src/js/shjs/sh_java.js create mode 100644 openstack-compute-api-1.0/src/js/shjs/sh_javascript.js create mode 100644 openstack-compute-api-1.0/src/js/shjs/sh_main.js create mode 100644 openstack-compute-api-1.0/src/js/shjs/sh_xml.js create mode 100644 openstack-compute-api-1.0/src/js/trc/schema/controller.js create mode 100644 openstack-compute-api-1.0/src/js/trc/schema/layoutManager.js create mode 100644 openstack-compute-api-1.0/src/js/trc/schema/sampleManager.js create mode 100644 openstack-compute-api-1.0/src/js/trc/util.js create mode 100644 openstack-compute-api-1.0/src/samples/addip.json create mode 100644 openstack-compute-api-1.0/src/samples/addip.xml create mode 100644 openstack-compute-api-1.0/src/samples/address.json create mode 100644 openstack-compute-api-1.0/src/samples/address.xml create mode 100644 openstack-compute-api-1.0/src/samples/addresses.json create mode 100644 openstack-compute-api-1.0/src/samples/addresses.xml create mode 100644 openstack-compute-api-1.0/src/samples/backup.json create mode 100644 openstack-compute-api-1.0/src/samples/backup.xml create mode 100644 openstack-compute-api-1.0/src/samples/backupInProgress.json create mode 100644 openstack-compute-api-1.0/src/samples/backupInProgress.xml create mode 100644 openstack-compute-api-1.0/src/samples/badmediatype.json create mode 100644 openstack-compute-api-1.0/src/samples/badmediatype.xml create mode 100644 openstack-compute-api-1.0/src/samples/badmethod.json create mode 100644 openstack-compute-api-1.0/src/samples/badmethod.xml create mode 100644 openstack-compute-api-1.0/src/samples/badrequest.json create mode 100644 openstack-compute-api-1.0/src/samples/badrequest.xml create mode 100644 openstack-compute-api-1.0/src/samples/build.json create mode 100644 openstack-compute-api-1.0/src/samples/build.xml create mode 100644 openstack-compute-api-1.0/src/samples/confirmresize.json create mode 100644 openstack-compute-api-1.0/src/samples/confirmresize.xml create mode 100644 openstack-compute-api-1.0/src/samples/fault.json create mode 100644 openstack-compute-api-1.0/src/samples/fault.xml create mode 100644 openstack-compute-api-1.0/src/samples/flavor.json create mode 100644 openstack-compute-api-1.0/src/samples/flavor.xml create mode 100644 openstack-compute-api-1.0/src/samples/flavors.json create mode 100644 openstack-compute-api-1.0/src/samples/flavors.xml create mode 100644 openstack-compute-api-1.0/src/samples/image.json create mode 100644 openstack-compute-api-1.0/src/samples/image.xml create mode 100644 openstack-compute-api-1.0/src/samples/images.json create mode 100644 openstack-compute-api-1.0/src/samples/images.xml create mode 100644 openstack-compute-api-1.0/src/samples/ipgroup.json create mode 100644 openstack-compute-api-1.0/src/samples/ipgroup.xml create mode 100644 openstack-compute-api-1.0/src/samples/ipgroup2.json create mode 100644 openstack-compute-api-1.0/src/samples/ipgroup2.xml create mode 100644 openstack-compute-api-1.0/src/samples/ipgroups.json create mode 100644 openstack-compute-api-1.0/src/samples/ipgroups.xml create mode 100644 openstack-compute-api-1.0/src/samples/limits.json create mode 100644 openstack-compute-api-1.0/src/samples/limits.xml create mode 100644 openstack-compute-api-1.0/src/samples/notfound.json create mode 100644 openstack-compute-api-1.0/src/samples/notfound.xml create mode 100644 openstack-compute-api-1.0/src/samples/notimplemented.json create mode 100644 openstack-compute-api-1.0/src/samples/notimplemented.xml create mode 100644 openstack-compute-api-1.0/src/samples/overlimit.json create mode 100644 openstack-compute-api-1.0/src/samples/overlimit.xml create mode 100644 openstack-compute-api-1.0/src/samples/private.json create mode 100644 openstack-compute-api-1.0/src/samples/private.xml create mode 100644 openstack-compute-api-1.0/src/samples/public.json create mode 100644 openstack-compute-api-1.0/src/samples/public.xml create mode 100644 openstack-compute-api-1.0/src/samples/rateLimits.xml create mode 100644 openstack-compute-api-1.0/src/samples/reboot.json create mode 100644 openstack-compute-api-1.0/src/samples/reboot.xml create mode 100644 openstack-compute-api-1.0/src/samples/rebuild.json create mode 100644 openstack-compute-api-1.0/src/samples/rebuild.xml create mode 100644 openstack-compute-api-1.0/src/samples/resize.json create mode 100644 openstack-compute-api-1.0/src/samples/resize.xml create mode 100644 openstack-compute-api-1.0/src/samples/resizeNotAllowed.json create mode 100644 openstack-compute-api-1.0/src/samples/resizeNotAllowed.xml create mode 100644 openstack-compute-api-1.0/src/samples/revertresize.json create mode 100644 openstack-compute-api-1.0/src/samples/revertresize.xml create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-file-encoding.json create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-file-encoding.xml create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-file-length.json create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-file-length.xml create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-file-path.json create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-file-path.xml create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-files.json create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-files.xml create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-key.json create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-key.xml create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-value.json create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-value.xml create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-meta.json create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req-bad-meta.xml create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req.json create mode 100644 openstack-compute-api-1.0/src/samples/server-post-req.xml create mode 100644 openstack-compute-api-1.0/src/samples/server-post-resp.json create mode 100644 openstack-compute-api-1.0/src/samples/server-post-resp.xml create mode 100644 openstack-compute-api-1.0/src/samples/server-put-req.json create mode 100644 openstack-compute-api-1.0/src/samples/server-put-req.xml create mode 100644 openstack-compute-api-1.0/src/samples/server.json create mode 100644 openstack-compute-api-1.0/src/samples/server.xml create mode 100644 openstack-compute-api-1.0/src/samples/serverCap.json create mode 100644 openstack-compute-api-1.0/src/samples/serverCap.xml create mode 100644 openstack-compute-api-1.0/src/samples/servers.json create mode 100644 openstack-compute-api-1.0/src/samples/servers.xml create mode 100644 openstack-compute-api-1.0/src/samples/serviceNotAvailable.json create mode 100644 openstack-compute-api-1.0/src/samples/serviceNotAvailable.xml create mode 100644 openstack-compute-api-1.0/src/samples/shareip.json create mode 100644 openstack-compute-api-1.0/src/samples/shareip.xml create mode 100644 openstack-compute-api-1.0/src/samples/snapshot.json create mode 100644 openstack-compute-api-1.0/src/samples/snapshot.xml create mode 100644 openstack-compute-api-1.0/src/samples/unauth.json create mode 100644 openstack-compute-api-1.0/src/samples/unauth.xml create mode 100644 openstack-compute-api-1.0/src/samples/version.json create mode 100644 openstack-compute-api-1.0/src/samples/version.xml create mode 100644 openstack-compute-api-1.0/src/style/schema.css create mode 100644 openstack-compute-api-1.0/src/style/shjs/sh_acid.css create mode 100644 openstack-compute-api-1.0/src/style/shjs/sh_darkblue.css create mode 100644 openstack-compute-api-1.0/src/style/shjs/sh_emacs.css create mode 100644 openstack-compute-api-1.0/src/style/shjs/sh_night.css create mode 100644 openstack-compute-api-1.0/src/style/shjs/sh_pablo.css create mode 100644 openstack-compute-api-1.0/src/style/shjs/sh_print.css create mode 100644 openstack-compute-api-1.0/src/style/shjs/sh_style.css create mode 100644 openstack-compute-api-1.0/src/style/shjs/sh_whitengrey.css create mode 100644 openstack-compute-api-1.0/src/xsd/actions.xsd create mode 100644 openstack-compute-api-1.0/src/xsd/annot.xsd create mode 100644 openstack-compute-api-1.0/src/xsd/api.xjb create mode 100644 openstack-compute-api-1.0/src/xsd/api.xsd create mode 100644 openstack-compute-api-1.0/src/xsd/backup.xsd create mode 100644 openstack-compute-api-1.0/src/xsd/common.xsd create mode 100644 openstack-compute-api-1.0/src/xsd/faults.xsd create mode 100644 openstack-compute-api-1.0/src/xsd/flavor.xsd create mode 100644 openstack-compute-api-1.0/src/xsd/image.xsd create mode 100644 openstack-compute-api-1.0/src/xsd/ipgroup.xsd create mode 100644 openstack-compute-api-1.0/src/xsd/limits.xsd create mode 100644 openstack-compute-api-1.0/src/xsd/server.xsd create mode 100644 openstack-compute-api-1.0/src/xsd/version.xsd create mode 100644 openstack-compute-api-1.0/src/xslt/schema.xslt create mode 100644 openstack-compute-api-1.1/pom.xml create mode 100644 openstack-compute-api-1.1/src/common.ent create mode 100644 openstack-compute-api-1.1/src/figures/Arrow_east.png create mode 100644 openstack-compute-api-1.1/src/figures/Arrow_east.svg create mode 100644 openstack-compute-api-1.1/src/figures/Check_mark_23x20_02.png create mode 100644 openstack-compute-api-1.1/src/figures/Check_mark_23x20_02.svg create mode 100644 openstack-compute-api-1.1/src/js/shjs/sh_java.js create mode 100644 openstack-compute-api-1.1/src/js/shjs/sh_javascript.js create mode 100644 openstack-compute-api-1.1/src/js/shjs/sh_main.js create mode 100644 openstack-compute-api-1.1/src/js/shjs/sh_xml.js create mode 100644 openstack-compute-api-1.1/src/js/trc/schema/controller.js create mode 100644 openstack-compute-api-1.1/src/js/trc/schema/layoutManager.js create mode 100644 openstack-compute-api-1.1/src/js/trc/schema/sampleManager.js create mode 100644 openstack-compute-api-1.1/src/js/trc/util.js create mode 100644 openstack-compute-api-1.1/src/os-compute-1.1.wadl create mode 100644 openstack-compute-api-1.1/src/os-compute-devguide.xml create mode 100644 openstack-compute-api-1.1/src/samples/addip.json create mode 100644 openstack-compute-api-1.1/src/samples/addip.xml create mode 100644 openstack-compute-api-1.1/src/samples/address.json create mode 100644 openstack-compute-api-1.1/src/samples/address.xml create mode 100644 openstack-compute-api-1.1/src/samples/addresses.json create mode 100644 openstack-compute-api-1.1/src/samples/addresses.xml create mode 100644 openstack-compute-api-1.1/src/samples/backup.json create mode 100644 openstack-compute-api-1.1/src/samples/backup.xml create mode 100644 openstack-compute-api-1.1/src/samples/backupInProgress.json create mode 100644 openstack-compute-api-1.1/src/samples/backupInProgress.xml create mode 100644 openstack-compute-api-1.1/src/samples/badmediatype.json create mode 100644 openstack-compute-api-1.1/src/samples/badmediatype.xml create mode 100644 openstack-compute-api-1.1/src/samples/badmethod.json create mode 100644 openstack-compute-api-1.1/src/samples/badmethod.xml create mode 100644 openstack-compute-api-1.1/src/samples/badrequest.json create mode 100644 openstack-compute-api-1.1/src/samples/badrequest.xml create mode 100644 openstack-compute-api-1.1/src/samples/build.json create mode 100644 openstack-compute-api-1.1/src/samples/build.xml create mode 100644 openstack-compute-api-1.1/src/samples/changepassword.json create mode 100644 openstack-compute-api-1.1/src/samples/changepassword.xml create mode 100644 openstack-compute-api-1.1/src/samples/choices.json create mode 100644 openstack-compute-api-1.1/src/samples/choices.xml create mode 100644 openstack-compute-api-1.1/src/samples/confirmresize.json create mode 100644 openstack-compute-api-1.1/src/samples/confirmresize.xml create mode 100644 openstack-compute-api-1.1/src/samples/createimage.json create mode 100644 openstack-compute-api-1.1/src/samples/createimage.xml create mode 100644 openstack-compute-api-1.1/src/samples/ext-action.json create mode 100644 openstack-compute-api-1.1/src/samples/ext-action.xml create mode 100644 openstack-compute-api-1.1/src/samples/ext-server.json create mode 100644 openstack-compute-api-1.1/src/samples/ext-server.xml create mode 100644 openstack-compute-api-1.1/src/samples/ext-servers.json create mode 100644 openstack-compute-api-1.1/src/samples/ext-servers.xml create mode 100644 openstack-compute-api-1.1/src/samples/extension.json create mode 100644 openstack-compute-api-1.1/src/samples/extension.xml create mode 100644 openstack-compute-api-1.1/src/samples/extension2.json create mode 100644 openstack-compute-api-1.1/src/samples/extension2.xml create mode 100644 openstack-compute-api-1.1/src/samples/extension3.json create mode 100644 openstack-compute-api-1.1/src/samples/extension3.xml create mode 100644 openstack-compute-api-1.1/src/samples/extension4.json create mode 100644 openstack-compute-api-1.1/src/samples/extension4.xml create mode 100644 openstack-compute-api-1.1/src/samples/extensions.json create mode 100644 openstack-compute-api-1.1/src/samples/extensions.xml create mode 100644 openstack-compute-api-1.1/src/samples/fault.json create mode 100644 openstack-compute-api-1.1/src/samples/fault.xml create mode 100644 openstack-compute-api-1.1/src/samples/flavor.json create mode 100644 openstack-compute-api-1.1/src/samples/flavor.xml create mode 100644 openstack-compute-api-1.1/src/samples/flavors-page1-sp.xml create mode 100644 openstack-compute-api-1.1/src/samples/flavors-page1.json create mode 100644 openstack-compute-api-1.1/src/samples/flavors-page1.xml create mode 100644 openstack-compute-api-1.1/src/samples/flavors.json create mode 100644 openstack-compute-api-1.1/src/samples/flavors.xml create mode 100644 openstack-compute-api-1.1/src/samples/forbidden.json create mode 100644 openstack-compute-api-1.1/src/samples/forbidden.xml create mode 100644 openstack-compute-api-1.1/src/samples/image-fault.json create mode 100644 openstack-compute-api-1.1/src/samples/image-fault.xml create mode 100644 openstack-compute-api-1.1/src/samples/image-meta-page1.json create mode 100644 openstack-compute-api-1.1/src/samples/image-meta-page1.xml create mode 100644 openstack-compute-api-1.1/src/samples/image-simple.json create mode 100644 openstack-compute-api-1.1/src/samples/image-simple.xml create mode 100644 openstack-compute-api-1.1/src/samples/image.json create mode 100644 openstack-compute-api-1.1/src/samples/image.xml create mode 100644 openstack-compute-api-1.1/src/samples/images-page1-sp.xml create mode 100644 openstack-compute-api-1.1/src/samples/images-page1.json create mode 100644 openstack-compute-api-1.1/src/samples/images-page1.xml create mode 100644 openstack-compute-api-1.1/src/samples/images-page2.json create mode 100644 openstack-compute-api-1.1/src/samples/images-page2.xml create mode 100644 openstack-compute-api-1.1/src/samples/images-page3.json create mode 100644 openstack-compute-api-1.1/src/samples/images-page3.xml create mode 100644 openstack-compute-api-1.1/src/samples/images.json create mode 100644 openstack-compute-api-1.1/src/samples/images.xml create mode 100644 openstack-compute-api-1.1/src/samples/ipgroup.json create mode 100644 openstack-compute-api-1.1/src/samples/ipgroup.xml create mode 100644 openstack-compute-api-1.1/src/samples/ipgroup2.json create mode 100644 openstack-compute-api-1.1/src/samples/ipgroup2.xml create mode 100644 openstack-compute-api-1.1/src/samples/ipgroups-page1.json create mode 100644 openstack-compute-api-1.1/src/samples/ipgroups-page1.xml create mode 100644 openstack-compute-api-1.1/src/samples/ipgroups.json create mode 100644 openstack-compute-api-1.1/src/samples/ipgroups.xml create mode 100644 openstack-compute-api-1.1/src/samples/ipv6AddressRange.json create mode 100644 openstack-compute-api-1.1/src/samples/ipv6AddressRange.xml create mode 100644 openstack-compute-api-1.1/src/samples/limits.json create mode 100644 openstack-compute-api-1.1/src/samples/limits.xml create mode 100644 openstack-compute-api-1.1/src/samples/limits2.json create mode 100644 openstack-compute-api-1.1/src/samples/limits2.xml create mode 100644 openstack-compute-api-1.1/src/samples/limits3.json create mode 100644 openstack-compute-api-1.1/src/samples/limits3.xml create mode 100644 openstack-compute-api-1.1/src/samples/limits4.json create mode 100644 openstack-compute-api-1.1/src/samples/limits4.xml create mode 100644 openstack-compute-api-1.1/src/samples/metadata-page1.json create mode 100644 openstack-compute-api-1.1/src/samples/metadata-page1.xml create mode 100644 openstack-compute-api-1.1/src/samples/metadata-update-req.json create mode 100644 openstack-compute-api-1.1/src/samples/metadata-update-req.xml create mode 100644 openstack-compute-api-1.1/src/samples/metadata-update-resp.json create mode 100644 openstack-compute-api-1.1/src/samples/metadata-update-resp.xml create mode 100644 openstack-compute-api-1.1/src/samples/metadata.json create mode 100644 openstack-compute-api-1.1/src/samples/metadata.xml create mode 100644 openstack-compute-api-1.1/src/samples/metadata_item.json create mode 100644 openstack-compute-api-1.1/src/samples/metadata_item.xml create mode 100644 openstack-compute-api-1.1/src/samples/notfound.json create mode 100644 openstack-compute-api-1.1/src/samples/notfound.xml create mode 100644 openstack-compute-api-1.1/src/samples/notimplemented.json create mode 100644 openstack-compute-api-1.1/src/samples/notimplemented.xml create mode 100644 openstack-compute-api-1.1/src/samples/overlimit.json create mode 100644 openstack-compute-api-1.1/src/samples/overlimit.xml create mode 100644 openstack-compute-api-1.1/src/samples/private.json create mode 100644 openstack-compute-api-1.1/src/samples/private.xml create mode 100644 openstack-compute-api-1.1/src/samples/public.json create mode 100644 openstack-compute-api-1.1/src/samples/public.xml create mode 100644 openstack-compute-api-1.1/src/samples/rax-extensions.json create mode 100644 openstack-compute-api-1.1/src/samples/rax-extensions.xml create mode 100644 openstack-compute-api-1.1/src/samples/reboot.json create mode 100644 openstack-compute-api-1.1/src/samples/reboot.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild-resp.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild-resp.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_all.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_all.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_file_encoding.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_file_encoding.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_file_length.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_file_length.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_file_path.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_file_path.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_files.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_files.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_meta_key.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_meta_key.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_meta_value.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_bad_meta_value.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_both.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_both.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_file.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_file.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_meta.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_meta.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_name.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_name.xml create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_pass.json create mode 100644 openstack-compute-api-1.1/src/samples/rebuild_pass.xml create mode 100644 openstack-compute-api-1.1/src/samples/resize.json create mode 100644 openstack-compute-api-1.1/src/samples/resize.xml create mode 100644 openstack-compute-api-1.1/src/samples/resizeNotAllowed.json create mode 100644 openstack-compute-api-1.1/src/samples/resizeNotAllowed.xml create mode 100644 openstack-compute-api-1.1/src/samples/revertresize.json create mode 100644 openstack-compute-api-1.1/src/samples/revertresize.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-fault.json create mode 100644 openstack-compute-api-1.1/src/samples/server-fault.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-file-encoding.json create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-file-encoding.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-file-length.json create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-file-length.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-file-path.json create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-file-path.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-files.json create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-files.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-meta-key.json create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-meta-key.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-meta-value.json create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-bad-meta-value.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-pip.json create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-pip.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-pip2.json create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-pip2.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-short.json create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req-short.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req.json create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-req2.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-post-resp.json create mode 100644 openstack-compute-api-1.1/src/samples/server-post-resp.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-put-req-ad.json create mode 100644 openstack-compute-api-1.1/src/samples/server-put-req-ad.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-put-req.json create mode 100644 openstack-compute-api-1.1/src/samples/server-put-req.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-put-req2.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-put-resp-ad.json create mode 100644 openstack-compute-api-1.1/src/samples/server-put-resp-ad.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-put-resp.json create mode 100644 openstack-compute-api-1.1/src/samples/server-put-resp.xml create mode 100644 openstack-compute-api-1.1/src/samples/server-simple.json create mode 100644 openstack-compute-api-1.1/src/samples/server-simple.xml create mode 100644 openstack-compute-api-1.1/src/samples/server.json create mode 100644 openstack-compute-api-1.1/src/samples/server.xml create mode 100644 openstack-compute-api-1.1/src/samples/serverCap.json create mode 100644 openstack-compute-api-1.1/src/samples/serverCap.xml create mode 100644 openstack-compute-api-1.1/src/samples/servers-page1-sp.xml create mode 100644 openstack-compute-api-1.1/src/samples/servers-page1.json create mode 100644 openstack-compute-api-1.1/src/samples/servers-page1.xml create mode 100644 openstack-compute-api-1.1/src/samples/servers.json create mode 100644 openstack-compute-api-1.1/src/samples/servers.xml create mode 100644 openstack-compute-api-1.1/src/samples/serviceNotAvailable.json create mode 100644 openstack-compute-api-1.1/src/samples/serviceNotAvailable.xml create mode 100644 openstack-compute-api-1.1/src/samples/shareip.json create mode 100644 openstack-compute-api-1.1/src/samples/shareip.xml create mode 100644 openstack-compute-api-1.1/src/samples/snapshot.json create mode 100644 openstack-compute-api-1.1/src/samples/snapshot.xml create mode 100644 openstack-compute-api-1.1/src/samples/unauth.json create mode 100644 openstack-compute-api-1.1/src/samples/unauth.xml create mode 100644 openstack-compute-api-1.1/src/samples/version-atom.xml create mode 100644 openstack-compute-api-1.1/src/samples/version.json create mode 100644 openstack-compute-api-1.1/src/samples/version.xml create mode 100644 openstack-compute-api-1.1/src/samples/version2.json create mode 100644 openstack-compute-api-1.1/src/samples/version2.xml create mode 100644 openstack-compute-api-1.1/src/samples/version3.json create mode 100644 openstack-compute-api-1.1/src/samples/version3.xml create mode 100644 openstack-compute-api-1.1/src/samples/version4.json create mode 100644 openstack-compute-api-1.1/src/samples/version4.xml create mode 100644 openstack-compute-api-1.1/src/samples/version5.json create mode 100644 openstack-compute-api-1.1/src/samples/version5.xml create mode 100644 openstack-compute-api-1.1/src/samples/version_bad_link.xml create mode 100644 openstack-compute-api-1.1/src/samples/versions-atom.xml create mode 100644 openstack-compute-api-1.1/src/samples/versions.json create mode 100644 openstack-compute-api-1.1/src/samples/versions.xml create mode 100644 openstack-compute-api-1.1/src/samples/versions_bad_link.xml create mode 100644 openstack-compute-api-1.1/src/style/schema.css create mode 100644 openstack-compute-api-1.1/src/style/shjs/sh_acid.css create mode 100644 openstack-compute-api-1.1/src/style/shjs/sh_darkblue.css create mode 100644 openstack-compute-api-1.1/src/style/shjs/sh_emacs.css create mode 100644 openstack-compute-api-1.1/src/style/shjs/sh_night.css create mode 100644 openstack-compute-api-1.1/src/style/shjs/sh_pablo.css create mode 100644 openstack-compute-api-1.1/src/style/shjs/sh_print.css create mode 100644 openstack-compute-api-1.1/src/style/shjs/sh_style.css create mode 100644 openstack-compute-api-1.1/src/style/shjs/sh_whitengrey.css create mode 100644 openstack-compute-api-1.1/src/xsd/.htaccess create mode 100644 openstack-compute-api-1.1/src/xsd/actions.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/affinity-id.xjb create mode 100644 openstack-compute-api-1.1/src/xsd/affinity-id.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/api-common.xjb create mode 100644 openstack-compute-api-1.1/src/xsd/api-common.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/api.xjb create mode 100644 openstack-compute-api-1.1/src/xsd/api.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/atom.xjb create mode 100644 openstack-compute-api-1.1/src/xsd/atom/atom.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/atom/xml.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/backup.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/common.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/ext/rax-dme/api.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/ext/rax-dme/rax-dme.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/extensions.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/faults.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/flavor.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/image.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/ipgroup.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/limits.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/metadata.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/server.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/shareip.xjb create mode 100644 openstack-compute-api-1.1/src/xsd/shareip.xsd create mode 100644 openstack-compute-api-1.1/src/xsd/txt.htaccess create mode 100644 openstack-compute-api-1.1/src/xsd/version.xsd create mode 100644 openstack-compute-api-1.1/src/xslt/schema.xsl diff --git a/README b/README new file mode 100644 index 0000000..755cb35 --- /dev/null +++ b/README @@ -0,0 +1,9 @@ +This repository contains the RESTful API information for the OpenStack Compute project, also known as Nova. The Nova project provides open source cloud management and orchestration services. + +Contributing +============ +Our community welcomes all people interested in open source cloud computing, and there are no formal membership requirements. The best way to join the community is to talk with others online or at a meetup and offer contributions through Launchpad, the OpenStack wiki, or blogs. We welcome all types of contributions, from blueprint designs to documentation to testing to deployment scripts. + +Installing +========== +Refer to http://docs.openstack.org to learn more about installing an OpenStack Compute server that can respond to these API commands. \ No newline at end of file diff --git a/incubation/openstack-api-extensions/apix-intro-proposal.xml b/incubation/openstack-api-extensions/apix-intro-proposal.xml new file mode 100644 index 0000000..943521a --- /dev/null +++ b/incubation/openstack-api-extensions/apix-intro-proposal.xml @@ -0,0 +1,473 @@ + + OpenStack API Extensions + An Overview + + + 2010 + 2011 + Rackspace US, Inc. + + 2011-06-10 + + + Copyright details are filled in by the template. + + + + + This document provides an overview of the OpenStack API extension + mechanism. + + + + + Overview + + The OpenStack extension mechanism makes it possible to add + functionality to OpenStack APIs in a manner that ensures + compatibility with existing clients. This capability + allows OpenStack operators and vendors to provide + innovative functionality to their clients and provides a + means by which new features may be considered in upcoming + versions of OpenStack APIs. + + + This document describes the extension mechanism in detail. + It provides guidance to API implementors and clients on + developing and consuming API extensions, it describes the + rules by which extensions are governed, and it describes + the process used to promote API extensions to new features. + + + Please note that this document is a draft. It + is intended to give developers an opportunity to provide feedback. If you begin + implementing against this early access specification, please recognize that it is + still subject to change. Comments, feedback, and bug reports are always welcomed; + please submit these in the webhelp discussion forum at: http://docs.openstack.org/. + +
+ Intended Audience + This document is intended for software developers who wish either to implement or + to consume an extendable OpenStack API. It assumes that the reader has a general + understanding of: + + + ReSTful web services + + + HTTP/1.1 + + + JSON and/or XML data serialization formats + + + At least one OpenStack API: Compute, + Object Storage, etc. + + +
+
+ Organization of this Document + + + + + + + Provides background information on + OpenStack extensions and the OpenStack + extension mechanism. + + + + + Chapter 3, Extensions and ReST + + + Describes the specifics of implementing + and consuming extensions in ReST APIs. + + + + + Chapter 4, Extension Governance and Promotion + + + Describes API governance and the process + by which extensions can be promoted to new + features in future revisions of an API. + + + + + Chapter 5, Summary + + Briefly summarizes the benefits of the extension mechanism and + provides a brief overview of how extensions are used. + + + +
+
+ Document Change History + + + + Revision Date + Summary of Changes + + + + + June 10, 2011 + + + + Initial draft. + + + + + + +
+
+ + Background + + This chapter provides background information on OpenStack + extensions and the OpenStack extension mechanism. It + describes what extensions are, how the extension mechanism + in OpenStack is related to the OpenGL extension mechanism, + the differences between extensions and versions, the + concept of versioning extensions, and why extensions are + vital when defining a pluggable architecture. + +
+ What are Extensions? + + OpenStack APIs are defined strictly in two forms: a + human-readable specification (usually in the form of a + developer's guide) and a machine-processable + WADL. These specifications define the core actions, + capabilities, and media-types of the API. A client can + always depend on the availability of this + core API and implementers are + always required to support it in its entirety. Requiring strict adherence to the + core API allows clients to rely upon a minimal level + of functionality when interacting with multiple + implementations of the same API. + + + Note that it is quite possible that distinct + implementations of an OpenStack API exist. First + because API specifications are released under a free + license, so anyone may use them to implement a core + API. Furthermore, the OpenStack implementations + themselves are released under a free license, making + it possible to alter the code to create a specialized + version. Such a specialized implementation could + remain OpenStack-compatible even if it were to + implement new features or add new capabilities, but + only if it made the changes in a manner that ensures + that a client expecting a core API would continue to + function normally — this is where extensions + come in. + + An extension adds capabilities to an API beyond those + defined in the core. The introduction of new features, MIME types, actions, states, + headers, parameters, and resources can all be accomplished by means of extensions to + the core API. In order for extensions to work, the core API must be written in such + a manner that it allows for extensibility. Additionally, care should be taken to + ensure that extensions defined by different implementers don't clash with one + another, that clients can detect the presence of extensions via a standard method, + and that there is a clear promotion path at the end of which an extension may become + part of a future version of the core API. These actions, rules, and processes + together form the extension mechanism. It is important that + core APIs adhere to this mechanism in order to ensure compatibility as new + extensions are defined. Note also that while a core API may be written to allow for + extensibility, the extensions themselves are never part of the core. +
+
+ Relationship to OpenGL + + In the 1990s, OpenGL was developed as a portable open + graphics library standard. The goal was to provide a + cross-platform library that could enable developers to + produce 3D graphics at real time speeds (30-120 frames + per second). There were several major challenges to + meeting this goal. In order to be considered an open + standard, control needed to shift from Silicon + Graphics (SGI), who originally developed OpenGL, to an + independent Architecture Review Board (ARB) who would + be responsible for approving specification changes, + marking new releases, and ensuring conformance + testing. Additionally, the graphics library itself + would need to be designed in a manner that would allow + the establishment of a stable and portable platform + for developers. Finally, the library would need to + garner the support of graphics hardware vendors as + they would be providing the hardware acceleration + needed to meet the goal of performing at real-time + speeds. + + Gaining vendor support is challenging because vendors are often in direct + competition with one another. They differentiate themselves by creating innovative + new features and by providing niche functionality to their users. Thus, OpenGL was + faced with two competing requirements. On the one hand, it needed to abstract away + vendor differences in order to provide a stable cross-platform environment to + developers. On the other hand, in order to garner vendor support, it needed a method + by which vendors could differentiate themselves and provide innovative new features + and niche functionality to their users. + The OpenGL extension mechanism was developed to solve these problems. The + extension mechanism achieved balance between the two requirements by maintaining the + core specification under the direction of the Architecture Review Board while + allowing vendors to define extensions to the core OpenGL specification. The core + specification remained uncluttered and presented a unified view of common + functionality. Because extensions were detectable at run time, developers could + write portable applications that could adapt to the hardware on which they were + running. This method of allowing for an extensible API has proven to be a very + successful strategy. More than 500 extensions have been defined in OpenGL's lifetime + and many vendors, including NVidia, ATI, Apple, IBM, and Intel, have participated in + the process by developing their own custom extensions. Additionally, many key + innovations (such as vertex and fragment shaders) have been developed via the + extension process and are now part of the core OpenGL API. + OpenStack, while very different from OpenGL, shares many similar goals and faces + many of the same challenges. OpenStack APIs are designed to be open API standards. + An important goal is to provide developers with a ubiquitous, stable, any-scale + cloud development platform that abstracts away many of the differences between + hosting providers and their underlying infrastructure (hypervisors, load balancers, + etc.). A Policy Review Board, similar to OpenGL's Architecture Review Board, is + responsible for directing development of these APIs in a manner that ensures these + goals are met. As with OpenGL, OpenStack requires support from vendors (and cloud + providers) in order to be successful. As a result, OpenStack APIs also aim to + provide vendors with a platform which allows them to differentiate themselves by + providing innovative new features and niche functionality to their users. Because of + these similarities, the OpenStack extension mechanism described in this document is + modeled after the OpenGL extension mechanism. The methods by which extensions are + defined vary drastically, of course, since the nature of the APIs is very different + (C versus ReST); however, the manner in which extensions are documented, the way in + which vendors are attributed, and the promotion path that an extension follows, all + borrow heavily from OpenGL. +
+
+ Extensions and Versions + Extensions are always interpreted in relation to a version of the core API. In + other words, from a client's perspective, an extension modifies a + particular version of the core API in some way. In reality, an + extension may be applicable to several versions of an API at once. For example, a + particular extension may continue to be available as a core API moves from one + version to another. In fact, different implementations may decide to include support + for an extension at different versions. As explained in + the chapter on "Extension Governance and Promotion", + when an extension is defined, the minimal version of the core API that is required + to run the extension is specified; implementers are free to support the extension in + that version or in a later version of the core. Note, however, that because the + extension mechanism allows for promotion, an extension in one version of a core API + may become a standard feature in a later version. + + + As always, implementers are not required to + support an extension unless it is promoted to the + core. + + + Because several versions of the core API may be supported simultaneously, and + because each version may offer support for a different set of extensions, clients + must be able to detect what versions and extensions are available in a particular + deployment. Thus, both extensions and versions are queryable. Issuing a GET on the + base URL (/) of the API endpoint returns information about what + versions are available. Similarly, issuing a GET on the API's extensions resource + (/v1.1/extensions) returns information about what extensions are + available. (See + the chapter on "Extensions and ReST" + for details of such requests.) Note that, + since extensions modify a particular version of the API, the extensions + resource itself is always accessed at a particular version. + Backward-compatible changes in an API usually require a minor version bump. In an + extensible API, however, these changes can be brought in as extensions. The net + effect is that versions change infrequently and thus provide a stable platform on + which to develop. The Policy Review Board (PRB), with the help of project team + leaders, is responsible for ensuring that this stability is maintained by closely + guarding core API versions. Extensions, however, can be developed without the + consent or approval of the PRB. They can be developed in a completely decentralized + manner both by individual OpenStack developers and by commercial vendors. Because + extensions can be promoted to standard features, the development of new versions can + be influenced significantly by individual developers and the OpenStack client + community and is therefore not strictly defined by the PRB. In other words, new + features of a core API may be developed in a bottom-up fashion. + + That said, not all extensions are destined to be + promoted to the next API version. Core APIs always + deals with core functionality — functionality + that is supported by all implementations and is + applicable in common cases. Extensions that deal with + niche functionality should always remain extensions. + + + The table below summarizes the differences between + versions and extensions. + + + Versions versus Extensions + + + + + + Versions + Extensions + + + + + + + Rare + + Versions provide a stable + platform on which to develop. + + + + + + Frequent + + Extensions bring new features + to the market quickly and in a + compatible manner. + + + + + + + + Centralized + + Versions are maintained by the + entity that controls the API + Spec: the OpenStack Policy + Review Board. Only the PRB can + create a new version; only the + PRB defines what "OpenStack + Compute 1.1" means. + + + + + + Decentralized + + Extensions are maintained by + third parties, including + individual OpenStack + developers and software + vendors. Anyone can create an + extension. + + + + + + + + Core + + Versions support core + functionality. + + + + + + Niche + + Extensions provide specialized + functionality. + + + + + + + + Queryable + + Issuing a GET on the base + URL (/) of the + API endpoint returns + information about what + versions are available. + + + + + + Queryable + + Issuing a GET on the API's + extensions resource + (/v1.1/extensions) + returns information about what + extensions are available. + + + + + + +
+
+
+ Versioning Extensions + There is no explicit versioning mechanism for extensions. Nonetheless, there may + be cases in which a developer decides to update an extension after the extension has + been released and client support for the extension has been established. In these + cases, it is recommended that a new extension be created. The extension may have a + name that signifies its relationship to the previous version. For example, a + developer may append an integer to the extension name to signify that one extension + updates another: RAX-PIE2 updates RAX-PIE. + Extensions may have dependencies on other extensions. For example, + RAX-PIE2 may depend on RAX-PIE and may simply add + additional capabilities to it. In general, dependencies of this kind are discouraged + and implementers should strive to keep extensions independent. That said, extension + dependencies allow for the possibility of providing updates to existing extensions + even if the original extension is under the control of a different vendor. This is + particularly useful in cases where an existing extension has good client support. +
+
+ Extensions and Pluggability + Core APIs abstract away vendor differences in order to provide a cross-platform + environment to their clients. For example, a client should be able to interact with + an OpenStack load balancing service without worrying about whether the deployment + utilizes Zeus, Pound, or HAProxy on the backend. OpenStack implementations strive to + support multiple backends out of the box. They do so by employing software drivers. + Each driver is responsible for communicating to a specific backend and is in charge + of translating core API requests to it. + The core API contains only those capabilities which are applicable to all + backends; however, not all backends are created equal, with each backend offering a + distinct set of capabilities. Extensions play a critical role in exposing these + capabilities to clients. This is illustrated below. Here, extensions fill in the gap + between the common capabilities that the core API provides and the unique + capabilities of the Zeus load balancer. In a sense, one can think of extensions as + providing frontends to OpenStack plug-ins. +
+ Extensions and Pluggability + + + + + + + + +
+
+
+ + + + +
diff --git a/incubation/openstack-api-extensions/figures/apix-1service-core-extensions-manybackends.png b/incubation/openstack-api-extensions/figures/apix-1service-core-extensions-manybackends.png new file mode 100644 index 0000000000000000000000000000000000000000..ef56fb8d07f7dd32dff7eaeca55ef445e2426e47 GIT binary patch literal 16465 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 P2!x!JvSg9Cap3<0aFc;k literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/figures/apix-1service-core-extensions-manybackends.svg b/incubation/openstack-api-extensions/figures/apix-1service-core-extensions-manybackends.svg new file mode 100644 index 0000000..fa79343 --- /dev/null +++ b/incubation/openstack-api-extensions/figures/apix-1service-core-extensions-manybackends.svg @@ -0,0 +1,559 @@ + + + + + 2011-05-12 16:35Z + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1service-core-extensions-manybackends + + + Layer 1 + + + + + + + + + + + + + + LBaaS + + + + Zeus + + + + Pound + + + + HAProxy + + + + + + + + + Core + + + + + + + Extensions + + + + + + + + + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/pom.xml b/incubation/openstack-api-extensions/pom.xml new file mode 100644 index 0000000..c1a50e9 --- /dev/null +++ b/incubation/openstack-api-extensions/pom.xml @@ -0,0 +1,131 @@ + + + 4.0.0 + + org.openstack.docs + openstack-guide + 1.0.0-SNAPSHOT + jar + OpenStack Guides + + + Rackspace Research Repositories + + true + + + + rackspace-research + Rackspace Research Repository + http://maven.research.rackspacecloud.com/content/groups/public/ + + + + + rackspace-research + Rackspace Research Repository + http://maven.research.rackspacecloud.com/content/groups/public/ + + + + + + + + + + target/docbkx/pdf + + **/*.fo + + + + + + + com.rackspace.cloud.api + clouddocs-maven-plugin + 1.0.4 + + + + generate-pdf + generate-webhelp + + generate-sources + + + + + org.docbook + docbook-xml + 4.4 + runtime + + + + true + . + + apix-intro-proposal.xml + + false + reviewer + openstack + 1 + openstackdocs + 1 + UA-17511903-6 + + appendix toc,title + article/appendix nop + article toc,title + book title,figure,table,example,equation + chapter toc,title + part toc,title + preface toc,title + qandadiv toc + qandaset toc + reference toc,title + set toc,title + + + + + + + + + + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-Bold.ttf b/incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b93c8134789677593699118eb116ac4da83e1073 GIT binary patch literal 56648 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 OE}kPZ$C|NL+&=-XE}xzN literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-BoldItalic.ttf b/incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-BoldItalic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..008c09f666b5522d6f93bca0365bd7b13cbec98d GIT binary patch literal 60188 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 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-Book.ttf b/incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-Book.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d4721f56ec86914814980f7ecce2186d2e3883ee GIT binary patch literal 56692 zcmdSC2Y6h?)i*wKSK3vVR=cZJ*A{74(n>37t9tLn>XI#4mSstnt0ZK((u`w@!5GI7 z11}}Cm=bCNgq8#dEd&UV0-+iRog}m$Z)h+r%(0Ek6el86)PF@OB@;4 zGCnz#5?(YDERMV_KK0sISc^?ZCFVmA;ELG|)Ch+_DLFUf_ zgbM|Nwn6<C)?O0t6vgE(n4j{_h65TUhdU-sf2R@W3c5WxDVDBp77(vu|}GO!)X% zxC-TT%#VM?Z1eu@-|2i4Jz!-2z&!-RvLYr&yL+j{Z$SIoet*nsdI>i#+N7b;kn zP=)h*@Ey*&_`CSN3%~Ecc{Jh*O*06GP!U! z?(Jm$vWHOb>G-`B-%%`)53+v#OO}K0dcdK=!El^`XDmV)tKmOqW}y;C5a1nPGQov& zH>+mvvl4cE`k#VaJg<^9vMQkfM+NRz;k%rf_&Qd_cQGR$o1VgRCE!B2ESkyr>o{H! zzmxet*gmxPJifPs7Aw8D-v)g2;wZwQ!{JY5@a@F+q)f@O0dKmX6@Tjq_u{p$*e1SR z#J!mvXK{3({Np%M@vK(F_gCyPT(|Pe#pg?9t5~h~umbm)BHju2^A6d0z!}j3beMhc z=xL8gi)g?Y&5}SX)eIeo7PF5SRwMo<2YY|| zbI_s+-^cJBEaKls2cpI713V}G1}%slzJq818aL24)dhZ1u`gMm>_YJU1)w{4i0C-O zGq1B`;L`xSuJs-h_i{D*LE6N+>kavRCosi?pr+0vUQ8+?zq~aht$Kud<54vZ?A<`e; zir*YK^UL$;jlk=3(C*`+ufEaQLkK%4c#!;r^b>3}@c;>f~5eP`cy0M2xjO`H83 z&PgAX;vo65;xOY#We>6l9B!QdN9EaG79t)#c=j?gew$@F@Y0PZVVB*tc0@I)l!n z%huU-`MOHoxNfIzpYC?OO0U%$^d`Mk-=SZn|Ii>9F@k78Z(R**P-n)-o{s>?K9E#Q^Koa z+bUhOE?%e8C8KSdE>CQGQn!0f+wJ<^nYNX)+8*+@y;^Kr_KxDSEuWo%wmXl#bL@Sz z&8DZP-XA3gfpqrW+N-_d)I-gWfI z(bJFaI685(U(iQElR*;!E9EOCTA=6uU;N3T>F@_85IJHN z2z{NPE#{9rLa;AV~63BvBFt{@m_C`3kTgf7!^VHBGQP4TjECw1S4qTVO z5?K-`u4e{jWXUXrnZU!TERCfz3(H`ckhUzA&2nHp*qMVlnTxquF3SUt7O+BA#ELOa zma;Nd&MH_X^mH|=VYRG|)w2fH$eP$P*c2_Sm9?>U*1} zt!4x0)_LrFwvS!JE@fA+YuSzL26huW!hXhXX1B7Rv)kD1><)GpyOZ6`?qR=#C3P>m zAGY1E*dy#=_G|VV_BNYfLu{C>XYa5b?0PoNHnM59jcwqO>;m>*Je+OeDz0WDY&#F+ zAs8+H$|Kk&b_V+kyM;Z(&S8UWl!vkBxRM94&FoC}ceaM@Vdt{T*^}%k_6mEIy}{mO ze`Bw)2YCj2jQyT{0?YIx_A&2+opzM%WUsTgFv9F*``M4!#q2_M2|LJs%nq=hu*19; zBlFel8g>WG}LpAoG7_FS8d!!kU18`j-!!?ZJo>&4>5|zmVU+ALW1M z@A7~0Z-pSCP-qi&3HJ(rmN8kbtW9=>>{;0xvd{elzbL;{zc#^SAl0^q=rQ z&;L&Ur~F^`|6Cp^H^_(Nd*ye_UsD7qiWL)zy^7lvPbrQELRcLw*|fs6cOYKst=k7x+3VNpm&3Vf~~=;f)51W8T|K}iXv60o0qmhRrA6Lm$4%LL}GSzFUB7PPG}EnAB`5GtD`TBemN#RW+LX< zSVQbk>=m)k#ree*$F;?+jXNvuaNMi$@$vQXJK}GN|0p3g!I7{j;p&9v5?P`nac$z^ z#1|4@OZ+M+B&jm#K++4k2wg7p>vg&}bpO;deJr$VwSJ9$ul@@CGy1pmpXiSn{GefV z1_$)(O2dTVpy7z&7ltPcZx}0$ZN_!R9mWfchmH3dUo;+1PE9UMJ}ddQ6?cKEF>Cx%A>DB2& z>DQ&dV2QNYERB}6mR**AW&~xpGInJ=mGNz6Vdi<6zpw^byR3(;FJ#4MO=jJj&9b|) z_hw!3Yg*lqUn><>5u$8yJ0POEc|^9koi&Tn0@u6oxx z*Fo2#u0OjY-R15U_e%F}_aXN$-0$Z4SAIyKKz^|Yh8VK_Y{CHBN@R{AyjK}W2 zclYjC&UOn|PYv<2KA-xWzx}VzKmXU%e}7KmAV3E&9syfG2Cc^2GP_LSv}=A5F&eUR z-GlsHPvV0kBVxI9{v?kRUX;qIP|k?s>4>3-m%|6caWB~OZ#u-X8dMyBI^&@EnB8r3 zONU)ycjHhP#lz?}Dpa_!Ot&JaOWPH^BC#Ry930(2%e57}K= zdHCVq;Op6EpXEW965KMDHGMPxK!A+|O`6RxHHgwWO=gqR;c}w`t|+a-WY%b-v{4$h zT%j>KO)3-!;~KTf<#st8<~&7ncY(8J%?f+s`nbTVj)anoveABfeL{rZlC>`_CVf-% zK&tR@L~?d(V}C$LJC6+RG02|_(&%j+ts8?n+68`JP}u!}R(-l>ufNJ*tu_HJf2N&& zMWzv+0EA%}1CpWJF>SDOnZe|6*=+=k$%gh#MuS|VX1;4igIOKryM6<|rNpz`Qs3Fp z(Ae5Fwk*S9O3mck#b34cff>?;G~pjpD!#SvhTfj`=2dw`uH531T&L%t^!s*K5nU-3 zan(HirEsZmJ;ow4#u?^zxLs~52dYGX6k3~!c<}hwFm{i5MVL|O-ZI&zK z&GoTPefmISL*K=FO@1rnm8WfWTH135&w1aKm04-6u6I=wU7a3ceQ0@}Dk{FqRMyd4 zvcBrNiZws(IJYFtIL_Tk?xaMsB`MYOH+yyQ!_mPhG#Z1a*u^4GG2*Da8BW5z;%NuB z;a)IfDuUN8fOJMvaYbBF=fywnx|aK2a%IVoXX=^XdyapF^4Tb#ES1+rIvp}QP_2+F z98?z1JjZ3v{GJDV^(H+=U^u(RsQKuz$Lbz`eCxw?4?R@( zFqP9xpN+9|BY1&n!TFlPjqT@r_8IXn*%L3Z?|3}jE8=#|cP}+Gh}T>2`LOg1)!VXh z<3_p;%gw>}NVrmfpAvXmljol2WLKX+Z%B^Qr@!R?5{|$Mfy}uf2X3M+vA;qjs~fab z65A<2*(Reg_o9Nqm{fDjaBasi@a@NJ0 ztCsJlHaJ^{k0Ho)AY*!^JX|ol?Mm)14~(jC-nc@r2Lx#HOD>oi7Rx$O_AS`x(a-=+ zk)_bIS>iZwl)`1#Yn<0#TAx?j95m3pX6Lg0=5lQ|_aDCK!LqEv>~8aLTgje*=4`)a zscq-<*ZdXXCg7fA-A=M%rrtPhB+hh3l}qBD2r-u%4NkwFy0Z2GLuo{KS;m%zg1TmT zOZ%|9dPPk`-?`&mk;_xc?HzGJyfr}En&H;BC75m9#hr4$zS_>UXjFhL$KVjU3YK0Z zQJUM8L}sJYT)>qMHdmWBM!pPtZCR)+F;ckkUif6{uSdVkhuoE>%5Cr|_uJ$qVG_1;_AP(5E0Z@jPu)u}%9sf-ehC<(prJEGopVy- z$Q51+nIvU=Qrn1BHOozh^6R#)>69+ zd0u00Po1qTM%!1~xqdx2g#~33-@;3X&`HN-sZa<3`UONU^}w&<79CDFdxgv+>%(jcsBn zE-D8OjP>%Dg*uGxs3}Dg$~Ag^kLNDl$}LSV^;~o93e;t0pYSjFZ+-3QHU6N8nLp=o z@aOopy1M;!b?7|DtfQCzNvNf|+|Eqy^w$`8E9$zZcg3~WtauU5N`dAE{6&#gu|z3x zfFwqp5m&G}nFa4A7T8Li)%A+5#@-3D%cSXB`%qfvnHA1>W@?@(Dns()rn zQS(S`Q$lcQsys3*wd}{^yKZT2I)A(`VsQI4#;g=eu_Za9ye(^Q^`+0=diJUVhJ>o# z>h|pwxz8s>L~6&Y*PVasvDVh~{B&Mqakb^A<&c6AFmf~D2zXpUBZ3_o)@ar%+Dib3bLG&jPx1CE?$h^LE*{@@ zF#NGr&mBn*`Ct^feK3+$ZC4uc+11Z0`ujb<7OwJq#G|K%xy?iKNsjq7V~?Ob#&OVG z+1F2;f$J)aS8=!=L2^et?Q-HaY*Auuqp>0?s9zD5Iguc14=adn<9B-UYcgX=iAa4H zM)54LMnjHTQNrzk+$b}dqcng-aDTkp^AzvA@JqRy3s=3Jr!D%z^MvPmE|ZtVrFjs0 z@Z#@}r~`aWaOpMZ0ep{B_qWcpAp@b{iJ)jE_dl$BQx?}mX(5+r z`kEi*NBD=Ao&D2(nLm#RG^+g+0cWl}t0qbA&k;Pi%5%@0ya@<8Q+G>zSh(Pb zU!51Ciu63fD<51P8SYLFEiIILF7&}DY@F#Q40IFW$k)$3?^Q$x^`HKyUJd3Fp6y%f z2afPERJ`Hpy58$Nw|jNWeb6xxm}z)*jA-?cMI8tJm&o%{;%R@uIA*Utjx^fg#?zYkBoFuq3O{5RiGpEO=pLCGsTbF)N=3ch~hpHhZBvDL2ueI&HKo&YI^gsL_`j z5)&$_gsYUwuG~gzOi-vP^~-09jh?5K$Z@4KS5L00uMMf)P+=`j?kGKTZF|@XW3fHO9ivR{EN&Z$?ufIe z8FG>$(_2e>#?TJNDBs!|l7y$lt{`dT!jAZL$oT*F&LP(AZ_%SVMiIF<=t)L6hob zcJL#KgpB)5ufI_j9+q_D&Apr>x$$HcTy-hbB#|d1mKiRCufca_-r6WRpMR zdQnaY7hBN==}k@jZ=lHgtMJWPQH=pJ?0r%IBzSTuWCQNyDd)_A;B;w;=cuut2(FeJO z1Nl6RgPr6W$!<^N;e|0d8Q<~WdfxR@@(_6_4~n+&*jB!8d92X7+%qiK3K4-3oJYt= zm-l1t5`(!5XsIO=8b|*_LqnLol%06LRH9`L%DgDeZ~Or#-|e}liMRPCIGokvzMr=a zVh9}dLqiWebdfBsRGI@p=faowj&Kd}P8_$ZjAn)E_HDPXKL31N&+|O}#TS5uO>f~} zO+QKcng$^Ll_#X24cE^Q3NYWKc{}EVcI_A2hT4RJeH4Wj!1Le0sQLolTxd(!M^Ff+ znF&V%S8I(l-#RJAP!PCpIrnr;7T;M{;fcL1m4hnw6gcm&?EoN!~vUK|er%mq9wsd?|KQ!3bG)R+2%x9;+ z<(Kn+!Ea5z0jge_Oq{eCOy)wv8fT$hZno8}?5%a!6!xm|3%*)ckz!G|Xjj)auSsf; z0kUA10#_cutQO~?BCgC16Q;NjPNUO{BcEP2Z|`4QDDYmz^5TtaCRaD^YHi6cZvOJL z1DzKC2-)Wz_4?D>R-C`3Y4u=3{m7t*6EpPBd;A!D?WFUmewyOyMY-3A)$8E~f+cA_ zd)@Fj_gojayrQwOdD)ipR{{Y_W0|Y&n~94qIxA37*J15WK5%0}jEm+tz&P&`{zNzs z*-M&0Yc;4!Ay2>z-KgBQWlOBNFUhD2D~Sj=_gsEMjb_AB5zrvFCFDlccvgAg%jC!S ze@n9-(U^4srv#YfZ_$D`L~MxDa`S8}x4XA}odH6VyK!LKw*I{3YR)?&RFlhlSLHPp z6ccKet;np`SHwiLows@7;v9?IKTw_N*|;;OsLa4`s#~?Xp>}u;`cjR)90v_ZhDG~< zI2Pl#QJOPDkP~=yugo!aMp|TVpr$pmCM;NZ@ndK7^7UCOJkx((t!s5z4SkOjJz>4G z8-&M!A4sn_uYsN|8SLv7Rt*hJ-M~Ng0Aoy;{^xWyyH_k1b+R1BH*!9hMFXgqw+{CA z`UQkmWvL92a(4vsEvSy$`P&|SsU;@W>faz(!a-KzN%TQrBJWcllHwHMBKD`d{?28)k0?yxGO+p0ai-8fnL6gDuX_G0Ss?9m3&l%5cjtK1yP?e>Ygaq~~RK+PJ z;bC0ex1%{NYt0(BJ-yE}{ds46Wp1Xf^^f1RXe+W)Q(9h?`UjZ!3A9btHOOMuO3fzl zxlMKY<&TywSE7}u*39a#;4jYH)znp-mpbrqeDv_nV$Tq=@Z zEx6tXn>b50YonaL`XFORdgWd6ywg@qZtb6hdTuMqUshL8+V1}}e|v1CtN((r$pfn+ za^HiZZdkU4bd3PNfP;UF`lDv_1DSmevje^)bX}Ab7g=uP(=lxy$X^~M6ZrC8fA_?i zEvuV$wKnIMd@;G-nH{E#jrH@NYWTA~cIEkx{nx zw6m;^iPow!D#C+#x@%weDn)ysD_g((QNklEzamK(& ztH@4sMh7RFoZ95RCRd@tmXnfMnNnz5(^8>o)g|Xf2865PG|7(AW$LCFeY{B@nNVb{ zXrs2Kr=WK`kbfiEFGZld-Rahli^*%pkUl#{b=qmY=bYp3pPCq}x0?F$Q`Wv&Gn#a9 z&EvJvaf#u}!T@s#bnfTyD}a|oI|$DMawu}I+7&I#?&#jonCfNbP(`o2-M?VHtGzX6 zh|As^FqAjNSqonAJlC+HvE52I!1&2uMtx*&NH$FghavRPy=#Vaet!NTTYBz>+<&m# z5F4Jtt4RTf&&VPr7^G+5Vo}Z5P)3?Zhx41SA8bjI`vpX--mpR)84%ajbM^X;#PCR1 z4j+5IS(mCb*m;iU%YtTm4-fKazw51PYMqkkLNNUW^+UVZX@HjO83hJ;GO)rpW-NEz zFxCRG)NXKLm&tvW3_G5nD=o1+DPA#6*}o#rHKyT*7{U|h0;PkH`OrAr7%|p3 zct{4E_n=NS$+Ze9OEREjs7~Q3;F{zQQvw4MQ=jMCKhs9Y0#$i$)${m_z(Ap<(Q`CT z=^x||Qxx^=gPd%G&Vrq-g;UGy#I%gYW>jH-`i5prgr`p(<_M0kt*tSU3SPBco{TyRp*^v#T^#6gEPEUhHDzQSeHIun!9vviyFwiKb%kR6$; zON>iNDvH%v!=b1IwrzSD`#bP{a-0J9oj$TDqAi5)85x;+j=$qcLb+ZR#Gezc1Rr4@ zmf{pAE)+2m14c@*agA9?fubm$JF;!Zu-&PX>#}lE12UZUg0ixpmZ0<2kDMRe)FcmS ziIjP6@r!BG$Xc%FEy~W4@*a_PMd;k8!gbUFeE4F70O%{`J|C@QPe9U(R<#>Uvd3enX4!-zj$3;oy}QaoW9IG=~`yN zjV4P|ZeD>?JWr}~*z4=y=?8uMfmjXrgXT8W3o{)vq6bB#AZ2y*7dKmfG`x4)?r?cP z@a~B{gXd)4bjLAgtMilZ64cu0sZVfv4D|`K_>F7{aGU}<|M?#L@p^Jf-s5>xEa#lI z@V^UxL!1-V2T3M*_`OOPYGuAM#&lB(ba*G7W)-eTk6hCK^f-80 zx96*FpzU%HgPVd|pSrFa0 zt0l59Yy;X)$FwgG?I&P917D@e7eT-%>5ZZ!a9|G88n}YY82!sMN!7FX>c&pXC zHY-c!aIcIB;(moZCC8x&2#Od>TEYGKHd|VjLnuwki!Y9KD}$pe&0!&78TQl&gJ4r> zf1H&i(HI${f8`H?$1uu}VW+il#FG@-ug~i~Gk zbUXFr5#aaq{HnwA?_Uw#F|S)Rp5`|P*J%_vUjo};M;q~v0=y%+Of*i3@hp4+(r+9p zDmFE0l{F2Hh**7s&XH-!Nm+n)&y)O2wOv=O3Nap-Fhm}CBPJmpLo{cbgg$y|y38yOF_ zG5f1U3}v(` zBQ*`#Ea{g{f}d=zQa3L2g^L(HnhzdV0b&I-AR=>*0mOwguTs40G`VwZrD4;0Hup!h_k1D3ZYkvs3laA%^tQ>>P_S$)HV$RV(6~nq2;- zL}Rwv5T;f}Xvo&Ef>u96j1>~3Dw4szqJZqApFAm{A%h=05~kGp`NbyXd;Z~-`OT2| zAdI$PLgt%~f)FBSiGDj0aIW0n+gn}RbA77Q(dKlHAscsmc}3-lOt&2#_xV-+X0&&-qqfHL<>HmLx6cC;y_Ndi23gXRS5O5(7WE9_lbogG zoP#XG_d6FGkEvP=C9z>CL0O#pD}rJ(REe3%$}p|}r;D`x{`z=?8WlWV6`B&L3Xf4w zA*3`r@JRWng#QLWq=1&knBlWI=40*rUe9~Ip7$4NVkvdaO?5|z9sdeM_j=AN)pF9@j z-_Kl_${(ZfDE%^ljV(G3fNq8Y47zg0!mHI(rCdOshL>d_$xvlG+uIPSY255wL z1o*(1a1MAdf~-%`D?BR}I5!TiK~-H975laoY&>t*+N!ZU+iAJw4a;k?*V^y6gWFqp zbVR~0PTP2kA*wAp9wG5_Vw6uI+AGEGHp)nkz_>Yu7D0@5ZhZ8wODU4OW(Q6e)gX%m zQ$<})^OE~Syo=s@(&bWQkEZ5ivO%lOimLKeq}V@LEVe3=b8_(jt2Fof`nT|aEQ&IC2AiT8{UH2{u z)ItJpS{&`r=MsDp|3{1Z9NbUyQ`srt;dhW^|9a8JC2<*9yg`n23I~vT6ifCgoE30a zNC}pwI}RQ4{XgJ4!4)qL{tI#PyD?TLPh3snc587vuXOed>|9pfG;q2prg8B6Iz;+QYSNm9FSz!R^6E$VcK6}! zeP`qy-qzKIb|HrpOBQ)Q9$JDpf2oKvuOznraDH4_Wci;i5nP^MKXLq$^*e~&zy2TA zFDEVMv?Q_4p(XJ}w#T?g z4`k4AaSWIp#a07Hjk6=!(f~3)o-K`?l*X@-x9Aw2xZ!CIX% zE1AQX+oh{SF2|}!^_sJg%W;PXnH+6#NJauMh>?6FL<)b!${mU^kY`Vt#ffQ+qVLiP zdzvQC;|#WesPu#JbZ*$P2yLb|BuSp7$S_2=28JXA z?E79w>xLAnAXApp=$GcHI5inDHi$V6UcY5Bt*Drh>>r9kUPVsMN4^&>(F^J+J0(Ou zc>a$3KQ9JnJQn1zpx~ff9rc4T2n#GPKh2akfY}D-B=OIEFO-J7wA9?ZmVg8k<|px< zyiK55 zEH65voJSfu8Y|mc3VR|{Jq15eC#>ZEu#<)W2%5tga3d<8@~Ep(y7A zI!xM*T1YWZ{+nVKi@WO92mI=&>e_0^JT9iqPa&BEM{h3(MjOI*D~JO2%} z_#(T*Hr%`AKK6iuBasht~7*%%|gCNNuDHrp;kqoCnQDE4V)M2TPtY5J?WmQ#% zBgs@fw#nLs?1}c;ioI`KrcOxfkE*u1m0@lnwK}6HuW$W1^}VTey!D2W;bqI$0$A9V zgo_i{cSA)hA!v@bU?f;F1LX2WRR8Jn`B@>tEL}hKt0i(oL^%-RMVg4#kZ9$4IR(8x znS*MO^AM7?*XQSph$8mD{G<`|abexFWNd!j3X-p*|AV^8hXIfA?6F;Pp3esT3Q44X zy;%K_q=nG?U?=({Q7+J;6j~fl*NWtc3Y|SNA6d}yEb4e}TYx=LjzJemj#Xj?rq8Ng zyj9*!BK-1#b|lHYWkCxfeJ~gMQiubk6k@ypEl?E5AK!2Gdp^a&kx%;hBmMnYH*!ON zKk+T$L5i8*^Frh>4{nu%e|ym(VbncJG1e_*tw(pCFLVt!?JNpfEK z^4PGVs-f{i)*^FB^~m@o)}mWD*ROBO88WVKF2pc|TrIWAomahL8c=YZ6sQOv(%caPd=xJWMi3=n~J#*1kz^O}g19Xw_ zB=HM8Q!|#@(%7mehWW|DmL!gmFN!euU@1RFqz97nM0`cjgbAyJDK}co3Bs%f%JL7u z*1Jn&%7~*v&En}Yz*z%)wDHI@naMY!^$yb5Of}EVH~U#nkGyD<(#^KoXQ!LVuKqAB z)0b}cZXKnY4N$rna3%FY!WH@de3G?9Pq>aSb>&ih5%D$UUZOXso^(BS_n+Ju*A-4T?zuGz4c28;RP-_sOT*(=Y^I|3or3}VCl^8T!)eZ&3j~xXd{YpL=fkubRhvvP?iQ9=q9WL zz}#1BLogFD3Iu(!x|(bg6KB8S`Rbc*xW@C_)RyaicU)Ig5fC_(-PYH{+xvc!7OQG~ zy7iq_&SejFh6W<%@|$4QnJe4Q5cR{Cveo=+Xe^3*d9!i7hOTCo0e8~Qg|3hcUD1Fy z?^{>BK^fUwes-SDbBnyYrno!u#3UDB=l4P%N+Rm`mxxpHElGXi&LtKH zd?;bk^Tra31iW}OF1}bmq@kEYC*qLwj<3B%lIi{+A#Iv1NUHPV>d8ft>#!zr`Yit6 z!pGPJglUoVA?h?0?NT5)8WkAQ6o{r{rvjN2$}{KqhbUxe%1Cwo#*mHSk=o2wlQA?# zof8!l7`h{5XF)`aDz!6OgLMnBahtfSqM=7$9M~Ywh{~#}@I2npsLk?&Jg-IG!o_00 zd^XHlX$&A8xpF1?KDUh2^XH{bN<9+GObA6-3;qPH?ZB+qY^N^J8h-BDQ7<_Bt$IVI zze5m;>Wd6%X@+9)nHP|klp@*~V%*~eF&hc|dZl3Cy#md%5g$4^$Cmr%*xVq^oVQBR zJYmkfm~oyp-O3-ulZa~hBZt=;O4dMkn|RhTM{%4oJTh9B;uvsdSj`c!a_kZy!n0PW z11`wsTGZZJyNF>m+sZ{90^19GJ^?(4Ie+9M1Pv8DskU#^pK%aUX#oc(n^8C$`?2Yu zN1d2$!=tPt!x8B$dM9X39zY^FEDcS)ft`K@x*xrFF zpMEOhFbntodh%Wt_7^yLZ+bWT>&d+b=-zJeG2jg~@GHgVXby*3^*Fvj&7QZt)l*4~ zCn&dne!2GxHnn?>d7F~T6;7YcuN2!teWY;3`h4ZE<$-ryb0+d>K1F>P&$P6J2V*gY zCgq0@{i^wa`=1jI)%@;vHB+PL8t~yO3;sa<%&gKhm>Hd!4~Y-m|3Gta4WFb3J^O23 zc}05m3HA*C8-J6cf+@Z{7qy%>=eM>N7u?zl5d* ziqeyLMYxY0L67nzG1rGFjNHB~A4x+<+Y#v)#V=x%YbokCF`v$EgXo*3WHgQX^c=^? zkR!()r*-m+>Z>pQab>M}U5;yn*06^nzv>g@R|U~3UKR4^+){Ru87ns2@=MR#R%SBo zX%&?GU_tV|_m~UTtW}050^U^QzrBI|Rw&cPXL>-t;Ax{mGh^GP^5nSqRnR z9vNuOFL5UFD>5SDqqOnCmzu5NvK&*o4RFMXeYja#Q{~GE6rFWGOIgYe6mz(C=QxV< z6Ag;Qn6kiFqyoAu>bSV{xOje1RcU=wPiq}7C?jB$92andTs(aKjH|>kphza|jWQ`yP%0iJ;>rA_L_D!9tQz(j*HAu^eO@ja z=2PAz%LKFBYRqsY7Y~hOFK+q-c2^Tu2Kv_Fg2m?UhTlTKe*pi-D>CP^Kk>hpHeyzS zNE-;zT>kfY?hNt;{J%0@BT9h(9R6RW)rk^7@B&WuH^2-2x6kK)iTlC(fZ;vx2k|~E zd-(UIjG~h`HkF7;=Oly*FF0oGbtTu#@O`GWU`%9vza%Y~A1mff^;t-A)tOC6rs$aL zpT!cj>uOKUPhD!EZ-?aSF{=XI4hS z@}_19nUp@KCX<}xkGu=gj#LDW{8B|qfPaum6Q4Fvl$2azSQZ_ijEN2i4o^%r>yx*+ zN~3}_inxy0PGhhlC{m+)LD%A#WO za)0gl(ci`zD<62Ev?1T|7hdCXc^(Af|6kj{;(jl(e9%=z(nPZ1cIn_)*K08K#k2s4 zLwZ_8ptx>)d<$>cykY9f?n@7L4voKaQ!#(8?efD-tpopc&8q&P!Jj=aGI9x@`1$6| zfLqGrP4VXOW_oQUU$(G!Y(x|GCJr@zDI z&8nT7;CrGvMi*OH#^)r|mJsjKo^wZK5-ic!KT@*W=I?E#Kr*rR2Lkp%ZyPd=9Ra18 z`Sm{yzWVt0Kv>f{lB`Y8*C6$H<%K0n0_rd3KD%aepVMgnrrG(=n5Qk!U2e73Yf{eW zF8OTixy$ow^K+~7svC-mn_DX^psikRN{BPoyXWHXstTj7AS*8~(`7W&ILpeuHY6k% zB4c7-jL|1(EeRO3{l$D~rwCsP_BpM<9;Om}UbN9Twm3ciGsu_DqyBYSp4giz^k$i_ zHz^76hI*IOo5jP_O& zQ}hWc&o_`j9eC;S7r|DYX*CaI8ysWReWnZe@n(M#%62sG76ep0!`%^_qzunTWcF8`q? zw#G-?#Q8zKXDN_<9K|DxOY=OpF5oDAVqCJ1qeQIJ_y``7bqOyaju?uWn9_*-a+E3X zz?v1<^x_GAF5mlv=dr2L&;BvWoA_SO8J=I3^J;NkDzMn;WBhN}H-h$S^m#E6BSe4@ z-coT#v21)4TxEgxXT#N7Pl7zZ1@wdk`+_k*b~%As{`#WH@3Jl%C4{PzD_5P zRK#bl<)OcQh8sF2RlBaajqmB0LY_Kmi)0T7`>~J z8?#rnD!f-`T|~c%9EoLFDYeznami8QTGzxez0IVet47}f*wh^31|t?E@|A}2nFX*} zVY*lJ6*E7r;X2|OGdmseJ}dD|39T%5)1k%OLR_?|xY)G+&ZOu6<*4v}|5r<0Mcr7E z_(>#1#&a6>pqupOR!h6kQNYl<6P>3StDO6rp6R;$@~+c5L_VAMjCZ#=+C4@u?Knrz z{1-j&Oq1tX=^4)UVAqwuAZ7udwaOfbWk8RY@^qe7`Z2ea@-)vYr5^(vK+!n;Z($1d zg$3S%5{wy*l$DMpLIvCj6H&C=uuBI#dp0bVLuwz?D_H@XquOCl?(R;u z+mlmlmo$A~bl7X{-A0GQ*iCc&MhHd?@F8Y85b~hNu+|YCrC?s@IqrG=1#GRI^1RSi zS2uMhKBw-g2YzHMWBMyu0DNoSRUobixHu!^Iw2xT=ZY}tR7!DyRmNX=_Fw<%dGUq^ zxZeX0cutIF#q`>rm9G7jf8ja)@WVXd;i-S{p8U*}p6+?|rXho3e!b3OLA1Q&3X@rq z+b{uKHou|hp!T$Al{Pbw`x*1IbK?y;p?eo;w=8^9TY7wQRA5v}e0i>=(OMpjJLcop{s#B60 za`pOngEn7N^D!jDnl{qX(AStZ&j*5!^=4#LR8%Zz(o>($ zBR!wG`}*7u&+q?Ybnx~c8j^NuG-_sa==>ISe#t2YbE+xH@Wgq_IBRiDQR;%mr;eAY zttp1gur~__{Hu$qmk|x-_Ep^3cz$111_&Ug=3oZE;RQkRO^FML=fkpVw5D8_tl$aS z25h06?JBgv%@JwVEClF-Kb&@YSVp+=pt-KBw9%cNY|0#pw#?&Cj4JaXiX+{pk?Hoy7s%E}UF zPKhb8y2N2G-4Plct&WV7#i=5-Ii>|rd3u_RDHS>SxtaR>u;gY}Y3XkR(_*3%_1d&s z;!=$9jzrx&+K9V6FM!rXECT36TSlalC>CyM<^-?Bd?-`>g}9i6lu$)N1W1!JR$G=_ zoT^qwL@fYu>Pwe@guPIwi~@Ct4;MUtB>xPtAEg zJ++$jY0LTTi93@oXm1IPxdZ@{izrUdwM)RWnEIRnZm#^=7Uk&g*P`ad@pRgf%JhcC zVO>I_DrUf)$2+mGNEYE8)k*EDkRXE-Yd$0Qjjpsz#0gU-58j^IkIiacqE~N7avk7h*EzsY2 zUXYJ_^?2&7q{r<^x_LZrMpPkpksd6e$$jKqQlX!-P@(^l;Q#p#)apL^zU0;J^T$ao zvVa!h#Yo90H>60hcCg(^V^IuuEUxh{fx6Ed_q^5=k~zzAEY#`tu3AL>dsdM4KTT1# zUR`6Ku^_AZbJE??PypMye)1-=58D~doQn2Z0;rQBZ$||U=kKB?nfxSMMI2$&ubfQ09wOJ>sROPP55_g z&^Nak>`ypr$38);U#wZ>aD1o7f*^R_HE#tF#e^H~!b1n(BFa zK{Su-dxm(PuT9Kv=C(Pjlj4FkvaY?eE$`&!Wc$*7DhnfhX$t`PyWVym09(&Mv$S#;Z*j?~n- zP{CV*c%YA8j2I^h=J$NoFz4kF6XmygT^}=!Wr|SFAmu%0mV-j{xw#ao6ga~4vA$TP zEM-2T{^g5Znzd5wlJnWYOTAjaeq}U9NU+j=K*<=-DkyK}hhgwP=)=;;{hm%Oh43HL zJ73=@*CP?TOBLa*Y%_f$DV-Pd7Wv{o=+&Y*BK60=r%MZRNWecos5>*XqFj(r=+_LI zCHQhe!Z~sEe*nD;dk_bo{^;nY?*mxMF@dE2Fepi1rcZx>eX1XTb~4b)9;{8Emp}Oy ziqn!F#E~%?E8Mg~LCo#LNP*o^x)z1q20_hV=^h{0ih@!t>zG8Nt#XOsi+o zi=yr+ufE7w6s|=gp+2EZuh_Kq`Bc5FduV;hk1HE5sfN1`<0fkRg#VbV68r3N^NY$% z>~1uMyBIg|k{#J&JlR5@VOhPnrG>`!pV= zG1Hfmv2@(jx>O`GbcyJwAg)@eK_7x>w=DO9eVh_!?OfC`cXuM>cTJzbCOHQ|OM-2Q zI9ch!xL0*r$h?>q`9dic{S7a``*}~9FXC-R{$NFQ`!Y*rP`Z9uxIW!cRkzh()9Yhm z^@^eX4X1@yYBt9<WzW5`odaD3R>L;IB5OM zH@pyVsF14!9$hSFWT8T)NS}FjXzV9*gL$L#qIM66AxNd+8Va!bqILpuaK7O-WMzu$ zDi-96z)p4h5P)?6`9W!hWnoF_uFAUH@|yPMl(HBR1^U3MsLe6;+nR<}j!wK}PSj~p6y+9rcRs_uXV`RKA%Ed+l9*d)vomF03=izcl3r4O#MV{fzu1^~ET)A;p*0oDw!(}saQ=ebhR3u7G zBGeAyG>~TjUdT-xpD#Co-f%C;4d5sQ9A3E*Ipw6QRmwB;88Y59LkJD{_}=2?8Od>y z*c2f_fg<20E-Q0X81!Ohf-}Wf zo)zTAby9BfgDko^Vv}mq8=_riaicS&rAWEQgvyU1f^=;c0d8{&0-5O=~TUkvfM zqhh|K0ajf(ET5I^bi9l8CwTwrPw_6n4IluuP4m?xHlhuB|Djt(02?NWW%q7?CZ48KMc zG5W%J-UqxDBLrjg7Xd&MMjTo@Ch$(9!c1{du~odKJiTD*qV$4~DwFr$?9#dNqx{|X zCRZlAbjzAukt$ELtDvA_=X*Nc^Ww#>{hr1{(djX&NY^23y-43&b+Y)N%f<6`o+J2r zP#)+PC=Un>3`h!+2gMExrx&D8om;?5OolsZYws}VKhtVI`=T;P@wvfdG8mGy+Pw~^ z)A8&`AyV_FqK;^_M?81XExZIODs^{l?G3FfV$u?nT9Ym&p>>5aIz^?_m~=rfMdp}&FFHO%ofe1umbBpMSV ziX#H{?(LoD+nD=)1b)N+Z+#o0KSs7f#8npMQ!VZblJF(19|DWRgF^qvY+m4_`5-Q} zPiK_Js0$+kezd3eBOzsQ)jZdVdf1A$OZeLo-1K${!rm+o4(V&q4>>R7n}T)tpFl)! zwVFdkg2teq1x@;VSk`9Fheh)G#PcrFD&k)~JM2B@ESz)ixxf@$?>(1c+#B(p`!N;2 z(|hiZT>H1Y=W?dPTic~N70e>+_MYQSw*u`1On<>lE0f;q&R|VwWzq^7#zOrILSOfm z31i8s0q?nz`Kb;9U)(PcPhW;ZI;Z#DyyHC=SQv7ErRy@RkxBEO`!N$g&wK8VTzPsI z2Gt|S_0PQL3f3j0dd~w{w7AZS$^Y}_fEW9dzh`ooB0Out;74db$BDj7#n4ic+2;CeA3lA{2qignt}5i%+&JWea*xy z6fY)*Mz-Q=8Q#9V3EypaW(4o=oMcOj%){m^4+@fn6 z-ZDI~ZFtD4+rE9fbuAv*f=8@_W2mbF9h(3!V=xlO@VyR=4Fa%soDbplz{KQO&Di9+ z^@FI#;qU8*}11JxM*ZN$S? zq`((cx7T$P%xVzrWtNYP;r`-4E~sYFXS+n~5)KKQL>(WXtZR5;%lffVo!I>UT`P-2 zs6(qnNeuq7-)PdZkmJs^;>iUy2*)wq2bK~6B~77Yv&T5E#S%- ze(^DhL~&xhNicOjR8^M9YNuqjb(53h`B_;DIp=??o+`GCRYF)g!8KLjFC7wZ>OgY3 zPFF~DYH+;@|C+?B9dL*Qp}WmuY5HCUZj*S9%D3Z6HLi5yNqUY-)6pSvHxXoVfmm-5 zi7^R$5MPr>r^1~vzb0~U_=rlfLgmI$eoRynBu6`O<@?A=>OvC#t)lSj*c$P6ZoRVA*<2qd-oQ{Y! z594XNI*Du4<0?GUh`ZENQd{LBWW#KS*wUcL(Cblt1otF(CvY}_>nD{OX%ijl9e`|8 zTLhET1F3E5**Kmc)#rm-(meEgKF&#{`Yr^7WPa zStp93ubm;W?ooUaUKY0cpVU4Ze!>ZHh_7ZJ{eAV#@4Iyo-ko2@$B(3BwxRw_z{CLX zvdN44Eh5FKAK%ZH+r9dK9ZE~8OX6Z3XFio~U( zfNB!8k{Tu`b>eU~4t$*C9-=DoyHt|+gRnOs*0>$lr6E-MEsa*h{{*Yl3f-3=B^*#2 z3#F4ruDLMIZm7nOnM2Iwnd>LI!n|ULMxJS<%4VpFc8Glzcsi^@JMj~zk-waOoC<` z+9W+o8jEmGyr{!(G5|>~e0;A1gmhQJsicQ|1O3(+c&Qe8Vl!$d-jsUctAko4>I~xE zRDA)cy09gB@2#3u_iq)!rj@+eVjF)kxmNYbeH5k#rpDQXAV*n-302N+xINkhx

_b{F%T5QL!lNyKalg5~<+o*+w)`PER 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 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-Italic.ttf b/incubation/openstack-api-extensions/target/docbkx/fonts/CartoGothic-Std/CartoGothicStd-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f124c8dc4b8d5c393713d039a2b740fa45586ddc GIT binary patch literal 60440 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 ql=BQFO9_39eh)MpyV~$-5Iov}cj|at+uqIig; + + + + . + + + 90 + + 90 + + + + + + + + + flate + + + + + + + + + $fontPath$ + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/1.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/1.svg new file mode 100644 index 0000000..e2e87dc --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/1.svg @@ -0,0 +1,15 @@ + + + + +]> + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/10.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/10.svg new file mode 100644 index 0000000..4740f58 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/10.svg @@ -0,0 +1,18 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/11.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/11.svg new file mode 100644 index 0000000..09a0b2c --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/11.svg @@ -0,0 +1,16 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/12.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/12.svg new file mode 100644 index 0000000..9794044 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/12.svg @@ -0,0 +1,18 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/13.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/13.svg new file mode 100644 index 0000000..64268bb --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/13.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/14.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/14.svg new file mode 100644 index 0000000..469aa97 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/14.svg @@ -0,0 +1,17 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/15.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/15.svg new file mode 100644 index 0000000..8202233 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/15.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/16.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/16.svg new file mode 100644 index 0000000..01d6bf8 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/16.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/17.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/17.svg new file mode 100644 index 0000000..0a04c55 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/17.svg @@ -0,0 +1,17 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/18.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/18.svg new file mode 100644 index 0000000..1cb891b --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/18.svg @@ -0,0 +1,21 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/19.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/19.svg new file mode 100644 index 0000000..e6fbb17 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/19.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/2.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/2.svg new file mode 100644 index 0000000..07d0339 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/2.svg @@ -0,0 +1,17 @@ + + + + +]> + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/20.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/20.svg new file mode 100644 index 0000000..ccbfd40 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/20.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/21.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/21.svg new file mode 100644 index 0000000..93ec53f --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/21.svg @@ -0,0 +1,18 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/22.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/22.svg new file mode 100644 index 0000000..f48c5f3 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/22.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/23.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/23.svg new file mode 100644 index 0000000..6624212 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/23.svg @@ -0,0 +1,22 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/24.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/24.svg new file mode 100644 index 0000000..a3d5525 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/24.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/25.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/25.svg new file mode 100644 index 0000000..56614a9 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/25.svg @@ -0,0 +1,21 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/26.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/26.svg new file mode 100644 index 0000000..56faeac --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/26.svg @@ -0,0 +1,22 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/27.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/27.svg new file mode 100644 index 0000000..a75c812 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/27.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/28.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/28.svg new file mode 100644 index 0000000..7f8cf1a --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/28.svg @@ -0,0 +1,23 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/29.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/29.svg new file mode 100644 index 0000000..cb63adf --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/29.svg @@ -0,0 +1,22 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/3.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/3.svg new file mode 100644 index 0000000..918be80 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/3.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/30.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/30.svg new file mode 100644 index 0000000..dc43ba1 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/30.svg @@ -0,0 +1,22 @@ + + + + +]> + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/4.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/4.svg new file mode 100644 index 0000000..8eb6a53 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/4.svg @@ -0,0 +1,16 @@ + + + + +]> + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/5.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/5.svg new file mode 100644 index 0000000..ca7a9f2 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/5.svg @@ -0,0 +1,18 @@ + + + + +]> + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/6.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/6.svg new file mode 100644 index 0000000..783a0b9 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/6.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/7.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/7.svg new file mode 100644 index 0000000..59b3714 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/7.svg @@ -0,0 +1,16 @@ + + + + +]> + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/8.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/8.svg new file mode 100644 index 0000000..c1803a3 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/8.svg @@ -0,0 +1,20 @@ + + + + +]> + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/callouts/9.svg b/incubation/openstack-api-extensions/target/docbkx/images/callouts/9.svg new file mode 100644 index 0000000..bc149d3 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/callouts/9.svg @@ -0,0 +1,19 @@ + + + + +]> + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/caution.svg b/incubation/openstack-api-extensions/target/docbkx/images/caution.svg new file mode 100644 index 0000000..e732a36 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/caution.svg @@ -0,0 +1,79 @@ + + + +image/svg+xml + + + + + + + + + + + + + + \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc-nd.svg b/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc-nd.svg new file mode 100644 index 0000000..37a32df --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc-nd.svg @@ -0,0 +1,243 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc-sa.svg b/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc-sa.svg new file mode 100644 index 0000000..514c251 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc-sa.svg @@ -0,0 +1,202 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc.svg b/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc.svg new file mode 100644 index 0000000..597a622 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nc.svg @@ -0,0 +1,190 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nd.svg b/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nd.svg new file mode 100644 index 0000000..6efd00d --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/cc/by-nd.svg @@ -0,0 +1,203 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/cc/by-sa.svg b/incubation/openstack-api-extensions/target/docbkx/images/cc/by-sa.svg new file mode 100644 index 0000000..f850297 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/cc/by-sa.svg @@ -0,0 +1,199 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/cc/by.svg b/incubation/openstack-api-extensions/target/docbkx/images/cc/by.svg new file mode 100644 index 0000000..e44c25f --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/cc/by.svg @@ -0,0 +1,155 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/cloud/cover.svg b/incubation/openstack-api-extensions/target/docbkx/images/cloud/cover.svg new file mode 100644 index 0000000..d390ad2 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/cloud/cover.svg @@ -0,0 +1,1650 @@ +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OpenStack API Extensions + + + (Jun 10, 2011) + + + + An Overview + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +DRAFT + +docs.openstack.org + + \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/images/cloud/openstack-cover.st b/incubation/openstack-api-extensions/target/docbkx/images/cloud/openstack-cover.st new file mode 100644 index 0000000..bd702f1 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/cloud/openstack-cover.st @@ -0,0 +1,5262 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $title$ + + + $releaseinfo$ ($pubdate$) + + + + $subtitle$ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +$draft.text$ +$status.text$ +docs.openstack.org + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/cloud/rackspace-cover.st b/incubation/openstack-api-extensions/target/docbkx/images/cloud/rackspace-cover.st new file mode 100644 index 0000000..a6b409c --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/cloud/rackspace-cover.st @@ -0,0 +1,5147 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $title$ + + + + $releaseinfo$ ($pubdate$) + + + + docs.rackspace.com/api + + + + $subtitle$ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +$draft.text$ + +$status.text$ + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/home.svg b/incubation/openstack-api-extensions/target/docbkx/images/home.svg new file mode 100644 index 0000000..e803a31 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/home.svg @@ -0,0 +1,26 @@ + + + + + + + + +]> + + + + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/important.svg b/incubation/openstack-api-extensions/target/docbkx/images/important.svg new file mode 100644 index 0000000..a4378d8 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/important.svg @@ -0,0 +1,79 @@ + + + +image/svg+xml + + + + + + + + + + + + + + \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/images/next.svg b/incubation/openstack-api-extensions/target/docbkx/images/next.svg new file mode 100644 index 0000000..75fa83e --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/next.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/note.svg b/incubation/openstack-api-extensions/target/docbkx/images/note.svg new file mode 100644 index 0000000..0ddb7df --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/note.svg @@ -0,0 +1,108 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/images/prev.svg b/incubation/openstack-api-extensions/target/docbkx/images/prev.svg new file mode 100644 index 0000000..6d88ffd --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/prev.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/tip.svg b/incubation/openstack-api-extensions/target/docbkx/images/tip.svg new file mode 100644 index 0000000..e65ba68 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/tip.svg @@ -0,0 +1,115 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/images/up.svg b/incubation/openstack-api-extensions/target/docbkx/images/up.svg new file mode 100644 index 0000000..d31aa9c --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/up.svg @@ -0,0 +1,19 @@ + + + + + + +]> + + + + + + + + + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/images/warning.svg b/incubation/openstack-api-extensions/target/docbkx/images/warning.svg new file mode 100644 index 0000000..519e99d --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/images/warning.svg @@ -0,0 +1,75 @@ + + + +image/svg+xml + + + + + + + + + + + + \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/pdf/apix-intro-proposal.fo b/incubation/openstack-api-extensions/target/docbkx/pdf/apix-intro-proposal.fo new file mode 100644 index 0000000..ffee37d --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/pdf/apix-intro-proposal.fo @@ -0,0 +1,281 @@ +TrueCopyright © 2010, 2011 Rackspace US, Inc. All rights reserved.OpenStack API Extensions - An OverviewCloud API Docs PluginOpenStack API Extensions1. Overview1.1. Intended Audience1.2. Organization of this Document1.3. Document Change History2. Background2.1. What are Extensions?2.2. Relationship to OpenGL2.3. Extensions and Versions2.4. Versioning Extensions2.5. Extensions and Pluggability DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  OpenStack API Extensions: An OverviewCopyright © 2010, 2011 Rackspace US, Inc. All rights reserved. + This document provides an overview of the OpenStack API extension + mechanism. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  List of Figures2.1. Extensions and Pluggability DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  List of Tables2.1. Versions versus Extensions DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  1. OverviewTable of Contents1.1. Intended Audience 1.2. Organization of this Document 1.3. Document Change History + The OpenStack extension mechanism makes it possible to add + functionality to OpenStack APIs in a manner that ensures + compatibility with existing clients. This capability + allows OpenStack operators and vendors to provide + innovative functionality to their clients and provides a + means by which new features may be considered in upcoming + versions of OpenStack APIs. + + This document describes the extension mechanism in detail. + It provides guidance to API implementors and clients on + developing and consuming API extensions, it describes the + rules by which extensions are governed, and it describes + the process used to promote API extensions to new features. + Intended Audience1.1. Intended Audience This document is intended for software developers who wish either to implement or + to consume an extendable OpenStack API. It assumes that the reader has a general + understanding of: •ReSTful web services•HTTP/1.1•JSON and/or XML data serialization formats•At least one OpenStack API: Compute, + Object Storage, etc.Organization of this Document1.2. Organization of this DocumentChapter 2, Background + Provides background information on + OpenStack extensions and the OpenStack + extension mechanism. + + Describes the specifics of implementing + and consuming extensions in ReST APIs. + + Describes API governance and the process + by which extensions can be promoted to new + features in future revisions of an API. + Briefly summarizes the benefits of the extension mechanism and + provides a brief overview of how extensions are used. Document Change History1.3. Document Change History + Revision Date + Summary of Changes + + June 10, 2011 + + • Initial draft. + + DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  OpenStack API ExtensionsJun 10, 2011 DRAFT -  2. BackgroundTable of Contents2.1. What are Extensions? 2.2. Relationship to OpenGL 2.3. Extensions and Versions 2.4. Versioning Extensions 2.5. Extensions and Pluggability + This chapter provides background information on OpenStack + extensions and the OpenStack extension mechanism. It + describes what extensions are, how the extension mechanism + in OpenStack is related to the OpenGL extension mechanism, + the differences between extensions and versions, the + concept of versioning extensions, and why extensions are + vital when defining a pluggable architecture. + What are Extensions?2.1. What are Extensions? + OpenStack APIs are defined strictly in two forms: a + human-readable specification (usually in the form of a + developer's guide) and a machine-processable + WADL. These specifications define the core actions, + capabilities, and media-types of the API. A client can + always depend on the availability of this + core API and implementers are + always required to support it in its entirety. Requiring strict adherence to the + core API allows clients to rely upon a minimal level + of functionality when interacting with multiple + implementations of the same API. + + Note that it is quite possible that distinct + implementations of an OpenStack API exist. First + because API specifications are released under a free + license, so anyone may use them to implement a core + API. Furthermore, the OpenStack implementations + themselves are released under a free license, making + it possible to alter the code to create a specialized + version. Such a specialized implementation could + remain OpenStack-compatible even if it were to + implement new features or add new capabilities, but + only if it made the changes in a manner that ensures + that a client expecting a core API would continue to + function normally — this is where extensions + come in. + An extension adds capabilities to an API beyond those + defined in the core. The introduction of new features, MIME types, actions, states, + headers, parameters, and resources can all be accomplished by means of extensions to + the core API. In order for extensions to work, the core API must be written in such + a manner that it allows for extensibility. Additionally, care should be taken to + ensure that extensions defined by different implementers don't clash with one + another, that clients can detect the presence of extensions via a standard method, + and that there is a clear promotion path at the end of which an extension may become + part of a future version of the core API. These actions, rules, and processes + together form the extension mechanism. It is important that + core APIs adhere to this mechanism in order to ensure compatibility as new + extensions are defined. Note also that while a core API may be written to allow for + extensibility, the extensions themselves are never part of the core. Relationship to OpenGL2.2. Relationship to OpenGL + In the 1990s, OpenGL was developed as a portable open + graphics library standard. The goal was to provide a + cross-platform library that could enable developers to + produce 3D graphics at real time speeds (30-120 frames + per second). There were several major challenges to + meeting this goal. In order to be considered an open + standard, control needed to shift from Silicon + Graphics (SGI), who originally developed OpenGL, to an + independent Architecture Review Board (ARB) who would + be responsible for approving specification changes, + marking new releases, and ensuring conformance + testing. Additionally, the graphics library itself + would need to be designed in a manner that would allow + the establishment of a stable and portable platform + for developers. Finally, the library would need to + garner the support of graphics hardware vendors as + they would be providing the hardware acceleration + needed to meet the goal of performing at real-time + speeds. + Gaining vendor support is challenging because vendors are often in direct + competition with one another. They differentiate themselves by creating innovative + new features and by providing niche functionality to their users. Thus, OpenGL was + faced with two competing requirements. On the one hand, it needed to abstract away + vendor differences in order to provide a stable cross-platform environment to + developers. On the other hand, in order to garner vendor support, it needed a method + by which vendors could differentiate themselves and provide innovative new features + and niche functionality to their users. The OpenGL extension mechanism was developed to solve these problems. The + extension mechanism achieved balance between the two requirements by maintaining the + core specification under the direction of the Architecture Review Board while + allowing vendors to define extensions to the core OpenGL specification. The core + specification remained uncluttered and presented a unified view of common + functionality. Because extensions were detectable at run time, developers could + write portable applications that could adapt to the hardware on which they were + running. This method of allowing for an extensible API has proven to be a very + successful strategy. More than 500 extensions have been defined in OpenGL's lifetime + and many vendors, including NVidia, ATI, Apple, IBM, and Intel, have participated in + the process by developing their own custom extensions. Additionally, many key + innovations (such as vertex and fragment shaders) have been developed via the + extension process and are now part of the core OpenGL API. OpenStack, while very different from OpenGL, shares many similar goals and faces + many of the same challenges. OpenStack APIs are designed to be open API standards. + An important goal is to provide developers with a ubiquitous, stable, any-scale + cloud development platform that abstracts away many of the differences between + hosting providers and their underlying infrastructure (hypervisors, load balancers, + etc.). A Policy Review Board, similar to OpenGL's Architecture Review Board, is + responsible for directing development of these APIs in a manner that ensures these + goals are met. As with OpenGL, OpenStack requires support from vendors (and cloud + providers) in order to be successful. As a result, OpenStack APIs also aim to + provide vendors with a platform which allows them to differentiate themselves by + providing innovative new features and niche functionality to their users. Because of + these similarities, the OpenStack extension mechanism described in this document is + modeled after the OpenGL extension mechanism. The methods by which extensions are + defined vary drastically, of course, since the nature of the APIs is very different + (C versus ReST); however, the manner in which extensions are documented, the way in + which vendors are attributed, and the promotion path that an extension follows, all + borrow heavily from OpenGL. Extensions and Versions2.3. Extensions and Versions Extensions are always interpreted in relation to a version of the core API. In + other words, from a client's perspective, an extension modifies a + particular version of the core API in some way. In reality, an + extension may be applicable to several versions of an API at once. For example, a + particular extension may continue to be available as a core API moves from one + version to another. In fact, different implementations may decide to include support + for an extension at different versions. As explained in + , + when an extension is defined, the minimal version of the core API that is required + to run the extension is specified; implementers are free to support the extension in + that version or in a later version of the core. Note, however, that because the + extension mechanism allows for promotion, an extension in one version of a core API + may become a standard feature in a later version. Note + As always, implementers are not required to + support an extension unless it is promoted to the + core. + Because several versions of the core API may be supported simultaneously, and + because each version may offer support for a different set of extensions, clients + must be able to detect what versions and extensions are available in a particular + deployment. Thus, both extensions and versions are queryable. Issuing a GET on the + base URL (/) of the API endpoint returns information about what + versions are available. Similarly, issuing a GET on the API's extensions resource + (/v1.1/extensions) returns information about what extensions are + available. (See + + for details of such requests.) Note that, + since extensions modify a particular version of the API, the extensions + resource itself is always accessed at a particular version. Backward-compatible changes in an API usually require a minor version bump. In an + extensible API, however, these changes can be brought in as extensions. The net + effect is that versions change infrequently and thus provide a stable platform on + which to develop. The Policy Review Board (PRB), with the help of project team + leaders, is responsible for ensuring that this stability is maintained by closely + guarding core API versions. Extensions, however, can be developed without the + consent or approval of the PRB. They can be developed in a completely decentralized + manner both by individual OpenStack developers and by commercial vendors. Because + extensions can be promoted to standard features, the development of new versions can + be influenced significantly by individual developers and the OpenStack client + community and is therefore not strictly defined by the PRB. In other words, new + features of a core API may be developed in a bottom-up fashion. + That said, not all extensions are destined to be + promoted to the next API version. Core APIs always + deals with core functionality — functionality + that is supported by all implementations and is + applicable in common cases. Extensions that deal with + niche functionality should always remain extensions. + + The table below summarizes the differences between + versions and extensions. + Table 2.1. Versions versus ExtensionsVersionsExtensions + Rare.  + Versions provide a stable + platform on which to develop. + + + Frequent.  + Extensions bring new features + to the market quickly and in a + compatible manner. + + + Centralized.  + Versions are maintained by the + entity that controls the API + Spec: the OpenStack Policy + Review Board. Only the PRB can + create a new version; only the + PRB defines what "OpenStack + Compute 1.1" means. + + + Decentralized.  + Extensions are maintained by + third parties, including + individual OpenStack + developers and software + vendors. Anyone can create an + extension. + + + Core.  + Versions support core + functionality. + + + Niche.  + Extensions provide specialized + functionality. + + + Queryable.  + Issuing a GET on the base + URL (/) of the + API endpoint returns + information about what + versions are available. + + + Queryable.  + Issuing a GET on the API's + extensions resource + (/v1.1/extensions) + returns information about what + extensions are available. + + Versioning Extensions2.4. Versioning Extensions There is no explicit versioning mechanism for extensions. Nonetheless, there may + be cases in which a developer decides to update an extension after the extension has + been released and client support for the extension has been established. In these + cases, it is recommended that a new extension be created. The extension may have a + name that signifies its relationship to the previous version. For example, a + developer may append an integer to the extension name to signify that one extension + updates another: RAX-PIE2 updates RAX-PIE. Extensions may have dependencies on other extensions. For example, + RAX-PIE2 may depend on RAX-PIE and may simply add + additional capabilities to it. In general, dependencies of this kind are discouraged + and implementers should strive to keep extensions independent. That said, extension + dependencies allow for the possibility of providing updates to existing extensions + even if the original extension is under the control of a different vendor. This is + particularly useful in cases where an existing extension has good client support. Extensions and Pluggability2.5. Extensions and Pluggability Core APIs abstract away vendor differences in order to provide a cross-platform + environment to their clients. For example, a client should be able to interact with + an OpenStack load balancing service without worrying about whether the deployment + utilizes Zeus, Pound, or HAProxy on the backend. OpenStack implementations strive to + support multiple backends out of the box. They do so by employing software drivers. + Each driver is responsible for communicating to a specific backend and is in charge + of translating core API requests to it. The core API contains only those capabilities which are applicable to all + backends; however, not all backends are created equal, with each backend offering a + distinct set of capabilities. Extensions play a critical role in exposing these + capabilities to clients. This is illustrated below. Here, extensions fill in the gap + between the common capabilities that the core API provides and the unique + capabilities of the Zeus load balancer. In a sense, one can think of extensions as + providing frontends to OpenStack plug-ins. Figure 2.1. Extensions and Pluggability \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/pdf/apix-intro-proposal.pdf b/incubation/openstack-api-extensions/target/docbkx/pdf/apix-intro-proposal.pdf new file mode 100644 index 0000000000000000000000000000000000000000..9a9255c9073ae8ddcc794f6a49ca510882f998be GIT binary patch literal 103449 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

K?((BM(Bt6m-Ew&ysATP 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±L<2D?_e)k0_k7sTmDv{p-FC;IyMS5 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 + + + (function() { + var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; + dsq.src = 'http://' + disqus_shortname + '.disqus.com/embed.js'; + (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); + })(); diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/ie.css b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/ie.css new file mode 100644 index 0000000..4c5f1c2 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/ie.css @@ -0,0 +1,13 @@ +.statustext{ + filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1) + progid:DXImageTransform.Microsoft.BasicImage(opacity=.5); + width: 100%; + height: 30px; + right: -5px; + top:105px; + /* left: 280px; */ /* change to -12px; when sidebar is collapsed */ +} + +body #content{ + padding-top: 136px; +} diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning-openstack.css b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning-openstack.css new file mode 100644 index 0000000..9e2526e --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning-openstack.css @@ -0,0 +1,267 @@ +body { font: 12px Verdana, Geneva, sans-serif; } +p, ul, ol, li { font: 10pt Verdana, Geneva, sans-serif; } +h1 { font: 15pt Arial, Helvetica, geneva; + color: #cf2f19; +} +h2 { font: normal 12pt Arial, Helvetica, geneva; + color: black!important; +} + +#header { + position: fixed; + width: 100%; + height: 95px; + top: 0; + right: 0; + bottom: auto; + left: 0; + border-bottom: 1px solid #bbc4c5; + z-index: 2000; + background: white url(../images/book_open.png) no-repeat 250px center; +} + +#header h1, p.breadcrumbs { + margin-left: 300px; +} + +#header img { + float: left; + margin-left: 20px; + margin-top: 20px; +} + +#leftnavigation { + overflow: auto; + position: fixed; + height: auto; + top: 90px; + bottom: 0; + left: 0; + width: 280px; + z-index: 1500; + border-right:1px solid #bbc4c5; + padding: 0px; + background-color: #f2f7f7!important; +} + +#content { + position: relative; + top: 90px; /* left: 240px;*/ + right: auto; /* bottom: 20px; */ + margin: 0px 0px 0px 280px; + width: auto; + height: inherit; + padding-top: 10px; + padding-left: 30px; + padding-right: 30px; + color: #000000; + /*border-left: 2px solid #cccccc; overflow :scroll;*/ + z-index: 1000; + min-width:800px; +} + +#navheader { + position: fixed; + top: 65px; + right:4px; +} + +#content h1, #content h2 { color: #cc0000; } +.navfooter { bottom: 2%; } +.highlight { background-color: #c5d3c3; } +.highlightButton{ font-size: 0; } + +#content pre.literallayout, #content pre.programlisting +{ + -x-system-font: none; + background-color: silver; + border-bottom-color: #DEDEDE !important; + border-bottom-style: solid !important; + border-bottom-width: 1px !important; + border-left-color-ltr-source: physical !important; + border-left-color-rtl-source: physical !important; + border-left-color-value: #DEDEDE !important; + border-left-style-ltr-source: physical !important; + border-left-style-rtl-source: physical !important; + border-left-style-value: solid !important; + border-left-width-ltr-source: physical !important; + border-left-width-rtl-source: physical !important; + border-left-width-value: 1px !important; + border-right-color-ltr-source: physical !important; + border-right-color-rtl-source: physical !important; + border-right-color-value: #DEDEDE !important; + border-right-style-ltr-source: physical !important; + border-right-style-rtl-source: physical !important; + border-right-style-value: solid !important; + border-right-width-ltr-source: physical !important; + border-right-width-rtl-source: physical !important; + border-right-width-value: 1px !important; + border-top-color: #DEDEDE !important; + border-top-style: solid !important; + border-top-width: 1px !important; + color: #23302D; + display: block; + font-family: Monaco,'Courier New','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace; + font-size: 12px !important; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: normal; + margin-bottom: 1em !important; + margin-left: 0 !important; + margin-right: 0 !important; + margin-top: 1em !important; + overflow-x: scroll; + padding-bottom: 0.5em !important; + padding-left: 0.5em !important; + padding-right: 0.5em !important; + padding-top: 0.5em !important; + width: 100%; +} + +/* Show Hide TOC tree */ +.pointLeft { + cursor: pointer; + padding-right: 20px; + display: block; +} +.pointRight { + cursor: pointer; + padding-right: 20px; + display: block; +} + +/* Search results Styling */ +.searchExpression { + color: #0050A0; + background-color: #EBEFF8; + font-size: 12pt; +} +.searchresult li a { + text-decoration: none; + color: #0050A0; +} +.searchresult li { + color: #0050A0; +} +.shortdesclink { + color: gray; + font-size: 9pt; +} +.searchText { + border: #BFCEE9 solid 1pt; + width: 11em +} +.searchButton { + margin-left: 3px; + background: #EBEFF8; + color: #0050A0; + border: #BFCEE9 solid 1pt; + font-weight: bold; + font-size: 10pt +} + +.title, div.toc>p{ + font-weight: bold; + } + +p.breadcrumbs { + margin-bottom: 0px; + margin-top: 33px; +} + +p.breadcrumbs a { + padding-right: 12px; + margin-right: 5px; + text-decoration: none; + color: #575757; + text-transform: uppercase; + font-size: 10px; + background: url(../images/breadcrumb-arrow.png) no-repeat right center; +} + +p.breadcrumbs a:hover { + text-decoration: underline; +} + +#header h1 { + margin-top: 2px; +} + +table.navLinks { + margin-right: 20px; +} + +table.navLinks td a { + text-decoration: none; + text-transform: uppercase; + color: black; + font-size: 11px; +} + +a.navLinkPrevious { + padding-left: 12px; + background: url(../images/previous-arrow.png) no-repeat left center; +} + +a.navLinkNext { + padding-right: 12px; + background: url(../images/next-arrow.png) no-repeat right center; +} + +a#showHideButton { + padding-left: 20px; + background: url(../images/sidebar.png) no-repeat left center; +} + + +.legal, .legal *{ + color: #555; + text-align: center; + padding-bottom: 10px; +} + +.internal + { + color : #0000CC; + } + +.writeronly + { + color : red; + } + +.remark, .remark .added, .remark .changed, .remark .deleted{ + background: yellow; + } + +tr th, tr th .internal, tr th .added, tr th .changed + { + background: #00589E; + color: white; + font-weight: bold; + text-align: left; + } + + +.statustext{ + position:fixed; + top:100px; + width: 0%; + height: 0%; + opacity: .3; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -o-transform: rotate(90deg); + white-space: nowrap; + color: red; + font-weight: bold; + font-size: 2em; + } + +div.note table tr th, div.caution table tr th, div.important table tr th, div.tip table tr th, div.warning table tr th{ + background: inherit; + color: inherit; +} \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning-rackspace.css b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning-rackspace.css new file mode 100644 index 0000000..9568a91 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning-rackspace.css @@ -0,0 +1,336 @@ +body { font: 12px Verdana, Geneva, sans-serif; } +p, ul, ol, li { font: 10pt Verdana, Geneva, sans-serif; } +h1 { font: 15pt Arial, Helvetica, geneva; + color: black!important!; +} +h2 { font: normal 12pt Arial, Helvetica, geneva; + color: black!important; +} + +#header { + position: fixed; + width: 100%; + height: 95px; + top: 0; + right: 0; + bottom: auto; + left: 0; + border-bottom: 1px solid #bbc4c5; + z-index: 2000; + background: #282828 url("../images/main_bg_fade.png") top left no-repeat; +} + +#header h1 { + color: #fff; + margin-left: 310px; +} + +#header h1, p.breadcrumbs { + margin-top: 30px; + margin-left: 310px; +} + +#header img { + float: left; + margin-left: 20px; + margin-top: 22px; +} + +#header p.breadcrumbs a { + color: #bbb; +} + +#leftnavigation { + overflow: auto; + position: fixed; + height: auto; + top: 90px; + bottom: 0; + left: 0; + width: 280px; + z-index: 1500; + border-right:1px solid #bbc4c5; + padding: 0px; + background-color: #f0f0f0!important; +} + +#content { + position: relative; + top: 90px; /* left: 240px;*/ + right: auto; /* bottom: 20px; */ + margin: 0px 0px 0px 280px; + width: auto; + height: inherit; + padding-top: 10px; + padding-left: 30px; + padding-right: 30px; + color: #000000; + /*border-left: 2px solid #cccccc; overflow :scroll;*/ + z-index: 1000; + min-width:800px; +} + +#navheader { + position: fixed; + background: #fff; + border-radius: 5px 0px 0px 5px; + padding-left: 10px; + right: 0px; + top: 37px; +} + +#content h1, #content h2 { color: black; } +.navfooter { bottom: 2%; } +.highlight { background-color: #c5d3c3; } +.highlightButton{ font-size: 0; } + +#content pre.literallayout, #content pre.programlisting +{ + -x-system-font: none; + background-color: silver; + border-bottom-color: #DEDEDE !important; + border-bottom-style: solid !important; + border-bottom-width: 1px !important; + border-left-color-ltr-source: physical !important; + border-left-color-rtl-source: physical !important; + border-left-color-value: #DEDEDE !important; + border-left-style-ltr-source: physical !important; + border-left-style-rtl-source: physical !important; + border-left-style-value: solid !important; + border-left-width-ltr-source: physical !important; + border-left-width-rtl-source: physical !important; + border-left-width-value: 1px !important; + border-right-color-ltr-source: physical !important; + border-right-color-rtl-source: physical !important; + border-right-color-value: #DEDEDE !important; + border-right-style-ltr-source: physical !important; + border-right-style-rtl-source: physical !important; + border-right-style-value: solid !important; + border-right-width-ltr-source: physical !important; + border-right-width-rtl-source: physical !important; + border-right-width-value: 1px !important; + border-top-color: #DEDEDE !important; + border-top-style: solid !important; + border-top-width: 1px !important; + color: #23302D; + display: block; + font-family: Monaco,'Courier New','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace; + font-size: 12px !important; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: normal; + margin-bottom: 1em !important; + margin-left: 0 !important; + margin-right: 0 !important; + margin-top: 1em !important; + overflow-x: scroll; + padding-bottom: 0.5em !important; + padding-left: 0.5em !important; + padding-right: 0.5em !important; + padding-top: 0.5em !important; + width: 100%; +} + +/* Show Hide TOC tree */ +.pointLeft { + cursor: pointer; + padding-right: 20px; + display: block; +} +.pointRight { + cursor: pointer; + padding-right: 20px; + display: block; +} + +/* Search results Styling */ +.searchExpression { + color: #0050A0; + background-color: #EBEFF8; + font-size: 12pt; +} +.searchresult li a { + text-decoration: none; + color: #0050A0; +} +.searchresult li { + color: #0050A0; +} +.shortdesclink { + color: gray; + font-size: 9pt; +} +.searchText { + border: #BFCEE9 solid 1pt; + width: 11em +} +.searchButton { + margin-left: 3px; + background: #EBEFF8; + color: #0050A0; + border: #BFCEE9 solid 1pt; + font-weight: bold; + font-size: 10pt +} + +.title, div.toc>p{ + font-weight: bold; + } + +p.breadcrumbs { + display: inline; + margin-bottom: 0px; + margin-top: 33px; +} + +p.breadcrumbs a { + padding-right: 12px; + margin-right: 5px; + text-decoration: none; + color: #575757; + text-transform: uppercase; + font-size: 10px; +} + +p.breadcrumbs a:first-child { + background: url(../images/breadcrumb-arrow-white.png) no-repeat right center; +} + +p.breadcrumbs a:hover { + text-decoration: underline; +} + +#header h1 { + margin-top: 2px; +} + +table.navLinks { + margin-right: 20px; +} + +table.navLinks td a { + text-decoration: none; + text-transform: uppercase; + color: black; + font-size: 11px; +} + +a.navLinkPrevious { + padding-left: 12px; + background: url(../images/previous-arrow.png) no-repeat left center; +} + +a.navLinkNext { + padding-right: 12px; + background: url(../images/next-arrow.png) no-repeat right center; +} + +a#showHideButton { + padding-left: 20px; + background: url(../images/sidebar.png) no-repeat left center; +} + + +.filetree li span a { color: #777; } + +#treediv { -webkit-box-shadow: #CCC 0px 1px 2px 0px inset; } + +.legal, .legal *{ + color: #555; + text-align: center; + padding-bottom: 10px; +} + +.internal + { + color : #0000CC; + } + +.writeronly + { + color : red; + } + +.remark, .remark .added, .remark .changed, .remark .deleted{ + background: yellow; + } + +tr th, tr th .internal, tr th .added, tr th .changed + { + background: #00589E; + color: white; + font-weight: bold; + text-align: left; + } + +.statustext{ + position:fixed; + top:105px; + width: 0%; + height: 0%; + opacity: .3; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -o-transform: rotate(90deg); + white-space: nowrap; + color: red; + font-weight: bold; + font-size: 2em; + margin-top: 30px; + } + +#toolbar { + width: 100%; + height: 33px; + position: fixed; + top: 93px; + z-index: 99; + left: 280px; + color: #333; + line-height: 28px; + padding-left: 10px; +} + +#toolbar-left { + position: relative; + left: 0px; +} + +body p.breadcrumbs { + margin: 0px; + padding: 0px; + line-height: 28px; +} + +body #content { + position: static; + margin-top: 126px; + top: 0px; +} + +#header h1 { + position: fixed; + top: 35px; + left: -15px; + color: white!important; +} + +body.sidebar #toolbar{ + left: 0px; +} + +body.sidebar #toolbar-left{ + left: 0px; +} + +div#toolbar-left img { + vertical-align: text-top; +} + +div.note table tr th, div.caution table tr th, div.important table tr th, div.tip table tr th, div.warning table tr th{ + background: inherit; + color: inherit; +} \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning.css b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning.css new file mode 100644 index 0000000..9e2526e --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/css/positioning.css @@ -0,0 +1,267 @@ +body { font: 12px Verdana, Geneva, sans-serif; } +p, ul, ol, li { font: 10pt Verdana, Geneva, sans-serif; } +h1 { font: 15pt Arial, Helvetica, geneva; + color: #cf2f19; +} +h2 { font: normal 12pt Arial, Helvetica, geneva; + color: black!important; +} + +#header { + position: fixed; + width: 100%; + height: 95px; + top: 0; + right: 0; + bottom: auto; + left: 0; + border-bottom: 1px solid #bbc4c5; + z-index: 2000; + background: white url(../images/book_open.png) no-repeat 250px center; +} + +#header h1, p.breadcrumbs { + margin-left: 300px; +} + +#header img { + float: left; + margin-left: 20px; + margin-top: 20px; +} + +#leftnavigation { + overflow: auto; + position: fixed; + height: auto; + top: 90px; + bottom: 0; + left: 0; + width: 280px; + z-index: 1500; + border-right:1px solid #bbc4c5; + padding: 0px; + background-color: #f2f7f7!important; +} + +#content { + position: relative; + top: 90px; /* left: 240px;*/ + right: auto; /* bottom: 20px; */ + margin: 0px 0px 0px 280px; + width: auto; + height: inherit; + padding-top: 10px; + padding-left: 30px; + padding-right: 30px; + color: #000000; + /*border-left: 2px solid #cccccc; overflow :scroll;*/ + z-index: 1000; + min-width:800px; +} + +#navheader { + position: fixed; + top: 65px; + right:4px; +} + +#content h1, #content h2 { color: #cc0000; } +.navfooter { bottom: 2%; } +.highlight { background-color: #c5d3c3; } +.highlightButton{ font-size: 0; } + +#content pre.literallayout, #content pre.programlisting +{ + -x-system-font: none; + background-color: silver; + border-bottom-color: #DEDEDE !important; + border-bottom-style: solid !important; + border-bottom-width: 1px !important; + border-left-color-ltr-source: physical !important; + border-left-color-rtl-source: physical !important; + border-left-color-value: #DEDEDE !important; + border-left-style-ltr-source: physical !important; + border-left-style-rtl-source: physical !important; + border-left-style-value: solid !important; + border-left-width-ltr-source: physical !important; + border-left-width-rtl-source: physical !important; + border-left-width-value: 1px !important; + border-right-color-ltr-source: physical !important; + border-right-color-rtl-source: physical !important; + border-right-color-value: #DEDEDE !important; + border-right-style-ltr-source: physical !important; + border-right-style-rtl-source: physical !important; + border-right-style-value: solid !important; + border-right-width-ltr-source: physical !important; + border-right-width-rtl-source: physical !important; + border-right-width-value: 1px !important; + border-top-color: #DEDEDE !important; + border-top-style: solid !important; + border-top-width: 1px !important; + color: #23302D; + display: block; + font-family: Monaco,'Courier New','DejaVu Sans Mono','Bitstream Vera Sans Mono',monospace; + font-size: 12px !important; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: normal; + margin-bottom: 1em !important; + margin-left: 0 !important; + margin-right: 0 !important; + margin-top: 1em !important; + overflow-x: scroll; + padding-bottom: 0.5em !important; + padding-left: 0.5em !important; + padding-right: 0.5em !important; + padding-top: 0.5em !important; + width: 100%; +} + +/* Show Hide TOC tree */ +.pointLeft { + cursor: pointer; + padding-right: 20px; + display: block; +} +.pointRight { + cursor: pointer; + padding-right: 20px; + display: block; +} + +/* Search results Styling */ +.searchExpression { + color: #0050A0; + background-color: #EBEFF8; + font-size: 12pt; +} +.searchresult li a { + text-decoration: none; + color: #0050A0; +} +.searchresult li { + color: #0050A0; +} +.shortdesclink { + color: gray; + font-size: 9pt; +} +.searchText { + border: #BFCEE9 solid 1pt; + width: 11em +} +.searchButton { + margin-left: 3px; + background: #EBEFF8; + color: #0050A0; + border: #BFCEE9 solid 1pt; + font-weight: bold; + font-size: 10pt +} + +.title, div.toc>p{ + font-weight: bold; + } + +p.breadcrumbs { + margin-bottom: 0px; + margin-top: 33px; +} + +p.breadcrumbs a { + padding-right: 12px; + margin-right: 5px; + text-decoration: none; + color: #575757; + text-transform: uppercase; + font-size: 10px; + background: url(../images/breadcrumb-arrow.png) no-repeat right center; +} + +p.breadcrumbs a:hover { + text-decoration: underline; +} + +#header h1 { + margin-top: 2px; +} + +table.navLinks { + margin-right: 20px; +} + +table.navLinks td a { + text-decoration: none; + text-transform: uppercase; + color: black; + font-size: 11px; +} + +a.navLinkPrevious { + padding-left: 12px; + background: url(../images/previous-arrow.png) no-repeat left center; +} + +a.navLinkNext { + padding-right: 12px; + background: url(../images/next-arrow.png) no-repeat right center; +} + +a#showHideButton { + padding-left: 20px; + background: url(../images/sidebar.png) no-repeat left center; +} + + +.legal, .legal *{ + color: #555; + text-align: center; + padding-bottom: 10px; +} + +.internal + { + color : #0000CC; + } + +.writeronly + { + color : red; + } + +.remark, .remark .added, .remark .changed, .remark .deleted{ + background: yellow; + } + +tr th, tr th .internal, tr th .added, tr th .changed + { + background: #00589E; + color: white; + font-weight: bold; + text-align: left; + } + + +.statustext{ + position:fixed; + top:100px; + width: 0%; + height: 0%; + opacity: .3; + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -o-transform: rotate(90deg); + white-space: nowrap; + color: red; + font-weight: bold; + font-size: 2em; + } + +div.note table tr th, div.caution table tr th, div.important table tr th, div.tip table tr th, div.warning table tr th{ + background: inherit; + color: inherit; +} \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/ga.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/ga.js new file mode 100644 index 0000000..d9ddf34 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/ga.js @@ -0,0 +1,18 @@ + +_gaq.push(['_trackPageview']); + +var disqus_config = function () + { + var config = this; + config.callbacks.onNewComment.push (function () + { + _gaq.push (['_trackEvent', 'Disqus', 'Comment', 'null', 1]); + }); + }; + +(function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); +})(); + diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/caution.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/caution.png new file mode 100644 index 0000000000000000000000000000000000000000..38c054b2857aa700c4f15317eb6d6cac788a2b33 GIT binary patch literal 2958 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 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/note.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/note.png new file mode 100644 index 0000000000000000000000000000000000000000..672b8471e7651f366c8a57afa82e7d3ad2cbdcae GIT binary patch literal 2414 zcmZ|Rc~DbH8UXM_Aei8ZM38#`$5l2Y49E>4#pwlu5%53~lW-;k6A}>#*BBHOL|p|( z4iADNC^+JX97i1Rm>;C#>2W|6P zOfV#1Fqp*w{@%gr=mu>WPW_B!YuTy;Zr^4+*Yh;w=c2bWzFMemQu z$$TUU&R^H`@$1FF>7bblN+LmdEXN}37%_BD(Ayt3=Eu$?+!k2oI!enW*RT6tKj%?Y zvSjN>e&x2JfTAxf|DmMFHkI4c+2Nw!3)3a zLT`M1{uUHX{5`z2CZw_}_V(N1TfYE#{%As;J94Mmv18%cWou5+T>W&}!%hT|##tvf zpov4$YXHTZ43;Jc!OCfymSb`)eZ9ts?q05jOmyeg*sSx6`{E*M2v~3%@nnOl_5&nS zZ<&vosi|3<{gCX_L~_&KrL|~XH1;E&yMSRkS}}Z42_S?M`j<8Jy#&;!ih&OxBNr^b za04tE9RnJ%NO~98adERC?daZwRNyhG$^tmrAz0dPN`2UxM!#h`zrkAQe{JFwzt zHo&gb2VxruvESP2*GBNnVEQ1$k zZmIIqFb-L5j#ll`a58hG`I}(vC9X6B@eBsKeSZQ%En2CYTu$8uE?>@MGr?i^zmMAM3>QY=Bd<@*ASGiTDT zTsfHBbLr_5kdF3UDwdG?xaFAoC0-4&hW$Orz_zpmfGNAOA$4}jc697{>_p%OY($Eb zQr(1WoHSj&XU7DuBXLm6nfd`hfY2X)-z(#l>5iR6|BwW|T&9Q%Gee zwlsw&Qhv~IOV+Hbt5G%1*esuIb4_n(PzfsJ*T6bj3fLp>sX6`!zU_B_LEo`4Jr67~ zw*s2}fk2y}12XivdO7`PHuGF5>84kDFWZqr;`? z9Z6%K8n4M;fM6Orwp4i!{pL<7Isqk^owc|!r0~k2d1H0mc%NpL^w)x^xdVL;Pj^&A zOa2}_ZM*J2HN`;w39P6;%MPQoyaOhM=K%K9Y4As{2RyUUe;(?zyC3 zZmFQIJF`hBstbDENXw~+Htew^U9Xx+FcJb)nZ9#&+cM1I+frx}3ERsiB|u zQd%AZ?LsusNJdY2P=}ewyMAPBtRdUR`jF}ak%hD*p9o#*OA*`jpDP907Ra+s4p#%G zG1`B`yH?tKulznfH}~UTIh*ZGE|+@jP|rx{ry1eqB-KkpLhQry;+}M`JUKJIR#DHj z-W7kbTv4@K_n93QVK-aZgO_e5L{aC;xxs?w>iY{K(zcqmZaMjMkayQO>Fe>TC6ZFr zfK;cvU9!=hvfKo4N=ACQt#z{>@i84yQQyoiSB!UucvfrQn7>a z*_qXVY(&8?1&)D}bCYGnN@|(Uw+a2_bE@HH@_h`0!TdfR-}6(LP5?!_cA!Fj0ho^^ zQfq_p(e}-bvc^X1m4tvAE%~8HmsKBP_q&*kPRfR4r%QiXHZs3jTD`EC)!AxLEavy4 zcfHCc#a2^i+x-o~$Nj`Fo_GIDl<9SF&4{k{ znwvrsk1l?%*>D%^FO{LvjJ;L~#5P~&=n7V*B)P#Zg~PMhy~!Z!_{Im{=KpowxS<|Y z-BBH%jHr)8m09=Rz@t!(wo5rnK!mKxF!`?0l z%lW*aGsNpkry|jXh6>&aCs%N*yX%qmyZ46ZGHm&+?u#{MpFpbnz`|X-*ZIGfmw%?x zIH0E368|fI9&4U){u%Yl;05*H!|FtzutX+3k>$eRvD5+c1I5;sM6n~;I#6vXF18LX zc1|S9dKU^s-(P3<{|w-8nK6+E|NnqU;;muzfJn%|7e=}4qw`rL0WSs<8N+6|sBg?@ zE{8>CGI(?ji%0h6G6Wn}d?KIBqbHGh3=)SfWW|#hY_5PwVsaULGM~pFbLcVgWFCvp l74R4=J~@U%k5Y$tZX(M@ox+u5Aya3>1o&+8zTrj7{5O&mdW`@8 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/tip.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/tip.png new file mode 100644 index 0000000000000000000000000000000000000000..564e5c808f5bc16ade800e01865335245d6a0a74 GIT binary patch literal 3062 zcmZ|Rc{G%58vyVJMM&XIBwLc!nXyzdwl_vd$nr8n7_(r?7|qzlC`;5=>J_7f$&#fg zL_^9_2`%SlbzM@G?B)Xn-if`H<30 z2`vbcd1!|@>K6HFIy>gT9o+Ut_R;EK>!IT%hsy5TUyx7SppZD=5cKNwl51+g{<>7# zmGk9_XYGuRs^0$a{*yfGRk%_3?Fku6B_&q*^i#KLiu0HDn%lp=Yw}FEK?8!AfGk05 zz_~c#9sVuDjxjS1&y?quC=_cqPM_F-Xfz(A{}{>F(z=to_Ie+<<{ z%nVDHJ^vQ?EJ1lIAU^}YGsDEf=1p#t6>wujQ~52J*@;8|(p2^EgMCd`U?~Or$GEvc z_i6!Sf)$X^*+)2r5jG8J-BqL4ou z26Y=kwmOQb81c>?K%%o75HE+9mcJqhAOX+~*q*NnYPnp!nPKr>3IkTeve}n${GQ9JPk<-J;G>Jr!$e?Rl8@!ingmxDU_h?u0dP4h14ycQ0=#~H z?%#Q)q-mH%&rMvSmKYpWubO%+6>4BXz8{-RqcYeAsv@y z&q8`X4YkWP;{NLbW-$xjx6LvL8=&qNwVBBlZ~`HV9RZJV7A3{o6gU6v!vl{;S!|nQz&>B@ z!h$c;!9nbrikd(Yy*DWO%2j}lYME4jSE=tLF7dA8k#B=&bHm0O9QRF6tE-BusLRP* zN|VC+(r7c&e>M1#Dl;;w55USbh!UZp{?W2wH zST)7GVwSmw61wHceNHa0qrcDQt7(41EBZ}#dP*jL-n#}*p#*QjpH@{>m50jfelJX4 z+zd%dB9R3B#?KsIruRum&un#!6%_>~CkF=`(Zp3$j+ij{(v3;7eSKTEURowqRv#+a zf+yw|1%$}snM{BGIE}^^+DPO+nUU95E^eNk6>D9)_HFqO8}Vxn8=GeYu-Yf)5btx6 zPUgn)dLV8k$_9}7GY}}|&$o9l1>WB3jdODzzOl1%@oYAxo4Xm(VrgoKmzGsO36GGl zy|=o$bLXWBFI_KBPn>ga{sYl*lh)x0qcbyO>+zH*!H)p8n98=O=%-I}PSGlF7i5`s z_iD?0tb(vO9B!$|^z_9kBJQrUzeJwr_j>U zu&8a89TTfz8u@diNg_Npuv!&nnf&@&Wru*ar@aPN#;E|kv<2F<%&1dKi<|p0H{>J_eOkFX%1Vs_Io)Rqxitx z8>#4tDTTX^l}?fT$1y_#z~#W^q+=mcu4oe=!|6cLuI%b=D?cZ;dF=9B3EvwX_O%g! z2*Cg{?;?y($9e*Mwp&Z`>mykPa96xKF%85nTMuyXO|=v2+vtkt0@NRCf}clnRp!= z1JreTvLVq$=#JIh9c1iVgrLY4zBQ&=F=!ui%LhHJdR!^??ptrk9wU6YG`Kff0*X2d zwVn@#;CsO$_sUuE#JHD^Z|8u61Prh)58m7TdCvi}yb@q?(#zn>66t)V#hbkOO@%w& z^`Nhn6?j;yeHm;jN^Fh~l4^7E>VD==x3mf*7GE7tYdWB_3lO_DePp4b$Y`)D)Q6tl z`0KGVX;t=G7O-Jt99Tdpo&F{lA!9lMPMfWPeui&C>Ap38pyx2mZ}AN`;Ma#LsO!TJU0ug`@0dzUVV{SEw~Ml;jsmMic2| zQGg8e^z{*Xh6w$`Zu)v?{ljR(BM7}iXgxh;TUoFFNubh56#uCIpWv_bm?ugggAo|v z0ce6BgNz8HQy_mz5E+d^p#o`CGKxf``%%es6oy6&qmqL|87R76B#KT%Q2oNm!3bgy zEsTU9(TEHbgHA+I{V2gGI+;NWqZ7#t6ou*+APS+B5Ts~?^b!v@(SVShwIk-CCH}&H E0lIX|ZU6uP literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/warning.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/admon/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..7059d6062c7db6e2947d24427429145ef45ab8d9 GIT binary patch literal 1926 zcmZ{leK^zm8^^z%GhriJdF(i+U&MSzafwQ_F%Ka$^K6^Nu&K@CJVp*{q2%G`S3Bot zD<{u(9OP*#^PIAd$_lB7i$>jidf)FqKKJLoS>B#5>JVKB z008Q)ShSCfN4^DAS$0RqDp|^)OmufaZ+}0k`1MIyM)fQh-U z@Ej7v#X0d~C_n!oq(=kF^6>ERS}nX7-Yl6oby{gAaeX~0L2h=wyu7@0 zrSL$7es{Nu3ooqa!KmCu+CWiTi`<1?BZrKy_w8%OcfsFHwx`=?J^iwk;-#7OxFaD3 zqqKZ$N5>v+^GWmUbHqu}LR;L69$EQ2A!l1JmO7!0?4LZVF%nHGk`y93@uqv&RoBNv z!6=xSP1Y%)+bN{3wp|Ij7Ey=FDlo=D;zYwrr1Mt3d4CDt%$1gwmRzoVGW!O;3tvB5 zv+MCy{!YvY;=Zf7AdJ}!hJO51T#H-gz}Zuweu^_IM^fnP7VUxNeSH|r@G?T9s4!#m z24~@8_G$KL?1u~TM}Lca$YcUX?#BIUGP^K*U>Hn_WzFNShE> zXNtzP42Fn(5R-kS6Ml7dJJky=0UOfM(Q;5hNK{kn$*68rftf+jmDTv*w9g+TL0QLV z-il+M0sM^I|=N@3u%q@ z3GIXH)qYmKuZ53Ei;I(+NY@BmxZiW zo2-@=*>h}rO1GEtUNu-4dm!2D#?bCm73hxZhZ$=JwhcLxIpjhKiG%T?QW&cl3o#rtgmYV5ic*-T(3}7mismD+J6EA0jJ92;l%9p z_H6I4upl+>z-N<_<3d4~_u#UT(f&0dMyLK|>jacNI*K&UZ(e?alc1ZG`(FK`xiqBq zZY0+kR&Z_!V}36LRb0@Qpq{!&uRpv!u;rNRXk#L+gnsTKFd z_Uwv6xh4{xcY=*RS+#(ZwQkiWYHdKz(KbHnp&?Kd8UEkSplxo#e%pXp-@gUvT|75u zsIKmxj(^b zOQRR3r!Zloj!hevxGmM@23H1WXUjn#W4qc{A_0!Q7`iHv%rc(L&inh7l*hDvMPk;< z46fDJL_fEgQ*!1tH!~P-pXRIxdVAH?5f(sQ!$o`V_nR+IkVx)o$8C>T-D};t|0IXn zx)>cGF;5*S^aySc2!h&#!V@8!56jKN*1V>8Q_P{L{C- z{{2T|upB;+DczK&&aLwUIS+>2vO+qQRZ>&sv{-m^I1j`veF$JY$j7*?YfHRa>vKFsAM{bjw2;d$+UO|NGBwNbP|$ENF>vcq}aHG2xLSYi2*X`B#=s=&_Ftw o5tl$Gkr^O`N{Eypi9n}OXpt5&7nMBNoXiw(#dx9{oWisJ2dl+!`~Uy| literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/book_open.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/book_open.png new file mode 100644 index 0000000000000000000000000000000000000000..1086fbeb6336b6474f48a5510a0582e3d790348a GIT binary patch literal 1211 zcmV;s1VsCZP)BoUbkKpjg@lVct@!o$9i@X!`8?U``aBEkT zti&Wd4~6~%7=Gf&yQ80dG*s*mYM)5b*ngiwe>+oGSBu#;S3Q`bks+1l(_WU3_b^`_EBPULuEq0@~c+*!L|`AQ2}vkFCd_=+HWpT+Tz@9IZ!umB-5i2+PRu?ZiGQx|#z%qu6KJsuFq z3TYqpy(&A*qE?z_?2v>m5tPuW8IOod%!}aGE1VgURgn;;$swz0BUOdSc0n;wVOmE6 z>>z(vYvTBn8Xr_SfRDOFxpqhmMyQn(* znS|RFP|ZUS?1)0_BQY*S2^^U$p<#hYVl$}09EHghBdS?K>_ZO3%YDZ}l(K-oFHhj+ z>etVQ$QpNQC!FK_gQf2Ygn3Fz}(EQFzqY`9(ocz{X^jWGY*(*Qd;X_ZOqo>#sypG;&N+&|Fy%5osq!o}n z>yDg>LfXO1U1(=CMy>Qz%Wq z;HRtqtYYHoH}EO0+ad~FtVWt=6CSf1R&o7?K2B;yv_l4%FRkIm!V0Fw$8}=ITW=U1 zlU2#v0p?IlK=SN=yOly+nRh)Ah(>O3YdE*6`=-i;U>$9~yW99w&DWSQ0XXY#{nXvj z>XLqcWEt0;PMjRiw_FYm-0!Y82o=~K41UF0Sk&^+tDnAkvnG$}U#PS{3G6CTVkuX;DdiGP~K}{4{|yipQtr3pT*Jge*Uij Z0{~;&23{aS+7bW&002ovPDHLkV1ng#K&=1( literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/breadcrumb-arrow-white.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/breadcrumb-arrow-white.png new file mode 100644 index 0000000000000000000000000000000000000000..7c0d42dec415c0dd91ec4df0ce4c3b72812cd647 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ;0V1_0*t`W&jKx9jP7LeL$-D%~CV9KN0BIoj z>AbrhNO2Z;L>4nJa0`PlBg3pY5H=O_S-Bn0?ZnbcLE*(g~~i#978y+=k_Y{ z9X1ePF;_R9yyv7v|Bmx4(?X2wuc=>Iv&G0@?aciFCzmLE5?k7}iYMl5mf9qXR+X%^ z=Am=@f4c}-K5y^H+526@X$M2Yn`07(E8kBKIu#q5UcP7hwK&bCt7q<&W#~8|mK?)q ibN0>W?*HwK54fv07#ZI<@~ju=0tQc4KbLh*2~7Y1pi^Q1 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/breadcrumb-arrow.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/breadcrumb-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..0b22b35fea398dd9fd8077174c50b102d083b427 GIT binary patch literal 172 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ;0V1_0*t`W&k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5X{5)M8Ln>}1{rUgjo;i$Rl81)}2SXBLN}-xYF2fN?2T%4H zEZmcn_!P<*yqZLG6P%2HG7G$q*pP6LeMX`;OXk;vd$@?2>?v2G2j3I literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/1.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/1.png new file mode 100644 index 0000000000000000000000000000000000000000..de682c628feee885b97fd19e77b016518d833711 GIT binary patch literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=92~rKK68R45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%<(RmX6r@{8<}R!o-G--zwYdTlP5b5@8;1{=w*AcsQTNRLe=)iUl{`QE`z75pUXO@geCx4;f9R> literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/10.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/10.png new file mode 100644 index 0000000000000000000000000000000000000000..96c6ce45275c754c86964f523e57bb2ca5507877 GIT binary patch literal 524 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%nMc45_%)J87f$VF!_8`x4j_g4RWzt>|@iO6xonCpLUuhigLc3Jb+U%Op*^%iLyO4_(X;pN6- z=a#Hm^`=rTB~q_P5)HwY|d8XT*w^=@u zSiV--p1!#&MsKHy@TcQO>_47BbD2s2LA=92~rKJj#M45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWC>mIVh^7_bp?vVw0Ac8FkGr=O>_47BbD2s2LA=930$iScxC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWu;5ShzZF-HKw%&(Ci= zKi__F#+A#LnX{Q1Wv$B$B&4JcEs1e3ld7n!Y^>a~XOD#~N71)ON4pbaWYyS|806*U zoij5voeK*MV|bQ)WU}+UbmrcJAECGvBVZi8DU2$xScp!J|iq49efdw9T3& z6_BCi{Wh_2S%*lDpnd(nngWmgRbRREj-5Ec;l&{=c~OYLP(f@;Re~n_6uEq+jm!eY z4?T-!I_%-FU3*BV(lAJgz49qrkWxKEFbBgty{H#GlO<(=fzROS>gTe~DWM4fIlZ{! literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/13.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/13.png new file mode 100644 index 0000000000000000000000000000000000000000..b4878f1a451337e8e34562ba148f4b8669dbbafc GIT binary patch literal 520 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$iT8AI45_%)J87f$;Q)bS`?pED9L)6<@taey*G&cvlxG%uf$~RZ!px!#yrs(!{N|KWn3Uov-5ZqPv zLGQ`bEpBhw_dhHwe}C`pZ?79y1Pi_A2up2ruQ;N8QQgipNi)2})8dF>*H_m&0{%5C zo^;LYWd5V~uFmmHXTR6CJ>sr`PZT&FSe&y8zHH*7Cd|XeyybRo#k_WnEVZdxqa~r7vo!eLJ*%Rovco*|#lmM%k0+X>Kp3Z{yj} zom19d!1vow!LQ@5y-vBWOO>_47BbD2s2LA=930$G4ynC45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWBqMPL8CfP}<}4avv(*kWU2Q#57OY#I+56h3lkd-N!&t^WVN#45%PeTI#kX1)LZ z{Y&6s{{R1fdO`}z@du(}8Bda~a)h?5<7D|};23;_o9z*!hN4f3i#NlOhKPVyjZ0+$ zs`hXm;d40CdVHCWLR`zdu*A+i5}Fg64?SQDQmSVN=3p>A>#6*xIoSgkq70s{elF{r G5}E)R1*_Zu literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/15.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/15.png new file mode 100644 index 0000000000000000000000000000000000000000..f6a76d51667ed2ea608facddd705cb079d9150e0 GIT binary patch literal 522 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%VAa45_%)JIT=daDc$^|DBCd8xsyR zsGbb6N-H?~OhI+a?8&k|8apgJ*x8rYFtG>AaLKxI#O^8)d?mF@lv8$#g2j>)(NC;< z#D9AQCA~b@|NY(F*mqCw#XH>V>(omWWZUR}rZaqzyNgZW36WT#{v(`SZ`*gM#?9C~ zUGr0?^Pl`Rzga)Jwp@Bu#ox6k!ECnU^{=JNbWTU;P1l%y`n9p6z`Tsg-OYLxSf&G|7V^1m;Mc0w&Kr6dteMOc)I$z JtaD0e0ssM<)1m+X literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/16.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/16.png new file mode 100644 index 0000000000000000000000000000000000000000..c5ef6359aff17dae242a9f9b5b07d37492c5e2d5 GIT binary patch literal 539 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$De`o245_%)JIOx#P=LtM{*BGkqO3z+ zOz0O-$=()Z)u9(O-ASYA#RbKZ7XdCut~zpb&9>MgVwGB;JwyM2zyzg*l3KD>B|27I z3%|3;`?@S;uY0)nPWiq2!paXWHgYr-cnqizE%Fd8zieDgW5l ze=>zBG}QIwrv|$$yZQW8D?_xBQk;!u9!W4bkhS$tfkn$>ittqpVD zf1h7XAn9?*^ohRPa@ljQmoC)k(m1>1>*KtssgV~-Z8Oq0M{e|;rn^@7O>_47BbD2s2LA=930$G4gbA45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gW?*}&7>JKP8>LQjxULeq0mxTLm?|WTXN6dy^?nI|9YG?f)^5jUtj}M6@4{d!ehO>_47BbD2s2LA=930$DfM)545_%)JIOx#P=LtM{`$6{S(g?% zwR`Myn9#*2I6cTZBz8;iw47M0DSWb4PmNg$3#LpnRlq>o})cD8xLPn<2RG#*B^`C5M#GZHV1}#5QrW zt5#B#YTt(FHNSa3`dX|k*t6Y7t@ur)oX+W}_d3&0OYpE|Y`>jhHoHKEec$`|pqG|s z&xL4Bed4#AIdWRE?ytXgCccMDtXdaoNbt3vNZYI)QsuR&+rU@&Yn5#GQKhsw=bv*l zHPo*U)7F{p9k?q=_I&nMsd௱J?yghEpb|-VpoRA}>5tWxeXQuIvD5d;Gpf0>c9xIYoipjdSHJpu$iFlY+O>_47BbD2s2LA=930$De`o245_%)JIOHPkb^|){7z@httA~7 z6gN8yth{mbWRR7}+&2oYE4pJBP2rQZvb17XH&@*nAiFEPpqy9H*+|6d%F&}u-gkce zf8?pO^2abg($Weo=AX(PI$`CEgN8G#7n!wh>srX9Dv= z^G6)@-TwO(?Kq?F#k{wj=_6M?kNvR0HfvMg!xc7eOM@C0X%xhY?|UCVDfL+8vKqVf zWxHcntdg=?bpQS0n>k5VbCo8aTyQsU@x_ce6Ta$vblwuBJH<;?XZq;?gV|@-IqTfs z7PvO7we;x0%}EAV?|Z#xu(oO>_47BbD2s2LA=930$G4gbA45_%)I?2$xH9+QQ|1|-{i2^qS z{QMqWc&5@~vSqi)jg)R@l`jf{`jM4 z@AGdp@pTq)^|)MeD(~sXLh~mUe4BI*Cv7}nz!Q9M``wL#*B>3;y!v{n?7Zh|)m1%( zx;M004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004_ zNkl3-r5QX2JA`%WOg@};C`jCi~jij)ModkqKNNHgqLBt~eKv9U2T9g=b zod`A->8!-&I4lepOcCT7AzE5UW)@CPNkRrbc9xmhncaO7j?GWp5!ZxDc!?P?BAUdf zohUhqG~$6c$Itdf6o_ZuxEw_~q2PDp?l;6cVY+#|L?Y2_G#XG<74!KVxm*sD$po=j z482|t;cytHX`)yxVmux{Qq3!OydMsSDNfGk^H?sIs8lLwwOXjx>u9&z$Ye62WjdY4 zU@+j$ZkZn<5{Y0sor>USG(t2Q6@Ds}5*^t(oeq-8q&;?$3oo4)iO1vUcDuq?6b1YJ zUiiD+4uL?xPE%!Pk$C4yT ze21><;yV_L1vE{AVHhlgsB|KL|JW_7$L_*O>_47BbD2s2LA=930$iScxC45_%)J87fW;Q*1g|4U?Dd_qr__Nog*S`iY2k5iL=zix>?%}Kg^qDT9ql*xg$<*x~|zy6W{WDR>vFSEu8_J2kJ|XUJ6!g ze`=_BuH*2m6L$spudbPO>_47BbD2s2LA=930$@$+0wo zD*JBcv>EUS9ygRKd3Wda2c@>dieam-=FL;_T=4qWyWPIaH{GaEvTHdWtvB6XF5>dm zzKR>~zZ=fzopr06Xx?WB>pF literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/23.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/23.png new file mode 100644 index 0000000000000000000000000000000000000000..3909b9cd8fd0720f5672bbdaa4ae37ba82c4b72a GIT binary patch literal 589 zcmV-T0004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004` zNkl@;rh&}uquSANt<%`2sbVuys_h9v7;)!@rdAvv@QY;h-&@>IEX(AqvV>ld& zd!x~S-|vTE7)Yg3==b~ARMTa}i*~zx#L0<70^{)*xm*s_Y892&PDh+wE*F-|r5roTqwd>3gp;|m3{_RJSS&D~ z&xP`PXgumA!OCztoyh0&NG6k5uh$}Dv)Le<&5DUCl?uw`vUtt~_k8ery`qR0uv)FY zt#mLLz~}SHtHFhOG#VAlNT<`7OeP=6ykXufM>rftuh)~Wx@-XVbUJA>#!_KDAsB<%w{t-LO}Uqfd9lPyGN?9A0LSWV&@ObC5W4^UX><4x0#%OmuWM( bB@^EOG7*lLyH^aK00000NkvXXu0mjfdrk4= literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/24.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/24.png new file mode 100644 index 0000000000000000000000000000000000000000..963a9e770cca4a2c7c7d0628a131848672c9bc83 GIT binary patch literal 542 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$DfM)545_%)JIT=hP=LVk^%oAVP~8MvZ@g~%#R=Z-}gYXd}BmtEHUQf2FPej@wC zcP0`%ebH;heAI+5nDEA2Z;e`e%w>_rp#lpQ&qN`py_WozqO0O(Ne_%0(Y9 z++(O&#b@<6b7KU{@xleS->zfd9JSVrm8trmW$pWr(7n0aZzo8w=}bSpHs8^;&P7De z_v+```+6c=H;*PwT({>m$Gizf2kH+gd{;TAXunS}{lq`{xq5>3Z?7JCqLyB?>y&o- dr~Z`3=0&eE`Pvp`?*_&SgQu&X%Q~loCIDgE)%5@X literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/25.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/25.png new file mode 100644 index 0000000000000000000000000000000000000000..458a91990be481a831161da501d993f1fb4fb9ac GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$>GpJS45_%)J86IRAqSD;`#Tx4HG>?z zj{3?pn^^4hXjhnNU8Nr? z=UeBJ?Y;klV)@Q$`*$BhH>|Y?RMl}(=j*V1DByc&y7*Lw3#x_gbCUMkam=oG;;SL> z#YN^}dEr;?M^g(-^YrJRH<#{ZD~WA?Ub!MfYlh$Qj-yEtdeb{xl` z+{xPWSpOF+ja#pNZPh9z8NO~l6JO`uciUd?s#)?m#GccyA;Y9AZ+myr#*VXTn?sc* zdL&rLbXj&RIby6o>7>f5uU0v?{|O$6T7TVR`Q;+(=MKkBd`qlkuVk4Tx~@E$)EJ`0 zIeg3KG*D!B_%t{6OB{an^LB{Ts5T43Ks literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/26.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/26.png new file mode 100644 index 0000000000000000000000000000000000000000..74b2507390edc1d45140ac991b9e73a26657cbea GIT binary patch literal 596 zcmV-a0;~OrP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00052 zNklNP|PIxdf6<4i1k7aR_vB5gbx<5JZFw znjFOC4euWi5h6rP2pgW#7_NeJ&dnDusp!BD&g0(i-tV6GN%&qq;+i-kWWqsA35}=| zhPhF)h%Sj+!jGTpoluE;{;*j@55x(6FTVYPcp;wbY%d;<*K4&JWLd_1K1Vj2#b`8w z!{IkZQAeB;ehPxLHs zI-O{@+t_Zm!o_4V;U)RVDss78C=?3F=kuS_Ae(NtTfDj1Y>ETSV&Nku2$-$yEy5m2KJ`<O>_47BbD2s2LA=930$sq%Dj45_%)J85I~AqSE6`il)qMV9l4 z9z1wb(L+`yW{F4JnYph50*)+nejy;E#n|50zxUoUKHxt{h#t zqq}y!>Ll*mm(Bd|^xmJ2)wAbJnk%%u#ZBXg;6^2zLu&U9yJ;%L3i2P3tXs$Lq#iR* zMfs9&VblHY^8G4tobk^dhprC2y-7!-t4V?5Lf&@6`R6y@f6rRH{kG$@r|wdIKURF- z_kQ-;Fz)W7OtY3Py#9J&&`OS=%{N`NrXDJ=c(QWpgKiD6?s%c;&nq>idNoZs|NLTx ziBqR{>PMSfN345~Cp*gUu)QeTeNk0aaPHE}nI%@T5^aSM+9F&ho)*nGn|A1QM9nit zv)Qiu@3*geeIsvsdt23BzU!rr&G#f-3=S1te34^WX42j`ZrQC-yq8~^==uF9ztQ*j zPO8z&Cuy54Z6+>xpEKojs?PM&6#_Y$Vh#VVm@ZfM;d}nEb%#RV|BgGn507k?YP-|X jGRI!Eqvelo&L5VVV;QTDz7*I7j2Z?{S3j3^P6004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNkl3-r5QX1Gix7g9MMP_>Ln0O;f&{gQoumpvz{WyEQUr^DKR~chu@)hU z`2iMQVXvZMI4mwgFh!K>43;92nZ=WfBq0MI?B32}-pq}J?_nqIiEBb8PKha@5EbIX zNR&*XTcSi<;OF=xvP6?F7L(|iILGh7)o+M5LbbBJP$*O>m&=f48Jeacl}ceS7$6u7 zqFSwr@6+iNnM?+~Uav};E?0bPx7#sJPN&nD&*vx<3aHg;7>z~j|aoyQ25~luh%QitJMm--A_-hu`lPZ*2924^F2O#bOcJ zY!>VFT0C+KEaDiC$A=d9-?C7NMx$aF`FtLW#p2*#GMNam@V1}qKDxXB_T_S^I~)#+ z*|sD}aJ$`TwOT@~swxtR1ZJ}tFM?M(T7dt=9k*{(VGpmw6>;{*%B6{?<6SkD{K2&3 gJax^q004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00050 zNklcV7wL%}Lx4=Y&EW5C)+W55&6} zC|Q!Oh7ZJzvj0dqUG8|-YPBvnIF(9aGMS)QETUX4qup*Jolc`rC}6c(A)C!| z0q$(K@gjUa9|nVgm`B%jsH!S_{`Pu3;g3cm#9}dX>O>_47BbD2s2LA=930$3G{Sv45_%)I%%VKOM=9)`Noz?N>Wl% zvt;_6qxv5!EK=NYb>Yzm2UHcMm~PAD?b2oX&*+-Tb!6qjr)-vU^j@$PXJuIBdCY0O z=Wk-?x{ke0!S4Ow%a5pDR4?lk{pe*Qct13;J$sjuTxar@*X=u0WA;rn zwG9{D8^_=G*kM|#&UEh;tGZM?wW3qcT0gDOKjQe5#gXB#!GcUFv)R1ME@u`7tSmkx zcFKD02V-6~<}=SfKf3w7w#QBRo}G%^kx%YhyaZTY?BYBBdDb=7Y@6KdS7o~+)?fFy zEYh{eR2u<_B>$VGB9|$`njxgN@xNAoG!y< literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/30.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/30.png new file mode 100644 index 0000000000000000000000000000000000000000..c4dc404bc1cfeadb3f6e80671196d292e8eda1ed GIT binary patch literal 597 zcmV-b0;>IqP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#00053 zNkl+FR z${bd!72EAr==FLHhr=NgHASk;W&@kehFC0yLZKkm6h+zTj=V(d5l_a=Uatq2%O&(| zHiOx07MjQ9aw(7LoY)+VM$j}(toZ$Y?wru=b{o-XRA?S~{uQFD&x66>qEe|?LZOiO zR_^d>wZeEjMlP2_Hk%a}r&1|QCKEQox#^n${u5{H9_bwR;|p;_SpKlwB~khARcZ2T jgUR`KjSMD#lLtQmtF?>&>wXE800000NkvXXu0mjfFy-;> literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/4.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/4.png new file mode 100644 index 0000000000000000000000000000000000000000..1e42fb376bf0da3014c1b71496a3027daf578487 GIT binary patch literal 425 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$VeoWu45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWk%^r=YnIgE*Vor4#xN?x z@fMyo<2RAke=SI$GU0f98M_# zi3LlSwkn#MPJMWGw)u@Eu?|wa8*Uyubm&mQ>ub7ff`WoMQl&ErZiWR09&F%mSoGLL zV73DHzyJT`gB6vF&KSlpew@{~gKhdr1?LMUjR#oNGP)`bI@mC%wsiJna5hK?aC_OF zF)(NT=&Ml1kfdj0mdf-|>B|-_?0!c)I$z JtaD0e0s!H`mGl4r literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/5.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/5.png new file mode 100644 index 0000000000000000000000000000000000000000..635e7f816277da13e909e96b832ac8bb5e7d50d5 GIT binary patch literal 490 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$arAU?45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWL$+hvz+Zh-b8y_w; zG&=OQgEcd)(Q3W)%?x&S_O{a3*9==)TN5`|8VS5lZ2INN7U>orKmXyQqumxUXA~HY zJXP3U!njdnQ_t+#(uXIj`%5fZyjZfSxmohueEahsetu3*QMFN!=DpC%!_S{?QTa*5 z+0&ELxxC!`@SUB-7pK11kWkz`YnIfU+UMtFH_X4tc;Xm056gk|@%t~dt}}2{7H7S) ztF+tE)s^*;nyhTwRPFFZ+BccG=A3qrVgF>{^X1CQU>@)3dZ{12e@{Q&N@ ze}AouoIH-qV&GsXU}{k14XE0~*;TFZ?9k*VMvWDMRZ*>~pOTii@Ns>W_UQb>=%dK+ Y`mKN0%RTQafg#M`>FVdQ&MBb@0Dv*H*8l(j literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/6.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/6.png new file mode 100644 index 0000000000000000000000000000000000000000..521aedde2c46c55421e87a355b77c7d77238a929 GIT binary patch literal 526 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$N%eGb45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWij&rZ~=9KvP@ikAGBI4}o%6fQ-=VXbhs;UV~)th5j zH*FN^sGX2%Wo<2~<}>5Khfhzv+m`#!H##%JkU3H+#h9DhL?NJI#R?5(YisMncXk#_ z?yLLDWybO%Bt=zEVY$?T>_4BM^EY>OaXA+i867?~Rr}yMS7s}p8%_S+-rb2`UtLZ3 zc5$)0i$MIZr^U^ zjoh9myJ=Et&xIE|dSpJz$jI&f73kPzVZvfVI+ z*{k2Y@djhZ&JQX(eH7wa=7lA8?vc=(*!<`xTaZ#cLof$}O?6yAW0@5rFcug*UHx3v IIVCg!0PJ|aQUCw| literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/7.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/7.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4b876a8cc1905944042956cc2c8e47b060fe3d GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$;qi2F45_%4oZ`T$W-h@8V3<|8r= zHLM-w3?E$->X?F0bS%+i>iFFl(Zp!|gWS+VuTo*!!8G5L6qV+#E-vTdV&hF`XZZx!Ctg+2(K!+*LG zyf}n6sxdGz%wd?3n8)^Lw!<5SBQX_|V$=lmo%~mCaEa@ga>DWD8@3>&dWK*QhNZV1 VXB~Ynd=MB|44$rjF6*2UngBtSpxyug literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/8.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/8.png new file mode 100644 index 0000000000000000000000000000000000000000..50fa94d16db8ef19ab376affc9da83e57521ee03 GIT binary patch literal 509 zcmeAS@N?(olHy`uVBq!ia0vp^d?3uh1|;P@bT0xag=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G%cl32+VA$AK^E+@dkk42gO>_47BbD2s2LA=930$3GsAs45_%)I?2%caDYgwe=>Wa0DC)+ zpJEBu(uGs_VqJK4q!+Gmc2|7#;K6x;<2tNIT{L!h7jP?;z{$vZO$J~+Srg9=`o3ATW<2sm`|TLKPrTl zTM4C0@wMNcJmZkTkrX4r)9gpqhUhL*y#IZBnwr_Ws=ayJ=WMe6Cs6xw^&$<9CWcKq zi*>xuq!~Y{yjSpT_qF3<$r5arOpaFAv^}<%;kUe3&g@n7?GwjR)Rt*v>2>?+&$9RHs^=a@+U0rJ3Szh4dsk!UJ}os#;LACNKZ~sxR($&5C?i~5 v@A7U^MNazE_CIbMmba_aTK-Hn|Hl-#D=GDt)vx2gKxgoD^>bP0l+XkKdAG}3 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/9.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/callouts/9.png new file mode 100644 index 0000000000000000000000000000000000000000..7190d5a9aaeccb11ce5c500d5eeadfb1299c78e8 GIT binary patch literal 537 zcmV+!0_OdRP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0004S zNklHU+e8LN@ zwH$?bBM#-oFbrXu=5n0N<&eo_l66xSH+My|*$kFtfiZ?cp@2?jE#;NB;59 zCh$BDj^iK*0=TY=`Ft)L;VP9dz<+eX-6NdC{rEu~5!-)Q?wWW^dR3VGPBJ-vyg)Mf bmq`2tvJ+juyP*^?00000NkvXXu0mjfx%}Vp literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nc-nd.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nc-nd.png new file mode 100644 index 0000000000000000000000000000000000000000..25af3ebce2246782af1bf4538b279d105efcdc9f GIT binary patch literal 7424 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 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nc-sa.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nc-sa.png new file mode 100644 index 0000000000000000000000000000000000000000..146f5781fd19b0c1e6b2a007cb655ef127386417 GIT binary patch literal 7636 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 Q0Bj6-sQd_Cs%RSYKeoEd`v3p{ literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nc.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nc.png new file mode 100644 index 0000000000000000000000000000000000000000..4b3128521e0f3584514efa5c56aa8fae91cb009a GIT binary patch literal 6520 zcmZ{pWmr_**T#n~Dai*xLZrK8lpI2k7^FeErAtv5S{S+!B?kl?kW>^TMnD849LgaC zRJsM}@PE$m>HYBjU^v%x=Gt@itiATV?zKT0>T6L`vQa`H5bC?yFeBjl7a+%_n)AiHgt&LF|*V?v;#)-YqBK!LeASjjMiYnko zm~IShQf2zal8}I&9=>0HVjh+icVnR;V0owj`iPm_`$tRA`h;j?@v}laDiQ;M-SPJ2 zFw$pXr)+HWek_KvXgKvP%zK}?_OMe;Mo!LaPdC}Hiz|sN;#v&j^IUW>F)$eW9ZS&< zF-Vyg+cvF_FU~$wp|Y}|kBp4sDXFL^DXEY;y1F_#I`L~`udUvD zKS1&6y^wJqiK$d4lYMuviEIg6oo#z)hH43F-VSH-y(We|1ZENbPv6+eR6dF#==_QG z%>FuTb(NO0ynt7U9tWNmHK$;T5xHd}Ugv|R56-D`A{dnsC{thBVEqDt4v z)6>Dh^IlnXH40TNvi{{kkbo%2&4hSzs>FD%1SB${#XnXwVnj{jm5DGD6OXR0a22)` zNlGgx%W>O0n2k;DMNG{4cZRF+`uPgM8%KU9egpr2qTA{1ZBO>s#;eRyD}ClJ&QA|+ zvMD2ebyG0JTfTLhY|uzVZ`+2ziBgwWu$la+9969ZI@S6N*H93??Dlo)HwO1A+$tE5`%t z$Ky%Z5q5g8IsG1X3lA(;+_pXRSPJ_kl~WmU);k3^@tQU@$?hE-{PANjxzcMIJy}v; z>W!mg{a{Z7e{vE{M$6f-EonYtw<)PY{qh zSR2Qgqgcd&1^yHD?tXFo&sAzeg*_Ld9Tek!SZ&{oLQR0DlO*a9*qUi}Blpp`N4j0~edXPj72}k`Qh`g>i zHZwDp)jK))`SWC6rG5bryRr0r-z?6bKebYy#nN*q4{gG5B`v`~7C$uO3CF`Dji>Jm z6BTCb$Hzz8vw92bAi95-244cxpp$j`R;(IL3JX{kvy}0|c{A3>nlef&-v zYL}P%?>4SGrguE(VB;+k!XZ@nK7dsU02pWx5hel`CrX zA+6FK*at7=viIw>QvgxPzx60(1rzz>LvwO-Yqt}am@0m@hGga*E>UAgUI78I==2QM!-MJt(dG%lgWbfGRRU85 z79?*zu@jt$*A(on@6XOyDi$f#|D>F7b=>Olv*BntR z)~93wf`Y=rg7j}J7q_=J^~M@rWf*AP*?vDWq!*4}PoqokD7ZGO3VkvU=y z0O2vhepe3JUFgf?hq2-DB#@E%WjuUM-h1YQpZec@a8K$QR5@I5}|qG`YL^H>rytC!P% zGBUSk?&|YdHaPWV+|(7a@g=Au;(-;#*ryt9N!Cmb*Gr*eR&9 zJ3@@S2`+XQ_m;(NS(_myWD%mwEG*Zqv1pCG1_Y!)(IkuvuV6m5OCR@@oV&e)+gh zuZx7-yB8REFR6Mvhd@MH;^9O!pa7C`7VMpP;(PF#{#bLi_#d5{79JGvJ(Wbh?j{f_ zB!cU>HlFwz7k&}4K2a2|GuuH%yESK^>lj5V&&^y8=zCJq71XVOrGY%@xb&BG$6)w_ z){J`!qoI+M)cPdl+_*<@Ib}$4SC`|Y6fJGAl4N>-V;@!70g<|MO498BJ}IN4Q=nvA zzx_CkqM?=G#ivU}9pHn|F*9Gi%BCY@hbdMiBJE8Hi+Piok&&OD(K(cQxd<8WqY=9n zrtoi}3 z)$d32(=Z@uaVub5vkBHRz~c(_E7i1yBr2F&f;7bb{Nt$q`AgJjbsoy0(Zz_`D^_id zLqTfS_FqC0BVVjUntB`!hhkvmh9a*ZpF!d6kX@&8OG5MFBdDzj5yQgoFF-UAPEf7X z>vx{~U4e&m2*06-zM?GM%p=h$#494_cYbXGVvL!9tb80}ua9|1LWG17ctO#1}*&Jtrr})IxsZ zm2NH|gD@w1kWcM%U`h6xj#mmj+9?s46r$*9NJ%v`#N185 zTgV?)t^J>0Dc5t<0)7%Gx32VRTr9;;@b2_rvvZU8CP;k&xsc>kwQ?V~MVBEjuQy9_*+bR@-IrX42O zIxSbl6oeTIPqT7kjU5P z)kWh7>;ryAMwxVDFy)A|qd&jDq*_4x@KkeDTDy@oT|FCwJ^~fKV&^=vTBZ9c#E8^8 z8BID@baEnF(QsF|7Z-B00p(;R^IM?d43*D%i?C~_?xXd~Vx$wOTjyGzS0+6s;Zh-C zW7XDwil^yk9pb``E$jQ-11u0g`u-lWU_1EE0SI&Xzr&5mM%Ur%<%BnwS!e>y@bJ|c zVvmKsUxrvW@Y1f=2UouVv4DaCrxf~O<+NLWNXy<{HB!bqJ%NxAG=IYi5zxvJa$boOB8cCnrD#SsuT`rkdc||q;JEs zZo;#J%~YrW*U<3GT#zqH>W1B)755?uh>F)tvP5|j#zg?{4;bdswB{c92!-1D#= zm~buH0v@4!4mMz0Gu&vaT*tos{ilaHe9fx5x>{PgiLnixF;U@`j1o4ukP^ZhgjDFg z^HZ=t8TND`uZadBg3{_yH~j@X1fVN|8=5jwYu|@^wS$KXXptI~_UiiCztxQ!2r>L| zT;E1ogpW2ceANQ+ItVwMp=yaIM$4qsOq?j%rY&AZMn+av#=MD+&)Ou@iq*%7fM99q zhSrO`yG87T1b{Vbyrx`Opd|t&PNNl>nb)CHqiCSyqnDBKga92N;LPh+PE|i5k@7x# zfLv4aB{v_((=RQV9JYQ|1=ew~4gpx1uestHw(@qE2m&I~y5VCy_dYKYA(Rvr?5B69 zBO!?%U%rAQ9#^OqBBLr1y)UXUG5-E1lGInx!aNy5P+~^tHNv|p`Y7K{T>Zp^sp+B* z=jziJFQ%qmyznexlXU2gr@z6Q>b!O7n({hW*iaulc_I0#c6KT%c3jZym7~+`Oujx_ z4OS${hme4p1xile^>{+JCy3Rn_`HQ`GOysRJHzD^>G2)F>-$Mwn%|U^iLb8ux{;Lx z?6B~#UPrjV>E4ZWx#Y@9)IYFx8SwS9UoP=b#CJu=gHlI=7|K571gTiAO0EEmh6)$6 z=+$fJd%EvYy6iui`oB$m+iRYDiPDvFC<85oU$~J)y9!F6!c( zjAmo5qyL$e!`Z7Jwbt%lUJoC7iB8GIqL~>OI3DEOi&AG#*9*neCKALaf;b8Zo0@J! zkmtnxW8UQ9A!VT0}%tptCY48ag2wADRqVGj?^& zF%x>o^`RYpqbB^(HXnaQc|$A>cU*73+I6o>$7BGsw*VrcF)E#+#D|p3q_=I|c(=9+ z3lmuwg4W7P;OTdTdezpj(ZY-ohDIgGFC0Fo+K&=d_Wqoo-`H3Y zP)68_h-hD=DR8ouWR6xqZ|S}4nNd3muO8!K=)R-Uy`;wU3}df`qzdUekGR=Q7_m+_ zkV2x$IN!vo;5(0rB$^Bv!&$!Tp9>!svY>tGHq-VpBjbh6TQ4iaZwH&!YM~Y*bZk_? zc4_fv8H#n>C9ik99`bGs=QaBNoM{#*YH1)ac{1HpTs&_FR=b%asGg3NmYJDWoHkw$ zbG7017Sc6kG|Pyt+li^mOB@Na1is&aLj>o9Oa^SRDp1WP!dbIMb1bDx%1nZU}t$y&PUWMl$w<_d6vQi_Tp zqU$DrQfo_7QR&CZNJvOYNu-_YXXONM+gP%h=?L7;56j6JAexl(oloN?BDi<&8Z&qd8-g=rIb`u%3OX;a7^vuN3C$(zDiIXPKbITz-pO~nzFWie3O z_hM!zaoO1>W@h(qjEs$qjErTSNAZdt5sJJsAsg@Obl5Nl@-&mbS?7v5f&G0ICI%K2 z_&6qPavG|Do2Cl)@!4KjnBQ5a5-Tn*ubHjC0lla#@%zoEr!bl*%zyTedQpGneM3Wi zeFKljoQ>Wab+X{=O#(C2TzO8^#&#-|d>wxca>anAf3tt)zwyeR+K7MXZ`v5L4l?8x77tfA~O%9T$0(-%D#l;-Z zCQtgU)VMEblfuG=aN!5Q!P`-)kLbdMd2>cLWUJ^bw8mT9L9N~~`mcnHjFglNua4g0 z*&|>1$eSAeU6Dj&H0%nPvzi?%9m{nJIeBeq#yin-SGTy8ps(M&sj7OTx3IYQyU`(b zr%GnN$^7HQu+JddlFMsN*#-K4CMB=h=;(!f1NR72$!TU=Zz()qnRpWu6P^%5NOwe_ zsu@Fvlka}ZQ>T)joJ`U)mi1JcNST*jC0mb^Q(WA~2Qc}gBfNrJd=I%GL2RjW0vl3TVBT{OZ5w_oo1M|vAG91(@3+5k zqteo%$x_+r+thAU0Vg1OFDI(GclRGO_6(;|DA~9Qx-)5CiAYH)EKH$EFDNK2E#ScR zBm=z_aLy3goI1R_h$3MTk(q7VtD>k8Q2C~ET^~GzcGo%&aORasq1(8d*^5U8Xrqyd(#2m%6?bI zgOP=OXqfL85!6?st%9i}hP(|ZEJ$Qx<{XcoG8MU4L$}=xgM0kxTL;r^nxGqQ*s zy$_rX1LuPL>$Bv)e|-jxffE}JFiXHj;@-IER-=t?@GE)El|d(Y-a(15jAbUN`}+8N z5m3cEsQ^A~;hpLC+p~kSdzSDra#J_rkF~bj+a2B<*wzrhj~D0$?yoI=4gaF^ua*Ge zbI-HPUM=mIyQYo+?nVH8-rDByjJ8#SZqoGZ$>ff{N^})BW#Nhre~d&31$zZk<2P(c4|2Hxp%W_6awU zt4BeuF>kkN=t(;LF1FdNrKww5;b#_suzkiG8rz}WDDGaa^8P%1lvtUe zvzy{UP@^e}upi6H&5#_g)Rg5VL;GKF{#n>E{3||$1OA6_Gf=}k(8)f~S<%to8Mr{C zBqSw8C8R|q<%}gI6eZ;pr4>XaWECYOShT6E{?7m}A18O0kpF*x3sd7VFu((RLO`&q zqJw>avuKdNJH*A^(^*kmT-?pa%URsX(cj+7*>U^&?r;BC+}}~u%RboI zTh!6hC&)?E$;UB3Jiy;k+{@nGTio9{z$eJx(K$fe-OJt;xHvkBJA{aOJBk618M0~D Q0GZ)dH?_b literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nd.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-nd.png new file mode 100644 index 0000000000000000000000000000000000000000..95cc47fb6c8f46040c511bb231f78061aa4f56d8 GIT binary patch literal 6203 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

K;4tot` zbWulZ+(m@0o}TXRo=-k$4Vx5udhjeRFIO+~`*)KvX~J8$8YE#{L?qV<3e*|qSBOY+ zL_A`HPt{j$*x0)qs{D~d8gBDKpJ|8hEcaz3L*t9GINE$S_peOOh*=mJ85Y`3#(Wp6=>qeL9&4+qmp?Xh73 zPaq0gV=AN9;`o|}fu5?m|BiEB z=?7^m!o2Nz#M-E);y^=L_+yuW*h$eFoem>Q^b7igYD*5zJ3b_m5|@7Ha@{*+jwXH6 zH1n@zCmhc0U~kX@87~qD=Ay^Ga5dFgK{NJ|kbY_-xdHvPJZm!L546F>f(-0}Trojd zO_u;HFhCR)pio%_C0VGd6;weJs;a4^E~}uTsi44#qI38^6TE$0-EW2e{}XPpS1$n* zJis>uhPY`uV*;_V!2#}&Tkc+1O`wx-+t(W_@9GkO@x}(oBYa(gy|F$)f${;EF!=x% zS#L}T)<@RG%Qx6n*45V~P(CogMcy0Z?js+74fG8TaKQ%3yL)5YfWgH@-Z@;>$5jq^ UO=PsQHSku5k%2j)67CfDKLKN|Z2$lO literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-sa.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by-sa.png new file mode 100644 index 0000000000000000000000000000000000000000..2917834c30f8267563e8e3702e7ed3f407f9f912 GIT binary patch literal 6519 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 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/cc/by.png new file mode 100644 index 0000000000000000000000000000000000000000..905983e8e8c0e926baa6631f0fee96017d81074a GIT binary patch literal 5088 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 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/favicon-openstack.ico b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/favicon-openstack.ico new file mode 100644 index 0000000000000000000000000000000000000000..f3b9bf9c440bad810cf0508569216543bb96bf11 GIT binary patch literal 1150 zcmb``T}V?=00;0Z^jxCtqdT|VeYwrKHC@=MrDj-^FGe2(JtRF@5Y$6vSPCXRq}ie* z5Gt@t5g&Tclxb3_HYMFl|oUQl>_suD^JebAf{;zoM zpU3Mr-!buFiTOOUjD-b}q{4{ij}^O-%->;@IvNcNGJW3fKk5XCUk95swY z;fBpViu^tC`IGo_&=?z;&0AmMa_!_Fd9$M$)LKayc?LIj?ro3Vqq9~)Z*F0>=LX5x zA)GutiHgc8xNpp$;odB4S&fX&+zeOFD2^PRh~*_@{aRBKL-YUQ%6W&v1OG2C6E2bc z*2)+xy)at)VX=E*b&!3U<;Nyx08ZBkL+8%U8^iv??_=xFE9i#7*2U;7T@XxUj~Y5b z_pMxLhg|)uHl*m<&^Iu}^3i{AZhjfm^z;%!6Y~fR&%x{ag6=0XxZgU7n(HCvRA~Uc L&mvil16JcFha9?* literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/favicon-rackspace.ico b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/favicon-rackspace.ico new file mode 100644 index 0000000000000000000000000000000000000000..28b2e318b8c66d80befb86b390d7e6a88ff398fa GIT binary patch literal 806 zcmV+>1KIqEP)dU^(Rb#?8+FyLWzulUc0PiK8NaKej~k%>XT zNQdRaro9Y|KsjLpZHE7g+ZePg%orpjBz{IjM5r<$YrbF98ufPdwg<15ZuI-};th** zOA*T-ejWz7wNn^a6r>qGg}X8|c6Tv+{rZ*R?%liWKs<*9rukl8W5KIM>-+wG{0y>; zLAoS`;or|+3_^a+4BR?u44h_q4EN+k8Rk_kgj;y++BGW%kQeTkwtJiuG5&jmLFqpT zpOUux|M%;+|M!dA{$KS-`2QrM_W!F}cmLbj*@65E$KvARf4~M@v_v*G>}6BGOYA(4vuPXZ$Asx$EB?{9by0@ z!+%K;h8uV8u%r9+FF(>HEUKby5aE5bTce>KO-~K?*r;$K3CtrO8Wi#w=^p&>kDpf k?!9eoZ8vabcYpu`0B$2c^jDx5>Hq)$07*qoM6N<$f-t9stN;K2 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/header-bg.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/header-bg.gif new file mode 100644 index 0000000000000000000000000000000000000000..f9efa280225828f2ccfc6c051ffcb6d668967dc6 GIT binary patch literal 619 zcmZ?wbhEHb6k$kVxXQrr_wV2D-@pI*_51thH{ZT}d;j6X&tJdZzI*rO%a`B3e}Dh+ z?_@ZZ0GpFe+j^Y-nB4GQky?|**%@Z-z7FI5Wv|Nm#8B~bjy0ybU;M1uU}!1n(@e}RXNnDU7wMLU;R z%)gK^#d&Si`s=-Ar{9+8KG;xUvu?)u7bR8)^LF3QpHSns{yO`QJ$3uP|M=g~*eKi5 z+ScAK)z#h8+v_%A0^{TRT6o;hpwoH;@B=L;=bykzOp=_^*StzNTs-8zPin>KIR z!n=LP&Rx4C_U_w%;6TUW!;;62pE!AP;+eDOoR}_Nx_srzvg_C9-nzwp_ul;n4_F^R zdHU=b_sdtW-@J)?|DNO1=PzHsvi$h@>-TT2fBzYn*+QHrBy4SF*Vl+Su_4h}O+fM5 zEQ^VaN4q7A(|C?eT)d!P!MRJtZPSEJlhx%{#GKre>g{fjXgAw)^RlyPe8tanPJHH> z*)iY#A?Mwur5P7%=6t{_Ev$x8UUy{IJ*D< literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/highlight-blue.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/highlight-blue.gif new file mode 100644 index 0000000000000000000000000000000000000000..4fdabde69252ba43e8b658c74a72775caaf304f4 GIT binary patch literal 471 zcmZ?wbhEHb)L_tNI3mh0b>*rn_bz?>^5NvQ+|z#z(?15yRD zlY#Yrf@+_NCr7*Rnu7}!QgzNx-55}@F4$S|f`i~ggBz0NjqwI*2{Q9{vnE;=IjrB+ zDCD7$u;0?zfI%<#i1GTJdsHRM1Uh5*=AKsEeQ?SYjaMqdjg0|KjY4kRs^-=Wtu3wX zZqXd>y-od16RmlavwB*EXSDg-v-nSI_Fpi|n$>jqfB1PxT?^`t?fQfg*PWROT z?4=7Bj-NPj$bb8e1?SIiu}ay0;o4&VD^suExnz0EZN;6_?hnqjm6bhlW2}3)ao5bl z&nzEpx@W<5 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/highlight-yellow.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/highlight-yellow.gif new file mode 100644 index 0000000000000000000000000000000000000000..3e847e7e01623b08e9a7e7d823fcb97104e76194 GIT binary patch literal 331 zcmV-R0kr-{Nk%w1VJrYF0HOc@`{bSf|Nr^cZTH48_|8oJ^wtd=`2yXqN@dAW)FA{*9 z0^lo>f-$0TSwVV~Os3NTjY>HMo^?sUEofV-pivzGA!zUjgNA5FQ#EN!ZcP>Pwa!Lg z*&TUsLwr0%X>V dfG2i6;P)aBqN^Dbjd|Rq0Yr!k5L_hy06YHIk5T{t literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/highlighter.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/highlighter.png new file mode 100644 index 0000000000000000000000000000000000000000..7d875fa9dcd97b72fa1af5da642985460f90e3aa GIT binary patch literal 598 zcmV-c0;&CpP)Xr) z)G!FiX)rMUy3L^B62~B{q?ZqK2_wi9Vl@Bzw4LG4j}Hug{z)+W`XkA3_uz7dPfxE+ z#A*O8%|E|>V)*j@3&XF!3Jm|488Ut@TGb2Bgo{<^`vFn8`;W=2NFKTJ$a3^wMR42mL`82)^{gQ@w+ zb%yshHi0!eHT>QUcR_M;^55^@zaMdNabehZ_#?xOhjI+Re{-Q|200t5*%PE0qz}al zKYsks{PX7zgR`?U!~PS$8Lm9kV)*`D0IvDn^$j4+K0wVoV0z$Qn9$pq!pOog8)Sg1 zt1AO1Cnv+EO`90Bq`xpoGTi`bUJui}71>fIXvll~`*MFa$oWc2N??s2K73&C@$q4} z_<)_^`L*33&Hm_`!7czMOAjVy*6sgwav6?ZO!TdHKSRKjK-FCQUj{OhyB{07z#7u^$jm k2jUu_ZSNR}1ONdB0IJ<--%Qgiw*UYD07*qoM6N<$g7%;i{r~^~ literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/loading.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a56815b224f865a176ee02259209bbe734a7c66 GIT binary patch literal 729 zcmZ?wbhEHb6krfw*v!vRRaN!<`}eM{u04D9OrAXX?AfzTO-;|9J-c`B-kLRQjvhVw z?%liDvuAJFvSsn&#sB~RSNzZI=Nc01>=@u`q-Vg)$iTp$_>+Z`gMptx2gn8*D!{ui!K?FQ=} zH?Xd{pt$&AAhW_8|9KxoF0L)FVBuPK^2Fx|Eyj5b!A2T$_)fYrI-Fn;YEaSX(VW82 zk<8BB^ zyg~ZU!^v%pW2>hJf)$GceOB@lW%IqbM+#%`yV*4 zSpoDBFs3Ycm>47vZsmyO|lq3pQPK+9JJ1v_kOAB<7PPOi?B$_+<{i4+h5@D_X*USQo*^ zaDpSuK*RrF;UPy+wgi?0O$Mhka~zylKP%{ViMg8^3Tnt4Ind5xl01vC$yt$sYs%r1 o3nDTyF1RxtpYS1rRbWl(0YARY!rMM@@~&Y>OFO^ag@M5u0Ak7h$N&HU literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/logo.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b111258c0ca80f948528d9fe96d1288b257c5a1d GIT binary patch literal 35061 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 Vy%`m%;W7XK002ovPDHLkV1m0+B@X}q literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/next-arrow.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/next-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..db595f465da4d03955dfcb11980a279b6ab6ccad GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^AT|dF8<0HkD{mW+k}PqJC<)F_D=AMbN@Z|N$xljE z@XSq2PYp^7*cU7>Bs;7_RJjWDk>HR4;U0G)l~k~EqL_RVNHXt zp|F%aL&tk&QFDfk40f#s0sKdvH+BhgXtFR)5Pp>CcW~(kW&w4*hz$n>JLDT!A~tAb uu{`2*V3nW1I#D!_;gQn}&KC>{2N>!FRd(cyzWN5Vl)=;0&t;ucLK6V+=s$P> literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/openstack-logo.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/openstack-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c08a93ca691b3bbad9db68e5fcf4036b58fcd4a2 GIT binary patch literal 3666 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 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/page_white_text.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/page_white_text.png new file mode 100644 index 0000000000000000000000000000000000000000..6a890d57d41b8f8b48f51d4dc8f9f125fe8a25be GIT binary patch literal 406 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 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/rackspace-logo.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/rackspace-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dbb473b2685a297b708d613d94451296f74baecb GIT binary patch literal 2846 zcmV+(3*q#MP)dbVG7wVRUJ4ZXi@?ZDjy7FEKeU zF)_nbVYC1M0338hSaefwW^{L9a%BKPWN%_+AVz6&Wp{6KYjYq&Q#En5<2C>Q3U^6F zK~#90?OZ{w+_({a90bVHy$F!yv`^rkT)>(Wq~`>dPcYvnu)NDIeS^`Qz&$6hd;+)k z0W6>3_Xn~KUKT8Vl}bg4vj5or{`~-5Ze@IxXRAI<*h0dW`N5n`;ak?;sa_;P!(7Mnu4 zTQDx^8vuQ3)8tjE-gNNbTu^U?*r&9g+@~Nm##?$o40x~Mc`JNvCFu;{q=Mud+lI>9 ztGwgVAqpvzc8gMbrR5SIl_Z@I$6->|=~Ji1Yq6m@4|AgB3hFx+YB@44%@a+>XkTg^ z8BGAKVQWQS&-CNWjL}aCe9!RL2%SZ3>alfPOCNTet_maGq`b8md&aTxR*WN~aM-?V z7|oj8Dsy7S4wd%j_^b?V&J^pZ#+u$L#;L91VNpw%j<11h(>Z({I33KLv{zypkY>PH zW_Q+{J^a~*O2h9}6LN}-CDfwPoCq_Z3I2F`xfya~NRq~soPw93^BnN@>#o~l0nR28|U}2wH`b+0;s*ER)*%iZ~C8sv4MS4Iix`n!P<<3;L zo2kQU?W4(`2)?A>UdelP8!%`KXg(Eg-He*mdcQs5k*H)})(%Zm;H6$U<^BjE%$X3@ zbL|nmS6xpVLU_K=_OFZ&&6V~BGZX#RL<{;%o!-MzFYu8o*LdEi@b{xhJ~L{}4S>Cq z|A*Tu%VKHTV75m4?Q)@LN;TaFp`U0v`l@_y+Of+~@AS{&kl}CZ4$#nN3p;KfGG*uN zrAEfY7?#F&#kHS^xa`WAQrrpL0j^aZyhWzL)URu7ceJn3n*LYEtpM-V}0 zw9y(}rwD52wEcG{%{m#jEg-+TBpxbEm*`Y?@1#Ewo>NF?BmFpFI{r_nY*NMRp3!q| zRq`f;Fd~|TYPKJC)+$O{R=?R!(y7ITbzg z!Sqw63_0}08>=PM4v%w4@xB~7PQxh&4zasVu1y-WIq#|$8qc%JA;r)>IC<~r3y;05 zP~<$rmg|r-K=& zL4AR#Bk&r)KQKP_1H=jF5XU45ulJChOt}+)gBRKfAsk8mBz&fR^m4z&Sg1!2y_DS| zj+J#JdZ?pH>0uR3xp(+J3H=d>8d!KpHstVdGQUhUlD}pn`NUyqxn{vT1iVM@NZd6T z_buIV|6V{RI1J1$Q$X39{F?R=qPBUQi`QImi>;H^e_1BXonaQX(g>e zwB1_!5Hkj>_lOQfj~GrlSbLbmC)!dp;1oi*Qu*BsZ6aSQWSZ<%S_(PUDsArF1iRzl(rN+7)I&~B5Ks6sJd)Ed zI9P$R@2-s4n!CRGM14<}5{`tenxuqErKJhIeKnF}M@|cE+MCq@b1Re;$J<(0a=$fn z6aEa36<;L2#aCXcM;bd&D5bi$U#+(A_<@^4o1o^XAj{Go!-T(A-!R!R8tyy99iODdyxktHu{8i zy);gvuQpxqc@QCZ1>D+T3F(cuk#-3ow2WS2IwEvN{Hjvx&|PEDMrXv2hkKeX*;$ii wZiYWN=?4s&v@`sqhoZ*tWvmWkdoYXt1Nv+!Ytf9kx&QzG07*qoM6N<$g4lC%7ytkO literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/search-icon.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/search-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..dfd5bb9f9e85540166383c79ed2b586933e7ae7b GIT binary patch literal 278 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngj!3HE3xL=O}Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>JigtLqIEGZ*O8WEvzdiHL2G(NLxWAHc0U{T&Y#~*3Na6`RKRDn`d%%-sL|c+&ImWsgQX>E=LjLg$9-+6KjT# zEE4P)2iPYhI^_8GJmU}8uf$xt!ou{BhJe4U3Qsw@ICB=BbI}l0lx%od)4;&Y Z5NvL9miyVke?UJlc)I$ztaD0e0s!+=V1fVu literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/showHideTreeIcons.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/showHideTreeIcons.png new file mode 100644 index 0000000000000000000000000000000000000000..c1ec1f96a4c519610064feea6de06358e9f6e38a GIT binary patch literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2igY> z6BZ`#&b%i800LG?L_t(Y$L-b2ZW2)($MNr6N{|8D3Y1Hs4@EXeks5%$)hVFkKicx7iruNhXt=oZtVGoO9+s+TNG1A|i+gzW?(r z;&VCo>%25YWQu^ooPi>ZYKsMQ;c$770xZ9<{Y za&RV{W_@jq+J2p0|9r0P^L-zuT0<$HaIF053r`_&Cm&Q{H+i}n| zol>cYVHoql>ual|Qz?#HE!v&VQa5(ux>Ov8(8>zsVgXIlX2aP`n!#Ym;n8uR&t)_k zQLER9MlBNY8?)il(=L`3A(==7fXLs^cFj7>-y*CeEhVB^3=@cQL(EGFNSj+i#gA^xvn=?v5V2@-~JyT1jz=0 z-v`KkSQhRWhVf$AEbx3$xCy)l?!;ozMYp;QyaDb$+P#1H11-^gON17#t^fc407*qo IM6N<$g5CR900000 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/sidebar.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/sidebar.png new file mode 100644 index 0000000000000000000000000000000000000000..5492671871c1fdb7c149bf233e34ebddd074c777 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0vp@K+MU(1SHcW3~hmwWQl7;NpOBzNqJ&XDuZK6ep0G} zXKrG8YEWuoN@d~6R2!h8U{4pvkcwMLbBxo^O;mQ5C}5VBp8e!WN?S`y%iQnt-qwGU z>u7lMf5n5>*VhX;sx9C%(%2aC{q^zkm`nHf)ixVQbn@6YFfcQ; Xxf$LLJ^5Y}Xgq_btDnm{r-UW|fBilp literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/toc-icon.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/images/toc-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb88d26b247234e8afc59327e335cc4b4687794 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^{6Ngj!3HE3xL=O}Qj#UE5hcO-X(i=}MX3yqDfvmM z3ZA)%>8U}fi7AzZCsS>Jio88t978H@CH?vT-=2AALuVtC!^AW(31vgWLi-6t5gQU1 zlbxKH{Pv%jZ$Dq~SX#@^nG+{Y)VMw2Fh`#81+zstY&VTNa^#{u@(3g_n8m93GL~+8 Q3N)6%)78&qol`;+09K7RssI20 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/jquery-1.4.2.min.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/jquery-1.4.2.min.js new file mode 100644 index 0000000..7c24308 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/jquery-1.4.2.min.js @@ -0,0 +1,154 @@ +/*! + * jQuery JavaScript Library v1.4.2 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Sat Feb 13 22:33:48 2010 -0500 + */ +(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/, +Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&& +(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this, +a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b=== +"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this, +function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a"; +var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected, +parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent= +false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n= +s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true, +applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando]; +else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this, +a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b=== +w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i, +cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected= +c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed"); +a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g, +function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split("."); +k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a), +C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type= +e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&& +f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive; +if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data", +e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a, +"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a, +d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, +e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift(); +t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D|| +g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()}, +CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m, +g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)}, +text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}}, +setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h= +h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m=== +"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g, +h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&& +q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=""; +if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}(); +(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}: +function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j= +{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a=== +"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode", +d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")? +a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType=== +1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja, +""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]); +return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["", +""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e= +c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]? +c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja= +function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter= +Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a, +"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f= +a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b= +a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=//gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!== +"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("
").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this}, +serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), +function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href, +global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&& +e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)? +"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache=== +false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B= +false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since", +c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E|| +d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x); +g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status=== +1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b=== +"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional; +if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration=== +"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]|| +c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start; +this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now= +this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem, +e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b
"; +a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b); +c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a, +d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top- +f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset": +"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in +e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window); diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/jquery-ui-1.8.2.custom.min.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/jquery-ui-1.8.2.custom.min.js new file mode 100644 index 0000000..fec53e8 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/jquery-ui-1.8.2.custom.min.js @@ -0,0 +1,321 @@ +/*! + * jQuery UI 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI + */ +(function(c){c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.2",plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=0)&&c(a).is(":focusable")}})}})(jQuery); +;/*! + * jQuery UI Widget 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Widget + */ +(function(b){var j=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add(this).each(function(){b(this).triggerHandler("remove")});return j.call(b(this),a,c)})};b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend({},c.options);b[e][a].prototype= +b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)==="_")return h;e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==undefined){h=i;return false}}):this.each(function(){var g= +b.data(this,a);if(g){d&&g.option(d);g._init()}else b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){this.element=b(c).data(this.widgetName,this);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create(); +this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===undefined)return this.options[a];d={};d[a]=c}b.each(d,function(f, +h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a= +b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); +;/*! + * jQuery UI Mouse 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(c){c.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(b){return a._mouseDown(b)}).bind("click."+this.widgetName,function(b){if(a._preventClickEvent){a._preventClickEvent=false;b.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(a){a.originalEvent=a.originalEvent||{};if(!a.originalEvent.mouseHandled){this._mouseStarted&& +this._mouseUp(a);this._mouseDownEvent=a;var b=this,e=a.which==1,f=typeof this.options.cancel=="string"?c(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!e||f||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){b.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault(); +return true}}this._mouseMoveDelegate=function(d){return b._mouseMove(d)};this._mouseUpDelegate=function(d){return b._mouseUp(d)};c(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);c.browser.safari||a.preventDefault();return a.originalEvent.mouseHandled=true}},_mouseMove:function(a){if(c.browser.msie&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&& +this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;this._preventClickEvent=a.target==this._mouseDownEvent.target;this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX- +a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var m=/left|center|right/,n=/top|center|bottom/,p=c.fn.position,q=c.fn.offset;c.fn.position=function(a){if(!a||!a.of)return p.apply(this,arguments);a=c.extend({},a);var b=c(a.of),d=(a.collision||"flip").split(" "),e=a.offset?a.offset.split(" "):[0,0],g,h,i;if(a.of.nodeType===9){g=b.width();h=b.height();i={top:0,left:0}}else if(a.of.scrollTo&&a.of.document){g=b.width();h=b.height();i={top:b.scrollTop(),left:b.scrollLeft()}}else if(a.of.preventDefault){a.at="left top";g=h= +0;i={top:a.of.pageY,left:a.of.pageX}}else{g=b.outerWidth();h=b.outerHeight();i=b.offset()}c.each(["my","at"],function(){var f=(a[this]||"").split(" ");if(f.length===1)f=m.test(f[0])?f.concat(["center"]):n.test(f[0])?["center"].concat(f):["center","center"];f[0]=m.test(f[0])?f[0]:"center";f[1]=n.test(f[1])?f[1]:"center";a[this]=f});if(d.length===1)d[1]=d[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(a.at[0]==="right")i.left+=g;else if(a.at[0]==="center")i.left+= +g/2;if(a.at[1]==="bottom")i.top+=h;else if(a.at[1]==="center")i.top+=h/2;i.left+=e[0];i.top+=e[1];return this.each(function(){var f=c(this),k=f.outerWidth(),l=f.outerHeight(),j=c.extend({},i);if(a.my[0]==="right")j.left-=k;else if(a.my[0]==="center")j.left-=k/2;if(a.my[1]==="bottom")j.top-=l;else if(a.my[1]==="center")j.top-=l/2;j.left=parseInt(j.left);j.top=parseInt(j.top);c.each(["left","top"],function(o,r){c.ui.position[d[o]]&&c.ui.position[d[o]][r](j,{targetWidth:g,targetHeight:h,elemWidth:k, +elemHeight:l,offset:e,my:a.my,at:a.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(j,{using:a.using}))})};c.ui.position={fit:{left:function(a,b){var d=c(window);b=a.left+b.elemWidth-d.width()-d.scrollLeft();a.left=b>0?a.left-b:Math.max(0,a.left)},top:function(a,b){var d=c(window);b=a.top+b.elemHeight-d.height()-d.scrollTop();a.top=b>0?a.top-b:Math.max(0,a.top)}},flip:{left:function(a,b){if(b.at[0]!=="center"){var d=c(window);d=a.left+b.elemWidth-d.width()-d.scrollLeft();var e=b.my[0]==="left"? +-b.elemWidth:b.my[0]==="right"?b.elemWidth:0,g=-2*b.offset[0];a.left+=a.left<0?e+b.targetWidth+g:d>0?e-b.targetWidth+g:0}},top:function(a,b){if(b.at[1]!=="center"){var d=c(window);d=a.top+b.elemHeight-d.height()-d.scrollTop();var e=b.my[1]==="top"?-b.elemHeight:b.my[1]==="bottom"?b.elemHeight:0,g=b.at[1]==="top"?b.targetHeight:-b.targetHeight,h=-2*b.offset[1];a.top+=a.top<0?e+b.targetHeight+h:d>0?e+g+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(a,b){if(/static/.test(c.curCSS(a,"position")))a.style.position= +"relative";var d=c(a),e=d.offset(),g=parseInt(c.curCSS(a,"top",true),10)||0,h=parseInt(c.curCSS(a,"left",true),10)||0;e={top:b.top-e.top+g,left:b.left-e.left+h};"using"in b?b.using.call(a,e):d.css(e)};c.fn.offset=function(a){var b=this[0];if(!b||!b.ownerDocument)return null;if(a)return this.each(function(){c.offset.setOffset(this,a)});return q.call(this)}}})(jQuery); +;/* + * jQuery UI Resizable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.resizable",d.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1E3},_create:function(){var b=this,a=this.options;this.element.addClass("ui-resizable");d.extend(this,{_aspectRatio:!!a.aspectRatio,aspectRatio:a.aspectRatio,originalElement:this.element, +_proportionallyResizeElements:[],_helper:a.helper||a.ghost||a.animate?a.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){/relative/.test(this.element.css("position"))&&d.browser.opera&&this.element.css({position:"relative",top:"auto",left:"auto"});this.element.wrap(d('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!d(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var e=0;e');/sw|se|ne|nw/.test(g)&&f.css({zIndex:++a.zIndex});"se"==g&&f.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[g]=".ui-resizable-"+g;this.element.append(f)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=d(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=d(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}d(this.handles[i])}};this._renderAxis(this.element);this._handles=d(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();d(this.element).addClass("ui-resizable-autohide").hover(function(){d(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){d(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){d(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(d(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +e=this.element;this.resizing=true;this.documentScroll={top:d(document).scrollTop(),left:d(document).scrollLeft()};if(e.is(".ui-draggable")||/absolute/.test(e.css("position")))e.css({position:"absolute",top:c.top,left:c.left});d.browser.opera&&/relative/.test(e.css("position"))&&e.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var g=m(this.helper.css("top"));if(a.containment){c+=d(a.containment).scrollLeft()||0;g+=d(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:g};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:c,top:g};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=d(".ui-resizable-"+this.axis).css("cursor");d("body").css("cursor",a=="auto"?this.axis+"-resize":a);e.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,e=this._change[this.axis];if(!e)return false;c=e.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var e=this._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName);e=g&&d.ui.hasScroll(e[0],"left")?0:c.sizeDiff.height; +g={width:c.size.width-(g?0:c.sizeDiff.width),height:c.size.height-e};e=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var f=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(d.extend(g,{top:f,left:e}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}d("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop", +b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(k(b.left))this.position.left=b.left;if(k(b.top))this.position.top=b.top;if(k(b.height))this.size.height=b.height;if(k(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,e=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(e=="sw"){b.left=a.left+(c.width-b.width);b.top=null}if(e=="nw"){b.top= +a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,e=k(b.width)&&a.maxWidth&&a.maxWidthb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(f)b.width=a.minWidth;if(h)b.height=a.minHeight;if(e)b.width=a.maxWidth;if(g)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height, +l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(f&&l)b.left=i-a.minWidth;if(e&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(g&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=d.browser.msie&&d.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+ +a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return d.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return d.extend(this._change.n.apply(this, +arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return d.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){d.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});d.extend(d.ui.resizable, +{version:"1.8.2"});d.ui.plugin.add("resizable","alsoResize",{start:function(){var b=d(this).data("resizable").options,a=function(c){d(c).each(function(){d(this).data("resizable-alsoresize",{width:parseInt(d(this).width(),10),height:parseInt(d(this).height(),10),left:parseInt(d(this).css("left"),10),top:parseInt(d(this).css("top"),10)})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else d.each(b.alsoResize,function(c){a(c)}); +else a(b.alsoResize)},resize:function(){var b=d(this).data("resizable"),a=b.options,c=b.originalSize,e=b.originalPosition,g={height:b.size.height-c.height||0,width:b.size.width-c.width||0,top:b.position.top-e.top||0,left:b.position.left-e.left||0},f=function(h,i){d(h).each(function(){var j=d(this),l=d(this).data("resizable-alsoresize"),p={};d.each((i&&i.length?i:["width","height","top","left"])||["width","height","top","left"],function(n,o){if((n=(l[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(/relative/.test(j.css("position"))&& +d.browser.opera){b._revertToRelativePosition=true;j.css({position:"absolute",top:"auto",left:"auto"})}j.css(p)})};typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?d.each(a.alsoResize,function(h,i){f(h,i)}):f(a.alsoResize)},stop:function(){var b=d(this).data("resizable");if(b._revertToRelativePosition&&d.browser.opera){b._revertToRelativePosition=false;el.css({position:"relative"})}d(this).removeData("resizable-alsoresize-start")}});d.ui.plugin.add("resizable","animate",{stop:function(b){var a= +d(this).data("resizable"),c=a.options,e=a._proportionallyResizeElements,g=e.length&&/textarea/i.test(e[0].nodeName),f=g&&d.ui.hasScroll(e[0],"left")?0:a.sizeDiff.height;g={width:a.size.width-(g?0:a.sizeDiff.width),height:a.size.height-f};f=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(d.extend(g,h&&f?{top:h,left:f}:{}),{duration:c.animateDuration,easing:c.animateEasing, +step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};e&&e.length&&d(e[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});d.ui.plugin.add("resizable","containment",{start:function(){var b=d(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof d?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= +d(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:d(document),left:0,top:0,width:d(document).width(),height:d(document).height()||document.body.parentNode.scrollHeight}}else{var e=d(a),g=[];d(["Top","Right","Left","Bottom"]).each(function(i,j){g[i]=m(e.css("padding"+j))});b.containerOffset=e.offset();b.containerPosition=e.position();b.containerSize={height:e.innerHeight()-g[3],width:e.innerWidth()-g[1]};c=b.containerOffset; +var f=b.containerSize.height,h=b.containerSize.width;h=d.ui.hasScroll(a,"left")?a.scrollWidth:h;f=d.ui.hasScroll(a)?a.scrollHeight:f;b.parentData={element:a,left:c.left,top:c.top,width:h,height:f}}}},resize:function(b){var a=d(this).data("resizable"),c=a.options,e=a.containerOffset,g=a.position;b=a._aspectRatio||b.shiftKey;var f={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))f=e;if(g.left<(a._helper?e.left:0)){a.size.width+=a._helper?a.position.left-e.left: +a.position.left-f.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?e.left:0}if(g.top<(a._helper?e.top:0)){a.size.height+=a._helper?a.position.top-e.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?e.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-f.left:a.offset.left-f.left)+a.sizeDiff.width);e=Math.abs((a._helper?a.offset.top-f.top:a.offset.top- +e.top)+a.sizeDiff.height);g=a.containerElement.get(0)==a.element.parent().get(0);f=/relative|absolute/.test(a.containerElement.css("position"));if(g&&f)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(e+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-e;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=d(this).data("resizable"),a=b.options,c=b.containerOffset,e=b.containerPosition, +g=b.containerElement,f=d(b.helper),h=f.offset(),i=f.outerWidth()-b.sizeDiff.width;f=f.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f});b._helper&&!a.animate&&/static/.test(g.css("position"))&&d(this).css({left:h.left-e.left-c.left,width:i,height:f})}});d.ui.plugin.add("resizable","ghost",{start:function(){var b=d(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, +display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=d(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=d(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});d.ui.plugin.add("resizable","grid",{resize:function(){var b= +d(this).data("resizable"),a=b.options,c=b.size,e=b.originalSize,g=b.originalPosition,f=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-e.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-e.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a}else if(/^(ne)$/.test(f)){b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}else{if(/^(sw)$/.test(f)){b.size.width=e.width+h;b.size.height= +e.height+a}else{b.size.width=e.width+h;b.size.height=e.height+a;b.position.top=g.top-a}b.position.left=g.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +; +/* + * jQuery UI Selectable 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({"z-index":100,position:"absolute",left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting"); +b.unselecting=true;f._trigger("unselecting",c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f= +this;this.dragged=true;if(!this.options.disabled){var d=this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom").addClass("ui-autocomplete").appendTo("body",c).mousedown(function(){setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(d,b){b=b.item.data("item.autocomplete"); +false!==a._trigger("focus",null,{item:b})&&/^key/.test(d.originalEvent.type)&&a.element.val(b.value)},selected:function(d,b){b=b.item.data("item.autocomplete");false!==a._trigger("select",d,{item:b})&&a.element.val(b.value);a.close(d);d=a.previous;if(a.element[0]!==c.activeElement){a.element.focus();a.previous=d}a.selectedItem=b},blur:function(){a.menu.element.is(":visible")&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");e.fn.bgiframe&&this.menu.element.bgiframe()}, +destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();e.Widget.prototype.destroy.call(this)},_setOption:function(a){e.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource()},_initSource:function(){var a,c;if(e.isArray(this.options.source)){a=this.options.source;this.source=function(d,b){b(e.ui.autocomplete.filter(a,d.term))}}else if(typeof this.options.source=== +"string"){c=this.options.source;this.source=function(d,b){e.getJSON(c,d,b)}}else this.source=this.options.source},search:function(a,c){a=a!=null?a:this.element.val();if(a.length").data("item.autocomplete", +c).append(""+c.label+"").appendTo(a)},_move:function(a,c){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](c);else this.search(null,c)},widget:function(){return this.menu.element}});e.extend(e.ui.autocomplete,{escapeRegex:function(a){return a.replace(/([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi,"\\$1")},filter:function(a,c){var d=new RegExp(e.ui.autocomplete.escapeRegex(c), +"i");return e.grep(a,function(b){return d.test(b.label||b.value||b)})}})})(jQuery); +(function(e){e.widget("ui.menu",{_create:function(){var a=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(c){if(e(c.target).closest(".ui-menu-item a").length){c.preventDefault();a.select(c)}});this.refresh()},refresh:function(){var a=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(c){a.activate(c,e(this).parent())}).mouseleave(function(){a.deactivate()})},activate:function(a,c){this.deactivate();if(this.hasScroll()){var d=c.offset().top-this.element.offset().top,b=this.element.attr("scrollTop"),f=this.element.height();if(d<0)this.element.attr("scrollTop",b+d);else d>f&&this.element.attr("scrollTop",b+d-f+c.height())}this.active=c.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",a,{item:c})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(a){this.move("next",".ui-menu-item:first",a)},previous:function(a){this.move("prev",".ui-menu-item:last",a)},first:function(){return this.active&&!this.active.prev().length},last:function(){return this.active&&!this.active.next().length},move:function(a,c,d){if(this.active){a=this.active[a+"All"](".ui-menu-item").eq(0);a.length?this.activate(d,a):this.activate(d,this.element.children(c))}else this.activate(d,this.element.children(c))},nextPage:function(a){if(this.hasScroll())if(!this.active|| +this.last())this.activate(a,this.element.children(":first"));else{var c=this.active.offset().top,d=this.element.height(),b=this.element.children("li").filter(function(){var f=e(this).offset().top-c-d+e(this).height();return f<10&&f>-10});b.length||(b=this.element.children(":last"));this.activate(a,b)}else this.activate(a,this.element.children(!this.active||this.last()?":first":":last"))},previousPage:function(a){if(this.hasScroll())if(!this.active||this.first())this.activate(a,this.element.children(":last")); +else{var c=this.active.offset().top,d=this.element.height();result=this.element.children("li").filter(function(){var b=e(this).offset().top-c+d-e(this).height();return b<10&&b>-10});result.length||(result=this.element.children(":first"));this.activate(a,result)}else this.activate(a,this.element.children(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,e=d.primary&&d.secondary;if(d.primary||d.secondary){b.addClass("ui-button-text-icon"+(e?"s":""));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){b.addClass(e?"ui-button-icons-only":"ui-button-icon-only").removeClass("ui-button-text-icons ui-button-text-icon"); +this.hasTitle||b.attr("title",c)}}else b.addClass("ui-button-text-only")}}});a.widget("ui.buttonset",{_create:function(){this.element.addClass("ui-buttonset");this._init()},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(":button, :submit, :reset, :checkbox, :radio, a, :data(button)").filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()}, +destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.2 + * + * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT (MIT-LICENSE.txt) + * and GPL (GPL-LICENSE.txt) licenses. + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c){c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:"center",resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");var a=this,b=a.options,d=b.title||a.originalTitle||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0])d=Math.max(d,c(this).css("z-index"))});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index", +c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;d.next().length&&d.appendTo("body");a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c([]).add(d.find(".ui-dialog-content :tabbable:first")).add(d.find(".ui-dialog-buttonpane :tabbable:first")).add(d).filter(":first").focus();a._trigger("open");a._isOpen=true;return a}},_createButtons:function(a){var b=this,d=false,e=c("
").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix");b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a, +function(g,f){g=c('').text(g).click(function(){f.apply(b.element[0],arguments)}).appendTo(e);c.fn.button&&g.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging"); +b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,position:f.position,size:f.size}}a=a===undefined?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position"); +a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop", +f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0];a=a||c.ui.dialog.prototype.options.position;if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(e,g){if(+b[e]===b[e]){d[e]=b[e];b[e]= +g}})}else if(typeof a==="object"){if("left"in a){b[0]="left";d[0]=a.left}else if("right"in a){b[0]="right";d[0]=-a.right}if("top"in a){b[1]="top";d[1]=a.top}else if("bottom"in a){b[1]="bottom";d[1]=-a.bottom}}(a=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position({my:b.join(" "),at:b.join(" "),offset:d.join(" "),of:window,collision:"fit",using:function(e){var g=c(this).css(e).offset().top;g<0&&c(this).css("top",e.top-g)}});a||this.uiDialog.hide()},_setOption:function(a, +b){var d=this,e=d.uiDialog,g=e.is(":data(resizable)"),f=false;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");break;case "draggable":b?d._makeDraggable():e.draggable("destroy");break; +case "height":f=true;break;case "maxHeight":g&&e.resizable("option","maxHeight",b);f=true;break;case "maxWidth":g&&e.resizable("option","maxWidth",b);f=true;break;case "minHeight":g&&e.resizable("option","minHeight",b);f=true;break;case "minWidth":g&&e.resizable("option","minWidth",b);f=true;break;case "position":d._position(b);break;case "resizable":g&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title", +d.uiDialogTitlebar).html(""+(b||" "));break;case "width":f=true;break}c.Widget.prototype._setOption.apply(d,arguments);f&&d._size()},_size:function(){var a=this.options,b;this.element.css({width:"auto",minHeight:0,height:0});b=this.uiDialog.css({height:"auto",width:a.width}).height();this.element.css(a.height==="auto"?{minHeight:Math.max(a.minHeight-b,0),height:"auto"}:{minHeight:0,height:Math.max(a.height-b,0)}).show();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight", +this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.2",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&& +c(document).bind(c.ui.dialog.overlay.events,function(d){return c(d.target).zIndex()>=c.ui.dialog.overlay.maxZ})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("
").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&& +b.bgiframe();this.instances.push(b);return b},destroy:function(a){this.oldInstances.push(this.instances.splice(c.inArray(a,this.instances),1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var b=0;c.each(this.instances,function(){b=Math.max(b,this.css("z-index"))});this.maxZ=b},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight, +document.body.offsetHeight);return a",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:'
  • #{label}
  • '},_create:function(){this._tabify(true)},_setOption:function(c,e){if(c=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[c]=e;this._tabify()}},_tabId:function(c){return c.title&&c.title.replace(/\s/g,"_").replace(/[^A-Za-z0-9\-_:\.]/g,"")||this.options.idPrefix+s()},_sanitizeSelector:function(c){return c.replace(/:/g,"\\:")},_cookie:function(){var c=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+v());return d.cookie.apply(null,[c].concat(d.makeArray(arguments)))},_ui:function(c,e){return{tab:c,panel:e,index:this.anchors.index(c)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var c= +d(this);c.html(c.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function e(g,f){g.css({display:""});!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}this.list=this.element.find("ol,ul").eq(0);this.lis=d("li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);var a=this,b=this.options,h=/^#.+/;this.anchors.each(function(g,f){var j=d(f).attr("href"),l=j.split("#")[0],p;if(l&&(l===location.toString().split("#")[0]|| +(p=d("base")[0])&&l===p.href)){j=f.hash;f.href=j}if(h.test(j))a.panels=a.panels.add(a._sanitizeSelector(j));else if(j!="#"){d.data(f,"href.tabs",j);d.data(f,"load.tabs",j.replace(/#.*$/,""));j=a._tabId(f);f.href="#"+j;f=d("#"+j);if(!f.length){f=d(b.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else b.disabled.push(g)});if(c){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(b.selected===undefined){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){b.selected=g;return false}});if(typeof b.selected!="number"&&b.cookie)b.selected=parseInt(a._cookie(),10);if(typeof b.selected!="number"&&this.lis.filter(".ui-tabs-selected").length)b.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));b.selected=b.selected||(this.lis.length?0:-1)}else if(b.selected===null)b.selected=-1;b.selected=b.selected>=0&&this.anchors[b.selected]||b.selected<0?b.selected:0;b.disabled=d.unique(b.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(b.selected,b.disabled)!=-1&&b.disabled.splice(d.inArray(b.selected,b.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(b.selected>=0&&this.anchors.length){this.panels.eq(b.selected).removeClass("ui-tabs-hide");this.lis.eq(b.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[b.selected],a.panels[b.selected]))});this.load(b.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else b.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"));this.element[b.collapsible?"addClass": +"removeClass"]("ui-tabs-collapsible");b.cookie&&this._cookie(b.selected,b.cookie);c=0;for(var i;i=this.lis[c];c++)d(i)[d.inArray(c,b.disabled)!=-1&&!d(i).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");b.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(b.event!="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+g)};this.lis.bind("mouseover.tabs", +function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(b.fx)if(d.isArray(b.fx)){m=b.fx[0];o=b.fx[1]}else m=o=b.fx;var q=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal",function(){e(f,o);a._trigger("show", +null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},r=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")};this.anchors.bind(b.event+".tabs", +function(){var g=this,f=d(this).closest("li"),j=a.panels.filter(":not(.ui-tabs-hide)"),l=d(a._sanitizeSelector(this.hash));if(f.hasClass("ui-tabs-selected")&&!b.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}b.selected=a.anchors.index(this);a.abort();if(b.collapsible)if(f.hasClass("ui-tabs-selected")){b.selected=-1;b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){r(g, +j)}).dequeue("tabs");this.blur();return false}else if(!j.length){b.cookie&&a._cookie(b.selected,b.cookie);a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this));this.blur();return false}b.cookie&&a._cookie(b.selected,b.cookie);if(l.length){j.length&&a.element.queue("tabs",function(){r(g,j)});a.element.queue("tabs",function(){q(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier.";d.browser.msie&&this.blur()});this.anchors.bind("click.tabs", +function(){return false})},destroy:function(){var c=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e=d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(b,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this, +"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});c.cookie&&this._cookie(null,c.cookie);return this},add:function(c,e,a){if(a===undefined)a=this.anchors.length;var b=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,e));c=!c.indexOf("#")?c.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs", +true);var i=d("#"+c);i.length||(i=d(h.panelTemplate).attr("id",c).data("destroy.tabs",true));i.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);i.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]);i.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");i.removeClass("ui-tabs-hide"); +this.element.queue("tabs",function(){b._trigger("show",null,b._ui(b.anchors[0],b.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(c){var e=this.options,a=this.lis.eq(c).remove(),b=this.panels.eq(c).remove();if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(c+(c+1=c?--h:h});this._tabify();this._trigger("remove", +null,this._ui(a.find("a")[0],b[0]));return this},enable:function(c){var e=this.options;if(d.inArray(c,e.disabled)!=-1){this.lis.eq(c).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=c});this._trigger("enable",null,this._ui(this.anchors[c],this.panels[c]));return this}},disable:function(c){var e=this.options;if(c!=e.selected){this.lis.eq(c).addClass("ui-state-disabled");e.disabled.push(c);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[c],this.panels[c]))}return this}, +select:function(c){if(typeof c=="string")c=this.anchors.index(this.anchors.filter("[href$="+c+"]"));else if(c===null)c=-1;if(c==-1&&this.options.collapsible)c=this.options.selected;this.anchors.eq(c).trigger(this.options.event+".tabs");return this},load:function(c){var e=this,a=this.options,b=this.anchors.eq(c)[0],h=d.data(b,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(b,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(c).addClass("ui-state-processing"); +if(a.spinner){var i=d("span",b);i.data("label.tabs",i.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){d(e._sanitizeSelector(b.hash)).html(k);e._cleanup();a.cache&&d.data(b,"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[c],e.panels[c]));try{a.ajaxOptions.error(k,n,c,b)}catch(m){}}}));e.element.dequeue("tabs");return this}}, +abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this},url:function(c,e){this.anchors.eq(c).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.2"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(c,e){var a=this,b=this.options,h=a._rotate||(a._rotate= +function(i){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=b.selected;a.select(++k").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); +c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=j.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| +typeof c=="number"||f.fx.speeds[c])return this._show.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c])return this._hide.apply(this,arguments);else{var a=j.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||typeof c=="boolean"||f.isFunction(c))return this.__toggle.apply(this, +arguments);else{var a=j.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+ +b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2, +10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)* +a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(hO2OoUN%=0JX(r5?`adVN+ z3ZcjShtEC=<`y6XE+_eO^erZ3d-M{pDqy}DECVq25;pACB^>YBH z$E0&qu+(2*TfxCKvtSsM)-l0QW?!9?)ZPU0EBL%BX_c%g(X8RF&34*!)oZ4XRcVHz zBNsNkrnU@NXw#{3oo2bD=9*fZ3NF1;l!A5M0mnq2n1l7^fMeP`!W$bFVB+L)tQHnK zEXE<2tAp8M4>6z?rzl&Q9_MfHxh>ih= z$g;9=WKY7Gcj;;IBvRi{;JU9XEczB&?I**-v}RRRV9JKSlBGqT?n|hQV01IK)59a| t>_S@PWkKlK01oMw@pjEVpN literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder-closed.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder-closed.gif new file mode 100644 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder-closed2.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder-closed2.gif new file mode 100644 index 0000000000000000000000000000000000000000..541107888e6739a7b367ad3d208e1efa933f877d GIT binary patch literal 105 zcmZ?wbhEHb6ky4lrdiO0bk3ZcRLy6E?4f Hg~1vCyv-@{ literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder.gif new file mode 100644 index 0000000000000000000000000000000000000000..be6b59c2bafc37724de6a8904caf8ddb52185f07 GIT binary patch literal 631 zcmV--0*L)bNk%w1VGsZi0OoZ7Zc+gM@owbb(D(J~{kRkV=)C^@`FC9q$-khblVJYv z)5ozv$hAcOfX1|Jz_gHwZxsLR$M*H` z)5VgcjVaB&g#X~Bn}|^6)K>kvApXNk{?U8w>frwL-;#Ym&AMUr=V$)PW&YTa>#Gp{ z$5^hOaMH=J$FMm5$62+73I57t#-KOer4h}bD~WS3yQMU?q;vkxak`{N&AEBc#G?Jc zKK|H{jB+E}qY%KYW|e?Jt%4WhuRrYIzx}uttbPdi>1gcRT)?bi*~ygsy)VYKbl=sl z!LDb`w?4L^YVzd5|KO(4ze~WaWw4)Z<=wvhxEIZ>RsZvV+R0MBjTPX{P^5)3t(IEZ zo(`LK71O>%%$yd@ws6O^WdH2Q^sy2D_NBk8J;AJDcUuPR<<6~{Vg0!m{?dHMvTC`j zfZ5BO|NGMa|Nj6000000000000000000000000000000000000A^8LW004CWEC2ui z01yBW06+)SfOUcbFM}==AarS4f^`T0To+{@4nGeh6)G`B2p9kiNn<+@0|r=5Yepst zIgKY#WJd%9EJPL?t^m4h5ez8-Aqy8z25mic2N?k#R&i4b8U+nh4l7`S2^}ajGc6+$ z6C!V6UyXu5K{9S7=8Z222f8;D0KLCn3s7|l^;H1@N?@2FHGqSVIadS#=nw*efr3kz ztU4o2N*xdYmhp(zfYOQwaCBG@bU+OXEtfKR^UfI%4+*Z?OY3oS7i+9AMEg8&*N RE^xJLBxeY_p@ISd06U6)DM0`L literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder2.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/folder2.gif new file mode 100644 index 0000000000000000000000000000000000000000..2b31631ca2bfec3a8afb1bfdd4f8ed4c5bcc3a18 GIT binary patch literal 106 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 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-gray-line.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-gray-line.gif new file mode 100644 index 0000000000000000000000000000000000000000..37600447dc002bbc0dd16e1391b711360aae2e34 GIT binary patch literal 1877 zcmeH``8OK|0LL@bF~qSc#n50?JXNI+k>{#)#go3O{g`&sTA06+?`JRv{%1VB*=kSggPTmbZ?E2@Hm10RaqGJr~M_swEK9(fuU z9bXMur@nY#Xn3Qp;v6X2AT> zA>EM+>y@m1^a49s_E1X&+bZH^!_a=e{N6Su)s&U>sDnd!~=b?JFEB#FT8 zioZMFaK52~t&52oqdWW~2MJ1ue%%?en#qCfU7u!nC|sSJi5E`}X3h8)ly{+5*|mp+ zYqNE`8MkZN-)k};oze-j%*tB&sNuZif|=0wM%!=l0sXF(V)Zg+3_ zjbW;EBEX2ytHG=$Dx2Ha{HE%5V3a1hHnd2R32m%R*9#gFWf^4tEW&~!6yIiV)*e*l zireg~b4-8KL1b9Tn<4TQc-aUN7>=bBxE!0Aep)ES$dA>bZ zlac_>GSf$}Amq|xpG2f_X<$)PU0E=BExZ&}FuYP8&bwD%fgJCOsK5%!A}jIpO{>+( zGV75wBp|A>JOyOlNY1dq-7SE-P1iq3bVQx6%Yk<{*5}84F?-+_`Yq}S#U}_=SCzX? zX`+&GsCqhDsvFh7AWWM#ck=(Rps}W(-f3)-hf$w$i>58wymeug)RAsnbE^=j9L-?f zpi-Z);Tuuyqj4L}9YcZxTIWO&p4K%*X3?0-?f4ef8jtm%XgkyEBd6Ds8uOK?%`{)>0D(Cr`A4IcZoG`&U18YKqjoYtzQo|Dt=**7zk597IbK9sJXFyhNi zwtW@gRcSW?gGKMW@kxrlG#OY-do~qJ*-V&3Js8`Y3GYwom_@$iB+g=ml}U5>1u1QR zAzAiA(jrL>&74Uwwqm}`xJ1AT;O_GsONn5#!*ULyhq;oEIkp%2g#mF(6lf@Jxhn4i zV~t87;8y4{2KZG5ao+KL=SUTJlQq*4|E@_PjJ3`!o(GG)^}?JsMpy*)mQYPCf1;Sk`8-A8at@Xm#Gb>oe(v%3b{156)aykj?nu&|IbZfh z!lZx$?iVd}BHwuNSkmco3iwy5Drr$xV-lid6PqT(u95$N>8c#Jm2RMN_SB1WJe9Oq z(x$uU@TQLQX@QVr>U~Sa;vEmbZ_QL7odp^*-BsqVXSqmf)oqYES3tl*66F0YO=#d1 rlgk$~puxAlhuJ^ZHqgioD1o1DVtQEUit~KllU0$5nh)jV0N{TCC3Zqn literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-gray.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-gray.gif new file mode 100644 index 0000000000000000000000000000000000000000..cfb8a2f0961b880d9ecc9e59f831d0c0bf9d06db GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5F}1vNN-#bFE}n2rob1X65+pkEe*DZwLSXy)sc-G6LrLE|#j%ny@ltx#{|>*k3`b zudj+f+$8$@s#fHh^zF++cYjOsT#=i)PgZ*SBbQFk<=6g7TzYe_x%fYqoR5WW_>5Nf zsIRkcJbHA@c(c>D3XzqU)=k#8J9nngIK5|{y|vw$2$RE?mT4~XtDRLEe|<_~c?_?$ zLGJZ!!S{W4%zp58Z=>w%X})`Qe0&`0sXRUALwVLJuj#KvHA1S2+ow&BYJYdfr2O^1 zna!)!@5=7^`T51=)#j2iwbhrWRX*39_q(R{^Y??#w#k`8!n#b?Ah=gT4^b_6Je!p-pqnUi6)T{Kw4)JLb3tD)cb}Z;R&ALM=NKo^J zQum3S7LQAK7iB!^v-vhdvhxz-&N&k%mqtvOXdV2 literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-red-line.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-red-line.gif new file mode 100644 index 0000000000000000000000000000000000000000..df9e749a8f1f58862588efc64988003efad01d51 GIT binary patch literal 1877 zcmeH``BxGK0LPh{$5cGF%CuRcF0W^1+Eb91Y0har@ns%QJPI-bCps}CP-u#GY96he zH{=x}8cR_?6wMSBHp}~@d8B5Ec_ztT`#0A2hwu02&*#0br`JzT&Np-c8>+j2FWJW9 z|J$$i)xiJGfXTkfHvoVFVDp9i%O?Qp3V=f6d5==7Sk4KMl>Ucik`YxtvJ<)$%#TPKR% zdeBegW3Nr-TZ$_DvX!7#=EQu`)|{{_NO4?Hnuz--`I}N3UjF&+?uwLk+=>GJd{B_Tc2OKbjN9H> z96NPSF%oo|+^NT@plDh-RsN>!ws$&N>eV+-RSK`GN-+xQlcpP|{VXMbZmGY?Sg+bE z&yqDeRb-m~Xn;($Rkc9os0lNWR0x7V&viYtFw425?`)O{#Xnxi^Z-rV%z`xuPf1K3U`ignx^9LiY{9RF`M1 z((4&CBBq9gRTxIqvdNQH4XvU-teM=&r#I{BRpE@Mf`UowW*aYDTj; zR~d}wJj7bmv%$EvhL%3@95+YnP@jZFjkyaK?LZqem&Cp}E@#J}7%>obDszfKXbSed{!N zqe%A5h1G9<<|OWgt(pyPNUi%mt_OllWQ$!DHV#9VzJogSLla83`aMi%;zcml$vXr7 zf<%YcL08HgN8s@2tufz(==0;jh0Ny@q4f1T-P5MdE9;FzHSA-Pm3Wn^KX5K-#%-h+YndE*c}A#} z97|nymmXX*xOhw~p_=<#*Rp;q1c;i_)TkyvQ;xgVtY5mTyh_&|ZEzU`%%?)%UDt;N sUpBjNE)^Df<9oQ%i{r+6SwTgJWAz*lYeQMK?>m|{T3!EviV6VoFXq=mv;Y7A literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-red.gif b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/images/treeview-red.gif new file mode 100644 index 0000000000000000000000000000000000000000..3bbb3a157f1568d59d6db02b55a3b3fe9a1ff7a7 GIT binary patch literal 1230 zcmZ?wbhEHbOkikb_|5q9rFMYXq;dkzBCUd%AXV z7f->2WoKqf=UU0E5MF-1&C2oHA5RfQ-wyu&du5`wWCYCfT`X0jHDP7Qa?|x$vA=>= zUtbk}xJmT)RjtT1>D!lu?*5kMxgs}ppRDxuM=qV7%dh>Fxb)^;bMb#JIUft%@ENV{ zQD0}@c=YI)@n)xQ6(TDyt(&ZGckWD~aeB`@duzKh5hjN(Ez?}&S39dT{`!=}@)%xg zgWT)eg75q8nEl}G-bUHi(|q^r`1m-~Q+ayKhw`jdUejNTYJ^l3w@;fM)&A~|N%`x2 zGn-ed-<93-^Ye?#tIZ{4YO60#t9-6I?{`h@=kEuf$II8+R(@HSYaUSgyf$2+OgK}0 zZsRjUi+L5dHILtK5edt9=qI|b{eIzIMl<7PRm>?O4!tnstX#kf7!b zrS20uEgqNfF3Nb+XY*}_WalNuopUBkE{&Kl(L5+ZuF(6`HI*Fyu5b4nE$kweHiYk+ hA)Dse=Ki!azG~*").attr("id", this.id || "").html("" + this.text + "").appendTo(parent); + if (this.classes) { + current.children("span").addClass(this.classes); + } + if (this.expanded) { + current.addClass("open"); + } + if (this.hasChildren || this.children && this.children.length) { + var branch = $("
      ").appendTo(current); + if (this.hasChildren) { + current.addClass("hasChildren"); + createNode.call({ + text:"placeholder", + id:"placeholder", + children:[] + }, branch); + } + if (this.children && this.children.length) { + $.each(this.children, createNode, [branch]) + } + } + } + $.each(response, createNode, [child]); + $(container).treeview({add: child}); + }); +} + +var proxied = $.fn.treeview; +$.fn.treeview = function(settings) { + if (!settings.url) { + return proxied.apply(this, arguments); + } + var container = this; + load(settings, "source", this, container); + var userToggle = settings.toggle; + return proxied.call(this, $.extend({}, settings, { + collapsed: true, + toggle: function() { + var $this = $(this); + if ($this.hasClass("hasChildren")) { + var childList = $this.removeClass("hasChildren").find("ul"); + childList.empty(); + load(settings, this.id, childList, container); + } + if (userToggle) { + userToggle.apply(this, arguments); + } + } + })); +}; + +})(jQuery); \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.css b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.css new file mode 100644 index 0000000..36d0394 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.css @@ -0,0 +1,90 @@ +.treeview, .treeview ul { + padding: 0; + margin: 0; + list-style: none; +} + +.treeview ul { + margin-top: 4px; +} + +.treeview .hitarea { + background: url(images/treeview-default.gif) -64px -25px no-repeat; + height: 16px; + width: 16px; + margin-left: -16px; + float: left; + cursor: pointer; +} +/* fix for IE6 */ +* html .hitarea { + display: inline; + float:none; +} + +.treeview li { + margin: 0; + padding: 3px 0 3px 16px; +} + +.treeview a.selected { + background-color: #eee; +} + +#treecontrol { margin: 1em 0; display: none; } + +.treeview .hover { color: black; cursor: pointer; } + +.treeview li { background: url(images/treeview-default-line.gif) 0 0 no-repeat; } +.treeview li.collapsable, .treeview li.expandable { background-position: 0 -176px; } + +.treeview .expandable-hitarea { background-position: -80px -3px; } + +.treeview li.last { background-position: 0 -1766px } +.treeview li.lastCollapsable, .treeview li.lastExpandable { background-image: url(images/treeview-default.gif); } +.treeview li.lastCollapsable { background-position: 0 -111px } +.treeview li.lastExpandable { background-position: -32px -67px } + +.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; } + +.treeview-red li { background-image: url(images/treeview-red-line.gif); } +.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(images/treeview-red.gif); } + +.treeview-black li { background-image: url(images/treeview-black-line.gif); } +.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(images/treeview-black.gif); } + +.treeview-gray li { background-image: url(images/treeview-gray-line.gif); } +.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(images/treeview-gray.gif); } + +.treeview-famfamfam li { background-image: url(images/treeview-famfamfam-line.gif); } +.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(images/treeview-famfamfam.gif); } + + +.filetree li { padding: 3px 0 2px 16px; } +.filetree span.folder, .filetree span.file { padding: 1px 0 1px 20px; display: block; } +.filetree span.folder { background: url(images/folder.gif) 0 0 no-repeat; } +.filetree li.expandable span.folder { background: url(images/folder-closed.gif) 0 0 no-repeat; } +.filetree span.file { background: url(images/page_white_text.png) 0 0 no-repeat; } + +.filetree li span a { + text-decoration: none; + font-size: 12px; + color: #517291; +} + +html, body {height:100%; margin: 0; padding: 0; } + +/* +html>body { + font-size: 16px; + font-size: 68.75%; +} Reset Base Font Size */ + /* +body { + font-family: Verdana, helvetica, arial, sans-serif; + font-size: 68.75%; + background: #fff; + color: #333; +} */ + +a img { border: none; } \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.js new file mode 100644 index 0000000..248e725 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.js @@ -0,0 +1,255 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * + */ + +;(function($) { + + $.extend($.fn, { + swapClass: function(c1, c2) { + var c1Elements = this.filter('.' + c1); + this.filter('.' + c2).removeClass(c2).addClass(c1); + c1Elements.removeClass(c1).addClass(c2); + return this; + }, + replaceClass: function(c1, c2) { + return this.filter('.' + c1).removeClass(c1).addClass(c2).end(); + }, + hoverClass: function(className) { + className = className || "hover"; + return this.hover(function() { + $(this).addClass(className); + }, function() { + $(this).removeClass(className); + }); + }, + heightToggle: function(animated, callback) { + animated ? + this.animate({ height: "toggle" }, animated, callback) : + this.each(function(){ + jQuery(this)[ jQuery(this).is(":hidden") ? "show" : "hide" ](); + if(callback) + callback.apply(this, arguments); + }); + }, + heightHide: function(animated, callback) { + if (animated) { + this.animate({ height: "hide" }, animated, callback); + } else { + this.hide(); + if (callback) + this.each(callback); + } + }, + prepareBranches: function(settings) { + if (!settings.prerendered) { + // mark last tree items + this.filter(":last-child:not(ul)").addClass(CLASSES.last); + // collapse whole tree, or only those marked as closed, anyway except those marked as open + this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide(); + } + // return all items with sublists + return this.filter(":has(>ul)"); + }, + applyClasses: function(settings, toggler) { + this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) { + toggler.apply($(this).next()); + }).add( $("a", this) ).hoverClass(); + + if (!settings.prerendered) { + // handle closed ones first + this.filter(":has(>ul:hidden)") + .addClass(CLASSES.expandable) + .replaceClass(CLASSES.last, CLASSES.lastExpandable); + + // handle open ones + this.not(":has(>ul:hidden)") + .addClass(CLASSES.collapsable) + .replaceClass(CLASSES.last, CLASSES.lastCollapsable); + + // create hitarea + this.prepend("
      ").find("div." + CLASSES.hitarea).each(function() { + var classes = ""; + $.each($(this).parent().attr("class").split(" "), function() { + classes += this + "-hitarea "; + }); + $(this).addClass( classes ); + }); + } + + // apply event to hitarea + this.find("div." + CLASSES.hitarea).click( toggler ); + }, + treeview: function(settings) { + + if(typeof(window.treeCookieId) !== 'undefined' || window.treeCookieId === ""){ + treeCookieId = "treeview"; + } + + settings = $.extend({ + cookieId: treeCookieId + }, settings); + + if (settings.add) { + return this.trigger("add", [settings.add]); + } + + if ( settings.toggle ) { + var callback = settings.toggle; + settings.toggle = function() { + return callback.apply($(this).parent()[0], arguments); + }; + } + + // factory for treecontroller + function treeController(tree, control) { + // factory for click handlers + function handler(filter) { + return function() { + // reuse toggle event handler, applying the elements to toggle + // start searching for all hitareas + toggler.apply( $("div." + CLASSES.hitarea, tree).filter(function() { + // for plain toggle, no filter is provided, otherwise we need to check the parent element + return filter ? $(this).parent("." + filter).length : true; + }) ); + return false; + }; + } + // click on first element to collapse tree + $("a:eq(0)", control).click( handler(CLASSES.collapsable) ); + // click on second to expand tree + $("a:eq(1)", control).click( handler(CLASSES.expandable) ); + // click on third to toggle tree + $("a:eq(2)", control).click( handler() ); + } + + // handle toggle event + function toggler() { + $(this) + .parent() + // swap classes for hitarea + .find(">.hitarea") + .swapClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea ) + .swapClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea ) + .end() + // swap classes for parent li + .swapClass( CLASSES.collapsable, CLASSES.expandable ) + .swapClass( CLASSES.lastCollapsable, CLASSES.lastExpandable ) + // find child lists + .find( ">ul" ) + // toggle them + .heightToggle( settings.animated, settings.toggle ); + if ( settings.unique ) { + $(this).parent() + .siblings() + // swap classes for hitarea + .find(">.hitarea") + .replaceClass( CLASSES.collapsableHitarea, CLASSES.expandableHitarea ) + .replaceClass( CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea ) + .end() + .replaceClass( CLASSES.collapsable, CLASSES.expandable ) + .replaceClass( CLASSES.lastCollapsable, CLASSES.lastExpandable ) + .find( ">ul" ) + .heightHide( settings.animated, settings.toggle ); + } + } + //Cookie Persistence + function serialize() { + function binary(arg) { + return arg ? 1 : 0; + } + var data = []; + branches.each(function(i, e) { + data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; + }); + $.cookie(settings.cookieId, data.join("") ); + } + + function deserialize() { + var stored = $.cookie(settings.cookieId); + if ( stored ) { + var data = stored.split(""); + branches.each(function(i, e) { + $(e).find(">ul")[ parseInt(data[i]) ? "show" : "hide" ](); + }); + } + } + + // add treeview class to activate styles + this.addClass("treeview"); + + // prepare branches and find all tree items with child lists + var branches = this.find("li").prepareBranches(settings); + + switch(settings.persist) { + case "cookie": + var toggleCallback = settings.toggle; + settings.toggle = function() { + serialize(); + if (toggleCallback) { + toggleCallback.apply(this, arguments); + } + }; + deserialize(); + break; + case "location": + var current = this.find("a").filter(function() { return this.href.toLowerCase() == location.href.toLowerCase(); }); + if ( current.length ) { + current.addClass("selected").parents("ul, li").add( current.next() ).show(); + } + break; + } + + branches.applyClasses(settings, toggler); + + // if control option is set, create the treecontroller and show it + if ( settings.control ) { + treeController(this, settings.control); + $(settings.control).show(); + } + + return this.bind("add", function(event, branches) { + $(branches).prev() + .removeClass(CLASSES.last) + .removeClass(CLASSES.lastCollapsable) + .removeClass(CLASSES.lastExpandable) + .find(">.hitarea") + .removeClass(CLASSES.lastCollapsableHitarea) + .removeClass(CLASSES.lastExpandableHitarea); + $(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler); + }); + } + }); + + // classes used by the plugin + // need to be styled via external stylesheet, see first example + var CLASSES = $.fn.treeview.classes = { + open: "open", + closed: "closed", + expandable: "expandable", + expandableHitarea: "expandable-hitarea", + lastExpandableHitarea: "lastExpandable-hitarea", + collapsable: "collapsable", + collapsableHitarea: "collapsable-hitarea", + lastCollapsableHitarea: "lastCollapsable-hitarea", + lastCollapsable: "lastCollapsable", + lastExpandable: "lastExpandable", + last: "last", + hitarea: "hitarea" + }; + + // provide backwards compability + $.fn.Treeview = $.fn.treeview; + +})(jQuery); \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.min.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.min.js new file mode 100644 index 0000000..e693321 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.min.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * kasunbg: changed the cookieid name + * + */;(function($){$.extend($.fn,{swapClass:function(c1,c2){var c1Elements=this.filter('.'+c1);this.filter('.'+c2).removeClass(c2).addClass(c1);c1Elements.removeClass(c1).addClass(c2);return this;},replaceClass:function(c1,c2){return this.filter('.'+c1).removeClass(c1).addClass(c2).end();},hoverClass:function(className){className=className||"hover";return this.hover(function(){$(this).addClass(className);},function(){$(this).removeClass(className);});},heightToggle:function(animated,callback){animated?this.animate({height:"toggle"},animated,callback):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();if(callback)callback.apply(this,arguments);});},heightHide:function(animated,callback){if(animated){this.animate({height:"hide"},animated,callback);}else{this.hide();if(callback)this.each(callback);}},prepareBranches:function(settings){if(!settings.prerendered){this.filter(":last-child:not(ul)").addClass(CLASSES.last);this.filter((settings.collapsed?"":"."+CLASSES.closed)+":not(."+CLASSES.open+")").find(">ul").hide();}return this.filter(":has(>ul)");},applyClasses:function(settings,toggler){this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event){toggler.apply($(this).next());}).add($("a",this)).hoverClass();if(!settings.prerendered){this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last,CLASSES.lastExpandable);this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last,CLASSES.lastCollapsable);this.prepend("
      ").find("div."+CLASSES.hitarea).each(function(){var classes="";$.each($(this).parent().attr("class").split(" "),function(){classes+=this+"-hitarea ";});$(this).addClass(classes);});}this.find("div."+CLASSES.hitarea).click(toggler);},treeview:function(settings){if(typeof(window.treeCookieId) === 'undefined' || window.treeCookieId === ""){treeCookieId = "treeview";} settings=$.extend({cookieId: treeCookieId},settings);if(settings.add){return this.trigger("add",[settings.add]);}if(settings.toggle){var callback=settings.toggle;settings.toggle=function(){return callback.apply($(this).parent()[0],arguments);};}function treeController(tree,control){function handler(filter){return function(){toggler.apply($("div."+CLASSES.hitarea,tree).filter(function(){return filter?$(this).parent("."+filter).length:true;}));return false;};}$("a:eq(0)",control).click(handler(CLASSES.collapsable));$("a:eq(1)",control).click(handler(CLASSES.expandable));$("a:eq(2)",control).click(handler());}function toggler(){$(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable,CLASSES.expandable).swapClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated,settings.toggle);if(settings.unique){$(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea,CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea,CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable,CLASSES.expandable).replaceClass(CLASSES.lastCollapsable,CLASSES.lastExpandable).find(">ul").heightHide(settings.animated,settings.toggle);}}function serialize(){function binary(arg){return arg?1:0;}var data=[];branches.each(function(i,e){data[i]=$(e).is(":has(>ul:visible)")?1:0;});$.cookie(settings.cookieId,data.join(""));}function deserialize(){var stored=$.cookie(settings.cookieId);if(stored){var data=stored.split("");branches.each(function(i,e){$(e).find(">ul")[parseInt(data[i])?"show":"hide"]();});}}this.addClass("treeview");var branches=this.find("li").prepareBranches(settings);switch(settings.persist){case"cookie":var toggleCallback=settings.toggle;settings.toggle=function(){serialize();if(toggleCallback){toggleCallback.apply(this,arguments);}};deserialize();break;case"location":var current=this.find("a").filter(function(){return this.href.toLowerCase()==location.href.toLowerCase();});if(current.length){current.addClass("selected").parents("ul, li").add(current.next()).show();}break;}branches.applyClasses(settings,toggler);if(settings.control){treeController(this,settings.control);$(settings.control).show();}return this.bind("add",function(event,branches){$(branches).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea);$(branches).find("li").andSelf().prepareBranches(settings).applyClasses(settings,toggler);});}});var CLASSES=$.fn.treeview.classes={open:"open",closed:"closed",expandable:"expandable",expandableHitarea:"expandable-hitarea",lastExpandableHitarea:"lastExpandable-hitarea",collapsable:"collapsable",collapsableHitarea:"collapsable-hitarea",lastCollapsableHitarea:"lastCollapsable-hitarea",lastCollapsable:"lastCollapsable",lastExpandable:"lastExpandable",last:"last",hitarea:"hitarea"};$.fn.Treeview=$.fn.treeview;})(jQuery); \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.pack.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.pack.js new file mode 100644 index 0000000..eddac49 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/jquery/treeview/jquery.treeview.pack.js @@ -0,0 +1,16 @@ +/* + * Treeview 1.4 - jQuery plugin to hide and show branches of a tree + * + * http://bassistance.de/jquery-plugins/jquery-plugin-treeview/ + * http://docs.jquery.com/Plugins/Treeview + * + * Copyright (c) 2007 Jörn Zaefferer + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + * Revision: $Id: jquery.treeview.js 4684 2008-02-07 19:08:06Z joern.zaefferer $ + * + */ +eval(function(p,a,c,k,e,r){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';(4($){$.1l($.F,{E:4(b,c){l a=3.n(\'.\'+b);3.n(\'.\'+c).o(c).m(b);a.o(b).m(c);8 3},s:4(a,b){8 3.n(\'.\'+a).o(a).m(b).P()},1n:4(a){a=a||"1j";8 3.1j(4(){$(3).m(a)},4(){$(3).o(a)})},1h:4(b,a){b?3.1g({1e:"p"},b,a):3.x(4(){T(3)[T(3).1a(":U")?"H":"D"]();7(a)a.A(3,O)})},12:4(b,a){7(b){3.1g({1e:"D"},b,a)}1L{3.D();7(a)3.x(a)}},11:4(a){7(!a.1k){3.n(":r-1H:G(9)").m(k.r);3.n((a.1F?"":"."+k.X)+":G(."+k.W+")").6(">9").D()}8 3.n(":y(>9)")},S:4(b,c){3.n(":y(>9):G(:y(>a))").6(">1z").C(4(a){c.A($(3).19())}).w($("a",3)).1n();7(!b.1k){3.n(":y(>9:U)").m(k.q).s(k.r,k.t);3.G(":y(>9:U)").m(k.u).s(k.r,k.v);3.1r("").6("J."+k.5).x(4(){l a="";$.x($(3).B().1o("14").13(" "),4(){a+=3+"-5 "});$(3).m(a)})}3.6("J."+k.5).C(c)},z:4(g){g=$.1l({N:"z"},g);7(g.w){8 3.1K("w",[g.w])}7(g.p){l d=g.p;g.p=4(){8 d.A($(3).B()[0],O)}}4 1m(b,c){4 L(a){8 4(){K.A($("J."+k.5,b).n(4(){8 a?$(3).B("."+a).1i:1I}));8 1G}}$("a:10(0)",c).C(L(k.u));$("a:10(1)",c).C(L(k.q));$("a:10(2)",c).C(L())}4 K(){$(3).B().6(">.5").E(k.Z,k.Y).E(k.I,k.M).P().E(k.u,k.q).E(k.v,k.t).6(">9").1h(g.1f,g.p);7(g.1E){$(3).B().1D().6(">.5").s(k.Z,k.Y).s(k.I,k.M).P().s(k.u,k.q).s(k.v,k.t).6(">9").12(g.1f,g.p)}}4 1d(){4 1C(a){8 a?1:0}l b=[];j.x(4(i,e){b[i]=$(e).1a(":y(>9:1B)")?1:0});$.V(g.N,b.1A(""))}4 1c(){l b=$.V(g.N);7(b){l a=b.13("");j.x(4(i,e){$(e).6(">9")[1y(a[i])?"H":"D"]()})}}3.m("z");l j=3.6("Q").11(g);1x(g.1w){18"V":l h=g.p;g.p=4(){1d();7(h){h.A(3,O)}};1c();17;18"1b":l f=3.6("a").n(4(){8 3.16.15()==1b.16.15()});7(f.1i){f.m("1v").1u("9, Q").w(f.19()).H()}17}j.S(g,K);7(g.R){1m(3,g.R);$(g.R).H()}8 3.1t("w",4(a,b){$(b).1s().o(k.r).o(k.v).o(k.t).6(">.5").o(k.I).o(k.M);$(b).6("Q").1q().11(g).S(g,K)})}});l k=$.F.z.1J={W:"W",X:"X",q:"q",Y:"q-5",M:"t-5",u:"u",Z:"u-5",I:"v-5",v:"v",t:"t",r:"r",5:"5"};$.F.1p=$.F.z})(T);',62,110,'|||this|function|hitarea|find|if|return|ul||||||||||||var|addClass|filter|removeClass|toggle|expandable|last|replaceClass|lastExpandable|collapsable|lastCollapsable|add|each|has|treeview|apply|parent|click|hide|swapClass|fn|not|show|lastCollapsableHitarea|div|toggler|handler|lastExpandableHitarea|cookieId|arguments|end|li|control|applyClasses|jQuery|hidden|cookie|open|closed|expandableHitarea|collapsableHitarea|eq|prepareBranches|heightHide|split|class|toLowerCase|href|break|case|next|is|location|deserialize|serialize|height|animated|animate|heightToggle|length|hover|prerendered|extend|treeController|hoverClass|attr|Treeview|andSelf|prepend|prev|bind|parents|selected|persist|switch|parseInt|span|join|visible|binary|siblings|unique|collapsed|false|child|true|classes|trigger|else'.split('|'),0,{})) \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/main-openstack.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/main-openstack.js new file mode 100644 index 0000000..81a4e3f --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/common/main-openstack.js @@ -0,0 +1,198 @@ +/** + * Miscellaneous js functions for WebHelp + * Kasun Gajasinghe, http://kasunbg.blogspot.com + * David Cramer, http://www.thingbag.net + * + */ + +$(document).ready(function() { + + + // When you click on a link to an anchor, scroll down + // 105 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link within a page. + $('a[href*=#]').click(function() { + if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') + && location.hostname == this.hostname) { + var $target = $(this.hash); + $target = $target.length && $target + || $('[name=' + this.hash.slice(1) +']'); + if ($target.length) { + var targetOffset = $target.offset().top - 105; + $('html,body') + .animate({scrollTop: targetOffset}, 200); + return false; + } + } + }); + + + + // $("#showHideHighlight").button(); //add jquery button styling to 'Go' button + //Generate tabs in nav-pane with JQuery + $(function() { + $("#tabs").tabs({ + cookie: { + // store cookie for 2 days. + expires: 2 + } + }); + }); + + //Generate the tree + $("#ulTreeDiv").attr("style",""); + $("#tree").treeview({ + collapsed: true, + animated: "medium", + control: "#sidetreecontrol", + persist: "cookie" + }); + + //after toc fully styled, display it. Until loading, a 'loading' image will be displayed + $("#tocLoading").attr("style","display:none;"); +// $("#ulTreeDiv").attr("style","display:block;"); + + //.searchButton is the css class applied to 'Go' button + $(function() { + $("button", ".searchButton").button(); + + $("button", ".searchButton").click(function() { return false; }); + }); + + //'ui-tabs-1' is the cookie name which is used for the persistence of the tabs.(Content/Search tab) + if ($.cookie('ui-tabs-1') === '1') { //search tab is visible + if ($.cookie('textToSearch') != undefined && $.cookie('textToSearch').length > 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('diaSearch_Form'); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display","block"); + } + } + + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + //$("#doSearch").button(); //add jquery button styling to 'Go' button + + // When you click on a link to an anchor, scroll down + // 105 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link from another page. + var hash = window.location.hash; + if(hash){ + var targetOffset = $(hash).offset().top - 105; + $('html,body').animate({scrollTop: targetOffset}, 200); + return false; + } + +}); + +/** + * Synchronize with the tableOfContents + */ +function syncToc(){ + var a = document.getElementById("webhelp-currentid"); + if (a != undefined) { + var b = a.getElementsByTagName("a")[0]; + + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style", 2); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #DEE9E9; " + style); + b.setAttribute("style", "color: black;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #DEE9E9; " + style); + b.setAttribute("style", "color: black;"); + } else { + a.setAttribute("style", "background-color: #DEE9E9; "); + b.setAttribute("style", "color: black;"); + } + } + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; + + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; + } + } +} + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#leftnavigation"); + var content = $("#content"); + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + content.css("margin", "0 0 0 0"); + leftNavigation.css("display","none"); + showHideButton.attr("title", "Show the TOC tree"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + content.css("margin", "0 0 0 280px"); + leftNavigation.css("display","block"); + showHideButton.attr("title", "Hide the TOC Tree"); + } +} + +/** + * Code for search highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, " 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Effectuer_recherche($.cookie('textToSearch')); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display","block"); + } + } + + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + //$("#doSearch").button(); //add jquery button styling to 'Go' button + + // When you click on a link to an anchor, scroll down + // 105 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link from another page. + var hash = window.location.hash; + if(hash){ + var targetOffset = $(hash).offset().top - 105; + $('html,body').animate({scrollTop: targetOffset}, 200); + return false; + } + +}); + +/** + * Synchronize with the tableOfContents + */ +function syncToc(){ + var a = document.getElementById("webhelp-currentid"); + if (a != undefined) { + var b = a.getElementsByTagName("a")[0]; + + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style", 2); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #D8D8D8; " + style); + b.setAttribute("style", "color: black;"); + } else { + a.setAttribute("style", "background-color: #D8D8D8; "); + b.setAttribute("style", "color: black;"); + } + } + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; + + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; + } + } +} + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#leftnavigation"); + var content = $("#content"); + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + content.css("margin", "125px 0 0 0"); + leftNavigation.css("display","none"); + showHideButton.attr("title", "Show the TOC tree"); + $("body").addClass("sidebar"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + content.css("margin", "125px 0 0 280px"); + leftNavigation.css("display","block"); + showHideButton.attr("title", "Hide the TOC Tree"); + $("body").removeClass("sidebar"); + } +} + +/** + * Code for search highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, " 0) { + document.getElementById('textToSearch').value = $.cookie('textToSearch'); + Verifie('diaSearch_Form'); + searchHighlight($.cookie('textToSearch')); + $("#showHideHighlight").css("display","block"); + } + } + + syncToc(); //Synchronize the toc tree with the content pane, when loading the page. + //$("#doSearch").button(); //add jquery button styling to 'Go' button + + // When you click on a link to an anchor, scroll down + // 105 px to cope with the fact that the banner + // hides the top 95px or so of the page. + // This code deals with the problem when + // you click on a link from another page. + var hash = window.location.hash; + if(hash){ + var targetOffset = $(hash).offset().top - 105; + $('html,body').animate({scrollTop: targetOffset}, 200); + return false; + } + +}); + +/** + * Synchronize with the tableOfContents + */ +function syncToc(){ + var a = document.getElementById("webhelp-currentid"); + if (a != undefined) { + var b = a.getElementsByTagName("a")[0]; + + if (b != undefined) { + //Setting the background for selected node. + var style = a.getAttribute("style", 2); + if (style != null && !style.match(/background-color: Background;/)) { + a.setAttribute("style", "background-color: #DEE9E9; " + style); + b.setAttribute("style", "color: black;"); + } else if (style != null) { + a.setAttribute("style", "background-color: #DEE9E9; " + style); + b.setAttribute("style", "color: black;"); + } else { + a.setAttribute("style", "background-color: #DEE9E9; "); + b.setAttribute("style", "color: black;"); + } + } + + //shows the node related to current content. + //goes a recursive call from current node to ancestor nodes, displaying all of them. + while (a.parentNode && a.parentNode.nodeName) { + var parentNode = a.parentNode; + var nodeName = parentNode.nodeName; + + if (nodeName.toLowerCase() == "ul") { + parentNode.setAttribute("style", "display: block;"); + } else if (nodeName.toLocaleLowerCase() == "li") { + parentNode.setAttribute("class", "collapsable"); + parentNode.firstChild.setAttribute("class", "hitarea collapsable-hitarea "); + } + a = parentNode; + } + } +} + +/** + * Code for Show/Hide TOC + * + */ +function showHideToc() { + var showHideButton = $("#showHideButton"); + var leftNavigation = $("#leftnavigation"); + var content = $("#content"); + + if (showHideButton != undefined && showHideButton.hasClass("pointLeft")) { + //Hide TOC + showHideButton.removeClass('pointLeft').addClass('pointRight'); + content.css("margin", "0 0 0 0"); + leftNavigation.css("display","none"); + showHideButton.attr("title", "Show the TOC tree"); + } else { + //Show the TOC + showHideButton.removeClass('pointRight').addClass('pointLeft'); + content.css("margin", "0 0 0 280px"); + leftNavigation.css("display","block"); + showHideButton.attr("title", "Hide the TOC Tree"); + } +} + +/** + * Code for search highlighting + */ +var highlightOn = true; +function searchHighlight(searchText) { + highlightOn = true; + if (searchText != undefined) { + var wList; + var sList = new Array(); //stem list + //Highlight the search terms + searchText = searchText.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, " + + + +Chapter 2. Background
      DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT - 

      + This chapter provides background information on OpenStack + extensions and the OpenStack extension mechanism. It + describes what extensions are, how the extension mechanism + in OpenStack is related to the OpenGL extension mechanism, + the differences between extensions and versions, the + concept of versioning extensions, and why extensions are + vital when defining a pluggable architecture. +



      \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01.html b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01.html new file mode 100644 index 0000000..a116733 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01.html @@ -0,0 +1,54 @@ + + + + +Chapter 1. Overview
      DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT - 

      + The OpenStack extension mechanism makes it possible to add + functionality to OpenStack APIs in a manner that ensures + compatibility with existing clients. This capability + allows OpenStack operators and vendors to provide + innovative functionality to their clients and provides a + means by which new features may be considered in upcoming + versions of OpenStack APIs. +

      + This document describes the extension mechanism in detail. + It provides guidance to API implementors and clients on + developing and consuming API extensions, it describes the + rules by which extensions are governed, and it describes + the process used to promote API extensions to new features. +



      \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s01.html b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s01.html new file mode 100644 index 0000000..e641c4c --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s01.html @@ -0,0 +1,45 @@ + + + + +1.1. Intended Audience \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s02.html b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s02.html new file mode 100644 index 0000000..0a57bc5 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s02.html @@ -0,0 +1,54 @@ + + + + +1.2. Organization of this Document
      DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT - 
      Chapter 2, Background

      + Provides background information on + OpenStack extensions and the OpenStack + extension mechanism. +

      + Describes the specifics of implementing + and consuming extensions in ReST APIs. +

      + Describes API governance and the process + by which extensions can be promoted to new + features in future revisions of an API. +

      Briefly summarizes the benefits of the extension mechanism and + provides a brief overview of how extensions are used.



      \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s03.html b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s03.html new file mode 100644 index 0000000..ba79b6c --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch01s03.html @@ -0,0 +1,50 @@ + + + + +1.3. Document Change History
      DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT - 
      + + + + + +
      Revision DateSummary of Changes
      June 10, 2011 +
      • Initial draft.

      +


      \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s01.html b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s01.html new file mode 100644 index 0000000..222731f --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s01.html @@ -0,0 +1,81 @@ + + + + +2.1. What are Extensions?
      DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT - 

      + OpenStack APIs are defined strictly in two forms: a + human-readable specification (usually in the form of a + developer's guide) and a machine-processable + WADL. These specifications define the core actions, + capabilities, and media-types of the API. A client can + always depend on the availability of this + core API and implementers are + always required to support it in its entirety. Requiring strict adherence to the + core API allows clients to rely upon a minimal level + of functionality when interacting with multiple + implementations of the same API. +

      + Note that it is quite possible that distinct + implementations of an OpenStack API exist. First + because API specifications are released under a free + license, so anyone may use them to implement a core + API. Furthermore, the OpenStack implementations + themselves are released under a free license, making + it possible to alter the code to create a specialized + version. Such a specialized implementation could + remain OpenStack-compatible even if it were to + implement new features or add new capabilities, but + only if it made the changes in a manner that ensures + that a client expecting a core API would continue to + function normally — this is where extensions + come in. +

      An extension adds capabilities to an API beyond those + defined in the core. The introduction of new features, MIME types, actions, states, + headers, parameters, and resources can all be accomplished by means of extensions to + the core API. In order for extensions to work, the core API must be written in such + a manner that it allows for extensibility. Additionally, care should be taken to + ensure that extensions defined by different implementers don't clash with one + another, that clients can detect the presence of extensions via a standard method, + and that there is a clear promotion path at the end of which an extension may become + part of a future version of the core API. These actions, rules, and processes + together form the extension mechanism. It is important that + core APIs adhere to this mechanism in order to ensure compatibility as new + extensions are defined. Note also that while a core API may be written to allow for + extensibility, the extensions themselves are never part of the core.



      \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s02.html b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s02.html new file mode 100644 index 0000000..c52fe1a --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s02.html @@ -0,0 +1,97 @@ + + + + +2.2. Relationship to OpenGL
      DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT - 

      + In the 1990s, OpenGL was developed as a portable open + graphics library standard. The goal was to provide a + cross-platform library that could enable developers to + produce 3D graphics at real time speeds (30-120 frames + per second). There were several major challenges to + meeting this goal. In order to be considered an open + standard, control needed to shift from Silicon + Graphics (SGI), who originally developed OpenGL, to an + independent Architecture Review Board (ARB) who would + be responsible for approving specification changes, + marking new releases, and ensuring conformance + testing. Additionally, the graphics library itself + would need to be designed in a manner that would allow + the establishment of a stable and portable platform + for developers. Finally, the library would need to + garner the support of graphics hardware vendors as + they would be providing the hardware acceleration + needed to meet the goal of performing at real-time + speeds. +

      Gaining vendor support is challenging because vendors are often in direct + competition with one another. They differentiate themselves by creating innovative + new features and by providing niche functionality to their users. Thus, OpenGL was + faced with two competing requirements. On the one hand, it needed to abstract away + vendor differences in order to provide a stable cross-platform environment to + developers. On the other hand, in order to garner vendor support, it needed a method + by which vendors could differentiate themselves and provide innovative new features + and niche functionality to their users.

      The OpenGL extension mechanism was developed to solve these problems. The + extension mechanism achieved balance between the two requirements by maintaining the + core specification under the direction of the Architecture Review Board while + allowing vendors to define extensions to the core OpenGL specification. The core + specification remained uncluttered and presented a unified view of common + functionality. Because extensions were detectable at run time, developers could + write portable applications that could adapt to the hardware on which they were + running. This method of allowing for an extensible API has proven to be a very + successful strategy. More than 500 extensions have been defined in OpenGL's lifetime + and many vendors, including NVidia, ATI, Apple, IBM, and Intel, have participated in + the process by developing their own custom extensions. Additionally, many key + innovations (such as vertex and fragment shaders) have been developed via the + extension process and are now part of the core OpenGL API.

      OpenStack, while very different from OpenGL, shares many similar goals and faces + many of the same challenges. OpenStack APIs are designed to be open API standards. + An important goal is to provide developers with a ubiquitous, stable, any-scale + cloud development platform that abstracts away many of the differences between + hosting providers and their underlying infrastructure (hypervisors, load balancers, + etc.). A Policy Review Board, similar to OpenGL's Architecture Review Board, is + responsible for directing development of these APIs in a manner that ensures these + goals are met. As with OpenGL, OpenStack requires support from vendors (and cloud + providers) in order to be successful. As a result, OpenStack APIs also aim to + provide vendors with a platform which allows them to differentiate themselves by + providing innovative new features and niche functionality to their users. Because of + these similarities, the OpenStack extension mechanism described in this document is + modeled after the OpenGL extension mechanism. The methods by which extensions are + defined vary drastically, of course, since the nature of the APIs is very different + (C versus ReST); however, the manner in which extensions are documented, the way in + which vendors are attributed, and the promotion path that an extension follows, all + borrow heavily from OpenGL.



      \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s03.html b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s03.html new file mode 100644 index 0000000..57fb7c7 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s03.html @@ -0,0 +1,146 @@ + + + + +2.3. Extensions and Versions
      DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT - 

      Extensions are always interpreted in relation to a version of the core API. In + other words, from a client's perspective, an extension modifies a + particular version of the core API in some way. In reality, an + extension may be applicable to several versions of an API at once. For example, a + particular extension may continue to be available as a core API moves from one + version to another. In fact, different implementations may decide to include support + for an extension at different versions. As explained in + , + when an extension is defined, the minimal version of the core API that is required + to run the extension is specified; implementers are free to support the extension in + that version or in a later version of the core. Note, however, that because the + extension mechanism allows for promotion, an extension in one version of a core API + may become a standard feature in a later version.

      [Note]Note

      + As always, implementers are not required to + support an extension unless it is promoted to the + core. +

      Because several versions of the core API may be supported simultaneously, and + because each version may offer support for a different set of extensions, clients + must be able to detect what versions and extensions are available in a particular + deployment. Thus, both extensions and versions are queryable. Issuing a GET on the + base URL (/) of the API endpoint returns information about what + versions are available. Similarly, issuing a GET on the API's extensions resource + (/v1.1/extensions) returns information about what extensions are + available. (See + + for details of such requests.) Note that, + since extensions modify a particular version of the API, the extensions + resource itself is always accessed at a particular version.

      Backward-compatible changes in an API usually require a minor version bump. In an + extensible API, however, these changes can be brought in as extensions. The net + effect is that versions change infrequently and thus provide a stable platform on + which to develop. The Policy Review Board (PRB), with the help of project team + leaders, is responsible for ensuring that this stability is maintained by closely + guarding core API versions. Extensions, however, can be developed without the + consent or approval of the PRB. They can be developed in a completely decentralized + manner both by individual OpenStack developers and by commercial vendors. Because + extensions can be promoted to standard features, the development of new versions can + be influenced significantly by individual developers and the OpenStack client + community and is therefore not strictly defined by the PRB. In other words, new + features of a core API may be developed in a bottom-up fashion.

      + That said, not all extensions are destined to be + promoted to the next API version. Core APIs always + deals with core functionality — functionality + that is supported by all implementations and is + applicable in common cases. Extensions that deal with + niche functionality should always remain extensions. +

      + The table below summarizes the differences between + versions and extensions. +




      \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s04.html b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s04.html new file mode 100644 index 0000000..98900a3 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s04.html @@ -0,0 +1,54 @@ + + + + +2.4. Versioning Extensions \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s05.html b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s05.html new file mode 100644 index 0000000..dd228c1 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/ch02s05.html @@ -0,0 +1,52 @@ + + + + +2.5. Extensions and Pluggability \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/index.html b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/index.html new file mode 100644 index 0000000..2cd2b8c --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/index.html @@ -0,0 +1,53 @@ + + + + +OpenStack API Extensions
      DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT -  DRAFT - 

      + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at +

      http://www.apache.org/licenses/LICENSE-2.0

      + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +

      2011-06-10

      Abstract

      + This document provides an overview of the OpenStack API extension + mechanism. +


      List of Figures

      2.1. Extensions and Pluggability

      List of Tables

      2.1. Versions versus Extensions


      \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/default.props b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/default.props new file mode 100644 index 0000000..22edf43 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/default.props @@ -0,0 +1 @@ +DEF01=a \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/en-us.props b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/en-us.props new file mode 100644 index 0000000..da284ce --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/en-us.props @@ -0,0 +1,45 @@ +DEF01=this +DEF02=is +DEF03=the +DEF04=in +DEF05=i +DEF06=on +DEF07=a +DEF08=about +DEF09=an +DEF10=are +DEF11=as +DEF12=at +DEF13=be +DEF14=by +DEF15=com +DEF16=de +DEF17=en +DEF18=for +DEF19=from +DEF20=how +DEF21=it +DEF22=la +DEF23=of +DEF24=on +DEF25=or +DEF26=that +DEF27=to +DEF28=was +DEF29=what +DEF30=when +DEF31=where +DEF32=who +DEF33=will +DEF34=with +DEF35=und +DEF36=Next +DEF37=Prev +DEF38=Home +DEF39=Motive +DEF40=Inc +DEF41=Copyright +DEF42=All +DEF43=rights +DEF44=reserved +DEF45=Up \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/es-es.props b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/es-es.props new file mode 100644 index 0000000..fb73bdc --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/es-es.props @@ -0,0 +1,179 @@ +DEF01=un +DEF02=una +DEF03=unas +DEF04=unos +DEF05=uno +DEF06=sobre +DEF07=todo +DEF08=también +DEF09=tras +DEF10=otro +DEF11=algún +DEF12=alguno +DEF13=alguna +DEF14=algunos +DEF15=algunas +DEF16=ser +DEF17=es +DEF18=soy +DEF19=eres +DEF20=somos +DEF21=sois +DEF22=estoy +DEF23=esta +DEF24=estamos +DEF25=estais +DEF26=estan +DEF27=como +DEF28=en +DEF29=para +DEF30=atras +DEF31=porque +DEF32=por +DEF33=estado +DEF34=estaba +DEF35=ante +DEF36=antes +DEF37=siendo +DEF38=ambos +DEF39=pero +DEF40=por +DEF41=poder +DEF42=puede +DEF43=puedo +DEF44=podemos +DEF45=podeis +DEF46=pueden +DEF47=fui +DEF48=fue +DEF49=fuimos +DEF50=fueron +DEF51=hacer +DEF52=hago +DEF53=hace +DEF54=hacemos +DEF55=haceis +DEF56=hacen +DEF57=cada +DEF58=fin +DEF59=incluso +DEF60=primero +DEF61=desde +DEF62=conseguir +DEF63=consigo +DEF64=consigue +DEF65=consigues +DEF66=conseguimos +DEF67=consiguen +DEF68=ir +DEF69=voy +DEF70=va +DEF71=vamos +DEF72=vais +DEF73=van +DEF74=vaya +DEF75=gueno +DEF76=ha +DEF77=tener +DEF78=tengo +DEF79=tiene +DEF80=tenemos +DEF81=teneis +DEF82=tienen +DEF83=el +DEF84=la +DEF85=lo +DEF86=las +DEF87=los +DEF88=su +DEF89=aqui +DEF90=mio +DEF91=tuyo +DEF92=ellos +DEF93=ellas +DEF94=nos +DEF95=nosotros +DEF96=vosotros +DEF97=vosotras +DEF98=si +DEF99=dentro +DEF100=solo +DEF101=solamente +DEF102=saber +DEF103=sabes +DEF104=sabe +DEF105=sabemos +DEF106=sabeis +DEF107=saben +DEF108=ultimo +DEF109=largo +DEF110=bastante +DEF111=haces +DEF112=muchos +DEF113=aquellos +DEF114=aquellas +DEF115=sus +DEF116=entonces +DEF117=tiempo +DEF118=verdad +DEF119=verdadero +DEF120=verdadera +DEF121=cierto +DEF122=ciertos +DEF123=cierta +DEF124=ciertas +DEF125=intentar +DEF126=intento +DEF127=intenta +DEF128=intentas +DEF129=intentamos +DEF130=intentais +DEF131=intentan +DEF132=dos +DEF133=bajo +DEF134=arriba +DEF135=encima +DEF136=usar +DEF137=uso +DEF138=usas +DEF139=usa +DEF140=usamos +DEF141=usais +DEF142=usan +DEF143=emplear +DEF144=empleo +DEF145=empleas +DEF146=emplean +DEF147=ampleamos +DEF148=empleais +DEF149=valor +DEF150=muy +DEF151=era +DEF152=eras +DEF153=eramos +DEF154=eran +DEF155=modo +DEF156=bien +DEF157=cual +DEF158=cuando +DEF159=donde +DEF160=mientras +DEF161=quien +DEF162=con +DEF163=entre +DEF164=sin +DEF165=trabajo +DEF166=trabajar +DEF167=trabajas +DEF168=trabaja +DEF169=trabajamos +DEF170=trabajais +DEF171=trabajan +DEF172=podria +DEF173=podrias +DEF174=podriamos +DEF175=podrian +DEF176=podriais +DEF177=yo +DEF178=aquel +DEF179=qué \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/htmlFileInfoList.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/htmlFileInfoList.js new file mode 100644 index 0000000..975d2d3 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/htmlFileInfoList.js @@ -0,0 +1,11 @@ +fil = new Array(); +fil["0"]= "Background.html@@@Chapter 2. Background@@@null"; +fil["1"]= "ch01.html@@@Chapter 1. Overview@@@null"; +fil["2"]= "ch01s01.html@@@1.1. Intended Audience@@@null"; +fil["3"]= "ch01s02.html@@@1.2. Organization of this Document@@@null"; +fil["4"]= "ch01s03.html@@@1.3. Document Change History@@@null"; +fil["5"]= "ch02s01.html@@@2.1. What are Extensions?@@@null"; +fil["6"]= "ch02s02.html@@@2.2. Relationship to OpenGL@@@null"; +fil["7"]= "ch02s03.html@@@2.3. Extensions and Versions@@@null"; +fil["8"]= "ch02s04.html@@@2.4. Versioning Extensions@@@null"; +fil["9"]= "ch02s05.html@@@2.5. Extensions and Pluggability@@@null"; diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/htmlFileList.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/htmlFileList.js new file mode 100644 index 0000000..c5f4c5e --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/htmlFileList.js @@ -0,0 +1,12 @@ +//List of files which are indexed. +fl = new Array(); +fl["0"]= "Background.html"; +fl["1"]= "ch01.html"; +fl["2"]= "ch01s01.html"; +fl["3"]= "ch01s02.html"; +fl["4"]= "ch01s03.html"; +fl["5"]= "ch02s01.html"; +fl["6"]= "ch02s02.html"; +fl["7"]= "ch02s03.html"; +fl["8"]= "ch02s04.html"; +fl["9"]= "ch02s05.html"; diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-1.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-1.js new file mode 100644 index 0000000..82a9178 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-1.js @@ -0,0 +1,161 @@ +var indexerLanguage="en"; +//Auto generated index for searching. +w["-"]="0,1,2,3,4,5,6,7,8,9"; +w["1"]="0,1,2,3,4,5,7,9"; +w["10"]="4"; +w["1990s"]="6"; +w["2"]="0,1,3,5,6,7,8,9"; +w["2011"]="4"; +w["3"]="0,1,4,7"; +w["30-120"]="6"; +w["3d"]="6"; +w["4"]="0,8"; +w["5"]="0,9"; +w["500"]="6"; +w["abl"]="7,9"; +w["abstract"]="6,9"; +w["acceler"]="6"; +w["access"]="7"; +w["accomplish"]="5"; +w["achiev"]="6"; +w["action"]="5"; +w["adapt"]="6"; +w["add"]="1,5,8"; +w["addit"]="5,6,8"; +w["adher"]="5"; +w["after"]="6,8"; +w["aim"]="6"; +w["all"]="5,6,7,9"; +w["allow"]="1,5,6,7,8"; +w["also"]="5,6"; +w["alter"]="5"; +w["alway"]="5,7"; +w["and"]="0,1,2,3,5,6,7,8,9"; +w["anoth"]="5,6,7,8"; +w["any-scal"]="6"; +w["anyon"]="5,7"; +w["api"]="1,2,3,5,6,7,9"; +w["append"]="8"; +w["appl"]="6"; +w["applic"]="6,7,9"; +w["approv"]="6,7"; +w["arb"]="6"; +w["architectur"]="0,6"; +w["assum"]="2"; +w["ati"]="6"; +w["attribut"]="6"; +w["audienc"]="1,2"; +w["avail"]="5,7"; +w["away"]="6,9"; +w["backend"]="9"; +w["background"]="0,3"; +w["backward-compat"]="7"; +w["balanc"]="6,9"; +w["base"]="7"; +w["becaus"]="5,6,7"; +w["becom"]="5,7"; +w["been"]="6,8"; +w["below"]="7,9"; +w["benefit"]="3"; +w["between"]="0,6,7,9"; +w["beyond"]="5"; +w["board"]="6,7"; +w["borrow"]="6"; +w["both"]="7"; +w["bottom-up"]="7"; +w["box"]="9"; +w["brief"]="3"; +w["briefli"]="3"; +w["bring"]="7"; +w["brought"]="7"; +w["bump"]="7"; +w["but"]="5"; +w["c"]="6"; +w["can"]="3,5,7,9"; +w["capabl"]="1,5,8,9"; +w["care"]="5"; +w["case"]="7,8"; +w["central"]="7"; +w["challeng"]="6"; +w["chang"]="1,4,5,6,7"; +w["chapter"]="0,1,3"; +w["charg"]="9"; +w["clash"]="5"; +w["clear"]="5"; +w["client"]="1,5,7,8,9"; +w["close"]="7"; +w["cloud"]="6"; +w["code"]="5"; +w["come"]="5"; +w["comment"]="0,1,2,3,4,5,6,7,8,9"; +w["commerci"]="7"; +w["common"]="6,7,9"; +w["communic"]="9"; +w["communiti"]="7"; +w["compat"]="1,5,7"; +w["compet"]="6"; +w["competit"]="6"; +w["complet"]="7"; +w["comput"]="2,7"; +w["concept"]="0"; +w["conform"]="6"; +w["consent"]="7"; +w["consid"]="1,6"; +w["consum"]="1,2,3"; +w["contain"]="9"; +w["content"]="0,1"; +w["continu"]="5,7"; +w["control"]="6,7,8"; +w["core"]="5,6,7,9"; +w["could"]="5,6"; +w["cours"]="6"; +w["creat"]="5,6,7,8,9"; +w["critic"]="9"; +w["cross-platform"]="6,9"; +w["custom"]="6"; +w["data"]="2"; +w["date"]="4"; +w["deal"]="7"; +w["decentr"]="7"; +w["decid"]="7,8"; +w["defin"]="0,5,6,7"; +w["depend"]="5,8"; +w["deploy"]="7,9"; +w["describ"]="0,1,3,6"; +w["design"]="6"; +w["destin"]="7"; +w["detail"]="1,7"; +w["detect"]="5,6,7"; +w["develop"]="1,2,5,6,7,8"; +w["differ"]="0,5,6,7,8,9"; +w["differenti"]="6"; +w["direct"]="6"; +w["discourag"]="8"; +w["disqus"]="0,1,2,3,4,5,6,7,8,9"; +w["distinct"]="5,9"; +w["do"]="9"; +w["document"]="1,2,3,4,6"; +w["don"]="5"; +w["draft"]="0,1,2,3,4,5,6,7,8,9"; +w["drastic"]="6"; +w["driver"]="9"; +w["each"]="7,9"; +w["effect"]="7"; +w["either"]="2"; +w["employ"]="9"; +w["enabl"]="0,1,2,3,4,5,6,7,8,9"; +w["end"]="5"; +w["endpoint"]="7"; +w["ensur"]="1,5,6,7"; +w["entireti"]="5"; +w["entiti"]="7"; +w["environ"]="6,9"; +w["equal"]="9"; +w["establish"]="6,8"; +w["etc"]="2,6"; +w["even"]="5,8"; +w["exampl"]="7,8,9"; +w["exist"]="1,5,8"; +w["expect"]="5"; +w["explain"]="7"; + diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-2.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-2.js new file mode 100644 index 0000000..55989b7 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-2.js @@ -0,0 +1,160 @@ +//Auto generated index for searching. +w["explicit"]="8"; +w["expos"]="9"; +w["extend"]="2"; +w["extens"]="0,1,3,5,6,7,8,9"; +w["face"]="6"; +w["fact"]="7"; +w["fashion"]="7"; +w["featur"]="1,3,5,6,7"; +w["figur"]="9"; +w["fill"]="9"; +w["final"]="6"; +w["first"]="5"; +w["follow"]="6"; +w["form"]="5"; +w["format"]="2"; +w["fragment"]="6"; +w["frame"]="6"; +w["free"]="5,7"; +w["frequent"]="7"; +w["frontend"]="9"; +w["function"]="1,5,6,7"; +w["furthermor"]="5"; +w["futur"]="3,5"; +w["gain"]="6"; +w["gap"]="9"; +w["garner"]="6"; +w["general"]="2,8"; +w["get"]="7"; +w["goal"]="6"; +w["good"]="8"; +w["govern"]="1,3"; +w["graphic"]="6"; +w["guard"]="7"; +w["guid"]="5"; +w["guidanc"]="1"; +w["hand"]="6"; +w["haproxi"]="9"; +w["hardwar"]="6"; +w["has"]="2,6,8"; +w["have"]="6,8"; +w["header"]="5"; +w["heavili"]="6"; +w["help"]="7"; +w["here"]="9"; +w["histori"]="1,4"; +w["host"]="6"; +w["howev"]="6,7,9"; +w["http"]="2"; +w["human-read"]="5"; +w["hypervisor"]="6"; +w["ibm"]="6"; +w["if"]="5,8"; +w["illustr"]="9"; +w["implement"]="2,3,5,7,8,9"; +w["implementor"]="1"; +w["import"]="5,6"; +w["includ"]="6,7"; +w["independ"]="6,8"; +w["individu"]="7"; +w["influenc"]="7"; +w["inform"]="0,3,7"; +w["infrastructur"]="6"; +w["infrequ"]="7"; +w["initi"]="4"; +w["innov"]="1,6"; +w["integ"]="8"; +w["intel"]="6"; +w["intend"]="1,2"; +w["interact"]="5,9"; +w["interpret"]="7"; +w["introduct"]="5"; +w["issu"]="7"; +w["it"]="5,8"; +w["itself"]="6,7"; +w["javascript"]="0,1,2,3,4,5,6,7,8,9"; +w["json"]="2"; +w["june"]="4"; +w["keep"]="8"; +w["key"]="6"; +w["kind"]="8"; +w["later"]="7"; +w["leader"]="7"; +w["least"]="2"; +w["legal"]="0,1,2,3,4,5,6,7,8,9"; +w["level"]="5"; +w["librari"]="6"; +w["licens"]="5"; +w["lifetim"]="6"; +w["load"]="6,9"; +w["machine-process"]="5"; +w["made"]="5"; +w["maintain"]="6,7"; +w["major"]="6"; +w["make"]="1,5"; +w["mani"]="6"; +w["manner"]="1,5,6,7"; +w["mark"]="6"; +w["market"]="7"; +w["may"]="1,5,7,8"; +w["mean"]="1,5,7"; +w["mechan"]="0,1,3,5,6,7,8"; +w["media-typ"]="5"; +w["meet"]="6"; +w["met"]="6"; +w["method"]="5,6"; +w["mime"]="5"; +w["minim"]="5,7"; +w["minor"]="7"; +w["model"]="6"; +w["modifi"]="7"; +w["more"]="6"; +w["move"]="7"; +w["multipl"]="5,9"; +w["must"]="5,7"; +w["name"]="8"; +w["natur"]="6"; +w["need"]="6"; +w["net"]="7"; +w["never"]="5"; +w["new"]="1,3,5,6,7,8"; +w["next"]="7"; +w["nich"]="6,7"; +w["no"]="8"; +w["nonetheless"]="8"; +w["normal"]="5"; +w["not"]="7,9"; +w["note"]="5,7"; +w["notic"]="0,1,2,3,4,5,6,7,8,9"; +w["now"]="6"; +w["nvidia"]="6"; +w["object"]="2"; +w["offer"]="7,9"; +w["often"]="6"; +w["onc"]="7"; +w["one"]="2,5,6,7,8,9"; +w["onli"]="5,7,9"; +w["open"]="6"; +w["opengl"]="0,6"; +w["openstack"]="0,1,2,3,5,6,7,9"; +w["openstack-compat"]="5"; +w["oper"]="1"; +w["order"]="5,6,9"; +w["organ"]="1,3"; +w["origin"]="6,8"; +w["other"]="6,7,8"; +w["out"]="9"; +w["overview"]="1,3"; +w["own"]="6"; +w["paramet"]="5"; +w["part"]="5,6"; +w["parti"]="7"; +w["particip"]="6"; +w["particular"]="7,8"; +w["path"]="5,6"; +w["per"]="6"; +w["perform"]="6"; +w["perspect"]="7"; +w["platform"]="6,7"; + diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-3.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-3.js new file mode 100644 index 0000000..dcb88a9 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/index-3.js @@ -0,0 +1,158 @@ +//Auto generated index for searching. +w["play"]="9"; +w["pleas"]="0,1,2,3,4,5,6,7,8,9"; +w["plug-in"]="9"; +w["pluggabl"]="0,9"; +w["polici"]="6,7"; +w["portabl"]="6"; +w["possibl"]="1,5,8"; +w["pound"]="9"; +w["power"]="0,1,2,3,4,5,6,7,8,9"; +w["prb"]="7"; +w["presenc"]="5"; +w["present"]="6"; +w["previous"]="8"; +w["problem"]="6"; +w["process"]="1,3,5,6"; +w["produc"]="6"; +w["project"]="7"; +w["promot"]="1,3,5,6,7"; +w["proven"]="6"; +w["provid"]="0,1,3,6,7,8,9"; +w["queryabl"]="7"; +w["quick"]="7"; +w["quit"]="5"; +w["rare"]="7"; +w["rax-pi"]="8"; +w["rax-pie2"]="8"; +w["reader"]="2"; +w["real"]="6"; +w["real-tim"]="6"; +w["realiti"]="7"; +w["recommend"]="8"; +w["relat"]="0,7"; +w["relationship"]="0,6,8"; +w["releas"]="5,6,8"; +w["reli"]="5"; +w["remain"]="5,6,7"; +w["request"]="7,9"; +w["requir"]="5,6,7"; +w["resourc"]="5,7"; +w["respons"]="6,7,9"; +w["rest"]="2,3,6"; +w["result"]="6"; +w["return"]="7"; +w["review"]="6,7"; +w["revis"]="3,4"; +w["role"]="9"; +w["rule"]="1,5"; +w["run"]="6,7"; +w["s"]="5,6,7"; +w["said"]="7,8"; +w["same"]="5,6"; +w["second"]="6"; +w["see"]="7"; +w["sens"]="9"; +w["serial"]="2"; +w["servic"]="2,9"; +w["set"]="7,9"; +w["sever"]="6,7"; +w["sgi"]="6"; +w["shader"]="6"; +w["share"]="6"; +w["shift"]="6"; +w["should"]="5,7,8,9"; +w["signifi"]="8"; +w["signific"]="7"; +w["silicon"]="6"; +w["similar"]="6,7"; +w["simpli"]="8"; +w["simultan"]="7"; +w["sinc"]="6,7"; +w["so"]="5,9"; +w["softwar"]="2,7,9"; +w["solv"]="6"; +w["some"]="7"; +w["spec"]="7"; +w["special"]="5,7"; +w["specif"]="3,5,6,9"; +w["specifi"]="7"; +w["speed"]="6"; +w["stabil"]="7"; +w["stabl"]="6,7"; +w["standard"]="5,6,7"; +w["state"]="5"; +w["storag"]="2"; +w["strategi"]="6"; +w["strict"]="5,7"; +w["strive"]="8,9"; +w["success"]="6"; +w["such"]="5,6,7"; +w["summar"]="3,7"; +w["summari"]="4"; +w["support"]="5,6,7,8,9"; +w["t"]="5"; +w["tabl"]="7"; +w["taken"]="5"; +w["team"]="7"; +w["test"]="6"; +w["than"]="6"; +w["their"]="1,6,9"; +w["them"]="5,6"; +w["themselv"]="5,6"; +w["there"]="5,6,8"; +w["therefor"]="7"; +w["these"]="5,6,7,8,9"; +w["they"]="6,7,9"; +w["think"]="9"; +w["third"]="7"; +w["those"]="5,9"; +w["thus"]="6,7"; +w["time"]="6"; +w["togeth"]="5"; +w["translat"]="9"; +w["two"]="5,6"; +w["type"]="5"; +w["ubiquit"]="6"; +w["unclutt"]="6"; +w["under"]="5,6,8"; +w["understand"]="2"; +w["unifi"]="6"; +w["uniqu"]="9"; +w["unless"]="7"; +w["upcom"]="1"; +w["updat"]="8"; +w["upon"]="5"; +w["url"]="7"; +w["use"]="1,3,5,8"; +w["user"]="6"; +w["usual"]="5,7"; +w["util"]="9"; +w["v1"]="7"; +w["vari"]="6"; +w["vendor"]="1,6,7,8,9"; +w["veri"]="6"; +w["version"]="0,1,5,7,8"; +w["versus"]="6,7"; +w["vertex"]="6"; +w["via"]="5,6"; +w["view"]="0,1,2,3,4,5,6,7,8,9"; +w["vital"]="0"; +w["wadl"]="5"; +w["way"]="6,7"; +w["web"]="2"; +w["were"]="5,6"; +w["whether"]="9"; +w["whi"]="0"; +w["which"]="1,3,5,6,7,8,9"; +w["while"]="5,6"; +w["wish"]="2"; +w["without"]="7,9"; +w["word"]="7"; +w["work"]="5"; +w["worri"]="9"; +w["would"]="5,6"; +w["write"]="6"; +w["written"]="5"; +w["xml"]="2"; + diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/ja-jp.props b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/ja-jp.props new file mode 100644 index 0000000..2756805 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/ja-jp.props @@ -0,0 +1 @@ +J01=\\u306B \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/nwSearchFnt.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/nwSearchFnt.js new file mode 100644 index 0000000..4d40ba5 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/nwSearchFnt.js @@ -0,0 +1,517 @@ +/*---------------------------------------------------------------------------- + * JavaScript for webhelp search + *---------------------------------------------------------------------------- + This file is part of the webhelpsearch plugin for DocBook WebHelp + Copyright (c) 2007-2008 NexWave Solutions All Rights Reserved. + www.nexwave.biz Nadege Quaine + http://kasunbg.blogspot.com/ Kasun Gajasinghe + */ + +//string initialization +var htmlfileList = "htmlFileList.js"; +var htmlfileinfoList = "htmlFileInfoList.js"; +var useCJKTokenizing = false; + +/* Cette fonction verifie la validite de la recherche entrre par l utilisateur */ +function Verifie(ditaSearch_Form) { + + // Check browser compatibitily + if (navigator.userAgent.indexOf("Konquerer") > -1) { + + alert(txt_browser_not_supported); + return; + } + + + var expressionInput = document.ditaSearch_Form.textToSearch.value.replace(/,/g,''); + //Set a cookie to store the searched keywords + $.cookie('textToSearch', expressionInput); + + + if (expressionInput.length < 1) { + + // expression is invalid + alert(txt_enter_at_least_1_char); + // reactive la fenetre de search (utile car cadres) + document.ditaSearch_Form.textToSearch.focus(); + } + else { + + // Effectuer la recherche + Effectuer_recherche(expressionInput); + + //Track with Google Analytics: + _gaq.push(['_trackEvent', 'Search', expressionInput, 'null', 1]); + + + // reactive la fenetre de search (utile car cadres) + document.ditaSearch_Form.textToSearch.focus(); + } +} + +var stemQueryMap = new Array(); // A hashtable which maps stems to query words + +/* This function parses the search expression, loads the indices and displays the results*/ +function Effectuer_recherche(expressionInput) { + + /* Display a waiting message */ + //DisplayWaitingMessage(); + + /*data initialisation*/ + var searchFor = ""; // expression en lowercase et sans les caracte res speciaux + //w = new Object(); // hashtable, key=word, value = list of the index of the html files + scriptLetterTab = new Scriptfirstchar(); // Array containing the first letter of each word to look for + var wordsList = new Array(); // Array with the words to look for + var finalWordsList = new Array(); // Array with the words to look for after removing spaces + var linkTab = new Array(); + var fileAndWordList = new Array(); + var txt_wordsnotfound = ""; + + + /*nqu: expressionInput, la recherche est lower cased, plus remplacement des char speciaux*/ + searchFor = expressionInput.toLowerCase().replace(/<\//g, "_st_").replace(/\$_/g, "_di_").replace(/\.|%2C|%3B|%21|%3A|@|\/|\*/g, " ").replace(/(%20)+/g, " ").replace(/_st_/g, "= 0; i--) { + if (fileAndWordList[i] != undefined) { + linkTab.push("

      " + txt_results_for + " " + "" + fileAndWordList[i][0].motslisteDisplay + "" + "

      "); + + linkTab.push("
        "); + for (t in fileAndWordList[i]) { + //DEBUG: alert(": "+ fileAndWordList[i][t].filenb+" " +fileAndWordList[i][t].motsliste); + //linkTab.push("
      • "+fl[fileAndWordList[i][t].filenb]+"
      • "); + var tempInfo = fil[fileAndWordList[i][t].filenb]; + var pos1 = tempInfo.indexOf("@@@"); + var pos2 = tempInfo.lastIndexOf("@@@"); + var tempPath = tempInfo.substring(0, pos1); + var tempTitle = tempInfo.substring(pos1 + 3, pos2); + var tempShortdesc = tempInfo.substring(pos2 + 3, tempInfo.length); + + //file:///home/kasun/docbook/WEBHELP/webhelp-draft-output-format-idea/src/main/resources/web/webhelp/installation.html + var linkString = "
      • " + tempTitle + ""; + // var linkString = "
      • " + tempTitle + ""; + if ((tempShortdesc != "null")) { + linkString += "\n
        " + tempShortdesc + "
        "; + } + linkString += "
      • "; + linkTab.push(linkString); + } + linkTab.push("
      "); + } + } + } + + var results = ""; + if (linkTab.length > 0) { + /*writeln ("

      " + txt_results_for + " " + "" + cleanwordsList + "" + "
      "+"

      ");*/ + results = "

      "; + //write("

        "); + for (t in linkTab) { + results += linkTab[t].toString(); + } + results += "

        "; + } else { + results = "

        " + "Your search returned no results for " + "" + txt_wordsnotfound + "" + "

        "; + } + //alert(results); + document.getElementById('searchResults').innerHTML = results; +} + +function tokenize(wordsList){ + var stemmedWordsList = new Array(); // Array with the words to look for after removing spaces + var cleanwordsList = new Array(); // Array with the words to look for + for(var j in wordsList){ + var word = wordsList[j]; + if(typeof stemmer != "undefined" ){ + stemQueryMap[stemmer(word)] = word; + } else { + stemQueryMap[word] = word; + } + } + //stemmedWordsList is the stemmed list of words separated by spaces. + for (var t in wordsList) { + wordsList[t] = wordsList[t].replace(/(%22)|^-/g, ""); + if (wordsList[t] != "%20") { + scriptLetterTab.add(wordsList[t].charAt(0)); + cleanwordsList.push(wordsList[t]); + } + } + + if(typeof stemmer != "undefined" ){ + //Do the stemming using Porter's stemming algorithm + for (var i = 0; i < cleanwordsList.length; i++) { + var stemWord = stemmer(cleanwordsList[i]); + stemmedWordsList.push(stemWord); + } + } else { + stemmedWordsList = cleanwordsList; + } + return stemmedWordsList; +} + +//Invoker of CJKTokenizer class methods. +function cjkTokenize(wordsList){ + var allTokens= new Array(); + var notCJKTokens= new Array(); + var j=0; + for(j=0;j"; + return this.input.substring(this.offset,this.offset+2); + } + + function getAllTokens(){ + while(this.incrementToken()){ + var tmp = this.tokenize(); + this.tokens.push(tmp); + } + return this.unique(this.tokens); +// document.getElementById("content").innerHTML += tokens+" "; +// document.getElementById("content").innerHTML += "
        dada"+sortedTokens+" "; +// console.log(tokens.length+"dsdsds"); + /*for(i=0;i t2.length) { + return 1; + } else { + return -1; + } + //return t1.length - t2.length); +} \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/punctuation.props b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/punctuation.props new file mode 100644 index 0000000..d3e3fcd --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/punctuation.props @@ -0,0 +1,31 @@ +Punct01=\\u3002 +Punct02=\\u3003 +Punct03=\\u300C +Punct04=\\u300D +Punct05=\\u300E +Punct06=\\u300F +Punct07=\\u301D +Punct08=\\u301E +Punct09=\\u301F +Punct10=\\u309B +Punct11=\\u2018 +Punct12=\\u2019 +Punct13=\\u201A +Punct14=\\u201C +Punct15=\\u201D +Punct16=\\u201E +Punct17=\\u2032 +Punct18=\\u2033 +Punct19=\\u2035 +Punct20=\\u2039 +Punct21=\\u203A +Punct22=\\u201E +Punct23=\\u00BB +Punct24=\\u00AB +Punct25=© +Punct26=’ +Punct27=\\u00A0 +Punct28=\\u2014 + + + diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/de_stemmer.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/de_stemmer.js new file mode 100644 index 0000000..7ff3822 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/de_stemmer.js @@ -0,0 +1,247 @@ +/* + * Author: Joder Illi + * + * Copyright (c) 2010, FormBlitz AG + * All rights reserved. + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/german/stemmer.html + * Copyright of the algorithm is: Copyright (c) 2001, Dr Martin Porter and can be found at http://snowball.tartarus.org/license.php + * + * Redistribution and use in source and binary forms, with or without modification, is covered by the standard BSD license. + * + */ + +//var stemmer = function Stemmer() { + /* + German includes the following accented forms, + ä ö ü + and a special letter, ß, equivalent to double s. + The following letters are vowels: + a e i o u y ä ö ü + */ + + var stemmer = function(word) { + /* + Put u and y between vowels into upper case + */ + word = word.replace(/([aeiouyäöü])u([aeiouyäöü])/g, '$1U$2'); + word = word.replace(/([aeiouyäöü])y([aeiouyäöü])/g, '$1Y$2'); + + /* + and then do the following mappings, + (a) replace ß with ss, + (a) replace ae with ä, Not doing these, have trouble with diphtongs + (a) replace oe with ö, Not doing these, have trouble with diphtongs + (a) replace ue with ü unless preceded by q. Not doing these, have trouble with diphtongs + So in quelle, ue is not mapped to ü because it follows q, and in feuer it is not mapped because the first part of the rule changes it to feUer, so the u is not found. + */ + word = word.replace(/ß/g, 'ss'); + //word = word.replace(/ae/g, 'ä'); + //word = word.replace(/oe/g, 'ö'); + //word = word.replace(/([^q])ue/g, '$1ü'); + + /* + R1 and R2 are first set up in the standard way (see the note on R1 and R2), but then R1 is adjusted so that the region before it contains at least 3 letters. + R1 is the region after the first non-vowel following a vowel, or is the null region at the end of the word if there is no such non-vowel. + R2 is the region after the first non-vowel following a vowel in R1, or is the null region at the end of the word if there is no such non-vowel. + */ + + var r1Index = word.search(/[aeiouyäöü][^aeiouyäöü]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } + + var r2Index = -1; + var r2 = ''; + + if (r1Index != -1) { + var r2Index = r1.search(/[aeiouyäöü][^aeiouyäöü]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + } + } + + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Define a valid s-ending as one of b, d, f, g, h, k, l, m, n, r or t. + Define a valid st-ending as the same list, excluding letter r. + */ + + /* + Do each of steps 1, 2 and 3. + */ + + /* + Step 1: + Search for the longest among the following suffixes, + (a) em ern er + (b) e en es + (c) s (preceded by a valid s-ending) + */ + var a1Index = word.search(/(em|ern|er)$/g); + var b1Index = word.search(/(e|en|es)$/g); + var c1Index = word.search(/([bdfghklmnrt]s)$/g); + if (c1Index != -1) { + c1Index++; + } + var index1 = 10000; + var optionUsed1 = ''; + if (a1Index != -1 && a1Index < index1) { + optionUsed1 = 'a'; + index1 = a1Index; + } + if (b1Index != -1 && b1Index < index1) { + optionUsed1 = 'b'; + index1 = b1Index; + } + if (c1Index != -1 && c1Index < index1) { + optionUsed1 = 'c'; + index1 = c1Index; + } + + /* + and delete if in R1. (Of course the letter of the valid s-ending is not necessarily in R1.) If an ending of group (b) is deleted, and the ending is preceded by niss, delete the final s. + (For example, äckern -> äck, ackers -> acker, armes -> arm, bedürfnissen -> bedürfnis) + */ + + if (index1 != 10000 && r1Index != -1) { + if (index1 >= r1Index) { + word = word.substring(0, index1); + if (optionUsed1 == 'b') { + if (word.search(/niss$/) != -1) { + word = word.substring(0, word.length -1); + } + } + } + } + /* + Step 2: + Search for the longest among the following suffixes, + (a) en er est + (b) st (preceded by a valid st-ending, itself preceded by at least 3 letters) + */ + + var a2Index = word.search(/(en|er|est)$/g); + var b2Index = word.search(/(.{3}[bdfghklmnt]st)$/g); + if (b2Index != -1) { + b2Index += 4; + } + + var index2 = 10000; + var optionUsed2 = ''; + if (a2Index != -1 && a2Index < index2) { + optionUsed2 = 'a'; + index2 = a2Index; + } + if (b2Index != -1 && b2Index < index2) { + optionUsed2 = 'b'; + index2 = b2Index; + } + + /* + and delete if in R1. + (For example, derbsten -> derbst by step 1, and derbst -> derb by step 2, since b is a valid st-ending, and is preceded by just 3 letters) + */ + + if (index2 != 10000 && r1Index != -1) { + if (index2 >= r1Index) { + word = word.substring(0, index2); + } + } + + /* + Step 3: d-suffixes (*) + Search for the longest among the following suffixes, and perform the action indicated. + end ung + delete if in R2 + if preceded by ig, delete if in R2 and not preceded by e + ig ik isch + delete if in R2 and not preceded by e + lich heit + delete if in R2 + if preceded by er or en, delete if in R1 + keit + delete if in R2 + if preceded by lich or ig, delete if in R2 + */ + + var a3Index = word.search(/(end|ung)$/g); + var b3Index = word.search(/[^e](ig|ik|isch)$/g); + var c3Index = word.search(/(lich|heit)$/g); + var d3Index = word.search(/(keit)$/g); + if (b3Index != -1) { + b3Index ++; + } + + var index3 = 10000; + var optionUsed3 = ''; + if (a3Index != -1 && a3Index < index3) { + optionUsed3 = 'a'; + index3 = a3Index; + } + if (b3Index != -1 && b3Index < index3) { + optionUsed3 = 'b'; + index3 = b3Index; + } + if (c3Index != -1 && c3Index < index3) { + optionUsed3 = 'c'; + index3 = c3Index; + } + if (d3Index != -1 && d3Index < index3) { + optionUsed3 = 'd'; + index3 = d3Index; + } + + if (index3 != 10000 && r2Index != -1) { + if (index3 >= r2Index) { + word = word.substring(0, index3); + var optionIndex = -1; + var optionSubsrt = ''; + if (optionUsed3 == 'a') { + optionIndex = word.search(/[^e](ig)$/); + if (optionIndex != -1) { + optionIndex++; + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'c') { + optionIndex = word.search(/(er|en)$/); + if (optionIndex != -1) { + if (optionIndex >= r1Index) { + word = word.substring(0, optionIndex); + } + } + } else if (optionUsed3 == 'd') { + optionIndex = word.search(/(lich|ig)$/); + if (optionIndex != -1) { + if (optionIndex >= r2Index) { + word = word.substring(0, optionIndex); + } + } + } + } + } + + /* + Finally, + turn U and Y back into lower case, and remove the umlaut accent from a, o and u. + */ + word = word.replace(/U/g, 'u'); + word = word.replace(/Y/g, 'y'); + word = word.replace(/ä/g, 'a'); + word = word.replace(/ö/g, 'o'); + word = word.replace(/ü/g, 'u'); + + return word; + }; +//} \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/en_stemmer.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/en_stemmer.js new file mode 100644 index 0000000..f58012f --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/en_stemmer.js @@ -0,0 +1,187 @@ +// Porter stemmer in Javascript. Few comments, but it's easy to follow against the rules in the original +// paper, in +// +// Porter, 1980, An algorithm for suffix stripping, Program, Vol. 14, +// no. 3, pp 130-137, +// +// see also http://www.tartarus.org/~martin/PorterStemmer + +// Release 1 be 'andargor', Jul 2004 +// Release 2 (substantially revised) by Christopher McKenzie, Aug 2009 + + +var stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + return function (w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4, + origword = w; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = /.$/; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) { w = stem + "i"; } + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + return w; + } +})(); \ No newline at end of file diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/fr_stemmer.js b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/fr_stemmer.js new file mode 100644 index 0000000..34f9743 --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/content/search/stemmers/fr_stemmer.js @@ -0,0 +1,299 @@ +/* + * Author: Kasun Gajasinghe + * E-Mail: kasunbg AT gmail DOT com + * Date: 09.08.2010 + * + * usage: stemmer(word); + * ex: var stem = stemmer(foobar); + * Implementation of the stemming algorithm from http://snowball.tartarus.org/algorithms/french/stemmer.html + * + * LICENSE: + * + * Copyright (c) 2010, Kasun Gajasinghe. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * + * THIS SOFTWARE IS PROVIDED BY KASUN GAJASINGHE ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KASUN GAJASINGHE BE LIABLE FOR ANY DIRECT, + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE + * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +var stemmer = function(word){ +// Letters in French include the following accented forms, +// â à ç ë é ê è ï î ô û ù +// The following letters are vowels: +// a e i o u y â à ë é ê è ï î ô û ù + + word = word.toLowerCase(); + var oriWord = word; + word = word.replace(/qu/g, 'qU'); //have to perform first, as after the operation, capital U is not treated as a vowel + word = word.replace(/([aeiouyâàëéêèïîôûù])u([aeiouyâàëéêèïîôûù])/g, '$1U$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])i([aeiouyâàëéêèïîôûù])/g, '$1I$2'); + word = word.replace(/([aeiouyâàëéêèïîôûù])y/g, '$1Y'); + word = word.replace(/y([aeiouyâàëéêèïîôûù])/g, 'Y$1'); + + var rv=''; + var rvIndex = -1; + if(word.search(/^(par|col|tap)/) != -1 || word.search(/^[aeiouyâàëéêèïîôûù]{2}/) != -1){ + rv = word.substring(3); + rvIndex = 3; + } else { + rvIndex = word.substring(1).search(/[aeiouyâàëéêèïîôûù]/); + if(rvIndex != -1){ + rvIndex +=2; //+2 is to supplement the substring(1) used to find rvIndex + rv = word.substring(rvIndex); + } else { + rvIndex = word.length; + } + } + +// R1 is the region after the first non-vowel following a vowel, or the end of the word if there is no such non-vowel. +// R2 is the region after the first non-vowel following a vowel in R1, or the end of the word if there is no such non-vowel + var r1Index = word.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + var r1 = ''; + if (r1Index != -1) { + r1Index += 2; + r1 = word.substring(r1Index); + } else { + r1Index = word.length; + } + + var r2Index = -1; + var r2 = ''; + if (r1Index != -1) { + r2Index = r1.search(/[aeiouyâàëéêèïîôûù][^aeiouyâàëéêèïîôûù]/); + if (r2Index != -1) { + r2Index += 2; + r2 = r1.substring(r2Index); + r2Index += r1Index; + } else { + r2 = ''; + r2Index = word.length; + } + } + if (r1Index != -1 && r1Index < 3) { + r1Index = 3; + r1 = word.substring(r1Index); + } + + /* + Step 1: Standard suffix removal + */ + var a1Index = word.search(/(ance|iqUe|isme|able|iste|eux|ances|iqUes|ismes|ables|istes)$/); + var a2Index = word.search(/(atrice|ateur|ation|atrices|ateurs|ations)$/); + var a3Index = word.search(/(logie|logies)$/); + var a4Index = word.search(/(usion|ution|usions|utions)$/); + var a5Index = word.search(/(ence|ences)$/); + var a6Index = word.search(/(ement|ements)$/); + var a7Index = word.search(/(ité|ités)$/); + var a8Index = word.search(/(if|ive|ifs|ives)$/); + var a9Index = word.search(/(eaux)$/); + var a10Index = word.search(/(aux)$/); + var a11Index = word.search(/(euse|euses)$/); + var a12Index = word.search(/[^aeiouyâàëéêèïîôûù](issement|issements)$/); + var a13Index = word.search(/(amment)$/); + var a14Index = word.search(/(emment)$/); + var a15Index = word.search(/[aeiouyâàëéêèïîôûù](ment|ments)$/); + + if(a1Index != -1 && a1Index >= r2Index){ + word = word.substring(0,a1Index); + } else if(a2Index != -1 && a2Index >= r2Index){ + word = word.substring(0,a2Index); + var a2Index2 = word.search(/(ic)$/); + if(a2Index2 != -1 && a2Index2 >= r2Index){ + word = word.substring(0, a2Index2); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(a3Index != -1 && a3Index >= r2Index){ + word = word.replace(/(logie|logies)$/,'log'); //replace with log if in R2 + } else if(a4Index != -1 && a4Index >= r2Index){ + word = word.replace(/(usion|ution|usions|utions)$/,'u'); //replace with u if in R2 + } else if(a5Index != -1 && a5Index >= r2Index){ + word = word.replace(/(ence|ences)$/,'ent'); //replace with ent if in R2 + } else if(a6Index != -1 && a6Index >= rvIndex){ + word = word.substring(0,a6Index); + if(word.search(/(iv)$/) >= r2Index){ + word = word.replace(/(iv)$/, ''); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + } + } else if(word.search(/(eus)$/) != -1){ + var a6Index2 = word.search(/(eus)$/); + if(a6Index2 >=r2Index){ + word = word.substring(0, a6Index2); + } else if(a6Index2 >= r1Index){ + word = word.substring(0,a6Index2)+"eux"; + } + } else if(word.search(/(abl|iqU)$/) >= r2Index){ + word = word.replace(/(abl|iqU)$/,''); //if preceded by abl or iqU, delete if in R2, + } else if(word.search(/(ièr|Ièr)$/) >= rvIndex){ + word = word.replace(/(ièr|Ièr)$/,'i'); //if preceded by abl or iqU, delete if in R2, + } + } else if(a7Index != -1 && a7Index >= r2Index){ + word = word.substring(0,a7Index); //delete if in R2 + if(word.search(/(abil)$/) != -1){ //if preceded by abil, delete if in R2, else replace by abl, otherwise, + var a7Index2 = word.search(/(abil)$/); + if(a7Index2 >=r2Index){ + word = word.substring(0, a7Index2); + } else { + word = word.substring(0,a7Index2)+"abl"; + } + } else if(word.search(/(ic)$/) != -1){ + var a7Index3 = word.search(/(ic)$/); + if(a7Index3 != -1 && a7Index3 >= r2Index){ + word = word.substring(0, a7Index3); //if preceded by ic, delete if in R2, + } else { //else replace by iqU + word = word.replace(/(ic)$/,'iqU'); + } + } else if(word.search(/(iv)$/) != r2Index){ + word = word.replace(/(iv)$/,''); + } + } else if(a8Index != -1 && a8Index >= r2Index){ + word = word.substring(0,a8Index); + if(word.search(/(at)$/) >= r2Index){ + word = word.replace(/(at)$/, ''); + if(word.search(/(ic)$/) >= r2Index){ + word = word.replace(/(ic)$/, ''); + } else { word = word.replace(/(ic)$/, 'iqU'); } + } + } else if(a9Index != -1){ word = word.replace(/(eaux)/,'eau') + } else if(a10Index >= r1Index){ word = word.replace(/(aux)/,'al') + } else if(a11Index != -1 ){ + var a11Index2 = word.search(/(euse|euses)$/); + if(a11Index2 >=r2Index){ + word = word.substring(0, a11Index2); + } else if(a11Index2 >= r1Index){ + word = word.substring(0, a11Index2)+"eux"; + } + } else if(a12Index!=-1 && a12Index>=r1Index){ + word = word.substring(0,a12Index+1); //+1- amendment to non-vowel + } else if(a13Index!=-1 && a13Index>=rvIndex){ + word = word.replace(/(amment)$/,'ant'); + } else if(a14Index!=-1 && a14Index>=rvIndex){ + word = word.replace(/(emment)$/,'ent'); + } else if(a15Index!=-1 && a15Index>=rvIndex){ + word = word.substring(0,a15Index+1); + } + + /* Step 2a: Verb suffixes beginning i*/ + var wordStep1 = word; + var step2aDone = false; + if(oriWord == word.toLowerCase() || oriWord.search(/(amment|emment|ment|ments)$/) != -1){ + step2aDone = true; + var b1Regex = /([^aeiouyâàëéêèïîôûù])(îmes|ît|îtes|i|ie|ies|ir|ira|irai|iraIent|irais|irait|iras|irent|irez|iriez|irions|irons|iront|is|issaIent|issais|issait|issant|issante|issantes|issants|isse|issent|isses|issez|issiez|issions|issons|it)$/i; + if(word.search(b1Regex) >= rvIndex){ + word = word.replace(b1Regex,'$1'); + } + } + + /* Step 2b: Other verb suffixes*/ + if (step2aDone && wordStep1 == word) { + if (word.search(/(ions)$/) >= r2Index) { + word = word.replace(/(ions)$/, ''); + } else { + var b2Regex = /(é|ée|ées|és|èrent|er|era|erai|eraIent|erais|erait|eras|erez|eriez|erions|erons|eront|ez|iez)$/i; + if (word.search(b2Regex) >= rvIndex) { + word = word.replace(b2Regex, ''); + } else { + var b3Regex = /e(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex) >= rvIndex) { + word = word.replace(b3Regex, ''); + } else { + var b3Regex2 = /(âmes|ât|âtes|a|ai|aIent|ais|ait|ant|ante|antes|ants|as|asse|assent|asses|assiez|assions)$/i; + if (word.search(b3Regex2) >= rvIndex) { + word = word.replace(b3Regex2, ''); + } + } + } + } + } + + if(oriWord != word.toLowerCase()){ + /* Step 3 */ + var rep = ''; + if(word.search(/Y$/) != -1) { + word = word.replace(/Y$/, 'i'); + } else if(word.search(/ç$/) != -1){ + word = word.replace(/ç$/, 'c'); + } + } else { + /* Step 4 */ + //If the word ends s, not preceded by a, i, o, u, è or s, delete it. + if (word.search(/([^aiouès])s$/) >= rvIndex) { + word = word.replace(/([^aiouès])s$/, '$1'); + } + var e1Index = word.search(/ion$/); + if (e1Index >= r2Index && word.search(/[st]ion$/) >= rvIndex) { + word = word.substring(0, e1Index); + } else { + var e2Index = word.search(/(ier|ière|Ier|Ière)$/); + if (e2Index != -1 && e2Index >= rvIndex) { + word = word.substring(0, e2Index) + "i"; + } else { + if (word.search(/e$/) >= rvIndex) { + word = word.replace(/e$/, ''); //delete last e + } else if (word.search(/guë$/) >= rvIndex) { + word = word.replace(/guë$/, 'gu'); + } + } + } + } + + /* Step 5: Undouble */ + //word = word.replace(/(en|on|et|el|eil)(n|t|l)$/,'$1'); + word = word.replace(/(en|on)(n)$/,'$1'); + word = word.replace(/(ett)$/,'et'); + word = word.replace(/(el|eil)(l)$/,'$1'); + + /* Step 6: Un-accent */ + word = word.replace(/[éè]([^aeiouyâàëéêèïîôûù]+)$/,'e$1'); + word = word.toLowerCase(); + return word; +}; + +var eqOut = new Array(); +var noteqOut = new Array(); +var eqCount = 0; +/* +To test the stemming, create two arrays named "voc" and "COut" which are for vocabualary and the stemmed output. +Then add the vocabulary strings and output strings. This method will generate the stemmed output for "voc" and will +compare the output with COut. + (I used porter's voc and out files and did a regex to convert them to js objects. regex: /");\nvoc.push("/g . This + will add strings to voc array such that output would look like: voc.push("foobar"); ) drop me an email for any help. + */ +function testFr(){ + var start = new Date().getTime(); //execution time + eqCount = 0; + eqOut = new Array(); + noteqOut = new Array(); + for(var k=0;kHYMFl|oUQl>_suD^JebAf{;zoM zpU3Mr-!buFiTOOUjD-b}q{4{ij}^O-%->;@IvNcNGJW3fKk5XCUk95swY z;fBpViu^tC`IGo_&=?z;&0AmMa_!_Fd9$M$)LKayc?LIj?ro3Vqq9~)Z*F0>=LX5x zA)GutiHgc8xNpp$;odB4S&fX&+zeOFD2^PRh~*_@{aRBKL-YUQ%6W&v1OG2C6E2bc z*2)+xy)at)VX=E*b&!3U<;Nyx08ZBkL+8%U8^iv??_=xFE9i#7*2U;7T@XxUj~Y5b z_pMxLhg|)uHl*m<&^Iu}^3i{AZhjfm^z;%!6Y~fR&%x{ag6=0XxZgU7n(HCvRA~Uc L&mvil16JcFha9?* literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/figures/apix-1service-core-extensions-manybackends.png b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/figures/apix-1service-core-extensions-manybackends.png new file mode 100644 index 0000000000000000000000000000000000000000..ef56fb8d07f7dd32dff7eaeca55ef445e2426e47 GIT binary patch literal 16465 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 P2!x!JvSg9Cap3<0aFc;k literal 0 HcmV?d00001 diff --git a/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/index.html b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/index.html new file mode 100644 index 0000000..5e90b4b --- /dev/null +++ b/incubation/openstack-api-extensions/target/docbkx/webhelp/apix-intro-proposal/index.html @@ -0,0 +1,14 @@ + + + + + + + + OpenStack API Extensions  + + + If not automatically redirected, click here: content/ch01.html + + \ No newline at end of file diff --git a/openstack-compute-api-1.0/pom.xml b/openstack-compute-api-1.0/pom.xml new file mode 100644 index 0000000..e3dc548 --- /dev/null +++ b/openstack-compute-api-1.0/pom.xml @@ -0,0 +1,137 @@ + + + + 4.0.0 + + org.openstack.docs + openstack-guide + 1.0.0-SNAPSHOT + jar + OpenStack Guides + + + + + + Rackspace Research Repositories + + true + + + + rackspace-research + Rackspace Research Repository + http://maven.research.rackspacecloud.com/content/groups/public/ + + + + + rackspace-research + Rackspace Research Repository + http://maven.research.rackspacecloud.com/content/groups/public/ + + + + + + + + + target/docbkx/pdf + + **/*.fo + + + + + + + com.rackspace.cloud.api + clouddocs-maven-plugin + 1.0.5-SNAPSHOT + + + goal1 + + generate-pdf + + generate-sources + + false + + + + goal2 + + generate-webhelp + + generate-sources + + + 0 + openstackdocs + 1 + UA-17511903-6 + + appendix toc,title + article/appendix nop + article toc,title + book title,figure,table,example,equation + chapter toc,title + part toc,title + preface toc,title + qandadiv toc + qandaset toc + reference toc,title + set toc,title + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + src + + cs-devguide.xml + + reviewer + openstack + + + + + + diff --git a/openstack-compute-api-1.0/src/cs-devguide.xml b/openstack-compute-api-1.0/src/cs-devguide.xml new file mode 100644 index 0000000..72e7b6f --- /dev/null +++ b/openstack-compute-api-1.0/src/cs-devguide.xml @@ -0,0 +1,3289 @@ + + + + + + + + GET'> + PUT'> + POST'> + DELETE'> + + + + + + + + + '> + + + + + + + + + '> +]> + + OpenStack Compute Developer Guide API 1.0 + OpenStack Compute Dev Guide API 1.0 + + + + + + + + Rackspace Cloud + + + + 2009 + 2010 + 2011 + Rackspace US, Inc. + + API v1.0 + OpenStack™ Compute + 2011-01-21 + + + Copyright details are filled in by the template. + + + + This document is intended for software developers interested in developing + applications using the OpenStack Compute Application Programming Interface + (API). + + + this is a placeholder for the front cover + + + this is a placeholder for the back cover + OpenStack Compute API Operations Reference Summary + + Servers + + + + + Verb + URI + Description + + + + + &GET; + /servers + List servers + + + &GET; + /servers/detail + List servers details + + + &POST; + /servers + Create server + + + &GET; + /servers/id + List server details + + + &PUT; + /servers/id + Update server name/password + + + &DELETE; + /servers/id + Delete server + + + + + Server Addresses + + + + + Verb + URI + Description + + + + + &GET; + /servers/id/ips + List addresses + + + &GET; + /servers/id/ips/public + List public addresses + + + &GET; + /servers/id/ips/private + List private addresses + + + &PUT; + /servers/id/ips/public/address + Share an IP address + + + &DELETE; + /servers/id/ips/public/address + Unshare an IP address + + + + + Server Actions + + + + + Verb + URI + Description + + + + + &POST; + /servers/id/action + Initiate or confirm server action + + + + + Flavors + + + + + Verb + URI + Description + + + + + &GET; + /flavors + List flavors + + + &GET; + /flavors/detail + List flavors details + + + &GET; + /flavors/id + List flavor detail + + + + + Images + + + + + Verb + URI + Description + + + + + &GET; + /images + List images + + + &GET; + /images/detail + Get images details + + + &POST; + /images + Create image + + + &GET; + /images/id + List image details + + + &DELETE; + /images/id + Delete image + + + + + Backup Schedules + + + + + Verb + URI + Description + + + + + &GET; + /servers/id/backup_schedule + List backup schedules + + + &POST; + /servers/id/backup_schedule + Create/update backup schedule + + + &DELETE; + /servers/id/backup_schedule + Disable backup schedule + + + + + Shared IP Groups + + + + + Verb + URI + Description + + + + + &GET; + /shared_ip_groups + List shared IP groups + + + &GET; + /shared_ip_groups/detail + Get shared IP groups details + + + &POST; + /shared_ip_groups + Create shared IP group + + + &GET; + /shared_ip_groups/id + Get shared IP group details + + + &DELETE; + /shared_ip_groups/id + Delete shared IP group + + + + + + + Overview + + OpenStack Compute is a compute service that provides + server capacity in the cloud. Compute Servers come in + different flavors of memory, disk space, and CPU, and can + be provisioned in minutes. Interactions with Compute + Servers can occur programmatically via the OpenStack + Compute API. + + We welcome feedback, comments, and bug reports at bugs.launchpad.net/nova. + +
        + Intended Audience + This Guide is intended to assist software developers who want to develop + applications using the Rackspace Cloud Servers API. To use the information provided + here, you should first have a general understanding of the Rackspace Cloud Servers + service and have access to an active Rackspace Cloud Servers account. You should + also be familiar with: + + + ReSTful web services + + + HTTP/1.1 + + + JSON and/or XML data serialization formats + + +
        + +
        + Document Change History + This version of the Developer Guide replaces and + obsoletes all previous versions. The most recent changes + are described in the table below: + + + + Revision Date + Summary of Changes + + + + + Apr. 14, 2011 + + + + + Initial release. + + + + + + + +
        +
        + Additional Resources + You can download the most current version of this document from the OpenStack Docs + website at + http://docs.openstack.org. + For more details about the Cloud Servers service that this API is based upon, please refer to http://www.rackspacecloud.com/cloud_hosting_products/servers. Related + documents, including an API Language Binding Guide, are available at the same site, as are links + to Rackspace's official support channels, including knowledge base articles, forums, + phone, chat, and email. +
        + + +
        + + Concepts + To use the Cloud Servers API effectively, you should understand several key concepts: +
        + Server + + A server is a virtual machine instance in the Cloud + Servers system. Flavor and image are requisite + elements when creating a server. + +
        +
        + Flavor + + A flavor is an available hardware configuration for a + server. Each flavor has a unique combination of disk + space, memory capacity and priority for CPU time. + +
        +
        + Image + + An image is a collection of files used to create or + rebuild a server. Rackspace provides a number of + pre-built OS images by default. You may also create + custom images from cloud servers you have launched. + These custom images are useful for backup purposes or + for producing “gold†server images if you plan to + deploy a particular server configuration frequently. + +
        +
        + Backup Schedule + + A backup schedule can be defined to create server + images at regular intervals (daily and weekly). Backup + schedules are configurable per server. + +
        +
        + Reboot + + The reboot function allows for either a soft or hard + reboot of a server. With a soft reboot, the operating + system is signaled to restart, which allows for a + graceful shutdown of all processes. A hard reboot is + the equivalent of power cycling the server. + +
        +
        + Rebuild + + The rebuild function removes all data on the server + and replaces it with the specified image. Server ID + and IP addresses remain the same. + +
        +
        + Resize + + The resize function converts an existing server to a + different flavor, in essence, scaling the server up or + down. The original server is saved for a period of + time to allow rollback if there is a problem. All + resizes should be tested and explicitly confirmed, at + which time the original server is removed. All resizes + are automatically confirmed after 24 hours if they are + not confirmed or reverted. + +
        +
        + Shared IP Address + + Public IP addresses can be shared across multiple + servers for use in various high availability + scenarios. When an IP address is shared to another + server, the cloud network restrictions are modified to + allow each server to listen to and respond on that IP + address (you may optionally specify that the target + server network configuration be modified). Shared IP + addresses can be used with many standard heartbeat + facilities (e.g. keepalived) that monitor for failure + and manage IP failover. + +
        +
        + Shared IP Group + + A shared IP group is a collection of servers that can + share IPs with other members of the group. Any server + in a group can share one or more public IPs with any + other server in the group. With the exception of the + first server in a shared IP group, servers must be + launched into shared IP groups. A server may only be a + member of one shared IP group. + +
        +
        + + General API Information + The Cloud Servers API is implemented using a ReSTful web service interface. Like + other products in the Rackspace Cloud suite, Cloud Servers shares a common token + authentication system that allows seamless access between products and services. + + + All requests to authenticate and operate against Cloud + Servers are performed using SSL over HTTP (HTTPS) on + TCP port 443. + + +
        + Authentication + Each ReST request against the Cloud Servers system requires the inclusion of a + specific authorization token HTTP x-header, defined as X-Auth-Token. + Clients obtain this token, along with the Cloud Servers API URL, by first using the + Rackspace Cloud Authentication Service and supplying a valid username and API access + key. + The Rackspace Cloud Authentication Service is a ReSTful web service. It is + the entry point to all Rackspace Cloud APIs. + To access the Authentication Service, you must know whether your account is + US-based or UK-based: + + + + + US-based accounts authenticate through https://auth.api.rackspacecloud.com/v1.0. + + + + + UK-based accounts authenticate through https://lon.auth.api.rackspacecloud.com/v1.0. + + + + + Your account may be based in either the US or the UK; this is not determined + by your physical location but by the location of the Rackspace retail site which + was used to create your account: + + + + + If your account was + created via http://www.rackspacecloud.com, it is a US-based account. + + + + + If your account was + created via http:/www.rackspace.co.uk, it is a UK-based account. + + + + + If you are unsure how your account was created, use the Rackspace contact + information at either site to ask for help. + + + Request + + To authenticate, you must supply your username and API access key in x-headers: + + + + + + Use your Rackspace Cloud + username as the username for the API. Place it in the + X-Auth-User x-header. + + + + + Obtain your API access + key from the Rackspace Cloud Control Panel in the Your Account | + API Access section. Place it in the X-Auth-User + x-header. + + + + + + + Authentication Request (US-Based Account) + +GET /v1.0 HTTP/1.1 +Host: auth.api.rackspacecloud.com +X-Auth-User: jdoe +X-Auth-Key: a86850deb2742ec3cb41518e26aa2d89 + + + + + Response + The Cloud Servers API may return any of the HTTP/1.1 response codes defined + by + RFC-2616 Section 10. If authentication is successful, an HTTP status + 204 (No Content) is returned with three cloud + service headers, X-Server-Management-Url, + X-Storage-Url, X-CDN-Management-Url, as well as + X-Auth-Token. An HTTP status of 401 + (Unauthorized) is returned if authentication fails. All + operations against Cloud Servers should be performed against the URL specified + in X-Server-Management-Url (which is dynamic and subject to change) + and must include the X-Auth-Token header as noted above. The URLs + specified in X-Storage-Url and X-CDN-Management-Url + are specific to the Cloud Files product and may be ignored for purposes of + interacting with Cloud Servers. + + Authentication Response + +HTTP/1.1 204 No Content +Date: Mon, 12 Nov 2007 15:32:21 GMT +Server: Apache +X-Server-Management-Url: https://servers.api.rackspacecloud.com/v1.0/35428 +X-Storage-Url: https://storage.clouddrive.com/v1/CloudFS_9c83b-5ed4 +X-CDN-Management-Url: https://cdn.clouddrive.com/v1/CloudFS_9c83b-5ed4 +X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb +Content-Length: 0 +Content-Type: text/plain; charset=UTF-8 + + + + Authentication tokens are typically valid for 24 + hours. Applications should be designed to + re-authenticate after receiving a 401 + (Unauthorized) response. + + + Note that API operation URIs specified throughout this + document are relative, this is, they should be + appended to the end of the X-Server-Management-Url + that is returned from the authentication system. For + example, in the sample response above, you would list + servers by performing a &GET; against https://servers.api.rackspacecloud.com/v1.0/35428/servers. + + +
        + +
        + Request/Response Types + + The Cloud Servers API supports both the JSON and XML + data serialization formats. The request format is + specified using the Content-Type header + and is required for operations that have a request + body. The response format can be specified in + requests using either the Accept header + or adding an .xml or .json extension to the request + URI. Note that it is possible for a response to be + serialized using a format different from the request + (see example below). If no response format is + specified, JSON is the default. If conflicting + formats are specified using both an + Accept header and a query extension, the + query extension takes precedence. + + + + + + + + + + + + + + + + + + + + + + + + + +
        JSON and XML Response Formats
        FormatAccept HeaderQuery ExtensionDefault
        JSONapplication/json.jsonYes
        XMLapplication/xml.xmlNo
        + + Request with Headers: JSON + +POST /v1.0/214412/images HTTP/1.1 +Host: servers.api.rackspacecloud.com +Content-Type: application/json +Accept: application/xml +X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb + + +{ + "image" : { + "serverId" : 12, + "name" : "Just in case"} +} + + + + Response with Headers: XML + +HTTP/1.1 200 OKAY +Date: Mon, 12 Nov 2007 15:55:01 GMT +Server: Apache +Content-Length: 185 + + +Content-Type: application/xml; charset=UTF-8 +<image xmlns="http://docs.rackspacecloud.com/servers/api/v1.0" + id="22" name="Just in case" serverId="12" + created="2010-10-10T12:00:00Z" + status="SAVING" progress="0" /> + + + + Notice, in the above example, that the content type is + set to application/json but application/xml is + requested via the Accept header. An alternative + method of achieving the same result is illustrated + below – this time we utilize a URI extension instead + of an Accept header. + + + Request with Extension: JSON + +POST /v1.0/214412/images .xml HTTP/1.1 +Host: servers.api.rackspacecloud.com +Content-Type: application/json +X-Auth-Token: eaaafd18-0fed-4b3a-81b4-663c99ec1cbb + + +{ + "image" : { + "serverId" : 12, + "name" : "Just in case"} +} + + +
        + +
        + Content Compression + + Request and response body data may be encoded with + gzip compression in order to accelerate interactive + performance of API calls and responses. This is + controlled using the Accept-Encoding + header on the request from the client and indicated by + the Content-Encoding header in the server + response. Unless the header is explicitly set, + encoding defaults to disabled. + + + + + + + + + + + + + + + + + + + + + + +
        Encoding Headers
        Header TypeNameValue
        HTTP/1.1 RequestAccept-Encodinggzip
        HTTP/1.1 ResponseContent-Encodinggzip
        +
        +
        + Persistent Connections + + By default, the API supports persistent connections + via HTTP/1.1 keepalives. All connections will be kept + alive unless the connection header is set to close. + + + To prevent abuse, HTTP sessions have a timeout of 20 + seconds before being closed. + + + + The server may close the connection at any time + and clients should not rely on this behavior. + + +
        + +
        + Paginated Collections + + To reduce load on the service, list operations will + return a maximum of 1,000 items at a time. To + navigate the collection, the parameters + limit and + offset can be set in the URI + (e.g.?limit=0&offset=0). + If an offset is given beyond the end of a list an + empty list will be returned. Note that list operations + never return itemNotFound (404) + faults. + +
        +
        + Caching + + The Cloud Servers API makes extensive use of caching + layers at various tiers of the system. Purging + mechanisms exist to ensure that objects served out of + cache are accurate and up to date. &GET;s returning a + cached entity return a 203 + (Cached) to signal users that the value + is being served out of cache. Additionally, cached + entities have the following header set: + + + + + + + + + + + + + + + +
        Last Modified Header
        HeaderDescription
        Last-ModifiedDate and time when the entity was last updated in cache.
        +
        +
        + Efficient Polling with the + <parameter>Changes-Since</parameter> Parameter + The ReST API allows you to poll for the status of certain operations by + performing a &GET; on various elements. Rather than re-downloading and re-parsing + the full status at each polling interval, your ReST client may use the + changes-since parameter to check for changes since a + previous request. The changes-since time is specified as + Unix time (the + number of seconds since January 1, 1970, 00:00:00 UTC, not counting leap seconds). + If nothing has changed since the changes-since time, a + 304 (Not Modified) response will be returned. If data + has changed, only the items changed since the specified time will be returned in the + response. For example, performing a &GET; against + https://api.servers.rackspacecloud.com/v1.0/224532/servers?changes-since=1244012982 + would list all servers that have changed since Wed, 03 Jun 2009 07:09:42 UTC. +
        + +
        + Limits + + All accounts, by default, have a preconfigured set of + thresholds (or limits) to manage capacity and prevent + abuse of the system. The system recognizes two kinds + of limits: rate limits and + absolute limits. Rate limits + are thresholds that are reset after a certain amount + of time passes. Absolute limits are fixed. + + + + If the default limits are too low for your + particular application, please contact Rackspace + Cloud support to request an increase. All + requests require reasonable justification. + + +
        + Rate Limits + + We specify rate limits in terms of + both a human-readable wild-card URI and a machine-processable regular expression. + The regular expression boundary matcher '^' takes effect after + the root URI path. For example, the regular + expression ^/servers would match the bolded + portion of the following URI: + https://servers.api.rackspacecloud.com/v1.0/3542812/servers. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Default Rate Limits
        VerbURIRegExDefault
        &POST;*.*10/min
        &POST;*/servers^/servers50/day
        &PUT;*.*10/min
        &GET;*changes-since*changes-since3/min
        &DELETE;*.*100/min
        + + Rate limits are applied in order relative to the + verb, going from least to most specific. For + example, although the threshold for &POST; to + */servers is 50 per day, one cannot &POST; to + */servers more than 10 times within a single + minute because the rate limits for any &POST; is + 10/min. + + + In the event you exceed the thresholds established + for your account, a 413 (Rate + Control) HTTP response will be + returned with a Reply-After header to + notify the client when they can attempt to try + again. + +
        + +
        + Absolute Limits + + “Maximum total amount of RAM (GB)†limits the + number of instances you can run based on the total aggregate + RAM size. For example, with the default limit of + 50GB, you may launch a maximum of 200 256MB cloud + servers, or 100 512MB cloud servers, or 50 1GB + cloud servers, or 20 2GB + 40 256MB cloud servers, + etc. These limits apply to creating as well as + resizing servers. + + + + + + + + + + + + + + + + + + + + + + + +
        Default Absolute Limits
        LimitDefault
        Maximum total amount of + RAM (GB)50
        Maximum number of shared + IP groups25
        Maximum number of members + per shared IP group25
        +
        +
        + Determining Limits Programmatically + + Applications can programmatically determine + current account limits using the /limits URI as + follows: + + + + + Verb + URI + Description + + + + + &GET; + /limits + Returns the current limits for your account + + + + + Normal Response Code(s): + 200, + 203 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), unauthorized (401), + badRequest (400), + overLimit (413) + + This operation does not require a request body. + + Limit Response: XML + + + + + + Limit Response: JSON + + +
        +
        +
        + API Version + + The Cloud Servers API uses a URI versioning + scheme. The first element of the path contains the + target version identifier + (e.g. https://servers.api.rackspacecloud.com/ + v1.0/… ) All requests (except to query for + version — see below) must contain a target + version. New features and functionality that do not + break API-compatibility will be introduced in the + current version of the API and the URI will remain + unchanged. Any features or functionality changes that + would necessitate a break in API-compatibility will + require a new version, which will result in the URI + version being updated accordingly. When new API + versions are released, older versions will be marked + as DEPRECATED. Rackspace will work with + developers and partners to ensure there is adequate + time to migrate to the new version before deprecated + versions are discontinued. + + + Your application can programmatically determine + available API versions by performing a &GET; on the + root URL (i.e. with the version and everything to the + right of it truncated) returned from the authentication + system. + + + Versions List Request + +GET HTTP/1.1 +Host: servers.api.rackspacecloud.com + + + + Normal Response Code(s): + 200, + 203 + + + Error Response Code(s): + 400, + 413, + 500, + 503 + + This operation does not require a request body. + + Versions List Response: XML + +<versions xmlns="http://docs.rackspacecloud.com/servers/api/v1.0" > + <version status="CURRENT" id="v1.0"/> + <version status="BETA" id="v1.1"/> +</versions> + + + + Versions List Response: JSON + +{"versions": [{ + "status": "CURRENT", + "id": "v1.0"}, + { + "status": "BETA", + "id": "v1.1" +}]} + + + + You can also obtain additional information about a + specific version by performing a &GET; on the base + version URL + (e.g. https://servers.api.rackspacecloud.com/v1.0/). + Version request URLs should always end with a trailing + slash (/). If the slash is omitted, the server may + respond with a 302 + redirection request. Format extensions may be placed + after the slash + (e.g. https://servers.api.rackspacecloud.com/v1.0/.xml). Note + that this is a special case that does not hold true + for other API requests. In general, requests such as + /servers.xml and /servers/.xml are handled + equivalently. + + + Version Details Request + +GET HTTP/1.1 +Host: servers.api.rackspacecloud.com/v1.0/ + + + + Normal Response Code(s): + 200, + 203 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + overLimit(413) + + This operation does not require a request body + + Version Details Response: XML + + + + + + Version Details Response: JSON + + + + + + The detailed version response contains pointers to + both a human-readable and a machine-processable + description of the API service. The machine-processable description is written in the Web + Application Description Language (WADL). + + + If there is a discrepancy between the two specifications, the WADL is + authoritative as it contains the most accurate and up-to-date description of the + API service. + +
        +
        + Faults + When an error occurs, the system will return an HTTP error response code denoting + the type of error. The system will also return additional information about the + fault in the body of the response. + + Fault Response: XML + + + + + + Fault Response: JSON + + + + + The error code is returned in the body of the response for convenience. The + message section returns a human-readable message that is appropriate for display to + the end user. The details section is optional and may contain information—for example, a stack trace—to + assist in tracking down an error. The detail section may or may not be + appropriate for display to an end user. + + The root element of the fault (e.g. cloudServersFault) + may change depending on the type of error. The + following is a list of possible elements along with + their associated error codes. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Fault Elements and Error Codes
        Fault ElementAssociated Error CodesExpected in All Requests?
        cloudServersFault500, 400, other codes possible&CHECK;
        serviceUnavailable503&CHECK;
        unauthorized401&CHECK;
        badRequest400&CHECK;
        overLimit413&CHECK;
        badMediaType415 +
        badMethod405 +
        itemNotFound404 +
        buildInProgress409 +
        serverCapacityUnavailable503 +
        backupOrResizeInProgress409 +
        resizeNotAllowed403 +
        notImplemented501 +
        + + Fault Response, Item Not Found: XML + + + + + + Fault Response, Item Not Found: JSON + + + + + + From an XML schema perspective, all API faults are + extensions of the base fault type + CloudServersAPIFault. When working with a system that + binds XML to actual classes (such as JAXB), one should + be capable of using CloudServersAPIFault as a + “catch-all†if there's no interest in distinguishing + between individual fault types. + + + The OverLimit fault is generated when a rate limit + threshold is exceeded. For convenience, the fault + adds a replyAfter attribute that contains the content + of the Reply-After header in XML Schema 1.0 date/time + format. + + + Fault Response, Over Limit: XML + + + + + + Fault Response, Over Limit: JSON + + + + +
        +
        + + API Operations +
        + Servers +
        + List Servers + + + + Verb + URI + Description + + + + + &GET; + /servers + List all servers (IDs and names only) + + + &GET; + /servers/detail + List all servers (all details) + + + + + Normal Response Code(s): + 200, + 203 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + overLimit (413) + + + + Office Annotation + + + Jorge Williams + + + 2009-06-26T14:30:46 + + + Well need to revisit. List all status even + the ones that don't enter into our state + transitions along with descriptions of each. + + + + This operation provides a list of servers + associated with your account. Servers that have + been deleted are not included in this list. + Servers contain a status attribute that can be + used as an indication of the current server state. + Servers with an ACTIVE status are + available for use. Other possible values for the + status attribute include: BUILD, + REBUILD, SUSPENDED, + QUEUE_RESIZE, + PREP_RESIZE, RESIZE, + VERIFY_RESIZE, PASSWORD, + RESCUE, REBOOT, + HARD_REBOOT, SHARE_IP, + SHARE_IP_NO_CONFIG, + DELETE_IP, and UNKNOWN. + + + When retrieving a list of servers via the + changes-since parameter (see Efficient Polling + with the Changes-Since Parameter), the list will + contain servers that have been deleted since the + changes-since time. + + + The Cloud Servers provisioning algorithm has an + anti-affinity property that attempts to spread out + customer VMs across hosts. Under certain + situations, VMs from the same customer may be + placed on the same host. + hostId represents the host + your cloud server runs on and can be used to + determine this scenario if it's relevant to your + application. + + + + HostId is unique + per account and is not + globally unique. + + + This operation does not require a request body. + + Servers List Response: XML (detail) + + + + + + Servers List Response: JSON (detail) + + + + +
        +
        + Create Server + + + + Verb + URI + Description + + + + + &POST; + /servers + Create a new server + + + + + Normal Response Code(s): + 202 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badMediaType(415), + itemNotFound (404), + badRequest (400), + serverCapacityUnavailable (503), + overLimit (413) + + + + + Status Transition: + + BUILD &ARROW; ACTIVE + + + + + + BUILD &ARROW; ERROR (on error) + + + + + + This operation asynchronously provisions a new + server. The progress of this operation depends on + several factors including location of the + requested image, network i/o, host load, and the + selected flavor. The progress of the request can + be checked by performing a &GET; on /server/ id , + which will return a progress attribute (0-100% + completion). + + + + Office Annotation + + + Jorge Williams + + + 2009-06-26T14:36:04 + + Removed... + + If the adminPass element is not specified in + the request... + + + Because adding a password on a request is + currently not supported. + + + + A password will be randomly generated for you and + returned in the response object. For security + reasons, it will not be returned in subsequent &GET; + calls against a given server ID. + + + Custom cloud server metadata can also be supplied + at launch time. This metadata is stored in the API + system where it is retrievable by querying the API + for server status. The maximum size of the + metadata key and value is each 255 bytes and the + maximum number of key-value pairs that can be + supplied per server is 5. + + + You may further customize a cloud server by + injecting data into the file system of the cloud + server itself. This is useful, for example, for + inserting ssh keys, setting configuration files, + or storing data that you want to retrieve from + within the instance itself. It is intended to + provide a minimal amount of launch-time + personalization. If significant customization is + required, a custom image should be created. The + max size of the file p ath data is 255 bytes while + the max size of the file contents is 10KB. Note + that the file contents should be encoded as a + Base64 string and the 10KB limit refers to the + number of bytes in the decoded data not the number + of characters in the encoded data. The maximum + number of file path/content pairs that can be + supplied is 5. Any existing files that match the + specified file will be renamed to include the + extension bak followed by a time stamp. For + example, the file /etc/passwd will be backed up as + /etc/passwd.bak.1246036261.5785 . All files will + have root and the root group as owner and group + owner, respectively and will allow user and group + read access only ( -r--r----- ). + + + Servers in the same shared IP group can share + public IPs for various high availability and load + balancing configurations. To launch an HA server, + include the optional sharedIpGroupId element and + the server will be launched into that shared IP + group. + + + If you intend to use a shared IP on the server + being created and have no need for a separate + public IP address, you may launch the server into + a shared IP group and specify an IP address from + that shared IP group to be used as its public IP. + You can accomplish this by specifying the public + shared IP address in your request. This is + optional and is only valid if sharedIpGroupId is + also supplied. + + + + sharedIpGroupId is an optional parameter and + for optimal performance, should ONLY be + specified when intending to share IPs between + servers. + + + + Server Create Request: XML + + + + Server Create Request: JSON + + + + Server Create Response: XML + + + + Server Create Response: JSON + + +
        +
        + Get Server Details + + + + Verb + URI + Description + + + + + &GET; + /servers/id + List details of the specified server + + + + + Normal Response Code(s): + 200, + 203 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + itemNotFound (404), + overLimit (413) + + + This operation returns the details of a specific + server by its ID. + + This operation does not require a request body. + + Server Details Response: XML + + + + Server Details Response: JSON + + +
        +
        + Update Server Name / Administrative Password + + + + Verb + URI + Description + + + + + &PUT; + /servers/id + Update the specified server's name and/or administrative password + + + + + Normal Response Code(s): + 204 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + badMediaType(415), + itemNotFound (404), + buildInProgress (409), + overLimit (413) + + + + + Status Transition: + + ACTIVE &ARROW; + PASSWORD &ARROW; + ACTIVE + + + + + + This operation allows you to update the name of + the server and/or change the administrative + password. This operation changes the name of the + server in the Cloud Servers system and does not + change the server host name itself. + + + Server Update Request: XML + + + + + + Server Update Request: JSON + + + + + This operation does not contain a response body. +
        + +
        + Delete Server + + + + Verb + URI + Description + + + + + &DELETE; + /servers/id + Terminate the specified server + + + + + Normal Response Code(s): + 204 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), unauthorized (401), + itemNotFound (404), + unauthorized (401), + buildInProgress (409), + overLimit (413) + + + + + Status Transition: + + ACTIVE &ARROW; + DELETED + + + + + + SUSPENDED &ARROW; + DELETED + + + + + This operation deletes a cloud server instance from the system. + + + When a server is deleted, all images created + from that server are also removed. + + + This operation does not require a request or a response body. +
        +
        + +
        + Server Addresses +
        + List Addresses + + + + Verb + URI + Description + + + + + &GET; + /servers/id/ips + List all server addresses + + + + + Normal Response Code(s): + 200, + 203 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + overLimit (413) + + This operation does not require a request body. + + Addresses List Response: XML + + + + + + Addresses List Response: JSON + + + + +
        +
        + List Public Addresses + + + + Verb + URI + Description + + + + + &GET; + /servers/id/ips/public + List all public server addresses + + + + + Normal Response Code(s): + 200, + 203 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + overLimit (413) + + This operation does not require a request body. + + Public Addresses List Response: XML + + + + + + Public Addresses List Response: JSON + + + + +
        +
        + List Private Addresses + + + + Verb + URI + Description + + + + + &GET; + /servers/id/ips/private + List all private server addresses + + + + + Normal Response Code(s): + 200, + 203 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + overLimit (413) + + This operation does not require a request body. + + Private Addresses List Response: XML + + + + + + Private Addresses List Response: JSON + + + + +
        +
        + Share an IP Address + + + + Verb + URI + Description + + + + + &PUT; + /servers/id/ips/public/address + Share an IP address to the specified server + + + + + Normal Response Code(s): + 202 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + badMediaType(415), + itemNotFound (404), + overLimit (413) + + + + + Status Transition: + + ACTIVE &ARROW; + SHARE_IP &ARROW; + ACTIVE (if + configureServer + is true) + + + + + + ACTIVE &ARROW; + SHARE_IP_NO_CONFIG &ARROW; + ACTIVE + + + + + + This operation shares an IP from an existing + server in the specified shared IP group to another + specified server in the same group. By default, + the operation modifies cloud network restrictions + to allow IP traffic for the given IP to/from the + server specified, but does not bind the IP to the + server itself. A heartbeat facility + (e.g. keepalived) can then be used within the + servers to perform health checks and manage IP + failover. If the configureServer attribute is set + to true, the server is configured with the new + address, though the address is not enabled. Note + that configuring the server does require a reboot. + + + Share IP Request: XML + + + + + + Share IP Response: JSON + + + + + This operation does not return a response body. +
        +
        + Unshare an IP Address + + + + Verb + URI + Description + + + + + &DELETE; + /servers/id/ips/public/address + Remove a shared IP address from the specified server + + + + + Normal Response Code(s): + 202 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + badMediaType(415), + itemNotFound (404), + overLimit (413) + + + + + Status Transition: + + ACTIVE &ARROW; + DELETE_IP &ARROW; + ACTIVE + + + + + This operation removes a shared IP address from the specified server. + This operation does not contain a request or response body. +
        +
        + +
        + Server Actions +
        + Reboot Server + + + + Verb + URI + Description + + + + + &POST; + /servers/id/action + Reboot the specified server + + + + + Normal Response Code(s): + 202 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + badMediaType(415), + itemNotFound (404), + buildInProgress (409), + overLimit (413) + + + + + Status Transition: + + ACTIVE &ARROW; + REBOOT &ARROW; + ACTIVE (soft reboot) + + + + + + ACTIVE &ARROW; + HARD_REBOOT &ARROW; + ACTIVE (hard reboot) + + + + + + The reboot function allows for either a soft or + hard reboot of a server. With a soft reboot + (SOFT), the operating system is signaled to + restart, which allows for a graceful shutdown of + all processes. A hard reboot (HARD) is the + equivalent of power cycling the server. + + + Action Reboot: XML + + + + + + Action Reboot: JSON + + + + + This operation does not return a response body. +
        + +
        + Rebuild Server + + + + Verb + URI + Description + + + + + &POST; + /servers/id/action + Rebuild the specified server + + + + + Normal Response Code(s): + 202 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + badMediaType(415), + itemNotFound (404), + buildInProgress (409), + serverCapacityUnavailable (503), + overLimit (413) + + + + + Status Transition: + + ACTIVE &ARROW; + REBUILD &ARROW; + ACTIVE + + + + + + ACTIVE &ARROW; + REBUILD &ARROW; + ERROR (on error) + + + + + + The rebuild function removes all data on the + server and replaces it with the specified + image. serverId and IP + addresses will remain the same. + + + Action Rebuild: XML + + + + + + Action Rebuild: JSON + + + + + This operation does not return a response body. +
        + +
        + Resize Server + + + + Verb + URI + Description + + + + + &POST; + /servers/id/action + Resize the specified server + + + + + Normal Response Code(s): + 202 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + badMediaType(415), + itemNotFound (404), + buildInProgress (409), + serverCapacityUnavailable (503), + overLimit (413), + resizeNotAllowed (403) + + + + + Status Transition: + + ACTIVE &ARROW; + QUEUE_RESIZE &ARROW; + PREP_RESIZE &ARROW; + RESIZE &ARROW; + VERIFY_RESIZE + + + + + + ACTIVE &ARROW; + QUEUE_RESIZE &ARROW; + ACTIVE (on error) + + + + + + The resize function converts an existing server to + a different flavor, in essence, scaling the server + up or down. The original server is saved for a + period of time to allow rollback if there is a + problem. All resizes should be tested and + explicitly confirmed, at which time the original + server is removed. All resizes are automatically + confirmed after 24 hours if they are not + explicitly confirmed or reverted. + + + Action Resize: XML + + + + + + Action Resize: JSON + + + + + This operation does not return a response body. +
        + +
        + Confirm Resized Server + + + + Verb + URI + Description + + + + + &POST; + /servers/id/action + Confirm a pending resize action + + + + + Normal Response Code(s): + 204 + + + Error ResponseCode(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + badMediaType(415), + itemNotFound (404), + buildInProgress (409), + serverCapacityUnavailable (503), + overLimit (413), + resizeNotAllowed (403) + + + + + Status Transition: + + VERIFY_RESIZE &ARROW; + ACTIVE + + + + + + During a resize operation, the original server is + saved for a period of time to allow roll back if + there is a problem. Once the newly resized server + is tested and has been confirmed to be functioning + properly, use this operation to confirm the + resize. After confirmation, the original server + is removed and cannot be rolled back to. All + resizes are automatically confirmed after 24 hours + if they are not explicitly confirmed or reverted. + + + Action Confirm Resize: XML + + + + + + Action Confirm Resize: JSON + + + + + This operation does not return a response body. +
        + +
        + Revert Resized Server + + + + Verb + URI + Description + + + + + &POST; + /servers/id/action + Cancel and revert a pending resize action + + + + + Normal Response Code(s): + 202 + + + Error ResponseCode(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + badMediaType(415), + itemNotFound (404), + buildInProgress (409), + serverCapacityUnavailable (503), + overLimit (413), + resizeNotAllowed (403) + + + + + Status Transition: + + VERIFY_RESIZE &ARROW; + ACTIVE + + + + + + During a resize operation, the original server is + saved for a period of time to allow for roll back + if there is a problem. If you determine there is a + problem with a newly resized server, use this + operation to revert the resize and roll back to + the original server. All resizes are automatically + confirmed after 24 hours if they have not already + been confirmed explicitly or reverted. + + + Action Revert Resize: XML + + + + + + Action Revert Resize: JSON + + + + + This operation does not return a response body. +
        +
        + +
        + Flavors + + A flavor is an available hardware configuration for a + server. Each flavor has a unique combination of disk + space and memory capacity. + +
        + List Flavors + + + + Verb + URI + Description + + + + + &GET; + /flavors + List available flavors (IDs and names only) + + + &GET; + /flavors/detail + List available flavors (all details) + + + + + Normal Response Code(s): + 200, + 203 + + + Error ResponseCode(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + overLimit (413) + + + This operation will list all available flavors + with details. + + + This operation does not require a request body. + + + Flavors List Response: XML (detail) + + + + + + Flavors List Response: JSON (detail) + + + + +
        + +
        + Get Flavor Details + + + + Verb + URI + Description + + + + + &GET; + /flavors/id + List details of the specified flavor + + + + + Normal Response Code(s): + 200, + 203 + + + Error ResponseCode(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + itemNotFound (404), + overLimit (413) + + This operation returns details of the specified flavor. + This operation does not require a request body. + + Flavor Details Response: XML + + + + + + Flavor Details Response: JSON + + + + +
        +
        + +
        + Images + + An image is a collection of files you use to create or + rebuild a server. Rackspace provides pre-built OS + images by default. You may also create custom images. + +
        + List Images + + + + Verb + URI + Description + + + + + &GET; + /images + List available images (IDs and names only) + + + &GET; + /images/detail + List available images (all details) + + + + + Normal Response Code(s): + 200, + 203 + + + Error ResponseCode(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + overLimit (413) + + + This operation will list all images visible by the + account. + + + In-flight images will have the status attribute + set to SAVING and the conditional + progress element (0-100% completion) will also be + returned. Other possible values for the status + attribute include: UNKNOWN, + PREPARING, ACTIVE, + QUEUED, FAILED. Images + with an ACTIVE status are available + for install. + + This operation does not require a request body. + + Images List Response: XML (detail) + + + + + + Images List Response: JSON (detail) + + + + +
        +
        + Create Image + + + + Verb + URI + Description + + + + + &POST; + /images + Create a new image + + + + + Normal Response Code(s): + 202 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badMediaType(415), + itemNotFound (404), + badRequest (400), + serverCapacityUnavailable (503), + buildInProgress (409), + resizeNotAllowed (403), + backupOrResizeInProgress (409), + overLimit (413) + + + + + Status Transition: + + QUEUED &ARROW; PREPARING &ARROW; + SAVING &ARROW; ACTIVE + + + + + + QUEUED &ARROW; PREPARING &ARROW; + SAVING &ARROW; FAILED (on error) + + + + + + This operation creates a new image for the given + server ID. Once complete, a new image will be + available that can be used to rebuild or create + servers. The image creation status can be queried + by performing a &GET; on + /images/id and examining + the status and progress attributes. + + + + At present, image creation is an asynchronous + operation, so coordinating the creation with + data quiescence, etc. is currently not + possible. + + + + Image Create Request: XML + +<image xmlns="http://docs.rackspacecloud.com/servers/api/v1.0" + name="Just in case" serverId="12" /> + + + + Image Create Request: JSON + +{ + "image" : { + "serverId" : 12, + "name" : "Just in case" + } +} + + + + Image Create Response: XML + +<image xmlns="http://docs.rackspacecloud.com/servers/api/v1.0" + id="22" name="Just in case" + created="2010-10-10T12:00:00Z" + status="SAVING" progress="0" serverId="12"/> + + + + Image Create Response: JSON + +{ + "image" : { + "id" : 22, + "serverId" : 12, + "name" : "Just in case", + "created" : "2010-10-10T12:00:00Z", + "status" : "SAVING", + "progress" : 0 + } +} + + +
        + +
        + Get Image Details + + + + Verb + URI + Description + + + + + &GET; + /images/id + List details of the specified image + + + + + Normal Response Code(s): + 200, + 203 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + itemNotFound (404), + overLimit (413) + + This operation returns details of the specified image. + This operation does not require a request body. + + Image Details Response: XML + + + + + + Image Details Response: JSON + + + + +
        + +
        + Delete Image + + + + Verb + URI + Description + + + + + &DELETE; + /images/id + Deletes the specified image. + + + + + Normal Response Code(s): + 204 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + itemNotFound (404), + overLimit (413) + + This operation deletes an image from the system. + + Images are immediately removed. Currently, there + are no state transitions to track the delete + operation. + + This operation does not require a request body. + This operation does not contain a response body. +
        +
        + +
        + Backup Schedules + + In addition to creating images on demand, you may also + schedule periodic (daily and weekly) images via a + backup schedule. The daily and weekly images are + triggered automatically based on the backup schedule + established. The days/times specified for the backup + schedule are targets and actual start and completion + times may vary based on other activity in the + system. All backup times are in GMT. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Weekly Backup Schedule
        ValueDay
        DISABLEDWeekly backup disabled
        SUNDAYSunday
        MONDAYMonday
        TUESDAYTuesday
        WEDNESDAYWednesday
        THURSDAYThursday
        FRIDAYFriday
        SATURDAYSaturday
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        Daily Backup Schedule
        ValueHour Range
        DISABLEDDaily backups disabled
        H_0000_02000000-0200
        H_0200_04000200-0400
        H_0400_06000400-0600
        H_0600_08000600-0800
        H_0800_10000800-1000
        H_1000_12001000-1200
        H_1200_14001200-1400
        H_1400_16001400-1600
        H_1600_18001600-1800
        H_1800_20001800-2000
        H_2000_22002000-2200
        H_2200_00002200-0000
        + +
        + List Backup Schedules + + + + Verb + URI + Description + + + + + &GET; + /servers/id/backup_schedule + List the backup schedule for the specified server + + + + + Normal Response Code(s): + 200, + 203 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + itemNotFound (404), + overLimit (413) + + This operation lists the backup schedule for the specified server. + This operation does not require a request body. + + Backup Schedule List Response: XML + + + + + + Backup Schedule List Response: JSON + + + + +
        + +
        + Create / Update Backup Schedule + + + + Verb + URI + Description + + + + + &POST; + /servers/id/backup_schedule + Enable/update the backup schedule for the specified server + + + + + Normal Response Code(s): + 204 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + badMediaType(415), + itemNotFound (404), + buildInProgress (409), + serverCapacityUnavailable (503), + backupOrResizeInProgress(409), + overLimit (413) + + + This operation creates a new backup schedule or + updates an existing backup schedule for the + specified server. Backup schedules will occur + only when the enabled attribute is set to true. + The weekly and daily attributes can be used to set + or to disable individual backup schedules. + + + Backup Schedule Update Request: XML + + + + + + Backup Schedule Update Request: JSON + + + + + This operation does not return a response body. +
        + +
        + Disable Backup Schedule + + + + Verb + URI + Description + + + + + &DELETE; + /servers/id/backup_schedule + Disables the backup schedule for the specified server + + + + + Normal Response Code(s): + 204 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + itemNotFound (404), + buildInProgress (409), + serverCapacityUnavailable (503), + backupOrResizeInProgress(409), + overLimit (413) + + This operation disables the backup schedule for the specified server. + This operation does not require a request body. + This operation does not return a response body. +
        +
        + +
        + Shared IP Groups + + A shared IP group is a collection of servers that can + share IPs with other members of the group. Any server + in a group can share one or more public IPs with any + other server in the group. With the exception of the + first server in a shared IP group, servers must be + launched into shared IP groups. A server may only be a + member of one shared IP group. + +
        + List Shared IP Groups + + + + Verb + URI + Description + + + + + &GET; + /shared_ip_groups + List shared ip groups (IDs and names only) + + + &GET; + /shared_ip_groups/detail + List shared ip groups (all details) + + + + + Normal Response Code(s): + 200, + 203 + + + Error ResponseCode(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + overLimit (413) + + + This operation provides a list of shared IP groups associated with your account. + + This operation does not require a request body. + + Shared IP Groups List Response: XML (detail) + + + + + + Shared IP Groups List Response: JSON (detail) + + + + +
        +
        + Create Shared IP Group + + + + Verb + URI + Description + + + + + &POST; + /shared_ip_groups + Create a new shared ip group + + + + + Normal Response Code(s): + 201 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badMediaType(415), + badRequest (400), + overLimit (413) + + + This operation creates a new shared IP + group. Please note, all responses to requests for + shared_ip_groups return an array of + servers. However, on a create request, the shared + IP group can be created empty or can be initially + populated with a single server. Submitting a + create request with a sharedIpGroup that contains + an array of servers will generate a badRequest + (400) fault. + + + Shared IP Group Create Request: XML + + + + Shared IP Group Create Request: JSON + + + + Shared IP Group Create Response: XML + + + + Shared IP Group Create Response: JSON + + +
        + +
        + Get Shared IP Group Details + + + + Verb + URI + Description + + + + + &GET; + /shared_ip_groups/id + List details of the specified shared IP group + + + + + Normal Response Code(s): + 200, + 203 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + badRequest (400), + itemNotFound (404), + overLimit (413) + + This operation returns details of the specified shared IP group. + + Shared IP Group Details Response: XML + + + + Shared IP Group Details Response: JSON + + + This operation does not require a request body. +
        + +
        + Delete Shared IP Group + + + + Verb + URI + Description + + + + + &DELETE; + /shared_ip_groups/id + Delete the specified shared IP group + + + + + Normal Response Code(s): + 204 + + + Error Response Code(s): + cloudServersFault (400, 500), + serviceUnavailable (503), + unauthorized (401), + itemNotFound (404), + overLimit (413) + + + This operation deletes the specified shared IP + group. This operation will only succeed if: + + + + + There are no active servers in the group + (i.e. they have all been terminated) or + + + + + No servers in the group are actively + sharing IPs. + + + + This operation does not require a request body. + This operation does not contain a response body. +
        +
        +
        +
        diff --git a/openstack-compute-api-1.0/src/figures/Arrow_east.png b/openstack-compute-api-1.0/src/figures/Arrow_east.png new file mode 100644 index 0000000000000000000000000000000000000000..42d4f9465d95442e2373069e0d79766ff7393a6c GIT binary patch literal 454 zcmeAS@N?(olHy`uVBq!ia0vp^d_c@5zyc&Wn|7A~DW)WEcbEVFMOGW01ql{-L>2>S z4={E+nQaFWEGuwK2hw1@43$mQ|ACxzPZ!4!iOaqH3q>0YM2;}6_n4NzUc$TUb4d6m zR_zc2$MhG669uo{a1KeRzvAj5W3=ggQ1KkEnUne!@7`QDC*8vT#<_hUQiVWWJ7UT zx>ZtQajI@6er`c&NvdvQL8h*uo`HT^W_oE+YO%g! gQBi(*d}?BGi5}2$-E+U#fNo*%boFyt=akR{0Bi}C$N&HU literal 0 HcmV?d00001 diff --git a/openstack-compute-api-1.0/src/figures/Arrow_east.svg b/openstack-compute-api-1.0/src/figures/Arrow_east.svg new file mode 100644 index 0000000..8e0b5e1 --- /dev/null +++ b/openstack-compute-api-1.0/src/figures/Arrow_east.svg @@ -0,0 +1,70 @@ + + + +image/svg+xml + + + + + + + + \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/figures/Check_mark_23x20_02.png b/openstack-compute-api-1.0/src/figures/Check_mark_23x20_02.png new file mode 100644 index 0000000000000000000000000000000000000000..2200f84ea5d112c543dd34600a23e94800568b90 GIT binary patch literal 672 zcmeAS@N?(olHy`uVBq!ia0vp^!ayt}zyc(lr+!=rq?nSt-Ch3w7g=q17Rci)@Q5r1 z(jH*!b~4)zBv@A9m=2`DdKq4%?0wI`z-Zy=;uvCadg-OT>lhtH4t(6qy71x(R~L0I zRYwz-Mfc4wba|NEb66ChQEFnt+{zxHQDU`l%8k$yYH$9FHSc^>x2ANG=Ce67@B5_n zF)GL(E7RT-(ZM0#^4e)V`%E4gz6a8qb612Z%C-NEds>q?jkT4@MQKCS%Rjeoykz-l z!@^`R-~Rf&Lpt1>A_W>RzS#Osa&zv9ry^H!{_Qy?TxRFIbkTw&L7C&~&nyD;v^8di z=zfSkk;dH1b|vdVp1pXi_^VP@*5(Z{|7tfZxtz6;qs8e}?z@XGUqo&H{lEA`!UFS- z11XER{_ZAHD zhzb9G;d|n&dkfjwHpJQA*AQ!dd{Le4LYC$Ug9Ni`{;GpI+(MkKzdH4wicgfg+~;}- z7@(>pt`Q|Ei6yC4$wjF^iowXh&`{UFRM*fb#L(2r(A>(v49K-IFev)*A_hf6ZhlH; zS|x4`%u53v05x=iY$z^Ew@OMZPSq_f%4A5(%t^J<*VoU;&rQ`&NiIsvO)b)Q$xklL zP0cGQ*3U0U%_}ZROwQIX&o9c(%uCl#$xqfV&Mz%W1}e`_PRg!8sL@T%&n+k|N!3j( z$ka8|Gtf`VOfM};E!KC=NKMX;&rK}KjyE!{FfxcYFwz6M;!V(!ZlI$WJYD@<);T3K F0RT6x0sa60 literal 0 HcmV?d00001 diff --git a/openstack-compute-api-1.0/src/figures/Check_mark_23x20_02.svg b/openstack-compute-api-1.0/src/figures/Check_mark_23x20_02.svg new file mode 100644 index 0000000..3051a2f --- /dev/null +++ b/openstack-compute-api-1.0/src/figures/Check_mark_23x20_02.svg @@ -0,0 +1,60 @@ + + + + + + + + + image/svg+xml + + + + + + + + diff --git a/openstack-compute-api-1.0/src/js/shjs/sh_java.js b/openstack-compute-api-1.0/src/js/shjs/sh_java.js new file mode 100644 index 0000000..731fc9f --- /dev/null +++ b/openstack-compute-api-1.0/src/js/shjs/sh_java.js @@ -0,0 +1,337 @@ +if (! this.sh_languages) { + this.sh_languages = {}; +} +sh_languages['java'] = [ + [ + [ + /\b(?:import|package)\b/g, + 'sh_preproc', + -1 + ], + [ + /\/\/\//g, + 'sh_comment', + 1 + ], + [ + /\/\//g, + 'sh_comment', + 7 + ], + [ + /\/\*\*/g, + 'sh_comment', + 8 + ], + [ + /\/\*/g, + 'sh_comment', + 9 + ], + [ + /\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g, + 'sh_number', + -1 + ], + [ + /"/g, + 'sh_string', + 10 + ], + [ + /'/g, + 'sh_string', + 11 + ], + [ + /(\b(?:class|interface))([ \t]+)([$A-Za-z0-9_]+)/g, + ['sh_keyword', 'sh_normal', 'sh_classname'], + -1 + ], + [ + /\b(?:abstract|assert|break|case|catch|class|const|continue|default|do|else|extends|false|final|finally|for|goto|if|implements|instanceof|interface|native|new|null|private|protected|public|return|static|strictfp|super|switch|synchronized|throw|throws|true|this|transient|try|volatile|while)\b/g, + 'sh_keyword', + -1 + ], + [ + /\b(?:int|byte|boolean|char|long|float|double|short|void)\b/g, + 'sh_type', + -1 + ], + [ + /~|!|%|\^|\*|\(|\)|-|\+|=|\[|\]|\\|:|;|,|\.|\/|\?|&|<|>|\|/g, + 'sh_symbol', + -1 + ], + [ + /\{|\}/g, + 'sh_cbracket', + -1 + ], + [ + /(?:[A-Za-z]|_)[A-Za-z0-9_]*(?=[ \t]*\()/g, + 'sh_function', + -1 + ], + [ + /([A-Za-z](?:[^`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\s]|[_])*)((?:<.*>)?)(\s+(?=[*&]*[A-Za-z][^`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\s]*\s*[`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\[\]]+))/g, + ['sh_usertype', 'sh_usertype', 'sh_normal'], + -1 + ] + ], + [ + [ + /$/g, + null, + -2 + ], + [ + /(?:?)|(?:?)/g, + 'sh_url', + -1 + ], + [ + /<\?xml/g, + 'sh_preproc', + 2, + 1 + ], + [ + //g, + 'sh_keyword', + -1 + ], + [ + /<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g, + 'sh_keyword', + 6, + 1 + ], + [ + /&(?:[A-Za-z0-9]+);/g, + 'sh_preproc', + -1 + ], + [ + /<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g, + 'sh_keyword', + -1 + ], + [ + /<(?:\/)?[A-Za-z][A-Za-z0-9]*/g, + 'sh_keyword', + 6, + 1 + ], + [ + /@[A-Za-z]+/g, + 'sh_type', + -1 + ], + [ + /(?:TODO|FIXME|BUG)(?:[:]?)/g, + 'sh_todo', + -1 + ] + ], + [ + [ + /\?>/g, + 'sh_preproc', + -2 + ], + [ + /([^=" \t>]+)([ \t]*)(=?)/g, + ['sh_type', 'sh_normal', 'sh_symbol'], + -1 + ], + [ + /"/g, + 'sh_string', + 3 + ] + ], + [ + [ + /\\(?:\\|")/g, + null, + -1 + ], + [ + /"/g, + 'sh_string', + -2 + ] + ], + [ + [ + />/g, + 'sh_preproc', + -2 + ], + [ + /([^=" \t>]+)([ \t]*)(=?)/g, + ['sh_type', 'sh_normal', 'sh_symbol'], + -1 + ], + [ + /"/g, + 'sh_string', + 3 + ] + ], + [ + [ + /-->/g, + 'sh_comment', + -2 + ], + [ + //g, + 'sh_comment', + -2 + ], + [ + //g, + 'sh_comment', + -2 + ], + [ + / array of links + // + // possible types include: import, include, element, + // attribute, complextype, simpleType + // + // each link contains the following properties: + // name : the name of the link + // href : the link itself + // title : a description of the link + links : new Object(), + + // + // A single link that points to the schema index document. + // + index : null, + + // + // Our initialization function + // + _init : function() { + // + // Load the menu... + // + var controllerDiv = document.getElementById("Controller"); + var mainMenu = this._menuMarkup("mainmenu"); + + for (var linkType in this.links) + { + var subItem = this._menuItemMarkup(mainMenu, linkType, "#", null); + var subMenu = this._menuMarkup (linkType+"_subMenu"); + + var items = this.links[linkType]; + for (var i=0;i Array of sample ids. + // + samples : new Object(), + + // + // An array of code data.. + // + // Code data is defined as an object with the following + // properties: + // + // type: The mimetype of the code...href: The location of the code + // or null if it's inline + // + // id: The id of the pre that contains the code. + // + // The initial object is the source code for the current document. + // + codes : new Array({ + id : "SrcContentCode", + type : "application/xml", + href : (function() { + var ret = location.href; + if (location.hash && (location.hash.length != 0)) + { + ret = ret.replace (location.hash, ""); + } + return ret; + })() + }), + + // + // Sets up the manager, begins the loading process... + // + _init : function() { + // + // Setup an array to hold data items to load, this is used by + // the loadSample method. + // + this._toLoad = new Array(); + + for (var i=0;i -1) && + (ieVersion < 8)) + { + code = trc.util.text.unix2dos (code); + } + + var pre = document.getElementById(codeData.id); + var preNodes = pre.childNodes; + // + // Remove placeholder data... + // + while (preNodes.length != 0) + { + pre.removeChild (preNodes[0]); + } + + // + // Set the correct class type... + // + switch (codeData.type) + { + /* + Javascript mimetypes + */ + case 'application/json': + case 'application/javascript': + case 'application/x-javascript': + case 'application/ecmascript': + case 'text/ecmascript': + case 'text/javascript': + trc.util.dom.setClassName (pre, "sh_javascript"); + break; + /* + Not real mimetypes but this is what we'll use for Java. + */ + case 'application/java': + case 'text/java': + trc.util.dom.setClassName (pre, "sh_java"); + break; + default: + trc.util.dom.setClassName (pre, "sh_xml"); + break; + } + + // + // Add new code... + // + pre.appendChild (document.createTextNode (code)); + }, + + // + // Retrives source code text + // + _getCodeText : function (codeData /* Info for the code to get*/) + { + var pre = document.getElementById(codeData.id); + pre.normalize(); + // + // Should be a single text node after pre... + // + return pre.firstChild.nodeValue; + }, + + + // + // Normalizes text by ensuring that top, bottom, right indent + // levels are equal for all samples. + // + _normalizeCodeText : function (top, /* integer, top indent in lines */ + bottom, /* integer, bottom indent in lines */ + right /* integer, right indent in spaces */ + ) + { + for (var i=0;i -1) && + (ieVersion < 7)) + { + element.className = name; + } + else + { + element.setAttribute ("class",name); + } + } +}; + +trc.util.text = { + // + // Useful RegExps + // + blank : new RegExp ("^\\s*$"), /* A blank string */ + indent : new RegExp ("^\\s+"), /* Line indent */ + lines : new RegExp ("$","m"), /* All lines */ + linechars : new RegExp ("(\n|\r)"), /* EOL line characters */ + tabs : new RegExp ("\t","g"), /* All tabs */ + + // + // We need this because microsoft browsers before IE 7, connot + // display pre-formatted text correctly win unix style line + // endings. + // + unix2dos : function(txt /* String */) { + //if already DOS... + if (txt.search(/\r\n/) != -1) + { + return txt; + } + return txt.replace (/\n/g, "\r\n"); + }, + + // + // Useful to normalize text. + // + dos2unix : function(txt /* String */) { + //if already unix... + if (txt.search(/\r\n/) == -1) + { + return txt; + } + + return txt.replace(/\r/g, ""); + }, + + // + // Create a string with a character repeated x times. + // + repString : function (length, /* integer, size of the string to create */ + ch /* string, The character to set the string to */ + ) + { + var ret = new String(); + for (var i=0;idep. + // + _deps : new Object(), + + // + // An array of callback functions, these should be called when all + // dependecies are loaded. + // + _callbacks : new Array(), + + // + // The init function simply calls the YUI loader... + // + _init : function() { + var yuiUtil = this; + + // + // It takes safari a while to load the YUI Loader if it hasn't + // loaded yet keep trying at 1/4 second intervals + // + if (!window.YAHOO) + { + window.setTimeout (function() { + yuiUtil._init(); + }, 250); + return; + } + + // + // Collect requirements... + // + var required = new Array(); + for (var req in this._deps) + { + required.push (req); + } + + // + // Load YUI dependecies... + // + var loader = new YAHOO.util.YUILoader({ + require: required, + loadOptional: true, + filter: "RAW", + onSuccess: function() { + yuiUtil._depsLoaded(); + }, + timeout: 10000, + combine: true + }); + loader.insert(); + }, + + // + // Called after all dependecies have been loaded + // + _depsLoaded : function() { + // + // Dependecies are loaded let everyone know. + // + for (var i=0;i + + diff --git a/openstack-compute-api-1.0/src/samples/address.json b/openstack-compute-api-1.0/src/samples/address.json new file mode 100644 index 0000000..9e7eac2 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/address.json @@ -0,0 +1,5 @@ +{ + "ip" : { + "addr" : "67.23.10.132" + } +} \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/address.xml b/openstack-compute-api-1.0/src/samples/address.xml new file mode 100644 index 0000000..09287bd --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/address.xml @@ -0,0 +1,2 @@ + + diff --git a/openstack-compute-api-1.0/src/samples/addresses.json b/openstack-compute-api-1.0/src/samples/addresses.json new file mode 100644 index 0000000..14e7f81 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/addresses.json @@ -0,0 +1,11 @@ +{ + "addresses" : { + "public" : [ + "67.23.10.132", + "67.23.10.131" + ], + "private" : [ + "10.176.42.16" + ] + } +} diff --git a/openstack-compute-api-1.0/src/samples/addresses.xml b/openstack-compute-api-1.0/src/samples/addresses.xml new file mode 100644 index 0000000..294274e --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/addresses.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/openstack-compute-api-1.0/src/samples/backup.json b/openstack-compute-api-1.0/src/samples/backup.json new file mode 100644 index 0000000..824e549 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/backup.json @@ -0,0 +1,7 @@ +{ + "backupSchedule" : { + "enabled" : true, + "weekly" : "THURSDAY", + "daily" : "H_0400_0600" + } +} diff --git a/openstack-compute-api-1.0/src/samples/backup.xml b/openstack-compute-api-1.0/src/samples/backup.xml new file mode 100644 index 0000000..45870bb --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/backup.xml @@ -0,0 +1,5 @@ + + + diff --git a/openstack-compute-api-1.0/src/samples/backupInProgress.json b/openstack-compute-api-1.0/src/samples/backupInProgress.json new file mode 100644 index 0000000..00bce30 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/backupInProgress.json @@ -0,0 +1,7 @@ +{ + "backupOrResizeInProgress" : { + "code" : 409, + "message" : "Backup Or Resize In Progress", + "details" : "Error Details..." + } +} diff --git a/openstack-compute-api-1.0/src/samples/backupInProgress.xml b/openstack-compute-api-1.0/src/samples/backupInProgress.xml new file mode 100644 index 0000000..b0240b8 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/backupInProgress.xml @@ -0,0 +1,4 @@ + + Backup Or Resize In Progress +
        Error Details...
        +
        diff --git a/openstack-compute-api-1.0/src/samples/badmediatype.json b/openstack-compute-api-1.0/src/samples/badmediatype.json new file mode 100644 index 0000000..79ee4f0 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/badmediatype.json @@ -0,0 +1,7 @@ +{ + "badMediaType" : { + "code" : 415, + "message" : "Bad Media Type", + "details" : "Error Details..." + } +} diff --git a/openstack-compute-api-1.0/src/samples/badmediatype.xml b/openstack-compute-api-1.0/src/samples/badmediatype.xml new file mode 100644 index 0000000..d344cde --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/badmediatype.xml @@ -0,0 +1,4 @@ + + Bad Media Type +
        Error Details...
        +
        diff --git a/openstack-compute-api-1.0/src/samples/badmethod.json b/openstack-compute-api-1.0/src/samples/badmethod.json new file mode 100644 index 0000000..307e021 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/badmethod.json @@ -0,0 +1,8 @@ + +{ + "badMethod" : { + "code" : 405, + "message" : "Bad Method", + "details" : "Error Details..." + } +} diff --git a/openstack-compute-api-1.0/src/samples/badmethod.xml b/openstack-compute-api-1.0/src/samples/badmethod.xml new file mode 100644 index 0000000..0e6c186 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/badmethod.xml @@ -0,0 +1,5 @@ + + + Bad Method +
        Error Details...
        +
        diff --git a/openstack-compute-api-1.0/src/samples/badrequest.json b/openstack-compute-api-1.0/src/samples/badrequest.json new file mode 100644 index 0000000..a7afecf --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/badrequest.json @@ -0,0 +1,7 @@ +{ + "badRequest" : { + "code" : 400, + "message" : "Bad Request", + "details" : "Error Details..." + } +} diff --git a/openstack-compute-api-1.0/src/samples/badrequest.xml b/openstack-compute-api-1.0/src/samples/badrequest.xml new file mode 100644 index 0000000..21d3e54 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/badrequest.xml @@ -0,0 +1,4 @@ + + Bad Request +
        Error Details...
        +
        diff --git a/openstack-compute-api-1.0/src/samples/build.json b/openstack-compute-api-1.0/src/samples/build.json new file mode 100644 index 0000000..20bc456 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/build.json @@ -0,0 +1,7 @@ +{ + "buildInProgress" : { + "code" : 409, + "message" : "In Progress", + "details" : "Error Details..." + } +} diff --git a/openstack-compute-api-1.0/src/samples/build.xml b/openstack-compute-api-1.0/src/samples/build.xml new file mode 100644 index 0000000..a421ad4 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/build.xml @@ -0,0 +1,4 @@ + + In Progress +
        Error Details...
        +
        diff --git a/openstack-compute-api-1.0/src/samples/confirmresize.json b/openstack-compute-api-1.0/src/samples/confirmresize.json new file mode 100644 index 0000000..432f612 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/confirmresize.json @@ -0,0 +1,3 @@ +{ + "confirmResize" : null +} diff --git a/openstack-compute-api-1.0/src/samples/confirmresize.xml b/openstack-compute-api-1.0/src/samples/confirmresize.xml new file mode 100644 index 0000000..21f9213 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/confirmresize.xml @@ -0,0 +1,3 @@ + + + diff --git a/openstack-compute-api-1.0/src/samples/fault.json b/openstack-compute-api-1.0/src/samples/fault.json new file mode 100644 index 0000000..41aa44f --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/fault.json @@ -0,0 +1,7 @@ +{ + "cloudServersFault" : { + "code" : 500, + "message" : "Fault!", + "details" : "Error Details..." + } +} \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/fault.xml b/openstack-compute-api-1.0/src/samples/fault.xml new file mode 100644 index 0000000..b189fcd --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/fault.xml @@ -0,0 +1,4 @@ + + Fault! +
        Error Details...
        +
        \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/flavor.json b/openstack-compute-api-1.0/src/samples/flavor.json new file mode 100644 index 0000000..acba891 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/flavor.json @@ -0,0 +1,8 @@ +{ + "flavor" : { + "id" : 1, + "name" : "256 MB Server", + "ram" : 256, + "disk" : 10 + } +} diff --git a/openstack-compute-api-1.0/src/samples/flavor.xml b/openstack-compute-api-1.0/src/samples/flavor.xml new file mode 100644 index 0000000..2a3b1fc --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/flavor.xml @@ -0,0 +1,5 @@ + + + diff --git a/openstack-compute-api-1.0/src/samples/flavors.json b/openstack-compute-api-1.0/src/samples/flavors.json new file mode 100644 index 0000000..63a6bec --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/flavors.json @@ -0,0 +1,16 @@ +{ + "flavors" : [ + { + "id" : 1, + "name" : "256 MB Server", + "ram" : 256, + "disk" : 10 + }, + { + "id" : 2, + "name" : "512 MB Server", + "ram" : 512, + "disk" : 20 + } + ] +} diff --git a/openstack-compute-api-1.0/src/samples/flavors.xml b/openstack-compute-api-1.0/src/samples/flavors.xml new file mode 100644 index 0000000..db6b6e7 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/flavors.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/openstack-compute-api-1.0/src/samples/image.json b/openstack-compute-api-1.0/src/samples/image.json new file mode 100644 index 0000000..a49ea60 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/image.json @@ -0,0 +1,11 @@ +{ + "image" : { + "id" : 1, + "name" : "CentOS 5.2", + "serverId" : 12, + "updated" : "2010-10-10T12:00:00Z", + "created" : "2010-08-10T12:00:00Z", + "status" : "SAVING", + "progress" : 80 + } +} diff --git a/openstack-compute-api-1.0/src/samples/image.xml b/openstack-compute-api-1.0/src/samples/image.xml new file mode 100644 index 0000000..6ab1fd7 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/image.xml @@ -0,0 +1,8 @@ + + + diff --git a/openstack-compute-api-1.0/src/samples/images.json b/openstack-compute-api-1.0/src/samples/images.json new file mode 100644 index 0000000..ce0446d --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/images.json @@ -0,0 +1,20 @@ +{ + "images" : [ + { + "id" : 1, + "name" : "CentOS 5.2", + "updated" : "2010-10-10T12:00:00Z", + "created" : "2010-08-10T12:00:00Z", + "status" : "ACTIVE" + }, + { + "id" : 743, + "name" : "My Server Backup", + "serverId" : 12, + "updated" : "2010-10-10T12:00:00Z", + "created" : "2010-08-10T12:00:00Z", + "status" : "SAVING", + "progress" : 80 + } + ] +} diff --git a/openstack-compute-api-1.0/src/samples/images.xml b/openstack-compute-api-1.0/src/samples/images.xml new file mode 100644 index 0000000..f579331 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/images.xml @@ -0,0 +1,15 @@ + + + + + + diff --git a/openstack-compute-api-1.0/src/samples/ipgroup.json b/openstack-compute-api-1.0/src/samples/ipgroup.json new file mode 100644 index 0000000..dd6c013 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/ipgroup.json @@ -0,0 +1,7 @@ +{ + "sharedIpGroup" : { + "id" : 1234, + "name" : "Shared IP Group 1", + "servers" : [422] + } +} diff --git a/openstack-compute-api-1.0/src/samples/ipgroup.xml b/openstack-compute-api-1.0/src/samples/ipgroup.xml new file mode 100644 index 0000000..f75fb14 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/ipgroup.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/openstack-compute-api-1.0/src/samples/ipgroup2.json b/openstack-compute-api-1.0/src/samples/ipgroup2.json new file mode 100644 index 0000000..d397b1a --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/ipgroup2.json @@ -0,0 +1,6 @@ +{ + "sharedIpGroup" : { + "name" : "Shared IP Group 1", + "server" : 422 + } +} diff --git a/openstack-compute-api-1.0/src/samples/ipgroup2.xml b/openstack-compute-api-1.0/src/samples/ipgroup2.xml new file mode 100644 index 0000000..fca3656 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/ipgroup2.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/openstack-compute-api-1.0/src/samples/ipgroups.json b/openstack-compute-api-1.0/src/samples/ipgroups.json new file mode 100644 index 0000000..32e9677 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/ipgroups.json @@ -0,0 +1,14 @@ +{ + "sharedIpGroups" : [ + { + "id" : 1234, + "name" : "Shared IP Group 1", + "servers" : [422, 3445] + }, + { + "id" : 5678, + "name" : "Shared IP Group 2", + "servers" : [23203, 2456, 9891] + } + ] +} diff --git a/openstack-compute-api-1.0/src/samples/ipgroups.xml b/openstack-compute-api-1.0/src/samples/ipgroups.xml new file mode 100644 index 0000000..e93a470 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/ipgroups.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/limits.json b/openstack-compute-api-1.0/src/samples/limits.json new file mode 100644 index 0000000..e522801 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/limits.json @@ -0,0 +1,56 @@ +{ + "limits" : { + "rate" : [ + { + "verb" : "POST", + "URI" : "*", + "regex" : ".*", + "value" : 10, + "remaining" : 2, + "unit" : "MINUTE", + "resetTime" : 1244425439 + }, + { + "verb" : "POST", + "URI" : "*/servers", + "regex" : "^/servers", + "value" : 25, + "remaining" : 24, + "unit" : "DAY", + "resetTime" : 1244511839 + }, + { + "verb" : "PUT", + "URI" : "*", + "regex" : ".*", + "value" : 10, + "remaining" : 2, + "unit" : "MINUTE", + "resetTime" : 1244425439 + }, + { + "verb" : "GET", + "URI" : "*", + "regex" : ".*", + "value" : 3, + "remaining" : 3, + "unit" : "MINUTE", + "resetTime" : 1244425439 + }, + { + "verb" : "DELETE", + "URI" : "*", + "regex" : ".*", + "value" : 100, + "remaining" : 100, + "unit" : "MINUTE", + "resetTime" : 1244425439 + } + ], + "absolute" : { + "maxTotalRAMSize" : 51200, + "maxIPGroups" : 50, + "maxIPGroupMembers" : 25 + } + } +} diff --git a/openstack-compute-api-1.0/src/samples/limits.xml b/openstack-compute-api-1.0/src/samples/limits.xml new file mode 100644 index 0000000..c9bd37e --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/limits.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/openstack-compute-api-1.0/src/samples/notfound.json b/openstack-compute-api-1.0/src/samples/notfound.json new file mode 100644 index 0000000..64cf4af --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/notfound.json @@ -0,0 +1,7 @@ +{ + "itemNotFound" : { + "code" : 404, + "message" : "Not Found", + "details" : "Error Details..." + } +} diff --git a/openstack-compute-api-1.0/src/samples/notfound.xml b/openstack-compute-api-1.0/src/samples/notfound.xml new file mode 100644 index 0000000..2ec2884 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/notfound.xml @@ -0,0 +1,4 @@ + + Not Found +
        Error Details...
        +
        \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/notimplemented.json b/openstack-compute-api-1.0/src/samples/notimplemented.json new file mode 100644 index 0000000..fa7a16c --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/notimplemented.json @@ -0,0 +1,7 @@ +{ + "notImplemented" : { + "code" : 501, + "message" : "Not Implemented", + "details" : "Error Details..." + } +} diff --git a/openstack-compute-api-1.0/src/samples/notimplemented.xml b/openstack-compute-api-1.0/src/samples/notimplemented.xml new file mode 100644 index 0000000..334887c --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/notimplemented.xml @@ -0,0 +1,4 @@ + + Not Implemented +
        Error Details...
        +
        diff --git a/openstack-compute-api-1.0/src/samples/overlimit.json b/openstack-compute-api-1.0/src/samples/overlimit.json new file mode 100644 index 0000000..c772390 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/overlimit.json @@ -0,0 +1,8 @@ +{ + "overLimit" : { + "code" : 413, + "message" : "OverLimit Retry...", + "details" : "Error Details...", + "retryAfter" : "2010-08-01T00:00:00Z" + } +} diff --git a/openstack-compute-api-1.0/src/samples/overlimit.xml b/openstack-compute-api-1.0/src/samples/overlimit.xml new file mode 100644 index 0000000..a9bebe0 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/overlimit.xml @@ -0,0 +1,5 @@ + + OverLimit Retry... +
        Error Details...
        +
        diff --git a/openstack-compute-api-1.0/src/samples/private.json b/openstack-compute-api-1.0/src/samples/private.json new file mode 100644 index 0000000..d0d2057 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/private.json @@ -0,0 +1,5 @@ +{ + "private" : [ + "10.176.42.16" + ] +} diff --git a/openstack-compute-api-1.0/src/samples/private.xml b/openstack-compute-api-1.0/src/samples/private.xml new file mode 100644 index 0000000..7a336fe --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/private.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/openstack-compute-api-1.0/src/samples/public.json b/openstack-compute-api-1.0/src/samples/public.json new file mode 100644 index 0000000..29a06b0 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/public.json @@ -0,0 +1,6 @@ +{ + "public" : [ + "67.23.10.132", + "67.23.10.131" + ] +} diff --git a/openstack-compute-api-1.0/src/samples/public.xml b/openstack-compute-api-1.0/src/samples/public.xml new file mode 100644 index 0000000..2fb3254 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/public.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/openstack-compute-api-1.0/src/samples/rateLimits.xml b/openstack-compute-api-1.0/src/samples/rateLimits.xml new file mode 100644 index 0000000..92ecffb --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/rateLimits.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + … + diff --git a/openstack-compute-api-1.0/src/samples/reboot.json b/openstack-compute-api-1.0/src/samples/reboot.json new file mode 100644 index 0000000..2a070f9 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/reboot.json @@ -0,0 +1,5 @@ +{ + "reboot" : { + "type" : "HARD" + } +} diff --git a/openstack-compute-api-1.0/src/samples/reboot.xml b/openstack-compute-api-1.0/src/samples/reboot.xml new file mode 100644 index 0000000..b000ae6 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/reboot.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/rebuild.json b/openstack-compute-api-1.0/src/samples/rebuild.json new file mode 100644 index 0000000..56a02a2 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/rebuild.json @@ -0,0 +1,5 @@ +{ + "rebuild" : { + "imageId" : 2 + } +} diff --git a/openstack-compute-api-1.0/src/samples/rebuild.xml b/openstack-compute-api-1.0/src/samples/rebuild.xml new file mode 100644 index 0000000..aed0199 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/rebuild.xml @@ -0,0 +1,4 @@ + + + diff --git a/openstack-compute-api-1.0/src/samples/resize.json b/openstack-compute-api-1.0/src/samples/resize.json new file mode 100644 index 0000000..fd25323 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/resize.json @@ -0,0 +1,5 @@ +{ + "resize" : { + "flavorId" : 3 + } +} diff --git a/openstack-compute-api-1.0/src/samples/resize.xml b/openstack-compute-api-1.0/src/samples/resize.xml new file mode 100644 index 0000000..ed38aba --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/resize.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/resizeNotAllowed.json b/openstack-compute-api-1.0/src/samples/resizeNotAllowed.json new file mode 100644 index 0000000..45f652d --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/resizeNotAllowed.json @@ -0,0 +1,7 @@ +{ + "resizeNotAllowed" : { + "code" : 403, + "message" : "Resize Not Allowed", + "details" : "Error Details..." + } +} diff --git a/openstack-compute-api-1.0/src/samples/resizeNotAllowed.xml b/openstack-compute-api-1.0/src/samples/resizeNotAllowed.xml new file mode 100644 index 0000000..a4fb8ae --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/resizeNotAllowed.xml @@ -0,0 +1,4 @@ + + Resize Not Allowed +
        Error Details...
        +
        diff --git a/openstack-compute-api-1.0/src/samples/revertresize.json b/openstack-compute-api-1.0/src/samples/revertresize.json new file mode 100644 index 0000000..2ddf6e5 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/revertresize.json @@ -0,0 +1,3 @@ +{ + "revertResize" : null +} diff --git a/openstack-compute-api-1.0/src/samples/revertresize.xml b/openstack-compute-api-1.0/src/samples/revertresize.xml new file mode 100644 index 0000000..fca068d --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/revertresize.xml @@ -0,0 +1,3 @@ + + + diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-encoding.json b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-encoding.json new file mode 100644 index 0000000..ce3caa2 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-encoding.json @@ -0,0 +1,16 @@ +{ + "server" : { + "name" : "new-server-test", + "imageId" : 1, + "flavorId" : 1, + "metadata" : { + "My Server Name" : "Apache1" + }, + "personality" : [ + { + "path" : "/etc/banner.txt", + "contents" : "*(&)(*^^&%" + } + ] + } +} diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-encoding.xml b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-encoding.xml new file mode 100644 index 0000000..151ddc4 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-encoding.xml @@ -0,0 +1,11 @@ + + + + + Apache1 + + + *(&)(*^^&% + + diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-length.json b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-length.json new file mode 100644 index 0000000..efc49cf --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-length.json @@ -0,0 +1,16 @@ +{ + "server" : { + "name" : "new-server-test", + "imageId" : 1, + "flavorId" : 1, + "metadata" : { + "My Server Name" : "Apache1" + }, + "personality" : [ + { + "path" : "/etc/banner.jpg", + "contents" : "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" + } + ] + } +} \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-length.xml b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-length.xml new file mode 100644 index 0000000..ebaefe5 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-length.xml @@ -0,0 +1,13 @@ + + + + + Apache1 + + + +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 + + + diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-path.json b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-path.json new file mode 100644 index 0000000..d840586 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-path.json @@ -0,0 +1,16 @@ +{ + "server" : { + "name" : "new-server-test", + "imageId" : 1, + "flavorId" : 1, + "metadata" : { + "My Server Name" : "Apache1" + }, + "personality" : [ + { + "path" : "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", + "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" + } + ] + } +} diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-path.xml b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-path.xml new file mode 100644 index 0000000..9dec56b --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-file-path.xml @@ -0,0 +1,18 @@ + + + + + Apache1 + + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2gg + YSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4u + LnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNv + bnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3cs + IHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhv + cml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + + diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-files.json b/openstack-compute-api-1.0/src/samples/server-post-req-bad-files.json new file mode 100644 index 0000000..70c13c1 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-files.json @@ -0,0 +1,36 @@ +{ + "server" : { + "name" : "new-server-test", + "imageId" : 1, + "flavorId" : 1, + "metadata" : { + "My Server Name" : "Apache1" + }, + "personality" : [ + { + "path" : "/etc/banner.txt", + "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" + }, + { + "path" : "/etc/banner2.txt", + "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" + }, + { + "path" : "/etc/banner3.txt", + "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" + }, + { + "path" : "/etc/banner4.txt", + "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" + }, + { + "path" : "/etc/banner5.txt", + "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" + }, + { + "path" : "/etc/banner6.txt", + "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" + } + ] + } +} diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-files.xml b/openstack-compute-api-1.0/src/samples/server-post-req-bad-files.xml new file mode 100644 index 0000000..9726e20 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-files.xml @@ -0,0 +1,58 @@ + + + + + Apache1 + + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2gg + YSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4u + LnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNv + bnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3cs + IHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhv + cml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2gg + YSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4u + LnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNv + bnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3cs + IHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhv + cml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2gg + YSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4u + LnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNv + bnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3cs + IHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhv + cml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2gg + YSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4u + LnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNv + bnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3cs + IHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhv + cml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2gg + YSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4u + LnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNv + bnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3cs + IHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhv + cml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2gg + YSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4u + LnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNv + bnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3cs + IHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhv + cml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + + diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-key.json b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-key.json new file mode 100644 index 0000000..4bffdee --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-key.json @@ -0,0 +1,16 @@ +{ + "server" : { + "name" : "new-server-test", + "imageId" : 1, + "flavorId" : 1, + "metadata" : { + "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" : "Apache1" + }, + "personality" : [ + { + "path" : "/etc/banner.txt", + "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" + } + ] + } +} diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-key.xml b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-key.xml new file mode 100644 index 0000000..1f2fd0d --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-key.xml @@ -0,0 +1,18 @@ + + + + + Apache1 + + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2gg + YSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4u + LnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNv + bnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3cs + IHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhv + cml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + + diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-value.json b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-value.json new file mode 100644 index 0000000..8e5aab8 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-value.json @@ -0,0 +1,16 @@ +{ + "server" : { + "name" : "new-server-test", + "imageId" : 1, + "flavorId" : 1, + "metadata" : { + "My Server Name" : "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" + }, + "personality" : [ + { + "path" : "/etc/banner.txt", + "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" + } + ] + } +} diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-value.xml b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-value.xml new file mode 100644 index 0000000..18710da --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta-value.xml @@ -0,0 +1,18 @@ + + + + + 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Ru2WC/Io+83sB3NVdH8rWpTYxrcWdy6nYk4xv+lCiynJHMNBc7jmGDOfU/40VelsTHK6M/KsQc0U7SJui2enTinKN3GKaxOKdGTXceaNb71GAeaUjJx6Uzfg4HNAA56KKbt3H0pWGTkUKTxQMTZ1prCpT1pre1IEMXpiremof7ShHvmqoBzWjpC51CP2BqZv3WXBe8jt9Idn8+OI/vNtT6doN9f32yaUA9c+lcZp/iaHSvGU1vcPtjdRjPSvXtJ1DT96XKTx9M9a8pxPUkmVtV8P3NlpEuGDgLXmXidSmiwoRglxXreu+KLCW2a1jnVnbggEV5P41I8iBR0L1pS5fapRIqxapNyOOHGaikXIz2qxtyKryE5xXps80rv6VXbg9KtMO9Q7N0irgnJ7VI0W9PuVRpTHbTyKg2vIAAFPf6mtazu0maOSPOVYqeMU3TbPdbhZo0VckgEHP4VYstOFvcORyhOQB2NYNnVFNGsk2yPc78U0XQdiQSVI69uKY0AlUR8g561ft7eLYU2gL0xjpWTNkFjLLcoCwI46k5q5DZLbxtNM+9wcg+9Jb7LfgDgHiqmu6g1raRTGMvCJVEgXsppoTZgeJLJ7tmukkkS4gZZo + + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2gg + YSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4u + LnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNv + bnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3cs + IHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhv + cml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + + diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta.json b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta.json new file mode 100644 index 0000000..bec05a8 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta.json @@ -0,0 +1,21 @@ +{ + "server" : { + "name" : "new-server-test", + "imageId" : 1, + "flavorId" : 1, + "metadata" : { + "My Server Name" : "Apache1" + "My Server Name2" : "Apache2" + "My Server Name3" : "Apache3" + "My Server Name4" : "Apache4" + "My Server Name5" : "Apache5" + "My Server Name6" : "Apache6" + }, + "personality" : [ + { + "path" : "/etc/banner.txt", + "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" + } + ] + } +} diff --git a/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta.xml b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta.xml new file mode 100644 index 0000000..e000c77 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req-bad-meta.xml @@ -0,0 +1,23 @@ + + + + + Apache1 + Apache2 + Apache3 + Apache4 + Apache5 + Apache6 + + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2gg + YSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4u + LnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNv + bnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3cs + IHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhv + cml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + + diff --git a/openstack-compute-api-1.0/src/samples/server-post-req.json b/openstack-compute-api-1.0/src/samples/server-post-req.json new file mode 100644 index 0000000..81197d6 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req.json @@ -0,0 +1,16 @@ +{ + "server" : { + "name" : "new-server-test", + "imageId" : 1, + "flavorId" : 1, + "metadata" : { + "My Server Name" : "Apache1" + }, + "personality" : [ + { + "path" : "/etc/banner.txt", + "contents" : "ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 b25zLiINCg0KLVJpY2hhcmQgQmFjaA==" + } + ] + } +} diff --git a/openstack-compute-api-1.0/src/samples/server-post-req.xml b/openstack-compute-api-1.0/src/samples/server-post-req.xml new file mode 100644 index 0000000..0b40d25 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-req.xml @@ -0,0 +1,21 @@ + + + + + Apache1 + + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBp + dCBtb3ZlcyBpbiBqdXN0IHN1Y2ggYSBkaXJlY3Rpb24gYW5k + IGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVs + c2lvbi4uLnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4g + QnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNvbnMgYW5kIHRo + ZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlv + dSB3aWxsIGtub3csIHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vy + c2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhvcml6 + b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + + diff --git a/openstack-compute-api-1.0/src/samples/server-post-resp.json b/openstack-compute-api-1.0/src/samples/server-post-resp.json new file mode 100644 index 0000000..f69acaa --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-resp.json @@ -0,0 +1,23 @@ +{ + "server" : { + "id" : 1235, + "name" : "new-server-test", + "imageId" : 1, + "flavorId" : 1, + "hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0", + "progress" : 0, + "status" : "BUILD", + "adminPass" : "GFf1j9aP", + "metadata" : { + "My Server Name" : "Apache1" + }, + "addresses" : { + "public" : [ + "67.23.10.138" + ], + "private" : [ + "10.176.42.19" + ] + } + } +} diff --git a/openstack-compute-api-1.0/src/samples/server-post-resp.xml b/openstack-compute-api-1.0/src/samples/server-post-resp.xml new file mode 100644 index 0000000..d35a9af --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-post-resp.xml @@ -0,0 +1,20 @@ + + + + + Apache1 + + + + + + + + + + \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/server-put-req.json b/openstack-compute-api-1.0/src/samples/server-put-req.json new file mode 100644 index 0000000..9c373b4 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-put-req.json @@ -0,0 +1,7 @@ +{ + "server" : + { + "name" : "new-server-test", + "adminPass" : "newPassword" + } +} diff --git a/openstack-compute-api-1.0/src/samples/server-put-req.xml b/openstack-compute-api-1.0/src/samples/server-put-req.xml new file mode 100644 index 0000000..178cff1 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server-put-req.xml @@ -0,0 +1,4 @@ + + + diff --git a/openstack-compute-api-1.0/src/samples/server.json b/openstack-compute-api-1.0/src/samples/server.json new file mode 100644 index 0000000..c034a18 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server.json @@ -0,0 +1,24 @@ +{ + "server" : { + "id" : 1234, + "name" : "sample-server", + "imageId" : 1, + "flavorId" : 1, + "hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0", + "status" : "BUILD", + "progress" : 60, + "addresses" : { + "public" : [ + "67.23.10.132", + "67.23.10.131" + ], + "private" : [ + "10.176.42.16" + ] + }, + "metadata" : { + "Server Label" : "Web Head 1", + "Image Version" : "2.1" + } + } +} diff --git a/openstack-compute-api-1.0/src/samples/server.xml b/openstack-compute-api-1.0/src/samples/server.xml new file mode 100644 index 0000000..3d2ef00 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/server.xml @@ -0,0 +1,22 @@ + + + + + Web Head 1 + 2.1 + + + + + + + + + + + \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/serverCap.json b/openstack-compute-api-1.0/src/samples/serverCap.json new file mode 100644 index 0000000..a894812 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/serverCap.json @@ -0,0 +1,7 @@ +{ + "serverCapacityUnavailable" : { + "code" : 503, + "message" : "Server Capacity Unavailable", + "details" : "Error Details..." + } +} diff --git a/openstack-compute-api-1.0/src/samples/serverCap.xml b/openstack-compute-api-1.0/src/samples/serverCap.xml new file mode 100644 index 0000000..030a166 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/serverCap.xml @@ -0,0 +1,4 @@ + + Server Capacity Unavailable +
        Error Details...
        +
        diff --git a/openstack-compute-api-1.0/src/samples/servers.json b/openstack-compute-api-1.0/src/samples/servers.json new file mode 100644 index 0000000..5b20709 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/servers.json @@ -0,0 +1,45 @@ +{ + "servers" : [ + { + "id" : 1234, + "name" : "sample-server", + "imageId" : 1, + "flavorId" : 1, + "hostId" : "e4d909c290d0fb1ca068ffaddf22cbd0", + "status" : "BUILD", + "progress" : 60, + "addresses" : { + "public" : [ + "67.23.10.132", + "67.23.10.131" + ], + "private" : [ + "10.176.42.16" + ] + }, + "metadata" : { + "Server Label" : "Web Head 1", + "Image Version" : "2.1" + } + }, + { + "id" : 5678, + "name" : "sample-server2", + "imageId" : 1, + "flavorId" : 1, + "hostId" : "9e107d9d372bb6826bd81d3542a419d6", + "status" : "ACTIVE", + "addresses" : { + "public" : [ + "67.23.10.133" + ], + "private" : [ + "10.176.42.17" + ] + }, + "metadata" : { + "Server Label" : "DB 1" + } + } + ] +} diff --git a/openstack-compute-api-1.0/src/samples/servers.xml b/openstack-compute-api-1.0/src/samples/servers.xml new file mode 100644 index 0000000..ff2f9aa --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/servers.xml @@ -0,0 +1,42 @@ + + + + + + + Web Head 1 + 2.1 + + + + + + + + + + + + + + + DB 1 + + + + + + + + + + + + diff --git a/openstack-compute-api-1.0/src/samples/serviceNotAvailable.json b/openstack-compute-api-1.0/src/samples/serviceNotAvailable.json new file mode 100644 index 0000000..748093c --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/serviceNotAvailable.json @@ -0,0 +1,7 @@ +{ + "serviceUnavailable" : { + "code" : 503, + "message" : "Unavailable", + "details" : "Error Details..." + } +} diff --git a/openstack-compute-api-1.0/src/samples/serviceNotAvailable.xml b/openstack-compute-api-1.0/src/samples/serviceNotAvailable.xml new file mode 100644 index 0000000..f778bd9 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/serviceNotAvailable.xml @@ -0,0 +1,4 @@ + + Unavailable +
        Error Details...
        +
        diff --git a/openstack-compute-api-1.0/src/samples/shareip.json b/openstack-compute-api-1.0/src/samples/shareip.json new file mode 100644 index 0000000..99affc1 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/shareip.json @@ -0,0 +1,6 @@ +{ + "shareIp" : { + "sharedIpGroupId" : 1234, + "configureServer" : true + } +} diff --git a/openstack-compute-api-1.0/src/samples/shareip.xml b/openstack-compute-api-1.0/src/samples/shareip.xml new file mode 100644 index 0000000..ccbed21 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/shareip.xml @@ -0,0 +1,4 @@ + + + diff --git a/openstack-compute-api-1.0/src/samples/snapshot.json b/openstack-compute-api-1.0/src/samples/snapshot.json new file mode 100644 index 0000000..9866849 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/snapshot.json @@ -0,0 +1,5 @@ +{ + "snapshot" : { + "imageName" : "Just in case" + } +} diff --git a/openstack-compute-api-1.0/src/samples/snapshot.xml b/openstack-compute-api-1.0/src/samples/snapshot.xml new file mode 100644 index 0000000..06f2289 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/snapshot.xml @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/unauth.json b/openstack-compute-api-1.0/src/samples/unauth.json new file mode 100644 index 0000000..0ec41b2 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/unauth.json @@ -0,0 +1,7 @@ +{ + "unauthorized" : { + "code" : 401, + "message" : "Not authorized!", + "details" : "Error Details..." + } +} diff --git a/openstack-compute-api-1.0/src/samples/unauth.xml b/openstack-compute-api-1.0/src/samples/unauth.xml new file mode 100644 index 0000000..3f3bd81 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/unauth.xml @@ -0,0 +1,6 @@ + + + + Not authorized! +
        Error Details...
        +
        \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/samples/version.json b/openstack-compute-api-1.0/src/samples/version.json new file mode 100644 index 0000000..a466be6 --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/version.json @@ -0,0 +1,8 @@ +{ + "version": { + "status": "BETA", + "id": "v1.0", + "docURL" : "http://docs.rackspacecloud.com/cs/cs-devguid-v1.0.pdf", + "wadl" : "https://servers.api.rackspacecloud.com/v1.0/application.wadl" + } +} diff --git a/openstack-compute-api-1.0/src/samples/version.xml b/openstack-compute-api-1.0/src/samples/version.xml new file mode 100644 index 0000000..478aafc --- /dev/null +++ b/openstack-compute-api-1.0/src/samples/version.xml @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/openstack-compute-api-1.0/src/style/schema.css b/openstack-compute-api-1.0/src/style/schema.css new file mode 100644 index 0000000..f174ca5 --- /dev/null +++ b/openstack-compute-api-1.0/src/style/schema.css @@ -0,0 +1,82 @@ +/* + * (C) 2009 Rackspace Hosting, All Rights Reserved. + */ +body, div, dl, dt, dd, ul, ol, li, h2, h3, +h4, h5, h6, pre, code, form, fieldset, legend, +input, button, textarea, p, blockquote, th, td { + text-align: left; +} + +h1 { + font-size: 350%; + margin-bottom: 10px; +} + +#Content { + border: 1px solid; + padding: 0px 40px 40px; + margin-left: 155px; +} + +#SrcContent { + padding: 0px 40px 40px; + display: none; + margin-left: 155px; +} + +#Controller { + position: fixed; + width: 145px; + left: 10px; + top: 10px; +} + +.Sample { + display: none; +} + +.EnumValue{ + padding: 10px 0px; +} + +.EnumDoc{ + padding: 10px 10px 10px 0px; +} + +.ExternHref{ + padding-top: 5px; +} + +.ExternDoc{ + padding-right: 10px; +} + +pre { + overflow: auto; +} + +td { + padding: 0px 0px 0px 10px; + width: 50%; + font-size: 90%; +} + +table { + width: 100%; +} + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +a:link { + color: #000090; +} + +a:visited { + color: #000090; +} diff --git a/openstack-compute-api-1.0/src/style/shjs/sh_acid.css b/openstack-compute-api-1.0/src/style/shjs/sh_acid.css new file mode 100644 index 0000000..a34b786 --- /dev/null +++ b/openstack-compute-api-1.0/src/style/shjs/sh_acid.css @@ -0,0 +1,151 @@ +pre.sh_sourceCode { + background-color: #eeeeee; + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_keyword { + color: #bb7977; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_type { + color: #8080c0; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_string { + color: #a68500; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_regexp { + color: #a68500; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_specialchar { + color: #ff00ff; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_comment { + color: #ff8000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_number { + color: #800080; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_preproc { + color: #0080c0; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_symbol { + color: #ff0080; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_function { + color: #004466; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_cbracket { + color: #ff0080; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_url { + color: #a68500; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_date { + color: #bb7977; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_time { + color: #bb7977; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_file { + color: #bb7977; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_ip { + color: #a68500; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_name { + color: #a68500; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_variable { + color: #0080c0; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_oldfile { + color: #ff00ff; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_newfile { + color: #a68500; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_difflines { + color: #bb7977; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_selector { + color: #0080c0; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_property { + color: #bb7977; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_value { + color: #a68500; + font-weight: normal; + font-style: normal; +} + diff --git a/openstack-compute-api-1.0/src/style/shjs/sh_darkblue.css b/openstack-compute-api-1.0/src/style/shjs/sh_darkblue.css new file mode 100644 index 0000000..23fd6da --- /dev/null +++ b/openstack-compute-api-1.0/src/style/shjs/sh_darkblue.css @@ -0,0 +1,151 @@ +pre.sh_sourceCode { + background-color: #000040; + color: #C7C7C7; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_keyword { + color: #ffff60; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_type { + color: #60ff60; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_string { + color: #ffa0a0; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_regexp { + color: #ffa0a0; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_specialchar { + color: #ffa500; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_comment { + color: #80a0ff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_number { + color: #42cad9; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_preproc { + color: #ff80ff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_symbol { + color: #d8e91b; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_function { + color: #ffffff; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_cbracket { + color: #d8e91b; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_url { + color: #ffa0a0; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_date { + color: #ffff60; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_time { + color: #ffff60; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_file { + color: #ffff60; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_ip { + color: #ffa0a0; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_name { + color: #ffa0a0; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_variable { + color: #26e0e7; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_oldfile { + color: #ffa500; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_newfile { + color: #ffa0a0; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_difflines { + color: #ffff60; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_selector { + color: #26e0e7; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_property { + color: #ffff60; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_value { + color: #ffa0a0; + font-weight: normal; + font-style: normal; +} + diff --git a/openstack-compute-api-1.0/src/style/shjs/sh_emacs.css b/openstack-compute-api-1.0/src/style/shjs/sh_emacs.css new file mode 100644 index 0000000..6e019cb --- /dev/null +++ b/openstack-compute-api-1.0/src/style/shjs/sh_emacs.css @@ -0,0 +1,139 @@ +pre.sh_sourceCode { + background-color: #ffffff; + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_keyword { + color: #9c20ee; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_type { + color: #208920; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_string { + color: #bd8d8b; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_regexp { + color: #bd8d8b; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_specialchar { + color: #bd8d8b; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_comment { + color: #ac2020; + font-weight: normal; + font-style: italic; +} + +pre.sh_sourceCode .sh_number { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_preproc { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_function { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_url { + color: #bd8d8b; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_date { + color: #9c20ee; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_time { + color: #9c20ee; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_file { + color: #9c20ee; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_ip { + color: #bd8d8b; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_name { + color: #bd8d8b; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_variable { + color: #0000ff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_oldfile { + color: #bd8d8b; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_newfile { + color: #bd8d8b; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_difflines { + color: #9c20ee; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_selector { + color: #0000ff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_property { + color: #9c20ee; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_value { + color: #bd8d8b; + font-weight: normal; + font-style: normal; +} + diff --git a/openstack-compute-api-1.0/src/style/shjs/sh_night.css b/openstack-compute-api-1.0/src/style/shjs/sh_night.css new file mode 100644 index 0000000..d8d371b --- /dev/null +++ b/openstack-compute-api-1.0/src/style/shjs/sh_night.css @@ -0,0 +1,151 @@ +pre.sh_sourceCode { + background-color: #000044; + color: #dd00ff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_keyword { + color: #ffffff; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_type { + color: #f1157c; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_string { + color: #ffffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_regexp { + color: #ffffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_specialchar { + color: #82d66d; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_comment { + color: #bfbfbf; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_number { + color: #8ee119; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_preproc { + color: #00bb00; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_symbol { + color: #e7ee5c; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_function { + color: #ff06cd; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_cbracket { + color: #e7ee5c; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_url { + color: #ffffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_date { + color: #ffffff; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_time { + color: #ffffff; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_file { + color: #ffffff; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_ip { + color: #ffffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_name { + color: #ffffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_variable { + color: #7aec27; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_oldfile { + color: #82d66d; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_newfile { + color: #ffffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_difflines { + color: #ffffff; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_selector { + color: #7aec27; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_property { + color: #ffffff; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_value { + color: #ffffff; + font-weight: normal; + font-style: normal; +} + diff --git a/openstack-compute-api-1.0/src/style/shjs/sh_pablo.css b/openstack-compute-api-1.0/src/style/shjs/sh_pablo.css new file mode 100644 index 0000000..173cd7b --- /dev/null +++ b/openstack-compute-api-1.0/src/style/shjs/sh_pablo.css @@ -0,0 +1,151 @@ +pre.sh_sourceCode { + background-color: #000000; + color: #ffffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_keyword { + color: #c0c000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_type { + color: #00c000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_string { + color: #00ffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_regexp { + color: #00ffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_specialchar { + color: #0000ff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_comment { + color: #808080; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_number { + color: #00ffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_preproc { + color: #00ff00; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_symbol { + color: #ff0000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_function { + color: #ff22b9; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_cbracket { + color: #ff0000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_url { + color: #00ffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_date { + color: #c0c000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_time { + color: #c0c000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_file { + color: #c0c000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_ip { + color: #00ffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_name { + color: #00ffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_variable { + color: #0000c0; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_oldfile { + color: #0000ff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_newfile { + color: #00ffff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_difflines { + color: #c0c000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_selector { + color: #0000c0; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_property { + color: #c0c000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_value { + color: #00ffff; + font-weight: normal; + font-style: normal; +} + diff --git a/openstack-compute-api-1.0/src/style/shjs/sh_print.css b/openstack-compute-api-1.0/src/style/shjs/sh_print.css new file mode 100644 index 0000000..1e8c116 --- /dev/null +++ b/openstack-compute-api-1.0/src/style/shjs/sh_print.css @@ -0,0 +1,145 @@ +pre.sh_sourceCode { + background-color: #ffffff; + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_keyword { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_type { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_string { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_regexp { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_specialchar { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_comment { + color: #666666; + font-weight: normal; + font-style: italic; +} + +pre.sh_sourceCode .sh_number { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_preproc { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_symbol { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_cbracket { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_url { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_date { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_time { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_file { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_ip { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_name { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_variable { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_oldfile { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_newfile { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_difflines { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_selector { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_property { + color: #000000; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_value { + color: #000000; + font-weight: normal; + font-style: normal; +} + diff --git a/openstack-compute-api-1.0/src/style/shjs/sh_style.css b/openstack-compute-api-1.0/src/style/shjs/sh_style.css new file mode 100644 index 0000000..6cd20b4 --- /dev/null +++ b/openstack-compute-api-1.0/src/style/shjs/sh_style.css @@ -0,0 +1,66 @@ +pre.sh_sourceCode { + background-color: white; + color: black; + font-style: normal; + font-weight: normal; +} + +pre.sh_sourceCode .sh_keyword { color: blue; font-weight: bold; } /* language keywords */ +pre.sh_sourceCode .sh_type { color: darkgreen; } /* basic types */ +pre.sh_sourceCode .sh_usertype { color: teal; } /* user defined types */ +pre.sh_sourceCode .sh_string { color: red; font-family: monospace; } /* strings and chars */ +pre.sh_sourceCode .sh_regexp { color: orange; font-family: monospace; } /* regular expressions */ +pre.sh_sourceCode .sh_specialchar { color: pink; font-family: monospace; } /* e.g., \n, \t, \\ */ +pre.sh_sourceCode .sh_comment { color: brown; font-style: italic; } /* comments */ +pre.sh_sourceCode .sh_number { color: purple; } /* literal numbers */ +pre.sh_sourceCode .sh_preproc { color: darkblue; font-weight: bold; } /* e.g., #include, import */ +pre.sh_sourceCode .sh_symbol { color: darkred; } /* e.g., <, >, + */ +pre.sh_sourceCode .sh_function { color: black; font-weight: bold; } /* function calls and declarations */ +pre.sh_sourceCode .sh_cbracket { color: red; } /* block brackets (e.g., {, }) */ +pre.sh_sourceCode .sh_todo { font-weight: bold; background-color: cyan; } /* TODO and FIXME */ + +/* Predefined variables and functions (for instance glsl) */ +pre.sh_sourceCode .sh_predef_var { color: darkblue; } +pre.sh_sourceCode .sh_predef_func { color: darkblue; font-weight: bold; } + +/* for OOP */ +pre.sh_sourceCode .sh_classname { color: teal; } + +/* line numbers (not yet implemented) */ +pre.sh_sourceCode .sh_linenum { color: black; font-family: monospace; } + +/* Internet related */ +pre.sh_sourceCode .sh_url { color: blue; text-decoration: underline; font-family: monospace; } + +/* for ChangeLog and Log files */ +pre.sh_sourceCode .sh_date { color: blue; font-weight: bold; } +pre.sh_sourceCode .sh_time, pre.sh_sourceCode .sh_file { color: darkblue; font-weight: bold; } +pre.sh_sourceCode .sh_ip, pre.sh_sourceCode .sh_name { color: darkgreen; } + +/* for Prolog, Perl... */ +pre.sh_sourceCode .sh_variable { color: darkgreen; } + +/* for LaTeX */ +pre.sh_sourceCode .sh_italics { color: darkgreen; font-style: italic; } +pre.sh_sourceCode .sh_bold { color: darkgreen; font-weight: bold; } +pre.sh_sourceCode .sh_underline { color: darkgreen; text-decoration: underline; } +pre.sh_sourceCode .sh_fixed { color: green; font-family: monospace; } +pre.sh_sourceCode .sh_argument { color: darkgreen; } +pre.sh_sourceCode .sh_optionalargument { color: purple; } +pre.sh_sourceCode .sh_math { color: orange; } +pre.sh_sourceCode .sh_bibtex { color: blue; } + +/* for diffs */ +pre.sh_sourceCode .sh_oldfile { color: orange; } +pre.sh_sourceCode .sh_newfile { color: darkgreen; } +pre.sh_sourceCode .sh_difflines { color: blue; } + +/* for css */ +pre.sh_sourceCode .sh_selector { color: purple; } +pre.sh_sourceCode .sh_property { color: blue; } +pre.sh_sourceCode .sh_value { color: darkgreen; font-style: italic; } + +/* other */ +pre.sh_sourceCode .sh_section { color: black; font-weight: bold; } +pre.sh_sourceCode .sh_paren { color: red; } +pre.sh_sourceCode .sh_attribute { color: darkgreen; } diff --git a/openstack-compute-api-1.0/src/style/shjs/sh_whitengrey.css b/openstack-compute-api-1.0/src/style/shjs/sh_whitengrey.css new file mode 100644 index 0000000..41df0e2 --- /dev/null +++ b/openstack-compute-api-1.0/src/style/shjs/sh_whitengrey.css @@ -0,0 +1,139 @@ +pre.sh_sourceCode { + background-color: #ffffff; + color: #696969; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_keyword { + color: #696969; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_type { + color: #696969; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_string { + color: #008800; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_regexp { + color: #008800; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_specialchar { + color: #008800; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_comment { + color: #1326a2; + font-weight: normal; + font-style: italic; +} + +pre.sh_sourceCode .sh_number { + color: #bb00ff; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_preproc { + color: #470000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_function { + color: #000000; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_url { + color: #008800; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_date { + color: #696969; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_time { + color: #696969; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_file { + color: #696969; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_ip { + color: #008800; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_name { + color: #008800; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_variable { + color: #696969; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_oldfile { + color: #008800; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_newfile { + color: #008800; + font-weight: normal; + font-style: normal; +} + +pre.sh_sourceCode .sh_difflines { + color: #696969; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_selector { + color: #696969; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_property { + color: #696969; + font-weight: bold; + font-style: normal; +} + +pre.sh_sourceCode .sh_value { + color: #008800; + font-weight: normal; + font-style: normal; +} + diff --git a/openstack-compute-api-1.0/src/xsd/actions.xsd b/openstack-compute-api-1.0/src/xsd/actions.xsd new file mode 100644 index 0000000..c67e929 --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/actions.xsd @@ -0,0 +1,256 @@ + + + + + + + + + + Server Actions + + + +

        + This schema file defines actions that can be performed on a + cloud server. All cloud server actions are derived from the Action type. +

        +
        +
        + + + + +

        + Performs a HARD or SOFT reboot. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + Rebuilds a server. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + Resizes a server. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + Confirms a resize action. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + Reverts a resize action. +

        +
        + + + + + + + + + + +
        +
        + + + + + + +

        + This is the base type for all server actions. It is simply + a marker abstract type used to differentiate an Action + element from other elements. +

        +
        +
        +
        + + + + + + + +

        + The type of reboot to perform. +

        +
        +
        +
        +
        +
        +
        + + + + + + + +

        + The id of an image to use for the rebuild. +

        +
        +
        +
        +
        +
        +
        + + + + + + + +

        + The id of the flavor to convert to. +

        +
        +
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + +

        + A HARD reboot is equivalent to power cycling the server. + The operating system is not allowed to gracefully + shutdown. +

        +
        +
        +
        + + + +

        + With a SOFT reboot, the operating system is signaled to + restart. This allows for a graceful shutdown of all + processes. +

        +
        +
        +
        +
        +
        +
        + diff --git a/openstack-compute-api-1.0/src/xsd/annot.xsd b/openstack-compute-api-1.0/src/xsd/annot.xsd new file mode 100644 index 0000000..1eef3b6 --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/annot.xsd @@ -0,0 +1,625 @@ + + + + + + + + + + TRC Annotations + + +

        + The following is a list of custom annotations that are used in + XML Schema descriptions for version 1.0 of the Cloud Servers + API. Each annotation is defined as a single XML element in + the + http://docs.rackspacecloud.com/xsd-ext/v1.0 namespace. + These elements can be added as annotations via the appinfo + schema tag. +

        +

        + Annotations allow useful meta-data to be associated with the + schema types. For example, a root element of a particular type + can be associated with a sample document that illustrates its + usage. Annotations also provide hints when converting schema + into presentation markups such as XHTML, Docbook, and Open + Document Format. +

        +

        + Aside from custom elements, schema types in the Cloud Servers + API are also annotated with documentation tags. These tags + always contain text in XHTML 1.1 block elements. +

        +
        +
        + + + + + +

        + Get access to the xml: attribute groups for xml:lang needed + by the Documentation type. +

        +
        +
        +
        + + + + + + + + +

        + This is a meta-annotation, it is only used only when + defining another annotation and provides information about + the annotation. +

        +
        +
        +
        + + + + + + + + +

        + Used to embed a fragment of code in the documentation text. +

        +
        +
        +
        + + + + + + + + +

        + Defines a text based title for the current schema document. + The title is used when converting the schema to presentation + markup. +

        +
        +
        +
        + + + + + + + +

        + This tag is a template tag. It places content as is in a + document when converting the schema to some presentation + type. The presentation type is specified with the type + attribute. The contents of head should be well-formed + XML. This places content in the document header (think + html:head) when converting the schema to presentation + markup. See the header tag to place content at the top of + the body content. +

        +
        +
        +
        + + + + + + + +

        + This tag is a template tag. It places content as is in a + document when converting the schema to some presentation + type. The presentation type is specified with the type + attribute. The contents of header should be well-formed + XML. This places content on the top of the presentation + markup -- for XHTML this places content right after the + html:body tag. See the head tag to place content in the + document header. +

        +
        +
        +
        + + + + + + + +

        + This tag is a template tag. It places content as is in a + document when converting the schema to some presentation + type. The presentation type is specified with the type + attribute. The contents of footer should be well-formed + XML. This places content on the bottom of the presentation + markup -- for XHTML this places content before closing the + html:body tag. See the header tag to place content in the + beginning of the document. +

        +
        +
        +
        + + + + + + + +

        + Samples provides a means of displaying several versions of + the same code sample. We can do this to display the same + sample in various formats: XML, JSON. Each sample can + contain an optional description and a code element. +

        +
        +
        +
        + + + + +

        + The link annotation establishes one or more relationships + from a particular Schema document to another file. This is + useful for establishing links between pages when converting + to a presentation markup. +

        +
        + + + + + +

        + In this example, we note that the schema file is indexed + by file index.xsd. Also, there is an alternative version + of this file (schema.rnc) in RelaxNG Compact Syntax. +

        +
        + + + + + + + + + ... +
        + ]]> + + + + +

        + Here we denote a reverse link. We are saying this file + serves as an index to file schema.xsd. +

        +
        + + + + + + + + ... + + ]]> + +
        + + + + + + + + + +

        + This type provides information about a custom annotation. +

        +
        +
        + +
        + + + + +

        + Used to capture documentation usually as XHTML. +

        +
        +
        + + + + +
        + + + + +

        + A template places content as is in a document when + converting the schema to some presentation type. The + presentation type is specified with the type attribute. +

        +
        +
        + + + + + + +

        + Language defines the type of content in the template. It + should be a mime-type. XHTML is assumed if type is not + specified. +

        +
        +
        +
        +
        + + + + +

        + Used to provide example instances of schema elements. +

        +
        +
        + + + + +

        + An optional description or summary of the example. +

        +
        +
        +
        + + + +

        + The example code. +

        +
        +
        +
        +
        + + + +

        + A descriptive title for the sample, the type attribute may + be used as a title if this attribute is not specified. +

        +
        +
        +
        +
        + + + + +

        + A collection of samples. +

        +
        +
        + + + + +

        + An optional description or summary of the example. +

        +
        +
        +
        + + + +

        + A list of samples to display. +

        +
        +
        +
        +
        +
        + + + + +

        + Source code that may be provided inline or that may be + referenced via an href attribute. +

        +
        +
        + + + + + +

        + This provides a link to the source code. If both the + in-line text and the href parameter are specified, + in-line text will be ignored. +

        +
        +
        +
        + + + +

        + A mime type describing the source code. +

        +
        +
        +
        +
        +
        +
        + + + + +

        + Used to establish relationships between documents. +

        +
        +
        + + + + +

        + When linking to an XML document, denotes the QName of the + element to link to. This is usually used when linking + with foreign schema elements. +

        +
        +
        +
        + + + +

        + A mime type describing the type of link. +

        +
        +
        +
        + + + +

        + The relationships from the current document to the + document pointed to by the href attribute. +

        +
        +
        +
        + + + +

        + The relationships from the document pointed to by the href + attribute to the current document. +

        +
        +
        +
        +
        + + + + + +

        + A list of document relationships separated by whitespace. +

        +
        +
        + +
        + + + + +

        + A document relationship used in link elements. In order to + remain flexible, this is not a finite + enumeration. In practice, however, only three relationships + are currently supported: alternate, index, + and schema. The alternate forward + relationship denotes that the linked document can be used as + an alternative to the current document. The index + forward relationship that the link document is an index to + the current document. Finally, the schema + relationship denotes that a schema element from the link + document is used in the current document. +

        +
        +
        + +
        + + + + +

        + A list of annotation types separated by whitespace. +

        +
        +
        + +
        + + + + +

        + This enumeration describes where a custom annotation can be + applied. +

        +
        +
        + + + + +

        + The annotation can be applied to the schema tag. +

        +
        +
        +
        + + + +

        + The annotation can be applied to the element tag. +

        +
        +
        +
        + + + +

        + The annotation can be embedded in the documentation tag + of any schema element. +

        +
        +
        +
        + + + +

        + The annotation can be applied to any element in the XML + Schema namespace. +

        +
        +
        +
        +
        +
        + diff --git a/openstack-compute-api-1.0/src/xsd/api.xjb b/openstack-compute-api-1.0/src/xsd/api.xjb new file mode 100644 index 0000000..fbeff5c --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/api.xjb @@ -0,0 +1,17 @@ + + + + + + + + + + + diff --git a/openstack-compute-api-1.0/src/xsd/api.xsd b/openstack-compute-api-1.0/src/xsd/api.xsd new file mode 100644 index 0000000..0436682 --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/api.xsd @@ -0,0 +1,141 @@ + + + + + + + + + + Cloud Servers™ API Schema Types + + + + + + + + + + + + +

        + This is the main index XML Schema document + for the Cloud Servers API. +

        +
        +
        + + + +

        + Servers and all internal Entities including: Addresses, + Files, and MetaData. +

        +
        +
        +
        + + + +

        + Types related to images. +

        +
        +
        +
        + + + +

        + Types related to flavors. +

        +
        +
        +
        + + + +

        + Types related to shared IP groups. +

        +
        +
        +
        + + + +

        + Types related to backup schedules. +

        +
        +
        +
        + + + +

        + Defines server actions: reboot, rebuild, resize... +

        +
        +
        +
        + + + +

        + All fault types. +

        +
        +
        +
        + + + +

        + Types related to rate and absolute limits. +

        +
        +
        +
        + + + +

        + Types related to API version details. +

        +
        +
        +
        +
        diff --git a/openstack-compute-api-1.0/src/xsd/backup.xsd b/openstack-compute-api-1.0/src/xsd/backup.xsd new file mode 100644 index 0000000..2a2d60c --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/backup.xsd @@ -0,0 +1,374 @@ + + + + + + + + + + Backup Schedule + + + +

        + This schema file defines all entities related to Backup Schedules. +

        +
        +
        + + + + +

        + This element is used to create periodic daily and weekly + images automatically. +

        +
        + + + + + + + + + + +
        +
        + + + + + + +

        + If true, both daily and weekly backup schedules are + disabled. +

        +
        +
        +
        + + + +

        + A WeeklyBackup type that describes the day + of the week in which to perform a weekly backup or + DISABLED if weekly backups are disabled. +

        +
        +
        +
        + + + +

        + A DailyBackup type that describes an hour + range in which to perform a daily backup or DISABLED if + daily backups are disabled. +

        +
        +
        +
        +
        + + + + + +

        + A target GMT hour range in which to perform a daily backup + or DISABLED if daily backups are disabled. +

        +
        +
        + + + + +

        + Daily backups are disabled. +

        +
        +
        +
        + + + +

        + Daily backup target of 00:00–02:00 GMT. +

        +
        +
        +
        + + + +

        + Daily backup target of 02:00–04:00 GMT. +

        +
        +
        +
        + + + +

        + Daily backup target of 04:00–06:00 GMT. +

        +
        +
        +
        + + + +

        + Daily backup target of 06:00–08:00 GMT. +

        +
        +
        +
        + + + +

        + Daily backup target of 08:00–10:00 GMT. +

        +
        +
        +
        + + + +

        + Daily backup target of 10:00–12:00 GMT. +

        +
        +
        +
        + + + +

        + Daily backup target of 12:00–14:00 GMT. +

        +
        +
        +
        + + + +

        + Daily backup target of 14:00–16:00 GMT. +

        +
        +
        +
        + + + +

        + Daily backup target of 16:00–18:00 GMT. +

        +
        +
        +
        + + + +

        + Daily backup target of 18:00–20:00 GMT. +

        +
        +
        +
        + + + +

        + Daily backup target of 20:00–22:00 GMT. +

        +
        +
        +
        + + + +

        + Daily backup target of 22:00–00:00 GMT. +

        +
        +
        +
        +
        +
        + + + + +

        + A target day of the week in which to perform a weekly backup + or DISABLED if daily backups are disabled. +

        +
        +
        + + + + +

        + Weekly backups are disabled. +

        +
        +
        +
        + + + +

        + A weekly backup target of Sunday. +

        +
        +
        +
        + + + +

        + A weekly backup target of Monday. +

        +
        +
        +
        + + + +

        + A weekly backup target of Tuesday. +

        +
        +
        +
        + + + +

        + A weekly backup target of Wednesday. +

        +
        +
        +
        + + + +

        + A weekly backup target of Thursday. +

        +
        +
        +
        + + + +

        + A weekly backup target of Friday. +

        +
        +
        +
        + + + +

        + A weekly backup target of Saturday. +

        +
        +
        +
        + + + +

        + A weekly backup target of Sunday. +

        +
        +
        +
        +
        +
        +
        + diff --git a/openstack-compute-api-1.0/src/xsd/common.xsd b/openstack-compute-api-1.0/src/xsd/common.xsd new file mode 100644 index 0000000..c80395a --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/common.xsd @@ -0,0 +1,51 @@ + + + + + + + + + + Common Types + + + +

        + This schema file defines common types used by multiple + entities and possibly spanning several types of requests. +

        +
        +
        + + + + + +

        + An integer between 0 and 100 that denotes the progress of an + operation. +

        +
        +
        + + + + +
        +
        + diff --git a/openstack-compute-api-1.0/src/xsd/faults.xsd b/openstack-compute-api-1.0/src/xsd/faults.xsd new file mode 100644 index 0000000..721b908 --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/faults.xsd @@ -0,0 +1,480 @@ + + + + + + + + + + + Faults + + + +

        + This schema file defines faults that may be raised by the + Cloud Servers API. These faults are derived from the CloudServersAPIFault. Most faults + extend this type without adding any additional attributes or + elements. The only exception is the OverLimitAPIFault which adds a + retryAfter attribute. Because all faults + extend a standard base type, it should be possible to capture + all API faults with a single catch statement. +

        +

        + Faults are associated with a default HTTP status code that + corresponds to the particular fault type. For example an <itemNotFound> element is associated + with the HTTP status code 404. Some elements, the <cloudServersFault> element for + example, may be associated with multiple status codes. It is + also possible for multiple fault elements to be associated + with the same default code. The examples below showcase the + default status codes for each element type. Note that these + default codes are not part of the formal schema. In practice, + however, an element type will likely be associated with its + corresponding default status code. +

        +
        +
        + + + + + +

        + A generic Cloud Servers API fault. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + The item or resource could not be found. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + The operation is not allowed because the corresponding + server is in a build state. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + There is not enough capacity to honor the request. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + The operation is not allowed because the corresponding + server is being re-sized or backed up. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + The re-size operation is not permitted. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + The API service is currently unavailable. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + Insufficient privileges to honor the request, perhaps an + authentication token needs to be obtained or renewed. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + An absolute or rate limit has been exceeded. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + The request is malformed. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + The Content Type of the request is not supported. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + The HTTP method (or verb) is not + supported by the corresponding resource. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + The operation is currently not implemented. +

        +
        + + + + + + + + + + +
        +
        + + + + + + + +

        + A human readable message that is appropriate for display + to the end user. +

        +
        +
        +
        + + + +

        + The optional <details> element may contain useful + information for tracking down errors (e.g a stack + trace). This information may or may not be appropriate + for display to an end user. +

        +
        +
        +
        +
        + + + +

        + The HTTP status code associated with the current fault. +

        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

        + An optional dateTime denoting when an operation should + be retried. +

        +
        +
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/openstack-compute-api-1.0/src/xsd/flavor.xsd b/openstack-compute-api-1.0/src/xsd/flavor.xsd new file mode 100644 index 0000000..2b24a07 --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/flavor.xsd @@ -0,0 +1,144 @@ + + + + + + + + + + Flavors + + + +

        + This schema file defines all entities related to Flavors. +

        +
        +
        + + + + +

        + The element defines an available hardware configuration for + a server. +

        +
        + + + + + + + + + + +
        +
        + + + + +

        + A collection of flavors. +

        +
        + + + + + + + + + + +
        +
        + + + + + + +

        + The ID of the flavor. +

        +
        +
        +
        + + + +

        + The name of the flavor. +

        +
        +
        +
        + + + +

        + The amount of RAM in the flavor in megabytes. +

        +
        +
        +
        + + + +

        + The amount of disk space in the flavor in gigabytes. +

        +
        +
        +
        +
        + + + + + + +

        + A collection of flavors. +

        +
        +
        +
        +
        +
        + +
        + diff --git a/openstack-compute-api-1.0/src/xsd/image.xsd b/openstack-compute-api-1.0/src/xsd/image.xsd new file mode 100644 index 0000000..9f5837b --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/image.xsd @@ -0,0 +1,263 @@ + + + + + + + + + Images + + + +

        + This schema file defines all entity related to Images. +

        +
        +
        + + + + +

        + Common types used by multiple entities and possibly spanning + several types of requests. +

        +
        +
        +
        + + + + +

        + The element defines a collection of files used to create or + rebuild a server. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + A collection of images. +

        +
        + + + + + + + + + + +
        +
        + + + + + + +

        + The ID of the image. +

        +
        +
        +
        + + + +

        + The name of the image. +

        +
        +
        +
        + + + +

        + An optional ID of the server associated with the image. +

        +
        +
        +
        + + + +

        + A time-stamp identifying the modification time of the + image. +

        +
        +
        +
        + + + +

        + A creation time-stamp for the image. +

        +
        +
        +
        + + + +

        + The progress of the current image operation. +

        +
        +
        +
        + + + +

        + The current state (or status) of the + image. +

        +
        +
        +
        +
        + + + + + + +

        + A collection of images. +

        +
        +
        +
        +
        +
        + + + + + + + +

        + The image is in an unknown state. +

        +
        +
        +
        + + + +

        + All operations have completed successfully, the image is + available for install. +

        +
        +
        +
        + + + +

        + The image is being created (or saved). +

        +
        +
        +
        + + + +

        + The image is being prepared to perform an operation. +

        +
        +
        +
        + + + +

        + A request to perform an operation on the specified image + has been received. The operation is pending. +

        +
        +
        +
        + + + +

        + The requested operation has failed. +

        +
        +
        +
        +
        +
        +
        + diff --git a/openstack-compute-api-1.0/src/xsd/ipgroup.xsd b/openstack-compute-api-1.0/src/xsd/ipgroup.xsd new file mode 100644 index 0000000..3e099f8 --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/ipgroup.xsd @@ -0,0 +1,215 @@ + + + + + + + + + Shared IP Groups + + + +

        + This schema file defines all entities related to Shared IP Groups. +

        +
        +
        + + + + +

        + The element defines a group of servers that can share one or + more public IPs with each other. +

        +
        + + + + + + + + + + +
        +
        + + + +

        + A collection of shared IP groups. +

        +
        + + + + + + + + + + +
        +
        + + + + + + + +

        + An IP group type can take two basic forms. On a request + a single, optional, server ID may be specified… +

        + + + + + + + + +

        + …on a response a server ID list is always returned. This + server list may be empty… +

        + + + + + + + + +

        + …note that is a mutually exclusive choice: either + a <server> or <servers> element must be + specified, but not both. +

        +
        +
        + + + +

        + A single, optional, server ID. This form is used when + creating an IP group. +

        +
        +
        +
        + + + +

        + A collection of server IDs. This form is used when + querying an IP group. +

        +
        +
        +
        +
        +
        + + + +

        + The ID of the shared IP group. The attribute should not + be specified when creating a new shared IP group. +

        +
        +
        +
        + + + +

        + The name of the shared IP group. +

        +
        +
        +
        +
        + + + + + + +

        + A collection of shared IP groups. +

        +
        +
        +
        +
        +
        + + + + + + +

        + A collection of servers within a shared IP group. +

        +
        +
        +
        +
        +
        + + + + + +

        + The ID of a server within a shared IP group. +

        +
        +
        +
        +
        +
        + + + diff --git a/openstack-compute-api-1.0/src/xsd/limits.xsd b/openstack-compute-api-1.0/src/xsd/limits.xsd new file mode 100644 index 0000000..98a839e --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/limits.xsd @@ -0,0 +1,354 @@ + + + + + + + + + Limits + + + +

        + This schema file defines types related to preconfigured + limits. Limits are used to manage the capacity of the API and + to prevent abuse. The API defines two kinds of limits RateLimits and AbsoluteLimits. RateLimits are thresholds + that are reset after a certain amount of time passes. + Absolute limits are fixed. +

        +
        +
        + + + + +

        + The limits element contains information on both rate and + absolute limits. +

        +
        + + + + + + + + + + +
        +
        + + + + + +

        + A container that holds a list of rate limits, followed by a + list of absolute limits. +

        +
        +
        + + + + +

        + The element hold a list of RateLimits. +

        +
        +
        +
        + + + +

        + The element hold a list of AbsoluteLimits. +

        +
        +
        +
        +
        +
        + + + + + + +

        + A sequence of RateLimit elements. +

        +
        +
        +
        +
        +
        + + + + + + +

        + A sequence of AbsoluteLimit elements. +

        +
        +
        +
        +
        +
        + + + + +

        + A rate limit is a threshold that is reset after a certain + amount of time. Rate limits are imposed on the HTTP protocol + and they are based on an HTTPVerb and a regular expression + applied to a URI. For example, the rate limit below… +

        + + + ]]> + +

        + …indicates that only 25 posts per day are allowed on + any API URI ending in /servers. The 26 post will raise an OverLimitFault until the resetTime arrives. +

        +

        + It is important to note that rate limits should be applied in + order relative to the verb, going from least to most specific. + Thus, although the threshold for POST to */servers, below, is + 25 per day, one cannot POST to */servers more than 10 times + withing a single minute because the rate limits for any POST + is 10/min. +

        + +
        +
        + + + +

        + The HTTPVerb the limit applies to. +

        +
        +
        +
        + + + +

        + A human readable wild-card URI. Here "*" matches any + character. +

        +
        +
        +
        + + + +

        + A machine processable regular expression URI. The regular + expression boundary matcher "^" takes affect after the root + URI path. For example, the regular expression ^/servers would + match the bold portion of the following URI:
        + https://servers.api.rackspacecloud.com/v1.0/3542812/servers +

        +
        +
        +
        + + + +

        + The unit of time (RateLimitUnit) associated + with the rate value. +

        +
        +
        +
        + + + +

        + The rate limit in RateLimitUnits. +

        +
        +
        +
        + + + +

        + The number of units remaining before an OverLimitFault is raised. +

        +
        +
        +
        + + + +

        + The time in Unix time (the number of seconds since January + 1, 1970 00:00:00 UTC) when the rate limit will reset. +

        +
        +
        +
        +
        + + + + +

        + Absolute limits are predefined fixed limits. We define each + of these limits as a key/value pair. Please consult the API Specification for a list of + absolute limits used by the system. +

        +
        +
        + + + +

        + The name (or key) of the absolute limit. Currently, + the following names are available: +

        +
          +
        • maxTotalRAMSize
        • +
        • maxIPGroups
        • +
        • maxIPGroupMemebers
        • +
        +

        + This may not be an exhaustive list. Please consult the API + Specification. We do not define absolute limit names as an + enumeration in this schema because we may need to impose new + limits quickly without the need to modifying the schema + document. +

        +
        +
        +
        + + + +

        + A value specifying the absolute limit.The name of the + absolute limit determines the unit type. For example, the + key maxIPGroups implies that the value is in terms of + IPGroups. +

        +
        +
        +
        +
        + + + + + +

        + The HTTP verbs (or methods) on which rate-limits may be + enforced. +

        +
        +
        + + + + + + + +
        + + + + +

        + Units of time supported by rate limits. +

        +
        +
        + + + + + +
        + +
        + diff --git a/openstack-compute-api-1.0/src/xsd/server.xsd b/openstack-compute-api-1.0/src/xsd/server.xsd new file mode 100644 index 0000000..66f94ae --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/server.xsd @@ -0,0 +1,1008 @@ + + + + + + + + + Servers and Related Types + + + +

        + This schema file defines a + Server and all internal entities + related to servers including: + Addresses, + ShareIPs, + Files, and + MetaData. +

        +
        +
        + + + + +

        + Common types used by multiple entities and possibly spanning + several types of requests. +

        +
        +
        +
        + + + + +

        + The element defines a server. +

        +
        + + + + + + + + + + +
        +
        + + + + +

        + A collection of servers. +

        +
        + + + + + + + + + + +
        +
        + + + + +

        + The element defines list of addresses (public and private). +

        +
        + + + + + + + + + + +
        +
        + + + + +

        + The element defines a list of public addresses. +

        +
        + + + + + + + + + + +
        +
        + + + + +

        + The element defines list of private addresses. +

        +
        + + + + + + + + + + +
        +
        + + + + +

        + The element defines request to share a public IP address. +

        +
        + + + + + + + + + + +
        +
        + + + + +

        + The element defines request to add an IP address. +

        +
        + + + + + + + + + + +
        +
        + + + + +

        + The element defines response that returns an added IP address. +

        +
        + + + + + + + + + + +
        +
        + + + + + + +

        + A server is a virtual machine instance in the Cloud Servers + system. Note that this complex type defines all elements + and attributes as optional because a server instance may + take many different forms depending on the operation. When + creating a server, for example, the name, imageId, and + flavorId attributes are required. In addition, optional + metadata and personality file elements may be specified: +

        + + + + + + + + +

        + The response to such a crate operation will include the + administration password, host ID, and addresses associated + with the server: +

        + + + + + + + + +

        + When modifying a server only the name and administration + password should be specified as these are the only + attributes that are modifiable. +

        + + + + + + + + +
        +
        + + + + +

        + A collection of meta data items associated with the server. +

        +
        +
        +
        + + + +

        + A server's public and private address. +

        +
        +
        +
        + + + +

        + A collection of small files used to personalize a new + server instance. +

        +
        +
        +
        +
        + + + +

        + The name of the server. +

        +
        +
        +
        + + + +

        + The ID of the server. +

        +
        +
        +
        + + + +

        + The server's administration password. +

        +
        +
        +
        + + + +

        + The ID of the image used to create the server. +

        +
        +
        +
        + + + +

        + The current server flavor ID. +

        +
        +
        +
        + + + +

        + A unique ID that identifies the physical host that the VM + is running on. This ID is unique per + account and not globally unique. +

        +
        +
        +
        + + + +

        + The progress of the current server operation. +

        +
        +
        +
        + + + +

        + The current state (or status) of the + server. +

        +
        +
        +
        + + + +

        + An ID of the shared IP + group that the server belongs to. +

        +
        +
        +
        +
        + + + + + + +

        + A collection of servers. +

        +
        +
        +
        +
        +
        + + + + + + +

        + A collection of metadata items. +

        +
        +
        +
        +
        +
        + + + + +

        + A MetadataItem is simply a name-value pair. The name is + specified in the key attribute and the value is included inline. +

        + + Web Head 1 + ]]> + +
        +
        + + + + + +

        + A meta data name-value pair. +

        +
        +
        +
        +
        +
        +
        + + + + + A collection of small files used to personalize a server + instance. + + + + + + +

        + A collection of files. +

        +
        +
        +
        +
        +
        + + + + +

        + A file is simply a full path along with base64 file + content. The name of the file is specified in the path + attribute and the file content is included + inline. +

        + + + ICAgICAgDQoiQSBjbG91ZCBkb2VzIG5vdCBrbm93IHdoeSBpdCBtb3ZlcyBpbiBqdXN0IHN1Y2gg + YSBkaXJlY3Rpb24gYW5kIGF0IHN1Y2ggYSBzcGVlZC4uLkl0IGZlZWxzIGFuIGltcHVsc2lvbi4u + LnRoaXMgaXMgdGhlIHBsYWNlIHRvIGdvIG5vdy4gQnV0IHRoZSBza3kga25vd3MgdGhlIHJlYXNv + bnMgYW5kIHRoZSBwYXR0ZXJucyBiZWhpbmQgYWxsIGNsb3VkcywgYW5kIHlvdSB3aWxsIGtub3cs + IHRvbywgd2hlbiB5b3UgbGlmdCB5b3Vyc2VsZiBoaWdoIGVub3VnaCB0byBzZWUgYmV5b25kIGhv + cml6b25zLiINCg0KLVJpY2hhcmQgQmFjaA== + + ]]> + +
        +
        + + + + + +

        + Full file path. +

        +
        +
        +
        +
        +
        +
        + + + + + + +

        + Public server addresses. +

        +
        +
        +
        + + + +

        + Private server addresses. +

        +
        +
        +
        +
        +
        + + + + + + +

        + A collection of addresses. +

        +
        +
        +
        +
        +
        + + + + + +

        + An IP address. +

        +
        +
        +
        +
        + + + + +

        + This type is used to represent a request to share an IP + address. +

        +
        +
        + + + +

        + The shared IP group use to + share the address. +

        +
        +
        +
        + + + +

        + If true, the server is configured with the new address + though the address may not be enabled. +

        +
        +
        +
        +
        + + + + +

        + This type is used to represent a request to add an IP + address. +

        +
        +
        + + + +

        + If true, the server is added and configured with the new address + though the address may not be enabled. +

        +
        +
        +
        +
        + + + + + + + + +

        + The server is ready to use. +

        +
        +
        +
        + + + +

        + The server is in an inactive (suspended) state. +

        +
        +
        +
        + + + +

        + The server has been deleted. +

        +
        +
        +
        + + + +

        + A request to perform a resize action has been received. The + operation is pending. +

        +
        +
        +
        + + + +

        + The server is being prepared to perform the resize + operation. +

        +
        +
        +
        + + + +

        + The server is being resized. +

        +
        +
        +
        + + + +

        + The server is waiting for the resize operation to be + confirmed so that the original server may be removed. +

        +
        +
        +
        + + + +

        + The server is in rescue mode. +

        +
        +
        +
        + + + +

        + The requested operation failed, the server is in an + error state. +

        +
        +
        +
        + + + +

        + The server is being built. +

        +
        +
        +
        + + + +

        + The server is being restored. +

        +
        +
        +
        + + + +

        + The server password is being changed. +

        +
        +
        +
        + + + +

        + The server is being rebuilt. +

        +
        +
        +
        + + + +

        + A shared IP address is being removed. +

        +
        +
        +
        + + + +

        + An IP address is being shared, but not configured. +

        +
        +
        +
        + + + +

        + An IP address is being shared, and the server is being + configured with the new address. +

        +
        +
        +
        + + + +

        + An IP address is being added, but not configured. +

        +
        +
        +
        + + + +

        + An IP address is being added, and the server is being + configured with the new address. +

        +
        +
        +
        + + + + +

        + The server is going through a SOFT reboot. +

        +
        +
        +
        + + + +

        + The server is going through a HARD reboot. +

        +
        +
        +
        + + + +

        + The server is in an unknown state. +

        +
        +
        +
        + + + +

        + Reserved for future use. +

        +
        +
        +
        + + + +

        + Reserved for future use. +

        +
        +
        +
        + + + +

        + Reserved for future use. +

        +
        +
        +
        + + + +

        + Reserved for future use. +

        +
        +
        +
        + + + +

        + Reserved for future use. +

        +
        +
        +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/openstack-compute-api-1.0/src/xsd/version.xsd b/openstack-compute-api-1.0/src/xsd/version.xsd new file mode 100644 index 0000000..ecf8d2f --- /dev/null +++ b/openstack-compute-api-1.0/src/xsd/version.xsd @@ -0,0 +1,172 @@ + + + + + + + + + API Version Details + + + +

        + This schema file defines a version element which provides + meta information about the current version of the API Service. +

        +
        +
        + + + + +

        + This element provides detailed meta information regarding the + status of the API version. Included is a pointer to both a + human readable and a machine processable description of the + API service. The machine processable description is written + in the Web Application Description Language (WADL). If a + discrepancy exists between the two specifications, the WADL is + authoritative as it contains the most accurate and up-to-date + description of the API service. +

        +
        + + + + + + + + + + +
        +
        + + + + + + +

        + A unique ID which identifies the API version. Currently + this is fixed as v1.0. The first element + of the path to the API endpoints always contains the + target version ID. +

        +
        +
        +
        + + + +

        + The status of the API version. A stable version will + always have the value CURRENT. See VersionStatus. +

        +
        +
        +
        + + + +

        + A URL to a human readable API specification in PDF + format. This URL will always point to the latest version + of the specification applicable to the requested + implementation. +

        +
        +
        +
        + + + +

        + A URL to a machine readable API specification in WADL + format. This URL will always point to the latest version + of the specification applicable to the requested + implementation. +

        +
        +
        +
        +
        + + + + + + + +

        + A status of BETA indicates that this version is a + candidate for the next major release and may feature + functionality not available in the current version. + Developers are encouraged to test and begin the migration + processes to a BETA version. Note that a BETA version is + undergoing testing, it has not been officially released, + and my not be stable. +

        +
        +
        +
        + + + +

        + The API version is stable and has been tested. Developers + are encouraged to develop against this API version. The + current released version of the API will always be marked + as CURRENT. +

        +
        +
        +
        + + + +

        + A status of DEPRECATED indicates that a newer version of + the API is available. Application developers are + discouraged from using this version and should instead + develop against the latest current version of the API. +

        +
        +
        +
        +
        +
        +
        + diff --git a/openstack-compute-api-1.0/src/xslt/schema.xslt b/openstack-compute-api-1.0/src/xslt/schema.xslt new file mode 100644 index 0000000..e8ef717 --- /dev/null +++ b/openstack-compute-api-1.0/src/xslt/schema.xslt @@ -0,0 +1,1330 @@ + + + + + + + + + + + XML Schema Documentation + application/xhtml+xml + http://www.w3.org/2001/XMLSchema + http://web4.w3.org/TR/2001/REC-xmlschema-2-20010502/# + + " + ' + + + + + + + + + + + + + + + + + + + + element_ + attrib_ + attgrp_ + grp_ + type_ + + + + http://yui.yahooapis.com/2.7.0/build/ + + + + + + + + + + + + + + + + + stylesheet + text/css + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <xslt:value-of select="xsd:annotation/xsd:appinfo/xsdxt:title"/> + + + <xslt:value-of select="$defaultTitle"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        +
        +
        +
        +
        Loading...
        +
        +
        +
        + + + +

        +
        + +

        +
        +
        + + + + + + + + + + + +
        + + + + + + + + + +

        Namespaces

        + + + +
        +

        + Your browser does not seem to have support for + namespace nodes in XPath. If you're a Firefox + user, please consider voting to get this issue + resolved: + + https://bugzilla.mozilla.org/show_bug.cgi?id=94270 + +

        +
        +
        + + + + + + + + + + + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + +
        +
        +
        + + +
        + + + + + trc.schema.controller.links[' + + ']=[ + + + + + + + + + + + + + + + + + + + + + + + + + + , + + + ]; + + + + + + trc.schema.controller.index = + + + + + + index + + + Index Schema Document + + + ; + + + + + + + trc.schema.controller.links[' + + ']=[ + + + + # + + + + + + + + See definition of + + + + + , + + + ]; + + + + + + + + { href : + + + + + + , name : + + + + + + , title : + + + + + + } + + + + + + + + +

        Imports

        + + + + + + + + + +
        + + +
        +
        + + + Visit + + +
        +
        + +
        +
        +
        +
        + + +

        Includes

        + + + + + + + + +
        +
        +
        + + + Visit + + +
        +
        + +
        +
        +
        +
        + + +

        Elements

        + + + + + + + + +
        + + + + + + +
        +
        + + + trc.schema.sampleManager.showSample( + + + + ); + + + + + + + + + + + + + + + + + + + + +
        +
        + + + + Sample +
        + +
        + +
        +
        +
        + + + +
        + + + + + + + Loading... + + + + + + +
        +
        + + + + + + +

        Complex Types

        + + + + + + +
        + + +

        Simple Types

        + + + + + + +
        + + + + + + # + + + + + + + + + + + + + + + + + + +

        + +

        + + + + + +
        + extends: + + + + , + + +
        +
        + +
        + restricts: + + + + , + + +
        +
        +
        +
        + + + +
        + + + + + + + + + + SubAttributes + + + Attributes + + + + + + + + + + + + + + + +
        +
        +
        +
        + + + + + + + + + + SubDocumentation + + + Documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        + Sequence + + +
        +
        + + + +
        +
        +
        + +
        + + + +
        + + + +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + <?> (Any Element) + + + + + + + + @? (Any Attribute) + + + + + +
        + restriction +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        enum values
        + + + + + + + + +
        + + + + + +
        +
        + + + (id = + + ) + +
        + +
        + +
        +
        +
        + +
        + + + + + + + + (id = + + ) + + + (fixed) + + + + + + + + + + + + +
        + +
        + +
        + +
        +
        +
        + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + < + + > + + + + + + @ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
        diff --git a/openstack-compute-api-1.1/pom.xml b/openstack-compute-api-1.1/pom.xml new file mode 100644 index 0000000..8c3442e --- /dev/null +++ b/openstack-compute-api-1.1/pom.xml @@ -0,0 +1,194 @@ + + + + 4.0.0 + + org.openstack.docs + openstack-guide + 1.0.0-SNAPSHOT + jar + OpenStack Guides + + + + + + Rackspace Research Repositories + + true + + + + rackspace-research + Rackspace Research Repository + http://maven.research.rackspacecloud.com/content/groups/public/ + + + + + rackspace-research + Rackspace Research Repository + http://maven.research.rackspacecloud.com/content/groups/public/ + + + + + + + + + target/docbkx/pdf + + **/*.fo + + + + + + + com.rackspace.cloud.api + clouddocs-maven-plugin + 1.0.5-SNAPSHOT + + + goal1 + + generate-pdf + + generate-sources + + false + + + + goal2 + + generate-webhelp + + generate-sources + + + 0 + openstackdocs + 1 + UA-17511903-6 + + appendix toc,title + article/appendix nop + article toc,title + book title,figure,table,example,equation + chapter toc,title + part toc,title + preface toc,title + qandadiv toc + qandaset toc + reference toc,title + set toc,title + + + 0 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + src + + os-compute-devguide.xml + + reviewer + openstack + + + + + + diff --git a/openstack-compute-api-1.1/src/common.ent b/openstack-compute-api-1.1/src/common.ent new file mode 100644 index 0000000..19acc7e --- /dev/null +++ b/openstack-compute-api-1.1/src/common.ent @@ -0,0 +1,112 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '> + + + + + + '> + + + + + + '> + + + + + + '> + + + + + + '> + + + + + + + + +