Skip to content

feat: Implement Integration Management Functions #207

@PaperMtn

Description

@PaperMtn

Feature

Add support for all endpoints under projects.locations.instances.integrations:

Endpoint Function
integrations.create chronicle.soar.integration.integrations.create_integration
integrations.delete chronicle.soar.integration.integrations.delete_integration
integrations.download chronicle.soar.integration.integrations.download_integration
integrations.downloadDependency chronicle.soar.integration.integrations.download_integration_dependency
integrations.exportIntegrationItems chronicle.soar.integration.integrations.export_integration_items
integrations.fetchAffectedItems chronicle.soar.integration.integrations.get_integration_affected_items
integrations.fetchAgentIntegrations chronicle.soar.integration.integrations.get_agent_integrations
integrations.fetchCommercialDiff chronicle.soar.integration.integrations.get_integration_diff
integrations.fetchDependencies chronicle.soar.integration.integrations.get_integration_dependencies
integrations.fetchRestrictedAgents chronicle.soar.integration.integrations.get_integration_restricted_agents
integrations.get chronicle.soar.integration.integrations.get_integration
integrations.getFetchProductionDiff chronicle.soar.integration.integrations.get_integration_diff(diff_type=DiffType.PRODUCTION)
integrations.getFetchStagingDiff chronicle.soar.integration.integrations.get_integration_diff(diff_type=DiffType.STAGING)
integrations.list chronicle.soar.integration.integrations.list_integrations
integrations.pushToProduction chronicle.soar.integration.integrations.transition_integration(target_mode=TargetMode.PRODUCTION)
integrations.pushToStaging chronicle.soar.integration.integrations.transition_integration(target_mode=TargetMode.STAGING)
integrations.actions.create chronicle.soar.integration.actions.create_integration_action
integrations.actions.delete chronicle.soar.integration.actions.delete_integration_action
integrations.actions.executeTest chronicle.soar.integration.actions.execute_integration_action_test
integrations.actions.fetchActionsByEnvironment chronicle.soar.integration.actions.get_integration_actions_by_environment
integrations.actions.fetchTemplate chronicle.soar.integration.actions.get_integration_action_template
integrations.actions.get chronicle.soar.integration.actions.get_integration_action
integrations.actions.list chronicle.soar.integration.actions.list_integration_actions
integrations.actions.patch chronicle.soar.integration.actions.update_integration_action
integrations.actions.revisions.create chronicle.soar.integration.action_revisions.create_integration_action_revision
integrations.actions.revisions.delete chronicle.soar.integration.action_revisions.delete_integration_action_revision
integrations.actions.revisions.list chronicle.soar.integration.action_revisions.list_integration_action_revisions
integrations.actions.revisions.rollback chronicle.soar.integration.action_revisions.rollback_integration_action_revision
integrations.connectors.create chronicle.soar.integration.connectors.create_integration_connector
integrations.connectors.delete chronicle.soar.integration.connectors.delete_integration_connector
integrations.connectors.executeTest chronicle.soar.integration.connectors.execute_integration_connector_test
integrations.connectors.fetchTemplate chronicle.soar.integration.connectors.get_integration_connector_template
integrations.connectors.get chronicle.soar.integration.connectors.get_integration_connector
integrations.connectors.list chronicle.soar.integration.connectors.list_integration_connectors
integrations.connectors.patch chronicle.soar.integration.connectors.update_integration_connector
integrations.connectors.revisions.create chronicle.soar.integration.connector_revisions.create_integration_connector_revision
integrations.connectors.revisions.delete chronicle.soar.integration.connector_revisions.delete_integration_connector_revision
integrations.connectors.revisions.list chronicle.soar.integration.connector_revisions.list_integration_connector_revisions
integrations.connectors.revisions.rollback chronicle.soar.integration.connector_revisions.rollback_integration_connector_revision
integrations.connectors.contextProperties.clearAll chronicle.soar.integration.connector_context_properties.delete_all_connector_context_properties
integrations.connectors.contextProperties.create chronicle.soar.integration.connector_context_properties.create_connector_context_property
integrations.connectors.contextProperties.delete chronicle.soar.integration.connector_context_properties.delete_connector_context_property
integrations.connectors.contextProperties.get chronicle.soar.integration.connector_context_properties.get_connector_context_property
integrations.connectors.contextProperties.list chronicle.soar.integration.connector_context_properties.list_connector_context_properties
integrations.connectors.contextProperties.patch chronicle.soar.integration.connector_context_properties.update_connector_context_property
integrations.connectors.connectorInstances.logs.get chronicle.soar.integration.connector_instance_logs.get_connector_instance_log
integrations.connectors.connectorInstances.logs.list chronicle.soar.integration.connector_instance_logs.list_connector_instance_logs
integrations.connectors.connectorInstances.create chronicle.soar.integration.connector_instances.create_connector_instance
integrations.connectors.connectorInstances.delete chronicle.soar.integration.connector_instances.delete_connector_instance
integrations.connectors.connectorInstances.fetchLatestDefinition chronicle.soar.integration.connector_instances.get_connector_instance_latest_definition
integrations.connectors.connectorInstances.get chronicle.soar.integration.connector_instances.get_connector_instance
integrations.connectors.connectorInstances.list chronicle.soar.integration.connector_instances.list_connector_instances
integrations.connectors.connectorInstances.patch chronicle.soar.integration.connector_instances.update_connector_instance
integrations.connectors.connectorInstances.runOnDemand chronicle.soar.integration.connector_instances.run_connector_instance_on_demand
integrations.connectors.connectorInstances.setLogsCollection chronicle.soar.integration.connector_instances.set_connector_instance_logs_collection
integrations.integrationInstances.create chronicle.soar.integration.integration_instances.create_integration_instance
integrations.integrationInstances.delete chronicle.soar.integration.integration_instances.delete_integration_instance
integrations.integrationInstances.executeTest chronicle.soar.integration.integration_instances.execute_integration_instance_test
integrations.integrationInstances.fetchAffectedItems chronicle.soar.integration.integration_instances.get_integration_instance_affected_items
integrations.integrationInstances.fetchDefaultInstance chronicle.soar.integration.integration_instances.get_default_integration_instance
integrations.integrationInstances.get chronicle.soar.integration.integration_instances.get_integration_instance
integrations.integrationInstances.list chronicle.soar.integration.integration_instances.list_integration_instances
integrations.integrationInstances.patch chronicle.soar.integration.integration_instances.update_integration_instance
integrations.jobs.create chronicle.soar.integration.jobs.create_integration_job
integrations.jobs.delete chronicle.soar.integration.jobs.delete_integration_job
integrations.jobs.executeTest chronicle.soar.integration.jobs.execute_integration_job_test
integrations.jobs.fetchTemplate chronicle.soar.integration.jobs.get_integration_job_template
integrations.jobs.get chronicle.soar.integration.jobs.get_integration_job
integrations.jobs.list chronicle.soar.integration.jobs.list_integration_jobs
integrations.jobs.patch chronicle.soar.integration.jobs.update_integration_job
integrations.managers.create chronicle.soar.integration.managers.create_integration_manager
integrations.managers.delete chronicle.soar.integration.managers.delete_integration_manager
integrations.managers.fetchTemplate chronicle.soar.integration.managers.get_integration_manager_template
integrations.managers.get chronicle.soar.integration.managers.get_integration_manager
integrations.managers.list chronicle.soar.integration.managers.list_integration_managers
integrations.managers.patch chronicle.soar.integration.managers.update_integration_manager
integrations.managers.revisions.create chronicle.soar.integration.manager_revisions.create_integration_manager_revision
integrations.managers.revisions.delete chronicle.soar.integration.manager_revisions.delete_integration_manager_revision
integrations.managers.revisions.get chronicle.soar.integration.manager_revisions.get_integration_manager_revision
integrations.managers.revisions.list chronicle.soar.integration.manager_revisions.list_integration_manager_revisions
integrations.managers.revisions.rollback chronicle.soar.integration.manager_revisions.rollback_integration_manager_revision
integrations.jobs.revisions.create chronicle.soar.integration.job_revisions.create_integration_job_revision
integrations.jobs.revisions.delete chronicle.soar.integration.job_revisions.delete_integration_job_revision
integrations.jobs.revisions.list chronicle.soar.integration.job_revisions.list_integration_job_revisions
integrations.jobs.revisions.rollback chronicle.soar.integration.job_revisions.rollback_integration_job_revision
integrations.jobs.jobInstances.create chronicle.soar.integration.job_instances.create_integration_job_instance
integrations.jobs.jobInstances.delete chronicle.soar.integration.job_instances.delete_integration_job_instance
integrations.jobs.jobInstances.get chronicle.soar.integration.job_instances.get_integration_job_instance
integrations.jobs.jobInstances.list chronicle.soar.integration.job_instances.list_integration_job_instances
integrations.jobs.jobInstances.patch chronicle.soar.integration.job_instances.update_integration_job_instance
integrations.jobs.jobInstances.runOnDemand chronicle.soar.integration.job_instances.run_integration_job_instance_on_demand
integrations.jobs.contextProperties.clearAll chronicle.soar.integration.job_context_properties.delete_all_job_context_properties
integrations.jobs.contextProperties.create chronicle.soar.integration.job_context_properties.create_job_context_property
integrations.jobs.contextProperties.delete chronicle.soar.integration.job_context_properties.delete_job_context_property
integrations.jobs.contextProperties.get chronicle.soar.integration.job_context_properties.get_job_context_property
integrations.jobs.contextProperties.list chronicle.soar.integration.job_context_properties.list_job_context_properties
integrations.jobs.contextProperties.patch chronicle.soar.integration.job_context_properties.update_job_context_property
integrations.jobs.jobInstances.logs.get chronicle.soar.integration.job_instance_logs.get_job_instance_log
integrations.jobs.jobInstances.logs.list chronicle.soar.integration.job_instance_logs.list_job_instance_logs
marketplaceIntegrations.get chronicle.soar.marketplace_integrations.get_marketplace_integration
marketplaceIntegrations.getDiff chronicle.soar.marketplace_integrations.get_marketplace_integration_diff
marketplaceIntegrations.install chronicle.soar.marketplace_integrations.install_marketplace_integration
marketplaceIntegrations.list chronicle.soar.marketplace_integrations.list_marketplace_integrations
marketplaceIntegrations.uninstall chronicle.soar.marketplace_integrations.uninstall_marketplace_integration

Architectural Changes

To support this change I am suggesting restructuring the SDK to have a SOARService, which is a namespace under ChronicleClient. The idea is that implementation of SOAR features would live under this namespace:

class SoarService:
     """Namespace for all SOAR-related operations in Google SecOps."""

     def __init__(self, client: "ChronicleClient"):
         self._client = client
         
     def list_cases(
         self,
         page_size: Optional[int] = None,
         page_token: Optional[str] = None,
         **kwargs
     ) -> Dict[str, Any]:
         """List SOAR cases."""
         # Delegate to the underlying implementation, passing the parent client
         return _list_cases(self._client, page_size=page_size, page_token=page_token, **kwargs)
from secops.chronicle.soar import SoarService

class ChronicleClient:
    def __init__(self, project_id: str, customer_id: str, ...):
        # ... existing auth and URL setup ...
        self._session = session
        self.base_url = ...

        # Attach the SOAR namespace
        self.soar = SoarService(self)

And user can access soar method as : chronicle_client.soar.list_integration(args)

This will stop ChronicleClient from becoming sprawling, and will support logical separation of functions as the SDK implements more

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions