コード例 #1
0
async def save_container_logs(client, container, since, sparql, base_concept):
    logs = await client.logs(container,
                             stream=True,
                             timestamps=True,
                             since=since)
    async for line in logs:
        timestamp, log = line.decode().split(" ", 1)
        uuid = uuid1(0)
        concept = "%s/log/%s" % (base_concept, uuid)
        logger.debug("Log into %s: %s", concept, log.strip())
        resp = await sparql.update(
            """
            WITH <%(graph)s>
            INSERT DATA {
                <%(base_concept)s> swarmui:logLine <%(concept)s> .

                <%(concept)s> mu:uuid %(uuid)s ;
                dct:issued %(timestamp)s^^xsd:dateTime ;
                dct:title %(log)s .
            }
            """ % {
                "graph": graph,
                "base_concept": base_concept,
                "concept": concept,
                "uuid": escape_string(str(uuid)),
                "timestamp": escape_string(timestamp),
                "log": escape_string(log),
            })
    logger.info("Finished logging into %s (container %s is stopped)",
                base_concept, container[:12])
コード例 #2
0
async def create_container_log_concept(sparql, container):
    concept = "docklogs:%s" % container['Id']
    resp = await sparql.query("""
        ASK
        FROM <%(graph)s>
        WHERE {
            <%(concept)s> ?p ?o .
        }
        """ % {
        "graph": graph,
        "concept": concept,
    })
    if not resp['boolean']:
        resp = await sparql.update(
            """
            WITH <%(graph)s>
            INSERT DATA {
                <%(concept)s> dct:title %(name)s .
            }
            """ % {
                "graph": graph,
                "concept": concept,
                "name": escape_string(container['Name'][1:]),
            })
        logger.info("Created logging concept: %s", concept)
    return concept
コード例 #3
0
async def create_container_log_concept(sparql, container):
    """
    Create a container log concept, this is the node that will group all the
    log lines together
    """
    concept = IRI("docklogs:%s" % container['Id'])
    resp = await sparql.query("ASK FROM {{graph}} WHERE { {{}} ?p ?o }",
                              concept)
    if not resp['boolean']:
        resp = await sparql.update(
            "WITH {{graph}} INSERT DATA { {{}} dct:title {{}} }",
            concept, escape_string(container['Name'][1:]))
        logger.info("Created logging concept: %s", concept)
    return concept
コード例 #4
0
 def _test_escape_string(self, string, expected):
     result = escape_string(string)
     self.assertEqual(result, expected)