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

Function UpdateAPI

pkg/operator/resources/asyncapi/api.go:62–153  ·  view source on GitHub ↗
(apiConfig userconfig.API, force bool)

Source from the content-addressed store, hash-verified

60}
61
62func UpdateAPI(apiConfig userconfig.API, force bool) (*spec.API, string, error) {
63 prevK8sResources, err := getK8sResources(apiConfig.Name)
64 if err != nil {
65 return nil, "", err
66 }
67
68 initialDeploymentTime := time.Now().UnixNano()
69 deploymentID := generateDeploymentID()
70 if prevK8sResources.apiVirtualService != nil && prevK8sResources.apiVirtualService.Labels["initialDeploymentTime"] != "" {
71 var err error
72 initialDeploymentTime, err = k8s.ParseInt64Label(prevK8sResources.apiVirtualService, "initialDeploymentTime")
73 if err != nil {
74 return nil, "", err
75 }
76 deploymentID = prevK8sResources.apiVirtualService.Labels["deploymentID"]
77 }
78
79 api := spec.GetAPISpec(&apiConfig, initialDeploymentTime, deploymentID, config.ClusterConfig.ClusterUID)
80
81 // resource creation
82 if prevK8sResources.apiVirtualService == nil {
83 if err := config.AWS.UploadJSONToS3(api, config.ClusterConfig.Bucket, api.Key); err != nil {
84 return nil, "", errors.Wrap(err, "upload api spec")
85 }
86
87 tags := map[string]string{
88 "apiName": apiConfig.Name,
89 }
90
91 queueURL, err := createFIFOQueue(apiConfig.Name, initialDeploymentTime, tags)
92 if err != nil {
93 return nil, "", err
94 }
95
96 if err = applyK8sResources(*api, prevK8sResources, queueURL); err != nil {
97 routines.RunWithPanicHandler(func() {
98 _ = parallel.RunFirstErr(
99 func() error {
100 return deleteQueueByURL(queueURL)
101 },
102 func() error {
103 return deleteK8sResources(api.Name)
104 },
105 )
106 })
107 return nil, "", err
108 }
109
110 return api, fmt.Sprintf("creating %s", api.Resource.UserString()), nil
111 }
112
113 // resource update
114 if prevK8sResources.apiVirtualService.Labels["specID"] != api.SpecID {
115 isUpdating, err := isAPIUpdating(prevK8sResources.apiDeployment)
116 if err != nil {
117 return nil, "", err
118 }
119 if isUpdating && !force {

Callers 1

UpdateAPIFunction · 0.92

Calls 15

ParseInt64LabelFunction · 0.92
GetAPISpecFunction · 0.92
WrapFunction · 0.92
RunWithPanicHandlerFunction · 0.92
RunFirstErrFunction · 0.92
createFIFOQueueFunction · 0.85
deleteQueueByURLFunction · 0.85
getQueueURLFunction · 0.85
UploadJSONToS3Method · 0.80
getK8sResourcesFunction · 0.70
generateDeploymentIDFunction · 0.70
applyK8sResourcesFunction · 0.70

Tested by

no test coverage detected