Example #1
0
    def create(self, request):

        serializer = AgentCreateBody(data=request.data)
        if serializer.is_valid(raise_exception=True):
            agent_name = serializer.validated_data.get("name")
            agent_type = serializer.validated_data.get("type")
            agent_urls = serializer.validated_data.get("urls")
            agent_org = serializer.validated_data.get("organization")
            org_name = agent_org["name"]
            try:
                Agent.objects.get(name=agent_name)
            except ObjectDoesNotExist:
                pass
            org = Organization.objects.get(name=org_name)

            agent = Agent(name=agent_name,
                          type=agent_type,
                          urls=agent_urls,
                          organization=org)
            agent.save()

            response = AgentIDSerializer(data=agent.__dict__)
            if response.is_valid(raise_exception=True):
                return Response(response.validated_data,
                                status=status.HTTP_201_CREATED)
Example #2
0
    def test_event_creation(self):
        user = User(
            name='Johannes',
            password='******',
            last_login=timezone.now(),
            email='*****@*****.**',
        )
        user.save()
        
        agent = Agent(
            name='CloudVM',
            status=True,
            env='01234567890123456789',
            version='12345',
            address='10.0.0.1',
        )
        agent.save()

        event = Event(
            level='none',
            data='Some data test',
            arquivado=False,
            date=timezone.now(),
            agent=agent,
            user=user,
        )
        event.full_clean()
        event.save()
        ev = Event.objects.get(pk=event.pk)
        self.assertEqual(event.level, ev.level)
        self.assertEqual(event.agent.name, ev.agent.name)
        self.assertEqual(event.user.name, ev.user.name)
Example #3
0
    def create(self, request):
        """
        Create Agent

        Create new agent
        """
        serializer = AgentCreateBody(data=request.data)
        if serializer.is_valid(raise_exception=True):
            name = serializer.validated_data.get("name")
            worker_api = serializer.validated_data.get("worker_api")
            capacity = serializer.validated_data.get("capacity")
            node_capacity = serializer.validated_data.get("node_capacity")
            log_level = serializer.validated_data.get("log_level")
            agent_type = serializer.validated_data.get("type")
            schedulable = serializer.validated_data.get("schedulable")
            parameters = serializer.validated_data.get("parameters")
            k8s_config = serializer.validated_data.get("k8s_config")

            body = {
                "worker_api": worker_api,
                "capacity": capacity,
                "node_capacity": node_capacity,
                "type": agent_type,
            }
            if worker_api:
                agent_count = Agent.objects.filter(
                    worker_api=worker_api,
                    organization=request.user.organization,
                ).count()
                if agent_count > 0:
                    raise ResourceExists(detail="Work api %s already exists" %
                                         worker_api)
            if name:
                agent_count = Agent.objects.filter(
                    name=name, organization=request.user.organization).count()
                if agent_count > 0:
                    raise ResourceExists(detail="Name %s already exists" %
                                         name)
                body.update({"name": name})
            if schedulable is not None:
                body.update({"schedulable": schedulable})
            if log_level is not None:
                body.update({"log_level": log_level})
            if parameters is not None:
                body.update({"parameters": parameters})

            agent = Agent(**body)
            agent.save()

            if agent_type == HostType.Kubernetes.name.lower():
                kubernetes_config = KubernetesConfig(**dict(k8s_config),
                                                     agent=agent)
                kubernetes_config.save()

            response = AgentIDSerializer(data=agent.__dict__)
            if response.is_valid(raise_exception=True):
                return Response(response.validated_data,
                                status=status.HTTP_201_CREATED)
Example #4
0
 def test_agent_creation(self):
     agent = Agent(
         name='CloudVM',
         status=True,
         env='01234567890123456789',
         version='12345',
         address='10.0.0.1',
     )
     agent.save()
     self.assertEqual(Agent.objects.get(pk=agent.pk).name, 'CloudVM')
Example #5
0
    def create(self, request):
        """
        Create Agent

        Create new agent
        """
        serializer = AgentCreateBody(data=request.data)
        if serializer.is_valid(raise_exception=True):
            name = serializer.validated_data.get("name")
            capacity = serializer.validated_data.get("capacity")
            node_capacity = serializer.validated_data.get("node_capacity")
            log_level = serializer.validated_data.get("log_level")
            agent_type = serializer.validated_data.get("type")
            schedulable = serializer.validated_data.get("schedulable")
            parameters = serializer.validated_data.get("parameters")
            ip = serializer.validated_data.get("ip")
            image = serializer.validated_data.get("image")
            config_file = serializer.validated_data.get("config_file")

            body = {
                "capacity": capacity,
                "node_capacity": node_capacity,
                "type": agent_type,
                "ip": ip,
                "image": image,
            }
            if name:
                agent_count = Agent.objects.filter(
                    name=name, organization=request.user.organization
                ).count()
                if agent_count > 0:
                    raise ResourceExists(
                        detail="Name %s already exists" % name
                    )
                body.update({"name": name})
            if schedulable is not None:
                body.update({"schedulable": schedulable})
            if log_level is not None:
                body.update({"log_level": log_level})
            if parameters is not None:
                body.update({"parameters": parameters})
            if config_file is not None:
                body.update({"config_file": config_file})

            agent = Agent(**body)
            agent.save()

            response = AgentIDSerializer(data=agent.__dict__)
            if response.is_valid(raise_exception=True):
                return Response(
                    response.validated_data, status=status.HTTP_201_CREATED
                )
Example #6
0
File: views.py Project: yeasy/cello
    def create(self, request):
        """
        Create Agent

        :param request: create parameter
        :return: agent ID
        :rtype: uuid
        """
        try:
            serializer = AgentCreateBody(data=request.data)
            if serializer.is_valid(raise_exception=True):
                name = serializer.validated_data.get("name")
                agent_type = serializer.validated_data.get("type")
                urls = serializer.validated_data.get("urls")
                config_file = serializer.validated_data.get("config_file")

                body = {
                    "type": agent_type,
                    "urls": urls,
                    "name": name,
                }

                if name:
                    agent_count = Agent.objects.filter(name=name).count()
                    if agent_count > 0:
                        raise ResourceExists

                    body.update({"name": name})

                if config_file is not None:
                    body.update({"config_file": config_file})

                org = request.user.organization
                if org.agent.all():
                    raise ResourceExists
                else:
                    body.update({"organization": org})

                agent = Agent(**body)
                agent.save()

                response = AgentIDSerializer(data=agent.__dict__)
                if response.is_valid(raise_exception=True):
                    return Response(ok(response.validated_data),
                                    status=status.HTTP_201_CREATED)
        except ResourceExists as e:
            raise e
        except Exception as e:
            return Response(err(e.args), status=status.HTTP_400_BAD_REQUEST)
Example #7
0
    def create(self, request):
        """
        Create Agent

        :param request: create parameter
        :return: agent ID
        :rtype: uuid
        """
        serializer = AgentCreateBody(data=request.data)
        if serializer.is_valid(raise_exception=True):
            name = serializer.validated_data.get("name")
            agent_type = serializer.validated_data.get("type")
            urls = serializer.validated_data.get("urls")
            config_file = serializer.validated_data.get("config_file")
            organization = serializer.validated_data.get("organization")

            body = {
                "type": agent_type,
                "urls": urls,
                "name": name,
            }
            if name:
                agent_count = Agent.objects.filter(name=name).count()
                if agent_count > 0:
                    raise ResourceExists(detail="Name %s already exists" %
                                         name)
                body.update({"name": name})

            if config_file is not None:
                body.update({"config_file": config_file})
            if organization is not None:
                org = Organization.objects.get(id=organization)
                if org.organization.all():
                    raise ResourceExists
                else:
                    body.update({"organization": org})

            agent = Agent(**body)
            agent.save()

            response = AgentIDSerializer(data=agent.__dict__)
            if response.is_valid(raise_exception=True):
                return Response(response.validated_data,
                                status=status.HTTP_201_CREATED)