v0.4.3
Added
infrastructure update— no-op that validates field immutability; raises if any body field differs from existing stateDuploNotFounderror subclass (code 404) with optionalkindlabel for clearer not-found messagesapply()now catchesDuploNotFoundinstead of the broadDuploError, avoiding over-catching unrelated errorstenant get_metadataandtenant set_metadatacommands for typed key-value metadata entries (aws_console,url,text)- Add
ecrresource for managing AWS ECR repositories (list, find, create, update, delete, apply) - Add
cloud_resourceresource exposing the unifiedGetCloudResourcesendpoint with optional--typefilter - Bind OpenAPI models to resource commands to enable body validation and schema explanation
- more details to readme
- publish plugins to pypi
Fixed
- Restored Argo Workflows enablement check — argo commands now raise a clear error when Argo is not configured on the infrastructure instead of a cryptic server 500
- Fixed
aws_secret applyfailing when the secret already exists — the base V3applypassedpatches=whichaws_secret.updatedoes not accept - Fixed
service update_otherdockerconfig --addto auto-create missing parent arrays (e.g.EnvFrom/-) when the key does not yet exist inOtherDockerConfig - Fixed ECS
_wait_on_servicenot detecting stalled deployments without circuit breaker. When tasks repeatedly fail but ECS keeps the deploymentIN_PROGRESS, the wait loop now checksRunningCount,PendingCount, andFailedTasksto detect the stall. Also detects rollbacks by deployment status demotion, not justRolloutState. brew install duploctl --with-pipfails due topydantic_coresdist requiring Rust toolchain in Homebrew sandbox; madeduplocloud-sdkan optional dependencybrew install duploctlbinary crashes withNo module named 'duplocloud.client'; added missing hidden imports and package metadata to PyInstaller spec- Fixed
storageclasscommands (find,update,create --wait,apply) failing because names were not tenant-prefixed. Enabledprefixed=Trueon the resource. - Fixed
hosts findandhosts apply—name_from_bodycrashed withKeyErroron list response items missingFriendlyName. Added customfindandapplyoverrides for hosts resource. - should not use GET cache when waiting
What's Changed
Pull Requests
- Bind Models to Commands by @kferrone in #229
- Fix hosts find, apply, and --wait commands by @amaechiabuah in #228
- Fix storageclass name prefixing by @amaechiabuah in #230
- fix brew install failures for both pip and binary paths by @amaechiabuah in #233
- Better readme by @kferrone in #232
- Add ECR repository and cloud_resource support by @kferrone in #235
- feat: tenant get_metadata and set_metadata commands by @kferrone in #231
- Publish plugins to PyPI alongside main package by @kferrone in #236
- feat: infrastructure update (no-op) + DuploNotFound error by @kferrone in #237
- fix: detect stalled ECS deployments and rollbacks without circuit breaker by @amaechiabuah in #238
- fix: service update_otherdockerconfig --add for missing parent arrays by @amaechiabuah in #239
- fix: aws_secret apply fails when secret already exists by @amaechiabuah in #240
- fix: restore argo enablement check before API calls by @amaechiabuah in #241
- fix: disable GET cache during wait to prevent stale ECR poll responses by @kferrone in #243
Full Changelog: v0.4.2...v0.4.3
Installation
PIP PyPi:
duplocloud-client
pip install duplocloud-client==0.4.3PIP Sdist:
The dowload below named duplocloud_client-0.4.3.tar.gz is the sdist of the package.
pip install https://github.com/duplocloud/duploctl/releases/download/v0.4.3/duplocloud_client-0.4.3.tar.gzPIP From Source:
Install directly from the version tag on GitHub.
pip install git+https://github.com/duplocloud/duploctl.git@v0.4.3Dockerhub:
duplocloud/duploctl:v0.4.3
docker pull duplocloud/duploctl:v0.4.3Install CLI to Path Linux:
curl -s -L https://github.com/duplocloud/duploctl/releases/download/v0.4.3/duploctl-0.4.3-linux-amd64.tar.gz | tar xvz - -C /usr/local/binHomebrew single binary:
brew install duplocloud/tap/duploctlHomebrew with PIP:
brew install duplocloud/tap/duploctl --with-pip