From fbd9c0dccce7dc63a60b9300890f93cf22c4da51 Mon Sep 17 00:00:00 2001 From: "Mark T. Voelker" Date: Thu, 14 Apr 2016 23:16:18 -0400 Subject: [PATCH] Add cutoff_score to next.json, update script We recently added a field in Schema 1.4 to record a "cutoff_score".[1] The field reflects the minimum score that a Capability needs to achieve for a given Guideline in order to warrant inclusion. The current draft Guideline, however, hasn't yet been updated to include a cutoff score. This patch adds a cutoff_score field to next.json and sets it to a preliminary vale of 74 (which is indicative of the score we've used in the past as a cutoff, but which can be changed by the DefCore Committee any time between now and when the Guideline goes to the Board for approval before it becomes binding). The patch also updates the tabulate_scores.py script to read the cutoff_score from the JSON document and adds an asterisk (*) to lines in the scoring file whose totals meet or exceed the cutoff as a visual indicator of which Capabilities have scored highly enough to warrant inclusion in the Guideline. Verbage in the header of the scoring.txt file has also been updated to reflect the meaning of the indicator. The patch also adds the cutoff_score field to the 2016.01 document, where it was inadvertently left off since the field was only added to the schema in close proximity to the document being finalized for Board approval. [1] https://review.openstack.org/#/c/224868/ Change-Id: I73d08baae13f373c955ff94640fac43109125886 --- 2016.01.json | 1 + next.json | 1 + working_materials/scoring.txt | 135 +++++++++++++------------ working_materials/tabulate_scores.py | 22 +++- working_materials/tabulated_scores.csv | 124 +++++++++++------------ 5 files changed, 153 insertions(+), 130 deletions(-) diff --git a/2016.01.json b/2016.01.json index d671fdb1..003acbaa 100644 --- a/2016.01.json +++ b/2016.01.json @@ -4,6 +4,7 @@ "reference": "https://git.openstack.org/cgit/openstack/defcore/schema/1.3.rst", "source": "http://git.openstack.org/cgit/openstack/defcore/", "status": "approved", + "cutoff_score": "74", "target_approval": "2016-01-27", "replaces": "2015.07", "releases": ["juno", "kilo", "liberty"], diff --git a/next.json b/next.json index aa31e67c..d90caff8 100644 --- a/next.json +++ b/next.json @@ -4,6 +4,7 @@ "reference": "https://git.openstack.org/cgit/openstack/defcore/schema/1.3.rst", "source": "http://git.openstack.org/cgit/openstack/defcore/", "status": "draft", + "cutoff_score": "74", "target_approval": "2016-08-23", "replaces": "2016.01", "releases": ["kilo", "liberty", "mitaka"], diff --git a/working_materials/scoring.txt b/working_materials/scoring.txt index 03e2ef80..d59a6bd6 100644 --- a/working_materials/scoring.txt +++ b/working_materials/scoring.txt @@ -13,34 +13,43 @@ Capability Name: [Widely Deployed,Used By Tools,Used by Clients], [TC Future Direction, Complete, Stable], [Discoverable, Doc'd, Core in Last Release], [Foundational, Atomic, Proximity], - [Non-Admin] + [Non-Admin] [Total] Possible scores: 0, 1, ? (not scored yet or needs discussion) +The Total score is calculated by multiplying the score for each +Criteria by the weight assigned to that Criteria in the Guideline +JSON file. It is not necessary to calculate the score by hand: +use the tabulate_scores.py script found in this directory. The +script will also append an asterisk (*) to the end of the line if +the total score is greater than or equal to the cutoff_score listed +in the Guideline JSON file, indicating that the Capability +has scored high enough to merit inclusion in the Guideline. + Networking ---------- -network-floating-ips-associate: [1,1,1] [1,1,1] [0,1,0] [0,1,1] [1] [74] -network-floating-ips-create: [1,1,1] [1,1,1] [0,1,0] [0,1,1] [1] [74] -network-floating-ips-update: [1,1,1] [1,1,1] [0,1,0] [0,1,1] [1] [74] -network-floating-ips-delete: [1,1,1] [1,1,1] [0,1,0] [0,1,1] [1] [74] -network-l2-create: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-l2-delete: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-l2-external: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-l2-list: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-l2-port: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-l2-show: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-l2-update: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-l3-add: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] +network-floating-ips-associate: [1,1,1] [1,1,1] [0,1,0] [0,1,1] [1] [74]* +network-floating-ips-create: [1,1,1] [1,1,1] [0,1,0] [0,1,1] [1] [74]* +network-floating-ips-update: [1,1,1] [1,1,1] [0,1,0] [0,1,1] [1] [74]* +network-floating-ips-delete: [1,1,1] [1,1,1] [0,1,0] [0,1,1] [1] [74]* +network-l2-create: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-l2-delete: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-l2-external: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-l2-list: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-l2-port: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-l2-show: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-l2-update: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-l3-add: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* network-l3-convert: [0,0,0] [1,0,0] [0,0,0] [0,0,0] [1] [11] -network-l3-create: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-l3-delete: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-l3-router: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-l3-show: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-l3-update: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-security-groups-create: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-security-groups-delete: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-security-groups-list: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -network-security-groups-show: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] +network-l3-create: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-l3-delete: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-l3-router: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-l3-show: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-l3-update: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-security-groups-create: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-security-groups-delete: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-security-groups-list: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +network-security-groups-show: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* network-extensions-provider-add: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [0] [0] network-extensions-provider-create: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [0] [0] network-extensions-provider-delete: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [0] [0] @@ -103,7 +112,7 @@ Notes: Compute ------- -compute-list-api-versions: [1,0,0] [1,1,1] [1,1,0] [1,1,1] [1] [75] +compute-list-api-versions: [1,0,0] [1,1,1] [1,1,0] [1,1,1] [1] [75]* Notes: * There has been some discussion that this capability is not widely @@ -157,13 +166,13 @@ images-v1-shared-images-get: [0,1,1] [0,1,1] [0,1,0] [1,0,1] [1] [58] images-v1-shared-images-remove: [0,1,1] [0,1,1] [0,1,0] [1,0,1] [1] [58] images-v1-update: [0,1,1] [0,1,1] [0,1,0] [1,0,1] [1] [58] -images-v2-remove: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79] -images-v2-update: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79] -images-v2-share: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79] -images-v2-import: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79] -images-v2-list: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79] -images-v2-delete: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79] -images-v2-get: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79] +images-v2-remove: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79]* +images-v2-update: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79]* +images-v2-share: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79]* +images-v2-import: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79]* +images-v2-list: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79]* +images-v2-delete: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79]* +images-v2-get: [1,0,1] [1,1,1] [1,1,0] [1,0,1] [1] [79]* Notes: * Image creation is captured under the register operation. @@ -173,28 +182,28 @@ Notes: Volume ---------- -volumes-v2-create-delete: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -volumes-v2-attach-detach: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -volumes-v2-snapshot-create-delete: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -volumes-v2-get: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -volumes-v2-list: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -volumes-v2-update: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -volumes-v2-copy-image-to-volume: [1,0,0] [1,1,1] [1,1,1] [1,1,1] [1] [84] -volumes-v2-clone: [1,0,1] [1,1,1] [1,1,1] [1,1,1] [1] [94] -volumes-v2-qos: [1,0,1] [1,1,1] [1,1,1] [1,1,0] [1] [86] -volumes-v2-availability-zones: [1,0,0] [1,1,1] [1,1,1] [1,1,0] [1] [76] +volumes-v2-create-delete: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +volumes-v2-attach-detach: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +volumes-v2-snapshot-create-delete: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +volumes-v2-get: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +volumes-v2-list: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +volumes-v2-update: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +volumes-v2-copy-image-to-volume: [1,0,0] [1,1,1] [1,1,1] [1,1,1] [1] [84]* +volumes-v2-clone: [1,0,1] [1,1,1] [1,1,1] [1,1,1] [1] [94]* +volumes-v2-qos: [1,0,1] [1,1,1] [1,1,1] [1,1,0] [1] [86]* +volumes-v2-availability-zones: [1,0,0] [1,1,1] [1,1,1] [1,1,0] [1] [76]* volumes-v2-extensions: [1,0,0] [0,1,1] [1,1,1] [1,0,0] [1] [59] -volumes-v2-metadata: [1,0,1] [1,1,1] [1,1,1] [1,1,0] [1] [86] -volumes-v2-transfer: [1,0,0] [1,1,1] [1,1,1] [1,1,0] [1] [76] -volumes-v2-reserve: [1,0,0] [1,1,1] [1,1,1] [1,1,0] [1] [76] -volumes-v2-readonly: [1,0,1] [1,1,1] [1,1,1] [1,1,0] [1] [86] -volumes-v2-extend: [1,0,1] [1,1,1] [1,1,0] [1,1,0] [1] [77] -volumes-v2-upload: [1,0,1] [1,1,1] [1,1,0] [1,1,0] [1] [77] +volumes-v2-metadata: [1,0,1] [1,1,1] [1,1,1] [1,1,0] [1] [86]* +volumes-v2-transfer: [1,0,0] [1,1,1] [1,1,1] [1,1,0] [1] [76]* +volumes-v2-reserve: [1,0,0] [1,1,1] [1,1,1] [1,1,0] [1] [76]* +volumes-v2-readonly: [1,0,1] [1,1,1] [1,1,1] [1,1,0] [1] [86]* +volumes-v2-extend: [1,0,1] [1,1,1] [1,1,0] [1,1,0] [1] [77]* +volumes-v2-upload: [1,0,1] [1,1,1] [1,1,0] [1,1,0] [1] [77]* Identity -------- -identity-v3-api-discovery: [1,0,1] [1,1,1] [1,1,0] [1,1,1] [1] [85] -identity-v3-catalog: [1,0,1] [1,1,1] [1,1,0] [1,1,1] [1] [85] +identity-v3-api-discovery: [1,0,1] [1,1,1] [1,1,0] [1,1,1] [1] [85]* +identity-v3-catalog: [1,0,1] [1,1,1] [1,1,0] [1,1,1] [1] [85]* identity-v3-list-projects: [1,0,1] [1,1,1] [1,1,0] [0,1,0] [1] [68] identity-v3-list-groups: [1,0,1] [1,1,1] [1,1,0] [0,1,0] [1] [68] @@ -216,19 +225,19 @@ Notes: Object Store ------------ -objectstore-object-copy: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -objectstore-object-create: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -objectstore-object-delete: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -objectstore-object-get: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -objectstore-object-put: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -objectstore-object-upload: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -objectstore-object-versioned: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] -objectstore-temp-url-get: [1,1,1] [1,1,1] [1,1,1] [1,1,0] [1] [92] +objectstore-object-copy: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +objectstore-object-create: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +objectstore-object-delete: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +objectstore-object-get: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +objectstore-object-put: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +objectstore-object-upload: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +objectstore-object-versioned: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* +objectstore-temp-url-get: [1,1,1] [1,1,1] [1,1,1] [1,1,0] [1] [92]* -objectstore-account-quotas: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -objectstore-account-list: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -objectstore-container-acl: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -objectstore-container-quotas: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -objectstore-container-create: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -objectstore-container-delete: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] -objectstore-container-list: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91] +objectstore-account-quotas: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +objectstore-account-list: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +objectstore-container-acl: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +objectstore-container-quotas: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +objectstore-container-create: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +objectstore-container-delete: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* +objectstore-container-list: [1,1,1] [1,1,1] [1,1,0] [1,1,1] [1] [91]* diff --git a/working_materials/tabulate_scores.py b/working_materials/tabulate_scores.py index 50fabacf..1aeb26e8 100755 --- a/working_materials/tabulate_scores.py +++ b/working_materials/tabulate_scores.py @@ -50,7 +50,7 @@ parser = argparse.ArgumentParser( formatter_class=CustomFormatter) parser.add_argument( '-j', '--json-file', - default='../2016.next.json', + default='../next.json', dest='json_file_name', help='Path to the Guideline JSON file to read weights and names from.') parser.add_argument( @@ -93,12 +93,15 @@ buffer = [] with open(args.score_file_name) as filehandle: # The line format we're expecting here is: # - # capability-name: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100] + # capability-name: [1,1,1] [1,1,1] [1,1,1] [1,1,1] [1] [100]* # # Where the values inside the brackets can be zero, one, or a # question mark. The final column is one that will be # overwritten by this script and represents the total score # for the capability. If present already, it's ignored. + # The optional asterisk on the end indicates that the total score + # is greater than or equal to the cutoff_score parsed from the JSON + # file and therefore the Capability warrants inclusion in the Guideline. pattern = re.compile('((\S+):\s+((\[\S,\S,\S\] ){4}\[\S\]))') # The scores in the tuples have the following meanings, in @@ -172,16 +175,25 @@ with open(args.score_file_name) as filehandle: # wasn't complete. total = total * complete + # If the total score exceeds the cutoff_score listed in + # the JSON file, denote that it has scored high enough + # to be included in the Guideline with an asterisk. + if total >= int(json_data['cutoff_score']): + meets_criteria = '*' + else: + meets_criteria = '' + # Now write the total score to a couple of places. # Put it in the tabulated file. - buffer.append("%s [%d]\n" % (raw.group(1), total)) + buffer.append("%s [%d]%s\n" % (raw.group(1), total, + meets_criteria)) # Put in in the CSV for easy spreadsheet import. - csv_outfile.write("%s\n" % (total)) + csv_outfile.write("%s%s\n" % (total, meets_criteria)) # And stdout is useful for folks who are experimenting with # the effect of changing a score. - print "%s: %d" % (cap_name, total) + print "%s: %d%s" % (cap_name, total, meets_criteria) # Now we can write the text output file. with open(args.text_outfile_name, 'w') as outfile: diff --git a/working_materials/tabulated_scores.csv b/working_materials/tabulated_scores.csv index 3f61ed9f..06d33633 100644 --- a/working_materials/tabulated_scores.csv +++ b/working_materials/tabulated_scores.csv @@ -1,32 +1,32 @@ Capability,Widely Deployed,Used by Tools,Used by Clients,Future Direction,Complete,Stable,Discoverable,Documented,Core in Last Release,Foundation,Atomic,Proximity,Non-Admin,Total -network-floating-ips-associate,1,1,1,1,1,1,0,1,0,0,1,1,1,74 -network-floating-ips-create,1,1,1,1,1,1,0,1,0,0,1,1,1,74 -network-floating-ips-update,1,1,1,1,1,1,0,1,0,0,1,1,1,74 -network-floating-ips-delete,1,1,1,1,1,1,0,1,0,0,1,1,1,74 -network-l2-create,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-l2-delete,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-l2-external,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-l2-list,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-l2-port,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-l2-show,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-l2-update,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-l3-add,1,1,1,1,1,1,1,1,0,1,1,1,1,91 +network-floating-ips-associate,1,1,1,1,1,1,0,1,0,0,1,1,1,74* +network-floating-ips-create,1,1,1,1,1,1,0,1,0,0,1,1,1,74* +network-floating-ips-update,1,1,1,1,1,1,0,1,0,0,1,1,1,74* +network-floating-ips-delete,1,1,1,1,1,1,0,1,0,0,1,1,1,74* +network-l2-create,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-l2-delete,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-l2-external,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-l2-list,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-l2-port,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-l2-show,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-l2-update,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-l3-add,1,1,1,1,1,1,1,1,0,1,1,1,1,91* network-l3-convert,0,0,0,1,0,0,0,0,0,0,0,0,1,11 -network-l3-create,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-l3-delete,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-l3-router,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-l3-show,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-l3-update,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-security-groups-create,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-security-groups-delete,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-security-groups-list,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -network-security-groups-show,1,1,1,1,1,1,1,1,0,1,1,1,1,91 +network-l3-create,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-l3-delete,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-l3-router,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-l3-show,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-l3-update,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-security-groups-create,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-security-groups-delete,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-security-groups-list,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +network-security-groups-show,1,1,1,1,1,1,1,1,0,1,1,1,1,91* network-extensions-provider-add,0 network-extensions-provider-create,0 network-extensions-provider-delete,0 network-extensions-provider-show,0 network-subnet-pools,1,0,0,1,1,1,1,1,0,0,1,1,1,66 -compute-list-api-versions,1,0,0,1,1,1,1,1,0,1,1,1,1,75 +compute-list-api-versions,1,0,0,1,1,1,1,1,0,1,1,1,1,75* images-v1-delete,0,1,1,0,1,1,0,1,0,1,0,1,1,58 images-v1-index,0,1,1,0,1,1,0,1,0,1,0,1,1,58 images-v1-list,0,1,1,0,1,1,0,1,0,1,0,1,1,58 @@ -36,46 +36,46 @@ images-v1-shared-images-delete,0,1,1,0,1,1,0,1,0,1,0,1,1,58 images-v1-shared-images-get,0,1,1,0,1,1,0,1,0,1,0,1,1,58 images-v1-shared-images-remove,0,1,1,0,1,1,0,1,0,1,0,1,1,58 images-v1-update,0,1,1,0,1,1,0,1,0,1,0,1,1,58 -images-v2-remove,1,0,1,1,1,1,1,1,0,1,0,1,1,79 -images-v2-update,1,0,1,1,1,1,1,1,0,1,0,1,1,79 -images-v2-share,1,0,1,1,1,1,1,1,0,1,0,1,1,79 -images-v2-import,1,0,1,1,1,1,1,1,0,1,0,1,1,79 -images-v2-list,1,0,1,1,1,1,1,1,0,1,0,1,1,79 -images-v2-delete,1,0,1,1,1,1,1,1,0,1,0,1,1,79 -images-v2-get,1,0,1,1,1,1,1,1,0,1,0,1,1,79 -volumes-v2-create-delete,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -volumes-v2-attach-detach,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -volumes-v2-snapshot-create-delete,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -volumes-v2-get,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -volumes-v2-list,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -volumes-v2-update,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -volumes-v2-copy-image-to-volume,1,0,0,1,1,1,1,1,1,1,1,1,1,84 -volumes-v2-clone,1,0,1,1,1,1,1,1,1,1,1,1,1,94 -volumes-v2-qos,1,0,1,1,1,1,1,1,1,1,1,0,1,86 -volumes-v2-availability-zones,1,0,0,1,1,1,1,1,1,1,1,0,1,76 +images-v2-remove,1,0,1,1,1,1,1,1,0,1,0,1,1,79* +images-v2-update,1,0,1,1,1,1,1,1,0,1,0,1,1,79* +images-v2-share,1,0,1,1,1,1,1,1,0,1,0,1,1,79* +images-v2-import,1,0,1,1,1,1,1,1,0,1,0,1,1,79* +images-v2-list,1,0,1,1,1,1,1,1,0,1,0,1,1,79* +images-v2-delete,1,0,1,1,1,1,1,1,0,1,0,1,1,79* +images-v2-get,1,0,1,1,1,1,1,1,0,1,0,1,1,79* +volumes-v2-create-delete,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +volumes-v2-attach-detach,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +volumes-v2-snapshot-create-delete,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +volumes-v2-get,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +volumes-v2-list,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +volumes-v2-update,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +volumes-v2-copy-image-to-volume,1,0,0,1,1,1,1,1,1,1,1,1,1,84* +volumes-v2-clone,1,0,1,1,1,1,1,1,1,1,1,1,1,94* +volumes-v2-qos,1,0,1,1,1,1,1,1,1,1,1,0,1,86* +volumes-v2-availability-zones,1,0,0,1,1,1,1,1,1,1,1,0,1,76* volumes-v2-extensions,1,0,0,0,1,1,1,1,1,1,0,0,1,59 -volumes-v2-metadata,1,0,1,1,1,1,1,1,1,1,1,0,1,86 -volumes-v2-transfer,1,0,0,1,1,1,1,1,1,1,1,0,1,76 -volumes-v2-reserve,1,0,0,1,1,1,1,1,1,1,1,0,1,76 -volumes-v2-readonly,1,0,1,1,1,1,1,1,1,1,1,0,1,86 -volumes-v2-extend,1,0,1,1,1,1,1,1,0,1,1,0,1,77 -volumes-v2-upload,1,0,1,1,1,1,1,1,0,1,1,0,1,77 -identity-v3-api-discovery,1,0,1,1,1,1,1,1,0,1,1,1,1,85 -identity-v3-catalog,1,0,1,1,1,1,1,1,0,1,1,1,1,85 +volumes-v2-metadata,1,0,1,1,1,1,1,1,1,1,1,0,1,86* +volumes-v2-transfer,1,0,0,1,1,1,1,1,1,1,1,0,1,76* +volumes-v2-reserve,1,0,0,1,1,1,1,1,1,1,1,0,1,76* +volumes-v2-readonly,1,0,1,1,1,1,1,1,1,1,1,0,1,86* +volumes-v2-extend,1,0,1,1,1,1,1,1,0,1,1,0,1,77* +volumes-v2-upload,1,0,1,1,1,1,1,1,0,1,1,0,1,77* +identity-v3-api-discovery,1,0,1,1,1,1,1,1,0,1,1,1,1,85* +identity-v3-catalog,1,0,1,1,1,1,1,1,0,1,1,1,1,85* identity-v3-list-projects,1,0,1,1,1,1,1,1,0,0,1,0,1,68 identity-v3-list-groups,1,0,1,1,1,1,1,1,0,0,1,0,1,68 -objectstore-object-copy,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -objectstore-object-create,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -objectstore-object-delete,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -objectstore-object-get,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -objectstore-object-put,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -objectstore-object-upload,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -objectstore-object-versioned,1,1,1,1,1,1,1,1,1,1,1,1,1,100 -objectstore-temp-url-get,1,1,1,1,1,1,1,1,1,1,1,0,1,92 -objectstore-account-quotas,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -objectstore-account-list,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -objectstore-container-acl,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -objectstore-container-quotas,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -objectstore-container-create,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -objectstore-container-delete,1,1,1,1,1,1,1,1,0,1,1,1,1,91 -objectstore-container-list,1,1,1,1,1,1,1,1,0,1,1,1,1,91 +objectstore-object-copy,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +objectstore-object-create,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +objectstore-object-delete,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +objectstore-object-get,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +objectstore-object-put,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +objectstore-object-upload,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +objectstore-object-versioned,1,1,1,1,1,1,1,1,1,1,1,1,1,100* +objectstore-temp-url-get,1,1,1,1,1,1,1,1,1,1,1,0,1,92* +objectstore-account-quotas,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +objectstore-account-list,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +objectstore-container-acl,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +objectstore-container-quotas,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +objectstore-container-create,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +objectstore-container-delete,1,1,1,1,1,1,1,1,0,1,1,1,1,91* +objectstore-container-list,1,1,1,1,1,1,1,1,0,1,1,1,1,91*