@@ -29,37 +29,44 @@ import (
2929 "k8s.io/apimachinery/pkg/util/validation/field"
3030)
3131
32- func (s * Service ) CreateActor (ctx context.Context , req * ateapipb.CreateActorRequest ) (* ateapipb.CreateActorResponse , error ) {
32+ func (s * Service ) CreateActor (ctx context.Context , req * ateapipb.CreateActorRequest ) (* ateapipb.Actor , error ) {
3333 if err := validateCreateActorRequest (req ); err != nil {
3434 return nil , err
3535 }
36- _ , err := s .actorTemplateLister .ActorTemplates (req .GetActorTemplateNamespace ()).Get (req .GetActorTemplateName ())
36+
37+ in := req .GetActor ()
38+ templateNamespace := in .GetActorTemplateNamespace ()
39+ templateName := in .GetActorTemplateName ()
40+
41+ _ , err := s .actorTemplateLister .ActorTemplates (templateNamespace ).Get (templateName )
3742 if err != nil {
3843 if k8serrors .IsNotFound (err ) {
39- return nil , status .Errorf (codes .FailedPrecondition , "ActorTemplate %s/%s not found" , req . GetActorTemplateNamespace (), req . GetActorTemplateName () )
44+ return nil , status .Errorf (codes .FailedPrecondition , "ActorTemplate %s/%s not found" , templateNamespace , templateName )
4045 }
4146 return nil , fmt .Errorf ("while getting ActorTemplate: %w" , err )
4247 }
4348
49+ atespace := in .GetMetadata ().GetAtespace ()
50+ name := in .GetMetadata ().GetName ()
51+
4452 // The atespace must already exist.
45- exists , err := s .persistence .AtespaceExists (ctx , req . GetActor (). GetAtespace () )
53+ exists , err := s .persistence .AtespaceExists (ctx , atespace )
4654 if err != nil {
4755 return nil , fmt .Errorf ("while checking atespace: %w" , err )
4856 }
4957 if ! exists {
50- return nil , status .Errorf (codes .FailedPrecondition , "Atespace %s not found" , req . GetActor (). GetAtespace () )
58+ return nil , status .Errorf (codes .FailedPrecondition , "Atespace %s not found" , atespace )
5159 }
5260
53- name := req .GetActor ().GetName ()
5461 actor := & ateapipb.Actor {
5562 Metadata : & ateapipb.ResourceMetadata {
56- Atespace : req . GetActor (). GetAtespace () ,
63+ Atespace : atespace ,
5764 Name : name ,
5865 },
5966 Status : ateapipb .Actor_STATUS_SUSPENDED ,
60- ActorTemplateNamespace : req . GetActorTemplateNamespace () ,
61- ActorTemplateName : req . GetActorTemplateName () ,
62- WorkerSelector : req .GetWorkerSelector (),
67+ ActorTemplateNamespace : templateNamespace ,
68+ ActorTemplateName : templateName ,
69+ WorkerSelector : in .GetWorkerSelector (),
6370 }
6471 stored , err := s .persistence .CreateActor (ctx , actor )
6572 if err != nil {
@@ -69,39 +76,49 @@ func (s *Service) CreateActor(ctx context.Context, req *ateapipb.CreateActorRequ
6976 return nil , fmt .Errorf ("while recording actor: %w" , err )
7077 }
7178
72- return & ateapipb.CreateActorResponse {
73- Actor : stored ,
74- }, nil
79+ return stored , nil
7580}
7681
7782func validateCreateActorRequest (req * ateapipb.CreateActorRequest ) error {
7883 var fldPath * field.Path
7984 var errs field.ErrorList
8085
81- if val , fldPath := req .ActorTemplateNamespace , fldPath .Child ("actor_template_namespace" ); val == "" {
82- errs = append (errs , field .Required (fldPath , "" ))
86+ actor := req .GetActor ()
87+ actorPath := fldPath .Child ("actor" )
88+ if actor == nil {
89+ errs = append (errs , field .Required (actorPath , "" ))
90+ return status .Error (codes .InvalidArgument , errs .ToAggregate ().Error ())
91+ }
92+
93+ metaPath := actorPath .Child ("metadata" )
94+ if val , p := actor .GetMetadata ().GetAtespace (), metaPath .Child ("atespace" ); val == "" {
95+ errs = append (errs , field .Required (p , "" ))
8396 } else {
84- for _ , msg := range content .IsDNS1123Label (val ) {
85- errs = append (errs , field .Invalid (fldPath , val , msg ))
86- }
97+ errs = append (errs , resources .ValidateResourceName (val , p )... )
98+ }
99+ if val , p := actor .GetMetadata ().GetName (), metaPath .Child ("name" ); val == "" {
100+ errs = append (errs , field .Required (p , "" ))
101+ } else {
102+ errs = append (errs , resources .ValidateResourceName (val , p )... )
87103 }
88104
89- if val , fldPath := req . ActorTemplateName , fldPath .Child ("actor_template_name " ); val == "" {
90- errs = append (errs , field .Required (fldPath , "" ))
105+ if val , p := actor . GetActorTemplateNamespace (), actorPath .Child ("actor_template_namespace " ); val == "" {
106+ errs = append (errs , field .Required (p , "" ))
91107 } else {
92- for _ , msg := range content .IsDNS1123Subdomain (val ) {
93- errs = append (errs , field .Invalid (fldPath , val , msg ))
108+ for _ , msg := range content .IsDNS1123Label (val ) {
109+ errs = append (errs , field .Invalid (p , val , msg ))
94110 }
95111 }
96-
97- if val , fldPath := req .Actor , fldPath .Child ("actor" ); val == nil {
98- errs = append (errs , field .Required (fldPath , "" ))
112+ if val , p := actor .GetActorTemplateName (), actorPath .Child ("actor_template_name" ); val == "" {
113+ errs = append (errs , field .Required (p , "" ))
99114 } else {
100- errs = append (errs , resources .ValidateObjectRef (val , fldPath )... )
115+ for _ , msg := range content .IsDNS1123Subdomain (val ) {
116+ errs = append (errs , field .Invalid (p , val , msg ))
117+ }
101118 }
102119
103- if val := req . WorkerSelector ; val != nil {
104- errs = append (errs , validateSelector (val , fldPath .Child ("worker_selector" ))... )
120+ if val := actor . GetWorkerSelector () ; val != nil {
121+ errs = append (errs , validateSelector (val , actorPath .Child ("worker_selector" ))... )
105122 }
106123
107124 if len (errs ) > 0 {
0 commit comments