Beispiel #1
0
def update_actions_for_job(event):
    """
    Takes an salt command return event and sets the
    status of the corresponding Spacewalk job.
    """
    jid = event['data']['jid']
    minion = event['data']['id']

    sid = is_minion_registered(minion)
    if not sid:
        logger.error('minion %s is no longer registered', minion)
        # FIXME: cleanup its actions?
        return

    logger.info('Updating job status for sid %s: (%s) jid: %s', sid, minion,
                jid)

    with transaction(event):
        cursor = rhnSQL.prepare("""
        update rhnServerAction set
        status=:status,
        result_msg=:result_msg,
        result_code=:result_code,
        completion_time=:completion_time
        where action_id in
           (select distinct action_id from rhnActionSaltJob where jid=:jid)
        and server_id=:sid""")

        status = 2 if event['data']['success'] else 1
        cursor.execute(sid=sid,
                       status=status,
                       result_code=event['data']['retcode'],
                       result_msg=json.dumps(event['data']['return'])[:1024],
                       completion_time=event['data']['_stamp'],
                       jid=jid)
Beispiel #2
0
def update_actions_for_job(event):
    """
    Takes an salt command return event and sets the
    status of the corresponding Spacewalk job.
    """
    jid = event['data']['jid']
    minion = event['data']['id']

    sid = is_minion_registered(minion)
    if not sid:
        logger.error('minion %s is no longer registered', minion)
        # FIXME: cleanup its actions?
        return

    logger.info('Updating job status for sid %s: (%s) jid: %s',
                sid, minion, jid)

    with transaction(event):
        cursor = rhnSQL.prepare("""
        update rhnServerAction set
        status=:status,
        result_msg=:result_msg,
        result_code=:result_code,
        completion_time=:completion_time
        where action_id in
           (select distinct action_id from rhnActionSaltJob where jid=:jid)
        and server_id=:sid""")

        status = 2 if event['data']['success'] else 1
        cursor.execute(sid=sid,
                       status=status,
                       result_code=event['data']['retcode'],
                       result_msg=json.dumps(event['data']['return'])[:1024],
                       completion_time=event['data']['_stamp'],
                       jid=jid)
Beispiel #3
0
def create_actions_for_job(event):
    """
    For jobs that originated outside of this system
    we create coresponding events in spacewalk
    """
    jid = event['data']['jid']
    minions = event['data']['minions']
    fun = event['data']['fun']

    aid = rhnAction.schedule_action(action_type='salt.job',
                                    action_name='Salt job %s (%s)' %
                                    (jid, fun), org_id=1)

    with transaction(event):
        cursor = rhnSQL.prepare("""
        insert into
        rhnActionSaltJob (action_id, jid, data)
        values (:action_id, :jid, :data)
        """)
        cursor.execute(action_id=aid, jid=jid,
                       data=json.dumps(event['data']))

        for minion in minions:
            sid = is_minion_registered(minion)
            if not sid:
                logger.warn("Skipping reference to unregistered minion: %s",
                            minion)
                continue
            cursor = rhnSQL.prepare("""
            insert into
            rhnServerAction (server_id, action_id, status, pickup_time)
            values (:server_id, :action_id, 0, :pickup_time)
            """)
            cursor.execute(server_id=sid, action_id=aid,
                           pickup_time=event['data']['_stamp'])
Beispiel #4
0
def create_actions_for_job(event):
    """
    For jobs that originated outside of this system
    we create coresponding events in spacewalk
    """
    jid = event['data']['jid']
    minions = event['data']['minions']
    fun = event['data']['fun']

    aid = rhnAction.schedule_action(action_type='salt.job',
                                    action_name='Salt job %s (%s)' %
                                    (jid, fun),
                                    org_id=1)

    with transaction(event):
        cursor = rhnSQL.prepare("""
        insert into
        rhnActionSaltJob (action_id, jid, data)
        values (:action_id, :jid, :data)
        """)
        cursor.execute(action_id=aid, jid=jid, data=json.dumps(event['data']))

        for minion in minions:
            sid = is_minion_registered(minion)
            if not sid:
                logger.warn("Skipping reference to unregistered minion: %s",
                            minion)
                continue
            cursor = rhnSQL.prepare("""
            insert into
            rhnServerAction (server_id, action_id, status, pickup_time)
            values (:server_id, :action_id, 0, :pickup_time)
            """)
            cursor.execute(server_id=sid,
                           action_id=aid,
                           pickup_time=event['data']['_stamp'])