ptctools 0.1.0__py3-none-any.whl → 0.2.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ptctools/__init__.py +7 -1
- ptctools/_portainer.py +450 -226
- ptctools/cli.py +5 -8
- ptctools/config.py +111 -149
- ptctools/db.py +203 -142
- ptctools/docker.py +29 -0
- ptctools/portainer_client/.openapi-generator/FILES +818 -0
- ptctools/portainer_client/.openapi-generator/VERSION +1 -0
- ptctools/portainer_client/.openapi-generator-ignore +23 -0
- ptctools/portainer_client/openapi_client/__init__.py +855 -0
- ptctools/portainer_client/openapi_client/api/__init__.py +36 -0
- ptctools/portainer_client/openapi_client/api/auth_api.py +848 -0
- ptctools/portainer_client/openapi_client/api/backup_api.py +587 -0
- ptctools/portainer_client/openapi_client/api/custom_templates_api.py +2659 -0
- ptctools/portainer_client/openapi_client/api/docker_api.py +878 -0
- ptctools/portainer_client/openapi_client/api/edge_api.py +597 -0
- ptctools/portainer_client/openapi_client/api/edge_groups_api.py +1405 -0
- ptctools/portainer_client/openapi_client/api/edge_jobs_api.py +3146 -0
- ptctools/portainer_client/openapi_client/api/edge_stacks_api.py +2990 -0
- ptctools/portainer_client/openapi_client/api/endpoint_groups_api.py +1965 -0
- ptctools/portainer_client/openapi_client/api/endpoints_api.py +6607 -0
- ptctools/portainer_client/openapi_client/api/gitops_api.py +308 -0
- ptctools/portainer_client/openapi_client/api/helm_api.py +3529 -0
- ptctools/portainer_client/openapi_client/api/intel_api.py +1718 -0
- ptctools/portainer_client/openapi_client/api/kubernetes_api.py +18877 -0
- ptctools/portainer_client/openapi_client/api/ldap_api.py +313 -0
- ptctools/portainer_client/openapi_client/api/motd_api.py +284 -0
- ptctools/portainer_client/openapi_client/api/registries_api.py +1712 -0
- ptctools/portainer_client/openapi_client/api/resource_controls_api.py +891 -0
- ptctools/portainer_client/openapi_client/api/roles_api.py +288 -0
- ptctools/portainer_client/openapi_client/api/settings_api.py +820 -0
- ptctools/portainer_client/openapi_client/api/ssl_api.py +573 -0
- ptctools/portainer_client/openapi_client/api/stacks_api.py +6640 -0
- ptctools/portainer_client/openapi_client/api/status_api.py +285 -0
- ptctools/portainer_client/openapi_client/api/system_api.py +1277 -0
- ptctools/portainer_client/openapi_client/api/tags_api.py +839 -0
- ptctools/portainer_client/openapi_client/api/team_memberships_api.py +1425 -0
- ptctools/portainer_client/openapi_client/api/teams_api.py +1453 -0
- ptctools/portainer_client/openapi_client/api/templates_api.py +558 -0
- ptctools/portainer_client/openapi_client/api/upload_api.py +343 -0
- ptctools/portainer_client/openapi_client/api/users_api.py +3659 -0
- ptctools/portainer_client/openapi_client/api/webhooks_api.py +1415 -0
- ptctools/portainer_client/openapi_client/api/websocket_api.py +1279 -0
- ptctools/portainer_client/openapi_client/api_client.py +805 -0
- ptctools/portainer_client/openapi_client/api_response.py +21 -0
- ptctools/portainer_client/openapi_client/configuration.py +619 -0
- ptctools/portainer_client/openapi_client/docs/AuthApi.md +236 -0
- ptctools/portainer_client/openapi_client/docs/AuthAuthenticatePayload.md +30 -0
- ptctools/portainer_client/openapi_client/docs/AuthAuthenticateResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/AuthOauthPayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/BackupApi.md +166 -0
- ptctools/portainer_client/openapi_client/docs/BackupBackupPayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/BackupRestorePayload.md +31 -0
- ptctools/portainer_client/openapi_client/docs/BuildBuildInfo.md +35 -0
- ptctools/portainer_client/openapi_client/docs/BuildDependenciesInfo.md +32 -0
- ptctools/portainer_client/openapi_client/docs/BuildRuntimeInfo.md +29 -0
- ptctools/portainer_client/openapi_client/docs/ContainersContainerGpusResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/CustomTemplatesApi.md +842 -0
- ptctools/portainer_client/openapi_client/docs/CustomtemplatesCustomTemplateFromFileContentPayload.md +37 -0
- ptctools/portainer_client/openapi_client/docs/CustomtemplatesCustomTemplateFromGitRepositoryPayload.md +44 -0
- ptctools/portainer_client/openapi_client/docs/CustomtemplatesCustomTemplateUpdatePayload.md +47 -0
- ptctools/portainer_client/openapi_client/docs/CustomtemplatesFileResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/DockerApi.md +259 -0
- ptctools/portainer_client/openapi_client/docs/DockerContainerStats.md +33 -0
- ptctools/portainer_client/openapi_client/docs/DockerDashboardResponse.md +34 -0
- ptctools/portainer_client/openapi_client/docs/DockerImagesCounters.md +30 -0
- ptctools/portainer_client/openapi_client/docs/EdgeApi.md +152 -0
- ptctools/portainer_client/openapi_client/docs/EdgeDeployerOptionsPayload.md +30 -0
- ptctools/portainer_client/openapi_client/docs/EdgeGroupsApi.md +451 -0
- ptctools/portainer_client/openapi_client/docs/EdgeJobsApi.md +1003 -0
- ptctools/portainer_client/openapi_client/docs/EdgeRegistryCredentials.md +31 -0
- ptctools/portainer_client/openapi_client/docs/EdgeStackPayload.md +48 -0
- ptctools/portainer_client/openapi_client/docs/EdgeStacksApi.md +900 -0
- ptctools/portainer_client/openapi_client/docs/EdgegroupsDecoratedEdgeGroup.md +39 -0
- ptctools/portainer_client/openapi_client/docs/EdgegroupsEdgeGroupCreatePayload.md +33 -0
- ptctools/portainer_client/openapi_client/docs/EdgegroupsEdgeGroupUpdatePayload.md +33 -0
- ptctools/portainer_client/openapi_client/docs/EdgejobsEdgeJobCreateFromFileContentPayload.md +34 -0
- ptctools/portainer_client/openapi_client/docs/EdgejobsEdgeJobFileResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/EdgejobsEdgeJobUpdatePayload.md +34 -0
- ptctools/portainer_client/openapi_client/docs/EdgejobsFileResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/EdgejobsTaskContainer.md +32 -0
- ptctools/portainer_client/openapi_client/docs/EdgestacksEdgeStackFromGitRepositoryPayload.md +41 -0
- ptctools/portainer_client/openapi_client/docs/EdgestacksEdgeStackFromStringPayload.md +34 -0
- ptctools/portainer_client/openapi_client/docs/EdgestacksStackFileResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/EdgestacksUpdateEdgeStackPayload.md +33 -0
- ptctools/portainer_client/openapi_client/docs/EdgestacksUpdateStatusPayload.md +33 -0
- ptctools/portainer_client/openapi_client/docs/EndpointGroupsApi.md +638 -0
- ptctools/portainer_client/openapi_client/docs/EndpointedgeEdgeJobResponse.md +33 -0
- ptctools/portainer_client/openapi_client/docs/EndpointedgeEndpointEdgeStatusInspectResponse.md +34 -0
- ptctools/portainer_client/openapi_client/docs/EndpointedgeStackStatusResponse.md +30 -0
- ptctools/portainer_client/openapi_client/docs/EndpointgroupsEndpointGroupCreatePayload.md +32 -0
- ptctools/portainer_client/openapi_client/docs/EndpointgroupsEndpointGroupUpdatePayload.md +33 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsApi.md +1930 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsDockerhubStatusResponse.md +30 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsEndpointCreateGlobalKeyResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsEndpointDeleteBatchPartialResponse.md +30 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsEndpointDeleteBatchPayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsEndpointDeleteRequest.md +30 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsEndpointSettingsUpdatePayload.md +39 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsEndpointUpdatePayload.md +45 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsEndpointUpdateRelationsPayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsEndpointUpdateRelationsPayloadRelationsValue.md +31 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsForceUpdateServicePayload.md +30 -0
- ptctools/portainer_client/openapi_client/docs/EndpointsRegistryAccessPayload.md +31 -0
- ptctools/portainer_client/openapi_client/docs/FilesystemDirEntry.md +32 -0
- ptctools/portainer_client/openapi_client/docs/GithubComPortainerPortainerPkgLibhelmReleaseHook.md +36 -0
- ptctools/portainer_client/openapi_client/docs/GithubComPortainerPortainerPkgLibhelmReleaseHookExecution.md +31 -0
- ptctools/portainer_client/openapi_client/docs/GithubComPortainerPortainerPkgLibhelmReleaseInfo.md +35 -0
- ptctools/portainer_client/openapi_client/docs/GithubComPortainerPortainerPkgLibhelmReleaseRelease.md +39 -0
- ptctools/portainer_client/openapi_client/docs/GitopsApi.md +99 -0
- ptctools/portainer_client/openapi_client/docs/GitopsFileResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/GitopsRepositoryFilePreviewPayload.md +35 -0
- ptctools/portainer_client/openapi_client/docs/GittypesGitAuthentication.md +32 -0
- ptctools/portainer_client/openapi_client/docs/GittypesGitCredentialAuthType.md +12 -0
- ptctools/portainer_client/openapi_client/docs/GittypesRepoConfig.md +34 -0
- ptctools/portainer_client/openapi_client/docs/HelmApi.md +1062 -0
- ptctools/portainer_client/openapi_client/docs/HelmInstallChartPayload.md +35 -0
- ptctools/portainer_client/openapi_client/docs/ImagesImageResponse.md +34 -0
- ptctools/portainer_client/openapi_client/docs/IntelApi.md +505 -0
- ptctools/portainer_client/openapi_client/docs/IntstrIntOrString.md +31 -0
- ptctools/portainer_client/openapi_client/docs/IntstrType.md +12 -0
- ptctools/portainer_client/openapi_client/docs/K8sIoApiCoreV1ConditionStatus.md +14 -0
- ptctools/portainer_client/openapi_client/docs/K8sIoApiRbacV1Subject.md +32 -0
- ptctools/portainer_client/openapi_client/docs/K8sIoApimachineryPkgApisMetaV1ConditionStatus.md +14 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesApi.md +6017 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesConfiguration.md +31 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesCustomResourceMetadata.md +31 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesDescribeResourceResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesIngressRule.md +32 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sApplication.md +60 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sApplicationResource.md +32 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sClusterRole.md +32 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sClusterRoleBinding.md +35 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sConfigMap.md +39 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sConfigurationOwnerResource.md +31 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sCronJob.md +37 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sDashboard.md +35 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sEvent.md +40 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sEventInvolvedObject.md +32 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sIngressController.md +34 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sIngressInfo.md +39 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sIngressPath.md +35 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sIngressTLS.md +30 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sJob.md +42 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sNamespaceDetails.md +32 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sPersistentVolume.md +37 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sPersistentVolumeClaim.md +41 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sResourceQuota.md +31 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sRole.md +33 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sRoleBinding.md +35 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sSecret.md +40 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sServiceAccount.md +33 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sServiceInfo.md +43 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sServiceIngress.md +30 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sServicePort.md +33 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sStorageClass.md +32 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesK8sVolumeInfo.md +31 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesMetadata.md +30 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesNamespacesToggleSystemPayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesPod.md +38 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesPublishedPort.md +30 -0
- ptctools/portainer_client/openapi_client/docs/KubernetesTLSInfo.md +29 -0
- ptctools/portainer_client/openapi_client/docs/LdapApi.md +96 -0
- ptctools/portainer_client/openapi_client/docs/LdapCheckPayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/MotdApi.md +91 -0
- ptctools/portainer_client/openapi_client/docs/MotdMotdResponse.md +33 -0
- ptctools/portainer_client/openapi_client/docs/Oauth2AuthStyle.md +14 -0
- ptctools/portainer_client/openapi_client/docs/OpenamtDeviceActionPayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/OpenamtDeviceFeaturesPayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/OpenamtOpenAMTConfigurePayload.md +36 -0
- ptctools/portainer_client/openapi_client/docs/OsFileMode.md +38 -0
- ptctools/portainer_client/openapi_client/docs/PlatformContainerPlatform.md +18 -0
- ptctools/portainer_client/openapi_client/docs/PortainerAPIKey.md +35 -0
- ptctools/portainer_client/openapi_client/docs/PortainerAccessPolicy.md +29 -0
- ptctools/portainer_client/openapi_client/docs/PortainerAuthenticationMethod.md +16 -0
- ptctools/portainer_client/openapi_client/docs/PortainerAutoUpdateSettings.md +33 -0
- ptctools/portainer_client/openapi_client/docs/PortainerAzureCredentials.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerCustomTemplate.md +43 -0
- ptctools/portainer_client/openapi_client/docs/PortainerCustomTemplatePlatform.md +14 -0
- ptctools/portainer_client/openapi_client/docs/PortainerCustomTemplateVariableDefinition.md +32 -0
- ptctools/portainer_client/openapi_client/docs/PortainerDiagnosticsData.md +32 -0
- ptctools/portainer_client/openapi_client/docs/PortainerDockerSnapshot.md +49 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEcrData.md +29 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEdge.md +32 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEdgeGroup.md +35 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEdgeJob.md +38 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEdgeJobEndpointMeta.md +30 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEdgeJobLogsStatus.md +16 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEdgeStack.md +40 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEdgeStackDeploymentStatus.md +33 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEdgeStackDeploymentType.md +12 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEdgeStackStatus.md +35 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEdgeStackStatusDetails.md +35 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEdgeStackStatusType.md +36 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEndpoint.md +66 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEndpointAgent.md +29 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEndpointGroup.md +38 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEndpointPostInitMigrations.md +30 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEndpointSecuritySettings.md +37 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEndpointStatus.md +14 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEndpointType.md +24 -0
- ptctools/portainer_client/openapi_client/docs/PortainerEnvironmentEdgeSettings.md +32 -0
- ptctools/portainer_client/openapi_client/docs/PortainerGithubRegistryData.md +30 -0
- ptctools/portainer_client/openapi_client/docs/PortainerGitlabRegistryData.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerGlobalDeploymentOptions.md +29 -0
- ptctools/portainer_client/openapi_client/docs/PortainerHelmUserRepository.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerInternalAuthSettings.md +29 -0
- ptctools/portainer_client/openapi_client/docs/PortainerK8sNamespaceInfo.md +38 -0
- ptctools/portainer_client/openapi_client/docs/PortainerK8sNodeLimits.md +30 -0
- ptctools/portainer_client/openapi_client/docs/PortainerKubernetesConfiguration.md +37 -0
- ptctools/portainer_client/openapi_client/docs/PortainerKubernetesData.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerKubernetesFlags.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerKubernetesIngressClassConfig.md +32 -0
- ptctools/portainer_client/openapi_client/docs/PortainerKubernetesSnapshot.md +35 -0
- ptctools/portainer_client/openapi_client/docs/PortainerKubernetesStorageClassConfig.md +32 -0
- ptctools/portainer_client/openapi_client/docs/PortainerLDAPGroupSearchSettings.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerLDAPSearchSettings.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerLDAPSettings.md +37 -0
- ptctools/portainer_client/openapi_client/docs/PortainerMembershipRole.md +14 -0
- ptctools/portainer_client/openapi_client/docs/PortainerOAuthSettings.md +42 -0
- ptctools/portainer_client/openapi_client/docs/PortainerOpenAMTConfiguration.md +37 -0
- ptctools/portainer_client/openapi_client/docs/PortainerOpenAMTDeviceEnabledFeatures.md +33 -0
- ptctools/portainer_client/openapi_client/docs/PortainerPair.md +30 -0
- ptctools/portainer_client/openapi_client/docs/PortainerPerformanceMetrics.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerQuayRegistryData.md +30 -0
- ptctools/portainer_client/openapi_client/docs/PortainerRegistry.md +48 -0
- ptctools/portainer_client/openapi_client/docs/PortainerRegistryAccessPolicies.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerRegistryManagementConfiguration.md +36 -0
- ptctools/portainer_client/openapi_client/docs/PortainerRegistryType.md +26 -0
- ptctools/portainer_client/openapi_client/docs/PortainerResourceAccessLevel.md +12 -0
- ptctools/portainer_client/openapi_client/docs/PortainerResourceControl.md +39 -0
- ptctools/portainer_client/openapi_client/docs/PortainerResourceControlType.md +28 -0
- ptctools/portainer_client/openapi_client/docs/PortainerRole.md +33 -0
- ptctools/portainer_client/openapi_client/docs/PortainerSSLSettings.md +32 -0
- ptctools/portainer_client/openapi_client/docs/PortainerSettings.md +62 -0
- ptctools/portainer_client/openapi_client/docs/PortainerStack.md +48 -0
- ptctools/portainer_client/openapi_client/docs/PortainerStackDeploymentInfo.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerStackOption.md +29 -0
- ptctools/portainer_client/openapi_client/docs/PortainerStackStatus.md +14 -0
- ptctools/portainer_client/openapi_client/docs/PortainerStackType.md +16 -0
- ptctools/portainer_client/openapi_client/docs/PortainerTLSConfiguration.md +33 -0
- ptctools/portainer_client/openapi_client/docs/PortainerTag.md +32 -0
- ptctools/portainer_client/openapi_client/docs/PortainerTeam.md +30 -0
- ptctools/portainer_client/openapi_client/docs/PortainerTeamMembership.md +32 -0
- ptctools/portainer_client/openapi_client/docs/PortainerTeamResourceAccess.md +30 -0
- ptctools/portainer_client/openapi_client/docs/PortainerTemplate.md +52 -0
- ptctools/portainer_client/openapi_client/docs/PortainerTemplateEnv.md +34 -0
- ptctools/portainer_client/openapi_client/docs/PortainerTemplateEnvSelect.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerTemplateRepository.md +30 -0
- ptctools/portainer_client/openapi_client/docs/PortainerTemplateType.md +16 -0
- ptctools/portainer_client/openapi_client/docs/PortainerTemplateVolume.md +31 -0
- ptctools/portainer_client/openapi_client/docs/PortainerUser.md +37 -0
- ptctools/portainer_client/openapi_client/docs/PortainerUserResourceAccess.md +30 -0
- ptctools/portainer_client/openapi_client/docs/PortainerUserRole.md +14 -0
- ptctools/portainer_client/openapi_client/docs/PortainerUserThemeSettings.md +29 -0
- ptctools/portainer_client/openapi_client/docs/PortainerWebhook.md +34 -0
- ptctools/portainer_client/openapi_client/docs/PortainerWebhookType.md +12 -0
- ptctools/portainer_client/openapi_client/docs/RegistriesApi.md +554 -0
- ptctools/portainer_client/openapi_client/docs/RegistriesRegistryConfigurePayload.md +37 -0
- ptctools/portainer_client/openapi_client/docs/RegistriesRegistryCreatePayload.md +38 -0
- ptctools/portainer_client/openapi_client/docs/RegistriesRegistryUpdatePayload.md +37 -0
- ptctools/portainer_client/openapi_client/docs/ReleaseChart.md +34 -0
- ptctools/portainer_client/openapi_client/docs/ReleaseChartReference.md +31 -0
- ptctools/portainer_client/openapi_client/docs/ReleaseDependency.md +36 -0
- ptctools/portainer_client/openapi_client/docs/ReleaseFile.md +30 -0
- ptctools/portainer_client/openapi_client/docs/ReleaseLock.md +31 -0
- ptctools/portainer_client/openapi_client/docs/ReleaseMaintainer.md +31 -0
- ptctools/portainer_client/openapi_client/docs/ReleaseMetadata.md +45 -0
- ptctools/portainer_client/openapi_client/docs/ReleaseReleaseElement.md +35 -0
- ptctools/portainer_client/openapi_client/docs/ReleaseValues.md +30 -0
- ptctools/portainer_client/openapi_client/docs/ResourceControlsApi.md +283 -0
- ptctools/portainer_client/openapi_client/docs/ResourceQuantity.md +29 -0
- ptctools/portainer_client/openapi_client/docs/ResourcecontrolsResourceControlCreatePayload.md +35 -0
- ptctools/portainer_client/openapi_client/docs/ResourcecontrolsResourceControlUpdatePayload.md +32 -0
- ptctools/portainer_client/openapi_client/docs/RolesApi.md +93 -0
- ptctools/portainer_client/openapi_client/docs/SettingsApi.md +251 -0
- ptctools/portainer_client/openapi_client/docs/SettingsPublicSettingsResponse.md +42 -0
- ptctools/portainer_client/openapi_client/docs/SettingsPublicSettingsResponseEdge.md +32 -0
- ptctools/portainer_client/openapi_client/docs/SettingsSettingsUpdatePayload.md +47 -0
- ptctools/portainer_client/openapi_client/docs/SslApi.md +184 -0
- ptctools/portainer_client/openapi_client/docs/SslSslUpdatePayload.md +31 -0
- ptctools/portainer_client/openapi_client/docs/StacksApi.md +2064 -0
- ptctools/portainer_client/openapi_client/docs/StacksComposeStackFromFileContentPayload.md +32 -0
- ptctools/portainer_client/openapi_client/docs/StacksComposeStackFromGitRepositoryPayload.md +40 -0
- ptctools/portainer_client/openapi_client/docs/StacksKubernetesGitDeploymentPayload.md +40 -0
- ptctools/portainer_client/openapi_client/docs/StacksKubernetesManifestURLDeploymentPayload.md +32 -0
- ptctools/portainer_client/openapi_client/docs/StacksKubernetesStringDeploymentPayload.md +33 -0
- ptctools/portainer_client/openapi_client/docs/StacksStackFileResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/StacksStackGitRedployPayload.md +37 -0
- ptctools/portainer_client/openapi_client/docs/StacksStackGitUpdatePayload.md +37 -0
- ptctools/portainer_client/openapi_client/docs/StacksStackMigratePayload.md +31 -0
- ptctools/portainer_client/openapi_client/docs/StacksSwarmStackFromFileContentPayload.md +33 -0
- ptctools/portainer_client/openapi_client/docs/StacksSwarmStackFromGitRepositoryPayload.md +41 -0
- ptctools/portainer_client/openapi_client/docs/StacksUpdateSwarmStackPayload.md +32 -0
- ptctools/portainer_client/openapi_client/docs/StatusApi.md +75 -0
- ptctools/portainer_client/openapi_client/docs/SwarmServiceUpdateResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/SystemApi.md +392 -0
- ptctools/portainer_client/openapi_client/docs/SystemNodesCountResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/SystemStatus.md +30 -0
- ptctools/portainer_client/openapi_client/docs/SystemSystemInfoResponse.md +31 -0
- ptctools/portainer_client/openapi_client/docs/SystemVersionResponse.md +37 -0
- ptctools/portainer_client/openapi_client/docs/TagsApi.md +273 -0
- ptctools/portainer_client/openapi_client/docs/TagsTagCreatePayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/TeamMembershipsApi.md +463 -0
- ptctools/portainer_client/openapi_client/docs/TeammembershipsTeamMembershipCreatePayload.md +31 -0
- ptctools/portainer_client/openapi_client/docs/TeammembershipsTeamMembershipUpdatePayload.md +31 -0
- ptctools/portainer_client/openapi_client/docs/TeamsApi.md +467 -0
- ptctools/portainer_client/openapi_client/docs/TeamsTeamCreatePayload.md +30 -0
- ptctools/portainer_client/openapi_client/docs/TeamsTeamUpdatePayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/TemplatesApi.md +183 -0
- ptctools/portainer_client/openapi_client/docs/TemplatesFileResponse.md +29 -0
- ptctools/portainer_client/openapi_client/docs/TemplatesListResponse.md +30 -0
- ptctools/portainer_client/openapi_client/docs/UnstructuredUnstructured.md +29 -0
- ptctools/portainer_client/openapi_client/docs/UploadApi.md +99 -0
- ptctools/portainer_client/openapi_client/docs/UsersAccessTokenResponse.md +30 -0
- ptctools/portainer_client/openapi_client/docs/UsersAddHelmRepoUrlPayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/UsersAdminInitPayload.md +30 -0
- ptctools/portainer_client/openapi_client/docs/UsersApi.md +1159 -0
- ptctools/portainer_client/openapi_client/docs/UsersHelmUserRepositoryResponse.md +30 -0
- ptctools/portainer_client/openapi_client/docs/UsersThemePayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/UsersUserAccessTokenCreatePayload.md +30 -0
- ptctools/portainer_client/openapi_client/docs/UsersUserCreatePayload.md +31 -0
- ptctools/portainer_client/openapi_client/docs/UsersUserUpdatePasswordPayload.md +30 -0
- ptctools/portainer_client/openapi_client/docs/UsersUserUpdatePayload.md +34 -0
- ptctools/portainer_client/openapi_client/docs/V1AppArmorProfile.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1AppArmorProfileType.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V1CSIPersistentVolumeSource.md +38 -0
- ptctools/portainer_client/openapi_client/docs/V1Capabilities.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1ClientIPConfig.md +29 -0
- ptctools/portainer_client/openapi_client/docs/V1Condition.md +34 -0
- ptctools/portainer_client/openapi_client/docs/V1ConfigMapEnvSource.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1ConfigMapKeySelector.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1Container.md +52 -0
- ptctools/portainer_client/openapi_client/docs/V1ContainerPort.md +33 -0
- ptctools/portainer_client/openapi_client/docs/V1ContainerResizePolicy.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1ContainerRestartPolicy.md +10 -0
- ptctools/portainer_client/openapi_client/docs/V1Duration.md +29 -0
- ptctools/portainer_client/openapi_client/docs/V1EnvFromSource.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1EnvVar.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1EnvVarSource.md +32 -0
- ptctools/portainer_client/openapi_client/docs/V1ExecAction.md +29 -0
- ptctools/portainer_client/openapi_client/docs/V1GRPCAction.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1HTTPGetAction.md +33 -0
- ptctools/portainer_client/openapi_client/docs/V1HTTPHeader.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1IPFamily.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V1IPFamilyPolicy.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V1LabelSelector.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1LabelSelectorOperator.md +16 -0
- ptctools/portainer_client/openapi_client/docs/V1LabelSelectorRequirement.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1Lifecycle.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1LifecycleHandler.md +32 -0
- ptctools/portainer_client/openapi_client/docs/V1ListMeta.md +32 -0
- ptctools/portainer_client/openapi_client/docs/V1LoadBalancerIPMode.md +12 -0
- ptctools/portainer_client/openapi_client/docs/V1LoadBalancerIngress.md +32 -0
- ptctools/portainer_client/openapi_client/docs/V1LoadBalancerStatus.md +29 -0
- ptctools/portainer_client/openapi_client/docs/V1ManagedFieldsEntry.md +35 -0
- ptctools/portainer_client/openapi_client/docs/V1ManagedFieldsOperationType.md +12 -0
- ptctools/portainer_client/openapi_client/docs/V1MountPropagationMode.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V1NamespaceCondition.md +33 -0
- ptctools/portainer_client/openapi_client/docs/V1NamespaceConditionType.md +18 -0
- ptctools/portainer_client/openapi_client/docs/V1NamespacePhase.md +12 -0
- ptctools/portainer_client/openapi_client/docs/V1NamespaceStatus.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1ObjectFieldSelector.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1ObjectMeta.md +43 -0
- ptctools/portainer_client/openapi_client/docs/V1ObjectReference.md +35 -0
- ptctools/portainer_client/openapi_client/docs/V1OwnerReference.md +34 -0
- ptctools/portainer_client/openapi_client/docs/V1PersistentVolumeAccessMode.md +16 -0
- ptctools/portainer_client/openapi_client/docs/V1PersistentVolumeClaimPhase.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V1PersistentVolumeMode.md +12 -0
- ptctools/portainer_client/openapi_client/docs/V1PersistentVolumeReclaimPolicy.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V1PortStatus.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1Probe.md +38 -0
- ptctools/portainer_client/openapi_client/docs/V1ProcMountType.md +12 -0
- ptctools/portainer_client/openapi_client/docs/V1Protocol.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V1PullPolicy.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V1RecursiveReadOnlyMode.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V1ResourceClaim.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1ResourceFieldSelector.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1ResourceName.md +48 -0
- ptctools/portainer_client/openapi_client/docs/V1ResourceQuota.md +33 -0
- ptctools/portainer_client/openapi_client/docs/V1ResourceQuotaScope.md +22 -0
- ptctools/portainer_client/openapi_client/docs/V1ResourceQuotaSpec.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1ResourceQuotaStatus.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1ResourceRequirements.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1ResourceResizeRestartPolicy.md +12 -0
- ptctools/portainer_client/openapi_client/docs/V1RoleRef.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1SELinuxOptions.md +32 -0
- ptctools/portainer_client/openapi_client/docs/V1ScopeSelector.md +29 -0
- ptctools/portainer_client/openapi_client/docs/V1ScopeSelectorOperator.md +16 -0
- ptctools/portainer_client/openapi_client/docs/V1ScopedResourceSelectorRequirement.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1SeccompProfile.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1SeccompProfileType.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V1SecretEnvSource.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1SecretKeySelector.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V1SecretReference.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1SecurityContext.md +40 -0
- ptctools/portainer_client/openapi_client/docs/V1Service.md +33 -0
- ptctools/portainer_client/openapi_client/docs/V1ServiceAffinity.md +12 -0
- ptctools/portainer_client/openapi_client/docs/V1ServiceExternalTrafficPolicy.md +16 -0
- ptctools/portainer_client/openapi_client/docs/V1ServiceInternalTrafficPolicy.md +12 -0
- ptctools/portainer_client/openapi_client/docs/V1ServicePort.md +34 -0
- ptctools/portainer_client/openapi_client/docs/V1ServiceSpec.md +48 -0
- ptctools/portainer_client/openapi_client/docs/V1ServiceStatus.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1ServiceType.md +16 -0
- ptctools/portainer_client/openapi_client/docs/V1SessionAffinityConfig.md +29 -0
- ptctools/portainer_client/openapi_client/docs/V1Signal.md +138 -0
- ptctools/portainer_client/openapi_client/docs/V1SleepAction.md +29 -0
- ptctools/portainer_client/openapi_client/docs/V1TCPSocketAction.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1TerminationMessagePolicy.md +12 -0
- ptctools/portainer_client/openapi_client/docs/V1URIScheme.md +12 -0
- ptctools/portainer_client/openapi_client/docs/V1VolumeDevice.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1VolumeMount.md +35 -0
- ptctools/portainer_client/openapi_client/docs/V1WindowsSecurityContextOptions.md +32 -0
- ptctools/portainer_client/openapi_client/docs/V1beta1ContainerMetrics.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V1beta1NodeMetrics.md +34 -0
- ptctools/portainer_client/openapi_client/docs/V1beta1NodeMetricsList.md +32 -0
- ptctools/portainer_client/openapi_client/docs/V1beta1PodMetrics.md +34 -0
- ptctools/portainer_client/openapi_client/docs/V1beta1PodMetricsList.md +32 -0
- ptctools/portainer_client/openapi_client/docs/V2ContainerResourceMetricSource.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V2ContainerResourceMetricStatus.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V2CrossVersionObjectReference.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V2ExternalMetricSource.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V2ExternalMetricStatus.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V2HPAScalingPolicy.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V2HPAScalingPolicyType.md +12 -0
- ptctools/portainer_client/openapi_client/docs/V2HPAScalingRules.md +32 -0
- ptctools/portainer_client/openapi_client/docs/V2HorizontalPodAutoscaler.md +33 -0
- ptctools/portainer_client/openapi_client/docs/V2HorizontalPodAutoscalerBehavior.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V2HorizontalPodAutoscalerCondition.md +33 -0
- ptctools/portainer_client/openapi_client/docs/V2HorizontalPodAutoscalerConditionType.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V2HorizontalPodAutoscalerSpec.md +33 -0
- ptctools/portainer_client/openapi_client/docs/V2HorizontalPodAutoscalerStatus.md +34 -0
- ptctools/portainer_client/openapi_client/docs/V2MetricIdentifier.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V2MetricSourceType.md +18 -0
- ptctools/portainer_client/openapi_client/docs/V2MetricSpec.md +34 -0
- ptctools/portainer_client/openapi_client/docs/V2MetricStatus.md +34 -0
- ptctools/portainer_client/openapi_client/docs/V2MetricTarget.md +32 -0
- ptctools/portainer_client/openapi_client/docs/V2MetricTargetType.md +14 -0
- ptctools/portainer_client/openapi_client/docs/V2MetricValueStatus.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V2ObjectMetricSource.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V2ObjectMetricStatus.md +31 -0
- ptctools/portainer_client/openapi_client/docs/V2PodsMetricSource.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V2PodsMetricStatus.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V2ResourceMetricSource.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V2ResourceMetricStatus.md +30 -0
- ptctools/portainer_client/openapi_client/docs/V2ScalingPolicySelect.md +14 -0
- ptctools/portainer_client/openapi_client/docs/WebhooksApi.md +436 -0
- ptctools/portainer_client/openapi_client/docs/WebhooksWebhookCreatePayload.md +32 -0
- ptctools/portainer_client/openapi_client/docs/WebhooksWebhookUpdatePayload.md +29 -0
- ptctools/portainer_client/openapi_client/docs/WebsocketApi.md +385 -0
- ptctools/portainer_client/openapi_client/exceptions.py +220 -0
- ptctools/portainer_client/openapi_client/models/__init__.py +389 -0
- ptctools/portainer_client/openapi_client/models/auth_authenticate_payload.py +90 -0
- ptctools/portainer_client/openapi_client/models/auth_authenticate_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/auth_oauth_payload.py +88 -0
- ptctools/portainer_client/openapi_client/models/backup_backup_payload.py +88 -0
- ptctools/portainer_client/openapi_client/models/backup_restore_payload.py +92 -0
- ptctools/portainer_client/openapi_client/models/build_build_info.py +100 -0
- ptctools/portainer_client/openapi_client/models/build_dependencies_info.py +94 -0
- ptctools/portainer_client/openapi_client/models/build_runtime_info.py +88 -0
- ptctools/portainer_client/openapi_client/models/containers_container_gpus_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/customtemplates_custom_template_from_file_content_payload.py +114 -0
- ptctools/portainer_client/openapi_client/models/customtemplates_custom_template_from_git_repository_payload.py +128 -0
- ptctools/portainer_client/openapi_client/models/customtemplates_custom_template_update_payload.py +135 -0
- ptctools/portainer_client/openapi_client/models/customtemplates_file_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/docker_container_stats.py +96 -0
- ptctools/portainer_client/openapi_client/models/docker_dashboard_response.py +106 -0
- ptctools/portainer_client/openapi_client/models/docker_images_counters.py +90 -0
- ptctools/portainer_client/openapi_client/models/edge_deployer_options_payload.py +90 -0
- ptctools/portainer_client/openapi_client/models/edge_registry_credentials.py +92 -0
- ptctools/portainer_client/openapi_client/models/edge_stack_payload.py +154 -0
- ptctools/portainer_client/openapi_client/models/edgegroups_decorated_edge_group.py +109 -0
- ptctools/portainer_client/openapi_client/models/edgegroups_edge_group_create_payload.py +96 -0
- ptctools/portainer_client/openapi_client/models/edgegroups_edge_group_update_payload.py +96 -0
- ptctools/portainer_client/openapi_client/models/edgejobs_edge_job_create_from_file_content_payload.py +98 -0
- ptctools/portainer_client/openapi_client/models/edgejobs_edge_job_file_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/edgejobs_edge_job_update_payload.py +98 -0
- ptctools/portainer_client/openapi_client/models/edgejobs_file_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/edgejobs_task_container.py +95 -0
- ptctools/portainer_client/openapi_client/models/edgestacks_edge_stack_from_git_repository_payload.py +114 -0
- ptctools/portainer_client/openapi_client/models/edgestacks_edge_stack_from_string_payload.py +99 -0
- ptctools/portainer_client/openapi_client/models/edgestacks_stack_file_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/edgestacks_update_edge_stack_payload.py +97 -0
- ptctools/portainer_client/openapi_client/models/edgestacks_update_status_payload.py +97 -0
- ptctools/portainer_client/openapi_client/models/endpointedge_edge_job_response.py +96 -0
- ptctools/portainer_client/openapi_client/models/endpointedge_endpoint_edge_status_inspect_response.py +114 -0
- ptctools/portainer_client/openapi_client/models/endpointedge_stack_status_response.py +90 -0
- ptctools/portainer_client/openapi_client/models/endpointgroups_endpoint_group_create_payload.py +94 -0
- ptctools/portainer_client/openapi_client/models/endpointgroups_endpoint_group_update_payload.py +121 -0
- ptctools/portainer_client/openapi_client/models/endpoints_dockerhub_status_response.py +90 -0
- ptctools/portainer_client/openapi_client/models/endpoints_endpoint_create_global_key_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/endpoints_endpoint_delete_batch_partial_response.py +90 -0
- ptctools/portainer_client/openapi_client/models/endpoints_endpoint_delete_batch_payload.py +96 -0
- ptctools/portainer_client/openapi_client/models/endpoints_endpoint_delete_request.py +90 -0
- ptctools/portainer_client/openapi_client/models/endpoints_endpoint_settings_update_payload.py +116 -0
- ptctools/portainer_client/openapi_client/models/endpoints_endpoint_update_payload.py +157 -0
- ptctools/portainer_client/openapi_client/models/endpoints_endpoint_update_relations_payload.py +101 -0
- ptctools/portainer_client/openapi_client/models/endpoints_endpoint_update_relations_payload_relations_value.py +92 -0
- ptctools/portainer_client/openapi_client/models/endpoints_force_update_service_payload.py +90 -0
- ptctools/portainer_client/openapi_client/models/endpoints_registry_access_payload.py +117 -0
- ptctools/portainer_client/openapi_client/models/filesystem_dir_entry.py +95 -0
- ptctools/portainer_client/openapi_client/models/github_com_portainer_portainer_pkg_libhelm_release_hook.py +106 -0
- ptctools/portainer_client/openapi_client/models/github_com_portainer_portainer_pkg_libhelm_release_hook_execution.py +92 -0
- ptctools/portainer_client/openapi_client/models/github_com_portainer_portainer_pkg_libhelm_release_info.py +108 -0
- ptctools/portainer_client/openapi_client/models/github_com_portainer_portainer_pkg_libhelm_release_release.py +132 -0
- ptctools/portainer_client/openapi_client/models/gitops_file_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/gitops_repository_file_preview_payload.py +101 -0
- ptctools/portainer_client/openapi_client/models/gittypes_git_authentication.py +95 -0
- ptctools/portainer_client/openapi_client/models/gittypes_git_credential_auth_type.py +38 -0
- ptctools/portainer_client/openapi_client/models/gittypes_repo_config.py +102 -0
- ptctools/portainer_client/openapi_client/models/helm_install_chart_payload.py +100 -0
- ptctools/portainer_client/openapi_client/models/images_image_response.py +98 -0
- ptctools/portainer_client/openapi_client/models/intstr_int_or_string.py +93 -0
- ptctools/portainer_client/openapi_client/models/intstr_type.py +38 -0
- ptctools/portainer_client/openapi_client/models/k8s_io_api_core_v1_condition_status.py +39 -0
- ptctools/portainer_client/openapi_client/models/k8s_io_api_rbac_v1_subject.py +94 -0
- ptctools/portainer_client/openapi_client/models/k8s_io_apimachinery_pkg_apis_meta_v1_condition_status.py +39 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_configuration.py +92 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_custom_resource_metadata.py +92 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_describe_resource_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_ingress_rule.py +102 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_application.py +198 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_application_resource.py +94 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_cluster_role.py +94 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_cluster_role_binding.py +112 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_config_map.py +116 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_configuration_owner_resource.py +92 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_cron_job.py +112 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_dashboard.py +100 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_event.py +114 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_event_involved_object.py +94 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_ingress_controller.py +98 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_ingress_info.py +124 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_ingress_path.py +100 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_ingress_tls.py +90 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_job.py +118 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_namespace_details.py +98 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_persistent_volume.py +128 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_persistent_volume_claim.py +136 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_resource_quota.py +92 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_role.py +96 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_role_binding.py +112 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_secret.py +118 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_service_account.py +96 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_service_info.py +140 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_service_ingress.py +90 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_service_port.py +96 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_storage_class.py +95 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_k8s_volume_info.py +104 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_metadata.py +90 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_namespaces_toggle_system_payload.py +88 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_pod.py +110 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_published_port.py +98 -0
- ptctools/portainer_client/openapi_client/models/kubernetes_tls_info.py +88 -0
- ptctools/portainer_client/openapi_client/models/ldap_check_payload.py +92 -0
- ptctools/portainer_client/openapi_client/models/motd_motd_response.py +96 -0
- ptctools/portainer_client/openapi_client/models/oauth2_auth_style.py +39 -0
- ptctools/portainer_client/openapi_client/models/openamt_device_action_payload.py +88 -0
- ptctools/portainer_client/openapi_client/models/openamt_device_features_payload.py +92 -0
- ptctools/portainer_client/openapi_client/models/openamt_open_amt_configure_payload.py +102 -0
- ptctools/portainer_client/openapi_client/models/os_file_mode.py +51 -0
- ptctools/portainer_client/openapi_client/models/platform_container_platform.py +41 -0
- ptctools/portainer_client/openapi_client/models/portainer_access_policy.py +88 -0
- ptctools/portainer_client/openapi_client/models/portainer_api_key.py +100 -0
- ptctools/portainer_client/openapi_client/models/portainer_authentication_method.py +40 -0
- ptctools/portainer_client/openapi_client/models/portainer_auto_update_settings.py +96 -0
- ptctools/portainer_client/openapi_client/models/portainer_azure_credentials.py +92 -0
- ptctools/portainer_client/openapi_client/models/portainer_custom_template.py +134 -0
- ptctools/portainer_client/openapi_client/models/portainer_custom_template_platform.py +39 -0
- ptctools/portainer_client/openapi_client/models/portainer_custom_template_variable_definition.py +94 -0
- ptctools/portainer_client/openapi_client/models/portainer_diagnostics_data.py +94 -0
- ptctools/portainer_client/openapi_client/models/portainer_docker_snapshot.py +136 -0
- ptctools/portainer_client/openapi_client/models/portainer_ecr_data.py +88 -0
- ptctools/portainer_client/openapi_client/models/portainer_edge.py +94 -0
- ptctools/portainer_client/openapi_client/models/portainer_edge_group.py +100 -0
- ptctools/portainer_client/openapi_client/models/portainer_edge_job.py +131 -0
- ptctools/portainer_client/openapi_client/models/portainer_edge_job_endpoint_meta.py +91 -0
- ptctools/portainer_client/openapi_client/models/portainer_edge_job_logs_status.py +40 -0
- ptctools/portainer_client/openapi_client/models/portainer_edge_stack.py +124 -0
- ptctools/portainer_client/openapi_client/models/portainer_edge_stack_deployment_status.py +97 -0
- ptctools/portainer_client/openapi_client/models/portainer_edge_stack_deployment_type.py +38 -0
- ptctools/portainer_client/openapi_client/models/portainer_edge_stack_status.py +117 -0
- ptctools/portainer_client/openapi_client/models/portainer_edge_stack_status_details.py +100 -0
- ptctools/portainer_client/openapi_client/models/portainer_edge_stack_status_type.py +50 -0
- ptctools/portainer_client/openapi_client/models/portainer_endpoint.py +233 -0
- ptctools/portainer_client/openapi_client/models/portainer_endpoint_agent.py +88 -0
- ptctools/portainer_client/openapi_client/models/portainer_endpoint_group.py +139 -0
- ptctools/portainer_client/openapi_client/models/portainer_endpoint_post_init_migrations.py +90 -0
- ptctools/portainer_client/openapi_client/models/portainer_endpoint_security_settings.py +104 -0
- ptctools/portainer_client/openapi_client/models/portainer_endpoint_status.py +39 -0
- ptctools/portainer_client/openapi_client/models/portainer_endpoint_type.py +44 -0
- ptctools/portainer_client/openapi_client/models/portainer_environment_edge_settings.py +94 -0
- ptctools/portainer_client/openapi_client/models/portainer_github_registry_data.py +90 -0
- ptctools/portainer_client/openapi_client/models/portainer_gitlab_registry_data.py +92 -0
- ptctools/portainer_client/openapi_client/models/portainer_global_deployment_options.py +88 -0
- ptctools/portainer_client/openapi_client/models/portainer_helm_user_repository.py +92 -0
- ptctools/portainer_client/openapi_client/models/portainer_internal_auth_settings.py +88 -0
- ptctools/portainer_client/openapi_client/models/portainer_k8s_namespace_info.py +114 -0
- ptctools/portainer_client/openapi_client/models/portainer_k8s_node_limits.py +90 -0
- ptctools/portainer_client/openapi_client/models/portainer_kubernetes_configuration.py +120 -0
- ptctools/portainer_client/openapi_client/models/portainer_kubernetes_data.py +108 -0
- ptctools/portainer_client/openapi_client/models/portainer_kubernetes_flags.py +92 -0
- ptctools/portainer_client/openapi_client/models/portainer_kubernetes_ingress_class_config.py +94 -0
- ptctools/portainer_client/openapi_client/models/portainer_kubernetes_snapshot.py +108 -0
- ptctools/portainer_client/openapi_client/models/portainer_kubernetes_storage_class_config.py +94 -0
- ptctools/portainer_client/openapi_client/models/portainer_ldap_group_search_settings.py +92 -0
- ptctools/portainer_client/openapi_client/models/portainer_ldap_search_settings.py +92 -0
- ptctools/portainer_client/openapi_client/models/portainer_ldap_settings.py +124 -0
- ptctools/portainer_client/openapi_client/models/portainer_membership_role.py +39 -0
- ptctools/portainer_client/openapi_client/models/portainer_o_auth_settings.py +115 -0
- ptctools/portainer_client/openapi_client/models/portainer_open_amt_configuration.py +104 -0
- ptctools/portainer_client/openapi_client/models/portainer_open_amt_device_enabled_features.py +96 -0
- ptctools/portainer_client/openapi_client/models/portainer_pair.py +90 -0
- ptctools/portainer_client/openapi_client/models/portainer_performance_metrics.py +92 -0
- ptctools/portainer_client/openapi_client/models/portainer_quay_registry_data.py +90 -0
- ptctools/portainer_client/openapi_client/models/portainer_registry.py +185 -0
- ptctools/portainer_client/openapi_client/models/portainer_registry_access_policies.py +117 -0
- ptctools/portainer_client/openapi_client/models/portainer_registry_management_configuration.py +111 -0
- ptctools/portainer_client/openapi_client/models/portainer_registry_type.py +45 -0
- ptctools/portainer_client/openapi_client/models/portainer_resource_access_level.py +38 -0
- ptctools/portainer_client/openapi_client/models/portainer_resource_control.py +126 -0
- ptctools/portainer_client/openapi_client/models/portainer_resource_control_type.py +46 -0
- ptctools/portainer_client/openapi_client/models/portainer_role.py +96 -0
- ptctools/portainer_client/openapi_client/models/portainer_settings.py +187 -0
- ptctools/portainer_client/openapi_client/models/portainer_ssl_settings.py +94 -0
- ptctools/portainer_client/openapi_client/models/portainer_stack.py +152 -0
- ptctools/portainer_client/openapi_client/models/portainer_stack_deployment_info.py +92 -0
- ptctools/portainer_client/openapi_client/models/portainer_stack_option.py +88 -0
- ptctools/portainer_client/openapi_client/models/portainer_stack_status.py +39 -0
- ptctools/portainer_client/openapi_client/models/portainer_stack_type.py +40 -0
- ptctools/portainer_client/openapi_client/models/portainer_tag.py +94 -0
- ptctools/portainer_client/openapi_client/models/portainer_team.py +90 -0
- ptctools/portainer_client/openapi_client/models/portainer_team_membership.py +95 -0
- ptctools/portainer_client/openapi_client/models/portainer_team_resource_access.py +91 -0
- ptctools/portainer_client/openapi_client/models/portainer_template.py +163 -0
- ptctools/portainer_client/openapi_client/models/portainer_template_env.py +106 -0
- ptctools/portainer_client/openapi_client/models/portainer_template_env_select.py +92 -0
- ptctools/portainer_client/openapi_client/models/portainer_template_repository.py +90 -0
- ptctools/portainer_client/openapi_client/models/portainer_template_type.py +40 -0
- ptctools/portainer_client/openapi_client/models/portainer_template_volume.py +92 -0
- ptctools/portainer_client/openapi_client/models/portainer_tls_configuration.py +96 -0
- ptctools/portainer_client/openapi_client/models/portainer_user.py +109 -0
- ptctools/portainer_client/openapi_client/models/portainer_user_resource_access.py +91 -0
- ptctools/portainer_client/openapi_client/models/portainer_user_role.py +39 -0
- ptctools/portainer_client/openapi_client/models/portainer_user_theme_settings.py +98 -0
- ptctools/portainer_client/openapi_client/models/portainer_webhook.py +99 -0
- ptctools/portainer_client/openapi_client/models/portainer_webhook_type.py +38 -0
- ptctools/portainer_client/openapi_client/models/registries_registry_configure_payload.py +104 -0
- ptctools/portainer_client/openapi_client/models/registries_registry_create_payload.py +119 -0
- ptctools/portainer_client/openapi_client/models/registries_registry_update_payload.py +125 -0
- ptctools/portainer_client/openapi_client/models/release_chart.py +121 -0
- ptctools/portainer_client/openapi_client/models/release_chart_reference.py +92 -0
- ptctools/portainer_client/openapi_client/models/release_dependency.py +102 -0
- ptctools/portainer_client/openapi_client/models/release_file.py +90 -0
- ptctools/portainer_client/openapi_client/models/release_lock.py +100 -0
- ptctools/portainer_client/openapi_client/models/release_maintainer.py +92 -0
- ptctools/portainer_client/openapi_client/models/release_metadata.py +136 -0
- ptctools/portainer_client/openapi_client/models/release_release_element.py +100 -0
- ptctools/portainer_client/openapi_client/models/release_values.py +90 -0
- ptctools/portainer_client/openapi_client/models/resource_quantity.py +98 -0
- ptctools/portainer_client/openapi_client/models/resourcecontrols_resource_control_create_payload.py +101 -0
- ptctools/portainer_client/openapi_client/models/resourcecontrols_resource_control_update_payload.py +94 -0
- ptctools/portainer_client/openapi_client/models/settings_public_settings_response.py +123 -0
- ptctools/portainer_client/openapi_client/models/settings_public_settings_response_edge.py +94 -0
- ptctools/portainer_client/openapi_client/models/settings_settings_update_payload.py +148 -0
- ptctools/portainer_client/openapi_client/models/ssl_ssl_update_payload.py +92 -0
- ptctools/portainer_client/openapi_client/models/stacks_compose_stack_from_file_content_payload.py +102 -0
- ptctools/portainer_client/openapi_client/models/stacks_compose_stack_from_git_repository_payload.py +122 -0
- ptctools/portainer_client/openapi_client/models/stacks_kubernetes_git_deployment_payload.py +114 -0
- ptctools/portainer_client/openapi_client/models/stacks_kubernetes_manifest_url_deployment_payload.py +94 -0
- ptctools/portainer_client/openapi_client/models/stacks_kubernetes_string_deployment_payload.py +96 -0
- ptctools/portainer_client/openapi_client/models/stacks_stack_file_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/stacks_stack_git_redploy_payload.py +113 -0
- ptctools/portainer_client/openapi_client/models/stacks_stack_git_update_payload.py +117 -0
- ptctools/portainer_client/openapi_client/models/stacks_stack_migrate_payload.py +92 -0
- ptctools/portainer_client/openapi_client/models/stacks_swarm_stack_from_file_content_payload.py +104 -0
- ptctools/portainer_client/openapi_client/models/stacks_swarm_stack_from_git_repository_payload.py +124 -0
- ptctools/portainer_client/openapi_client/models/stacks_update_swarm_stack_payload.py +102 -0
- ptctools/portainer_client/openapi_client/models/swarm_service_update_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/system_nodes_count_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/system_status.py +90 -0
- ptctools/portainer_client/openapi_client/models/system_system_info_response.py +93 -0
- ptctools/portainer_client/openapi_client/models/system_version_response.py +116 -0
- ptctools/portainer_client/openapi_client/models/tags_tag_create_payload.py +88 -0
- ptctools/portainer_client/openapi_client/models/teammemberships_team_membership_create_payload.py +92 -0
- ptctools/portainer_client/openapi_client/models/teammemberships_team_membership_update_payload.py +92 -0
- ptctools/portainer_client/openapi_client/models/teams_team_create_payload.py +90 -0
- ptctools/portainer_client/openapi_client/models/teams_team_update_payload.py +88 -0
- ptctools/portainer_client/openapi_client/models/templates_file_response.py +88 -0
- ptctools/portainer_client/openapi_client/models/templates_list_response.py +98 -0
- ptctools/portainer_client/openapi_client/models/unstructured_unstructured.py +88 -0
- ptctools/portainer_client/openapi_client/models/users_access_token_response.py +94 -0
- ptctools/portainer_client/openapi_client/models/users_add_helm_repo_url_payload.py +88 -0
- ptctools/portainer_client/openapi_client/models/users_admin_init_payload.py +90 -0
- ptctools/portainer_client/openapi_client/models/users_helm_user_repository_response.py +98 -0
- ptctools/portainer_client/openapi_client/models/users_theme_payload.py +98 -0
- ptctools/portainer_client/openapi_client/models/users_user_access_token_create_payload.py +90 -0
- ptctools/portainer_client/openapi_client/models/users_user_create_payload.py +92 -0
- ptctools/portainer_client/openapi_client/models/users_user_update_password_payload.py +90 -0
- ptctools/portainer_client/openapi_client/models/users_user_update_payload.py +102 -0
- ptctools/portainer_client/openapi_client/models/v1_app_armor_profile.py +91 -0
- ptctools/portainer_client/openapi_client/models/v1_app_armor_profile_type.py +39 -0
- ptctools/portainer_client/openapi_client/models/v1_capabilities.py +90 -0
- ptctools/portainer_client/openapi_client/models/v1_client_ip_config.py +88 -0
- ptctools/portainer_client/openapi_client/models/v1_condition.py +99 -0
- ptctools/portainer_client/openapi_client/models/v1_config_map_env_source.py +90 -0
- ptctools/portainer_client/openapi_client/models/v1_config_map_key_selector.py +92 -0
- ptctools/portainer_client/openapi_client/models/v1_container.py +207 -0
- ptctools/portainer_client/openapi_client/models/v1_container_port.py +97 -0
- ptctools/portainer_client/openapi_client/models/v1_container_resize_policy.py +92 -0
- ptctools/portainer_client/openapi_client/models/v1_container_restart_policy.py +37 -0
- ptctools/portainer_client/openapi_client/models/v1_csi_persistent_volume_source.py +122 -0
- ptctools/portainer_client/openapi_client/models/v1_duration.py +88 -0
- ptctools/portainer_client/openapi_client/models/v1_env_from_source.py +100 -0
- ptctools/portainer_client/openapi_client/models/v1_env_var.py +96 -0
- ptctools/portainer_client/openapi_client/models/v1_env_var_source.py +110 -0
- ptctools/portainer_client/openapi_client/models/v1_exec_action.py +88 -0
- ptctools/portainer_client/openapi_client/models/v1_grpc_action.py +90 -0
- ptctools/portainer_client/openapi_client/models/v1_http_get_action.py +109 -0
- ptctools/portainer_client/openapi_client/models/v1_http_header.py +90 -0
- ptctools/portainer_client/openapi_client/models/v1_ip_family.py +39 -0
- ptctools/portainer_client/openapi_client/models/v1_ip_family_policy.py +39 -0
- ptctools/portainer_client/openapi_client/models/v1_label_selector.py +98 -0
- ptctools/portainer_client/openapi_client/models/v1_label_selector_operator.py +40 -0
- ptctools/portainer_client/openapi_client/models/v1_label_selector_requirement.py +93 -0
- ptctools/portainer_client/openapi_client/models/v1_lifecycle.py +100 -0
- ptctools/portainer_client/openapi_client/models/v1_lifecycle_handler.py +110 -0
- ptctools/portainer_client/openapi_client/models/v1_list_meta.py +94 -0
- ptctools/portainer_client/openapi_client/models/v1_load_balancer_ingress.py +103 -0
- ptctools/portainer_client/openapi_client/models/v1_load_balancer_ip_mode.py +38 -0
- ptctools/portainer_client/openapi_client/models/v1_load_balancer_status.py +96 -0
- ptctools/portainer_client/openapi_client/models/v1_managed_fields_entry.py +101 -0
- ptctools/portainer_client/openapi_client/models/v1_managed_fields_operation_type.py +38 -0
- ptctools/portainer_client/openapi_client/models/v1_mount_propagation_mode.py +39 -0
- ptctools/portainer_client/openapi_client/models/v1_namespace_condition.py +98 -0
- ptctools/portainer_client/openapi_client/models/v1_namespace_condition_type.py +41 -0
- ptctools/portainer_client/openapi_client/models/v1_namespace_phase.py +38 -0
- ptctools/portainer_client/openapi_client/models/v1_namespace_status.py +99 -0
- ptctools/portainer_client/openapi_client/models/v1_object_field_selector.py +90 -0
- ptctools/portainer_client/openapi_client/models/v1_object_meta.py +132 -0
- ptctools/portainer_client/openapi_client/models/v1_object_reference.py +100 -0
- ptctools/portainer_client/openapi_client/models/v1_owner_reference.py +98 -0
- ptctools/portainer_client/openapi_client/models/v1_persistent_volume_access_mode.py +40 -0
- ptctools/portainer_client/openapi_client/models/v1_persistent_volume_claim_phase.py +39 -0
- ptctools/portainer_client/openapi_client/models/v1_persistent_volume_mode.py +38 -0
- ptctools/portainer_client/openapi_client/models/v1_persistent_volume_reclaim_policy.py +39 -0
- ptctools/portainer_client/openapi_client/models/v1_port_status.py +93 -0
- ptctools/portainer_client/openapi_client/models/v1_probe.py +122 -0
- ptctools/portainer_client/openapi_client/models/v1_proc_mount_type.py +38 -0
- ptctools/portainer_client/openapi_client/models/v1_protocol.py +39 -0
- ptctools/portainer_client/openapi_client/models/v1_pull_policy.py +39 -0
- ptctools/portainer_client/openapi_client/models/v1_recursive_read_only_mode.py +39 -0
- ptctools/portainer_client/openapi_client/models/v1_resource_claim.py +90 -0
- ptctools/portainer_client/openapi_client/models/v1_resource_field_selector.py +96 -0
- ptctools/portainer_client/openapi_client/models/v1_resource_name.py +56 -0
- ptctools/portainer_client/openapi_client/models/v1_resource_quota.py +108 -0
- ptctools/portainer_client/openapi_client/models/v1_resource_quota_scope.py +43 -0
- ptctools/portainer_client/openapi_client/models/v1_resource_quota_spec.py +110 -0
- ptctools/portainer_client/openapi_client/models/v1_resource_quota_status.py +115 -0
- ptctools/portainer_client/openapi_client/models/v1_resource_requirements.py +125 -0
- ptctools/portainer_client/openapi_client/models/v1_resource_resize_restart_policy.py +38 -0
- ptctools/portainer_client/openapi_client/models/v1_role_ref.py +92 -0
- ptctools/portainer_client/openapi_client/models/v1_scope_selector.py +96 -0
- ptctools/portainer_client/openapi_client/models/v1_scope_selector_operator.py +40 -0
- ptctools/portainer_client/openapi_client/models/v1_scoped_resource_selector_requirement.py +94 -0
- ptctools/portainer_client/openapi_client/models/v1_se_linux_options.py +94 -0
- ptctools/portainer_client/openapi_client/models/v1_seccomp_profile.py +91 -0
- ptctools/portainer_client/openapi_client/models/v1_seccomp_profile_type.py +39 -0
- ptctools/portainer_client/openapi_client/models/v1_secret_env_source.py +90 -0
- ptctools/portainer_client/openapi_client/models/v1_secret_key_selector.py +92 -0
- ptctools/portainer_client/openapi_client/models/v1_secret_reference.py +90 -0
- ptctools/portainer_client/openapi_client/models/v1_security_context.py +131 -0
- ptctools/portainer_client/openapi_client/models/v1_service.py +108 -0
- ptctools/portainer_client/openapi_client/models/v1_service_affinity.py +38 -0
- ptctools/portainer_client/openapi_client/models/v1_service_external_traffic_policy.py +40 -0
- ptctools/portainer_client/openapi_client/models/v1_service_internal_traffic_policy.py +38 -0
- ptctools/portainer_client/openapi_client/models/v1_service_port.py +103 -0
- ptctools/portainer_client/openapi_client/models/v1_service_spec.py +144 -0
- ptctools/portainer_client/openapi_client/models/v1_service_status.py +102 -0
- ptctools/portainer_client/openapi_client/models/v1_service_type.py +40 -0
- ptctools/portainer_client/openapi_client/models/v1_session_affinity_config.py +92 -0
- ptctools/portainer_client/openapi_client/models/v1_signal.py +101 -0
- ptctools/portainer_client/openapi_client/models/v1_sleep_action.py +88 -0
- ptctools/portainer_client/openapi_client/models/v1_tcp_socket_action.py +94 -0
- ptctools/portainer_client/openapi_client/models/v1_termination_message_policy.py +38 -0
- ptctools/portainer_client/openapi_client/models/v1_uri_scheme.py +38 -0
- ptctools/portainer_client/openapi_client/models/v1_volume_device.py +90 -0
- ptctools/portainer_client/openapi_client/models/v1_volume_mount.py +102 -0
- ptctools/portainer_client/openapi_client/models/v1_windows_security_context_options.py +94 -0
- ptctools/portainer_client/openapi_client/models/v1beta1_container_metrics.py +103 -0
- ptctools/portainer_client/openapi_client/models/v1beta1_node_metrics.py +119 -0
- ptctools/portainer_client/openapi_client/models/v1beta1_node_metrics_list.py +106 -0
- ptctools/portainer_client/openapi_client/models/v1beta1_pod_metrics.py +114 -0
- ptctools/portainer_client/openapi_client/models/v1beta1_pod_metrics_list.py +106 -0
- ptctools/portainer_client/openapi_client/models/v2_container_resource_metric_source.py +97 -0
- ptctools/portainer_client/openapi_client/models/v2_container_resource_metric_status.py +97 -0
- ptctools/portainer_client/openapi_client/models/v2_cross_version_object_reference.py +92 -0
- ptctools/portainer_client/openapi_client/models/v2_external_metric_source.py +98 -0
- ptctools/portainer_client/openapi_client/models/v2_external_metric_status.py +98 -0
- ptctools/portainer_client/openapi_client/models/v2_horizontal_pod_autoscaler.py +108 -0
- ptctools/portainer_client/openapi_client/models/v2_horizontal_pod_autoscaler_behavior.py +97 -0
- ptctools/portainer_client/openapi_client/models/v2_horizontal_pod_autoscaler_condition.py +98 -0
- ptctools/portainer_client/openapi_client/models/v2_horizontal_pod_autoscaler_condition_type.py +39 -0
- ptctools/portainer_client/openapi_client/models/v2_horizontal_pod_autoscaler_spec.py +112 -0
- ptctools/portainer_client/openapi_client/models/v2_horizontal_pod_autoscaler_status.py +114 -0
- ptctools/portainer_client/openapi_client/models/v2_hpa_scaling_policy.py +93 -0
- ptctools/portainer_client/openapi_client/models/v2_hpa_scaling_policy_type.py +38 -0
- ptctools/portainer_client/openapi_client/models/v2_hpa_scaling_rules.py +107 -0
- ptctools/portainer_client/openapi_client/models/v2_metric_identifier.py +94 -0
- ptctools/portainer_client/openapi_client/models/v2_metric_source_type.py +41 -0
- ptctools/portainer_client/openapi_client/models/v2_metric_spec.py +119 -0
- ptctools/portainer_client/openapi_client/models/v2_metric_status.py +119 -0
- ptctools/portainer_client/openapi_client/models/v2_metric_target.py +102 -0
- ptctools/portainer_client/openapi_client/models/v2_metric_target_type.py +39 -0
- ptctools/portainer_client/openapi_client/models/v2_metric_value_status.py +99 -0
- ptctools/portainer_client/openapi_client/models/v2_object_metric_source.py +104 -0
- ptctools/portainer_client/openapi_client/models/v2_object_metric_status.py +104 -0
- ptctools/portainer_client/openapi_client/models/v2_pods_metric_source.py +98 -0
- ptctools/portainer_client/openapi_client/models/v2_pods_metric_status.py +98 -0
- ptctools/portainer_client/openapi_client/models/v2_resource_metric_source.py +95 -0
- ptctools/portainer_client/openapi_client/models/v2_resource_metric_status.py +95 -0
- ptctools/portainer_client/openapi_client/models/v2_scaling_policy_select.py +39 -0
- ptctools/portainer_client/openapi_client/models/webhooks_webhook_create_payload.py +95 -0
- ptctools/portainer_client/openapi_client/models/webhooks_webhook_update_payload.py +88 -0
- ptctools/portainer_client/openapi_client/rest.py +264 -0
- ptctools/portainer_client/openapi_client/test/__init__.py +0 -0
- ptctools/portainer_client/openapi_client/test/test_auth_api.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_auth_authenticate_payload.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_auth_authenticate_response.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_auth_oauth_payload.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_backup_api.py +46 -0
- ptctools/portainer_client/openapi_client/test/test_backup_backup_payload.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_backup_restore_payload.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_build_build_info.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_build_dependencies_info.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_build_runtime_info.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_containers_container_gpus_response.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_custom_templates_api.py +95 -0
- ptctools/portainer_client/openapi_client/test/test_customtemplates_custom_template_from_file_content_payload.py +70 -0
- ptctools/portainer_client/openapi_client/test/test_customtemplates_custom_template_from_git_repository_payload.py +77 -0
- ptctools/portainer_client/openapi_client/test/test_customtemplates_custom_template_update_payload.py +81 -0
- ptctools/portainer_client/openapi_client/test/test_customtemplates_file_response.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_docker_api.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_docker_container_stats.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_docker_dashboard_response.py +64 -0
- ptctools/portainer_client/openapi_client/test/test_docker_images_counters.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_edge_api.py +46 -0
- ptctools/portainer_client/openapi_client/test/test_edge_deployer_options_payload.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_edge_groups_api.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_edge_jobs_api.py +109 -0
- ptctools/portainer_client/openapi_client/test/test_edge_registry_credentials.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_edge_stack_payload.py +88 -0
- ptctools/portainer_client/openapi_client/test/test_edge_stacks_api.py +102 -0
- ptctools/portainer_client/openapi_client/test/test_edgegroups_decorated_edge_group.py +70 -0
- ptctools/portainer_client/openapi_client/test/test_edgegroups_edge_group_create_payload.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_edgegroups_edge_group_update_payload.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_edgejobs_edge_job_create_from_file_content_payload.py +61 -0
- ptctools/portainer_client/openapi_client/test/test_edgejobs_edge_job_file_response.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_edgejobs_edge_job_update_payload.py +61 -0
- ptctools/portainer_client/openapi_client/test/test_edgejobs_file_response.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_edgejobs_task_container.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_edgestacks_edge_stack_from_git_repository_payload.py +69 -0
- ptctools/portainer_client/openapi_client/test/test_edgestacks_edge_stack_from_string_payload.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_edgestacks_stack_file_response.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_edgestacks_update_edge_stack_payload.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_edgestacks_update_status_payload.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_endpoint_groups_api.py +81 -0
- ptctools/portainer_client/openapi_client/test/test_endpointedge_edge_job_response.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_endpointedge_endpoint_edge_status_inspect_response.py +68 -0
- ptctools/portainer_client/openapi_client/test/test_endpointedge_stack_status_response.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_endpointgroups_endpoint_group_create_payload.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_endpointgroups_endpoint_group_update_payload.py +62 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_api.py +179 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_dockerhub_status_response.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_endpoint_create_global_key_response.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_endpoint_delete_batch_partial_response.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_endpoint_delete_batch_payload.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_endpoint_delete_request.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_endpoint_settings_update_payload.py +66 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_endpoint_update_payload.py +131 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_endpoint_update_relations_payload.py +61 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_endpoint_update_relations_payload_relations_value.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_force_update_service_payload.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_endpoints_registry_access_payload.py +62 -0
- ptctools/portainer_client/openapi_client/test/test_filesystem_dir_entry.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_github_com_portainer_portainer_pkg_libhelm_release_hook.py +66 -0
- ptctools/portainer_client/openapi_client/test/test_github_com_portainer_portainer_pkg_libhelm_release_hook_execution.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_github_com_portainer_portainer_pkg_libhelm_release_info.py +61 -0
- ptctools/portainer_client/openapi_client/test/test_github_com_portainer_portainer_pkg_libhelm_release_release.py +112 -0
- ptctools/portainer_client/openapi_client/test/test_gitops_api.py +39 -0
- ptctools/portainer_client/openapi_client/test/test_gitops_file_response.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_gitops_repository_file_preview_payload.py +59 -0
- ptctools/portainer_client/openapi_client/test/test_gittypes_git_authentication.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_gittypes_git_credential_auth_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_gittypes_repo_config.py +61 -0
- ptctools/portainer_client/openapi_client/test/test_helm_api.py +109 -0
- ptctools/portainer_client/openapi_client/test/test_helm_install_chart_payload.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_images_image_response.py +59 -0
- ptctools/portainer_client/openapi_client/test/test_intel_api.py +74 -0
- ptctools/portainer_client/openapi_client/test/test_intstr_int_or_string.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_intstr_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_k8s_io_api_core_v1_condition_status.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_k8s_io_api_rbac_v1_subject.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_k8s_io_apimachinery_pkg_apis_meta_v1_condition_status.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_api.py +480 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_configuration.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_custom_resource_metadata.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_describe_resource_response.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_ingress_rule.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_application.py +152 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_application_resource.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_cluster_role.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_cluster_role_binding.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_config_map.py +73 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_configuration_owner_resource.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_cron_job.py +138 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_dashboard.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_event.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_event_involved_object.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_ingress_controller.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_ingress_info.py +83 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_ingress_path.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_ingress_tls.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_job.py +127 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_namespace_details.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_persistent_volume.py +86 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_persistent_volume_claim.py +174 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_resource_quota.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_role.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_role_binding.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_secret.py +74 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_service_account.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_service_info.py +190 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_service_ingress.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_service_port.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_storage_class.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_k8s_volume_info.py +213 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_metadata.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_namespaces_toggle_system_payload.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_pod.py +65 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_published_port.py +64 -0
- ptctools/portainer_client/openapi_client/test/test_kubernetes_tls_info.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_ldap_api.py +39 -0
- ptctools/portainer_client/openapi_client/test/test_ldap_check_payload.py +76 -0
- ptctools/portainer_client/openapi_client/test/test_motd_api.py +39 -0
- ptctools/portainer_client/openapi_client/test/test_motd_motd_response.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_oauth2_auth_style.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_openamt_device_action_payload.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_openamt_device_features_payload.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_openamt_open_amt_configure_payload.py +59 -0
- ptctools/portainer_client/openapi_client/test/test_os_file_mode.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_platform_container_platform.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_access_policy.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_api_key.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_authentication_method.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_auto_update_settings.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_azure_credentials.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_custom_template.py +95 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_custom_template_platform.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_custom_template_variable_definition.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_diagnostics_data.py +61 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_docker_snapshot.py +87 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_ecr_data.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_edge.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_edge_group.py +62 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_edge_job.py +71 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_edge_job_endpoint_meta.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_edge_job_logs_status.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_edge_stack.py +81 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_edge_stack_deployment_status.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_edge_stack_deployment_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_edge_stack_status.py +75 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_edge_stack_status_details.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_edge_stack_status_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_endpoint.py +222 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_endpoint_agent.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_endpoint_group.py +79 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_endpoint_post_init_migrations.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_endpoint_security_settings.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_endpoint_status.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_endpoint_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_environment_edge_settings.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_github_registry_data.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_gitlab_registry_data.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_global_deployment_options.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_helm_user_repository.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_internal_auth_settings.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_k8s_namespace_info.py +77 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_k8s_node_limits.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_kubernetes_configuration.py +76 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_kubernetes_data.py +104 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_kubernetes_flags.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_kubernetes_ingress_class_config.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_kubernetes_snapshot.py +71 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_kubernetes_storage_class_config.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_ldap_group_search_settings.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_ldap_search_settings.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_ldap_settings.py +75 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_membership_role.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_o_auth_settings.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_open_amt_configuration.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_open_amt_device_enabled_features.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_pair.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_performance_metrics.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_quay_registry_data.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_registry.py +116 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_registry_access_policies.py +62 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_registry_management_configuration.py +65 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_registry_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_resource_access_level.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_resource_control.py +70 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_resource_control_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_role.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_settings.py +146 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_ssl_settings.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_stack.py +106 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_stack_deployment_info.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_stack_option.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_stack_status.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_stack_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_tag.py +59 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_team.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_team_membership.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_team_resource_access.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_template.py +99 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_template_env.py +62 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_template_env_select.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_template_repository.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_template_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_template_volume.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_tls_configuration.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_user.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_user_resource_access.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_user_role.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_user_theme_settings.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_webhook.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_portainer_webhook_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_registries_api.py +74 -0
- ptctools/portainer_client/openapi_client/test/test_registries_registry_configure_payload.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_registries_registry_create_payload.py +71 -0
- ptctools/portainer_client/openapi_client/test/test_registries_registry_update_payload.py +79 -0
- ptctools/portainer_client/openapi_client/test/test_release_chart.py +132 -0
- ptctools/portainer_client/openapi_client/test/test_release_chart_reference.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_release_dependency.py +63 -0
- ptctools/portainer_client/openapi_client/test/test_release_file.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_release_lock.py +68 -0
- ptctools/portainer_client/openapi_client/test/test_release_maintainer.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_release_metadata.py +93 -0
- ptctools/portainer_client/openapi_client/test/test_release_release_element.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_release_values.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_resource_controls_api.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_resource_quantity.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_resourcecontrols_resource_control_create_payload.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_resourcecontrols_resource_control_update_payload.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_roles_api.py +39 -0
- ptctools/portainer_client/openapi_client/test/test_settings_api.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_settings_public_settings_response.py +72 -0
- ptctools/portainer_client/openapi_client/test/test_settings_public_settings_response_edge.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_settings_settings_update_payload.py +116 -0
- ptctools/portainer_client/openapi_client/test/test_ssl_api.py +46 -0
- ptctools/portainer_client/openapi_client/test/test_ssl_ssl_update_payload.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_api.py +186 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_compose_stack_from_file_content_payload.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_compose_stack_from_git_repository_payload.py +74 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_kubernetes_git_deployment_payload.py +70 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_kubernetes_manifest_url_deployment_payload.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_kubernetes_string_deployment_payload.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_stack_file_response.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_stack_git_redploy_payload.py +64 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_stack_git_update_payload.py +69 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_stack_migrate_payload.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_swarm_stack_from_file_content_payload.py +69 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_swarm_stack_from_git_repository_payload.py +76 -0
- ptctools/portainer_client/openapi_client/test/test_stacks_update_swarm_stack_payload.py +62 -0
- ptctools/portainer_client/openapi_client/test/test_status_api.py +39 -0
- ptctools/portainer_client/openapi_client/test/test_swarm_service_update_response.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_system_api.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_system_nodes_count_response.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_system_status.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_system_system_info_response.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_system_version_response.py +74 -0
- ptctools/portainer_client/openapi_client/test/test_tags_api.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_tags_tag_create_payload.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_team_memberships_api.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_teammemberships_team_membership_create_payload.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_teammemberships_team_membership_update_payload.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_teams_api.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_teams_team_create_payload.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_teams_team_update_payload.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_templates_api.py +46 -0
- ptctools/portainer_client/openapi_client/test/test_templates_file_response.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_templates_list_response.py +101 -0
- ptctools/portainer_client/openapi_client/test/test_unstructured_unstructured.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_upload_api.py +39 -0
- ptctools/portainer_client/openapi_client/test/test_users_access_token_response.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_users_add_helm_repo_url_payload.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_users_admin_init_payload.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_users_api.py +123 -0
- ptctools/portainer_client/openapi_client/test/test_users_helm_user_repository_response.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_users_theme_payload.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_users_user_access_token_create_payload.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_users_user_create_payload.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_users_user_update_password_payload.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_users_user_update_payload.py +63 -0
- ptctools/portainer_client/openapi_client/test/test_v1_app_armor_profile.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_app_armor_profile_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_capabilities.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_v1_client_ip_config.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_v1_condition.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_v1_config_map_env_source.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_config_map_key_selector.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_v1_container.py +165 -0
- ptctools/portainer_client/openapi_client/test/test_v1_container_port.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_v1_container_resize_policy.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_container_restart_policy.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_csi_persistent_volume_source.py +73 -0
- ptctools/portainer_client/openapi_client/test/test_v1_duration.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_v1_env_from_source.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_v1_env_var.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_v1_env_var_source.py +66 -0
- ptctools/portainer_client/openapi_client/test/test_v1_exec_action.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_v1_grpc_action.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_http_get_action.py +63 -0
- ptctools/portainer_client/openapi_client/test/test_v1_http_header.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_ip_family.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_ip_family_policy.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_label_selector.py +62 -0
- ptctools/portainer_client/openapi_client/test/test_v1_label_selector_operator.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_label_selector_requirement.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_v1_lifecycle.py +62 -0
- ptctools/portainer_client/openapi_client/test/test_v1_lifecycle_handler.py +70 -0
- ptctools/portainer_client/openapi_client/test/test_v1_list_meta.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_v1_load_balancer_ingress.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_v1_load_balancer_ip_mode.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_load_balancer_status.py +63 -0
- ptctools/portainer_client/openapi_client/test/test_v1_managed_fields_entry.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_v1_managed_fields_operation_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_mount_propagation_mode.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_namespace_condition.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_v1_namespace_condition_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_namespace_phase.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_namespace_status.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_v1_object_field_selector.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_object_meta.py +89 -0
- ptctools/portainer_client/openapi_client/test/test_v1_object_reference.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_v1_owner_reference.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_v1_persistent_volume_access_mode.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_persistent_volume_claim_phase.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_persistent_volume_mode.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_persistent_volume_reclaim_policy.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_port_status.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_v1_probe.py +77 -0
- ptctools/portainer_client/openapi_client/test/test_v1_proc_mount_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_protocol.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_pull_policy.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_recursive_read_only_mode.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_resource_claim.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_resource_field_selector.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_v1_resource_name.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_resource_quota.py +101 -0
- ptctools/portainer_client/openapi_client/test/test_v1_resource_quota_scope.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_resource_quota_spec.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_v1_resource_quota_status.py +59 -0
- ptctools/portainer_client/openapi_client/test/test_v1_resource_requirements.py +64 -0
- ptctools/portainer_client/openapi_client/test/test_v1_resource_resize_restart_policy.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_role_ref.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_v1_scope_selector.py +59 -0
- ptctools/portainer_client/openapi_client/test/test_v1_scope_selector_operator.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_scoped_resource_selector_requirement.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_v1_se_linux_options.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_v1_seccomp_profile.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_seccomp_profile_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_secret_env_source.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_secret_key_selector.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_v1_secret_reference.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_security_context.py +81 -0
- ptctools/portainer_client/openapi_client/test/test_v1_service.py +142 -0
- ptctools/portainer_client/openapi_client/test/test_v1_service_affinity.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_service_external_traffic_policy.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_service_internal_traffic_policy.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_service_port.py +60 -0
- ptctools/portainer_client/openapi_client/test/test_v1_service_spec.py +90 -0
- ptctools/portainer_client/openapi_client/test/test_v1_service_status.py +73 -0
- ptctools/portainer_client/openapi_client/test/test_v1_service_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_session_affinity_config.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_signal.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_sleep_action.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_v1_tcp_socket_action.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_v1_termination_message_policy.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_uri_scheme.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v1_volume_device.py +53 -0
- ptctools/portainer_client/openapi_client/test/test_v1_volume_mount.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_v1_windows_security_context_options.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_v1beta1_container_metrics.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_v1beta1_node_metrics.py +99 -0
- ptctools/portainer_client/openapi_client/test/test_v1beta1_node_metrics_list.py +68 -0
- ptctools/portainer_client/openapi_client/test/test_v1beta1_pod_metrics.py +100 -0
- ptctools/portainer_client/openapi_client/test/test_v1beta1_pod_metrics_list.py +72 -0
- ptctools/portainer_client/openapi_client/test/test_v2_container_resource_metric_source.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_v2_container_resource_metric_status.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_v2_cross_version_object_reference.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_v2_external_metric_source.py +59 -0
- ptctools/portainer_client/openapi_client/test/test_v2_external_metric_status.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_v2_horizontal_pod_autoscaler.py +128 -0
- ptctools/portainer_client/openapi_client/test/test_v2_horizontal_pod_autoscaler_behavior.py +71 -0
- ptctools/portainer_client/openapi_client/test/test_v2_horizontal_pod_autoscaler_condition.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_v2_horizontal_pod_autoscaler_condition_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v2_horizontal_pod_autoscaler_spec.py +69 -0
- ptctools/portainer_client/openapi_client/test/test_v2_horizontal_pod_autoscaler_status.py +72 -0
- ptctools/portainer_client/openapi_client/test/test_v2_hpa_scaling_policy.py +54 -0
- ptctools/portainer_client/openapi_client/test/test_v2_hpa_scaling_policy_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v2_hpa_scaling_rules.py +61 -0
- ptctools/portainer_client/openapi_client/test/test_v2_metric_identifier.py +64 -0
- ptctools/portainer_client/openapi_client/test/test_v2_metric_source_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v2_metric_spec.py +69 -0
- ptctools/portainer_client/openapi_client/test/test_v2_metric_status.py +69 -0
- ptctools/portainer_client/openapi_client/test/test_v2_metric_target.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_v2_metric_target_type.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_v2_metric_value_status.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_v2_object_metric_source.py +63 -0
- ptctools/portainer_client/openapi_client/test/test_v2_object_metric_status.py +62 -0
- ptctools/portainer_client/openapi_client/test/test_v2_pods_metric_source.py +59 -0
- ptctools/portainer_client/openapi_client/test/test_v2_pods_metric_status.py +58 -0
- ptctools/portainer_client/openapi_client/test/test_v2_resource_metric_source.py +57 -0
- ptctools/portainer_client/openapi_client/test/test_v2_resource_metric_status.py +56 -0
- ptctools/portainer_client/openapi_client/test/test_v2_scaling_policy_select.py +34 -0
- ptctools/portainer_client/openapi_client/test/test_webhooks_api.py +67 -0
- ptctools/portainer_client/openapi_client/test/test_webhooks_webhook_create_payload.py +55 -0
- ptctools/portainer_client/openapi_client/test/test_webhooks_webhook_update_payload.py +52 -0
- ptctools/portainer_client/openapi_client/test/test_websocket_api.py +60 -0
- ptctools/portainer_client/openapi_client_README.md +707 -0
- ptctools/secret.py +146 -0
- ptctools/stack.py +216 -261
- ptctools/utils.py +8 -0
- ptctools/volume.py +668 -89
- ptctools-0.2.0.dist-info/METADATA +162 -0
- ptctools-0.2.0.dist-info/RECORD +1241 -0
- ptctools-0.1.0.dist-info/METADATA +0 -99
- ptctools-0.1.0.dist-info/RECORD +0 -14
- {ptctools-0.1.0.dist-info → ptctools-0.2.0.dist-info}/WHEEL +0 -0
- {ptctools-0.1.0.dist-info → ptctools-0.2.0.dist-info}/entry_points.txt +0 -0
- {ptctools-0.1.0.dist-info → ptctools-0.2.0.dist-info}/licenses/LICENSE +0 -0
ptctools/volume.py
CHANGED
|
@@ -2,12 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
+
import logging
|
|
5
6
|
import os
|
|
6
7
|
import sys
|
|
8
|
+
import traceback
|
|
7
9
|
|
|
8
10
|
import click
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
import docker
|
|
12
|
+
|
|
13
|
+
from ptctools._portainer import (
|
|
14
|
+
get_portainer_docker_client,
|
|
15
|
+
copy_volume_resource_control,
|
|
16
|
+
set_volume_ownership,
|
|
17
|
+
run_container,
|
|
18
|
+
PortainerError,
|
|
19
|
+
ResourceControlError,
|
|
20
|
+
VolumeOwnershipError,
|
|
21
|
+
)
|
|
11
22
|
from ptctools._s3 import (
|
|
12
23
|
parse_s3_uri,
|
|
13
24
|
get_s3_endpoint,
|
|
@@ -15,6 +26,14 @@ from ptctools._s3 import (
|
|
|
15
26
|
build_duplicati_s3_url,
|
|
16
27
|
)
|
|
17
28
|
|
|
29
|
+
logger = logging.getLogger(__name__)
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class VolumeError(PortainerError):
|
|
33
|
+
"""Exception for volume operations."""
|
|
34
|
+
|
|
35
|
+
pass
|
|
36
|
+
|
|
18
37
|
|
|
19
38
|
def backup_volume(
|
|
20
39
|
portainer_url: str,
|
|
@@ -27,51 +46,64 @@ def backup_volume(
|
|
|
27
46
|
s3_secret_key: str,
|
|
28
47
|
keep_versions: int,
|
|
29
48
|
passphrase: str,
|
|
30
|
-
) ->
|
|
31
|
-
"""Backup a single volume to S3 using Duplicati CLI.
|
|
49
|
+
) -> None:
|
|
50
|
+
"""Backup a single volume to S3 using Duplicati CLI.
|
|
51
|
+
|
|
52
|
+
Raises:
|
|
53
|
+
VolumeError: If backup fails
|
|
54
|
+
"""
|
|
32
55
|
s3_dest = build_duplicati_s3_url(s3_bucket, volume_name, s3_endpoint)
|
|
33
56
|
|
|
34
57
|
click.echo(f"Backing up {volume_name} using Duplicati...")
|
|
35
58
|
|
|
36
59
|
# Common options for both repair and backup
|
|
37
|
-
common_opts = " ".join(
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
60
|
+
common_opts = " ".join(
|
|
61
|
+
[
|
|
62
|
+
f"--aws-access-key-id={s3_access_key}",
|
|
63
|
+
f"--aws-secret-access-key={s3_secret_key}",
|
|
64
|
+
f"--passphrase={passphrase}" if passphrase else "--no-encryption",
|
|
65
|
+
"--dbpath=/tmp/duplicati.sqlite",
|
|
66
|
+
]
|
|
67
|
+
)
|
|
43
68
|
|
|
44
69
|
# Repair command to rebuild local database from remote
|
|
45
70
|
repair_cmd = f"duplicati-cli repair '{s3_dest}' {common_opts}"
|
|
46
71
|
|
|
47
72
|
# Backup command
|
|
48
|
-
backup_cmd = " ".join(
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
73
|
+
backup_cmd = " ".join(
|
|
74
|
+
[
|
|
75
|
+
"duplicati-cli",
|
|
76
|
+
"backup",
|
|
77
|
+
f"'{s3_dest}'",
|
|
78
|
+
"/data",
|
|
79
|
+
common_opts,
|
|
80
|
+
f"--keep-versions={keep_versions}",
|
|
81
|
+
"--retention-policy=",
|
|
82
|
+
]
|
|
83
|
+
)
|
|
57
84
|
|
|
58
85
|
# Run repair first (rebuilds local DB from remote), then backup
|
|
59
86
|
# Use ; instead of && because repair may return non-zero for warnings
|
|
60
87
|
full_cmd = f"{repair_cmd}; {backup_cmd}"
|
|
61
88
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
89
|
+
try:
|
|
90
|
+
client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
91
|
+
|
|
92
|
+
# Pull image
|
|
93
|
+
# check if image unused then remove image handled by run_container
|
|
94
|
+
|
|
95
|
+
# Run container
|
|
96
|
+
exit_code, logs = run_container(
|
|
97
|
+
client=client,
|
|
98
|
+
image="duplicati/duplicati:latest",
|
|
99
|
+
entrypoint=["/bin/sh", "-c"],
|
|
100
|
+
command=[full_cmd],
|
|
101
|
+
binds=[f"{volume_name}:/data:ro"],
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
except docker.errors.APIError as e:
|
|
105
|
+
click.echo(f" ✗ Backup failed: {e}")
|
|
106
|
+
raise VolumeError(f"Backup failed: {e}") from e
|
|
75
107
|
|
|
76
108
|
# Check for backup failure
|
|
77
109
|
# Exit code 1 with "0 files need to be examined" = success (no changes)
|
|
@@ -80,7 +112,7 @@ def backup_volume(
|
|
|
80
112
|
click.echo(f" ✗ Backup failed with exit code {exit_code}")
|
|
81
113
|
if logs:
|
|
82
114
|
click.echo(f" Logs: {logs}")
|
|
83
|
-
|
|
115
|
+
raise VolumeError(f"Backup failed with exit code {exit_code}")
|
|
84
116
|
|
|
85
117
|
click.echo(f" ✓ Backup completed: s3://{s3_bucket}/{volume_name}")
|
|
86
118
|
if logs:
|
|
@@ -91,8 +123,6 @@ def backup_volume(
|
|
|
91
123
|
):
|
|
92
124
|
click.echo(f" {line.strip()}")
|
|
93
125
|
|
|
94
|
-
return True
|
|
95
|
-
|
|
96
126
|
|
|
97
127
|
def restore_volume(
|
|
98
128
|
portainer_url: str,
|
|
@@ -107,11 +137,14 @@ def restore_volume(
|
|
|
107
137
|
passphrase: str,
|
|
108
138
|
version: int | None,
|
|
109
139
|
restore_time: str | None,
|
|
110
|
-
) ->
|
|
140
|
+
) -> None:
|
|
111
141
|
"""Restore a single volume from S3 using Duplicati CLI.
|
|
112
|
-
|
|
142
|
+
|
|
113
143
|
Args:
|
|
114
144
|
s3_path: S3 path to restore from (used directly, no modification).
|
|
145
|
+
|
|
146
|
+
Raises:
|
|
147
|
+
VolumeError: If restore fails
|
|
115
148
|
"""
|
|
116
149
|
s3_dest = build_duplicati_s3_url(s3_bucket, s3_path, s3_endpoint)
|
|
117
150
|
|
|
@@ -137,26 +170,30 @@ def restore_volume(
|
|
|
137
170
|
|
|
138
171
|
restore_cmd = [c for c in restore_cmd if c]
|
|
139
172
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
173
|
+
try:
|
|
174
|
+
client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
175
|
+
|
|
176
|
+
# Run container
|
|
177
|
+
exit_code, logs = run_container(
|
|
178
|
+
client=client,
|
|
179
|
+
image="duplicati/duplicati:latest",
|
|
180
|
+
command=restore_cmd,
|
|
181
|
+
binds=[f"{volume_name}:/data"],
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
except docker.errors.APIError as e:
|
|
185
|
+
click.echo(f" ✗ Restore failed: {e}")
|
|
186
|
+
raise VolumeError(f"Restore failed: {e}") from e
|
|
152
187
|
|
|
153
188
|
# Success if exit_code == 0, or exit_code == 2 with no files needing restore (already up-to-date)
|
|
154
|
-
already_up_to_date =
|
|
189
|
+
already_up_to_date = (
|
|
190
|
+
exit_code == 2 and logs and "0 files need to be restored" in logs
|
|
191
|
+
)
|
|
155
192
|
if exit_code != 0 and not already_up_to_date:
|
|
156
193
|
click.echo(f" ✗ Restore failed with exit code {exit_code}")
|
|
157
194
|
if logs:
|
|
158
195
|
click.echo(f" Logs: {logs}")
|
|
159
|
-
|
|
196
|
+
raise VolumeError(f"Restore failed with exit code {exit_code}")
|
|
160
197
|
|
|
161
198
|
click.echo(f" ✓ Restore completed from s3://{s3_bucket}/{volume_name}")
|
|
162
199
|
if logs:
|
|
@@ -166,8 +203,6 @@ def restore_volume(
|
|
|
166
203
|
):
|
|
167
204
|
click.echo(f" {line.strip()}")
|
|
168
205
|
|
|
169
|
-
return True
|
|
170
|
-
|
|
171
206
|
|
|
172
207
|
@click.group()
|
|
173
208
|
def cli():
|
|
@@ -176,7 +211,13 @@ def cli():
|
|
|
176
211
|
|
|
177
212
|
|
|
178
213
|
@cli.command()
|
|
179
|
-
@click.option(
|
|
214
|
+
@click.option(
|
|
215
|
+
"--url",
|
|
216
|
+
"-u",
|
|
217
|
+
envvar="PORTAINER_URL",
|
|
218
|
+
required=True,
|
|
219
|
+
help="Portainer base URL (or PORTAINER_URL env var)",
|
|
220
|
+
)
|
|
180
221
|
@click.option(
|
|
181
222
|
"--volumes", "-v", required=True, help="Comma-separated list of volume names"
|
|
182
223
|
)
|
|
@@ -188,9 +229,7 @@ def cli():
|
|
|
188
229
|
)
|
|
189
230
|
@click.option("--s3-endpoint", help="S3/MinIO endpoint URL (or S3_ENDPOINT env var)")
|
|
190
231
|
@click.option("--endpoint-id", "-e", type=int, default=1, help="Portainer endpoint ID")
|
|
191
|
-
@click.option(
|
|
192
|
-
"--keep-versions", type=int, default=7, help="Keep N versions of backups"
|
|
193
|
-
)
|
|
232
|
+
@click.option("--keep-versions", type=int, default=7, help="Keep N versions of backups")
|
|
194
233
|
@click.option("--passphrase", type=str, default="", help="Encryption passphrase")
|
|
195
234
|
def backup(
|
|
196
235
|
url: str,
|
|
@@ -236,19 +275,24 @@ def backup(
|
|
|
236
275
|
|
|
237
276
|
success_count = 0
|
|
238
277
|
for vol in volume_list:
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
278
|
+
try:
|
|
279
|
+
backup_volume(
|
|
280
|
+
portainer_url,
|
|
281
|
+
access_token,
|
|
282
|
+
endpoint_id,
|
|
283
|
+
vol,
|
|
284
|
+
endpoint,
|
|
285
|
+
s3_bucket,
|
|
286
|
+
s3_access_key,
|
|
287
|
+
s3_secret_key,
|
|
288
|
+
keep_versions,
|
|
289
|
+
passphrase,
|
|
290
|
+
)
|
|
251
291
|
success_count += 1
|
|
292
|
+
except VolumeError as e:
|
|
293
|
+
logger.error(
|
|
294
|
+
"Volume backup failed for '%s': %s\n%s", vol, e, traceback.format_exc()
|
|
295
|
+
)
|
|
252
296
|
click.echo()
|
|
253
297
|
|
|
254
298
|
click.echo("=== Volume backup complete ===")
|
|
@@ -256,8 +300,535 @@ def backup(
|
|
|
256
300
|
sys.exit(0 if success_count == len(volume_list) else 1)
|
|
257
301
|
|
|
258
302
|
|
|
303
|
+
def copy_volume(
|
|
304
|
+
portainer_url: str,
|
|
305
|
+
api_key: str,
|
|
306
|
+
endpoint_id: int,
|
|
307
|
+
source_volume: str,
|
|
308
|
+
dest_volume: str,
|
|
309
|
+
ownership: str = "copy",
|
|
310
|
+
team_id: int | None = None,
|
|
311
|
+
) -> None:
|
|
312
|
+
"""Copy data from one volume to another.
|
|
313
|
+
|
|
314
|
+
Args:
|
|
315
|
+
ownership: 'copy' (from source), 'private', 'team', or 'public'
|
|
316
|
+
team_id: Required if ownership is 'team'
|
|
317
|
+
|
|
318
|
+
Raises:
|
|
319
|
+
VolumeError: If copy fails
|
|
320
|
+
"""
|
|
321
|
+
click.echo(f"Copying {source_volume} -> {dest_volume}...")
|
|
322
|
+
|
|
323
|
+
try:
|
|
324
|
+
client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
325
|
+
|
|
326
|
+
# Get source volume info for driver/labels
|
|
327
|
+
try:
|
|
328
|
+
source_vol = client.volumes.get(source_volume)
|
|
329
|
+
source_info = source_vol.attrs
|
|
330
|
+
except docker.errors.NotFound:
|
|
331
|
+
click.echo(f" ✗ Source volume '{source_volume}' not found")
|
|
332
|
+
raise VolumeError(f"Source volume '{source_volume}' not found")
|
|
333
|
+
|
|
334
|
+
# Check if dest volume exists, create if not
|
|
335
|
+
try:
|
|
336
|
+
client.volumes.get(dest_volume)
|
|
337
|
+
except docker.errors.NotFound:
|
|
338
|
+
click.echo(f" Creating destination volume '{dest_volume}'...")
|
|
339
|
+
driver = source_info.get("Driver", "local")
|
|
340
|
+
labels = source_info.get("Labels", {})
|
|
341
|
+
try:
|
|
342
|
+
client.volumes.create(
|
|
343
|
+
name=dest_volume, driver=driver, labels=labels or {}
|
|
344
|
+
)
|
|
345
|
+
except docker.errors.APIError as e:
|
|
346
|
+
click.echo(f" ✗ Failed to create destination volume")
|
|
347
|
+
raise VolumeError(f"Failed to create destination volume: {e}") from e
|
|
348
|
+
|
|
349
|
+
# Copy data using busybox
|
|
350
|
+
copy_cmd = "cp -a /source/. /dest/"
|
|
351
|
+
exit_code, logs = run_container(
|
|
352
|
+
client=client,
|
|
353
|
+
image="busybox:latest",
|
|
354
|
+
entrypoint=["/bin/sh", "-c"],
|
|
355
|
+
command=[copy_cmd],
|
|
356
|
+
binds=[
|
|
357
|
+
f"{source_volume}:/source:ro",
|
|
358
|
+
f"{dest_volume}:/dest",
|
|
359
|
+
],
|
|
360
|
+
)
|
|
361
|
+
|
|
362
|
+
except docker.errors.APIError as e:
|
|
363
|
+
click.echo(f" ✗ Copy failed: {e}")
|
|
364
|
+
raise VolumeError(f"Copy failed: {e}") from e
|
|
365
|
+
|
|
366
|
+
if exit_code != 0:
|
|
367
|
+
click.echo(f" ✗ Copy failed with exit code {exit_code}")
|
|
368
|
+
if logs:
|
|
369
|
+
click.echo(f" Logs: {logs}")
|
|
370
|
+
raise VolumeError(f"Copy failed with exit code {exit_code}")
|
|
371
|
+
|
|
372
|
+
click.echo(f" ✓ Data copied: {source_volume} -> {dest_volume}")
|
|
373
|
+
|
|
374
|
+
# Handle permissions based on ownership setting
|
|
375
|
+
if ownership == "copy":
|
|
376
|
+
# Copy permissions from source
|
|
377
|
+
try:
|
|
378
|
+
action = copy_volume_resource_control(
|
|
379
|
+
portainer_url, api_key, source_volume, dest_volume, endpoint_id
|
|
380
|
+
)
|
|
381
|
+
if action == "copied":
|
|
382
|
+
click.echo(f" ✓ Permissions copied from source")
|
|
383
|
+
elif action == "skipped":
|
|
384
|
+
click.echo(
|
|
385
|
+
f" ✓ Permissions preserved (destination already has permissions)"
|
|
386
|
+
)
|
|
387
|
+
except ResourceControlError as e:
|
|
388
|
+
click.echo(f" ⚠ Warning: Failed to copy permissions - {e}")
|
|
389
|
+
else:
|
|
390
|
+
# Set explicit ownership
|
|
391
|
+
try:
|
|
392
|
+
msg = set_volume_ownership(
|
|
393
|
+
portainer_url, api_key, dest_volume, ownership, team_id, endpoint_id
|
|
394
|
+
)
|
|
395
|
+
click.echo(f" ✓ Permissions {msg}")
|
|
396
|
+
except VolumeOwnershipError as e:
|
|
397
|
+
click.echo(f" ⚠ Warning: Failed to set permissions - {e}")
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
def copy_s3_to_volume(
|
|
401
|
+
portainer_url: str,
|
|
402
|
+
api_key: str,
|
|
403
|
+
endpoint_id: int,
|
|
404
|
+
volume_name: str,
|
|
405
|
+
s3_endpoint: str,
|
|
406
|
+
s3_bucket: str,
|
|
407
|
+
s3_path: str,
|
|
408
|
+
s3_access_key: str,
|
|
409
|
+
s3_secret_key: str,
|
|
410
|
+
) -> None:
|
|
411
|
+
"""Copy files from S3 to a volume using mc (MinIO Client).
|
|
412
|
+
|
|
413
|
+
Raises:
|
|
414
|
+
VolumeError: If copy fails
|
|
415
|
+
"""
|
|
416
|
+
click.echo(f"Copying s3://{s3_bucket}/{s3_path} -> {volume_name}...")
|
|
417
|
+
|
|
418
|
+
try:
|
|
419
|
+
client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
420
|
+
|
|
421
|
+
# Create destination volume if it doesn't exist
|
|
422
|
+
try:
|
|
423
|
+
client.volumes.get(volume_name)
|
|
424
|
+
except docker.errors.NotFound:
|
|
425
|
+
click.echo(f" Creating destination volume '{volume_name}'...")
|
|
426
|
+
try:
|
|
427
|
+
client.volumes.create(name=volume_name)
|
|
428
|
+
except docker.errors.APIError as e:
|
|
429
|
+
click.echo(f" ✗ Failed to create destination volume")
|
|
430
|
+
raise VolumeError(f"Failed to create destination volume: {e}") from e
|
|
431
|
+
|
|
432
|
+
# Build mc commands: configure alias and copy
|
|
433
|
+
s3_source = f"s3/{s3_bucket}/{s3_path}" if s3_path else f"s3/{s3_bucket}"
|
|
434
|
+
mc_cmd = " && ".join(
|
|
435
|
+
[
|
|
436
|
+
f"mc alias set s3 {s3_endpoint} {s3_access_key} {s3_secret_key}",
|
|
437
|
+
f"mc cp --recursive {s3_source}/ /data/",
|
|
438
|
+
]
|
|
439
|
+
)
|
|
440
|
+
|
|
441
|
+
exit_code, logs = run_container(
|
|
442
|
+
client=client,
|
|
443
|
+
image="minio/mc:latest",
|
|
444
|
+
entrypoint=["/bin/sh", "-c"],
|
|
445
|
+
command=[mc_cmd],
|
|
446
|
+
binds=[f"{volume_name}:/data"],
|
|
447
|
+
)
|
|
448
|
+
|
|
449
|
+
except docker.errors.APIError as e:
|
|
450
|
+
click.echo(f" ✗ Copy failed: {e}")
|
|
451
|
+
raise VolumeError(f"Copy failed: {e}") from e
|
|
452
|
+
|
|
453
|
+
if exit_code != 0:
|
|
454
|
+
click.echo(f" ✗ Copy failed with exit code {exit_code}")
|
|
455
|
+
if logs:
|
|
456
|
+
click.echo(f" Logs: {logs}")
|
|
457
|
+
raise VolumeError(f"Copy failed with exit code {exit_code}")
|
|
458
|
+
|
|
459
|
+
click.echo(f" ✓ Copy completed: s3://{s3_bucket}/{s3_path} -> {volume_name}")
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
def copy_volume_to_s3(
|
|
463
|
+
portainer_url: str,
|
|
464
|
+
api_key: str,
|
|
465
|
+
endpoint_id: int,
|
|
466
|
+
volume_name: str,
|
|
467
|
+
s3_endpoint: str,
|
|
468
|
+
s3_bucket: str,
|
|
469
|
+
s3_path: str,
|
|
470
|
+
s3_access_key: str,
|
|
471
|
+
s3_secret_key: str,
|
|
472
|
+
) -> None:
|
|
473
|
+
"""Copy files from a volume to S3 using mc (MinIO Client).
|
|
474
|
+
|
|
475
|
+
Raises:
|
|
476
|
+
VolumeError: If copy fails
|
|
477
|
+
"""
|
|
478
|
+
click.echo(f"Copying {volume_name} -> s3://{s3_bucket}/{s3_path}...")
|
|
479
|
+
|
|
480
|
+
try:
|
|
481
|
+
client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
482
|
+
|
|
483
|
+
# Build mc commands: configure alias and copy
|
|
484
|
+
s3_dest = f"s3/{s3_bucket}/{s3_path}" if s3_path else f"s3/{s3_bucket}"
|
|
485
|
+
mc_cmd = " && ".join(
|
|
486
|
+
[
|
|
487
|
+
f"mc alias set s3 {s3_endpoint} {s3_access_key} {s3_secret_key}",
|
|
488
|
+
f"mc cp --recursive /data/ {s3_dest}/",
|
|
489
|
+
]
|
|
490
|
+
)
|
|
491
|
+
|
|
492
|
+
exit_code, logs = run_container(
|
|
493
|
+
client=client,
|
|
494
|
+
image="minio/mc:latest",
|
|
495
|
+
entrypoint=["/bin/sh", "-c"],
|
|
496
|
+
command=[mc_cmd],
|
|
497
|
+
binds=[f"{volume_name}:/data:ro"],
|
|
498
|
+
)
|
|
499
|
+
|
|
500
|
+
except docker.errors.APIError as e:
|
|
501
|
+
click.echo(f" ✗ Copy failed: {e}")
|
|
502
|
+
raise VolumeError(f"Copy failed: {e}") from e
|
|
503
|
+
|
|
504
|
+
if exit_code != 0:
|
|
505
|
+
click.echo(f" ✗ Copy failed with exit code {exit_code}")
|
|
506
|
+
if logs:
|
|
507
|
+
click.echo(f" Logs: {logs}")
|
|
508
|
+
raise VolumeError(f"Copy failed with exit code {exit_code}")
|
|
509
|
+
|
|
510
|
+
click.echo(f" ✓ Copy completed: {volume_name} -> s3://{s3_bucket}/{s3_path}")
|
|
511
|
+
|
|
512
|
+
|
|
259
513
|
@cli.command()
|
|
260
|
-
@click.option(
|
|
514
|
+
@click.option(
|
|
515
|
+
"--url",
|
|
516
|
+
"-u",
|
|
517
|
+
envvar="PORTAINER_URL",
|
|
518
|
+
required=True,
|
|
519
|
+
help="Portainer base URL (or PORTAINER_URL env var)",
|
|
520
|
+
)
|
|
521
|
+
@click.argument("source")
|
|
522
|
+
@click.argument("dest")
|
|
523
|
+
@click.option("--endpoint-id", "-e", type=int, default=1, help="Portainer endpoint ID")
|
|
524
|
+
@click.option("--s3-endpoint", help="S3/MinIO endpoint URL (or S3_ENDPOINT env var)")
|
|
525
|
+
@click.option(
|
|
526
|
+
"--ownership",
|
|
527
|
+
type=click.Choice(["private", "team", "public", "copy"]),
|
|
528
|
+
default="copy",
|
|
529
|
+
help="Access control: copy from source (default), private, team, or public",
|
|
530
|
+
)
|
|
531
|
+
@click.option("--team-id", "-t", type=int, help="Team ID for team ownership")
|
|
532
|
+
def cp(
|
|
533
|
+
url: str,
|
|
534
|
+
source: str,
|
|
535
|
+
dest: str,
|
|
536
|
+
endpoint_id: int,
|
|
537
|
+
s3_endpoint: str | None,
|
|
538
|
+
ownership: str,
|
|
539
|
+
team_id: int | None,
|
|
540
|
+
):
|
|
541
|
+
"""Copy data between volumes and S3 (raw copy).
|
|
542
|
+
|
|
543
|
+
SOURCE and DEST can be volume names or S3 URIs.
|
|
544
|
+
|
|
545
|
+
Examples:
|
|
546
|
+
ptctools docker volume cp source dest
|
|
547
|
+
ptctools docker volume cp source dest --ownership team
|
|
548
|
+
ptctools docker volume cp source dest --ownership private
|
|
549
|
+
ptctools docker volume cp s3://bucket/path volume_a
|
|
550
|
+
ptctools docker volume cp volume_a s3://bucket/path
|
|
551
|
+
"""
|
|
552
|
+
from ptctools._s3 import (
|
|
553
|
+
is_s3_uri,
|
|
554
|
+
parse_s3_uri,
|
|
555
|
+
get_s3_endpoint,
|
|
556
|
+
get_s3_credentials,
|
|
557
|
+
)
|
|
558
|
+
|
|
559
|
+
access_token = os.environ.get("PORTAINER_ACCESS_TOKEN")
|
|
560
|
+
if not access_token:
|
|
561
|
+
click.echo("Error: Missing PORTAINER_ACCESS_TOKEN", err=True)
|
|
562
|
+
sys.exit(1)
|
|
563
|
+
|
|
564
|
+
portainer_url = url.rstrip("/")
|
|
565
|
+
source_is_s3 = is_s3_uri(source)
|
|
566
|
+
dest_is_s3 = is_s3_uri(dest)
|
|
567
|
+
|
|
568
|
+
# Both are S3 - not supported
|
|
569
|
+
if source_is_s3 and dest_is_s3:
|
|
570
|
+
click.echo(
|
|
571
|
+
"Error: Cannot copy directly between S3 locations. Use volume as intermediate.",
|
|
572
|
+
err=True,
|
|
573
|
+
)
|
|
574
|
+
sys.exit(1)
|
|
575
|
+
|
|
576
|
+
# Volume to Volume copy
|
|
577
|
+
if not source_is_s3 and not dest_is_s3:
|
|
578
|
+
click.echo(f"Portainer URL: {portainer_url}")
|
|
579
|
+
click.echo(f"Source Volume: {source}")
|
|
580
|
+
click.echo(f"Destination Volume: {dest}")
|
|
581
|
+
click.echo()
|
|
582
|
+
click.echo("=== Copying volume data ===")
|
|
583
|
+
|
|
584
|
+
try:
|
|
585
|
+
copy_volume(
|
|
586
|
+
portainer_url,
|
|
587
|
+
access_token,
|
|
588
|
+
endpoint_id,
|
|
589
|
+
source,
|
|
590
|
+
dest,
|
|
591
|
+
ownership,
|
|
592
|
+
team_id,
|
|
593
|
+
)
|
|
594
|
+
click.echo()
|
|
595
|
+
click.echo("=== Volume copy complete ===")
|
|
596
|
+
sys.exit(0)
|
|
597
|
+
except VolumeError as e:
|
|
598
|
+
logger.error("Volume copy failed: %s\n%s", e, traceback.format_exc())
|
|
599
|
+
click.echo()
|
|
600
|
+
click.echo("=== Volume copy failed ===")
|
|
601
|
+
sys.exit(1)
|
|
602
|
+
|
|
603
|
+
# Get S3 credentials
|
|
604
|
+
try:
|
|
605
|
+
s3_access_key, s3_secret_key = get_s3_credentials()
|
|
606
|
+
except click.ClickException as e:
|
|
607
|
+
click.echo(f"Error: {e.message}", err=True)
|
|
608
|
+
sys.exit(1)
|
|
609
|
+
|
|
610
|
+
# S3 to Volume (download)
|
|
611
|
+
if source_is_s3:
|
|
612
|
+
try:
|
|
613
|
+
uri_endpoint, s3_bucket, s3_path = parse_s3_uri(source)
|
|
614
|
+
endpoint = get_s3_endpoint(uri_endpoint, s3_endpoint)
|
|
615
|
+
except click.ClickException as e:
|
|
616
|
+
click.echo(f"Error: {e.message}", err=True)
|
|
617
|
+
sys.exit(1)
|
|
618
|
+
|
|
619
|
+
volume_name = dest
|
|
620
|
+
|
|
621
|
+
click.echo(f"Portainer URL: {portainer_url}")
|
|
622
|
+
click.echo(f"S3 Endpoint: {endpoint}")
|
|
623
|
+
click.echo(f"S3 Source: s3://{s3_bucket}/{s3_path}")
|
|
624
|
+
click.echo(f"Destination Volume: {volume_name}")
|
|
625
|
+
click.echo()
|
|
626
|
+
click.echo("=== Copying from S3 to volume ===")
|
|
627
|
+
|
|
628
|
+
try:
|
|
629
|
+
copy_s3_to_volume(
|
|
630
|
+
portainer_url,
|
|
631
|
+
access_token,
|
|
632
|
+
endpoint_id,
|
|
633
|
+
volume_name,
|
|
634
|
+
endpoint,
|
|
635
|
+
s3_bucket,
|
|
636
|
+
s3_path,
|
|
637
|
+
s3_access_key,
|
|
638
|
+
s3_secret_key,
|
|
639
|
+
)
|
|
640
|
+
click.echo()
|
|
641
|
+
click.echo("=== Copy from S3 complete ===")
|
|
642
|
+
sys.exit(0)
|
|
643
|
+
except VolumeError as e:
|
|
644
|
+
logger.error("S3 to volume copy failed: %s\n%s", e, traceback.format_exc())
|
|
645
|
+
click.echo()
|
|
646
|
+
click.echo("=== Copy from S3 failed ===")
|
|
647
|
+
sys.exit(1)
|
|
648
|
+
|
|
649
|
+
# Volume to S3 (upload)
|
|
650
|
+
if dest_is_s3:
|
|
651
|
+
try:
|
|
652
|
+
uri_endpoint, s3_bucket, s3_path = parse_s3_uri(dest)
|
|
653
|
+
endpoint = get_s3_endpoint(uri_endpoint, s3_endpoint)
|
|
654
|
+
except click.ClickException as e:
|
|
655
|
+
click.echo(f"Error: {e.message}", err=True)
|
|
656
|
+
sys.exit(1)
|
|
657
|
+
|
|
658
|
+
volume_name = source
|
|
659
|
+
# Use s3_path if provided, otherwise use volume name
|
|
660
|
+
upload_path = s3_path if s3_path else volume_name
|
|
661
|
+
|
|
662
|
+
click.echo(f"Portainer URL: {portainer_url}")
|
|
663
|
+
click.echo(f"Source Volume: {volume_name}")
|
|
664
|
+
click.echo(f"S3 Endpoint: {endpoint}")
|
|
665
|
+
click.echo(f"S3 Destination: s3://{s3_bucket}/{upload_path}")
|
|
666
|
+
click.echo()
|
|
667
|
+
click.echo("=== Copying volume to S3 ===")
|
|
668
|
+
|
|
669
|
+
try:
|
|
670
|
+
copy_volume_to_s3(
|
|
671
|
+
portainer_url,
|
|
672
|
+
access_token,
|
|
673
|
+
endpoint_id,
|
|
674
|
+
volume_name,
|
|
675
|
+
endpoint,
|
|
676
|
+
s3_bucket,
|
|
677
|
+
upload_path,
|
|
678
|
+
s3_access_key,
|
|
679
|
+
s3_secret_key,
|
|
680
|
+
)
|
|
681
|
+
click.echo()
|
|
682
|
+
click.echo("=== Copy to S3 complete ===")
|
|
683
|
+
sys.exit(0)
|
|
684
|
+
except VolumeError as e:
|
|
685
|
+
logger.error("Volume to S3 copy failed: %s\n%s", e, traceback.format_exc())
|
|
686
|
+
click.echo()
|
|
687
|
+
click.echo("=== Copy to S3 failed ===")
|
|
688
|
+
sys.exit(1)
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
@cli.command()
|
|
692
|
+
@click.option(
|
|
693
|
+
"--url",
|
|
694
|
+
"-u",
|
|
695
|
+
envvar="PORTAINER_URL",
|
|
696
|
+
required=True,
|
|
697
|
+
help="Portainer base URL (or PORTAINER_URL env var)",
|
|
698
|
+
)
|
|
699
|
+
@click.argument("volume")
|
|
700
|
+
@click.option("--endpoint-id", "-e", type=int, default=1, help="Portainer endpoint ID")
|
|
701
|
+
@click.option("--force", "-f", is_flag=True, help="Force removal even if in use")
|
|
702
|
+
@click.option("--yes", "-y", is_flag=True, help="Skip confirmation prompt")
|
|
703
|
+
def rm(
|
|
704
|
+
url: str,
|
|
705
|
+
volume: str,
|
|
706
|
+
endpoint_id: int,
|
|
707
|
+
force: bool,
|
|
708
|
+
yes: bool,
|
|
709
|
+
):
|
|
710
|
+
"""Remove a Docker volume.
|
|
711
|
+
|
|
712
|
+
VOLUME is the volume name to remove.
|
|
713
|
+
|
|
714
|
+
Example: ptctools docker volume rm volume_a
|
|
715
|
+
"""
|
|
716
|
+
access_token = os.environ.get("PORTAINER_ACCESS_TOKEN")
|
|
717
|
+
if not access_token:
|
|
718
|
+
click.echo("Error: Missing PORTAINER_ACCESS_TOKEN", err=True)
|
|
719
|
+
sys.exit(1)
|
|
720
|
+
|
|
721
|
+
portainer_url = url.rstrip("/")
|
|
722
|
+
|
|
723
|
+
if not yes:
|
|
724
|
+
if not click.confirm(f"Are you sure you want to delete volume '{volume}'?"):
|
|
725
|
+
click.echo("Aborted.")
|
|
726
|
+
sys.exit(0)
|
|
727
|
+
|
|
728
|
+
click.echo(f"Removing volume: {volume}...")
|
|
729
|
+
|
|
730
|
+
try:
|
|
731
|
+
client = get_portainer_docker_client(portainer_url, access_token, endpoint_id)
|
|
732
|
+
vol = client.volumes.get(volume)
|
|
733
|
+
vol.remove(force=force)
|
|
734
|
+
click.echo(f" ✓ Volume '{volume}' removed")
|
|
735
|
+
sys.exit(0)
|
|
736
|
+
except docker.errors.NotFound:
|
|
737
|
+
click.echo(f" ✓ Volume '{volume}' removed") # Already deleted
|
|
738
|
+
sys.exit(0)
|
|
739
|
+
except docker.errors.APIError as e:
|
|
740
|
+
logger.error("Volume removal failed: %s\n%s", e, traceback.format_exc())
|
|
741
|
+
click.echo(f" ✗ Failed to remove volume '{volume}': {e}", err=True)
|
|
742
|
+
sys.exit(1)
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
@cli.command()
|
|
746
|
+
@click.option(
|
|
747
|
+
"--url",
|
|
748
|
+
"-u",
|
|
749
|
+
envvar="PORTAINER_URL",
|
|
750
|
+
required=True,
|
|
751
|
+
help="Portainer base URL (or PORTAINER_URL env var)",
|
|
752
|
+
)
|
|
753
|
+
@click.argument("old_name")
|
|
754
|
+
@click.argument("new_name")
|
|
755
|
+
@click.option("--endpoint-id", "-e", type=int, default=1, help="Portainer endpoint ID")
|
|
756
|
+
@click.option("--yes", "-y", is_flag=True, help="Skip confirmation prompt")
|
|
757
|
+
def rename(
|
|
758
|
+
url: str,
|
|
759
|
+
old_name: str,
|
|
760
|
+
new_name: str,
|
|
761
|
+
endpoint_id: int,
|
|
762
|
+
yes: bool,
|
|
763
|
+
):
|
|
764
|
+
"""Rename a Docker volume (copy to new, delete old).
|
|
765
|
+
|
|
766
|
+
OLD_NAME is the current volume name.
|
|
767
|
+
NEW_NAME is the new volume name.
|
|
768
|
+
|
|
769
|
+
Example: ptctools docker volume rename volume_a volume_b
|
|
770
|
+
"""
|
|
771
|
+
access_token = os.environ.get("PORTAINER_ACCESS_TOKEN")
|
|
772
|
+
if not access_token:
|
|
773
|
+
click.echo("Error: Missing PORTAINER_ACCESS_TOKEN", err=True)
|
|
774
|
+
sys.exit(1)
|
|
775
|
+
|
|
776
|
+
portainer_url = url.rstrip("/")
|
|
777
|
+
|
|
778
|
+
if not yes:
|
|
779
|
+
if not click.confirm(
|
|
780
|
+
f"Rename '{old_name}' to '{new_name}'? This will copy data and delete the original."
|
|
781
|
+
):
|
|
782
|
+
click.echo("Aborted.")
|
|
783
|
+
sys.exit(0)
|
|
784
|
+
|
|
785
|
+
click.echo(f"Renaming volume: {old_name} -> {new_name}")
|
|
786
|
+
click.echo()
|
|
787
|
+
|
|
788
|
+
# Step 1: Copy data to new volume
|
|
789
|
+
click.echo("Step 1: Copying data to new volume...")
|
|
790
|
+
try:
|
|
791
|
+
copy_volume(portainer_url, access_token, endpoint_id, old_name, new_name)
|
|
792
|
+
except VolumeError as e:
|
|
793
|
+
logger.error(
|
|
794
|
+
"Volume rename failed during copy: %s\n%s", e, traceback.format_exc()
|
|
795
|
+
)
|
|
796
|
+
click.echo(" ✗ Failed to copy data. Original volume unchanged.", err=True)
|
|
797
|
+
sys.exit(1)
|
|
798
|
+
|
|
799
|
+
# Step 2: Delete old volume using docker-py
|
|
800
|
+
click.echo()
|
|
801
|
+
click.echo("Step 2: Removing old volume...")
|
|
802
|
+
try:
|
|
803
|
+
client = get_portainer_docker_client(portainer_url, access_token, endpoint_id)
|
|
804
|
+
vol = client.volumes.get(old_name)
|
|
805
|
+
vol.remove(force=True)
|
|
806
|
+
click.echo(f" ✓ Volume '{old_name}' removed")
|
|
807
|
+
except docker.errors.NotFound:
|
|
808
|
+
click.echo(f" ✓ Volume '{old_name}' removed") # Already deleted
|
|
809
|
+
except docker.errors.APIError as e:
|
|
810
|
+
logger.error(
|
|
811
|
+
"Volume rename failed during delete: %s\n%s", e, traceback.format_exc()
|
|
812
|
+
)
|
|
813
|
+
click.echo(f" ⚠ Warning: Failed to remove old volume '{old_name}'", err=True)
|
|
814
|
+
click.echo(
|
|
815
|
+
f" Data has been copied to '{new_name}'. Please remove '{old_name}' manually."
|
|
816
|
+
)
|
|
817
|
+
sys.exit(1)
|
|
818
|
+
|
|
819
|
+
click.echo()
|
|
820
|
+
click.echo(f"=== Volume renamed: {old_name} -> {new_name} ===")
|
|
821
|
+
sys.exit(0)
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
@cli.command()
|
|
825
|
+
@click.option(
|
|
826
|
+
"--url",
|
|
827
|
+
"-u",
|
|
828
|
+
envvar="PORTAINER_URL",
|
|
829
|
+
required=True,
|
|
830
|
+
help="Portainer base URL (or PORTAINER_URL env var)",
|
|
831
|
+
)
|
|
261
832
|
@click.option(
|
|
262
833
|
"--volume",
|
|
263
834
|
"-v",
|
|
@@ -320,7 +891,10 @@ def restore(
|
|
|
320
891
|
# Use the first path segment as volume name
|
|
321
892
|
volume_name = s3_path.split("/")[0]
|
|
322
893
|
else:
|
|
323
|
-
click.echo(
|
|
894
|
+
click.echo(
|
|
895
|
+
"Error: No volume specified. Use --volume or include path in input URI",
|
|
896
|
+
err=True,
|
|
897
|
+
)
|
|
324
898
|
sys.exit(1)
|
|
325
899
|
|
|
326
900
|
passphrase = passphrase or os.environ.get("DUPLICATI_PASSPHRASE", "")
|
|
@@ -339,21 +913,26 @@ def restore(
|
|
|
339
913
|
click.echo()
|
|
340
914
|
click.echo("=== Restoring volumes with Duplicati ===")
|
|
341
915
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
916
|
+
try:
|
|
917
|
+
restore_volume(
|
|
918
|
+
portainer_url,
|
|
919
|
+
access_token,
|
|
920
|
+
endpoint_id,
|
|
921
|
+
volume_name,
|
|
922
|
+
endpoint,
|
|
923
|
+
s3_bucket,
|
|
924
|
+
s3_path,
|
|
925
|
+
s3_access_key,
|
|
926
|
+
s3_secret_key,
|
|
927
|
+
passphrase,
|
|
928
|
+
version,
|
|
929
|
+
restore_time,
|
|
930
|
+
)
|
|
931
|
+
click.echo()
|
|
932
|
+
click.echo("=== Volume restore complete ===")
|
|
933
|
+
sys.exit(0)
|
|
934
|
+
except VolumeError as e:
|
|
935
|
+
logger.error("Volume restore failed: %s\n%s", e, traceback.format_exc())
|
|
936
|
+
click.echo()
|
|
937
|
+
click.echo("=== Volume restore failed ===")
|
|
938
|
+
sys.exit(1)
|