Code Duplication    Length = 107-107 lines in 2 locations

gvm/protocols/gmpv9/gmpv9.py 1 location

@@ 500-606 (lines=107) @@
497
        cmd.set_attribute("include_certificate_data", "1")
498
        return self._send_xml_command(cmd)
499
500
    def modify_alert(
501
        self,
502
        alert_id: str,
503
        *,
504
        name: Optional[str] = None,
505
        comment: Optional[str] = None,
506
        filter_id: Optional[str] = None,
507
        event: Optional[AlertEvent] = None,
508
        event_data: Optional[dict] = None,
509
        condition: Optional[AlertCondition] = None,
510
        condition_data: Optional[dict] = None,
511
        method: Optional[AlertMethod] = None,
512
        method_data: Optional[dict] = None
513
    ) -> Any:
514
        """Modifies an existing alert.
515
516
        Arguments:
517
            alert_id: UUID of the alert to be modified.
518
            name: Name of the Alert.
519
            condition: The condition that must be satisfied for the alert to
520
                occur. If the event is either 'Updated SecInfo
521
                arrived' or 'New SecInfo arrived', condition must be 'Always'.
522
                Otherwise, condition can also be on of 'Severity at least',
523
                'Filter count changed' or 'Filter count at least'.
524
            condition_data: Data that defines the condition
525
            event: The event that must happen for the alert to occur, one of
526
                'Task run status changed', 'Updated SecInfo arrived' or
527
                'New SecInfo arrived'
528
            event_data: Data that defines the event
529
            method: The method by which the user is alerted, one of 'SCP',
530
                'Send', 'SMB', 'SNMP', 'Syslog' or 'Email';
531
                if the event is neither 'Updated SecInfo arrived' nor
532
                'New SecInfo arrived', method can also be one of 'Start Task',
533
                'HTTP Get', 'Sourcefire Connector' or 'verinice Connector'.
534
            method_data: Data that defines the method
535
            filter_id: Filter to apply when executing alert
536
            comment: Comment for the alert
537
538
        Returns:
539
            The response. See :py:meth:`send_command` for details.
540
        """
541
542
        if not alert_id:
543
            raise RequiredArgument(
544
                function=self.modify_alert.__name__, argument='alert_id'
545
            )
546
547
        cmd = XmlCommand("modify_alert")
548
        cmd.set_attribute("alert_id", str(alert_id))
549
550
        if name:
551
            cmd.add_element("name", name)
552
553
        if comment:
554
            cmd.add_element("comment", comment)
555
556
        if filter_id:
557
            cmd.add_element("filter", attrs={"id": filter_id})
558
559
        if condition:
560
            if not isinstance(condition, AlertCondition):
561
                raise InvalidArgumentType(
562
                    function=self.modify_alert.__name__,
563
                    argument='condition',
564
                    arg_type=AlertCondition.__name__,
565
                )
566
567
            conditions = cmd.add_element("condition", condition.value)
568
569
            if condition_data is not None:
570
                for key, value in condition_data.items():
571
                    _data = conditions.add_element("data", value)
572
                    _data.add_element("name", key)
573
574
        if method:
575
            if not isinstance(method, AlertMethod):
576
                raise InvalidArgumentType(
577
                    function=self.modify_alert.__name__,
578
                    argument='method',
579
                    arg_type=AlertMethod.__name__,
580
                )
581
582
            methods = cmd.add_element("method", method.value)
583
584
            if method_data is not None:
585
                for key, value in method_data.items():
586
                    _data = methods.add_element("data", value)
587
                    _data.add_element("name", key)
588
589
        if event:
590
            if not isinstance(event, AlertEvent):
591
                raise InvalidArgumentType(
592
                    function=self.modify_alert.__name__,
593
                    argument='event',
594
                    arg_type=AlertEvent.__name__,
595
                )
596
597
            _check_event(event, condition, method)
598
599
            events = cmd.add_element("event", event.value)
600
601
            if event_data is not None:
602
                for key, value in event_data.items():
603
                    _data = events.add_element("data", value)
604
                    _data.add_element("name", key)
605
606
        return self._send_xml_command(cmd)
607
608
    def modify_tls_certificate(
609
        self,

gvm/protocols/gmpv7/gmpv7.py 1 location

@@ 4349-4455 (lines=107) @@
4346
4347
        return self._send_xml_command(cmd)
4348
4349
    def modify_alert(
4350
        self,
4351
        alert_id: str,
4352
        *,
4353
        name: Optional[str] = None,
4354
        comment: Optional[str] = None,
4355
        filter_id: Optional[str] = None,
4356
        event: Optional[AlertEvent] = None,
4357
        event_data: Optional[dict] = None,
4358
        condition: Optional[AlertCondition] = None,
4359
        condition_data: Optional[dict] = None,
4360
        method: Optional[AlertMethod] = None,
4361
        method_data: Optional[dict] = None
4362
    ) -> Any:
4363
        """Modifies an existing alert.
4364
4365
        Arguments:
4366
            alert_id: UUID of the alert to be modified.
4367
            name: Name of the Alert.
4368
            condition: The condition that must be satisfied for the alert to
4369
                occur. If the event is either 'Updated SecInfo
4370
                arrived' or 'New SecInfo arrived', condition must be 'Always'.
4371
                Otherwise, condition can also be on of 'Severity at least',
4372
                'Filter count changed' or 'Filter count at least'.
4373
            condition_data: Data that defines the condition
4374
            event: The event that must happen for the alert to occur, one of
4375
                'Task run status changed', 'Updated SecInfo arrived' or
4376
                'New SecInfo arrived'
4377
            event_data: Data that defines the event
4378
            method: The method by which the user is alerted, one of 'SCP',
4379
                'Send', 'SMB', 'SNMP', 'Syslog' or 'Email';
4380
                if the event is neither 'Updated SecInfo arrived' nor
4381
                'New SecInfo arrived', method can also be one of 'Start Task',
4382
                'HTTP Get', 'Sourcefire Connector' or 'verinice Connector'.
4383
            method_data: Data that defines the method
4384
            filter_id: Filter to apply when executing alert
4385
            comment: Comment for the alert
4386
4387
        Returns:
4388
            The response. See :py:meth:`send_command` for details.
4389
        """
4390
4391
        if not alert_id:
4392
            raise RequiredArgument(
4393
                function=self.modify_alert.__name__, argument='alert_id'
4394
            )
4395
4396
        cmd = XmlCommand("modify_alert")
4397
        cmd.set_attribute("alert_id", str(alert_id))
4398
4399
        if name:
4400
            cmd.add_element("name", name)
4401
4402
        if comment:
4403
            cmd.add_element("comment", comment)
4404
4405
        if filter_id:
4406
            cmd.add_element("filter", attrs={"id": filter_id})
4407
4408
        if condition:
4409
            if not isinstance(condition, AlertCondition):
4410
                raise InvalidArgumentType(
4411
                    function=self.modify_alert.__name__,
4412
                    argument='condition',
4413
                    arg_type=AlertCondition.__name__,
4414
                )
4415
4416
            conditions = cmd.add_element("condition", condition.value)
4417
4418
            if condition_data is not None:
4419
                for key, value in condition_data.items():
4420
                    _data = conditions.add_element("data", value)
4421
                    _data.add_element("name", key)
4422
4423
        if method:
4424
            if not isinstance(method, AlertMethod):
4425
                raise InvalidArgumentType(
4426
                    function=self.modify_alert.__name__,
4427
                    argument='method',
4428
                    arg_type=AlertMethod.__name__,
4429
                )
4430
4431
            methods = cmd.add_element("method", method.value)
4432
4433
            if method_data is not None:
4434
                for key, value in method_data.items():
4435
                    _data = methods.add_element("data", value)
4436
                    _data.add_element("name", key)
4437
4438
        if event:
4439
            if not isinstance(event, AlertEvent):
4440
                raise InvalidArgumentType(
4441
                    function=self.modify_alert.__name__,
4442
                    argument='event',
4443
                    arg_type=AlertEvent.__name__,
4444
                )
4445
4446
            _check_event(event, condition, method)
4447
4448
            events = cmd.add_element("event", event.value)
4449
4450
            if event_data is not None:
4451
                for key, value in event_data.items():
4452
                    _data = events.add_element("data", value)
4453
                    _data.add_element("name", key)
4454
4455
        return self._send_xml_command(cmd)
4456
4457
    def modify_asset(self, asset_id: str, comment: Optional[str] = "") -> Any:
4458
        """Modifies an existing asset.