// Create registers a given new Route instance to rs.registry. func (rs *REST) Create(ctx kapi.Context, obj runtime.Object) (runtime.Object, error) { route, ok := obj.(*api.Route) if !ok { return nil, errors.NewBadRequest(fmt.Sprintf("not a route: %#v", obj)) } if !kapi.ValidNamespace(ctx, &route.ObjectMeta) { return nil, errors.NewConflict("route", route.Namespace, fmt.Errorf("Route.Namespace does not match the provided context")) } shard, err := rs.allocator.AllocateRouterShard(route) if err != nil { return nil, errors.NewInternalError(fmt.Errorf("allocation error: %s for route: %#v", err, obj)) } if route.Annotations == nil { route.Annotations = map[string]string{} } if len(route.Host) == 0 { route.Host = rs.allocator.GenerateHostname(route, shard) route.Annotations[HostGeneratedAnnotationKey] = "true" } else { route.Annotations[HostGeneratedAnnotationKey] = "false" } if errs := validation.ValidateRoute(route); len(errs) > 0 { return nil, errors.NewInvalid("route", route.Name, errs) } if len(route.Name) == 0 { route.Name = uuid.NewUUID().String() } kapi.FillObjectMetaSystemFields(ctx, &route.ObjectMeta) err = rs.registry.CreateRoute(ctx, route) if err != nil { return nil, err } return rs.registry.GetRoute(ctx, route.Name) }
func (routeStrategy) Validate(ctx kapi.Context, obj runtime.Object) field.ErrorList { route := obj.(*api.Route) return validation.ValidateRoute(route) }