Skip to content

Commit 80fa790

Browse files
author
Miguel Varela Ramos
authored
Enable traffic splitting in GCP (#1892)
1 parent 20affb6 commit 80fa790

File tree

3 files changed

+24
-16
lines changed

3 files changed

+24
-16
lines changed

pkg/operator/resources/resources.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ func UpdateAPI(apiConfig *userconfig.API, projectID string, force bool) (*schema
165165
case userconfig.TaskAPIKind:
166166
api, msg, err = taskapi.UpdateAPI(apiConfig, projectID)
167167
case userconfig.TrafficSplitterKind:
168-
api, msg, err = trafficsplitter.UpdateAPI(apiConfig, force)
168+
api, msg, err = trafficsplitter.UpdateAPI(apiConfig)
169169
default:
170170
return nil, "", ErrorOperationIsOnlySupportedForKind(
171171
*deployedResource, userconfig.RealtimeAPIKind,
@@ -275,7 +275,7 @@ func patchAPI(apiConfig *userconfig.API, force bool) (*spec.API, string, error)
275275
case userconfig.TaskAPIKind:
276276
return taskapi.UpdateAPI(apiConfig, prevAPISpec.ProjectID)
277277
default:
278-
return trafficsplitter.UpdateAPI(apiConfig, force)
278+
return trafficsplitter.UpdateAPI(apiConfig)
279279
}
280280
}
281281

pkg/operator/resources/trafficsplitter/api.go

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,21 +32,22 @@ import (
3232
istioclientnetworking "istio.io/client-go/pkg/apis/networking/v1beta1"
3333
)
3434

35-
func UpdateAPI(apiConfig *userconfig.API, force bool) (*spec.API, string, error) {
35+
// UpdateAPI creates or updates a traffic splitter API kind
36+
func UpdateAPI(apiConfig *userconfig.API) (*spec.API, string, error) {
3637
prevVirtualService, err := config.K8s.GetVirtualService(operator.K8sName(apiConfig.Name))
3738
if err != nil {
3839
return nil, "", err
3940
}
4041

4142
api := spec.GetAPISpec(apiConfig, "", "", config.ClusterName())
4243
if prevVirtualService == nil {
43-
if err := config.AWS.UploadJSONToS3(api, config.CoreConfig.Bucket, api.Key); err != nil {
44-
return nil, "", errors.Wrap(err, "upload api spec")
44+
if err := config.UploadJSONToBucket(api, api.Key); err != nil {
45+
return nil, "", errors.Wrap(err, "failed to upload api spec")
4546
}
4647

4748
if err := applyK8sVirtualService(api, prevVirtualService); err != nil {
4849
routines.RunWithPanicHandler(func() {
49-
deleteK8sResources(api.Name)
50+
_ = deleteK8sResources(api.Name)
5051
})
5152
return nil, "", err
5253
}
@@ -55,8 +56,8 @@ func UpdateAPI(apiConfig *userconfig.API, force bool) (*spec.API, string, error)
5556
}
5657

5758
if prevVirtualService.Labels["specID"] != api.SpecID {
58-
if err := config.AWS.UploadJSONToS3(api, config.CoreConfig.Bucket, api.Key); err != nil {
59-
return nil, "", errors.Wrap(err, "upload api spec")
59+
if err := config.UploadJSONToBucket(api, api.Key); err != nil {
60+
return nil, "", errors.Wrap(err, "failed to upload api spec")
6061
}
6162

6263
if err := applyK8sVirtualService(api, prevVirtualService); err != nil {
@@ -69,6 +70,7 @@ func UpdateAPI(apiConfig *userconfig.API, force bool) (*spec.API, string, error)
6970
return api, fmt.Sprintf("%s is up to date", api.Resource.UserString()), nil
7071
}
7172

73+
// DeleteAPI deletes all the resources related to a given traffic splitter API
7274
func DeleteAPI(apiName string, keepCache bool) error {
7375
err := parallel.RunFirstErr(
7476
func() error {
@@ -79,7 +81,7 @@ func DeleteAPI(apiName string, keepCache bool) error {
7981
return nil
8082
}
8183
// best effort deletion
82-
deleteS3Resources(apiName)
84+
_ = deleteS3Resources(apiName)
8385
return nil
8486
},
8587
)
@@ -115,10 +117,13 @@ func getTrafficSplitterDestinations(trafficSplitter *spec.API) []k8s.Destination
115117
return destinations
116118
}
117119

120+
// GetAllAPIs returns a list of metadata, in the form of schema.APIResponse, about all the created traffic splitter APIs
118121
func GetAllAPIs(virtualServices []istioclientnetworking.VirtualService) ([]schema.APIResponse, error) {
119-
apiNames := []string{}
120-
apiIDs := []string{}
121-
trafficSplitters := []schema.APIResponse{}
122+
var (
123+
apiNames []string
124+
apiIDs []string
125+
trafficSplitters []schema.APIResponse
126+
)
122127

123128
for _, virtualService := range virtualServices {
124129
if virtualService.Labels["apiKind"] == userconfig.TrafficSplitterKind.String() {
@@ -147,6 +152,7 @@ func GetAllAPIs(virtualServices []istioclientnetworking.VirtualService) ([]schem
147152
return trafficSplitters, nil
148153
}
149154

155+
// GetAPIByName retrieves the metadata, in the form of schema.APIResponse, of a single traffic splitter API
150156
func GetAPIByName(deployedResource *operator.DeployedResource) ([]schema.APIResponse, error) {
151157
api, err := operator.DownloadAPISpec(deployedResource.Name, deployedResource.VirtualService.Labels["apiID"])
152158
if err != nil {
@@ -173,5 +179,5 @@ func deleteK8sResources(apiName string) error {
173179

174180
func deleteS3Resources(apiName string) error {
175181
prefix := filepath.Join(config.ClusterName(), "apis", apiName)
176-
return config.AWS.DeleteS3Dir(config.CoreConfig.Bucket, prefix, true)
182+
return config.DeleteBucketDir(prefix, true)
177183
}

pkg/types/spec/validations.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -675,10 +675,12 @@ func ExtractAPIConfigs(
675675
return nil, errors.Append(err, fmt.Sprintf("\n\napi configuration schema can be found at https://docs.cortex.dev/v/%s/", consts.CortexVersionMinor))
676676
}
677677

678-
if resourceStruct.Kind == userconfig.BatchAPIKind ||
679-
resourceStruct.Kind == userconfig.TrafficSplitterKind {
678+
if resourceStruct.Kind == userconfig.BatchAPIKind {
680679
if provider == types.GCPProviderType {
681-
return nil, errors.Wrap(ErrorKindIsNotSupportedByProvider(resourceStruct.Kind, provider), userconfig.IdentifyAPI(configFileName, resourceStruct.Name, resourceStruct.Kind, i))
680+
return nil, errors.Wrap(
681+
ErrorKindIsNotSupportedByProvider(resourceStruct.Kind, provider),
682+
userconfig.IdentifyAPI(configFileName, resourceStruct.Name, resourceStruct.Kind, i),
683+
)
682684
}
683685
}
684686

0 commit comments

Comments
 (0)