Ejemplo n.º 1
0
    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})
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
    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})
Ejemplo n.º 4
0
 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,
     ]