Completed
Push — master ( 0a5329...7a9b88 )
by Juan José
34s
created

_GmpCommandFactory.create_override_command()   D

Complexity

Conditions 12

Size

Total Lines 52
Code Lines 38

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 12
eloc 38
nop 4
dl 0
loc 52
rs 4.8
c 0
b 0
f 0

How to fix   Long Method    Complexity   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

Complexity

Complex classes like gvm.xml._GmpCommandFactory.create_override_command() often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
# -*- coding: utf-8 -*-
0 ignored issues
show
coding-style introduced by
Too many lines in module (1523/1000)
Loading history...
2
# Copyright (C) 2018 Greenbone Networks GmbH
3
#
4
# SPDX-License-Identifier: GPL-3.0-or-later
5
#
6
# This program is free software: you can redistribute it and/or modify
7
# it under the terms of the GNU General Public License as published by
8
# the Free Software Foundation, either version 3 of the License, or
9
# (at your option) any later version.
10
#
11
# This program is distributed in the hope that it will be useful,
12
# but WITHOUT ANY WARRANTY; without even the implied warranty of
13
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
# GNU General Public License for more details.
15
#
16
# You should have received a copy of the GNU General Public License
17
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
18
19
import defusedxml.lxml as secET
20
21
from lxml import etree
22
23
class XmlCommandElement:
24
25
    def __init__(self, element):
26
        self._element = element
27
28
    def add_element(self, name, text=None, attrs=None):
29
        node = etree.SubElement(self._element, name, attrib=attrs)
30
        node.text = text
31
        return XmlCommandElement(node)
32
33
    def set_attribute(self, name, value):
34
        self._element.set(name, value)
35
36
    def set_attributes(self, attrs):
37
        """Set several attributes at once.
38
39
        Arguments:
40
            attrs (dict): Attributes to be set on the element
41
        """
42
        for key, value in attrs.items():
43
            self._element.set(key, value)
44
45
    def append_xml_str(self, xml_text):
46
        """Append a xml element in string format."""
47
        node = secET.fromstring(xml_text)
48
        self._element.append(node)
49
50
    def to_string(self):
51
        return etree.tostring(self._element).decode('utf-8')
52
53
    def __str__(self):
54
        return self.to_string()
55
56
57
class XmlCommand(XmlCommandElement):
58
59
    def __init__(self, name):
60
        super().__init__(etree.Element(name))
61
62
63
class _GmpCommandFactory:
0 ignored issues
show
best-practice introduced by
Too many public methods (98/30)
Loading history...
64
65
    """Factory to create gmp - Greenbone Management Protocol - commands
66
    """
67
68
    def create_port_list_command(self, name, port_range, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
69
        """Generates xml string for create port list on gvmd."""
70
        if not name:
71
            raise ValueError('create_port_list requires a name element')
72
        if not port_range:
73
            raise ValueError('create_port_list requires a port_range element')
74
75
        cmd = XmlCommand('create_port_list')
76
        cmd.add_element('name', name)
77
        cmd.add_element('port_range', port_range)
78
79
        comment = kwargs.get('comment', '')
80
        if comment:
81
            cmd.add_element('comment', comment)
82
83
        copy = kwargs.get('copy', '')
84
        if copy:
85
            cmd.add_element('copy', copy)
86
87
        return cmd.to_string()
88
89
    def create_port_range_command(self, port_list_id, start, end, type,
0 ignored issues
show
Bug Best Practice introduced by
This seems to re-define the built-in type.

It is generally discouraged to redefine built-ins as this makes code very hard to read.

Loading history...
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
90
                                  comment=''):
91
        """Generates xml string for create port range on gvmd."""
92
93
        if not port_list_id:
94
            raise ValueError('create_port_range requires '
95
                             'a port_list_id element')
96
        if not type:
97
            raise ValueError('create_port_range requires a type element')
98
99
        cmd = XmlCommand('create_port_range')
100
        cmd.add_element('port_list', attrs={'id': port_list_id})
101
        cmd.add_element('start', start)
102
        cmd.add_element('end', end)
103
        cmd.add_element('type', type)
104
105
        if comment:
106
            cmd.add_element('comment', comment)
107
108
        return cmd.to_string()
109
110
    def create_report_command(self, report_xml_string, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
111
        """Generates xml string for create report on gvmd."""
112
113
        if not report_xml_string:
114
            raise ValueError('create_report requires a report')
115
116
        task_id = kwargs.get('task_id', '')
117
        task_name = kwargs.get('task_name', '')
118
119
        cmd = XmlCommand('create_report')
120
        comment = kwargs.get('comment', '')
121
        if task_id:
122
            cmd.add_element('task', attrs={'id': task_id})
123
        elif task_name:
124
            _xmltask = cmd.add_element('task')
125
            _xmltask.add_element('name', task_name)
126
            if comment:
127
                _xmltask.add_element('comment', comment)
128
        else:
129
            raise ValueError('create_report requires an id or name for a task')
130
131
        in_assets = kwargs.get('in_assets', '')
132
        if in_assets:
133
            cmd.add_element('in_assets', in_assets)
134
135
        cmd.append_xml_str(report_xml_string)
136
137
        return cmd.to_string()
138
139
    def create_role_command(self, name, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
140
        """Generates xml string for create role on gvmd."""
141
142
        if not name:
143
            raise ValueError('create_role requires a name element')
144
145
        cmd = XmlCommand('create_role')
146
        cmd.add_element('name', name)
147
148
        comment = kwargs.get('comment', '')
149
        if comment:
150
            cmd.add_element('comment', comment)
151
152
        copy = kwargs.get('copy', '')
153
        if copy:
154
            cmd.add_element('copy', copy)
155
156
        users = kwargs.get('users', '')
157
        if users:
158
            cmd.add_element('users', users)
159
160
        return cmd.to_string()
161
162
    def create_scanner_command(self, name, host, port, type, ca_pub,
0 ignored issues
show
Bug Best Practice introduced by
This seems to re-define the built-in type.

It is generally discouraged to redefine built-ins as this makes code very hard to read.

Loading history...
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
163
                               credential_id, kwargs):
164
        """Generates xml string for create scanner on gvmd."""
165
        if not name:
166
            raise ValueError('create_scanner requires a name element')
167
        if not host:
168
            raise ValueError('create_scanner requires a host element')
169
        if not port:
170
            raise ValueError('create_scanner requires a port element')
171
        if not type:
172
            raise ValueError('create_scanner requires a type element')
173
        if not ca_pub:
174
            raise ValueError('create_scanner requires a ca_pub element')
175
        if not credential_id:
176
            raise ValueError('create_scanner requires a credential_id element')
177
178
        cmd = XmlCommand('create_scanner')
179
        cmd.add_element('name', name)
180
        cmd.add_element('host', host)
181
        cmd.add_element('port', port)
182
        cmd.add_element('type', type)
183
        cmd.add_element('ca_pub', ca_pub)
184
        cmd.add_element('credential', attrs={'id': str(credential_id)})
185
186
        comment = kwargs.get('comment', '')
187
        if comment:
188
            cmd.add_element('comment', comment)
189
190
        copy = kwargs.get('copy', '')
191
        if copy:
192
            cmd.add_element('copy', copy)
193
194
        return cmd.to_string()
195
196 View Code Duplication
    def create_schedule_command(self, name, kwargs):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Comprehensibility introduced by
This function exceeds the maximum number of variables (19/15).
Loading history...
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
197
        """Generates xml string for create schedule on gvmd."""
198
        if not name:
199
            raise ValueError('create_schedule requires a name element')
200
201
        cmd = XmlCommand('create_schedule')
202
        cmd.add_element('name', name)
203
204
        comment = kwargs.get('comment', '')
205
        if comment:
206
            cmd.add_element('comment', comment)
207
208
        copy = kwargs.get('copy', '')
209
        if copy:
210
            cmd.add_element('copy', copy)
211
212
        first_time = kwargs.get('first_time', '')
213
        if first_time:
214
            first_time_minute = first_time['minute']
215
            first_time_hour = first_time['hour']
216
            first_time_day_of_month = first_time['day_of_month']
217
            first_time_month = first_time['month']
218
            first_time_year = first_time['year']
219
220
            _xmlftime = cmd.add_element('first_time')
221
            _xmlftime.add_element('minute', first_time_minute)
222
            _xmlftime.add_element('hour', str(first_time_hour))
223
            _xmlftime.add_element('day_of_month', str(first_time_day_of_month))
224
            _xmlftime.add_element('month', str(first_time_month))
225
            _xmlftime.add_element('year', str(first_time_year))
226
227
        duration = kwargs.get('duration', '')
228
        if len(duration) > 1:
229
            _xmlduration = cmd.add_element('duration', str(duration[0]))
230
            _xmlduration.add_element('unit', str(duration[1]))
231
232
        period = kwargs.get('period', '')
233
        if len(period) > 1:
234
            _xmlperiod = cmd.add_element('period', str(period[0]))
235
            _xmlperiod.add_element('unit', str(period[1]))
236
237
        timezone = kwargs.get('timezone', '')
238
        if timezone:
239
            cmd.add_element('timezone', str(timezone))
240
241
        return cmd.to_string()
242
243
    def create_tag_command(self, name, resource_id, resource_type, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
244
        """Generates xml string for create tag on gvmd."""
245
246
        cmd = XmlCommand('create_tag')
247
        cmd.add_element('name', name)
248
        _xmlresource = cmd.add_element('resource',
249
                                       attrs={'id': str(resource_id)})
250
        _xmlresource.add_element('type', resource_type)
251
252
        comment = kwargs.get('comment', '')
253
        if comment:
254
            cmd.add_element('comment', comment)
255
256
        copy = kwargs.get('copy', '')
257
        if copy:
258
            cmd.add_element('copy', copy)
259
260
        value = kwargs.get('value', '')
261
        if value:
262
            cmd.add_element('value', value)
263
264
        active = kwargs.get('active', '')
265
        if active:
266
            cmd.add_element('active', active)
267
268
        return cmd.to_string()
269
270
    def create_task_command(self, name, config_id, target_id, scanner_id,
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
271
                            alert_ids=None, comment=''):
272
        """Generates xml string for create task on gvmd."""
273
274
        if alert_ids is None:
275
            alert_ids = []
276
        cmd = XmlCommand('create_task')
277
        cmd.add_element('name', name)
278
        cmd.add_element('comment', comment)
279
        cmd.add_element('config', attrs={'id': config_id})
280
        cmd.add_element('target', attrs={'id': target_id})
281
        cmd.add_element('scanner', attrs={'id': scanner_id})
282
283
        #if given the alert_id is wrapped and integrated suitably as xml
284
        if len(alert_ids) > 0:
285
            if isinstance(alert_ids, str):
286
                #if a single id is given as a string wrap it into a list
287
                alert_ids = [alert_ids]
288
            if isinstance(alert_ids, list):
289
                #parse all given alert id's
290
                for alert in alert_ids:
291
                    cmd.add_element('alert', attrs={'id': str(alert)})
292
293
        return cmd.to_string()
294
295
    def create_user_command(self, name, password, copy='', hosts_allow='0',
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
296
                            ifaces_allow='0', role_ids=(), hosts=None,
297
                            ifaces=None):
298
        """Generates xml string for create user on gvmd."""
299
        cmd = XmlCommand('create_user')
300
        cmd.add_element('name', name)
301
302
        if copy:
303
            cmd.add_element('copy', copy)
304
305
        if password:
306
            cmd.add_element('password', password)
307
308
        if hosts is not None:
309
            cmd.add_element('hosts', hosts, attrs={'allow': str(hosts_allow)})
310
311
        if ifaces is not None:
312
            cmd.add_element('ifaces', ifaces,
313
                            attrs={'allow': str(ifaces_allow)})
314
315
        if len(role_ids) > 0:
316
            for role in role_ids:
317
                cmd.add_element('role', attrs={'allow': str(role)})
318
319
        return cmd.to_string()
320
321
    def modify_agent_command(self, agent_id, name='', comment=''):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
322
        """Generates xml string for modify agent on gvmd."""
323
        if not agent_id:
324
            raise ValueError('modify_agent requires an agent_id element')
325
326
        cmd = XmlCommand('modify_agent')
327
        cmd.set_attribute('agent_id', str(agent_id))
328
        if name:
329
            cmd.add_element('name', name)
330
        if comment:
331
            cmd.add_element('comment', comment)
332
333
        return cmd.to_string()
334
335
    def modify_alert_command(self, alert_id, kwargs):
0 ignored issues
show
Comprehensibility introduced by
This function exceeds the maximum number of variables (17/15).
Loading history...
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
336
        """Generates xml string for modify alert on gvmd."""
337
338
        if not alert_id:
339
            raise ValueError('modify_alert requires an agent_id element')
340
341
        cmd = XmlCommand('modify_alert')
342
        cmd.set_attribute('alert_id', str(alert_id))
343
344
        name = kwargs.get('name', '')
345
        if name:
346
            cmd.add_element('name', name)
347
348
        comment = kwargs.get('comment', '')
349
        if comment:
350
            cmd.add_element('comment', comment)
351
352
        filter_id = kwargs.get('filter_id', '')
353
        if filter_id:
354
            cmd.add_element('filter', attrs={'id': filter_id})
355
356
        event = kwargs.get('event', '')
357
        if len(event) > 1:
358
            _xmlevent = cmd.add_element('event', event[0])
359
            for value, key in event[1].items():
360
                _xmldata = _xmlevent.add_element('data', value)
361
                _xmldata.add_element('name', key)
362
363
        condition = kwargs.get('condition', '')
364
        if len(condition) > 1:
365
            _xmlcond = cmd.add_element('condition', condition[0])
366
            for value, key in condition[1].items():
367
                _xmldata = _xmlcond.add_element('data', value)
368
                _xmldata.add_element('name', key)
369
370
        method = kwargs.get('method', '')
371
        if len(method) > 1:
372
            _xmlmethod = cmd.add_element('method', method[0])
373
            for value, key in method[1].items():
374
                _xmldata = _xmlmethod.add_element('data', value)
375
                _xmldata.add_element('name', key)
376
377
        return cmd.to_string()
378
379
    def modify_asset_command(self, asset_id, comment):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
380
        """Generates xml string for modify asset on gvmd."""
381
        cmd = XmlCommand('modify_asset')
382
        cmd.set_attribute('asset_id', asset_id)
383
        cmd.add_element('comment', comment)
384
        return cmd.to_string()
385
386
    def modify_auth_command(self, group_name, auth_conf_settings):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
387
        """Generates xml string for modify auth on gvmd."""
388
        if not group_name:
389
            raise ValueError('modify_auth requires a group element '
390
                             'with a name attribute')
391
        if not auth_conf_settings:
392
            raise ValueError('modify_auth requires '
393
                             'an auth_conf_settings element')
394
        cmd = XmlCommand('modify_auth')
395
        _xmlgroup = cmd.add_element('group', attrs={'name': str(group_name)})
396
397
        for key, value in auth_conf_settings.items():
398
            _xmlauthconf = _xmlgroup.add_element('auth_conf_setting')
399
            _xmlauthconf.add_element('key', key)
400
            _xmlauthconf.add_element('value', value)
401
402
        return cmd.to_string()
403
404
    def modify_config_command(self, selection, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
405
        """Generates xml string for modify config on gvmd."""
406
        if selection not in ('nvt_pref', 'sca_pref',
407
                             'family_selection', 'nvt_selection'):
408
            raise ValueError('selection must be one of nvt_pref, sca_pref, '
409
                             'family_selection or nvt_selection')
410
        config_id = kwargs.get('config_id')
411
412
        cmd = XmlCommand('modify_config')
413
        cmd.set_attribute('config_id', str(config_id))
414
415
        if selection in 'nvt_pref':
416
            nvt_oid = kwargs.get('nvt_oid')
417
            name = kwargs.get('name')
418
            value = kwargs.get('value')
419
            _xmlpref = cmd.add_element('preference')
420
            _xmlpref.add_element('nvt', attrs={'oid': nvt_oid})
421
            _xmlpref.add_element('name', name)
422
            _xmlpref.add_element('value', value)
423
424
        elif selection in 'nvt_selection':
425
            nvt_oid = kwargs.get('nvt_oid')
426
            family = kwargs.get('family')
427
            _xmlnvtsel = cmd.add_element('nvt_selection')
428
            _xmlnvtsel.add_element('family', family)
429
430
            if isinstance(nvt_oid, list):
431
                for nvt in nvt_oid:
432
                    _xmlnvtsel.add_element('nvt', attrs={'oid': nvt})
433
            else:
434
                _xmlnvtsel.add_element('nvt', attrs={'oid': nvt_oid})
435
436
        elif selection in 'family_selection':
437
            family = kwargs.get('family')
438
            _xmlfamsel = cmd.add_element('family_selection')
439
            _xmlfamsel.add_element('growing', '1')
440
            _xmlfamily = _xmlfamsel.add_element('family')
441
            _xmlfamily.add_element('name', family)
442
            _xmlfamily.add_element('all', '1')
443
            _xmlfamily.add_element('growing', '1')
444
        else:
445
            raise NotImplementedError
446
447
        return cmd.to_string()
448
449
    def modify_credential_command(self, credential_id, kwargs):
0 ignored issues
show
Comprehensibility introduced by
This function exceeds the maximum number of variables (22/15).
Loading history...
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
450
        """Generates xml string for modify credential on gvmd."""
451
        if not credential_id:
452
            raise ValueError('modify_credential requires '
453
                             'a credential_id attribute')
454
455
        cmd = XmlCommand('modify_credential')
456
        cmd.set_attribute('credential_id', credential_id)
457
458
        comment = kwargs.get('comment', '')
459
        if comment:
460
            cmd.add_element('comment', comment)
461
462
        name = kwargs.get('name', '')
463
        if name:
464
            cmd.add_element('name', name)
465
466
        allow_insecure = kwargs.get('allow_insecure', '')
467
        if allow_insecure:
468
            cmd.add_element('allow_insecure', allow_insecure)
469
470
        certificate = kwargs.get('certificate', '')
471
        if certificate:
472
            cmd.add_element('certificate', certificate)
473
474
        key = kwargs.get('key', '')
475
        if key:
476
            phrase = key['phrase']
477
            private = key['private']
478
            if not phrase:
479
                raise ValueError('modify_credential requires a phrase element')
480
            if not private:
481
                raise ValueError('modify_credential requires '
482
                                 'a private element')
483
            _xmlkey = cmd.add_element('key')
484
            _xmlkey.add_element('phrase', phrase)
485
            _xmlkey.add_element('private', private)
486
487
        login = kwargs.get('login', '')
488
        if login:
489
            cmd.add_element('login', login)
490
491
        password = kwargs.get('password', '')
492
        if password:
493
            cmd.add_element('password', password)
494
495
        auth_algorithm = kwargs.get('auth_algorithm', '')
496
        if auth_algorithm:
497
            if auth_algorithm not in ('md5', 'sha1'):
498
                raise ValueError('modify_credential requires auth_algorithm '
499
                                 'to be either md5 or sha1')
500
            cmd.add_element('auth_algorithm', auth_algorithm)
501
502
        community = kwargs.get('community', '')
503
        if community:
504
            cmd.add_element('community', community)
505
506
        privacy = kwargs.get('privacy', '')
507
        if privacy:
508
            algorithm = privacy.algorithm
509
            if algorithm not in ('aes', 'des'):
510
                raise ValueError('modify_credential requires algorithm '
511
                                 'to be either aes or des')
512
            p_password = privacy.password
513
            _xmlprivacy = cmd.add_element('privacy')
514
            _xmlprivacy.add_element('algorithm', algorithm)
515
            _xmlprivacy.add_element('password', p_password)
516
517
        cred_type = kwargs.get('type', '')
518
        if cred_type:
519
            if cred_type not in ('cc', 'snmp', 'up', 'usk'):
520
                raise ValueError('modify_credential requires type '
521
                                 'to be either cc, snmp, up or usk')
522
            cmd.add_element('type', cred_type)
523
524
        return cmd.to_string()
525
526
    def modify_filter_command(self, filter_id, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
527
        """Generates xml string for modify filter on gvmd."""
528
        if not filter_id:
529
            raise ValueError('modify_filter requires a filter_id attribute')
530
531
        cmd = XmlCommand('modify_filter')
532
        cmd.set_attribute('filter_id', filter_id)
533
534
        comment = kwargs.get('comment', '')
535
        if comment:
536
            cmd.add_element('comment', comment)
537
538
        name = kwargs.get('name', '')
539
        if name:
540
            cmd.add_element('name', name)
541
542
        copy = kwargs.get('copy', '')
543
        if copy:
544
            cmd.add_element('copy', copy)
545
546
        term = kwargs.get('term', '')
547
        if term:
548
            cmd.add_element('term', term)
549
550
        filter_type = kwargs.get('type', '')
551
        if filter_type:
552
            if filter_type not in ('cc', 'snmp', 'up', 'usk'):
553
                raise ValueError('modify_filter requires type '
554
                                 'to be either cc, snmp, up or usk')
555
            cmd.add_element('type', filter_type)
556
557
        return cmd.to_string()
558
559 View Code Duplication
    def modify_group_command(self, group_id, kwargs):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
560
        """Generates xml string for modify group on gvmd."""
561
        if not group_id:
562
            raise ValueError('modify_group requires a group_id attribute')
563
564
        cmd = XmlCommand('modify_group')
565
        cmd.set_attribute('group_id', group_id)
566
567
        comment = kwargs.get('comment', '')
568
        if comment:
569
            cmd.add_element('comment', comment)
570
571
        name = kwargs.get('name', '')
572
        if name:
573
            cmd.add_element('name', name)
574
575
        users = kwargs.get('users', '')
576
        if users:
577
            cmd.add_element('users', users)
578
579
        return cmd.to_string()
580
581
    def modify_note_command(self, note_id, text, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
582
        """Generates xml string for modify note on gvmd."""
583
        if not note_id:
584
            raise ValueError('modify_note requires a note_id attribute')
585
        if not text:
586
            raise ValueError('modify_note requires a text element')
587
588
        cmd = XmlCommand('modify_note')
589
        cmd.set_attribute('note_id', note_id)
590
        cmd.add_element('text', text)
591
592
        active = kwargs.get('active', '')
593
        if active:
594
            cmd.add_element('active', active)
595
596
        hosts = kwargs.get('hosts', '')
597
        if hosts:
598
            cmd.add_element('hosts', hosts)
599
600
        port = kwargs.get('port', '')
601
        if port:
602
            cmd.add_element('port', port)
603
604
        result_id = kwargs.get('result_id', '')
605
        if result_id:
606
            cmd.add_element('result', attrs={'id': result_id})
607
608
        severity = kwargs.get('severity', '')
609
        if severity:
610
            cmd.add_element('severity', severity)
611
612
        task_id = kwargs.get('task_id', '')
613
        if task_id:
614
            cmd.add_element('task', attrs={'id': task_id})
615
616
        threat = kwargs.get('threat', '')
617
        if threat:
618
            cmd.add_element('threat', threat)
619
620
        return cmd.to_string()
621
622
    def modify_override_command(self, override_id, text, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
623
        """Generates xml string for modify override on gvmd."""
624
        cmd = XmlCommand('modify_override')
625
        cmd.set_attribute('override_id', override_id)
626
        cmd.add_element('text', text)
627
628
        active = kwargs.get('active', '')
629
        if active:
630
            cmd.add_element('active', active)
631
632
        hosts = kwargs.get('hosts', '')
633
        if hosts:
634
            cmd.add_element('hosts', hosts)
635
636
        port = kwargs.get('port', '')
637
        if port:
638
            cmd.add_element('port', port)
639
640
        result_id = kwargs.get('result_id', '')
641
        if result_id:
642
            cmd.add_element('result', attrs={'id': result_id})
643
644
        severity = kwargs.get('severity', '')
645
        if severity:
646
            cmd.add_element('severity', severity)
647
648
        new_severity = kwargs.get('new_severity', '')
649
        if new_severity:
650
            cmd.add_element('new_severity', new_severity)
651
652
        task_id = kwargs.get('task_id', '')
653
        if task_id:
654
            cmd.add_element('task', attrs={'id': task_id})
655
656
        threat = kwargs.get('threat', '')
657
        if threat:
658
            cmd.add_element('threat', threat)
659
660
        new_threat = kwargs.get('new_threat', '')
661
        if new_threat:
662
            cmd.add_element('new_threat', new_threat)
663
664
        return cmd.to_string()
665
666
    def modify_permission_command(self, permission_id, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
667
        """Generates xml string for modify permission on gvmd."""
668
        if not permission_id:
669
            raise ValueError('modify_permission requires '
670
                             'a permission_id element')
671
672
        cmd = XmlCommand('modify_permission')
673
        cmd.set_attribute('permission_id', permission_id)
674
675
        comment = kwargs.get('comment', '')
676
        if comment:
677
            cmd.add_element('comment', comment)
678
679
        name = kwargs.get('name', '')
680
        if name:
681
            cmd.add_element('name', name)
682
683
        resource = kwargs.get('resource', '')
684
        if resource:
685
            resource_id = resource['id']
686
            resource_type = resource['type']
687
            _xmlresource = cmd.add_element('resource',
688
                                           attrs={'id': resource_id})
689
            _xmlresource.add_element('type', resource_type)
690
691
        subject = kwargs.get('subject', '')
692
        if subject:
693
            subject_id = subject['id']
694
            subject_type = subject['type']
695
            _xmlsubject = cmd.add_element('subject', attrs={'id': subject_id})
696
            _xmlsubject.add_element('type', subject_type)
697
698
        return cmd.to_string()
699
700
    def modify_port_list_command(self, port_list_id, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
701
        """Generates xml string for modify port list on gvmd."""
702
        if not port_list_id:
703
            raise ValueError('modify_port_list requires '
704
                             'a port_list_id attribute')
705
        cmd = XmlCommand('modify_port_list')
706
        cmd.set_attribute('port_list_id', port_list_id)
707
708
        comment = kwargs.get('comment', '')
709
        if comment:
710
            cmd.add_element('comment', comment)
711
712
        name = kwargs.get('name', '')
713
        if name:
714
            cmd.add_element('name', name)
715
716
        return cmd.to_string()
717
718
    def modify_report_command(self, report_id, comment):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
719
        """Generates xml string for modify report on gvmd."""
720
        cmd = XmlCommand('modify_report')
721
        cmd.set_attribute('report_id', report_id)
722
        cmd.add_element('comment', comment)
723
        return cmd.to_string()
724
725
    def modify_report_format_command(self, report_format_id, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
726
        """Generates xml string for modify report format on gvmd."""
727
        if len(kwargs) < 1:
728
            raise Exception('modify_report_format: Missing parameter')
729
730
        cmd = XmlCommand('modify_report_format')
731
        cmd.set_attribute('report_format_id', report_format_id)
732
733
        active = kwargs.get('active', '')
734
        if active:
735
            cmd.add_element('active', active)
736
737
        name = kwargs.get('name', '')
738
        if name:
739
            cmd.add_element('name', name)
740
741
        summary = kwargs.get('summary', '')
742
        if summary:
743
            cmd.add_element('summary', summary)
744
745
        param = kwargs.get('param', '')
746
        if param:
747
            p_name = param[0]
748
            p_value = param[1]
749
            _xmlparam = cmd.add_element('param')
750
            _xmlparam.add_element('name', p_name)
751
            _xmlparam.add_element('value', p_value)
752
753
        return cmd.to_string()
754
755 View Code Duplication
    def modify_role_command(self, role_id, kwargs):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
756
        """Generates xml string for modify role on gvmd."""
757
        if not role_id:
758
            raise ValueError('modify_role requires a role_id element')
759
760
        cmd = XmlCommand('modify_role')
761
        cmd.set_attribute('role_id', role_id)
762
763
        comment = kwargs.get('comment', '')
764
        if comment:
765
            cmd.add_element('comment', comment)
766
767
        name = kwargs.get('name', '')
768
        if name:
769
            cmd.add_element('name', name)
770
771
        users = kwargs.get('users', '')
772
        if users:
773
            cmd.add_element('users', users)
774
775
        return cmd.to_string()
776
777
    def modify_scanner_command(self, scanner_id, host, port, scanner_type,
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
778
                               kwargs):
779
        """Generates xml string for modify scanner on gvmd."""
780
        if not scanner_id:
781
            raise ValueError('modify_scanner requires a scanner_id element')
782
        if not host:
783
            raise ValueError('modify_scanner requires a host element')
784
        if not port:
785
            raise ValueError('modify_scanner requires a port element')
786
        if not scanner_type:
787
            raise ValueError('modify_scanner requires a type element')
788
789
        cmd = XmlCommand('modify_scanner')
790
        cmd.set_attribute('scanner_id', scanner_id)
791
        cmd.add_element('host', host)
792
        cmd.add_element('port', port)
793
        cmd.add_element('type', scanner_type)
794
795
        comment = kwargs.get('comment', '')
796
        if comment:
797
            cmd.add_element('comment', comment)
798
799
        name = kwargs.get('name', '')
800
        if name:
801
            cmd.add_element('name', name)
802
803
        ca_pub = kwargs.get('ca_pub', '')
804
        if ca_pub:
805
            cmd.add_element('ca_pub', ca_pub)
806
807
        credential_id = kwargs.get('credential_id', '')
808
        if credential_id:
809
            cmd.add_element('credential', attrs={'id': str(credential_id)})
810
811
        return cmd.to_string()
812
813 View Code Duplication
    def modify_schedule_command(self, schedule_id, kwargs):
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
Comprehensibility introduced by
This function exceeds the maximum number of variables (19/15).
Loading history...
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
814
        """Generates xml string for modify schedule on gvmd."""
815
        if not schedule_id:
816
            raise ValueError('modify_schedule requires a schedule_id element')
817
818
        cmd = XmlCommand('modify_schedule')
819
        cmd.set_attribute('schedule_id', schedule_id)
820
        comment = kwargs.get('comment', '')
821
        if comment:
822
            cmd.add_element('comment', comment)
823
824
        name = kwargs.get('name', '')
825
        if name:
826
            cmd.add_element('name', name)
827
828
        first_time = kwargs.get('first_time', '')
829
        if first_time:
830
            first_time_minute = first_time['minute']
831
            first_time_hour = first_time['hour']
832
            first_time_day_of_month = first_time['day_of_month']
833
            first_time_month = first_time['month']
834
            first_time_year = first_time['year']
835
836
            _xmlftime = cmd.add_element('first_time')
837
            _xmlftime.add_element('minute', str(first_time_minute))
838
            _xmlftime.add_element('hour', str(first_time_hour))
839
            _xmlftime.add_element('day_of_month', str(first_time_day_of_month))
840
            _xmlftime.add_element('month', str(first_time_month))
841
            _xmlftime.add_element('year', str(first_time_year))
842
843
        duration = kwargs.get('duration', '')
844
        if len(duration) > 1:
845
            _xmlduration = cmd.add_element('duration', str(duration[0]))
846
            _xmlduration.add_element('unit', str(duration[1]))
847
848
        period = kwargs.get('period', '')
849
        if len(period) > 1:
850
            _xmlperiod = cmd.add_element('period', str(period[0]))
851
            _xmlperiod.add_element('unit', str(period[1]))
852
853
        timezone = kwargs.get('timezone', '')
854
        if timezone:
855
            cmd.add_element('timezone', str(timezone))
856
857
        return cmd.to_string()
858
859
    def modify_setting_command(self, setting_id, name, value):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
860
        """Generates xml string for modify setting format on gvmd."""
861
        cmd = XmlCommand('modify_setting')
862
        cmd.set_attribute('setting_id', setting_id)
863
        cmd.add_element('name', name)
864
        cmd.add_element('value', value)
865
866
        return cmd.to_string()
867
868
    def modify_tag_command(self, tag_id, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
869
        """Generates xml string for modify tag on gvmd."""
870
        if not tag_id:
871
            raise ValueError('modify_tag requires a tag_id element')
872
873
        cmd = XmlCommand('modify_tag')
874
        cmd.set_attribute('tag_id', str(tag_id))
875
876
        comment = kwargs.get('comment', '')
877
        if comment:
878
            cmd.add_element('comment', comment)
879
880
        name = kwargs.get('name', '')
881
        if name:
882
            cmd.add_element('name', name)
883
884
        value = kwargs.get('value', '')
885
        if value:
886
            cmd.add_element('value', value)
887
888
        active = kwargs.get('active', '')
889
        if active:
890
            cmd.add_element('active', value)
891
892
        resource = kwargs.get('resource', '')
893
        if resource:
894
            resource_id = resource['id']
895
            resource_type = resource['type']
896
            _xmlresource = cmd.add_element('resource',
897
                                           attrs={'resource_id': resource_id})
898
            _xmlresource.add_element('type', resource_type)
899
900
        return cmd.to_string()
901
902
    def modify_target_command(self, target_id, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
903
        """Generates xml string for modify target on gvmd."""
904
        if not target_id:
905
            raise ValueError('modify_target requires a target_id element')
906
907
        cmd = XmlCommand('modify_target')
908
        cmd.set_attribute('target_id', target_id)
909
910
        comment = kwargs.get('comment', '')
911
        if comment:
912
            cmd.add_element('comment', comment)
913
914
        name = kwargs.get('name', '')
915
        if name:
916
            cmd.add_element('name', name)
917
918
        hosts = kwargs.get('hosts', '')
919
        if hosts:
920
            cmd.add_element('hosts', hosts)
921
922
        copy = kwargs.get('copy', '')
923
        if copy:
924
            cmd.add_element('copy', copy)
925
926
        exclude_hosts = kwargs.get('exclude_hosts', '')
927
        if exclude_hosts:
928
            cmd.add_element('exclude_hosts', exclude_hosts)
929
930
        alive_tests = kwargs.get('alive_tests', '')
931
        if alive_tests:
932
            cmd.add_element('alive_tests', alive_tests)
933
934
        reverse_lookup_only = kwargs.get('reverse_lookup_only', '')
935
        if reverse_lookup_only:
936
            cmd.add_element('reverse_lookup_only', reverse_lookup_only)
937
938
        reverse_lookup_unify = kwargs.get('reverse_lookup_unify', '')
939
        if reverse_lookup_unify:
940
            cmd.add_element('reverse_lookup_unify', reverse_lookup_unify)
941
942
        port_range = kwargs.get('port_range', '')
943
        if port_range:
944
            cmd.add_element('port_range', port_range)
945
946
        port_list = kwargs.get('port_list', '')
947
        if port_list:
948
            cmd.add_element('port_list', attrs={'id': str(port_list)})
949
950
        return cmd.to_string()
951
952
    def modify_task_command(self, task_id, kwargs):
0 ignored issues
show
Comprehensibility introduced by
This function exceeds the maximum number of variables (22/15).
Loading history...
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
953
        """Generates xml string for modify task on gvmd."""
954
        if not task_id:
955
            raise ValueError('modify_task requires a task_id element')
956
957
        cmd = XmlCommand('modify_task')
958
        cmd.set_attribute('task_id', task_id)
959
960
        name = kwargs.get('name', '')
961
        if name:
962
            cmd.add_element('name', name)
963
964
        comment = kwargs.get('comment', '')
965
        if comment:
966
            cmd.add_element('comment', comment)
967
968
        target_id = kwargs.get('target_id', '')
969
        if target_id:
970
            cmd.add_element('target', attrs={'id': target_id})
971
972
        scanner = kwargs.get('scanner', '')
973
        if scanner:
974
            cmd.add_element('scanner', attrs={'id': scanner})
975
976
        schedule_periods = kwargs.get('schedule_periods', '')
977
        if schedule_periods:
978
            cmd.add_element('schedule_periods', str(schedule_periods))
979
980
        schedule = kwargs.get('schedule', '')
981
        if schedule:
982
            cmd.add_element('schedule', attrs={'id': str(schedule)})
983
984
        alert = kwargs.get('alert', '')
985
        if alert:
986
            cmd.add_element('alert', attrs={'id': str(alert)})
987
988
        observers = kwargs.get('observers', '')
989
        if observers:
990
            cmd.add_element('observers', str(observers))
991
992
        preferences = kwargs.get('preferences', '')
993
        if preferences:
994
            _xmlprefs = cmd.add_element('preferences')
995
            for n in range(len(preferences["scanner_name"])):
0 ignored issues
show
Coding Style Naming introduced by
Variable name "n" doesn't conform to '[a-z_][a-z0-9_]+$' pattern ('[a-z_][a-z0-9_]+$' pattern)

This check looks for invalid names for a range of different identifiers.

You can set regular expressions to which the identifiers must conform if the defaults do not match your requirements.

If your project includes a Pylint configuration file, the settings contained in that file take precedence.

To find out more about Pylint, please refer to their site.

Loading history...
996
                preferences_scanner_name = preferences["scanner_name"][n]
997
                preferences_value = preferences["value"][n]
998
                _xmlpref = _xmlprefs.add_element('preference')
999
                _xmlpref.add_element('scanner_name', preferences_scanner_name)
1000
                _xmlpref.add_element('value', preferences_value)
1001
1002
        file = kwargs.get('file', '')
1003
        if file:
1004
            file_name = file['name']
1005
            file_action = file['action']
1006
            if file_action != "update" and file_action != "remove":
0 ignored issues
show
Unused Code introduced by
Consider merging these comparisons with "in" to "file_action not in ('update', 'remove')"
Loading history...
1007
                raise ValueError('action can only be "update" or "remove"!')
1008
            cmd.add_element('file', attrs={'name': file_name,
1009
                                           'action': file_action})
1010
1011
        return cmd.to_string()
1012
1013
    def modify_user_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1014
        """Generates xml string for modify user on gvmd."""
1015
        user_id = kwargs.get('user_id', '')
1016
        name = kwargs.get('name', '')
1017
1018
        if not user_id and not name:
1019
            raise ValueError('modify_user requires '
1020
                             'either a user_id or a name element')
1021
1022
        cmd = XmlCommand('modify_user')
1023
        cmd.set_attribute('user_id', str(user_id))
1024
1025
        new_name = kwargs.get('new_name', '')
1026
        if new_name:
1027
            cmd.add_element('new_name', new_name)
1028
1029
        password = kwargs.get('password', '')
1030
        if password:
1031
            cmd.add_element('password', password)
1032
1033
        role_ids = kwargs.get('role_ids', '')
1034
        if len(role_ids) > 0:
1035
            for role in role_ids:
1036
                cmd.add_element('role', attrs={'id': str(role)})
1037
1038
        hosts = kwargs.get('hosts', '')
1039
        hosts_allow = kwargs.get('hosts_allow', '')
1040
        if hosts or hosts_allow:
1041
            cmd.add_element('hosts', hosts, attrs={'allow': str(hosts_allow)})
1042
1043
        ifaces = kwargs.get('ifaces', '')
1044
        ifaces_allow = kwargs.get('ifaces_allow', '')
1045
        if ifaces or ifaces_allow:
1046
            cmd.add_element('ifaces', ifaces,
1047
                            attrs={'allow': str(ifaces_allow)})
1048
1049
        sources = kwargs.get('sources', '')
1050
        if sources:
1051
            cmd.add_element('sources', sources)
1052
1053
        return cmd.to_string()
1054
1055
    def delete_agent_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1056
        """Generates xml string for delete agent on gvmd"""
1057
        cmd = XmlCommand('delete_agent')
1058
        for key, value in kwargs.items():
1059
            cmd.set_attribute(key, value)
1060
1061
        return cmd.to_string()
1062
1063
    def delete_alert_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1064
        """Generates xml string for delete alert on gvmd"""
1065
        cmd = XmlCommand('delete_alert')
1066
        for key, value in kwargs.items():
1067
            cmd.set_attribute(key, value)
1068
1069
        return cmd.to_string()
1070
1071
    def delete_asset_command(self, asset_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1072
        """Generates xml string for delete asset on gvmd"""
1073
        cmd = XmlCommand('delete_asset')
1074
        cmd.set_attribute('asset_id', asset_id)
1075
        cmd.set_attribute('ultimate', ultimate)
1076
1077
        return cmd.to_string()
1078
1079
    def delete_config_command(self, config_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1080
        """Generates xml string for delete config on gvmd"""
1081
        cmd = XmlCommand('delete_config')
1082
        cmd.set_attribute('config_id', config_id)
1083
        cmd.set_attribute('ultimate', ultimate)
1084
1085
        return cmd.to_string()
1086
1087
    def delete_credential_command(self, credential_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1088
        """Generates xml string for delete credential on gvmd"""
1089
        cmd = XmlCommand('delete_credential')
1090
        cmd.set_attribute('credential_id', credential_id)
1091
        cmd.set_attribute('ultimate', ultimate)
1092
        return cmd.to_string()
1093
1094
    def delete_filter_command(self, filter_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1095
        """Generates xml string for delete filter on gvmd"""
1096
        cmd = XmlCommand('delete_filter')
1097
        cmd.set_attribute('filter_id', filter_id)
1098
        cmd.set_attribute('ultimate', ultimate)
1099
1100
        return cmd.to_string()
1101
1102
    def delete_group_command(self, group_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1103
        """Generates xml string for delete group on gvmd"""
1104
        cmd = XmlCommand('delete_group')
1105
        cmd.set_attribute('group_id', group_id)
1106
        cmd.set_attribute('ultimate', ultimate)
1107
1108
        return cmd.to_string()
1109
1110
    def delete_note_command(self, note_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1111
        """Generates xml string for delete note on gvmd"""
1112
        cmd = XmlCommand('delete_note')
1113
        cmd.set_attribute('note_id', note_id)
1114
        cmd.set_attribute('ultimate', ultimate)
1115
1116
        return cmd.to_string()
1117
1118
    def delete_override_command(self, override_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1119
        """Generates xml string for delete override on gvmd"""
1120
        cmd = XmlCommand('delete_override')
1121
        cmd.set_attribute('override_id', override_id)
1122
        cmd.set_attribute('ultimate', ultimate)
1123
1124
        return cmd.to_string()
1125
1126
    def delete_permission_command(self, permission_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1127
        """Generates xml string for delete permission on gvmd"""
1128
        cmd = XmlCommand('delete_permission')
1129
        cmd.set_attribute('permission_id', permission_id)
1130
        cmd.set_attribute('ultimate', ultimate)
1131
1132
        return cmd.to_string()
1133
1134
    def delete_port_list_command(self, port_list_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1135
        """Generates xml string for delete port on gvmd"""
1136
        cmd = XmlCommand('delete_port_list')
1137
        cmd.set_attribute('port_list_id', port_list_id)
1138
        cmd.set_attribute('ultimate', ultimate)
1139
1140
        return cmd.to_string()
1141
1142
    def delete_port_range_command(self, port_range_id):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1143
        """Generates xml string for delete port on gvmd"""
1144
        cmd = XmlCommand('delete_port_range')
1145
        cmd.set_attribute('port_range_id', port_range_id)
1146
1147
        return cmd.to_string()
1148
1149
    def delete_report_command(self, report_id):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1150
        """Generates xml string for delete report on gvmd"""
1151
        cmd = XmlCommand('delete_report')
1152
        cmd.set_attribute('report_id', report_id)
1153
1154
        return cmd.to_string()
1155
1156
    def delete_report_format_command(self, report_format_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1157
        """Generates xml string for delete report on gvmd"""
1158
        cmd = XmlCommand('delete_report_format')
1159
        cmd.set_attribute('report_format_id', report_format_id)
1160
        cmd.set_attribute('ultimate', ultimate)
1161
1162
        return cmd.to_string()
1163
1164
    def delete_role_command(self, role_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1165
        """Generates xml string for delete role on gvmd"""
1166
        cmd = XmlCommand('delete_role')
1167
        cmd.set_attribute('role_id', role_id)
1168
        cmd.set_attribute('ultimate', ultimate)
1169
1170
        return cmd.to_string()
1171
1172
    def delete_scanner_command(self, scanner_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1173
        """Generates xml string for delete scanner on gvmd"""
1174
        cmd = XmlCommand('delete_scanner')
1175
        cmd.set_attribute('scanner_id', scanner_id)
1176
        cmd.set_attribute('ultimate', ultimate)
1177
1178
        return cmd.to_string()
1179
1180
    def delete_schedule_command(self, schedule_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1181
        """Generates xml string for delete schedule on gvmd"""
1182
        # if self.ask_yes_or_no('Are you sure to delete this schedule? '):
1183
        cmd = XmlCommand('delete_schedule')
1184
        cmd.set_attribute('schedule_id', schedule_id)
1185
        cmd.set_attribute('ultimate', ultimate)
1186
1187
        return cmd.to_string()
1188
1189
    def delete_tag_command(self, tag_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1190
        """Generates xml string for delete tag on gvmd"""
1191
        cmd = XmlCommand('delete_tag')
1192
        cmd.set_attribute('tag_id', tag_id)
1193
        cmd.set_attribute('ultimate', ultimate)
1194
1195
        return cmd.to_string()
1196
1197
    def delete_target_command(self, target_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1198
        """Generates xml string for delete target on gvmd"""
1199
        cmd = XmlCommand('delete_target')
1200
        cmd.set_attribute('target_id', target_id)
1201
        cmd.set_attribute('ultimate', ultimate)
1202
1203
        return cmd.to_string()
1204
1205
    def delete_task_command(self, task_id, ultimate=0):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1206
        """Generates xml string for delete task on gvmd"""
1207
        cmd = XmlCommand('delete_task')
1208
        cmd.set_attribute('task_id', task_id)
1209
        cmd.set_attribute('ultimate', ultimate)
1210
1211
        return cmd.to_string()
1212
1213
    def delete_user_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1214
        """Generates xml string for delete user on gvmd"""
1215
        cmd = XmlCommand('delete_user')
1216
1217
        user_id = kwargs.get('user_id', '')
1218
        if user_id:
1219
            cmd.set_attribute('user_id', user_id)
1220
1221
        name = kwargs.get('name', '')
1222
        if name:
1223
            cmd.set_attribute('name', name)
1224
1225
        inheritor_id = kwargs.get('inheritor_id', '')
1226
        if inheritor_id:
1227
            cmd.set_attribute('inheritor_id', inheritor_id)
1228
1229
        inheritor_name = kwargs.get('inheritor_name', '')
1230
        if inheritor_name:
1231
            cmd.set_attribute('inheritor_name', inheritor_name)
1232
1233
        return cmd.to_string()
1234
1235
    def describe_auth_command(self):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1236
        """Generates xml string for describe auth on gvmd"""
1237
        cmd = XmlCommand('describe_auth')
1238
        return cmd.to_string()
1239
1240
    def empty_trashcan_command(self):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1241
        """Generates xml string for empty trashcan on gvmd"""
1242
        cmd = XmlCommand('empty_trashcan')
1243
        return cmd.to_string()
1244
1245
    def get_agents_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1246
        """Generates xml string for get agents on gvmd."""
1247
        cmd = XmlCommand('get_agents')
1248
        cmd.set_attributes(kwargs)
1249
        return cmd.to_string()
1250
1251
    def get_aggregates_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1252
        """Generates xml string for get aggregates on gvmd."""
1253
        cmd = XmlCommand('get_aggregates')
1254
        cmd.set_attributes(kwargs)
1255
        return cmd.to_string()
1256
1257
    def get_alerts_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1258
        """Generates xml string for get alerts on gvmd."""
1259
        cmd = XmlCommand('get_alerts')
1260
        cmd.set_attributes(kwargs)
1261
        return cmd.to_string()
1262
1263
    def get_assets_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1264
        """Generates xml string for get assets on gvmd."""
1265
        cmd = XmlCommand('get_assets')
1266
        cmd.set_attributes(kwargs)
1267
        return cmd.to_string()
1268
1269
    def get_credentials_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1270
        """Generates xml string for get credentials on gvmd."""
1271
        cmd = XmlCommand('get_credentials')
1272
        cmd.set_attributes(kwargs)
1273
        return cmd.to_string()
1274
1275
    def get_configs_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1276
        """Generates xml string for get configs on gvmd."""
1277
        cmd = XmlCommand('get_configs')
1278
        cmd.set_attributes(kwargs)
1279
        return cmd.to_string()
1280
1281
    def get_feeds_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1282
        """Generates xml string for get feeds on gvmd."""
1283
        cmd = XmlCommand('get_feeds')
1284
        cmd.set_attributes(kwargs)
1285
        return cmd.to_string()
1286
1287
    def get_filters_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1288
        """Generates xml string for get filters on gvmd."""
1289
        cmd = XmlCommand('get_filters')
1290
        cmd.set_attributes(kwargs)
1291
        return cmd.to_string()
1292
1293
    def get_groups_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1294
        """Generates xml string for get groups on gvmd."""
1295
        cmd = XmlCommand('get_groups')
1296
        cmd.set_attributes(kwargs)
1297
        return cmd.to_string()
1298
1299
    def get_info_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1300
        """Generates xml string for get info on gvmd."""
1301
        cmd = XmlCommand('get_info')
1302
        cmd.set_attributes(kwargs)
1303
        return cmd.to_string()
1304
1305
    def get_notes_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1306
        """Generates xml string for get notes on gvmd."""
1307
        cmd = XmlCommand('get_notes')
1308
        cmd.set_attributes(kwargs)
1309
        return cmd.to_string()
1310
1311
    def get_nvts_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1312
        """Generates xml string for get nvts on gvmd."""
1313
        cmd = XmlCommand('get_nvts')
1314
        cmd.set_attributes(kwargs)
1315
        return cmd.to_string()
1316
1317
    def get_nvt_families_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1318
        """Generates xml string for get nvt on gvmd."""
1319
        cmd = XmlCommand('get_nvt_families')
1320
        cmd.set_attributes(kwargs)
1321
        return cmd.to_string()
1322
1323
    def get_overrides_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1324
        """Generates xml string for get overrides on gvmd."""
1325
        cmd = XmlCommand('get_overrides')
1326
        cmd.set_attributes(kwargs)
1327
        return cmd.to_string()
1328
1329
    def get_permissions_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1330
        """Generates xml string for get permissions on gvmd."""
1331
        cmd = XmlCommand('get_permissions')
1332
        cmd.set_attributes(kwargs)
1333
        return cmd.to_string()
1334
1335
    def get_port_lists_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1336
        """Generates xml string for get port on gvmd."""
1337
        cmd = XmlCommand('get_port_lists')
1338
        cmd.set_attributes(kwargs)
1339
        return cmd.to_string()
1340
1341
    def get_preferences_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1342
        """Generates xml string for get preferences on gvmd."""
1343
        cmd = XmlCommand('get_preferences')
1344
        cmd.set_attributes(kwargs)
1345
        return cmd.to_string()
1346
1347
    def get_reports_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1348
        """Generates xml string for get reports on gvmd."""
1349
        cmd = XmlCommand('get_reports')
1350
        cmd.set_attributes(kwargs)
1351
        return cmd.to_string()
1352
1353
    def get_report_formats_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1354
        """Generates xml string for get report on gvmd."""
1355
        cmd = XmlCommand('get_report_formats')
1356
        cmd.set_attributes(kwargs)
1357
        return cmd.to_string()
1358
1359
    def get_results_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1360
        """Generates xml string for get results on gvmd."""
1361
        cmd = XmlCommand('get_results')
1362
        cmd.set_attributes(kwargs)
1363
        return cmd.to_string()
1364
1365
    def get_roles_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1366
        """Generates xml string for get roles on gvmd."""
1367
        cmd = XmlCommand('get_roles')
1368
        cmd.set_attributes(kwargs)
1369
        return cmd.to_string()
1370
1371
    def get_scanners_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1372
        """Generates xml string for get scanners on gvmd."""
1373
        cmd = XmlCommand('get_scanners')
1374
        cmd.set_attributes(kwargs)
1375
        return cmd.to_string()
1376
1377
    def get_schedules_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1378
        """Generates xml string for get schedules on gvmd."""
1379
        cmd = XmlCommand('get_schedules')
1380
        cmd.set_attributes(kwargs)
1381
        return cmd.to_string()
1382
1383
    def get_settings_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1384
        """Generates xml string for get settings on gvmd."""
1385
        cmd = XmlCommand('get_settings')
1386
        cmd.set_attributes(kwargs)
1387
        return cmd.to_string()
1388
1389
    def get_system_reports_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1390
        """Generates xml string for get system on gvmd."""
1391
        cmd = XmlCommand('get_system')
1392
        cmd.set_attributes(kwargs)
1393
        return cmd.to_string()
1394
1395
    def get_tags_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1396
        """Generates xml string for get tags on gvmd."""
1397
        cmd = XmlCommand('get_tags')
1398
        cmd.set_attributes(kwargs)
1399
        return cmd.to_string()
1400
1401
    def get_targets_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1402
        """Generates xml string for get targets on gvmd."""
1403
        cmd = XmlCommand('get_targets')
1404
        cmd.set_attributes(kwargs)
1405
        return cmd.to_string()
1406
1407
    def get_tasks_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1408
        """Generates xml string for get tasks on gvmd."""
1409
        cmd = XmlCommand('get_tasks')
1410
        cmd.set_attributes(kwargs)
1411
        return cmd.to_string()
1412
1413
    def get_users_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1414
        """Generates xml string for get users on gvmd."""
1415
        cmd = XmlCommand('get_users')
1416
        cmd.set_attributes(kwargs)
1417
        return cmd.to_string()
1418
1419
    def get_version_command(self):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1420
        """Generates xml string for get version on gvmd."""
1421
        cmd = XmlCommand('get_version')
1422
        return cmd.to_string()
1423
1424
    def help_command(self, kwargs):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1425
        """Generates xml string for help on gvmd."""
1426
        cmd = XmlCommand('help')
1427
        cmd.set_attributes(kwargs)
1428
        return cmd.to_string()
1429
1430
    def move_task_command(self, task_id, slave_id):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1431
        """Generates xml string for move task on gvmd."""
1432
        cmd = XmlCommand('move_task')
1433
        cmd.set_attribute('task_id', task_id)
1434
        cmd.set_attribute('slave_id', slave_id)
1435
        return cmd.to_string()
1436
1437
    def restore_command(self, entity_id):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1438
        """Generates xml string for restore on gvmd."""
1439
        cmd = XmlCommand('restore')
1440
        cmd.set_attribute('id', entity_id)
1441
        return cmd.to_string()
1442
1443
    def resume_task_command(self, task_id):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1444
        """Generates xml string for resume task on gvmd."""
1445
        cmd = XmlCommand('resume_task')
1446
        cmd.set_attribute('task_id', task_id)
1447
        return cmd.to_string()
1448
1449
    def start_task_command(self, task_id):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1450
        """Generates xml string for start task on gvmd."""
1451
        cmd = XmlCommand('start_task')
1452
        cmd.set_attribute('task_id', task_id)
1453
        return cmd.to_string()
1454
1455
    def stop_task_command(self, task_id):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1456
        """Generates xml string for stop task on gvmd."""
1457
        cmd = XmlCommand('stop_task')
1458
        cmd.set_attribute('task_id', task_id)
1459
        return cmd.to_string()
1460
1461
    def sync_cert_command(self):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1462
        """Generates xml string for sync cert on gvmd."""
1463
        cmd = XmlCommand('sync_cert')
1464
        return cmd.to_string()
1465
1466
    def sync_config_command(self):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1467
        """Generates xml string for sync config on gvmd."""
1468
        cmd = XmlCommand('sync_config')
1469
        return cmd.to_string()
1470
1471
    def sync_feed_command(self):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1472
        """Generates xml string for sync feed on gvmd."""
1473
        cmd = XmlCommand('sync_feed')
1474
        return cmd.to_string()
1475
1476
    def sync_scap_command(self):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1477
        """Generates xml string for sync scap on gvmd."""
1478
        cmd = XmlCommand('sync_scap')
1479
        return cmd.to_string()
1480
1481
    def test_alert_command(self, alert_id):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1482
        """Generates xml string for test alert on gvmd."""
1483
        cmd = XmlCommand('test_alert')
1484
        cmd.set_attribute('alert_id', alert_id)
1485
        return cmd.to_string()
1486
1487
    def verify_agent_command(self, agent_id):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1488
        """Generates xml string for verify agent on gvmd."""
1489
        cmd = XmlCommand('verify_agent')
1490
        cmd.set_attribute('agent_id', agent_id)
1491
        return cmd.to_string()
1492
1493
    def verify_report_format_command(self, report_format_id):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1494
        """Generates xml string for verify report format on gvmd."""
1495
        cmd = XmlCommand('verify_report_format')
1496
        cmd.set_attribute('report_format_id', report_format_id)
1497
        return cmd.to_string()
1498
1499
    def verify_scanner_command(self, scanner_id):
0 ignored issues
show
Coding Style introduced by
This method could be written as a function/class method.

If a method does not access any attributes of the class, it could also be implemented as a function or static method. This can help improve readability. For example

class Foo:
    def some_method(self, x, y):
        return x + y;

could be written as

class Foo:
    @classmethod
    def some_method(cls, x, y):
        return x + y;
Loading history...
1500
        """Generates xml string for verify scanner on gvmd."""
1501
        cmd = XmlCommand('verify_scanner')
1502
        cmd.set_attribute('scanner_id', scanner_id)
1503
        return cmd.to_string()
1504
1505
1506
def pretty_print(xml):
1507
    """Prints beautiful XML-Code
1508
1509
    This function gets an object of list<lxml.etree._Element>
1510
    or directly a lxml element.
1511
    Print it with good readable format.
1512
1513
    Arguments:
1514
        xml: List<lxml.etree.Element> or directly a lxml element
1515
    """
1516
    if isinstance(xml, list):
1517
        for item in xml:
1518
            if etree.iselement(item):
1519
                print(etree.tostring(item, pretty_print=True).decode('utf-8'))
1520
            else:
1521
                print(item)
1522
    elif etree.iselement(xml):
1523
        print(etree.tostring(xml, pretty_print=True).decode('utf-8'))
1524