@classmethod
def get_asset_and_components(cls, session, asset_key):
    """Get information about individual asset & its components 
        Component may be a PSU that belongs to a server or PDU outlets

        Args:
            session: database session
            asset_key(int): query by key
        
        Returns:
            dict: asset details with it's 'labels' and components as 'children' (sorted by key) 
        """
    results = session.run(
        """
            MATCH (n:Asset { key: $key }) OPTIONAL MATCH (n)-[:HAS_COMPONENT]->(c) 
            RETURN n as asset, labels(n) as labels, collect(c) as children
            """
        , key=int(asset_key))
    record = results.single()
    asset = dict(record['asset'])
    asset['labels'] = record['labels']
    children = []
    if record['children']:
        children = sorted(list(map(lambda x: x['key'], record['children'])))
    asset['children'] = children
    return asset
