def load_gcp_ingress_firewalls()

in cartography/intel/gcp/compute.py [0:0]


def load_gcp_ingress_firewalls(neo4j_session, fw_list, gcp_update_tag):
    """
    Load the firewall list to Neo4j
    :param fw_list: The transformed list of firewalls
    :return: Nothing
    """
    query = """
    MERGE (fw:GCPFirewall{id:{FwPartialUri}})
    ON CREATE SET fw.firstseen = timestamp(),
    fw.partial_uri = {FwPartialUri}
    SET fw.direction = {Direction},
    fw.disabled = {Disabled},
    fw.name = {Name},
    fw.priority = {Priority},
    fw.self_link = {SelfLink},
    fw.has_target_service_accounts = {HasTargetServiceAccounts},
    fw.lastupdated = {gcp_update_tag}

    MERGE (vpc:GCPVpc{id:{VpcPartialUri}})
    ON CREATE SET vpc.firstseen = timestamp(),
    vpc.partial_uri = {VpcPartialUri}
    SET vpc.lastupdated = {gcp_update_tag}

    MERGE (vpc)-[r:RESOURCE]->(fw)
    ON CREATE SET r.firstseen = timestamp()
    SET r.lastupdated = {gcp_update_tag}
    """
    for fw in fw_list:
        neo4j_session.run(
            query,
            FwPartialUri=fw['id'],
            Direction=fw['direction'],
            Disabled=fw['disabled'],
            Name=fw['name'],
            Priority=fw['priority'],
            SelfLink=fw['selfLink'],
            VpcPartialUri=fw['vpc_partial_uri'],
            HasTargetServiceAccounts=fw['has_target_service_accounts'],
            gcp_update_tag=gcp_update_tag
        )
        _attach_firewall_rules(neo4j_session, fw, gcp_update_tag)
        _attach_target_tags(neo4j_session, fw, gcp_update_tag)