# Usage `dxaws-website` is used through `WebsiteManager` and typed models. ## Minimal execute() example ```python from dxaws_website import WebsiteDesired, WebsiteManager desired = WebsiteDesired( url="foo.dev.dilex.net", bucket_name="foo-dev-dilex-net", zone_name="dev.dilex.net", aliases=("www.foo.dev.dilex.net",), ) manager = WebsiteManager(provider=...) # adapter/dispatcher-backed provider result = manager.execute(desired) print(result.plan.action) # create | update | wait | noop print(result.outcome) # applied | wait | noop ``` ## Example: `wait` outcome `wait` is expected when async components are still converging, such as ACM validation or CloudFront deployment. ```python from dxaws_website import WebsiteDesired, WebsiteManager desired = WebsiteDesired( url="foo.dev.dilex.net", bucket_name="foo-dev-dilex-net", zone_name="dev.dilex.net", ) manager = WebsiteManager(provider=...) result = manager.execute(desired) if result.outcome == "wait": # Re-run later after certificate/distribution status advances. print("Website is still converging") ``` ## Example: `noop` outcome When all components are present and ready, execute returns `noop` and does not apply changes. ```python from dxaws_website import WebsiteDesired, WebsiteManager desired = WebsiteDesired( url="foo.dev.dilex.net", bucket_name="foo-dev-dilex-net", zone_name="dev.dilex.net", ) manager = WebsiteManager(provider=...) result = manager.execute(desired) if result.outcome == "noop": print("Already converged") ``` ## Notes - `WebsiteDesired` requires `url`, and either `zone_name` or `hosted_zone_id`. - Origin target must be exactly one of `bucket_name` or `origin_domain_name`. - Acceptance/integration testing is opt-in and should be run explicitly.