From ad08d17c3158a09785891a72a00ac50701fbffed Mon Sep 17 00:00:00 2001 From: Harsh Mishra Date: Thu, 17 Apr 2025 16:02:10 +0530 Subject: [PATCH] rename the dagger module to localstack --- .dagger/pyproject.toml | 2 +- .../__init__.py | 4 +- .../main.py | 2 +- .dagger/uv.lock | 2 +- dagger.json | 2 +- examples/python/dagger.json | 2 +- examples/python/src/example/main.py | 28 ++-- examples/typescript/dagger.json | 2 +- examples/typescript/src/index.ts | 28 ++-- src/main/main.py | 157 ------------------ tests/dagger.json | 2 +- tests/src/tests/main.py | 10 +- 12 files changed, 42 insertions(+), 199 deletions(-) rename .dagger/src/{localstack_dagger_module => localstack}/__init__.py (82%) rename .dagger/src/{localstack_dagger_module => localstack}/main.py (99%) delete mode 100644 src/main/main.py diff --git a/.dagger/pyproject.toml b/.dagger/pyproject.toml index e2f94a1..7a1f6fa 100644 --- a/.dagger/pyproject.toml +++ b/.dagger/pyproject.toml @@ -1,5 +1,5 @@ [project] -name = "localstack-dagger-module" +name = "localstack" version = "0.1.0" requires-python = ">=3.10" dependencies = ["dagger-io", "requests"] diff --git a/.dagger/src/localstack_dagger_module/__init__.py b/.dagger/src/localstack/__init__.py similarity index 82% rename from .dagger/src/localstack_dagger_module/__init__.py rename to .dagger/src/localstack/__init__.py index 67f0f77..37c8aad 100644 --- a/.dagger/src/localstack_dagger_module/__init__.py +++ b/.dagger/src/localstack/__init__.py @@ -1,4 +1,4 @@ -"""A generated module for LocalstackDaggerModule functions +"""A generated module for Localstack functions This module has been generated via dagger init and serves as a reference to basic module structure as you get started with Dagger. @@ -13,4 +13,4 @@ if appropriate. All modules should have a short description. """ -from .main import LocalstackDaggerModule as LocalstackDaggerModule +from .main import Localstack as Localstack diff --git a/.dagger/src/localstack_dagger_module/main.py b/.dagger/src/localstack/main.py similarity index 99% rename from .dagger/src/localstack_dagger_module/main.py rename to .dagger/src/localstack/main.py index 7c79501..f264752 100644 --- a/.dagger/src/localstack_dagger_module/main.py +++ b/.dagger/src/localstack/main.py @@ -9,7 +9,7 @@ @object_type -class LocalstackDaggerModule: +class Localstack: @function def start( self, diff --git a/.dagger/uv.lock b/.dagger/uv.lock index c234f8f..06fcf94 100644 --- a/.dagger/uv.lock +++ b/.dagger/uv.lock @@ -291,7 +291,7 @@ wheels = [ ] [[package]] -name = "localstack-dagger-module" +name = "localstack" version = "0.1.0" source = { editable = "." } dependencies = [ diff --git a/dagger.json b/dagger.json index 4f86147..9fba897 100644 --- a/dagger.json +++ b/dagger.json @@ -1,5 +1,5 @@ { - "name": "localstack-dagger-module", + "name": "localstack", "engineVersion": "v0.18.2", "sdk": { "source": "python" diff --git a/examples/python/dagger.json b/examples/python/dagger.json index 82ee427..5c71f9f 100644 --- a/examples/python/dagger.json +++ b/examples/python/dagger.json @@ -6,7 +6,7 @@ }, "dependencies": [ { - "name": "localstack-dagger-module", + "name": "localstack", "source": "../.." } ] diff --git a/examples/python/src/example/main.py b/examples/python/src/example/main.py index ea02423..14a8a84 100644 --- a/examples/python/src/example/main.py +++ b/examples/python/src/example/main.py @@ -6,9 +6,9 @@ @object_type class Example: @function - async def localstack_dagger_module__quickstart(self) -> str: + async def localstack__quickstart(self) -> str: """Example showing how to start LocalStack Community edition.""" - service = dag.localstack_dagger_module().start() + service = dag.localstack().start() await service.start() endpoint = await service.endpoint() @@ -40,10 +40,10 @@ async def localstack_dagger_module__quickstart(self) -> str: print(f"S3 object content: {content}") @function - async def localstack_dagger_module__pro(self, auth_token: dagger.Secret) -> str: + async def localstack__pro(self, auth_token: dagger.Secret) -> str: """Example showing how to start LocalStack Pro with custom configuration.""" # Start LocalStack Pro using the module - service = dag.localstack_dagger_module().start( + service = dag.localstack().start( auth_token=auth_token, configuration="DEBUG=1,SERVICES=ecr" ) @@ -66,9 +66,9 @@ async def localstack_dagger_module__pro(self, auth_token: dagger.Secret) -> str: print(f"ECR repository '{repository_name}' created") @function - async def localstack_dagger_module__state(self, auth_token: dagger.Secret) -> str: + async def localstack__state(self, auth_token: dagger.Secret) -> str: """Example showing how to manage LocalStack state using Cloud Pods.""" - service = dag.localstack_dagger_module().start(auth_token=auth_token) + service = dag.localstack().start(auth_token=auth_token) await service.start() endpoint = await service.endpoint() @@ -84,20 +84,20 @@ async def localstack_dagger_module__state(self, auth_token: dagger.Secret) -> st s3.create_bucket(Bucket='test-bucket') # Save state to Cloud Pod - await dag.localstack_dagger_module().state( + await dag.localstack().state( auth_token=auth_token, save="test-dagger-example-pod", endpoint=f"http://{endpoint}" ) # Reset state - await dag.localstack_dagger_module().state( + await dag.localstack().state( reset=True, endpoint=f"http://{endpoint}" ) # Load state back - await dag.localstack_dagger_module().state( + await dag.localstack().state( auth_token=auth_token, load="test-dagger-example-pod", endpoint=f"http://{endpoint}" @@ -108,11 +108,11 @@ async def localstack_dagger_module__state(self, auth_token: dagger.Secret) -> st return f"Error: {str(e)}" @function - async def localstack_dagger_module_ephemeral(self, auth_token: dagger.Secret) -> str: + async def localstack_ephemeral(self, auth_token: dagger.Secret) -> str: """Example showing how to manage LocalStack Ephemeral Instances.""" try: # Create a new ephemeral instance - await dag.localstack_dagger_module().ephemeral( + await dag.localstack().ephemeral( auth_token=auth_token, operation="create", name="test-dagger-example-instance", @@ -125,7 +125,7 @@ async def localstack_dagger_module_ephemeral(self, auth_token: dagger.Secret) -> print("Instance created") # List instances - list_response = await dag.localstack_dagger_module().ephemeral( + list_response = await dag.localstack().ephemeral( auth_token=auth_token, operation="list" ) @@ -133,7 +133,7 @@ async def localstack_dagger_module_ephemeral(self, auth_token: dagger.Secret) -> print(f"Ephemeral instances: {list_response}") # Get instance logs - instance_logs = await dag.localstack_dagger_module().ephemeral( + instance_logs = await dag.localstack().ephemeral( auth_token=auth_token, operation="logs", name="test-dagger-example-instance" @@ -142,7 +142,7 @@ async def localstack_dagger_module_ephemeral(self, auth_token: dagger.Secret) -> print(f"Instance logs: {instance_logs}") # Delete instance - await dag.localstack_dagger_module().ephemeral( + await dag.localstack().ephemeral( auth_token=auth_token, operation="delete", name="test-dagger-example-instance" diff --git a/examples/typescript/dagger.json b/examples/typescript/dagger.json index b039773..729a474 100644 --- a/examples/typescript/dagger.json +++ b/examples/typescript/dagger.json @@ -6,7 +6,7 @@ }, "dependencies": [ { - "name": "localstack-dagger-module", + "name": "localstack", "source": "../.." } ] diff --git a/examples/typescript/src/index.ts b/examples/typescript/src/index.ts index 14e54a7..87db93f 100644 --- a/examples/typescript/src/index.ts +++ b/examples/typescript/src/index.ts @@ -16,10 +16,10 @@ export class Example { * @returns Promise */ @func() - async localstack_dagger_module__quickstart() { + async localstack__quickstart() { await connect(async (client) => { // Start LocalStack using the module - const service = client.localstackDaggerModule().start() + const service = client.localstack().start() await service.start() const endpoint = await service.endpoint() @@ -69,9 +69,9 @@ export class Example { * @returns Promise */ @func() - async localstack_dagger_module__pro(authToken: Secret) { + async localstack__pro(authToken: Secret) { await connect(async (client) => { - const service = client.localstackDaggerModule().start({ + const service = client.localstack().start({ authToken, configuration: "DEBUG=1,SERVICES=ecr", }) @@ -107,9 +107,9 @@ export class Example { * @returns Promise */ @func() - async localstack_dagger_module__state(authToken: Secret) { + async localstack__state(authToken: Secret) { await connect(async (client) => { - const service = client.localstackDaggerModule().start({ + const service = client.localstack().start({ authToken }) @@ -133,7 +133,7 @@ export class Example { console.log("Test bucket created") // Save state to Cloud Pod - await client.localstackDaggerModule().state({ + await client.localstack().state({ authToken, save: "test-dagger-example-pod", endpoint: `http://${endpoint}` @@ -142,14 +142,14 @@ export class Example { console.log("State saved to Cloud Pod") // Reset state - await client.localstackDaggerModule().state({ + await client.localstack().state({ reset: true, endpoint: `http://${endpoint}` }) console.log("State reset") // Load state back - await client.localstackDaggerModule().state({ + await client.localstack().state({ authToken, load: "test-dagger-example-pod", endpoint: `http://${endpoint}` @@ -168,10 +168,10 @@ export class Example { * @returns Promise */ @func() - async localstack_dagger_module__ephemeral(authToken: Secret) { + async localstack__ephemeral(authToken: Secret) { await connect(async (client) => { // Create a new ephemeral instance - await client.localstackDaggerModule().ephemeral( + await client.localstack().ephemeral( authToken, "create", { @@ -185,14 +185,14 @@ export class Example { await new Promise(resolve => setTimeout(resolve, 15000)) // List instances - const listResponse = await client.localstackDaggerModule().ephemeral( + const listResponse = await client.localstack().ephemeral( authToken, "list" ) console.log(`Ephemeral instances: ${listResponse}`) // Get instance logs - const instanceLogs = await client.localstackDaggerModule().ephemeral( + const instanceLogs = await client.localstack().ephemeral( authToken, "logs", { @@ -202,7 +202,7 @@ export class Example { console.log(`Instance logs: ${instanceLogs}`) // Delete instance - await client.localstackDaggerModule().ephemeral( + await client.localstack().ephemeral( authToken, "delete", { diff --git a/src/main/main.py b/src/main/main.py deleted file mode 100644 index 2cbf3d4..0000000 --- a/src/main/main.py +++ /dev/null @@ -1,157 +0,0 @@ -import dagger -from dagger import dag, function, object_type -import requests -import boto3 -import time -import json - - -@object_type -class Examples: - @function - async def localstack_dagger_module__quickstart(self) -> str: - """Example showing how to start LocalStack Community edition.""" - # Start LocalStack using the module - service = dag.localstack_dagger_module().start() - - await service.start() - endpoint = await service.endpoint() - - # Create a test bucket - s3 = boto3.client( - 's3', - endpoint_url=f"http://{endpoint}", - aws_access_key_id='test', - aws_secret_access_key='test', - region_name='us-east-1' - ) - s3.create_bucket(Bucket='test-bucket') - - print("S3 bucket created") - - # Create a test object - s3.put_object( - Bucket='test-bucket', - Key='test.txt', - Body='Hello LocalStack' - ) - - print("S3 object created") - - # Get the object - response = s3.get_object(Bucket='test-bucket', Key='test.txt') - content = response['Body'].read().decode('utf-8') - - print(f"S3 object content: {content}") - - return f"Success: LocalStack Community edition is running at {endpoint}" - - @function - async def localstack_dagger_module__pro(self, auth_token: dagger.Secret) -> str: - """Example showing how to start LocalStack Pro with custom configuration.""" - # Start LocalStack Pro using the module - service = dag.localstack_dagger_module().start( - auth_token=auth_token, - configuration="DEBUG=1,SERVICES=ecr", - docker_sock="/var/run/docker.sock" - ) - - await service.start() - endpoint = await service.endpoint() - - # Create a test ECR repository - ecr = boto3.client( - 'ecr', - endpoint_url=f"http://{endpoint}", - aws_access_key_id='test', - aws_secret_access_key='test', - region_name='us-east-1' - ) - ecr.create_repository(RepositoryName='test-repo') - - print("ECR repository created") - - return f"Success: LocalStack Pro is running at {endpoint}" - - @function - async def localstack_dagger_module_state(self, auth_token: dagger.Secret) -> str: - """Example showing how to manage LocalStack state using Cloud Pods.""" - # Start LocalStack Pro - service = dag.localstack_dagger_module().start(auth_token=auth_token) - await service.start() - endpoint = await service.endpoint() - - try: - # Create a test bucket - s3 = boto3.client( - 's3', - endpoint_url=f"http://{endpoint}", - aws_access_key_id='test', - aws_secret_access_key='test', - region_name='us-east-1' - ) - s3.create_bucket(Bucket='test-bucket') - - # Save state to Cloud Pod - await dag.localstack_dagger_module().state( - auth_token=auth_token, - save="test-pod", - endpoint=f"http://{endpoint}" - ) - - # Reset state - await dag.localstack_dagger_module().state( - reset=True, - endpoint=f"http://{endpoint}" - ) - - # Load state back - await dag.localstack_dagger_module().state( - auth_token=auth_token, - load="test-pod", - endpoint=f"http://{endpoint}" - ) - - return "Success: State operations completed" - except Exception as e: - return f"Error: {str(e)}" - - @function - async def localstack_dagger_module_ephemeral(self, auth_token: dagger.Secret) -> str: - """Example showing how to manage LocalStack Ephemeral Instances.""" - try: - # Create a new ephemeral instance - await dag.localstack_dagger_module().ephemeral( - auth_token=auth_token, - operation="create", - name="test-instance", - lifetime=60, - auto_load_pod="test-pod" - ) - - # Wait for instance to be ready - time.sleep(15) - - # List instances - list_response = await dag.localstack_dagger_module().ephemeral( - auth_token=auth_token, - operation="list" - ) - - # Get instance logs - await dag.localstack_dagger_module().ephemeral( - auth_token=auth_token, - operation="logs", - name="test-instance" - ) - - # Delete instance - await dag.localstack_dagger_module().ephemeral( - auth_token=auth_token, - operation="delete", - name="test-instance" - ) - - return "Success: Ephemeral instance operations completed" - except Exception as e: - return f"Error: {str(e)}" diff --git a/tests/dagger.json b/tests/dagger.json index d1adadb..cd81bf7 100644 --- a/tests/dagger.json +++ b/tests/dagger.json @@ -6,7 +6,7 @@ }, "dependencies": [ { - "name": "localstack-dagger-module", + "name": "localstack", "source": ".." } ] diff --git a/tests/src/tests/main.py b/tests/src/tests/main.py index 1e0f0fa..0f3fe26 100644 --- a/tests/src/tests/main.py +++ b/tests/src/tests/main.py @@ -22,7 +22,7 @@ async def all(self, auth_token: dagger.Secret) -> str: async def test_localstack_health(self) -> str: """Test if LocalStack starts and responds to /_localstack/info endpoint""" # Start LocalStack using the module - service = dag.localstack_dagger_module().start() + service = dag.localstack().start() await service.start() endpoint = await service.endpoint() @@ -47,7 +47,7 @@ async def test_localstack_health(self) -> str: async def test_localstack_pro(self, auth_token: dagger.Secret) -> str: """Test if LocalStack starts with Pro services available""" # Start LocalStack Pro using the module - service = dag.localstack_dagger_module().start(auth_token=auth_token) + service = dag.localstack().start(auth_token=auth_token) await service.start() endpoint = await service.endpoint() @@ -76,7 +76,7 @@ async def test_localstack_pro(self, auth_token: dagger.Secret) -> str: async def test_state_operations(self, auth_token: dagger.Secret) -> str: """Test LocalStack state operations (save/load/reset) with AWS resources""" # Start LocalStack Pro - service = dag.localstack_dagger_module().start(auth_token=auth_token) + service = dag.localstack().start(auth_token=auth_token) await service.start() endpoint = await service.endpoint() @@ -102,7 +102,7 @@ async def test_state_operations(self, auth_token: dagger.Secret) -> str: ) # Save state to Cloud Pod - state_module = dag.localstack_dagger_module() + state_module = dag.localstack() await state_module.state( auth_token=auth_token, save="test-dagger-pod", @@ -155,7 +155,7 @@ async def test_ephemeral_operations(self, auth_token: dagger.Secret) -> str: try: # Create an ephemeral instance - ephemeral_module = dag.localstack_dagger_module() + ephemeral_module = dag.localstack() create_response = await ephemeral_module.ephemeral( auth_token=auth_token, operation="create",