WIP: Set uid during object create

Still need to add some unit tests.

Auto-assignment in code today is incorrect in v1beta3 - if you don't specify a name the call should fail.  The agreement with v1beta3 is that you must specify a name or request auto-assignment.  That request would need to be plumbed through apiserver.

----- Original Message -----
> > @@ -69,6 +69,8 @@ func (rs *REST) Create(ctx api.Context, obj
> > runtime.Object) (<-chan apiserver.RE
> >  		return nil, fmt.Errorf("id is required: %#v", obj)
> >  	}
> >  	endpoints.CreationTimestamp = util.Now()
> > +	endpoints.UID = util.NewUUID().String()
> 
> There is a lot of repetitive code around the following:
> 
> ```
> 	if len(controller.Name) == 0 {
> 		controller.Name = util.NewUUID().String()
> 	}
> ```
> 
> my bias is to also move this type of thing into this new utility.
> 
> is there a reason why we would have an object that would not support
> auto-assignment of name?
> 
> ---
> Reply to this email directly or view it on GitHub:
> https://github.com/GoogleCloudPlatform/kubernetes/pull/2333/files#r20306722