Mini Shell
3
{)c%) � @ s� d dl Z d dlZd dlmZ ddlmZmZmZ ddlm Z ddlm
Z
ddlmZ dd lmZ ee j
�G d
d� dej��Zee j
�G dd
� d
eje��ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG d d!� d!e�ZG d"d#� d#e�ZG d$d%� d%e�ZG d&d'� d'e�ZG d(d)� d)eje�Z dS )*� N)�
add_metaclass� )�FSError�FSWriteLabelError�FSWriteUUIDError)�util� )�availability)�fstask)�taskc @ s0 e Zd Zejdd�Zejdd�Zejdd�ZdS )�
FSMkfsTaskzwhether this task labels)�doczwhether this task can set UUIDz*whether this task can set nodiscard optionN)�__name__�
__module__�__qualname__�abc�abstractproperty� can_label�can_set_uuid�
can_nodiscard� r r �/usr/lib/python3.6/fsmkfs.pyr # s r c @ s� e Zd ZdZdZejdd�Zejdd�Zejdd�Z ej
dd� �Zed d
� �Z
edd� �Zed
d� �Zedd� �Zedd� �Zedd� �Zddd�Zdd� Zddd�ZdS )�FSMkfsz?An abstract class that represents filesystem creation actions. Zmkfsz&Option for setting a filesystem label.)r
z-Option for setting nodiscrad option for mkfs.zoptions for creating filesystemc C s t �dS )z�Return a list of arguments for setting a filesystem UUID.
:param uuid: the UUID to set
:type uuid: str
:rtype: list of str
N)�NotImplementedError)�self�uuidr r r �
get_uuid_args9 s zFSMkfs.get_uuid_argsc C s
| j dk S )z� Whether this task can label the filesystem.
:returns: True if this task can label the filesystem
:rtype: bool
N)�label_option)r r r r r E s zFSMkfs.can_labelc C s
| j dk S )z�Whether this task can set the UUID of a filesystem.
:returns: True if UUID can be set
:rtype: bool
N)r )r r r r r N s zFSMkfs.can_set_uuidc C s
| j dk S )z�Whether this task can set nodiscard option for a filesystem.
:returns: True if nodiscard can be set
:rtype: bool
N)�nodiscard_option)r r r r r W s zFSMkfs.can_nodiscardc C sX | j dkrg S | jjdkrg S | jj| jj�r<| j | jjgS td| jj| jjf ��dS )z� Any labeling options that a particular filesystem may use.
:returns: labeling options
:rtype: list of str
NztChoosing not to apply label (%s) during creation of filesystem %s. Label format is unacceptable for this filesystem.)r �fs�labelZlabel_format_okr �type)r r r r �_label_options` s
zFSMkfs._label_optionsc C s | j dkrg S | jjsg S | j S )z� Any nodiscard options that a particular filesystem may use.
:returns: nodiscard options
:rtype: list of str
N)r r Z_mkfs_nodiscard)r r r r �_nodiscard_optiont s
zFSMkfs._nodiscard_optionc C sT | j dks| jjdkrg S | jj| jj�r8| j | jj�S td| jj| jjf ��dS )z�Any UUID options that a particular filesystem may use.
:returns: UUID options
:rtype: list of str
:raises: FSWriteUUIDError
NzrChoosing not to apply UUID (%s) during creation of filesystem %s. UUID format is unacceptable for this filesystem.)r r r Zuuid_format_okr r! )r r r r �
_uuid_options� s zFSMkfs._uuid_optionsNFc C sz |pg }t |t�std��|r$| jng }|r2| jng }|r@| jng }tj| jj pRd�}|| j
| | | | | jjg S )aR Get a list of format options to be used when creating the
filesystem.
:param options: any special options
:type options: list of str or None
:param bool label: if True, label if possible, default is False
:param bool set_uuid: whether set UUID if possible, default is False
z!options parameter must be a list.� )�
isinstance�listr r"