Browse code

Merge pull request #11344 from enj/enj/d/role_binding

Merged by openshift-bot

OpenShift Bot authored on 2016/10/21 20:12:05
Showing 6 changed files
... ...
@@ -96,26 +96,34 @@ message ClusterRole {
96 96
 }
97 97
 
98 98
 // ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference any ClusterRole in the same namespace or in the global namespace.
99
-// It adds who information via Users and Groups and namespace information by which namespace it exists in.  ClusterRoleBindings in a given
100
-// namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
99
+// It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in.
100
+// ClusterRoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
101 101
 message ClusterRoleBinding {
102 102
   // Standard object's metadata.
103 103
   optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;
104 104
 
105
-  // UserNames holds all the usernames directly bound to the role
105
+  // UserNames holds all the usernames directly bound to the role.
106
+  // This field should only be specified when supporting legacy clients and servers.
107
+  // See Subjects for further details.
106 108
   // +k8s:conversion-gen=false
107 109
   optional OptionalNames userNames = 2;
108 110
 
109
-  // GroupNames holds all the groups directly bound to the role
111
+  // GroupNames holds all the groups directly bound to the role.
112
+  // This field should only be specified when supporting legacy clients and servers.
113
+  // See Subjects for further details.
110 114
   // +k8s:conversion-gen=false
111 115
   optional OptionalNames groupNames = 3;
112 116
 
113
-  // Subjects hold object references to authorize with this rule
117
+  // Subjects hold object references to authorize with this rule.
118
+  // This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers.
119
+  // Thus newer clients that do not need to support backwards compatibility should send
120
+  // only fully qualified Subjects and should omit the UserNames and GroupNames fields.
121
+  // Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames.
114 122
   repeated k8s.io.kubernetes.pkg.api.v1.ObjectReference subjects = 4;
115 123
 
116
-  // RoleRef can only reference the current namespace and the global namespace
124
+  // RoleRef can only reference the current namespace and the global namespace.
117 125
   // If the ClusterRoleRef cannot be resolved, the Authorizer must return an error.
118
-  // Since Policy is a singleton, this is sufficient knowledge to locate a role
126
+  // Since Policy is a singleton, this is sufficient knowledge to locate a role.
119 127
   optional k8s.io.kubernetes.pkg.api.v1.ObjectReference roleRef = 5;
120 128
 }
121 129
 
... ...
@@ -328,26 +336,34 @@ message Role {
328 328
 }
329 329
 
330 330
 // RoleBinding references a Role, but not contain it.  It can reference any Role in the same namespace or in the global namespace.
331
-// It adds who information via Users and Groups and namespace information by which namespace it exists in.  RoleBindings in a given
332
-// namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
331
+// It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in.
332
+// RoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
333 333
 message RoleBinding {
334 334
   // Standard object's metadata.
335 335
   optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;
336 336
 
337
-  // UserNames holds all the usernames directly bound to the role
337
+  // UserNames holds all the usernames directly bound to the role.
338
+  // This field should only be specified when supporting legacy clients and servers.
339
+  // See Subjects for further details.
338 340
   // +k8s:conversion-gen=false
339 341
   optional OptionalNames userNames = 2;
340 342
 
341
-  // GroupNames holds all the groups directly bound to the role
343
+  // GroupNames holds all the groups directly bound to the role.
344
+  // This field should only be specified when supporting legacy clients and servers.
345
+  // See Subjects for further details.
342 346
   // +k8s:conversion-gen=false
343 347
   optional OptionalNames groupNames = 3;
344 348
 
345
-  // Subjects hold object references to authorize with this rule
349
+  // Subjects hold object references to authorize with this rule.
350
+  // This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers.
351
+  // Thus newer clients that do not need to support backwards compatibility should send
352
+  // only fully qualified Subjects and should omit the UserNames and GroupNames fields.
353
+  // Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames.
346 354
   repeated k8s.io.kubernetes.pkg.api.v1.ObjectReference subjects = 4;
347 355
 
348
-  // RoleRef can only reference the current namespace and the global namespace
356
+  // RoleRef can only reference the current namespace and the global namespace.
349 357
   // If the RoleRef cannot be resolved, the Authorizer must return an error.
350
-  // Since Policy is a singleton, this is sufficient knowledge to locate a role
358
+  // Since Policy is a singleton, this is sufficient knowledge to locate a role.
351 359
   optional k8s.io.kubernetes.pkg.api.v1.ObjectReference roleRef = 5;
352 360
 }
353 361
 
... ...
@@ -22891,7 +22891,7 @@
22891 22891
    },
22892 22892
    "v1.ClusterRoleBinding": {
22893 22893
     "id": "v1.ClusterRoleBinding",
22894
-    "description": "ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference any ClusterRole in the same namespace or in the global namespace. It adds who information via Users and Groups and namespace information by which namespace it exists in.  ClusterRoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
22894
+    "description": "ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference any ClusterRole in the same namespace or in the global namespace. It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in. ClusterRoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
22895 22895
     "required": [
22896 22896
      "userNames",
22897 22897
      "groupNames",
... ...
@@ -22916,25 +22916,25 @@
22916 22916
       "items": {
22917 22917
        "type": "string"
22918 22918
       },
22919
-      "description": "UserNames holds all the usernames directly bound to the role"
22919
+      "description": "UserNames holds all the usernames directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details."
22920 22920
      },
22921 22921
      "groupNames": {
22922 22922
       "type": "array",
22923 22923
       "items": {
22924 22924
        "type": "string"
22925 22925
       },
22926
-      "description": "GroupNames holds all the groups directly bound to the role"
22926
+      "description": "GroupNames holds all the groups directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details."
22927 22927
      },
22928 22928
      "subjects": {
22929 22929
       "type": "array",
22930 22930
       "items": {
22931 22931
        "$ref": "v1.ObjectReference"
22932 22932
       },
22933
-      "description": "Subjects hold object references to authorize with this rule"
22933
+      "description": "Subjects hold object references to authorize with this rule. This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers. Thus newer clients that do not need to support backwards compatibility should send only fully qualified Subjects and should omit the UserNames and GroupNames fields. Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames."
22934 22934
      },
22935 22935
      "roleRef": {
22936 22936
       "$ref": "v1.ObjectReference",
22937
-      "description": "RoleRef can only reference the current namespace and the global namespace If the ClusterRoleRef cannot be resolved, the Authorizer must return an error. Since Policy is a singleton, this is sufficient knowledge to locate a role"
22937
+      "description": "RoleRef can only reference the current namespace and the global namespace. If the ClusterRoleRef cannot be resolved, the Authorizer must return an error. Since Policy is a singleton, this is sufficient knowledge to locate a role."
22938 22938
      }
22939 22939
     }
22940 22940
    },
... ...
@@ -26982,7 +26982,7 @@
26982 26982
    },
26983 26983
    "v1.RoleBinding": {
26984 26984
     "id": "v1.RoleBinding",
26985
-    "description": "RoleBinding references a Role, but not contain it.  It can reference any Role in the same namespace or in the global namespace. It adds who information via Users and Groups and namespace information by which namespace it exists in.  RoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
26985
+    "description": "RoleBinding references a Role, but not contain it.  It can reference any Role in the same namespace or in the global namespace. It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
26986 26986
     "required": [
26987 26987
      "userNames",
26988 26988
      "groupNames",
... ...
@@ -27007,25 +27007,25 @@
27007 27007
       "items": {
27008 27008
        "type": "string"
27009 27009
       },
27010
-      "description": "UserNames holds all the usernames directly bound to the role"
27010
+      "description": "UserNames holds all the usernames directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details."
27011 27011
      },
27012 27012
      "groupNames": {
27013 27013
       "type": "array",
27014 27014
       "items": {
27015 27015
        "type": "string"
27016 27016
       },
27017
-      "description": "GroupNames holds all the groups directly bound to the role"
27017
+      "description": "GroupNames holds all the groups directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details."
27018 27018
      },
27019 27019
      "subjects": {
27020 27020
       "type": "array",
27021 27021
       "items": {
27022 27022
        "$ref": "v1.ObjectReference"
27023 27023
       },
27024
-      "description": "Subjects hold object references to authorize with this rule"
27024
+      "description": "Subjects hold object references to authorize with this rule. This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers. Thus newer clients that do not need to support backwards compatibility should send only fully qualified Subjects and should omit the UserNames and GroupNames fields. Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames."
27025 27025
      },
27026 27026
      "roleRef": {
27027 27027
       "$ref": "v1.ObjectReference",
27028
-      "description": "RoleRef can only reference the current namespace and the global namespace If the RoleRef cannot be resolved, the Authorizer must return an error. Since Policy is a singleton, this is sufficient knowledge to locate a role"
27028
+      "description": "RoleRef can only reference the current namespace and the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error. Since Policy is a singleton, this is sufficient knowledge to locate a role."
27029 27029
      }
27030 27030
     }
27031 27031
    },
... ...
@@ -45447,7 +45447,7 @@
45447 45447
     }
45448 45448
    },
45449 45449
    "v1.ClusterRoleBinding": {
45450
-    "description": "ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference any ClusterRole in the same namespace or in the global namespace. It adds who information via Users and Groups and namespace information by which namespace it exists in.  ClusterRoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
45450
+    "description": "ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference any ClusterRole in the same namespace or in the global namespace. It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in. ClusterRoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
45451 45451
     "required": [
45452 45452
      "userNames",
45453 45453
      "groupNames",
... ...
@@ -45460,7 +45460,7 @@
45460 45460
       "type": "string"
45461 45461
      },
45462 45462
      "groupNames": {
45463
-      "description": "GroupNames holds all the groups directly bound to the role",
45463
+      "description": "GroupNames holds all the groups directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details.",
45464 45464
       "type": "array",
45465 45465
       "items": {
45466 45466
        "type": "string"
... ...
@@ -45477,14 +45477,14 @@
45477 45477
       "$ref": "#/definitions/v1.ObjectReference"
45478 45478
      },
45479 45479
      "subjects": {
45480
-      "description": "Subjects hold object references to authorize with this rule",
45480
+      "description": "Subjects hold object references to authorize with this rule. This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers. Thus newer clients that do not need to support backwards compatibility should send only fully qualified Subjects and should omit the UserNames and GroupNames fields. Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames.",
45481 45481
       "type": "array",
45482 45482
       "items": {
45483 45483
        "$ref": "#/definitions/v1.ObjectReference"
45484 45484
       }
45485 45485
      },
45486 45486
      "userNames": {
45487
-      "description": "UserNames holds all the usernames directly bound to the role",
45487
+      "description": "UserNames holds all the usernames directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details.",
45488 45488
       "type": "array",
45489 45489
       "items": {
45490 45490
        "type": "string"
... ...
@@ -51067,7 +51067,7 @@
51067 51067
     }
51068 51068
    },
51069 51069
    "v1.RoleBinding": {
51070
-    "description": "RoleBinding references a Role, but not contain it.  It can reference any Role in the same namespace or in the global namespace. It adds who information via Users and Groups and namespace information by which namespace it exists in.  RoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
51070
+    "description": "RoleBinding references a Role, but not contain it.  It can reference any Role in the same namespace or in the global namespace. It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
51071 51071
     "required": [
51072 51072
      "userNames",
51073 51073
      "groupNames",
... ...
@@ -51080,7 +51080,7 @@
51080 51080
       "type": "string"
51081 51081
      },
51082 51082
      "groupNames": {
51083
-      "description": "GroupNames holds all the groups directly bound to the role",
51083
+      "description": "GroupNames holds all the groups directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details.",
51084 51084
       "type": "array",
51085 51085
       "items": {
51086 51086
        "type": "string"
... ...
@@ -51097,14 +51097,14 @@
51097 51097
       "$ref": "#/definitions/v1.ObjectReference"
51098 51098
      },
51099 51099
      "subjects": {
51100
-      "description": "Subjects hold object references to authorize with this rule",
51100
+      "description": "Subjects hold object references to authorize with this rule. This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers. Thus newer clients that do not need to support backwards compatibility should send only fully qualified Subjects and should omit the UserNames and GroupNames fields. Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames.",
51101 51101
       "type": "array",
51102 51102
       "items": {
51103 51103
        "$ref": "#/definitions/v1.ObjectReference"
51104 51104
       }
51105 51105
      },
51106 51106
      "userNames": {
51107
-      "description": "UserNames holds all the usernames directly bound to the role",
51107
+      "description": "UserNames holds all the usernames directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details.",
51108 51108
       "type": "array",
51109 51109
       "items": {
51110 51110
        "type": "string"
... ...
@@ -96,26 +96,34 @@ message ClusterRole {
96 96
 }
97 97
 
98 98
 // ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference any ClusterRole in the same namespace or in the global namespace.
99
-// It adds who information via Users and Groups and namespace information by which namespace it exists in.  ClusterRoleBindings in a given
100
-// namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
99
+// It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in.
100
+// ClusterRoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
101 101
 message ClusterRoleBinding {
102 102
   // Standard object's metadata.
103 103
   optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;
104 104
 
105
-  // UserNames holds all the usernames directly bound to the role
105
+  // UserNames holds all the usernames directly bound to the role.
106
+  // This field should only be specified when supporting legacy clients and servers.
107
+  // See Subjects for further details.
106 108
   // +k8s:conversion-gen=false
107 109
   optional OptionalNames userNames = 2;
108 110
 
109
-  // GroupNames holds all the groups directly bound to the role
111
+  // GroupNames holds all the groups directly bound to the role.
112
+  // This field should only be specified when supporting legacy clients and servers.
113
+  // See Subjects for further details.
110 114
   // +k8s:conversion-gen=false
111 115
   optional OptionalNames groupNames = 3;
112 116
 
113
-  // Subjects hold object references to authorize with this rule
117
+  // Subjects hold object references to authorize with this rule.
118
+  // This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers.
119
+  // Thus newer clients that do not need to support backwards compatibility should send
120
+  // only fully qualified Subjects and should omit the UserNames and GroupNames fields.
121
+  // Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames.
114 122
   repeated k8s.io.kubernetes.pkg.api.v1.ObjectReference subjects = 4;
115 123
 
116
-  // RoleRef can only reference the current namespace and the global namespace
124
+  // RoleRef can only reference the current namespace and the global namespace.
117 125
   // If the ClusterRoleRef cannot be resolved, the Authorizer must return an error.
118
-  // Since Policy is a singleton, this is sufficient knowledge to locate a role
126
+  // Since Policy is a singleton, this is sufficient knowledge to locate a role.
119 127
   optional k8s.io.kubernetes.pkg.api.v1.ObjectReference roleRef = 5;
120 128
 }
121 129
 
... ...
@@ -328,26 +336,34 @@ message Role {
328 328
 }
329 329
 
330 330
 // RoleBinding references a Role, but not contain it.  It can reference any Role in the same namespace or in the global namespace.
331
-// It adds who information via Users and Groups and namespace information by which namespace it exists in.  RoleBindings in a given
332
-// namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
331
+// It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in.
332
+// RoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
333 333
 message RoleBinding {
334 334
   // Standard object's metadata.
335 335
   optional k8s.io.kubernetes.pkg.api.v1.ObjectMeta metadata = 1;
336 336
 
337
-  // UserNames holds all the usernames directly bound to the role
337
+  // UserNames holds all the usernames directly bound to the role.
338
+  // This field should only be specified when supporting legacy clients and servers.
339
+  // See Subjects for further details.
338 340
   // +k8s:conversion-gen=false
339 341
   optional OptionalNames userNames = 2;
340 342
 
341
-  // GroupNames holds all the groups directly bound to the role
343
+  // GroupNames holds all the groups directly bound to the role.
344
+  // This field should only be specified when supporting legacy clients and servers.
345
+  // See Subjects for further details.
342 346
   // +k8s:conversion-gen=false
343 347
   optional OptionalNames groupNames = 3;
344 348
 
345
-  // Subjects hold object references to authorize with this rule
349
+  // Subjects hold object references to authorize with this rule.
350
+  // This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers.
351
+  // Thus newer clients that do not need to support backwards compatibility should send
352
+  // only fully qualified Subjects and should omit the UserNames and GroupNames fields.
353
+  // Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames.
346 354
   repeated k8s.io.kubernetes.pkg.api.v1.ObjectReference subjects = 4;
347 355
 
348
-  // RoleRef can only reference the current namespace and the global namespace
356
+  // RoleRef can only reference the current namespace and the global namespace.
349 357
   // If the RoleRef cannot be resolved, the Authorizer must return an error.
350
-  // Since Policy is a singleton, this is sufficient knowledge to locate a role
358
+  // Since Policy is a singleton, this is sufficient knowledge to locate a role.
351 359
   optional k8s.io.kubernetes.pkg.api.v1.ObjectReference roleRef = 5;
352 360
 }
353 361
 
... ...
@@ -74,12 +74,12 @@ func (ClusterRole) SwaggerDoc() map[string]string {
74 74
 }
75 75
 
76 76
 var map_ClusterRoleBinding = map[string]string{
77
-	"":           "ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference any ClusterRole in the same namespace or in the global namespace. It adds who information via Users and Groups and namespace information by which namespace it exists in.  ClusterRoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
77
+	"":           "ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference any ClusterRole in the same namespace or in the global namespace. It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in. ClusterRoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
78 78
 	"metadata":   "Standard object's metadata.",
79
-	"userNames":  "UserNames holds all the usernames directly bound to the role",
80
-	"groupNames": "GroupNames holds all the groups directly bound to the role",
81
-	"subjects":   "Subjects hold object references to authorize with this rule",
82
-	"roleRef":    "RoleRef can only reference the current namespace and the global namespace If the ClusterRoleRef cannot be resolved, the Authorizer must return an error. Since Policy is a singleton, this is sufficient knowledge to locate a role",
79
+	"userNames":  "UserNames holds all the usernames directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details.",
80
+	"groupNames": "GroupNames holds all the groups directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details.",
81
+	"subjects":   "Subjects hold object references to authorize with this rule. This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers. Thus newer clients that do not need to support backwards compatibility should send only fully qualified Subjects and should omit the UserNames and GroupNames fields. Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames.",
82
+	"roleRef":    "RoleRef can only reference the current namespace and the global namespace. If the ClusterRoleRef cannot be resolved, the Authorizer must return an error. Since Policy is a singleton, this is sufficient knowledge to locate a role.",
83 83
 }
84 84
 
85 85
 func (ClusterRoleBinding) SwaggerDoc() map[string]string {
... ...
@@ -261,12 +261,12 @@ func (Role) SwaggerDoc() map[string]string {
261 261
 }
262 262
 
263 263
 var map_RoleBinding = map[string]string{
264
-	"":           "RoleBinding references a Role, but not contain it.  It can reference any Role in the same namespace or in the global namespace. It adds who information via Users and Groups and namespace information by which namespace it exists in.  RoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
264
+	"":           "RoleBinding references a Role, but not contain it.  It can reference any Role in the same namespace or in the global namespace. It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in. RoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).",
265 265
 	"metadata":   "Standard object's metadata.",
266
-	"userNames":  "UserNames holds all the usernames directly bound to the role",
267
-	"groupNames": "GroupNames holds all the groups directly bound to the role",
268
-	"subjects":   "Subjects hold object references to authorize with this rule",
269
-	"roleRef":    "RoleRef can only reference the current namespace and the global namespace If the RoleRef cannot be resolved, the Authorizer must return an error. Since Policy is a singleton, this is sufficient knowledge to locate a role",
266
+	"userNames":  "UserNames holds all the usernames directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details.",
267
+	"groupNames": "GroupNames holds all the groups directly bound to the role. This field should only be specified when supporting legacy clients and servers. See Subjects for further details.",
268
+	"subjects":   "Subjects hold object references to authorize with this rule. This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers. Thus newer clients that do not need to support backwards compatibility should send only fully qualified Subjects and should omit the UserNames and GroupNames fields. Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames.",
269
+	"roleRef":    "RoleRef can only reference the current namespace and the global namespace. If the RoleRef cannot be resolved, the Authorizer must return an error. Since Policy is a singleton, this is sufficient knowledge to locate a role.",
270 270
 }
271 271
 
272 272
 func (RoleBinding) SwaggerDoc() map[string]string {
... ...
@@ -61,25 +61,33 @@ func (t OptionalNames) String() string {
61 61
 }
62 62
 
63 63
 // RoleBinding references a Role, but not contain it.  It can reference any Role in the same namespace or in the global namespace.
64
-// It adds who information via Users and Groups and namespace information by which namespace it exists in.  RoleBindings in a given
65
-// namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
64
+// It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in.
65
+// RoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
66 66
 type RoleBinding struct {
67 67
 	unversioned.TypeMeta `json:",inline"`
68 68
 	// Standard object's metadata.
69 69
 	kapi.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
70 70
 
71
-	// UserNames holds all the usernames directly bound to the role
71
+	// UserNames holds all the usernames directly bound to the role.
72
+	// This field should only be specified when supporting legacy clients and servers.
73
+	// See Subjects for further details.
72 74
 	// +k8s:conversion-gen=false
73 75
 	UserNames OptionalNames `json:"userNames" protobuf:"bytes,2,rep,name=userNames"`
74
-	// GroupNames holds all the groups directly bound to the role
76
+	// GroupNames holds all the groups directly bound to the role.
77
+	// This field should only be specified when supporting legacy clients and servers.
78
+	// See Subjects for further details.
75 79
 	// +k8s:conversion-gen=false
76 80
 	GroupNames OptionalNames `json:"groupNames" protobuf:"bytes,3,rep,name=groupNames"`
77
-	// Subjects hold object references to authorize with this rule
81
+	// Subjects hold object references to authorize with this rule.
82
+	// This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers.
83
+	// Thus newer clients that do not need to support backwards compatibility should send
84
+	// only fully qualified Subjects and should omit the UserNames and GroupNames fields.
85
+	// Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames.
78 86
 	Subjects []kapi.ObjectReference `json:"subjects" protobuf:"bytes,4,rep,name=subjects"`
79 87
 
80
-	// RoleRef can only reference the current namespace and the global namespace
88
+	// RoleRef can only reference the current namespace and the global namespace.
81 89
 	// If the RoleRef cannot be resolved, the Authorizer must return an error.
82
-	// Since Policy is a singleton, this is sufficient knowledge to locate a role
90
+	// Since Policy is a singleton, this is sufficient knowledge to locate a role.
83 91
 	RoleRef kapi.ObjectReference `json:"roleRef" protobuf:"bytes,5,opt,name=roleRef"`
84 92
 }
85 93
 
... ...
@@ -349,25 +357,33 @@ type ClusterRole struct {
349 349
 }
350 350
 
351 351
 // ClusterRoleBinding references a ClusterRole, but not contain it.  It can reference any ClusterRole in the same namespace or in the global namespace.
352
-// It adds who information via Users and Groups and namespace information by which namespace it exists in.  ClusterRoleBindings in a given
353
-// namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
352
+// It adds who information via (Users and Groups) OR Subjects and namespace information by which namespace it exists in.
353
+// ClusterRoleBindings in a given namespace only have effect in that namespace (excepting the master namespace which has power in all namespaces).
354 354
 type ClusterRoleBinding struct {
355 355
 	unversioned.TypeMeta `json:",inline"`
356 356
 	// Standard object's metadata.
357 357
 	kapi.ObjectMeta `json:"metadata,omitempty" protobuf:"bytes,1,opt,name=metadata"`
358 358
 
359
-	// UserNames holds all the usernames directly bound to the role
359
+	// UserNames holds all the usernames directly bound to the role.
360
+	// This field should only be specified when supporting legacy clients and servers.
361
+	// See Subjects for further details.
360 362
 	// +k8s:conversion-gen=false
361 363
 	UserNames OptionalNames `json:"userNames" protobuf:"bytes,2,rep,name=userNames"`
362
-	// GroupNames holds all the groups directly bound to the role
364
+	// GroupNames holds all the groups directly bound to the role.
365
+	// This field should only be specified when supporting legacy clients and servers.
366
+	// See Subjects for further details.
363 367
 	// +k8s:conversion-gen=false
364 368
 	GroupNames OptionalNames `json:"groupNames" protobuf:"bytes,3,rep,name=groupNames"`
365
-	// Subjects hold object references to authorize with this rule
369
+	// Subjects hold object references to authorize with this rule.
370
+	// This field is ignored if UserNames or GroupNames are specified to support legacy clients and servers.
371
+	// Thus newer clients that do not need to support backwards compatibility should send
372
+	// only fully qualified Subjects and should omit the UserNames and GroupNames fields.
373
+	// Clients that need to support backwards compatibility can use this field to build the UserNames and GroupNames.
366 374
 	Subjects []kapi.ObjectReference `json:"subjects" protobuf:"bytes,4,rep,name=subjects"`
367 375
 
368
-	// RoleRef can only reference the current namespace and the global namespace
376
+	// RoleRef can only reference the current namespace and the global namespace.
369 377
 	// If the ClusterRoleRef cannot be resolved, the Authorizer must return an error.
370
-	// Since Policy is a singleton, this is sufficient knowledge to locate a role
378
+	// Since Policy is a singleton, this is sufficient knowledge to locate a role.
371 379
 	RoleRef kapi.ObjectReference `json:"roleRef" protobuf:"bytes,5,opt,name=roleRef"`
372 380
 }
373 381