Пример #1
0
    def middleware_clean(self, data):
        targetobj = self.cleaned_data.get('iscsi_target')
        with client as c:
            target = c.call('iscsi.target.query', [('id', '=', targetobj.id)], {'get': True})

        data['auth'] = data.pop('authgroup') or None
        data['authmethod'] = AUTHMETHOD_LEGACY_MAP.get(data.pop('authtype'))
        data['initiator'] = data.pop('initiatorgroup')
        data['portal'] = data.pop('portalgroup')

        if self.instance.id:
            orig = models.iSCSITargetGroups.objects.get(pk=self.instance.id).__dict__
            old = {
                'authmethod': AUTHMETHOD_LEGACY_MAP.get(orig['iscsi_target_authtype']),
                'portal': orig['iscsi_target_portalgroup_id'],
                'initiator': orig['iscsi_target_initiatorgroup_id'],
                'auth': orig['iscsi_target_authgroup'],
            }
            for idx, i in enumerate(target['groups']):
                if (
                    i['portal'] == old['portal'] and i['initiator'] == old['initiator'] and
                    i['auth'] == old['auth'] and i['authmethod'] == old['authmethod']
                ):
                    break
            else:
                raise forms.ValidationError('Target group not found')
            target['groups'][idx] = data
        else:
            target['groups'].append(data)
        self.instance.id = targetobj.id
        target.pop('id')
        return target
Пример #2
0
    def middleware_clean(self, data):
        targetobj = self.cleaned_data.get('iscsi_target')
        with client as c:
            target = c.call('iscsi.target.query', [('id', '=', targetobj.id)], {'get': True})

        data['auth'] = data.pop('authgroup') or None
        data['authmethod'] = AUTHMETHOD_LEGACY_MAP.get(data.pop('authtype'))
        data['initiator'] = data.pop('initiatorgroup')
        data['portal'] = data.pop('portalgroup')

        if self.instance.id:
            orig = models.iSCSITargetGroups.objects.get(pk=self.instance.id).__dict__
            old = {
                'authmethod': AUTHMETHOD_LEGACY_MAP.get(orig['iscsi_target_authtype']),
                'portal': orig['iscsi_target_portalgroup_id'],
                'initiator': orig['iscsi_target_initiatorgroup_id'],
                'auth': orig['iscsi_target_authgroup'],
            }
            for idx, i in enumerate(target['groups']):
                if (
                    i['portal'] == old['portal'] and i['initiator'] == old['initiator'] and
                    i['auth'] == old['auth'] and i['authmethod'] == old['authmethod']
                ):
                    break
            else:
                raise forms.ValidationError('Target group not found')
            target['groups'][idx] = data
        else:
            target['groups'].append(data)
        self.instance.id = targetobj.id
        target.pop('id')
        return target
Пример #3
0
 def middleware_clean(self, data):
     data['listen'] = self._listen
     data['discovery_authmethod'] = AUTHMETHOD_LEGACY_MAP.get(
         data.pop('discoveryauthmethod'))
     data['discovery_authgroup'] = data.pop('discoveryauthgroup') or None
     data.pop('tag', None)
     return data
Пример #4
0
 def cleanformset_iscsitargetgroups(self, fs, forms):
     for form in forms:
         if not hasattr(form, 'cleaned_data'):
             continue
         if form.cleaned_data.get('DELETE'):
             continue
         data = {
             'authmethod': AUTHMETHOD_LEGACY_MAP.get(
                 form.cleaned_data.get('iscsi_target_authtype')
             ),
         }
         for i in ('portal', 'auth', 'initiator'):
             group = form.cleaned_data.get(f'iscsi_target_{i}group')
             if group == '-1':
                 group = None
             if group:
                 if hasattr(group, 'id'):
                     data[i] = group.id
                 else:
                     data[i] = int(group)
             else:
                 data[i] = None
         self._groups.append(data)
     return True
Пример #5
0
 def cleanformset_iscsitargetgroups(self, fs, forms):
     for form in forms:
         if not hasattr(form, 'cleaned_data'):
             continue
         if form.cleaned_data.get('DELETE'):
             continue
         data = {
             'authmethod':
             AUTHMETHOD_LEGACY_MAP.get(
                 form.cleaned_data.get('iscsi_target_authtype')),
         }
         for i in ('portal', 'auth', 'initiator'):
             group = form.cleaned_data.get(f'iscsi_target_{i}group')
             if group == '-1':
                 group = None
             if group:
                 if hasattr(group, 'id'):
                     data[i] = group.id
                 else:
                     data[i] = int(group)
             else:
                 data[i] = None
         self._groups.append(data)
     return True
Пример #6
0
 def middleware_clean(self, data):
     data['listen'] = self._listen
     data['discovery_authmethod'] = AUTHMETHOD_LEGACY_MAP.get(data.pop('discoveryauthmethod'))
     data['discovery_authgroup'] = data.pop('discoveryauthgroup') or None
     data.pop('tag', None)
     return data