MCPcopy
hub / github.com/cortexlabs/cortex / ValidateClusterAPIs

Function ValidateClusterAPIs

pkg/operator/resources/validations.go:35–108  ·  view source on GitHub ↗
(apis []userconfig.API)

Source from the content-addressed store, hash-verified

33)
34
35func ValidateClusterAPIs(apis []userconfig.API) error {
36 if len(apis) == 0 {
37 return spec.ErrorNoAPIs()
38 }
39
40 if len(config.ClusterConfig.NodeGroups) == 0 {
41 return ErrorNoNodeGroups()
42 }
43
44 virtualServices, err := config.K8s.ListVirtualServices(nil)
45 if err != nil {
46 return err
47 }
48 deployedRealtimeAPIs := strset.New()
49 for _, virtualService := range virtualServices {
50 if virtualService.Labels["apiKind"] == userconfig.RealtimeAPIKind.String() {
51 deployedRealtimeAPIs.Add(virtualService.Labels["apiName"])
52 }
53 }
54
55 realtimeAPIs := InclusiveFilterAPIsByKind(apis, userconfig.RealtimeAPIKind)
56
57 for i := range apis {
58 api := &apis[i]
59 if api.Kind == userconfig.RealtimeAPIKind || api.Kind == userconfig.BatchAPIKind ||
60 api.Kind == userconfig.TaskAPIKind || api.Kind == userconfig.AsyncAPIKind {
61
62 if err := spec.ValidateAPI(api, config.AWS, config.K8s); err != nil {
63 return errors.Wrap(err, api.Identify())
64 }
65
66 if err := validateEndpointCollisions(api, virtualServices); err != nil {
67 return err
68 }
69 }
70
71 if api.Kind == userconfig.TrafficSplitterKind {
72 if err := spec.ValidateTrafficSplitter(api); err != nil {
73 return errors.Wrap(err, api.Identify())
74 }
75 if err := checkIfAPIExists(api.APIs, realtimeAPIs, deployedRealtimeAPIs); err != nil {
76 return errors.Wrap(err, api.Identify())
77 }
78 if err := validateEndpointCollisions(api, virtualServices); err != nil {
79 return errors.Wrap(err, api.Identify())
80 }
81 }
82 }
83
84 maxMemMap, err := operator.UpdateMemoryCapacityConfigMap()
85 if err != nil {
86 return err
87 }
88
89 for i := range apis {
90 api := &apis[i]
91 if api.Kind != userconfig.TrafficSplitterKind {
92 if err := validateK8sCompute(api, maxMemMap); err != nil {

Callers 1

DeployFunction · 0.85

Calls 15

ErrorNoAPIsFunction · 0.92
NewFunction · 0.92
ValidateAPIFunction · 0.92
WrapFunction · 0.92
ValidateTrafficSplitterFunction · 0.92
FindDuplicateNamesFunction · 0.92
ErrorDuplicateNameFunction · 0.92
ErrorNoNodeGroupsFunction · 0.85

Tested by

no test coverage detected