Example #1
0
class VirtualServerSerializer(ComponentSerializerMixin, BaseObjectSerializer):
    type = VirtualServerTypeSerializer()
    # TODO: cast BaseObject to DataCenterAsset for hypervisor field
    hypervisor = DataCenterAssetSimpleSerializer(source='parent')
    # TODO: clusters
    scmstatuscheck = SCMInfoSerializer()
    securityscan = SecurityScanSerializer()

    class Meta(BaseObjectSerializer.Meta):
        model = VirtualServer
        exclude = ('content_type', 'cluster')
Example #2
0
class CloudHostSerializer(NetworkComponentSerializerMixin,
                          BaseObjectSerializer):
    hypervisor = DataCenterAssetSimpleSerializer()
    parent = CloudProjectSimpleSerializer(source='cloudproject')
    cloudflavor = CloudFlavorSimpleSerializer()
    service_env = ServiceEnvironmentSimpleSerializer()
    scmstatuscheck = SCMInfoSerializer()
    securityscan = SecurityScanSerializer()

    class Meta(BaseObjectSerializer.Meta):
        model = CloudHost
        depth = 1
Example #3
0
class DataCenterAssetSerializer(ComponentSerializerMixin, AssetSerializer):
    rack = SimpleRackSerializer()
    scmstatuscheck = SCMInfoSerializer()
    securityscan = SecurityScanSerializer()
    related_hosts = serializers.SerializerMethodField()

    def _get_serialized_sublist(self, full_list, serializer_class, cond):
        return serializer_class(
            [elem for elem in full_list if cond(elem)],
            many=True, context=self.context
        ).data

    def _get_physical_servers(self, obj):
        dca = ContentType.objects.get_for_model(DataCenterAsset)
        return self._get_serialized_sublist(
            obj.children.all(),
            DataCenterAssetSimpleSerializer,
            lambda child: child.content_type == dca
        )

    def _get_virtual_servers(self, obj):
        from ralph.virtual.api import VirtualServerSimpleSerializer
        vs = ContentType.objects.get_for_model(VirtualServer)
        return self._get_serialized_sublist(
            obj.children.all(),
            VirtualServerSimpleSerializer,
            lambda child: child.content_type == vs
        )

    def _get_cloud_hosts(self, obj):
        from ralph.virtual.api import CloudHostSimpleSerializer
        return self._get_serialized_sublist(
            obj.cloudhost_set.all(),
            CloudHostSimpleSerializer,
            lambda host: True
        )

    def get_related_hosts(self, obj):
        related_hosts = {}
        related_hosts['virtual_servers'] = self._get_virtual_servers(obj)
        related_hosts['physical_servers'] = self._get_physical_servers(obj)
        related_hosts['cloud_hosts'] = self._get_cloud_hosts(obj)
        return related_hosts

    class Meta(AssetSerializer.Meta):
        model = DataCenterAsset
        depth = 2
Example #4
0
 def to_representation(self, value):
     if value and value.pk:
         return SecurityScanSerializer().to_representation(value)