Exemplo n.º 1
0
    def __init__(self, *args, **kwargs):
        super(InterfacesForm, self).__init__(*args, **kwargs)
        self.fields['int_interface'].choices = choices.NICChoices()
        self.fields['int_dhcp'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_int_dhcp", ["id_int_ipv4address", '
            '"id_int_v4netmaskbit"]);')
        self.fields['int_ipv6auto'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_int_ipv6auto", '
            '["id_int_ipv6address", "id_int_v6netmaskbit"]);')
        dhcp = False
        ipv6auto = False
        if self.data:
            if self.data.get("int_dhcp"):
                dhcp = True
            if self.data.get("int_ipv6auto"):
                ipv6auto = True
        elif self.instance.id:
            if self.instance.int_dhcp:
                dhcp = True
            if self.instance.int_ipv6auto:
                ipv6auto = True
        if dhcp:
            self.fields['int_ipv4address'].widget.attrs['disabled'] = (
                'disabled')
            self.fields['int_v4netmaskbit'].widget.attrs['disabled'] = (
                'disabled')
        if ipv6auto:
            self.fields['int_ipv6address'].widget.attrs['disabled'] = (
                'disabled')
            self.fields['int_v6netmaskbit'].widget.attrs['disabled'] = (
                'disabled')

        if self.instance.id:
            if self.instance.int_interface.startswith('carp'):
                self.fields['int_v4netmaskbit'].widget.attrs['readonly'] = True
                self.fields['int_v4netmaskbit'].widget.attrs['class'] = (
                    'dijitDisabled dijitSelectDisabled'
                )
                self.fields['int_v4netmaskbit'].initial = '32'
                self.instance.int_v4netmaskbit = '32'
            self.fields['int_interface'] = \
                forms.CharField(
                    label=self.fields['int_interface'].label,
                    initial=self.instance.int_interface,
                    widget=forms.TextInput(
                        attrs={
                            'readonly': True,
                            'class': (
                                'dijitDisabled dijitTextBoxDisabled'
                                ' dijitValidationTextBoxDisabled'
                            ),
                        },
                    )
                )
Exemplo n.º 2
0
 def __init__(self, *args, **kwargs):
     super(InterfaceEditForm, self).__init__(*args, **kwargs)
     instance = getattr(self, 'instance', None)
     if instance and instance.id:
         self.fields['int_interface'] = \
             forms.CharField(label=self.fields['int_interface'].label,
                 initial=instance.int_interface,
                 widget=forms.TextInput(
                     attrs={
                     'readonly': True,
                     'class': 'dijitDisabled dijitTextBoxDisabled' \
                              ' dijitValidationTextBoxDisabled',
                     },
                 )
             )
Exemplo n.º 3
0
 def __set_ro(self, instance, key):
     if instance and instance.id:
         self.fields[key] = \
             forms.CharField(
                 label=self.fields[key].label,
                 initial=instance.__dict__[key],
                 widget=forms.TextInput(
                     attrs={
                         'readonly': True,
                         'class': (
                             'dijitDisabled dijitTextBoxDisabled'
                             'dijitValidationTextBoxDisabled'
                         ),
                     },
                 )
             )
Exemplo n.º 4
0
    def __init__(self, *args, **kwargs):
        super(InterfacesForm, self).__init__(*args, **kwargs)

        self._carp = False
        _n = notifier()
        if not _n.is_freenas() and _n.failover_licensed():
            from freenasUI.failover.utils import node_label_field
            self._carp = True
            node_label_field(
                _n.failover_node(),
                self.fields['int_ipv4address'],
                self.fields['int_ipv4address_b'],
            )

        if not self._carp:
            del self.fields['int_vip']
            del self.fields['int_vhid']
            del self.fields['int_critical']
            del self.fields['int_group']
            del self.fields['int_ipv4address_b']

        self.fields['int_interface'].choices = choices.NICChoices(nocarp=True)
        self.fields['int_dhcp'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_int_dhcp", ["id_int_ipv4address", '
            '"id_int_ipv4address_b", "id_int_v4netmaskbit"]);')
        self.fields['int_ipv6auto'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_int_ipv6auto", '
            '["id_int_ipv6address", "id_int_v6netmaskbit"]);')
        if 'int_critical' in self.fields:
            self.fields['int_critical'].widget.attrs['onChange'] = (
                'javascript:toggleGeneric("id_int_critical", '
                '["id_int_group"], true);')
        dhcp = False
        ipv6auto = False
        if self.data:
            if self.data.get("int_dhcp"):
                dhcp = True
            if self.data.get("int_ipv6auto"):
                ipv6auto = True
        elif self.instance.id:
            if self.instance.int_dhcp:
                dhcp = True
            if self.instance.int_ipv6auto:
                ipv6auto = True
        if dhcp:
            if 'int_ipv4address' in self.fields:
                self.fields['int_ipv4address'].widget.attrs['disabled'] = (
                    'disabled')
            if 'int_ipv4address_b' in self.fields:
                self.fields['int_ipv4address_b'].widget.attrs['disabled'] = (
                    'disabled')
            self.fields['int_v4netmaskbit'].widget.attrs['disabled'] = (
                'disabled')
        if ipv6auto:
            self.fields['int_ipv6address'].widget.attrs['disabled'] = (
                'disabled')
            self.fields['int_v6netmaskbit'].widget.attrs['disabled'] = (
                'disabled')

        if self.instance.id:
            if 'int_group' in self.fields and not self.instance.int_critical:
                self.fields['int_group'].widget.attrs['disabled'] = (
                    'disabled')
            self.fields['int_interface'] = \
                forms.CharField(
                    label=self.fields['int_interface'].label,
                    initial=self.instance.int_interface,
                    widget=forms.TextInput(
                        attrs={
                            'readonly': True,
                            'class': (
                                'dijitDisabled dijitTextBoxDisabled'
                                ' dijitValidationTextBoxDisabled'
                            ),
                        },
                    )
                )
Exemplo n.º 5
0
    def __init__(self, *args, **kwargs):
        super(DeviceForm, self).__init__(*args, **kwargs)
        self.fields['dtype'].widget.attrs['onChange'] = ("deviceTypeToggle();")

        self.fields['VNC_bind'].choices = self.ipv4_list()
        self.fields['NIC_attach'].choices = choices.NICChoices(
            exclude_configured=False,
            include_vlan_parent=True,
            include_lagg_parent=False,
        )

        diskchoices = {}
        with client as c:
            for zvol in c.call('pool.dataset.query',
                               [('type', '=', 'VOLUME')]):
                diskchoices[f'zvol/{zvol["name"]}'] = "%s (%s)" % (
                    zvol['name'], humanize_size(zvol['volsize']['parsed']))
        self.fields['DISK_zvol'].choices = diskchoices.items()

        if self.instance.id:
            if self.instance.dtype == 'CDROM':
                self.fields[
                    'CDROM_path'].initial = self.instance.attributes.get(
                        'path', '')
            elif self.instance.dtype == 'DISK':
                self.fields[
                    'DISK_zvol'].initial = self.instance.attributes.get(
                        'path', '').replace('/dev/', '')
                self.fields[
                    'DISK_mode'].initial = self.instance.attributes.get('type')
                self.fields[
                    'DISK_sectorsize'].initial = self.instance.attributes.get(
                        'sectorsize', 0)
            elif self.instance.dtype == 'RAW':
                self.fields['DISK_raw'].initial = self.instance.attributes.get(
                    'path', '')
                self.fields[
                    'DISK_mode'].initial = self.instance.attributes.get('type')
                self.fields[
                    'DISK_sectorsize'].initial = self.instance.attributes.get(
                        'sectorsize', 0)

                if self.instance.vm.vm_type == 'Container Provider':
                    self.fields['DISK_raw_boot'].widget = forms.CheckboxInput()
                    self.fields['DISK_raw_size'].widget = forms.TextInput()
                    self.fields['ROOT_password'].widget = forms.PasswordInput(
                        render_value=True, )

                self.fields[
                    'DISK_raw_boot'].initial = self.instance.attributes.get(
                        'boot', False)
                self.fields[
                    'DISK_raw_size'].initial = self.instance.attributes.get(
                        'size', '')
                self.fields[
                    'ROOT_password'].initial = self.instance.attributes.get(
                        'rootpwd', '')
            elif self.instance.dtype == 'NIC':
                self.fields['NIC_type'].initial = self.instance.attributes.get(
                    'type')
                self.fields['NIC_mac'].initial = self.instance.attributes.get(
                    'mac')
                self.fields[
                    'NIC_attach'].initial = self.instance.attributes.get(
                        'nic_attach')
            elif self.instance.dtype == 'VNC':
                vnc_port = self.instance.attributes.get('vnc_port')
                vnc_port = 0 if vnc_port is None else vnc_port

                self.fields['VNC_wait'].initial = self.instance.attributes.get(
                    'wait')
                self.fields['VNC_port'].initial = vnc_port
                self.fields[
                    'VNC_resolution'].initial = self.instance.attributes.get(
                        'vnc_resolution')
                self.fields['VNC_bind'].initial = self.instance.attributes.get(
                    'vnc_bind')
                self.fields[
                    'VNC_password'].initial = self.instance.attributes.get(
                        'vnc_password')
                self.fields['VNC_web'].initial = self.instance.attributes.get(
                    'vnc_web')
Exemplo n.º 6
0
    def __init__(self, *args, **kwargs):
        super(DeviceForm, self).__init__(*args, **kwargs)
        self.fields['dtype'].widget.attrs['onChange'] = ("deviceTypeToggle();")

        self.fields['VNC_bind'].choices = self.ipv4_list()

        diskchoices = {}
        _n = notifier()
        used_zvol = []
        for volume in Volume.objects.filter():
            zvols = _n.list_zfs_vols(volume.vol_name, sort='name')
            for zvol, attrs in zvols.items():
                if "zvol/" + zvol not in used_zvol:
                    diskchoices["zvol/" + zvol] = "%s (%s)" % (
                        zvol, humanize_size(attrs['volsize']))
        self.fields['DISK_zvol'].choices = diskchoices.items()

        if self.instance.id:
            if self.instance.dtype == 'CDROM':
                self.fields[
                    'CDROM_path'].initial = self.instance.attributes.get(
                        'path', '')
            elif self.instance.dtype == 'DISK':
                self.fields[
                    'DISK_zvol'].initial = self.instance.attributes.get(
                        'path', '').replace('/dev/', '')
                self.fields[
                    'DISK_mode'].initial = self.instance.attributes.get('type')
                self.fields[
                    'DISK_sectorsize'].initial = self.instance.attributes.get(
                        'sectorsize', 0)
            elif self.instance.dtype == 'RAW':
                self.fields['DISK_raw'].initial = self.instance.attributes.get(
                    'path', '')
                self.fields[
                    'DISK_mode'].initial = self.instance.attributes.get('type')
                self.fields[
                    'DISK_sectorsize'].initial = self.instance.attributes.get(
                        'sectorsize', 0)

                if self.instance.vm.vm_type == 'Container Provider':
                    self.fields['DISK_raw_boot'].widget = forms.CheckboxInput()
                    self.fields['DISK_raw_size'].widget = forms.TextInput()
                    self.fields['ROOT_password'].widget = forms.PasswordInput(
                        render_value=True, )

                self.fields[
                    'DISK_raw_boot'].initial = self.instance.attributes.get(
                        'boot', False)
                self.fields[
                    'DISK_raw_size'].initial = self.instance.attributes.get(
                        'size', '')
                self.fields[
                    'ROOT_password'].initial = self.instance.attributes.get(
                        'rootpwd', '')
            elif self.instance.dtype == 'NIC':
                self.fields['NIC_type'].initial = self.instance.attributes.get(
                    'type')
                self.fields['NIC_mac'].initial = self.instance.attributes.get(
                    'mac')
                self.fields[
                    'NIC_attach'].initial = self.instance.attributes.get(
                        'nic_attach')
            elif self.instance.dtype == 'VNC':
                vnc_port = self.instance.attributes.get('vnc_port')
                vnc_port = 0 if vnc_port is None else vnc_port

                self.fields['VNC_wait'].initial = self.instance.attributes.get(
                    'wait')
                self.fields['VNC_port'].initial = vnc_port
                self.fields[
                    'VNC_resolution'].initial = self.instance.attributes.get(
                        'vnc_resolution')
                self.fields['VNC_bind'].initial = self.instance.attributes.get(
                    'vnc_bind')
                self.fields[
                    'VNC_password'].initial = self.instance.attributes.get(
                        'vnc_password')
                self.fields['VNC_web'].initial = self.instance.attributes.get(
                    'vnc_web')
Exemplo n.º 7
0
    def __init__(self, *args, **kwargs):
        super(InterfacesForm, self).__init__(*args, **kwargs)
        self.fields['int_interface'].choices = choices.NICChoices()
        self.fields['int_dhcp'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_int_dhcp", ["id_int_ipv4address", '
            '"id_int_v4netmaskbit"]);')
        self.fields['int_ipv6auto'].widget.attrs['onChange'] = (
            'javascript:toggleGeneric("id_int_ipv6auto", '
            '["id_int_ipv6address", "id_int_v6netmaskbit"]);')
        dhcp = False
        ipv6auto = False
        if self.data:
            if self.data.get("int_dhcp"):
                dhcp = True
            if self.data.get("int_ipv6auto"):
                ipv6auto = True
        elif self.instance.id:
            if self.instance.int_dhcp:
                dhcp = True
            if self.instance.int_ipv6auto:
                ipv6auto = True
        if dhcp:
            self.fields['int_ipv4address'].widget.attrs['disabled'] = (
                'disabled')
            self.fields['int_v4netmaskbit'].widget.attrs['disabled'] = (
                'disabled')
        if ipv6auto:
            self.fields['int_ipv6address'].widget.attrs['disabled'] = (
                'disabled')
            self.fields['int_v6netmaskbit'].widget.attrs['disabled'] = (
                'disabled')

        if self.instance.id:
            if self.instance.int_interface.startswith('carp'):
                self.fields['int_v4netmaskbit'].widget.attrs['readonly'] = True
                self.fields['int_v4netmaskbit'].widget.attrs['class'] = (
                    'dijitDisabled dijitSelectDisabled')
                self.fields['int_v4netmaskbit'].initial = '32'
                self.instance.int_v4netmaskbit = '32'
            self.fields['int_interface'] = \
                forms.CharField(
                    label=self.fields['int_interface'].label,
                    initial=self.instance.int_interface,
                    widget=forms.TextInput(
                        attrs={
                            'readonly': True,
                            'class': (
                                'dijitDisabled dijitTextBoxDisabled'
                                ' dijitValidationTextBoxDisabled'
                            ),
                        },
                    )
                )
        else:
            # In case there is a CARP instance but no Interfaces instance
            if hasattr(notifier, 'failover_status'):
                from freenasUI.failover.models import CARP
                int_interfaces = [
                    o.int_interface for o in models.Interfaces.objects.all()
                ]
                for o in CARP.objects.all():
                    if o.carp_name not in int_interfaces:
                        self.fields['int_interface'].choices += [
                            (o.carp_name, o.carp_name),
                        ]