@@ -19,7 +19,6 @@ package trafficsplitter
1919import (
2020 "fmt"
2121 "path/filepath"
22- "reflect"
2322
2423 "github.com/cortexlabs/cortex/pkg/lib/errors"
2524 "github.com/cortexlabs/cortex/pkg/lib/k8s"
@@ -33,7 +32,7 @@ import (
3332)
3433
3534func UpdateAPI (apiConfig * userconfig.API , projectID string , force bool ) (* spec.API , string , error ) {
36- prevVirtualService , err := getK8sResources ( apiConfig )
35+ prevVirtualService , err := config . K8s . GetVirtualService ( operator . K8sName ( apiConfig . Name ) )
3736 if err != nil {
3837 return nil , "" , err
3938 }
@@ -55,7 +54,7 @@ func UpdateAPI(apiConfig *userconfig.API, projectID string, force bool) (*spec.A
5554 return api , fmt .Sprintf ("created %s" , api .Resource .UserString ()), nil
5655 }
5756
58- if ! areVirtualServiceEqual (prevVirtualService , virtualServiceSpec (api )) {
57+ if ! areAPIsEqual (prevVirtualService , virtualServiceSpec (api )) {
5958 if err := config .AWS .UploadMsgpackToS3 (api , config .Cluster .Bucket , api .Key ); err != nil {
6059 return nil , "" , errors .Wrap (err , "upload api spec" )
6160 }
@@ -67,6 +66,7 @@ func UpdateAPI(apiConfig *userconfig.API, projectID string, force bool) (*spec.A
6766 }
6867 return api , fmt .Sprintf ("updated %s" , api .Resource .UserString ()), nil
6968 }
69+
7070 return api , fmt .Sprintf ("%s is up to date" , api .Resource .UserString ()), nil
7171}
7272
@@ -105,17 +105,6 @@ func DeleteAPI(apiName string, keepCache bool) error {
105105 return nil
106106}
107107
108- func getK8sResources (apiConfig * userconfig.API ) (* istioclientnetworking.VirtualService , error ) {
109- var virtualService * istioclientnetworking.VirtualService
110-
111- virtualService , err := config .K8s .GetVirtualService (operator .K8sName (apiConfig .Name ))
112- if err != nil {
113- return nil , err
114- }
115-
116- return virtualService , err
117- }
118-
119108func applyK8sVirtualService (trafficSplitter * spec.API , prevVirtualService * istioclientnetworking.VirtualService ) error {
120109 newVirtualService := virtualServiceSpec (trafficSplitter )
121110
@@ -133,7 +122,7 @@ func getTrafficSplitterDestinations(trafficSplitter *spec.API) []k8s.Destination
133122 for i , api := range trafficSplitter .APIs {
134123 destinations [i ] = k8s.Destination {
135124 ServiceName : operator .K8sName (api .Name ),
136- Weight : int32 ( api .Weight ) ,
125+ Weight : api .Weight ,
137126 Port : uint32 (_defaultPortInt32 ),
138127 }
139128 }
@@ -201,11 +190,10 @@ func deleteS3Resources(apiName string) error {
201190 return config .AWS .DeleteS3Dir (config .Cluster .Bucket , prefix , true )
202191}
203192
204- func areVirtualServiceEqual (vs1 , vs2 * istioclientnetworking.VirtualService ) bool {
205- return vs1 .ObjectMeta .Name == vs2 .ObjectMeta .Name &&
206- reflect .DeepEqual (vs1 .ObjectMeta .Labels , vs2 .ObjectMeta .Labels ) &&
207- reflect .DeepEqual (vs1 .ObjectMeta .Annotations , vs2 .ObjectMeta .Annotations ) &&
208- reflect .DeepEqual (vs1 .Spec .Http , vs2 .Spec .Http ) &&
209- reflect .DeepEqual (vs1 .Spec .Gateways , vs2 .Spec .Gateways ) &&
210- reflect .DeepEqual (vs1 .Spec .Hosts , vs2 .Spec .Hosts )
193+ func areAPIsEqual (vs1 , vs2 * istioclientnetworking.VirtualService ) bool {
194+ return vs1 .Labels ["apiName" ] == vs2 .Labels ["apiName" ] &&
195+ vs1 .Labels ["apiKind" ] == vs2 .Labels ["apiKind" ] &&
196+ vs1 .Labels ["apiID" ] == vs2 .Labels ["apiID" ] &&
197+ k8s .VirtualServicesMatch (vs1 .Spec , vs2 .Spec ) &&
198+ operator .DoCortexAnnotationsMatch (vs1 , vs2 )
211199}
0 commit comments