def post(self, request, *args, **kwargs): form_data = forms.AgentRegisterForm(request.POST) if not form_data.is_valid(): err_msg = form_data.errors return JsonResponse({"msg": err_msg}, status=400) data = form_data.clean() server_category = get_server_category(data["mode"]) agent_ip = data["agent_ip"] server_params = { "app_port": data["web_port"], "ip_port": data["agent_port"], "category": server_category, "is_active": False } bk_server, _ = models.BkServer.objects.update_or_create(ip_address=agent_ip, defaults=server_params) active_server = models.BkServer.objects.filter(category=server_category, is_active=True) if active_server: err_msg = "%s environment has already one activated server, thus ip %s cannot be activated again" \ % (data["mode"], agent_ip) return JsonResponse({"msg": err_msg}) return JsonResponse({"sid": bk_server.s_id, "token": bk_server.token})
def offline(self): self.bk_app_event = models.BkAppEvent.objects.create( bk_app=self.bk_app, event_type="app.%s.offline" % self.mode, status="READY") category = utils.get_server_category(self.mode) try: assigned_servers = self.bk_app.bkserver_set.filter( category=category, is_active=True) self._request(assigned_servers, "offline") return self.bk_app_event.id, 0, "job delivered" except Exception, e: self._fail_bk_app_event(str(e)) return self.bk_app_event.id, 1, str(e)
def post(self, request): form_data = forms.AgentRegisterForm(request.json_data) if not form_data.is_valid(): err_msg = form_data.errors return FailJsonResponse(err_msg) data = form_data.clean() server_category = get_server_category(data["mode"]) server_params = { "ip_address": data["agent_ip"], "app_port": data["web_port"], "ip_port": data["agent_port"], "category": server_category, } try: bk_server = models.BkServer.objects.get(**server_params) except models.BkServer.DoesNotExist: server_params["is_active"] = False bk_server = models.BkServer.objects.create(**server_params) return OKJsonResponse(data={"sid": bk_server.s_id, "token": bk_server.token})
def _assign_servers(self): category = utils.get_server_category(self.mode) assigned_servers = self.bk_app.bkserver_set.filter(category=category, is_active=True) if assigned_servers: return [ assigned_servers[0], ] # only one can active try: bk_server = models.BkServer.objects.get(category=category, is_active=True) except models.BkServer.DoesNotExist: raise Exception( "no %s servers avaliable. you need to install PaasAgent " "on at least one server and register the server to PaaS" % self.mode) # BkHostingShip will be deprecated models.BkHostingShip.objects.create(bk_app=self.bk_app, bk_server=bk_server, is_master=True) return [ bk_server, ]