from bootstrapvz.common.tools import log_check_call
from base import BasePartition


class GPTPartition(BasePartition):
    """Represents a GPT partition
    """

    def __init__(self, size, filesystem, format_command, mountopts, name, previous):
        """
        :param Bytes size: Size of the partition
        :param str filesystem: Filesystem the partition should be formatted with
        :param list format_command: Optional format command, valid variables are fs, device_path and size
        :param str name: The name of the partition
        :param BasePartition previous: The partition that preceeds this one
        """
        self.name = name
        super(GPTPartition, self).__init__(size, filesystem, format_command, mountopts, previous)

    def _before_create(self, e):
        # Create the partition and then set the name of the partition afterwards
        super(GPTPartition, self)._before_create(e)
        # partition name only works for gpt, for msdos that becomes the part-type (primary, extended, logical)
        name_command = 'name {idx} {name}'.format(idx=self.get_index(), name=self.name)
        log_check_call(['parted', '--script', e.volume.device_path,
                        '--', name_command])
