@@ 6881-7006 (lines=126) @@ | ||
6878 | ||
6879 | return self._send_xml_command(cmd) |
|
6880 | ||
6881 | def modify_task( |
|
6882 | self, |
|
6883 | task_id: str, |
|
6884 | *, |
|
6885 | name: Optional[str] = None, |
|
6886 | config_id: Optional[str] = None, |
|
6887 | target_id: Optional[str] = None, |
|
6888 | scanner_id: Optional[str] = None, |
|
6889 | alterable: Optional[bool] = None, |
|
6890 | hosts_ordering: Optional[HostsOrdering] = None, |
|
6891 | schedule_id: Optional[str] = None, |
|
6892 | schedule_periods: Optional[int] = None, |
|
6893 | comment: Optional[str] = None, |
|
6894 | alert_ids: Optional[List[str]] = None, |
|
6895 | observers: Optional[List[str]] = None, |
|
6896 | preferences: Optional[dict] = None, |
|
6897 | ) -> Any: |
|
6898 | """Modifies an existing task. |
|
6899 | ||
6900 | Arguments: |
|
6901 | task_id: UUID of task to modify. |
|
6902 | name: The name of the task. |
|
6903 | config_id: UUID of scan config to use by the task |
|
6904 | target_id: UUID of target to be scanned |
|
6905 | scanner_id: UUID of scanner to use for scanning the target |
|
6906 | comment: The comment on the task. |
|
6907 | alert_ids: List of UUIDs for alerts to be applied to the task |
|
6908 | hosts_ordering: The order hosts are scanned in |
|
6909 | schedule_id: UUID of a schedule when the task should be run. |
|
6910 | schedule_periods: A limit to the number of times the task will be |
|
6911 | scheduled, or 0 for no limit. |
|
6912 | observers: List of names or ids of users which should be allowed to |
|
6913 | observe this task |
|
6914 | preferences: Name/Value pairs of scanner preferences. |
|
6915 | ||
6916 | Returns: |
|
6917 | The response. See :py:meth:`send_command` for details. |
|
6918 | """ |
|
6919 | if not task_id: |
|
6920 | raise RequiredArgument( |
|
6921 | function=self.modify_task.__name__, argument='task_id argument' |
|
6922 | ) |
|
6923 | ||
6924 | cmd = XmlCommand("modify_task") |
|
6925 | cmd.set_attribute("task_id", task_id) |
|
6926 | ||
6927 | if name: |
|
6928 | cmd.add_element("name", name) |
|
6929 | ||
6930 | if comment: |
|
6931 | cmd.add_element("comment", comment) |
|
6932 | ||
6933 | if config_id: |
|
6934 | cmd.add_element("config", attrs={"id": config_id}) |
|
6935 | ||
6936 | if target_id: |
|
6937 | cmd.add_element("target", attrs={"id": target_id}) |
|
6938 | ||
6939 | if alterable is not None: |
|
6940 | cmd.add_element("alterable", _to_bool(alterable)) |
|
6941 | ||
6942 | if hosts_ordering: |
|
6943 | if not isinstance(hosts_ordering, HostsOrdering): |
|
6944 | raise InvalidArgumentType( |
|
6945 | function=self.modify_task.__name__, |
|
6946 | argument='hosts_ordering', |
|
6947 | arg_type=HostsOrdering.__name__, |
|
6948 | ) |
|
6949 | cmd.add_element("hosts_ordering", hosts_ordering.value) |
|
6950 | ||
6951 | if scanner_id: |
|
6952 | cmd.add_element("scanner", attrs={"id": scanner_id}) |
|
6953 | ||
6954 | if schedule_id: |
|
6955 | cmd.add_element("schedule", attrs={"id": schedule_id}) |
|
6956 | ||
6957 | if schedule_periods is not None: |
|
6958 | if ( |
|
6959 | not isinstance(schedule_periods, numbers.Integral) |
|
6960 | or schedule_periods < 0 |
|
6961 | ): |
|
6962 | raise InvalidArgument( |
|
6963 | "schedule_periods must be an integer greater or equal " |
|
6964 | "than 0" |
|
6965 | ) |
|
6966 | cmd.add_element("schedule_periods", str(schedule_periods)) |
|
6967 | ||
6968 | if alert_ids is not None: |
|
6969 | if not _is_list_like(alert_ids): |
|
6970 | raise InvalidArgumentType( |
|
6971 | function=self.modify_task.__name__, |
|
6972 | argument='alert_ids', |
|
6973 | arg_type='list', |
|
6974 | ) |
|
6975 | ||
6976 | if len(alert_ids) == 0: |
|
6977 | cmd.add_element("alert", attrs={"id": "0"}) |
|
6978 | else: |
|
6979 | for alert in alert_ids: |
|
6980 | cmd.add_element("alert", attrs={"id": str(alert)}) |
|
6981 | ||
6982 | if observers is not None: |
|
6983 | if not _is_list_like(observers): |
|
6984 | raise InvalidArgumentType( |
|
6985 | function=self.modify_task.__name__, |
|
6986 | argument='observers', |
|
6987 | arg_type='list', |
|
6988 | ) |
|
6989 | ||
6990 | cmd.add_element("observers", _to_comma_list(observers)) |
|
6991 | ||
6992 | if preferences is not None: |
|
6993 | if not isinstance(preferences, collections.abc.Mapping): |
|
6994 | raise InvalidArgumentType( |
|
6995 | function=self.modify_task.__name__, |
|
6996 | argument='preferences', |
|
6997 | arg_type=collections.abc.Mapping.__name__, |
|
6998 | ) |
|
6999 | ||
7000 | _xmlprefs = cmd.add_element("preferences") |
|
7001 | for pref_name, pref_value in preferences.items(): |
|
7002 | _xmlpref = _xmlprefs.add_element("preference") |
|
7003 | _xmlpref.add_element("scanner_name", pref_name) |
|
7004 | _xmlpref.add_element("value", str(pref_value)) |
|
7005 | ||
7006 | return self._send_xml_command(cmd) |
|
7007 | ||
7008 | def modify_user( |
|
7009 | self, |
@@ 5952-6077 (lines=126) @@ | ||
5949 | ||
5950 | return self._send_xml_command(cmd) |
|
5951 | ||
5952 | def modify_task( |
|
5953 | self, |
|
5954 | task_id: str, |
|
5955 | *, |
|
5956 | name: Optional[str] = None, |
|
5957 | config_id: Optional[str] = None, |
|
5958 | target_id: Optional[str] = None, |
|
5959 | scanner_id: Optional[str] = None, |
|
5960 | alterable: Optional[bool] = None, |
|
5961 | hosts_ordering: Optional[HostsOrdering] = None, |
|
5962 | schedule_id: Optional[str] = None, |
|
5963 | schedule_periods: Optional[int] = None, |
|
5964 | comment: Optional[str] = None, |
|
5965 | alert_ids: Optional[List[str]] = None, |
|
5966 | observers: Optional[List[str]] = None, |
|
5967 | preferences: Optional[dict] = None, |
|
5968 | ) -> Any: |
|
5969 | """Modifies an existing task. |
|
5970 | ||
5971 | Arguments: |
|
5972 | task_id: UUID of task to modify. |
|
5973 | name: The name of the task. |
|
5974 | config_id: UUID of scan config to use by the task |
|
5975 | target_id: UUID of target to be scanned |
|
5976 | scanner_id: UUID of scanner to use for scanning the target |
|
5977 | comment: The comment on the task. |
|
5978 | alert_ids: List of UUIDs for alerts to be applied to the task |
|
5979 | hosts_ordering: The order hosts are scanned in |
|
5980 | schedule_id: UUID of a schedule when the task should be run. |
|
5981 | schedule_periods: A limit to the number of times the task will be |
|
5982 | scheduled, or 0 for no limit. |
|
5983 | observers: List of names or ids of users which should be allowed to |
|
5984 | observe this task |
|
5985 | preferences: Name/Value pairs of scanner preferences. |
|
5986 | ||
5987 | Returns: |
|
5988 | The response. See :py:meth:`send_command` for details. |
|
5989 | """ |
|
5990 | if not task_id: |
|
5991 | raise RequiredArgument( |
|
5992 | function=self.modify_task.__name__, argument='task_id argument' |
|
5993 | ) |
|
5994 | ||
5995 | cmd = XmlCommand("modify_task") |
|
5996 | cmd.set_attribute("task_id", task_id) |
|
5997 | ||
5998 | if name: |
|
5999 | cmd.add_element("name", name) |
|
6000 | ||
6001 | if comment: |
|
6002 | cmd.add_element("comment", comment) |
|
6003 | ||
6004 | if config_id: |
|
6005 | cmd.add_element("config", attrs={"id": config_id}) |
|
6006 | ||
6007 | if target_id: |
|
6008 | cmd.add_element("target", attrs={"id": target_id}) |
|
6009 | ||
6010 | if alterable is not None: |
|
6011 | cmd.add_element("alterable", _to_bool(alterable)) |
|
6012 | ||
6013 | if hosts_ordering: |
|
6014 | if not isinstance(hosts_ordering, HostsOrdering): |
|
6015 | raise InvalidArgumentType( |
|
6016 | function=self.modify_task.__name__, |
|
6017 | argument='hosts_ordering', |
|
6018 | arg_type=HostsOrdering.__name__, |
|
6019 | ) |
|
6020 | cmd.add_element("hosts_ordering", hosts_ordering.value) |
|
6021 | ||
6022 | if scanner_id: |
|
6023 | cmd.add_element("scanner", attrs={"id": scanner_id}) |
|
6024 | ||
6025 | if schedule_id: |
|
6026 | cmd.add_element("schedule", attrs={"id": schedule_id}) |
|
6027 | ||
6028 | if schedule_periods is not None: |
|
6029 | if ( |
|
6030 | not isinstance(schedule_periods, numbers.Integral) |
|
6031 | or schedule_periods < 0 |
|
6032 | ): |
|
6033 | raise InvalidArgument( |
|
6034 | "schedule_periods must be an integer greater or equal " |
|
6035 | "than 0" |
|
6036 | ) |
|
6037 | cmd.add_element("schedule_periods", str(schedule_periods)) |
|
6038 | ||
6039 | if alert_ids is not None: |
|
6040 | if not _is_list_like(alert_ids): |
|
6041 | raise InvalidArgumentType( |
|
6042 | function=self.modify_task.__name__, |
|
6043 | argument='alert_ids', |
|
6044 | arg_type='list', |
|
6045 | ) |
|
6046 | ||
6047 | if len(alert_ids) == 0: |
|
6048 | cmd.add_element("alert", attrs={"id": "0"}) |
|
6049 | else: |
|
6050 | for alert in alert_ids: |
|
6051 | cmd.add_element("alert", attrs={"id": str(alert)}) |
|
6052 | ||
6053 | if observers is not None: |
|
6054 | if not _is_list_like(observers): |
|
6055 | raise InvalidArgumentType( |
|
6056 | function=self.modify_task.__name__, |
|
6057 | argument='observers', |
|
6058 | arg_type='list', |
|
6059 | ) |
|
6060 | ||
6061 | cmd.add_element("observers", _to_comma_list(observers)) |
|
6062 | ||
6063 | if preferences is not None: |
|
6064 | if not isinstance(preferences, collections.abc.Mapping): |
|
6065 | raise InvalidArgumentType( |
|
6066 | function=self.modify_task.__name__, |
|
6067 | argument='preferences', |
|
6068 | arg_type=collections.abc.Mapping.__name__, |
|
6069 | ) |
|
6070 | ||
6071 | _xmlprefs = cmd.add_element("preferences") |
|
6072 | for pref_name, pref_value in preferences.items(): |
|
6073 | _xmlpref = _xmlprefs.add_element("preference") |
|
6074 | _xmlpref.add_element("scanner_name", pref_name) |
|
6075 | _xmlpref.add_element("value", str(pref_value)) |
|
6076 | ||
6077 | return self._send_xml_command(cmd) |
|
6078 | ||
6079 | def modify_user( |
|
6080 | self, |