forked from openfaas/faas-netes
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Refactor label parsing to set OF labels last
**What** - Ensure that internal OF labels are set after user labels to ensure that users do no override these internal values - Refactor the getMinReplicaCount to work with the labels pointer, this helps simplify the control flow in the handler methods - Add constants for the label keys and update all references to those keys throughout Closes openfaas#209 Signed-off-by: Lucas Roesler <[email protected]>
- Loading branch information
1 parent
d2a9878
commit 99e468f
Showing
5 changed files
with
64 additions
and
50 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
package handlers | ||
|
||
import ( | ||
"log" | ||
"strconv" | ||
) | ||
|
||
const ( | ||
// initialReplicasCount how many replicas to start of creating for a function, this is | ||
// also used as the default return value for getMinReplicaCount | ||
initialReplicasCount = 1 | ||
|
||
// OFFunctionNameLabel is the label key used by OpenFaaS to store the function name | ||
// on the resources managed by OpenFaaS for that function. This key is also used to | ||
// denote that a resource is a "Function" | ||
OFFunctionNameLabel = "faas_function" | ||
// OFFunctionMinReplicaCount is a label that user's can set and will be passed to Kubernetes | ||
// as the Deployment replicas value. | ||
OFFunctionMinReplicaCount = "com.openfaas.scale.min" | ||
) | ||
|
||
// parseLabels will copy the user request labels and ensure that any required internal labels | ||
// are set appropriately. | ||
func parseLabels(functionName string, requestLables *map[string]string) map[string]string { | ||
labels := map[string]string{} | ||
if requestLables != nil { | ||
for k, v := range *requestLables { | ||
labels[k] = v | ||
} | ||
} | ||
|
||
labels[OFFunctionNameLabel] = functionName | ||
|
||
return labels | ||
} | ||
|
||
// getMinReplicaCount extracts the functions minimum replica count from the user's | ||
// request labels. If the value is not found, this will return the default value, 1. | ||
func getMinReplicaCount(labels *map[string]string) *int32 { | ||
if labels == nil { | ||
return int32p(initialReplicasCount) | ||
} | ||
|
||
l := *labels | ||
if value, exists := l[OFFunctionMinReplicaCount]; exists { | ||
minReplicas, err := strconv.Atoi(value) | ||
if err == nil && minReplicas > 0 { | ||
return int32p(int32(minReplicas)) | ||
} | ||
|
||
log.Println(err) | ||
} | ||
|
||
return int32p(initialReplicasCount) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters