1
0
mirror of https://github.com/rancher/types.git synced 2025-07-02 16:31:48 +00:00

Add default fields to globalRole and roleTemplates

This commit is contained in:
Dan Ramich 2018-07-03 16:01:35 -07:00 committed by Craig Jellick
parent 8fa06eae27
commit d8ca395c0b
11 changed files with 231 additions and 93 deletions

View File

@ -1,9 +1,13 @@
package v3
import (
"github.com/rancher/norman/condition"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
const UserConditionInitialRolesPopulated condition.Cond = "InitialRolesPopulated"
type Token struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
@ -26,16 +30,39 @@ type User struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
DisplayName string `json:"displayName,omitempty"`
Description string `json:"description"`
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty" norman:"writeOnly,noupdate"`
MustChangePassword bool `json:"mustChangePassword,omitempty"`
PrincipalIDs []string `json:"principalIds,omitempty" norman:"type=array[reference[principal]]"`
Me bool `json:"me,omitempty"`
Enabled *bool `json:"enabled,omitempty" norman:"default=true"`
DisplayName string `json:"displayName,omitempty"`
Description string `json:"description"`
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty" norman:"writeOnly,noupdate"`
MustChangePassword bool `json:"mustChangePassword,omitempty"`
PrincipalIDs []string `json:"principalIds,omitempty" norman:"type=array[reference[principal]]"`
Me bool `json:"me,omitempty"`
Enabled *bool `json:"enabled,omitempty" norman:"default=true"`
Spec UserSpec `json:"spec,omitempty"`
Status UserStatus `json:"status"`
}
type UserStatus struct {
Conditions []UserCondition `json:"conditions"`
}
type UserCondition struct {
// Type of user condition.
Type string `json:"type"`
// Status of the condition, one of True, False, Unknown.
Status v1.ConditionStatus `json:"status"`
// The last time this condition was updated.
LastUpdateTime string `json:"lastUpdateTime,omitempty"`
// Last time the condition transitioned from one status to another.
LastTransitionTime string `json:"lastTransitionTime,omitempty"`
// The reason for the condition's last transition.
Reason string `json:"reason,omitempty"`
// Human-readable message indicating details about last transition
Message string `json:"message,omitempty"`
}
type UserSpec struct{}
// UserAttribute will have a CRD (and controller) generated for it, but will not be exposed in the API.
type UserAttribute struct {
metav1.TypeMeta `json:",inline"`

View File

@ -10,9 +10,10 @@ import (
)
var (
NamespaceBackedResource condition.Cond = "BackingNamespaceCreated"
CreatorMadeOwner condition.Cond = "CreatorMadeOwner"
DefaultNetworkPolicyCreated condition.Cond = "DefaultNetworkPolicyCreated"
NamespaceBackedResource condition.Cond = "BackingNamespaceCreated"
CreatorMadeOwner condition.Cond = "CreatorMadeOwner"
DefaultNetworkPolicyCreated condition.Cond = "DefaultNetworkPolicyCreated"
ProjectConditionInitialRolesPopulated condition.Cond = "InitialRolesPopulated"
)
type Project struct {
@ -55,10 +56,10 @@ type GlobalRole struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
DisplayName string `json:"displayName,omitempty" norman:"required"`
Description string `json:"description"`
Rules []rbacv1.PolicyRule `json:"rules,omitempty"`
Builtin bool `json:"builtin" norman:"nocreate,noupdate"`
DisplayName string `json:"displayName,omitempty" norman:"required,noupdate"`
Description string `json:"description" norman:"noupdate"`
Rules []rbacv1.PolicyRule `json:"rules,omitempty" norman:"noupdate"`
NewUserDefault bool `json:"newUserDefault,omitempty" norman:"required"`
}
type GlobalRoleBinding struct {
@ -73,15 +74,17 @@ type RoleTemplate struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
DisplayName string `json:"displayName,omitempty" norman:"required"`
Description string `json:"description"`
Rules []rbacv1.PolicyRule `json:"rules,omitempty"`
Builtin bool `json:"builtin" norman:"nocreate,noupdate"`
External bool `json:"external"`
Hidden bool `json:"hidden"`
Locked bool `json:"locked,omitempty" norman:"type=boolean"`
Context string `json:"context" norman:"type=string,options=project|cluster"`
RoleTemplateNames []string `json:"roleTemplateNames,omitempty" norman:"type=array[reference[roleTemplate]]"`
DisplayName string `json:"displayName,omitempty" norman:"required"`
Description string `json:"description"`
Rules []rbacv1.PolicyRule `json:"rules,omitempty"`
Builtin bool `json:"builtin" norman:"nocreate,noupdate"`
External bool `json:"external"`
Hidden bool `json:"hidden"`
Locked bool `json:"locked,omitempty" norman:"type=boolean"`
ClusterCreatorDefault bool `json:"clusterCreatorDefault,omitempty" norman:"required"`
ProjectCreatorDefault bool `json:"projectCreatorDefault,omitempty" norman:"required"`
Context string `json:"context" norman:"type=string,options=project|cluster"`
RoleTemplateNames []string `json:"roleTemplateNames,omitempty" norman:"type=array[reference[roleTemplate]]"`
}
type PodSecurityPolicyTemplate struct {

View File

@ -188,7 +188,10 @@ func authzTypes(schemas *types.Schemas) *types.Schemas {
"exportYaml": {},
}
}).
MustImport(&Version, v3.GlobalRole{}).
MustImportAndCustomize(&Version, v3.GlobalRole{}, func(schema *types.Schema) {
schema.CollectionMethods = []string{http.MethodGet}
schema.ResourceMethods = []string{http.MethodGet, http.MethodPut}
}).
MustImport(&Version, v3.GlobalRoleBinding{}).
MustImport(&Version, v3.RoleTemplate{}).
MustImport(&Version, v3.PodSecurityPolicyTemplate{}).
@ -268,7 +271,8 @@ func tokens(schemas *types.Schemas) *types.Schemas {
func authnTypes(schemas *types.Schemas) *types.Schemas {
return schemas.
AddMapperForType(&Version, v3.User{}, m.DisplayName{}).
AddMapperForType(&Version, v3.User{}, m.DisplayName{},
&m.Embed{Field: "status"}).
AddMapperForType(&Version, v3.Group{}, m.DisplayName{}).
MustImport(&Version, v3.Group{}).
MustImport(&Version, v3.GroupMember{}).

View File

@ -6448,6 +6448,8 @@ func (in *User) DeepCopyInto(out *User) {
**out = **in
}
}
out.Spec = in.Spec
in.Status.DeepCopyInto(&out.Status)
return
}
@ -6535,6 +6537,22 @@ func (in *UserAttributeList) DeepCopyObject() runtime.Object {
return nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *UserCondition) DeepCopyInto(out *UserCondition) {
*out = *in
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserCondition.
func (in *UserCondition) DeepCopy() *UserCondition {
if in == nil {
return nil
}
out := new(UserCondition)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *UserList) DeepCopyInto(out *UserList) {
*out = *in
@ -6568,6 +6586,43 @@ func (in *UserList) DeepCopyObject() runtime.Object {
return nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *UserSpec) DeepCopyInto(out *UserSpec) {
*out = *in
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserSpec.
func (in *UserSpec) DeepCopy() *UserSpec {
if in == nil {
return nil
}
out := new(UserSpec)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *UserStatus) DeepCopyInto(out *UserStatus) {
*out = *in
if in.Conditions != nil {
in, out := &in.Conditions, &out.Conditions
*out = make([]UserCondition, len(*in))
copy(*out, *in)
}
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UserStatus.
func (in *UserStatus) DeepCopy() *UserStatus {
if in == nil {
return nil
}
out := new(UserStatus)
in.DeepCopyInto(out)
return out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Values) DeepCopyInto(out *Values) {
*out = *in

View File

@ -7,12 +7,12 @@ import (
const (
GlobalRoleType = "globalRole"
GlobalRoleFieldAnnotations = "annotations"
GlobalRoleFieldBuiltin = "builtin"
GlobalRoleFieldCreated = "created"
GlobalRoleFieldCreatorID = "creatorId"
GlobalRoleFieldDescription = "description"
GlobalRoleFieldLabels = "labels"
GlobalRoleFieldName = "name"
GlobalRoleFieldNewUserDefault = "newUserDefault"
GlobalRoleFieldOwnerReferences = "ownerReferences"
GlobalRoleFieldRemoved = "removed"
GlobalRoleFieldRules = "rules"
@ -22,12 +22,12 @@ const (
type GlobalRole struct {
types.Resource
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
Builtin bool `json:"builtin,omitempty" yaml:"builtin,omitempty"`
Created string `json:"created,omitempty" yaml:"created,omitempty"`
CreatorID string `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
NewUserDefault bool `json:"newUserDefault,omitempty" yaml:"newUserDefault,omitempty"`
OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
Removed string `json:"removed,omitempty" yaml:"removed,omitempty"`
Rules []PolicyRule `json:"rules,omitempty" yaml:"rules,omitempty"`

View File

@ -5,43 +5,47 @@ import (
)
const (
RoleTemplateType = "roleTemplate"
RoleTemplateFieldAnnotations = "annotations"
RoleTemplateFieldBuiltin = "builtin"
RoleTemplateFieldContext = "context"
RoleTemplateFieldCreated = "created"
RoleTemplateFieldCreatorID = "creatorId"
RoleTemplateFieldDescription = "description"
RoleTemplateFieldExternal = "external"
RoleTemplateFieldHidden = "hidden"
RoleTemplateFieldLabels = "labels"
RoleTemplateFieldLocked = "locked"
RoleTemplateFieldName = "name"
RoleTemplateFieldOwnerReferences = "ownerReferences"
RoleTemplateFieldRemoved = "removed"
RoleTemplateFieldRoleTemplateIds = "roleTemplateIds"
RoleTemplateFieldRules = "rules"
RoleTemplateFieldUuid = "uuid"
RoleTemplateType = "roleTemplate"
RoleTemplateFieldAnnotations = "annotations"
RoleTemplateFieldBuiltin = "builtin"
RoleTemplateFieldClusterCreatorDefault = "clusterCreatorDefault"
RoleTemplateFieldContext = "context"
RoleTemplateFieldCreated = "created"
RoleTemplateFieldCreatorID = "creatorId"
RoleTemplateFieldDescription = "description"
RoleTemplateFieldExternal = "external"
RoleTemplateFieldHidden = "hidden"
RoleTemplateFieldLabels = "labels"
RoleTemplateFieldLocked = "locked"
RoleTemplateFieldName = "name"
RoleTemplateFieldOwnerReferences = "ownerReferences"
RoleTemplateFieldProjectCreatorDefault = "projectCreatorDefault"
RoleTemplateFieldRemoved = "removed"
RoleTemplateFieldRoleTemplateIds = "roleTemplateIds"
RoleTemplateFieldRules = "rules"
RoleTemplateFieldUuid = "uuid"
)
type RoleTemplate struct {
types.Resource
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
Builtin bool `json:"builtin,omitempty" yaml:"builtin,omitempty"`
Context string `json:"context,omitempty" yaml:"context,omitempty"`
Created string `json:"created,omitempty" yaml:"created,omitempty"`
CreatorID string `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
External bool `json:"external,omitempty" yaml:"external,omitempty"`
Hidden bool `json:"hidden,omitempty" yaml:"hidden,omitempty"`
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
Locked bool `json:"locked,omitempty" yaml:"locked,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
Removed string `json:"removed,omitempty" yaml:"removed,omitempty"`
RoleTemplateIds []string `json:"roleTemplateIds,omitempty" yaml:"roleTemplateIds,omitempty"`
Rules []PolicyRule `json:"rules,omitempty" yaml:"rules,omitempty"`
Uuid string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
Builtin bool `json:"builtin,omitempty" yaml:"builtin,omitempty"`
ClusterCreatorDefault bool `json:"clusterCreatorDefault,omitempty" yaml:"clusterCreatorDefault,omitempty"`
Context string `json:"context,omitempty" yaml:"context,omitempty"`
Created string `json:"created,omitempty" yaml:"created,omitempty"`
CreatorID string `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
External bool `json:"external,omitempty" yaml:"external,omitempty"`
Hidden bool `json:"hidden,omitempty" yaml:"hidden,omitempty"`
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
Locked bool `json:"locked,omitempty" yaml:"locked,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
ProjectCreatorDefault bool `json:"projectCreatorDefault,omitempty" yaml:"projectCreatorDefault,omitempty"`
Removed string `json:"removed,omitempty" yaml:"removed,omitempty"`
RoleTemplateIds []string `json:"roleTemplateIds,omitempty" yaml:"roleTemplateIds,omitempty"`
Rules []PolicyRule `json:"rules,omitempty" yaml:"rules,omitempty"`
Uuid string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
}
type RoleTemplateCollection struct {
types.Collection

View File

@ -5,41 +5,49 @@ import (
)
const (
UserType = "user"
UserFieldAnnotations = "annotations"
UserFieldCreated = "created"
UserFieldCreatorID = "creatorId"
UserFieldDescription = "description"
UserFieldEnabled = "enabled"
UserFieldLabels = "labels"
UserFieldMe = "me"
UserFieldMustChangePassword = "mustChangePassword"
UserFieldName = "name"
UserFieldOwnerReferences = "ownerReferences"
UserFieldPassword = "password"
UserFieldPrincipalIDs = "principalIds"
UserFieldRemoved = "removed"
UserFieldUsername = "username"
UserFieldUuid = "uuid"
UserType = "user"
UserFieldAnnotations = "annotations"
UserFieldConditions = "conditions"
UserFieldCreated = "created"
UserFieldCreatorID = "creatorId"
UserFieldDescription = "description"
UserFieldEnabled = "enabled"
UserFieldLabels = "labels"
UserFieldMe = "me"
UserFieldMustChangePassword = "mustChangePassword"
UserFieldName = "name"
UserFieldOwnerReferences = "ownerReferences"
UserFieldPassword = "password"
UserFieldPrincipalIDs = "principalIds"
UserFieldRemoved = "removed"
UserFieldState = "state"
UserFieldTransitioning = "transitioning"
UserFieldTransitioningMessage = "transitioningMessage"
UserFieldUsername = "username"
UserFieldUuid = "uuid"
)
type User struct {
types.Resource
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
Created string `json:"created,omitempty" yaml:"created,omitempty"`
CreatorID string `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
Me bool `json:"me,omitempty" yaml:"me,omitempty"`
MustChangePassword bool `json:"mustChangePassword,omitempty" yaml:"mustChangePassword,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
Password string `json:"password,omitempty" yaml:"password,omitempty"`
PrincipalIDs []string `json:"principalIds,omitempty" yaml:"principalIds,omitempty"`
Removed string `json:"removed,omitempty" yaml:"removed,omitempty"`
Username string `json:"username,omitempty" yaml:"username,omitempty"`
Uuid string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
Annotations map[string]string `json:"annotations,omitempty" yaml:"annotations,omitempty"`
Conditions []UserCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
Created string `json:"created,omitempty" yaml:"created,omitempty"`
CreatorID string `json:"creatorId,omitempty" yaml:"creatorId,omitempty"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
Enabled *bool `json:"enabled,omitempty" yaml:"enabled,omitempty"`
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
Me bool `json:"me,omitempty" yaml:"me,omitempty"`
MustChangePassword bool `json:"mustChangePassword,omitempty" yaml:"mustChangePassword,omitempty"`
Name string `json:"name,omitempty" yaml:"name,omitempty"`
OwnerReferences []OwnerReference `json:"ownerReferences,omitempty" yaml:"ownerReferences,omitempty"`
Password string `json:"password,omitempty" yaml:"password,omitempty"`
PrincipalIDs []string `json:"principalIds,omitempty" yaml:"principalIds,omitempty"`
Removed string `json:"removed,omitempty" yaml:"removed,omitempty"`
State string `json:"state,omitempty" yaml:"state,omitempty"`
Transitioning string `json:"transitioning,omitempty" yaml:"transitioning,omitempty"`
TransitioningMessage string `json:"transitioningMessage,omitempty" yaml:"transitioningMessage,omitempty"`
Username string `json:"username,omitempty" yaml:"username,omitempty"`
Uuid string `json:"uuid,omitempty" yaml:"uuid,omitempty"`
}
type UserCollection struct {
types.Collection

View File

@ -0,0 +1,20 @@
package client
const (
UserConditionType = "userCondition"
UserConditionFieldLastTransitionTime = "lastTransitionTime"
UserConditionFieldLastUpdateTime = "lastUpdateTime"
UserConditionFieldMessage = "message"
UserConditionFieldReason = "reason"
UserConditionFieldStatus = "status"
UserConditionFieldType = "type"
)
type UserCondition struct {
LastTransitionTime string `json:"lastTransitionTime,omitempty" yaml:"lastTransitionTime,omitempty"`
LastUpdateTime string `json:"lastUpdateTime,omitempty" yaml:"lastUpdateTime,omitempty"`
Message string `json:"message,omitempty" yaml:"message,omitempty"`
Reason string `json:"reason,omitempty" yaml:"reason,omitempty"`
Status string `json:"status,omitempty" yaml:"status,omitempty"`
Type string `json:"type,omitempty" yaml:"type,omitempty"`
}

View File

@ -0,0 +1,8 @@
package client
const (
UserSpecType = "userSpec"
)
type UserSpec struct {
}

View File

@ -0,0 +1,10 @@
package client
const (
UserStatusType = "userStatus"
UserStatusFieldConditions = "conditions"
)
type UserStatus struct {
Conditions []UserCondition `json:"conditions,omitempty" yaml:"conditions,omitempty"`
}

View File

@ -15,7 +15,6 @@ type Config struct {
NodeDrivers map[string]managementClient.NodeDriver `json:"nodeDrivers,omitempty" yaml:"nodeDrivers,omitempty"`
NodeTemplates map[string]managementClient.NodeTemplate `json:"nodeTemplates,omitempty" yaml:"nodeTemplates,omitempty"`
Projects map[string]managementClient.Project `json:"projects,omitempty" yaml:"projects,omitempty"`
GlobalRoles map[string]managementClient.GlobalRole `json:"globalRoles,omitempty" yaml:"globalRoles,omitempty"`
GlobalRoleBindings map[string]managementClient.GlobalRoleBinding `json:"globalRoleBindings,omitempty" yaml:"globalRoleBindings,omitempty"`
RoleTemplates map[string]managementClient.RoleTemplate `json:"roleTemplates,omitempty" yaml:"roleTemplates,omitempty"`
PodSecurityPolicyTemplates map[string]managementClient.PodSecurityPolicyTemplate `json:"podSecurityPolicyTemplates,omitempty" yaml:"podSecurityPolicyTemplates,omitempty"`