diff --git a/bin/keystone-manage b/bin/keystone-manage index f5059e54c..5a8ba56cb 100755 --- a/bin/keystone-manage +++ b/bin/keystone-manage @@ -78,8 +78,9 @@ def Main(): parser.error('No object type specified for first argument') object_type = args[0] - if object_type in ['user', 'tenant', 'role', 'service' , 'endpointTemplates', 'token', - 'endpoint', 'credentials']: + if object_type in ['user', 'tenant', 'role', 'service', + 'endpointTemplates', 'token', + 'endpoint', 'credentials']: pass else: parser.error('%s is not a supported object type' % object_type) @@ -395,10 +396,12 @@ def Main(): object = db_models.Service() object.id = object_id db_api.SERVICE.create(object) - print "SUCCESS: Service %s created successfully." % object.id + print "SUCCESS: Service %s created successfully." % \ + object.id return except Exception as exc: - raise Exception("Failed to create Service %s" % (object_id,), sys.exc_info()) + raise Exception("Failed to create Service %s" % \ + (object_id,), sys.exc_info()) elif command == "list": try: objects = db_api.SERVICE.get_all() @@ -411,7 +414,8 @@ def Main(): for row in objects: print row.id except Exception, e: - raise Exception("Error getting all services", sys.exc_info()) + raise Exception("Error getting all services", + sys.exc_info()) elif object_type == "credentials": if command == "add": if len(args) < 6: @@ -429,8 +433,8 @@ def Main(): print "SUCCESS: Credentials %s created." % result.id return except Exception as exc: - raise Exception("Failed to create credentials %s" % (object_id,), - sys.exc_info()) + raise Exception("Failed to create credentials %s" % \ + (object_id,), sys.exc_info()) # Command not handled print ("ERROR: %s %s not yet supported" % (object_type, command)) diff --git a/etc/keystone.conf b/etc/keystone.conf index a23e22dd7..7930b6cd9 100755 --- a/etc/keystone.conf +++ b/etc/keystone.conf @@ -66,6 +66,7 @@ pipeline = pipeline = urlrewritefilter legacy_auth + RS-KEY-extension service_api [app:service_api] @@ -79,3 +80,6 @@ paste.filter_factory = keystone.middleware.url:filter_factory [filter:legacy_auth] paste.filter_factory = keystone.frontends.legacy_token_auth:filter_factory + +[filter:RS-KEY-extension] +paste.filter_factory = keystone.contrib.extensions.rskey.frontend:filter_factory diff --git a/examples/echo/echo/server.py b/examples/echo/echo/server.py index de622dbd2..6289aac83 100644 --- a/examples/echo/echo/server.py +++ b/examples/echo/echo/server.py @@ -77,7 +77,6 @@ class EchoApp(object): if 'HTTP_X_ROLE' in self.envr: print ' Roles :', self.envr['HTTP_X_ROLE'] - accept = self.envr.get("HTTP_ACCEPT", "application/json") if accept == "application/xml": return self.toXML() diff --git a/keystone/content/identity-RAX.wadl b/keystone/content/identity-RAX.wadl deleted file mode 100644 index fabff42b8..000000000 --- a/keystone/content/identity-RAX.wadl +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - -%common;]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - &commonFaults; - &getFaults; - - - diff --git a/keystone/content/identity-admin-OS.wadl b/keystone/content/identity-admin-OS.wadl deleted file mode 100644 index 056d27ef7..000000000 --- a/keystone/content/identity-admin-OS.wadl +++ /dev/null @@ -1,639 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/keystone/content/identity-admin-RAX.wadl b/keystone/content/identity-admin-RAX.wadl deleted file mode 100644 index d3545410c..000000000 --- a/keystone/content/identity-admin-RAX.wadl +++ /dev/null @@ -1,1455 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - You need an admin token to execute this operation. The token must be valid... - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

- A list of supported extensions. -

-
- -
- - - - - - - - - - -

- Returns detailed information about this specific - version of the API. -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - -

- List all available extensions. -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -

- Get details about a specific extension. -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/keystone/content/js/shjs/sh_java.js b/keystone/content/js/shjs/sh_java.js deleted file mode 100644 index 731fc9f34..000000000 --- a/keystone/content/js/shjs/sh_java.js +++ /dev/null @@ -1,337 +0,0 @@ -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 - - - Rackspace extensions to Keystone v2.0 API - enabling API Key authentication. - - - - diff --git a/keystone/content/style/schema.css b/keystone/content/style/schema.css deleted file mode 100644 index f174ca520..000000000 --- a/keystone/content/style/schema.css +++ /dev/null @@ -1,82 +0,0 @@ -/* - * (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/keystone/content/style/shjs/sh_acid.css b/keystone/content/style/shjs/sh_acid.css deleted file mode 100644 index a34b786f3..000000000 --- a/keystone/content/style/shjs/sh_acid.css +++ /dev/null @@ -1,151 +0,0 @@ -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/keystone/content/style/shjs/sh_darkblue.css b/keystone/content/style/shjs/sh_darkblue.css deleted file mode 100644 index 23fd6dab2..000000000 --- a/keystone/content/style/shjs/sh_darkblue.css +++ /dev/null @@ -1,151 +0,0 @@ -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/keystone/content/style/shjs/sh_emacs.css b/keystone/content/style/shjs/sh_emacs.css deleted file mode 100644 index 6e019cbea..000000000 --- a/keystone/content/style/shjs/sh_emacs.css +++ /dev/null @@ -1,139 +0,0 @@ -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/keystone/content/style/shjs/sh_night.css b/keystone/content/style/shjs/sh_night.css deleted file mode 100644 index d8d371b47..000000000 --- a/keystone/content/style/shjs/sh_night.css +++ /dev/null @@ -1,151 +0,0 @@ -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/keystone/content/style/shjs/sh_pablo.css b/keystone/content/style/shjs/sh_pablo.css deleted file mode 100644 index 173cd7bf0..000000000 --- a/keystone/content/style/shjs/sh_pablo.css +++ /dev/null @@ -1,151 +0,0 @@ -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/keystone/content/style/shjs/sh_print.css b/keystone/content/style/shjs/sh_print.css deleted file mode 100644 index 1e8c11689..000000000 --- a/keystone/content/style/shjs/sh_print.css +++ /dev/null @@ -1,145 +0,0 @@ -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/keystone/content/style/shjs/sh_style.css b/keystone/content/style/shjs/sh_style.css deleted file mode 100644 index 6cd20b47c..000000000 --- a/keystone/content/style/shjs/sh_style.css +++ /dev/null @@ -1,66 +0,0 @@ -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/keystone/content/style/shjs/sh_whitengrey.css b/keystone/content/style/shjs/sh_whitengrey.css deleted file mode 100644 index 41df0e2c6..000000000 --- a/keystone/content/style/shjs/sh_whitengrey.css +++ /dev/null @@ -1,139 +0,0 @@ -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/keystone/content/xsd/RAX-credentials.xsd b/keystone/content/xsd/RAX-credentials.xsd deleted file mode 100644 index 2409a514b..000000000 --- a/keystone/content/xsd/RAX-credentials.xsd +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - diff --git a/keystone/content/xsd/RAX-groups.xsd b/keystone/content/xsd/RAX-groups.xsd deleted file mode 100644 index 5db585bf7..000000000 --- a/keystone/content/xsd/RAX-groups.xsd +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/keystone/content/xsd/RAX-users.xsd b/keystone/content/xsd/RAX-users.xsd deleted file mode 100644 index 2e484bc8d..000000000 --- a/keystone/content/xsd/RAX-users.xsd +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/keystone/content/xsd/credentials.xsd b/keystone/content/xsd/credentials.xsd deleted file mode 100644 index 1d242ec87..000000000 --- a/keystone/content/xsd/credentials.xsd +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - - - - - - - - - - -

- A list of credentials. -

-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/keystone/content/xslt/schema.xslt b/keystone/content/xslt/schema.xslt deleted file mode 100644 index 6d602cc73..000000000 --- a/keystone/content/xslt/schema.xslt +++ /dev/null @@ -1,1342 +0,0 @@ - - - - - - - - - - - - - - - - - .. - - - - - - 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/keystone/contrib/__init__.py b/keystone/contrib/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/keystone/contrib/extensions/__init__.py b/keystone/contrib/extensions/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/keystone/contrib/extensions/rskey/__init__.py b/keystone/contrib/extensions/rskey/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/keystone/contrib/extensions/rskey/extension.json b/keystone/contrib/extensions/rskey/extension.json new file mode 100644 index 000000000..32385cdcb --- /dev/null +++ b/keystone/contrib/extensions/rskey/extension.json @@ -0,0 +1,16 @@ +{ + "name": "Rackspace API Key Authentication", + "namespace": "http://docs.rackspacecloud.com/identity/api/ext/key/v1.0", + "alias": "RS-KEY", + "updated": "2011-08-14T13:25:27-06:00", + "description": "Rackspace extensions to Keystone v2.0 API enabling API Key authentication.", + "links": [{ + "rel": "describedby", + "type": "application/pdf", + "href": "http://docs.rackspacecloud.com/identity/api/ext/identity-key-20111111.pdf" + },{ + "rel": "describedby", + "type": "application/vnd.sun.wadl+xml", + "href": "http://docs.rackspacecloud.com/identity/api/ext/identity-RS-KEY.wadl" + }] +} \ No newline at end of file diff --git a/keystone/contrib/extensions/rskey/extension.xml b/keystone/contrib/extensions/rskey/extension.xml new file mode 100644 index 000000000..322dca758 --- /dev/null +++ b/keystone/contrib/extensions/rskey/extension.xml @@ -0,0 +1,14 @@ + + + + Rackspace extensions to Keystone v2.0 API + enabling API Key authentication. + + + + diff --git a/keystone/contrib/extensions/rskey/frontend.py b/keystone/contrib/extensions/rskey/frontend.py new file mode 100644 index 000000000..df4e3ccdc --- /dev/null +++ b/keystone/contrib/extensions/rskey/frontend.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python +# vim: tabstop=4 shiftwidth=4 softtabstop=4 +# +# Copyright (c) 2010-2011 OpenStack, LLC. +# +# 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. + +""" +RACKSPACE API KEY EXTENSION + +This WSGI component +- detects calls with extensions in them. +- processes the necessary components +""" + +import os +import sys +import json +from lxml import etree +from webob.exc import Request, Response + +import keystone.utils as utils + +EXTENSION_ALIAS = "RS-KEY" + + +class FrontEndFilter(object): + """API Key Middleware that handles authentication with API Key""" + + def __init__(self, app, conf): + """ Common initialization code """ + print "Starting the %s extension" % EXTENSION_ALIAS + self.conf = conf + self.app = app + + def __call__(self, env, start_response): + """ Handle incoming request. Transform. And send downstream. """ + request = Request(env) + if request.path == "/extensions": + if env['KEYSTONE_API_VERSION'] == '2.0': + request = Request(env) + response = request.get_response(self.app) + if response.status_int == 200: + if response.content_type == 'application/json': + #load json for this extension from file + thisextension = open(os.path.join( + os.path.dirname(__file__), + "extension.json")).read() + thisextensionjson = json.loads(thisextension) + + #load json in response + body = json.loads(response.body) + extensionsarray = body["extensions"]["values"] + + #add this extension and return the response + extensionsarray.append(thisextensionjson) + newresp = Response( + content_type='application/json', + body=json.dumps(body)) + return newresp(env, start_response) + elif response.content_type == 'application/xml': + #load xml for this extension from file + thisextensionxml = etree.parse(os.path.join( + os.path.dirname(__file__), + "extension.xml")).getroot() + #load xml being returned in response + body = etree.fromstring(response.body) + + #add this extension and return the response + body.append(thisextensionxml) + newresp = Response( + content_type='application/xml', + body=etree.tostring(body)) + return newresp(env, start_response) + + # return the response + return response(env, start_response) + + #default action, bypass + return self.app(env, start_response) + + +def filter_factory(global_conf, **local_conf): + """Returns a WSGI filter app for use with paste.deploy.""" + conf = global_conf.copy() + conf.update(local_conf) + + def ext_filter(app): + """Closure to return""" + return FrontEndFilter(app, conf) + return ext_filter diff --git a/keystone/controllers/extensions.py b/keystone/controllers/extensions.py index 728994eb0..9fc9e8c23 100644 --- a/keystone/controllers/extensions.py +++ b/keystone/controllers/extensions.py @@ -30,6 +30,5 @@ class ExtensionsController(wsgi.Controller): resp_file = "%s.json" % path mime_type = "application/json" - print resp_file return template.static_file(resp, req, resp_file, root=utils.get_app_root(), mimetype=mime_type) diff --git a/keystone/controllers/staticfiles.py b/keystone/controllers/staticfiles.py index a736ed6de..b8db4a53c 100644 --- a/keystone/controllers/staticfiles.py +++ b/keystone/controllers/staticfiles.py @@ -30,11 +30,12 @@ class StaticFilesController(wsgi.Controller): @utils.wrap_error def get_pdf_contract(self, req, pdf, root="content/"): resp = Response() - return template.static_file(resp, req, root + pdf, + filepath = root + pdf + return template.static_file(resp, req, filepath, root=utils.get_app_root(), mimetype="application/pdf") @utils.wrap_error - def get_wadl_contract(self, req, wadl, root="content/"): + def get_wadl_contract(self, req, wadl, root): resp = Response() return template.static_file(resp, req, root + wadl, root=utils.get_app_root(), mimetype="application/vnd.sun.wadl+xml") @@ -52,7 +53,21 @@ class StaticFilesController(wsgi.Controller): root=utils.get_app_root(), mimetype="application/xml") @utils.wrap_error - def get_static_file(self, req, path, file, mimetype, root="content/"): + def get_static_file(self, req, path, file, mimetype=None, root="content/"): resp = Response() - return template.static_file(resp, req, path + file, + + if mimetype == None: + if utils.is_xml_response(req): + mimetype = "application/xml" + elif utils.is_json_response(req): + mimetype = "application/json" + + if mimetype == "application/xml": + resp_file = "%s%s%s.xml" % (root, path, file) + elif mimetype == "application/json": + resp_file = "%s%s%s.json" % (root, path, file) + else: + resp_file = root + path + file + + return template.static_file(resp, req, resp_file, root=utils.get_app_root(), mimetype=mimetype) diff --git a/keystone/routers/admin.py b/keystone/routers/admin.py index 336cf4c6b..4769b79d2 100755 --- a/keystone/routers/admin.py +++ b/keystone/routers/admin.py @@ -200,86 +200,25 @@ class AdminApi(wsgi.Router): mapper.connect("/xslt/{file:.*}", controller=static_files_controller, action="get_static_file", - root="content/admin/", path="xslt/", - mimetype="application/xml", + root="content/common/", path="xslt/", + mimetype="application/xslt", conditions=dict(method=["GET"])) mapper.connect("/js/{file:.*}", controller=static_files_controller, action="get_static_file", - root="content/admin/", path="js/", - mimetype="application/text", + root="content/common/", path="js/", + mimetype="application/javascript", conditions=dict(method=["GET"])) mapper.connect("/style/{file:.*}", controller=static_files_controller, action="get_static_file", - root="content/admin/", path="/style/", + root="content/common/", path="style/", mimetype="application/css", conditions=dict(method=["GET"])) mapper.connect("/samples/{file:.*}", controller=static_files_controller, action="get_static_file", - root="content/admin/", path="samples/", - mimetype="application/text", - conditions=dict(method=["GET"])) - mapper.connect("/xslt/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/xslt/", mimetype="application/xml", - conditions=dict(method=["GET"])) - mapper.connect("/js/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/js/", mimetype="application/text", - conditions=dict(method=["GET"])) - mapper.connect("/style/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/style/", mimetype="application/css", - conditions=dict(method=["GET"])) - mapper.connect("/samples/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/samples/", mimetype="application/text", - conditions=dict(method=["GET"])) - mapper.connect("/xslt/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/xslt/", mimetype="application/xml", - conditions=dict(method=["GET"])) - mapper.connect("/js/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/js/", mimetype="application/text", - conditions=dict(method=["GET"])) - mapper.connect("/style/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/style/", mimetype="application/css", - conditions=dict(method=["GET"])) - mapper.connect("/samples/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/samples/", mimetype="application/text", - conditions=dict(method=["GET"])) - mapper.connect("/xslt/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/xslt/", mimetype="application/xml", - conditions=dict(method=["GET"])) - mapper.connect("/js/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/js/", mimetype="application/text", - conditions=dict(method=["GET"])) - mapper.connect("/style/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/style/", mimetype="application/css", - conditions=dict(method=["GET"])) - mapper.connect("/samples/{file:.*}", - controller=static_files_controller, - action="get_static_file", - path="/content/samples/", mimetype="application/text", + root="content/common/", path="samples/", conditions=dict(method=["GET"])) # Services Controller diff --git a/keystone/routers/service.py b/keystone/routers/service.py index f5cdcbec1..66f363f03 100644 --- a/keystone/routers/service.py +++ b/keystone/routers/service.py @@ -76,10 +76,30 @@ class ServiceApi(wsgi.Router): root="content/service/", wadl="identity.wadl", conditions=dict(method=["GET"])) mapper.connect("/common.ent", - controller=static_files_controller, - action="get_wadl_contract", wadl="common.ent", - conditions=dict(method=["GET"])) - mapper.connect("/xsd/{xsd}", + controller=static_files_controller, + action="get_wadl_contract", + wadl="common.ent", root="content/common/", + conditions=dict(method=["GET"])) + mapper.connect("/xslt/{file:.*}", + controller=static_files_controller, + action="get_static_file", path="common/xslt/", + mimetype="application/xslt", + conditions=dict(method=["GET"])) + mapper.connect("/style/{file:.*}", + controller=static_files_controller, + action="get_static_file", path="common/style/", + mimetype="application/css", + conditions=dict(method=["GET"])) + mapper.connect("/js/{file:.*}", + controller=static_files_controller, + action="get_static_file", path="common/js/", + mimetype="application/javascript", + conditions=dict(method=["GET"])) + mapper.connect("/samples/{file:.*}", + controller=static_files_controller, + action="get_static_file", path="common/samples/", + conditions=dict(method=["GET"])) + mapper.connect("/xsd/{xsd:.*}", controller=static_files_controller, action="get_xsd_contract", root="content/service/", conditions=dict(method=["GET"])) diff --git a/keystone/test/etc/ldap.conf.template b/keystone/test/etc/ldap.conf.template index 9537ec339..9366590d6 100755 --- a/keystone/test/etc/ldap.conf.template +++ b/keystone/test/etc/ldap.conf.template @@ -33,8 +33,9 @@ pipeline = [pipeline:keystone-legacy-auth] pipeline = - urlrewritefilter - legacy_auth + urlrewritefilter + legacy_auth + RS-KEY-extension service_api [app:service_api] @@ -47,4 +48,7 @@ paste.app_factory = keystone.server:admin_app_factory paste.filter_factory = keystone.middleware.url:filter_factory [filter:legacy_auth] -paste.filter_factory = keystone.frontends.legacy_token_auth:filter_factory \ No newline at end of file +paste.filter_factory = keystone.frontends.legacy_token_auth:filter_factory + +[filter:RS-KEY-extension] +paste.filter_factory = keystone.contrib.extensions.rskey.frontend:filter_factory diff --git a/keystone/test/etc/memcache.conf.template b/keystone/test/etc/memcache.conf.template index e2f668e4d..530c3203a 100644 --- a/keystone/test/etc/memcache.conf.template +++ b/keystone/test/etc/memcache.conf.template @@ -32,8 +32,9 @@ pipeline = [pipeline:keystone-legacy-auth] pipeline = - urlrewritefilter - legacy_auth + urlrewritefilter + legacy_auth + RS-KEY-extension service_api [app:service_api] @@ -46,4 +47,7 @@ paste.app_factory = keystone.server:admin_app_factory paste.filter_factory = keystone.middleware.url:filter_factory [filter:legacy_auth] -paste.filter_factory = keystone.frontends.legacy_token_auth:filter_factory \ No newline at end of file +paste.filter_factory = keystone.frontends.legacy_token_auth:filter_factory + +[filter:RS-KEY-extension] +paste.filter_factory = keystone.contrib.extensions.rskey.frontend:filter_factory diff --git a/keystone/test/etc/sql.conf.template b/keystone/test/etc/sql.conf.template index 1d8bfedc3..08928a3e9 100644 --- a/keystone/test/etc/sql.conf.template +++ b/keystone/test/etc/sql.conf.template @@ -27,8 +27,9 @@ pipeline = [pipeline:keystone-legacy-auth] pipeline = - urlrewritefilter - legacy_auth + urlrewritefilter + legacy_auth + RS-KEY-extension service_api [app:service_api] @@ -41,4 +42,7 @@ paste.app_factory = keystone.server:admin_app_factory paste.filter_factory = keystone.middleware.url:filter_factory [filter:legacy_auth] -paste.filter_factory = keystone.frontends.legacy_token_auth:filter_factory \ No newline at end of file +paste.filter_factory = keystone.frontends.legacy_token_auth:filter_factory + +[filter:RS-KEY-extension] +paste.filter_factory = keystone.contrib.extensions.rskey.frontend:filter_factory diff --git a/keystone/test/functional/test_ext_rs_key_auth.py b/keystone/test/functional/test_ext_rs_key_auth.py new file mode 100644 index 000000000..dec1c2448 --- /dev/null +++ b/keystone/test/functional/test_ext_rs_key_auth.py @@ -0,0 +1,29 @@ +import unittest +from common import KeystoneTestCase + + +class TestExtensions(KeystoneTestCase): + def test_extensions_json(self): + r = self.service_request(path='/extensions.json', + assert_status=200) + self.assertTrue('json' in r.getheader('Content-Type')) + content = r.json + self.assertIsNotNone(content['extensions']) + self.assertIsNotNone(content['extensions']['values']) + found = False + for value in content['extensions']['values']: + if value['alias'] == 'RS-KEY': + found = True + break + self.assertTrue(found) + + def test_extensions_xml(self): + r = self.service_request(path='/extensions.xml') + self.assertTrue('xml' in r.getheader('Content-Type')) + content = r.xml + extension = content.find("*[@alias='RS-KEY']") + self.assertIsNotNone(extension) + + +if __name__ == '__main__': + unittest.main() diff --git a/keystone/test/functional/test_extensions.py b/keystone/test/functional/test_extensions.py new file mode 100644 index 000000000..c7c5af8e3 --- /dev/null +++ b/keystone/test/functional/test_extensions.py @@ -0,0 +1,26 @@ +import unittest +from common import KeystoneTestCase + + +class TestExtensions(KeystoneTestCase): + def test_extensions_json(self): + r = self.service_request(path='/extensions.json') + self.assertTrue('json' in r.getheader('Content-Type')) + + def test_extensions_xml(self): + r = self.service_request(path='/extensions.xml') + self.assertTrue('xml' in r.getheader('Content-Type')) + + +class TestAdminExtensions(KeystoneTestCase): + def test_extensions_json(self): + r = self.admin_request(path='/extensions.json') + self.assertTrue('json' in r.getheader('Content-Type')) + + def test_extensions_xml(self): + r = self.admin_request(path='/extensions.xml') + self.assertTrue('xml' in r.getheader('Content-Type')) + + +if __name__ == '__main__': + unittest.main() diff --git a/keystone/test/functional/test_static_files.py b/keystone/test/functional/test_static_files.py index bc4fedc7c..f3e7e44af 100644 --- a/keystone/test/functional/test_static_files.py +++ b/keystone/test/functional/test_static_files.py @@ -11,6 +11,10 @@ class TestStaticFiles(KeystoneTestCase): r = self.service_request(path='/identity.wadl') self.assertTrue('xml' in r.getheader('Content-Type')) + def test_wadl_common(self): + r = self.service_request(path='/common.ent') + self.assertTrue('xml' in r.getheader('Content-Type')) + def test_xsd_contract(self): r = self.service_request(path='/xsd/api.xsd') self.assertTrue('xml' in r.getheader('Content-Type')) @@ -19,6 +23,26 @@ class TestStaticFiles(KeystoneTestCase): r = self.service_request(path='/xsd/atom/atom.xsd') self.assertTrue('xml' in r.getheader('Content-Type')) + def test_xslt(self): + r = self.service_request(path='/xslt/schema.xslt') + self.assertTrue('xslt' in r.getheader('Content-Type')) + + def test_js(self): + r = self.service_request(path='/js/shjs/sh_java.js') + self.assertTrue('javascript' in r.getheader('Content-Type')) + + def test_xml_sample(self): + r = self.service_request(path='/samples/auth.xml') + self.assertTrue('xml' in r.getheader('Content-Type')) + + def test_json_sample(self): + r = self.service_request(path='/samples/auth.json') + self.assertTrue('json' in r.getheader('Content-Type')) + + def test_stylesheet(self): + r = self.service_request(path='/style/shjs/sh_acid.css') + self.assertTrue('css' in r.getheader('Content-Type')) + class TestAdminStaticFiles(KeystoneTestCase): def test_pdf_contract(self): @@ -37,5 +61,26 @@ class TestAdminStaticFiles(KeystoneTestCase): r = self.admin_request(path='/xsd/atom/atom.xsd') self.assertTrue('xml' in r.getheader('Content-Type')) + def test_xslt(self): + r = self.admin_request(path='/xslt/schema.xslt') + self.assertTrue('xslt' in r.getheader('Content-Type')) + + def test_js(self): + r = self.admin_request(path='/js/shjs/sh_java.js') + self.assertTrue('javascript' in r.getheader('Content-Type')) + + def test_xml_sample(self): + r = self.admin_request(path='/samples/auth.xml') + self.assertTrue('xml' in r.getheader('Content-Type')) + + def test_json_sample(self): + r = self.admin_request(path='/samples/auth.json') + self.assertTrue('json' in r.getheader('Content-Type')) + + def test_stylesheet(self): + r = self.admin_request(path='/style/shjs/sh_acid.css') + self.assertTrue('css' in r.getheader('Content-Type')) + + if __name__ == '__main__': unittest.main() diff --git a/keystone/utils.py b/keystone/utils.py index f24150fc1..1dbd3fc46 100755 --- a/keystone/utils.py +++ b/keystone/utils.py @@ -30,6 +30,11 @@ def is_xml_response(req): return "Accept" in req.headers and "application/xml" in req.accept +def is_json_response(req): + """Returns True when the request wants a JSON response, False otherwise""" + return "Accept" in req.headers and "application/json" in req.accept + + def get_app_root(): return os.path.abspath(os.path.dirname(__file__)) @@ -58,6 +63,8 @@ def wrap_error(func): except Exception as err: if isinstance(err, fault.IdentityFault): return send_error(err.code, kwargs['req'], err) + elif isinstance(err, fault.ItemNotFoundFault): + return send_error(err.code, kwargs['req'], err) else: logging.exception(err) return send_error(500, kwargs['req'], diff --git a/run_tests.sh b/run_tests.sh index 28246ed24..d26af9f0c 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -55,9 +55,9 @@ function run_pep8 { # # [1] https://bugs.launchpad.net/bzr/+bug/701898 # - PEP8_EXCLUDE=vcsversion.py + PEP8_EXCLUDE="vcsversion.py" PEP8_OPTIONS="--exclude=$PEP8_EXCLUDE --repeat --show-pep8 --show-source" - PEP8_INCLUDE="bin/* keystone tests tools setup.py run_tests.py" + PEP8_INCLUDE="bin/k* keystone examples tools setup.py run_tests.py" pep8 $PEP8_OPTIONS $PEP8_INCLUDE } diff --git a/tools/install_venv.py b/tools/install_venv.py index 597f69876..a91409108 100644 --- a/tools/install_venv.py +++ b/tools/install_venv.py @@ -108,6 +108,7 @@ def install_dependencies(venv=VENV): f = open(pthfile, 'w') f.write("%s\n" % ROOT) + def print_help(): help = """ Keystone development environment setup is complete. diff --git a/tools/tracer.py b/tools/tracer.py index edd833bbf..2e4bb1b37 100644 --- a/tools/tracer.py +++ b/tools/tracer.py @@ -99,15 +99,15 @@ if '--trace-calls' in sys.argv: os.pardir)) func_filename = func_filename.replace(possible_topdir, '') caller = frame.f_back - + if caller: caller_line_no = caller.f_lineno - caller_filename = caller.f_code.co_filename.replace(possible_topdir, - '') + caller_filename = caller.f_code.co_filename.replace( + possible_topdir, '') print '%s%s::%s:%s (from %s:%s)' % \ (' ' * stack_depth, func_filename, func_name, func_line_no, caller_filename, caller_line_no) - + stack_depth = stack_depth + 1 return localtrace