diff --git a/deployment.go b/deployment.go index 610d06d..22fba54 100644 --- a/deployment.go +++ b/deployment.go @@ -96,7 +96,7 @@ type labelSelectorRequirementResolver struct { type rollingUpdateDeploymentResolver struct { ctx context.Context - r *rollingUpdateDeployment + r rollingUpdateDeployment } type podTemplateSpecResolver struct { @@ -191,22 +191,40 @@ func mapToStrategy(strat *JsonObject) *deploymentStrategy { return &deploymentStrategy{nil, sType} } - rudg := jgetter(*updateItem) - is := rudg.intRefItemOr("maxSurge", nil) - iu := rudg.intRefItemOr("maxUnavailable", nil) - ms := rudg.stringRefItemOr("maxSurgeString", nil) - mu := rudg.stringRefItemOr("maxUnavailableString", nil) + sval, spresent := (*updateItem)["maxSurge"] + uval, upresent := (*updateItem)["maxUnavailable"] + var ss, su string + var is, iu int32 + var ssptr *string = nil + var suptr *string = nil + var isptr *int32 = nil + var iuptr *int32 = nil defval := "25%" - if is == nil && ms == nil { - ms = &defval + if !spresent { + ss = defval + ssptr = &ss + } else if ssval, ok := sval.(string); ok { + ss = ssval + ssptr = &ss + } else { + is = toGQLInt(sval) + isptr = &is } - if iu == nil && mu == nil { - mu = &defval + if !upresent { + su = defval + suptr = &su + } else if suval, ok := uval.(string); ok { + su = suval + suptr = &su + } else { + iu = toGQLInt(uval) + iuptr = &iu } - return &deploymentStrategy{&rollingUpdateDeployment{is, ms, iu, mu}, + return &deploymentStrategy{ + &rollingUpdateDeployment{isptr, ssptr, iuptr, suptr}, sType} } @@ -357,7 +375,10 @@ func (r *deploymentResolver) ReplicaSets() []*replicaSetResolver { } func (r deploymentStrategyResolver) RollingUpdate() *rollingUpdateDeploymentResolver { - return &rollingUpdateDeploymentResolver{r.ctx, r.d.RollingUpdate} + if r.d.RollingUpdate == nil { + return nil + } + return &rollingUpdateDeploymentResolver{r.ctx, *r.d.RollingUpdate} } func (r deploymentStrategyResolver) Type() *string { diff --git a/get_test.go b/get_test.go index 8d60c6d..5262d1a 100644 --- a/get_test.go +++ b/get_test.go @@ -109,6 +109,40 @@ func TestPods(t *testing.T) { } } } + replicaSets { + metadata { + name + } + pods { + metadata { + name + namespace + labels { + name + value + } + } + spec { + dnsPolicy + nodeName + restartPolicy + schedulerName + serviceAccountName + terminationGracePeriodSeconds + tolerations { + effect + key + operator + tolerationSeconds + } + volumes { + name + persistentVolumeClaim { claimName readOnly } + secret { defaultMode secretName } + } + } + } + } }}`, `{"allDeployments": [ { @@ -173,8 +207,75 @@ func TestPods(t *testing.T) { ] } } - } + }, + "replicaSets": [ + { + "metadata": { + "name": "clunky-sabertooth-joomla-5d4ddc985d" + }, + "pods": [ + { + "metadata": { + "name": "clunky-sabertooth-joomla-5d4ddc985d-fpddz", + "namespace": "default", + "labels": [ + {"name": "app", "value": "clunky-sabertooth-joomla"}, + {"name": "pod-template-hash", "value": "1808875418"} + ] + }, + "spec": { + "dnsPolicy": "ClusterFirst", + "nodeName": "minikube", + "restartPolicy": "Always", + "schedulerName": "default-scheduler", + "serviceAccountName": "default", + "terminationGracePeriodSeconds": 30, + "tolerations": [ + { + "effect": "NoExecute", + "key": "node.kubernetes.io/not-ready", + "operator": "Exists", + "tolerationSeconds": 300 + }, + { + "effect": "NoExecute", + "key": "node.kubernetes.io/unreachable", + "operator": "Exists", + "tolerationSeconds": 300 + } + ], + "volumes": [ + { + "name": "joomla-data", + "persistentVolumeClaim": { + "claimName": "clunky-sabertooth-joomla-joomla", + "readOnly": false + }, + "secret": null + }, + { + "name": "apache-data", + "persistentVolumeClaim": { + "claimName": "clunky-sabertooth-joomla-apache", + "readOnly": false + }, + "secret": null + }, + { + "name": "default-token-l6lb2", + "persistentVolumeClaim": null, + "secret": { + "defaultMode": 420, + "secretName": "default-token-l6lb2" + } + } + ] + } + } + ] + } + ] } - ] - }`) + ] + }`) } diff --git a/vendor/vendor.json b/vendor/vendor.json index b11ff22..ed316bb 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -207,5 +207,5 @@ "revisionTime": "2017-02-01T04:15:14Z" } ], - "rootPath": "auth" + "rootPath": "kubeiql" }