import json
from forward_evidence.resource_id_mapper import map_resource_id
from grpc_gen.assessment_pb2 import AssessEvidenceRequest

# Used if user doesn't provide other
_default_resource_type = ["VirtualMachine", "Compute", "Resource"]

def create_resource(name, type, property_list):
    resource = {
        "id": str(map_resource_id(name)),
        "name": str(name),
        "type": type if type is not None else _default_resource_type
    }

    if property_list is not None:
        resource.update(property_list)

    return resource

def create_assessevidence_request(id, service_id, tool_id, raw, resource):
    aer = AssessEvidenceRequest()
    aer.evidence.id = str(id)
    aer.evidence.timestamp.GetCurrentTime()
    aer.evidence.timestamp.nanos = 0
    aer.evidence.service_id = service_id
    aer.evidence.tool_id = tool_id
    aer.evidence.raw = json.dumps(raw)
    aer.evidence.resource.struct_value.update(resource)

    return aer

def print_evidence(logger, evidence):
    evidence.raw = evidence.raw[:50] + "..."
    logger.debug(evidence)