from ..base_gcp_agent import BaseGCPAgent
from ..gcp_connector import GCPConnector
from google.cloud import compute_v1

class NetworkAgent(BaseGCPAgent):
    """
    An agent specialized in handling GCP VPC Network tasks.
    """

    def execute(self, command: str, **kwargs):
        """
        Executes a given command related to VPC Network.
        """
        if command == 'smart_create_network':
            network_name = kwargs.get('network_name', '')
            print(f"You are about to smart-create a VPC Network '{network_name}'.")
            confirm = input("This will create a new VPC Network. Are you sure you want to proceed? (yes/no): ")
            if confirm.lower() == 'yes':
                return self._smart_create_network(**kwargs)
            else:
                return {"status": "cancelled", "message": "Smart Create VPC Network command cancelled by user."}
        else:
            raise NotImplementedError(f"Command '{command}' is not supported by NetworkAgent.")

    def _smart_create_network(self, project_id: str, network_name: str, auto_create_subnetworks: bool = True):
        """
        Creates a VPC network with sensible defaults.
        """
        print(f"NetworkAgent: Smart creating network '{network_name}' in project '{project_id}'...")
        try:
            client = GCPConnector.get_compute_client()

            network_resource = compute_v1.Network()
            network_resource.name = network_name
            network_resource.auto_create_subnetworks = auto_create_subnetworks

            request = compute_v1.InsertNetworkRequest(
                project=project_id,
                network_resource=network_resource,
            )

            operation = client.insert_network(request=request)
            operation.wait()

            return {"status": "success", "message": f"VPC Network '{network_name}' created successfully."}
        except Exception as e:
            print(f"Error creating VPC Network: {e}")
            return {"status": "error", "message": str(e)}
