| @@ 499-581 (lines=83) @@ | ||
| 496 | function=self.create_config.__name__, |
|
| 497 | ) |
|
| 498 | ||
| 499 | def create_permission( |
|
| 500 | self, |
|
| 501 | name: str, |
|
| 502 | subject_id: str, |
|
| 503 | subject_type: PermissionSubjectType, |
|
| 504 | *, |
|
| 505 | resource_id: Optional[str] = None, |
|
| 506 | resource_type: Optional[EntityType] = None, |
|
| 507 | comment: Optional[str] = None, |
|
| 508 | ) -> Any: |
|
| 509 | """Create a new permission |
|
| 510 | ||
| 511 | Arguments: |
|
| 512 | name: Name of the new permission |
|
| 513 | subject_id: UUID of subject to whom the permission is granted |
|
| 514 | subject_type: Type of the subject user, group or role |
|
| 515 | comment: Comment for the permission |
|
| 516 | resource_id: UUID of entity to which the permission applies |
|
| 517 | resource_type: Type of the resource. For Super permissions user, |
|
| 518 | group or role |
|
| 519 | ||
| 520 | Returns: |
|
| 521 | The response. See :py:meth:`send_command` for details. |
|
| 522 | """ |
|
| 523 | if not name: |
|
| 524 | raise RequiredArgument( |
|
| 525 | function=self.create_permission.__name__, argument='name' |
|
| 526 | ) |
|
| 527 | ||
| 528 | if not subject_id: |
|
| 529 | raise RequiredArgument( |
|
| 530 | function=self.create_permission.__name__, argument='subject_id' |
|
| 531 | ) |
|
| 532 | ||
| 533 | if not isinstance(subject_type, PermissionSubjectType): |
|
| 534 | raise InvalidArgumentType( |
|
| 535 | function=self.create_permission.__name__, |
|
| 536 | argument='subject_type', |
|
| 537 | arg_type=PermissionSubjectType.__name__, |
|
| 538 | ) |
|
| 539 | ||
| 540 | cmd = XmlCommand("create_permission") |
|
| 541 | cmd.add_element("name", name) |
|
| 542 | ||
| 543 | _xmlsubject = cmd.add_element("subject", attrs={"id": subject_id}) |
|
| 544 | _xmlsubject.add_element("type", subject_type.value) |
|
| 545 | ||
| 546 | if comment: |
|
| 547 | cmd.add_element("comment", comment) |
|
| 548 | ||
| 549 | if resource_id or resource_type: |
|
| 550 | if not resource_id: |
|
| 551 | raise RequiredArgument( |
|
| 552 | function=self.create_permission.__name__, |
|
| 553 | argument='resource_id', |
|
| 554 | ) |
|
| 555 | ||
| 556 | if not resource_type: |
|
| 557 | raise RequiredArgument( |
|
| 558 | function=self.create_permission.__name__, |
|
| 559 | argument='resource_type', |
|
| 560 | ) |
|
| 561 | ||
| 562 | if not isinstance(resource_type, self.types.EntityType): |
|
| 563 | raise InvalidArgumentType( |
|
| 564 | function=self.create_permission.__name__, |
|
| 565 | argument='resource_type', |
|
| 566 | arg_type=self.types.EntityType.__name__, |
|
| 567 | ) |
|
| 568 | ||
| 569 | _xmlresource = cmd.add_element( |
|
| 570 | "resource", attrs={"id": resource_id} |
|
| 571 | ) |
|
| 572 | ||
| 573 | _actual_resource_type = resource_type |
|
| 574 | if resource_type.value == EntityType.AUDIT.value: |
|
| 575 | _actual_resource_type = EntityType.TASK |
|
| 576 | elif resource_type.value == EntityType.POLICY.value: |
|
| 577 | _actual_resource_type = EntityType.SCAN_CONFIG |
|
| 578 | ||
| 579 | _xmlresource.add_element("type", _actual_resource_type.value) |
|
| 580 | ||
| 581 | return self._send_xml_command(cmd) |
|
| 582 | ||
| 583 | def create_policy( |
|
| 584 | self, name: str, *, policy_id: str = None, comment: Optional[str] = None |
|
| @@ 372-454 (lines=83) @@ | ||
| 369 | function=self.create_config.__name__, |
|
| 370 | ) |
|
| 371 | ||
| 372 | def create_permission( |
|
| 373 | self, |
|
| 374 | name: str, |
|
| 375 | subject_id: str, |
|
| 376 | subject_type: PermissionSubjectType, |
|
| 377 | *, |
|
| 378 | resource_id: Optional[str] = None, |
|
| 379 | resource_type: Optional[EntityType] = None, |
|
| 380 | comment: Optional[str] = None, |
|
| 381 | ) -> Any: |
|
| 382 | """Create a new permission |
|
| 383 | ||
| 384 | Arguments: |
|
| 385 | name: Name of the new permission |
|
| 386 | subject_id: UUID of subject to whom the permission is granted |
|
| 387 | subject_type: Type of the subject user, group or role |
|
| 388 | comment: Comment for the permission |
|
| 389 | resource_id: UUID of entity to which the permission applies |
|
| 390 | resource_type: Type of the resource. For Super permissions user, |
|
| 391 | group or role |
|
| 392 | ||
| 393 | Returns: |
|
| 394 | The response. See :py:meth:`send_command` for details. |
|
| 395 | """ |
|
| 396 | if not name: |
|
| 397 | raise RequiredArgument( |
|
| 398 | function=self.create_permission.__name__, argument='name' |
|
| 399 | ) |
|
| 400 | ||
| 401 | if not subject_id: |
|
| 402 | raise RequiredArgument( |
|
| 403 | function=self.create_permission.__name__, argument='subject_id' |
|
| 404 | ) |
|
| 405 | ||
| 406 | if not isinstance(subject_type, PermissionSubjectType): |
|
| 407 | raise InvalidArgumentType( |
|
| 408 | function=self.create_permission.__name__, |
|
| 409 | argument='subject_type', |
|
| 410 | arg_type=PermissionSubjectType.__name__, |
|
| 411 | ) |
|
| 412 | ||
| 413 | cmd = XmlCommand("create_permission") |
|
| 414 | cmd.add_element("name", name) |
|
| 415 | ||
| 416 | _xmlsubject = cmd.add_element("subject", attrs={"id": subject_id}) |
|
| 417 | _xmlsubject.add_element("type", subject_type.value) |
|
| 418 | ||
| 419 | if comment: |
|
| 420 | cmd.add_element("comment", comment) |
|
| 421 | ||
| 422 | if resource_id or resource_type: |
|
| 423 | if not resource_id: |
|
| 424 | raise RequiredArgument( |
|
| 425 | function=self.create_permission.__name__, |
|
| 426 | argument='resource_id', |
|
| 427 | ) |
|
| 428 | ||
| 429 | if not resource_type: |
|
| 430 | raise RequiredArgument( |
|
| 431 | function=self.create_permission.__name__, |
|
| 432 | argument='resource_type', |
|
| 433 | ) |
|
| 434 | ||
| 435 | if not isinstance(resource_type, self.types.EntityType): |
|
| 436 | raise InvalidArgumentType( |
|
| 437 | function=self.create_permission.__name__, |
|
| 438 | argument='resource_type', |
|
| 439 | arg_type=self.types.EntityType.__name__, |
|
| 440 | ) |
|
| 441 | ||
| 442 | _xmlresource = cmd.add_element( |
|
| 443 | "resource", attrs={"id": resource_id} |
|
| 444 | ) |
|
| 445 | ||
| 446 | _actual_resource_type = resource_type |
|
| 447 | if resource_type.value == EntityType.AUDIT.value: |
|
| 448 | _actual_resource_type = EntityType.TASK |
|
| 449 | elif resource_type.value == EntityType.POLICY.value: |
|
| 450 | _actual_resource_type = EntityType.SCAN_CONFIG |
|
| 451 | ||
| 452 | _xmlresource.add_element("type", _actual_resource_type.value) |
|
| 453 | ||
| 454 | return self._send_xml_command(cmd) |
|
| 455 | ||
| 456 | def create_policy( |
|
| 457 | self, name: str, *, policy_id: str = None, comment: Optional[str] = None |
|