def test_hpa_update(self): c_nginx = _utils.create_container(name="yo", image="nginx:latest") deploy = _utils.create_deployment(name="yo") deploy.add_container(c_nginx) deploy.desired_replicas = 3 hpa = _utils.create_hpa(name="yo") hpa.min_replicas = 1 hpa.max_replicas = 10 hpa.cpu_percent = 50 hpa.scale_ref = ("Deployment", "yo") if _utils.is_reachable(hpa.config): deploy.create() hpa.create() hpa.get() self.assertEqual(50, hpa.cpu_percent) hpa.cpu_percent = 70 hpa.min_replicas = 3 hpa.max_replicas = 5 hpa.update() hpa.get() self.assertEqual(70, hpa.cpu_percent) self.assertEqual(3, hpa.min_replicas) self.assertEqual(5, hpa.max_replicas)
def test_hpa_walkthrough(self): """ https://kubernetes.io/docs/user-guide/horizontal-pod-autoscaling/walkthrough/ https://github.com/kubernetes/community/blob/master/contributors/design-proposals/horizontal-pod-autoscaler.md """ k8s_dep = _utils.create_deployment(name="php-apache") k8s_dep.model = Deployment(_constants.hpa_example_deployment()) k8s_svc = _utils.create_service(name="php-apache") k8s_svc.model = Service(_constants.hpa_example_service()) k8s_hpa = _utils.create_hpa(name="php-apache") k8s_hpa.model = HorizontalPodAutoscaler( _constants.hpa_example_autoscaler()) if _utils.is_reachable(k8s_hpa.config): # //--- Step One: Run & expose php-apache server k8s_dep.create() k8s_svc.create() # // --- Step Two: Create Horizontal Pod Autoscaler k8s_hpa.create() # // --- Step Three: Increase Load # $ kubectl run -i --tty load-generator --image=busybox /bin/sh # $ while true; do wget -q -O- http://php-apache.default.svc.cluster.local; done # watch 'kubectl config current-context; echo; kubectl get deployments; echo; kubectl get replicasets; echo; kubectl get pods; echo; kubectl top nodes; echo; kubectl top pods' time.sleep(10) # wait for 10 secs; set a breakpoint if you need.
def test_from_json(self): cfg = _utils.create_config() hpa = _utils.create_hpa(config=cfg, name="yo") d = hpa.model.serialize() j = json.dumps(d) k8s = K8sHorizontalPodAutoscaler.from_json(j, cfg) self.assertIsInstance(k8s, K8sHorizontalPodAutoscaler)