OwlCyberSecurity - MANAGER
Edit File: lock.cpython-38.pyc
U Uٵg� � @ s� d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl m Z mZmZ d dl mZ d dlmZmZ d dlmZ d dlmZ e �e�e��ZG d d � d e �Zeeeddd �ej�Zeeef d�dd�Zdd� Z G dd� d�Z!dS )� N)�Tuple)� exceptions�system�util)� DataObject�Field�StringDataValue)�notices)�DataObjectFile�DataObjectFileFormat)�UAFile)�Noticec @ s0 e Zd Zede�ede�gZeed�dd�ZdS )�LockData�lock_pid�lock_holder�r r c C s || _ || _d S �Nr )�selfr r � r �//usr/lib/python3/dist-packages/uaclient/lock.py�__init__ s zLockData.__init__N)�__name__� __module__�__qualname__r r Zfields�strr r r r r r s �r �lockF)Zprivate)�returnc C s� zt �� } W n$ tjk r0 tjt jd��Y nX d}| s>|S | j}| j}zt� d|g� t |�|fW S tjk r� t� � s�t�d||� t |�|f Y S t�d||� t�t j� | Y S X dS )a Return lock info if lock file is present the lock is active. If process claiming the lock is no longer present, remove the lock file and log a warning. :return: A tuple (pid, string describing lock holder) If no active lock, pid will be -1. )Zlock_file_path)���� Zpsz.Found stale lock file previously held by %s:%sz1Removing stale lock file previously held by %s:%sN)�lock_data_file�readr ZInvalidFileFormatErrorZInvalidLockFile�pathr r r Zsubp�intZProcessExecutionErrorr Zwe_are_currently_root�LOG�debugZwarningZensure_file_absent)Z lock_data_objZno_lockr r r r r �check_lock_info"