ptctools 0.1.0__py3-none-any.whl → 0.1.1__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/config.py +81 -142
- ptctools/db.py +166 -136
- 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/stack.py +177 -259
- ptctools/utils.py +8 -0
- ptctools/volume.py +581 -66
- {ptctools-0.1.0.dist-info → ptctools-0.1.1.dist-info}/METADATA +33 -1
- ptctools-0.1.1.dist-info/RECORD +1239 -0
- ptctools-0.1.0.dist-info/RECORD +0 -14
- {ptctools-0.1.0.dist-info → ptctools-0.1.1.dist-info}/WHEEL +0 -0
- {ptctools-0.1.0.dist-info → ptctools-0.1.1.dist-info}/entry_points.txt +0 -0
- {ptctools-0.1.0.dist-info → ptctools-0.1.1.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,13 @@ 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
|
+
pass
|
|
35
|
+
|
|
18
36
|
|
|
19
37
|
def backup_volume(
|
|
20
38
|
portainer_url: str,
|
|
@@ -27,8 +45,12 @@ def backup_volume(
|
|
|
27
45
|
s3_secret_key: str,
|
|
28
46
|
keep_versions: int,
|
|
29
47
|
passphrase: str,
|
|
30
|
-
) ->
|
|
31
|
-
"""Backup a single volume to S3 using Duplicati CLI.
|
|
48
|
+
) -> None:
|
|
49
|
+
"""Backup a single volume to S3 using Duplicati CLI.
|
|
50
|
+
|
|
51
|
+
Raises:
|
|
52
|
+
VolumeError: If backup fails
|
|
53
|
+
"""
|
|
32
54
|
s3_dest = build_duplicati_s3_url(s3_bucket, volume_name, s3_endpoint)
|
|
33
55
|
|
|
34
56
|
click.echo(f"Backing up {volume_name} using Duplicati...")
|
|
@@ -59,19 +81,24 @@ def backup_volume(
|
|
|
59
81
|
# Use ; instead of && because repair may return non-zero for warnings
|
|
60
82
|
full_cmd = f"{repair_cmd}; {backup_cmd}"
|
|
61
83
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
84
|
+
try:
|
|
85
|
+
client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
86
|
+
|
|
87
|
+
# Pull image
|
|
88
|
+
# check if image unused then remove image handled by run_container
|
|
89
|
+
|
|
90
|
+
# Run container
|
|
91
|
+
exit_code, logs = run_container(
|
|
92
|
+
client=client,
|
|
93
|
+
image="duplicati/duplicati:latest",
|
|
94
|
+
entrypoint=["/bin/sh", "-c"],
|
|
95
|
+
command=[full_cmd],
|
|
96
|
+
binds=[f"{volume_name}:/data:ro"],
|
|
97
|
+
)
|
|
98
|
+
|
|
99
|
+
except docker.errors.APIError as e:
|
|
100
|
+
click.echo(f" ✗ Backup failed: {e}")
|
|
101
|
+
raise VolumeError(f"Backup failed: {e}") from e
|
|
75
102
|
|
|
76
103
|
# Check for backup failure
|
|
77
104
|
# Exit code 1 with "0 files need to be examined" = success (no changes)
|
|
@@ -80,7 +107,7 @@ def backup_volume(
|
|
|
80
107
|
click.echo(f" ✗ Backup failed with exit code {exit_code}")
|
|
81
108
|
if logs:
|
|
82
109
|
click.echo(f" Logs: {logs}")
|
|
83
|
-
|
|
110
|
+
raise VolumeError(f"Backup failed with exit code {exit_code}")
|
|
84
111
|
|
|
85
112
|
click.echo(f" ✓ Backup completed: s3://{s3_bucket}/{volume_name}")
|
|
86
113
|
if logs:
|
|
@@ -91,8 +118,6 @@ def backup_volume(
|
|
|
91
118
|
):
|
|
92
119
|
click.echo(f" {line.strip()}")
|
|
93
120
|
|
|
94
|
-
return True
|
|
95
|
-
|
|
96
121
|
|
|
97
122
|
def restore_volume(
|
|
98
123
|
portainer_url: str,
|
|
@@ -107,11 +132,14 @@ def restore_volume(
|
|
|
107
132
|
passphrase: str,
|
|
108
133
|
version: int | None,
|
|
109
134
|
restore_time: str | None,
|
|
110
|
-
) ->
|
|
135
|
+
) -> None:
|
|
111
136
|
"""Restore a single volume from S3 using Duplicati CLI.
|
|
112
137
|
|
|
113
138
|
Args:
|
|
114
139
|
s3_path: S3 path to restore from (used directly, no modification).
|
|
140
|
+
|
|
141
|
+
Raises:
|
|
142
|
+
VolumeError: If restore fails
|
|
115
143
|
"""
|
|
116
144
|
s3_dest = build_duplicati_s3_url(s3_bucket, s3_path, s3_endpoint)
|
|
117
145
|
|
|
@@ -137,18 +165,20 @@ def restore_volume(
|
|
|
137
165
|
|
|
138
166
|
restore_cmd = [c for c in restore_cmd if c]
|
|
139
167
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
168
|
+
try:
|
|
169
|
+
client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
170
|
+
|
|
171
|
+
# Run container
|
|
172
|
+
exit_code, logs = run_container(
|
|
173
|
+
client=client,
|
|
174
|
+
image="duplicati/duplicati:latest",
|
|
175
|
+
command=restore_cmd,
|
|
176
|
+
binds=[f"{volume_name}:/data"],
|
|
177
|
+
)
|
|
178
|
+
|
|
179
|
+
except docker.errors.APIError as e:
|
|
180
|
+
click.echo(f" ✗ Restore failed: {e}")
|
|
181
|
+
raise VolumeError(f"Restore failed: {e}") from e
|
|
152
182
|
|
|
153
183
|
# Success if exit_code == 0, or exit_code == 2 with no files needing restore (already up-to-date)
|
|
154
184
|
already_up_to_date = exit_code == 2 and logs and "0 files need to be restored" in logs
|
|
@@ -156,7 +186,7 @@ def restore_volume(
|
|
|
156
186
|
click.echo(f" ✗ Restore failed with exit code {exit_code}")
|
|
157
187
|
if logs:
|
|
158
188
|
click.echo(f" Logs: {logs}")
|
|
159
|
-
|
|
189
|
+
raise VolumeError(f"Restore failed with exit code {exit_code}")
|
|
160
190
|
|
|
161
191
|
click.echo(f" ✓ Restore completed from s3://{s3_bucket}/{volume_name}")
|
|
162
192
|
if logs:
|
|
@@ -166,8 +196,6 @@ def restore_volume(
|
|
|
166
196
|
):
|
|
167
197
|
click.echo(f" {line.strip()}")
|
|
168
198
|
|
|
169
|
-
return True
|
|
170
|
-
|
|
171
199
|
|
|
172
200
|
@click.group()
|
|
173
201
|
def cli():
|
|
@@ -236,19 +264,22 @@ def backup(
|
|
|
236
264
|
|
|
237
265
|
success_count = 0
|
|
238
266
|
for vol in volume_list:
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
267
|
+
try:
|
|
268
|
+
backup_volume(
|
|
269
|
+
portainer_url,
|
|
270
|
+
access_token,
|
|
271
|
+
endpoint_id,
|
|
272
|
+
vol,
|
|
273
|
+
endpoint,
|
|
274
|
+
s3_bucket,
|
|
275
|
+
s3_access_key,
|
|
276
|
+
s3_secret_key,
|
|
277
|
+
keep_versions,
|
|
278
|
+
passphrase,
|
|
279
|
+
)
|
|
251
280
|
success_count += 1
|
|
281
|
+
except VolumeError as e:
|
|
282
|
+
logger.error("Volume backup failed for '%s': %s\n%s", vol, e, traceback.format_exc())
|
|
252
283
|
click.echo()
|
|
253
284
|
|
|
254
285
|
click.echo("=== Volume backup complete ===")
|
|
@@ -256,6 +287,485 @@ def backup(
|
|
|
256
287
|
sys.exit(0 if success_count == len(volume_list) else 1)
|
|
257
288
|
|
|
258
289
|
|
|
290
|
+
def copy_volume(
|
|
291
|
+
portainer_url: str,
|
|
292
|
+
api_key: str,
|
|
293
|
+
endpoint_id: int,
|
|
294
|
+
source_volume: str,
|
|
295
|
+
dest_volume: str,
|
|
296
|
+
ownership: str = "copy",
|
|
297
|
+
team_id: int | None = None,
|
|
298
|
+
) -> None:
|
|
299
|
+
"""Copy data from one volume to another.
|
|
300
|
+
|
|
301
|
+
Args:
|
|
302
|
+
ownership: 'copy' (from source), 'private', 'team', or 'public'
|
|
303
|
+
team_id: Required if ownership is 'team'
|
|
304
|
+
|
|
305
|
+
Raises:
|
|
306
|
+
VolumeError: If copy fails
|
|
307
|
+
"""
|
|
308
|
+
click.echo(f"Copying {source_volume} -> {dest_volume}...")
|
|
309
|
+
|
|
310
|
+
try:
|
|
311
|
+
client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
312
|
+
|
|
313
|
+
# Get source volume info for driver/labels
|
|
314
|
+
try:
|
|
315
|
+
source_vol = client.volumes.get(source_volume)
|
|
316
|
+
source_info = source_vol.attrs
|
|
317
|
+
except docker.errors.NotFound:
|
|
318
|
+
click.echo(f" ✗ Source volume '{source_volume}' not found")
|
|
319
|
+
raise VolumeError(f"Source volume '{source_volume}' not found")
|
|
320
|
+
|
|
321
|
+
# Check if dest volume exists, create if not
|
|
322
|
+
try:
|
|
323
|
+
client.volumes.get(dest_volume)
|
|
324
|
+
except docker.errors.NotFound:
|
|
325
|
+
click.echo(f" Creating destination volume '{dest_volume}'...")
|
|
326
|
+
driver = source_info.get("Driver", "local")
|
|
327
|
+
labels = source_info.get("Labels", {})
|
|
328
|
+
try:
|
|
329
|
+
client.volumes.create(name=dest_volume, driver=driver, labels=labels or {})
|
|
330
|
+
except docker.errors.APIError as e:
|
|
331
|
+
click.echo(f" ✗ Failed to create destination volume")
|
|
332
|
+
raise VolumeError(f"Failed to create destination volume: {e}") from e
|
|
333
|
+
|
|
334
|
+
# Copy data using busybox
|
|
335
|
+
copy_cmd = "cp -a /source/. /dest/"
|
|
336
|
+
exit_code, logs = run_container(
|
|
337
|
+
client=client,
|
|
338
|
+
image="busybox:latest",
|
|
339
|
+
entrypoint=["/bin/sh", "-c"],
|
|
340
|
+
command=[copy_cmd],
|
|
341
|
+
binds=[
|
|
342
|
+
f"{source_volume}:/source:ro",
|
|
343
|
+
f"{dest_volume}:/dest",
|
|
344
|
+
],
|
|
345
|
+
)
|
|
346
|
+
|
|
347
|
+
except docker.errors.APIError as e:
|
|
348
|
+
click.echo(f" ✗ Copy failed: {e}")
|
|
349
|
+
raise VolumeError(f"Copy failed: {e}") from e
|
|
350
|
+
|
|
351
|
+
if exit_code != 0:
|
|
352
|
+
click.echo(f" ✗ Copy failed with exit code {exit_code}")
|
|
353
|
+
if logs:
|
|
354
|
+
click.echo(f" Logs: {logs}")
|
|
355
|
+
raise VolumeError(f"Copy failed with exit code {exit_code}")
|
|
356
|
+
|
|
357
|
+
click.echo(f" ✓ Data copied: {source_volume} -> {dest_volume}")
|
|
358
|
+
|
|
359
|
+
# Handle permissions based on ownership setting
|
|
360
|
+
if ownership == "copy":
|
|
361
|
+
# Copy permissions from source
|
|
362
|
+
try:
|
|
363
|
+
action = copy_volume_resource_control(
|
|
364
|
+
portainer_url, api_key, source_volume, dest_volume, endpoint_id
|
|
365
|
+
)
|
|
366
|
+
if action == "copied":
|
|
367
|
+
click.echo(f" ✓ Permissions copied from source")
|
|
368
|
+
elif action == "skipped":
|
|
369
|
+
click.echo(f" ✓ Permissions preserved (destination already has permissions)")
|
|
370
|
+
except ResourceControlError as e:
|
|
371
|
+
click.echo(f" ⚠ Warning: Failed to copy permissions - {e}")
|
|
372
|
+
else:
|
|
373
|
+
# Set explicit ownership
|
|
374
|
+
try:
|
|
375
|
+
msg = set_volume_ownership(
|
|
376
|
+
portainer_url, api_key, dest_volume, ownership, team_id, endpoint_id
|
|
377
|
+
)
|
|
378
|
+
click.echo(f" ✓ Permissions {msg}")
|
|
379
|
+
except VolumeOwnershipError as e:
|
|
380
|
+
click.echo(f" ⚠ Warning: Failed to set permissions - {e}")
|
|
381
|
+
|
|
382
|
+
|
|
383
|
+
def copy_s3_to_volume(
|
|
384
|
+
portainer_url: str,
|
|
385
|
+
api_key: str,
|
|
386
|
+
endpoint_id: int,
|
|
387
|
+
volume_name: str,
|
|
388
|
+
s3_endpoint: str,
|
|
389
|
+
s3_bucket: str,
|
|
390
|
+
s3_path: str,
|
|
391
|
+
s3_access_key: str,
|
|
392
|
+
s3_secret_key: str,
|
|
393
|
+
) -> None:
|
|
394
|
+
"""Copy files from S3 to a volume using mc (MinIO Client).
|
|
395
|
+
|
|
396
|
+
Raises:
|
|
397
|
+
VolumeError: If copy fails
|
|
398
|
+
"""
|
|
399
|
+
click.echo(f"Copying s3://{s3_bucket}/{s3_path} -> {volume_name}...")
|
|
400
|
+
|
|
401
|
+
try:
|
|
402
|
+
client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
403
|
+
|
|
404
|
+
# Create destination volume if it doesn't exist
|
|
405
|
+
try:
|
|
406
|
+
client.volumes.get(volume_name)
|
|
407
|
+
except docker.errors.NotFound:
|
|
408
|
+
click.echo(f" Creating destination volume '{volume_name}'...")
|
|
409
|
+
try:
|
|
410
|
+
client.volumes.create(name=volume_name)
|
|
411
|
+
except docker.errors.APIError as e:
|
|
412
|
+
click.echo(f" ✗ Failed to create destination volume")
|
|
413
|
+
raise VolumeError(f"Failed to create destination volume: {e}") from e
|
|
414
|
+
|
|
415
|
+
# Build mc commands: configure alias and copy
|
|
416
|
+
s3_source = f"s3/{s3_bucket}/{s3_path}" if s3_path else f"s3/{s3_bucket}"
|
|
417
|
+
mc_cmd = " && ".join([
|
|
418
|
+
f"mc alias set s3 {s3_endpoint} {s3_access_key} {s3_secret_key}",
|
|
419
|
+
f"mc cp --recursive {s3_source}/ /data/",
|
|
420
|
+
])
|
|
421
|
+
|
|
422
|
+
exit_code, logs = run_container(
|
|
423
|
+
client=client,
|
|
424
|
+
image="minio/mc:latest",
|
|
425
|
+
entrypoint=["/bin/sh", "-c"],
|
|
426
|
+
command=[mc_cmd],
|
|
427
|
+
binds=[f"{volume_name}:/data"],
|
|
428
|
+
)
|
|
429
|
+
|
|
430
|
+
except docker.errors.APIError as e:
|
|
431
|
+
click.echo(f" ✗ Copy failed: {e}")
|
|
432
|
+
raise VolumeError(f"Copy failed: {e}") from e
|
|
433
|
+
|
|
434
|
+
if exit_code != 0:
|
|
435
|
+
click.echo(f" ✗ Copy failed with exit code {exit_code}")
|
|
436
|
+
if logs:
|
|
437
|
+
click.echo(f" Logs: {logs}")
|
|
438
|
+
raise VolumeError(f"Copy failed with exit code {exit_code}")
|
|
439
|
+
|
|
440
|
+
click.echo(f" ✓ Copy completed: s3://{s3_bucket}/{s3_path} -> {volume_name}")
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
def copy_volume_to_s3(
|
|
444
|
+
portainer_url: str,
|
|
445
|
+
api_key: str,
|
|
446
|
+
endpoint_id: int,
|
|
447
|
+
volume_name: str,
|
|
448
|
+
s3_endpoint: str,
|
|
449
|
+
s3_bucket: str,
|
|
450
|
+
s3_path: str,
|
|
451
|
+
s3_access_key: str,
|
|
452
|
+
s3_secret_key: str,
|
|
453
|
+
) -> None:
|
|
454
|
+
"""Copy files from a volume to S3 using mc (MinIO Client).
|
|
455
|
+
|
|
456
|
+
Raises:
|
|
457
|
+
VolumeError: If copy fails
|
|
458
|
+
"""
|
|
459
|
+
click.echo(f"Copying {volume_name} -> s3://{s3_bucket}/{s3_path}...")
|
|
460
|
+
|
|
461
|
+
try:
|
|
462
|
+
client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
463
|
+
|
|
464
|
+
# Build mc commands: configure alias and copy
|
|
465
|
+
s3_dest = f"s3/{s3_bucket}/{s3_path}" if s3_path else f"s3/{s3_bucket}"
|
|
466
|
+
mc_cmd = " && ".join([
|
|
467
|
+
f"mc alias set s3 {s3_endpoint} {s3_access_key} {s3_secret_key}",
|
|
468
|
+
f"mc cp --recursive /data/ {s3_dest}/",
|
|
469
|
+
])
|
|
470
|
+
|
|
471
|
+
exit_code, logs = run_container(
|
|
472
|
+
client=client,
|
|
473
|
+
image="minio/mc:latest",
|
|
474
|
+
entrypoint=["/bin/sh", "-c"],
|
|
475
|
+
command=[mc_cmd],
|
|
476
|
+
binds=[f"{volume_name}:/data:ro"],
|
|
477
|
+
)
|
|
478
|
+
|
|
479
|
+
except docker.errors.APIError as e:
|
|
480
|
+
click.echo(f" ✗ Copy failed: {e}")
|
|
481
|
+
raise VolumeError(f"Copy failed: {e}") from e
|
|
482
|
+
|
|
483
|
+
if exit_code != 0:
|
|
484
|
+
click.echo(f" ✗ Copy failed with exit code {exit_code}")
|
|
485
|
+
if logs:
|
|
486
|
+
click.echo(f" Logs: {logs}")
|
|
487
|
+
raise VolumeError(f"Copy failed with exit code {exit_code}")
|
|
488
|
+
|
|
489
|
+
click.echo(f" ✓ Copy completed: {volume_name} -> s3://{s3_bucket}/{s3_path}")
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
@cli.command()
|
|
493
|
+
@click.option("--url", "-u", required=True, help="Portainer base URL")
|
|
494
|
+
@click.argument("source")
|
|
495
|
+
@click.argument("dest")
|
|
496
|
+
@click.option("--endpoint-id", "-e", type=int, default=1, help="Portainer endpoint ID")
|
|
497
|
+
@click.option("--s3-endpoint", help="S3/MinIO endpoint URL (or S3_ENDPOINT env var)")
|
|
498
|
+
@click.option(
|
|
499
|
+
"--ownership",
|
|
500
|
+
type=click.Choice(["private", "team", "public", "copy"]),
|
|
501
|
+
default="copy",
|
|
502
|
+
help="Access control: copy from source (default), private, team, or public",
|
|
503
|
+
)
|
|
504
|
+
@click.option("--team-id", "-t", type=int, help="Team ID for team ownership")
|
|
505
|
+
def cp(
|
|
506
|
+
url: str,
|
|
507
|
+
source: str,
|
|
508
|
+
dest: str,
|
|
509
|
+
endpoint_id: int,
|
|
510
|
+
s3_endpoint: str | None,
|
|
511
|
+
ownership: str,
|
|
512
|
+
team_id: int | None,
|
|
513
|
+
):
|
|
514
|
+
"""Copy data between volumes and S3 (raw copy).
|
|
515
|
+
|
|
516
|
+
SOURCE and DEST can be volume names or S3 URIs.
|
|
517
|
+
|
|
518
|
+
Examples:
|
|
519
|
+
ptctools volume cp source dest
|
|
520
|
+
ptctools volume cp source dest --ownership team
|
|
521
|
+
ptctools volume cp source dest --ownership private
|
|
522
|
+
ptctools volume cp s3://bucket/path volume_a
|
|
523
|
+
ptctools volume cp volume_a s3://bucket/path
|
|
524
|
+
"""
|
|
525
|
+
from ptctools._s3 import is_s3_uri, parse_s3_uri, get_s3_endpoint, get_s3_credentials
|
|
526
|
+
|
|
527
|
+
access_token = os.environ.get("PORTAINER_ACCESS_TOKEN")
|
|
528
|
+
if not access_token:
|
|
529
|
+
click.echo("Error: Missing PORTAINER_ACCESS_TOKEN", err=True)
|
|
530
|
+
sys.exit(1)
|
|
531
|
+
|
|
532
|
+
portainer_url = url.rstrip("/")
|
|
533
|
+
source_is_s3 = is_s3_uri(source)
|
|
534
|
+
dest_is_s3 = is_s3_uri(dest)
|
|
535
|
+
|
|
536
|
+
# Both are S3 - not supported
|
|
537
|
+
if source_is_s3 and dest_is_s3:
|
|
538
|
+
click.echo("Error: Cannot copy directly between S3 locations. Use volume as intermediate.", err=True)
|
|
539
|
+
sys.exit(1)
|
|
540
|
+
|
|
541
|
+
# Volume to Volume copy
|
|
542
|
+
if not source_is_s3 and not dest_is_s3:
|
|
543
|
+
click.echo(f"Portainer URL: {portainer_url}")
|
|
544
|
+
click.echo(f"Source Volume: {source}")
|
|
545
|
+
click.echo(f"Destination Volume: {dest}")
|
|
546
|
+
click.echo()
|
|
547
|
+
click.echo("=== Copying volume data ===")
|
|
548
|
+
|
|
549
|
+
try:
|
|
550
|
+
copy_volume(
|
|
551
|
+
portainer_url,
|
|
552
|
+
access_token,
|
|
553
|
+
endpoint_id,
|
|
554
|
+
source,
|
|
555
|
+
dest,
|
|
556
|
+
ownership,
|
|
557
|
+
team_id,
|
|
558
|
+
)
|
|
559
|
+
click.echo()
|
|
560
|
+
click.echo("=== Volume copy complete ===")
|
|
561
|
+
sys.exit(0)
|
|
562
|
+
except VolumeError as e:
|
|
563
|
+
logger.error("Volume copy failed: %s\n%s", e, traceback.format_exc())
|
|
564
|
+
click.echo()
|
|
565
|
+
click.echo("=== Volume copy failed ===")
|
|
566
|
+
sys.exit(1)
|
|
567
|
+
|
|
568
|
+
# Get S3 credentials
|
|
569
|
+
try:
|
|
570
|
+
s3_access_key, s3_secret_key = get_s3_credentials()
|
|
571
|
+
except click.ClickException as e:
|
|
572
|
+
click.echo(f"Error: {e.message}", err=True)
|
|
573
|
+
sys.exit(1)
|
|
574
|
+
|
|
575
|
+
# S3 to Volume (download)
|
|
576
|
+
if source_is_s3:
|
|
577
|
+
try:
|
|
578
|
+
uri_endpoint, s3_bucket, s3_path = parse_s3_uri(source)
|
|
579
|
+
endpoint = get_s3_endpoint(uri_endpoint, s3_endpoint)
|
|
580
|
+
except click.ClickException as e:
|
|
581
|
+
click.echo(f"Error: {e.message}", err=True)
|
|
582
|
+
sys.exit(1)
|
|
583
|
+
|
|
584
|
+
volume_name = dest
|
|
585
|
+
|
|
586
|
+
click.echo(f"Portainer URL: {portainer_url}")
|
|
587
|
+
click.echo(f"S3 Endpoint: {endpoint}")
|
|
588
|
+
click.echo(f"S3 Source: s3://{s3_bucket}/{s3_path}")
|
|
589
|
+
click.echo(f"Destination Volume: {volume_name}")
|
|
590
|
+
click.echo()
|
|
591
|
+
click.echo("=== Copying from S3 to volume ===")
|
|
592
|
+
|
|
593
|
+
try:
|
|
594
|
+
copy_s3_to_volume(
|
|
595
|
+
portainer_url,
|
|
596
|
+
access_token,
|
|
597
|
+
endpoint_id,
|
|
598
|
+
volume_name,
|
|
599
|
+
endpoint,
|
|
600
|
+
s3_bucket,
|
|
601
|
+
s3_path,
|
|
602
|
+
s3_access_key,
|
|
603
|
+
s3_secret_key,
|
|
604
|
+
)
|
|
605
|
+
click.echo()
|
|
606
|
+
click.echo("=== Copy from S3 complete ===")
|
|
607
|
+
sys.exit(0)
|
|
608
|
+
except VolumeError as e:
|
|
609
|
+
logger.error("S3 to volume copy failed: %s\n%s", e, traceback.format_exc())
|
|
610
|
+
click.echo()
|
|
611
|
+
click.echo("=== Copy from S3 failed ===")
|
|
612
|
+
sys.exit(1)
|
|
613
|
+
|
|
614
|
+
# Volume to S3 (upload)
|
|
615
|
+
if dest_is_s3:
|
|
616
|
+
try:
|
|
617
|
+
uri_endpoint, s3_bucket, s3_path = parse_s3_uri(dest)
|
|
618
|
+
endpoint = get_s3_endpoint(uri_endpoint, s3_endpoint)
|
|
619
|
+
except click.ClickException as e:
|
|
620
|
+
click.echo(f"Error: {e.message}", err=True)
|
|
621
|
+
sys.exit(1)
|
|
622
|
+
|
|
623
|
+
volume_name = source
|
|
624
|
+
# Use s3_path if provided, otherwise use volume name
|
|
625
|
+
upload_path = s3_path if s3_path else volume_name
|
|
626
|
+
|
|
627
|
+
click.echo(f"Portainer URL: {portainer_url}")
|
|
628
|
+
click.echo(f"Source Volume: {volume_name}")
|
|
629
|
+
click.echo(f"S3 Endpoint: {endpoint}")
|
|
630
|
+
click.echo(f"S3 Destination: s3://{s3_bucket}/{upload_path}")
|
|
631
|
+
click.echo()
|
|
632
|
+
click.echo("=== Copying volume to S3 ===")
|
|
633
|
+
|
|
634
|
+
try:
|
|
635
|
+
copy_volume_to_s3(
|
|
636
|
+
portainer_url,
|
|
637
|
+
access_token,
|
|
638
|
+
endpoint_id,
|
|
639
|
+
volume_name,
|
|
640
|
+
endpoint,
|
|
641
|
+
s3_bucket,
|
|
642
|
+
upload_path,
|
|
643
|
+
s3_access_key,
|
|
644
|
+
s3_secret_key,
|
|
645
|
+
)
|
|
646
|
+
click.echo()
|
|
647
|
+
click.echo("=== Copy to S3 complete ===")
|
|
648
|
+
sys.exit(0)
|
|
649
|
+
except VolumeError as e:
|
|
650
|
+
logger.error("Volume to S3 copy failed: %s\n%s", e, traceback.format_exc())
|
|
651
|
+
click.echo()
|
|
652
|
+
click.echo("=== Copy to S3 failed ===")
|
|
653
|
+
sys.exit(1)
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
@cli.command()
|
|
657
|
+
@click.option("--url", "-u", required=True, help="Portainer base URL")
|
|
658
|
+
@click.argument("volume")
|
|
659
|
+
@click.option("--endpoint-id", "-e", type=int, default=1, help="Portainer endpoint ID")
|
|
660
|
+
@click.option("--force", "-f", is_flag=True, help="Force removal even if in use")
|
|
661
|
+
@click.option("--yes", "-y", is_flag=True, help="Skip confirmation prompt")
|
|
662
|
+
def rm(
|
|
663
|
+
url: str,
|
|
664
|
+
volume: str,
|
|
665
|
+
endpoint_id: int,
|
|
666
|
+
force: bool,
|
|
667
|
+
yes: bool,
|
|
668
|
+
):
|
|
669
|
+
"""Remove a Docker volume.
|
|
670
|
+
|
|
671
|
+
VOLUME is the volume name to remove.
|
|
672
|
+
|
|
673
|
+
Example: ptctools volume rm volume_a
|
|
674
|
+
"""
|
|
675
|
+
access_token = os.environ.get("PORTAINER_ACCESS_TOKEN")
|
|
676
|
+
if not access_token:
|
|
677
|
+
click.echo("Error: Missing PORTAINER_ACCESS_TOKEN", err=True)
|
|
678
|
+
sys.exit(1)
|
|
679
|
+
|
|
680
|
+
portainer_url = url.rstrip("/")
|
|
681
|
+
|
|
682
|
+
if not yes:
|
|
683
|
+
if not click.confirm(f"Are you sure you want to delete volume '{volume}'?"):
|
|
684
|
+
click.echo("Aborted.")
|
|
685
|
+
sys.exit(0)
|
|
686
|
+
|
|
687
|
+
click.echo(f"Removing volume: {volume}...")
|
|
688
|
+
|
|
689
|
+
try:
|
|
690
|
+
client = get_portainer_docker_client(portainer_url, access_token, endpoint_id)
|
|
691
|
+
vol = client.volumes.get(volume)
|
|
692
|
+
vol.remove(force=force)
|
|
693
|
+
click.echo(f" ✓ Volume '{volume}' removed")
|
|
694
|
+
sys.exit(0)
|
|
695
|
+
except docker.errors.NotFound:
|
|
696
|
+
click.echo(f" ✓ Volume '{volume}' removed") # Already deleted
|
|
697
|
+
sys.exit(0)
|
|
698
|
+
except docker.errors.APIError as e:
|
|
699
|
+
logger.error("Volume removal failed: %s\n%s", e, traceback.format_exc())
|
|
700
|
+
click.echo(f" ✗ Failed to remove volume '{volume}': {e}", err=True)
|
|
701
|
+
sys.exit(1)
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
@cli.command()
|
|
705
|
+
@click.option("--url", "-u", required=True, help="Portainer base URL")
|
|
706
|
+
@click.argument("old_name")
|
|
707
|
+
@click.argument("new_name")
|
|
708
|
+
@click.option("--endpoint-id", "-e", type=int, default=1, help="Portainer endpoint ID")
|
|
709
|
+
@click.option("--yes", "-y", is_flag=True, help="Skip confirmation prompt")
|
|
710
|
+
def rename(
|
|
711
|
+
url: str,
|
|
712
|
+
old_name: str,
|
|
713
|
+
new_name: str,
|
|
714
|
+
endpoint_id: int,
|
|
715
|
+
yes: bool,
|
|
716
|
+
):
|
|
717
|
+
"""Rename a Docker volume (copy to new, delete old).
|
|
718
|
+
|
|
719
|
+
OLD_NAME is the current volume name.
|
|
720
|
+
NEW_NAME is the new volume name.
|
|
721
|
+
|
|
722
|
+
Example: ptctools volume rename volume_a volume_b
|
|
723
|
+
"""
|
|
724
|
+
access_token = os.environ.get("PORTAINER_ACCESS_TOKEN")
|
|
725
|
+
if not access_token:
|
|
726
|
+
click.echo("Error: Missing PORTAINER_ACCESS_TOKEN", err=True)
|
|
727
|
+
sys.exit(1)
|
|
728
|
+
|
|
729
|
+
portainer_url = url.rstrip("/")
|
|
730
|
+
|
|
731
|
+
if not yes:
|
|
732
|
+
if not click.confirm(f"Rename '{old_name}' to '{new_name}'? This will copy data and delete the original."):
|
|
733
|
+
click.echo("Aborted.")
|
|
734
|
+
sys.exit(0)
|
|
735
|
+
|
|
736
|
+
click.echo(f"Renaming volume: {old_name} -> {new_name}")
|
|
737
|
+
click.echo()
|
|
738
|
+
|
|
739
|
+
# Step 1: Copy data to new volume
|
|
740
|
+
click.echo("Step 1: Copying data to new volume...")
|
|
741
|
+
try:
|
|
742
|
+
copy_volume(portainer_url, access_token, endpoint_id, old_name, new_name)
|
|
743
|
+
except VolumeError as e:
|
|
744
|
+
logger.error("Volume rename failed during copy: %s\n%s", e, traceback.format_exc())
|
|
745
|
+
click.echo(" ✗ Failed to copy data. Original volume unchanged.", err=True)
|
|
746
|
+
sys.exit(1)
|
|
747
|
+
|
|
748
|
+
# Step 2: Delete old volume using docker-py
|
|
749
|
+
click.echo()
|
|
750
|
+
click.echo("Step 2: Removing old volume...")
|
|
751
|
+
try:
|
|
752
|
+
client = get_portainer_docker_client(portainer_url, access_token, endpoint_id)
|
|
753
|
+
vol = client.volumes.get(old_name)
|
|
754
|
+
vol.remove(force=True)
|
|
755
|
+
click.echo(f" ✓ Volume '{old_name}' removed")
|
|
756
|
+
except docker.errors.NotFound:
|
|
757
|
+
click.echo(f" ✓ Volume '{old_name}' removed") # Already deleted
|
|
758
|
+
except docker.errors.APIError as e:
|
|
759
|
+
logger.error("Volume rename failed during delete: %s\n%s", e, traceback.format_exc())
|
|
760
|
+
click.echo(f" ⚠ Warning: Failed to remove old volume '{old_name}'", err=True)
|
|
761
|
+
click.echo(f" Data has been copied to '{new_name}'. Please remove '{old_name}' manually.")
|
|
762
|
+
sys.exit(1)
|
|
763
|
+
|
|
764
|
+
click.echo()
|
|
765
|
+
click.echo(f"=== Volume renamed: {old_name} -> {new_name} ===")
|
|
766
|
+
sys.exit(0)
|
|
767
|
+
|
|
768
|
+
|
|
259
769
|
@cli.command()
|
|
260
770
|
@click.option("--url", "-u", required=True, help="Portainer base URL")
|
|
261
771
|
@click.option(
|
|
@@ -339,21 +849,26 @@ def restore(
|
|
|
339
849
|
click.echo()
|
|
340
850
|
click.echo("=== Restoring volumes with Duplicati ===")
|
|
341
851
|
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
852
|
+
try:
|
|
853
|
+
restore_volume(
|
|
854
|
+
portainer_url,
|
|
855
|
+
access_token,
|
|
856
|
+
endpoint_id,
|
|
857
|
+
volume_name,
|
|
858
|
+
endpoint,
|
|
859
|
+
s3_bucket,
|
|
860
|
+
s3_path,
|
|
861
|
+
s3_access_key,
|
|
862
|
+
s3_secret_key,
|
|
863
|
+
passphrase,
|
|
864
|
+
version,
|
|
865
|
+
restore_time,
|
|
866
|
+
)
|
|
867
|
+
click.echo()
|
|
868
|
+
click.echo("=== Volume restore complete ===")
|
|
869
|
+
sys.exit(0)
|
|
870
|
+
except VolumeError as e:
|
|
871
|
+
logger.error("Volume restore failed: %s\n%s", e, traceback.format_exc())
|
|
872
|
+
click.echo()
|
|
873
|
+
click.echo("=== Volume restore failed ===")
|
|
874
|
+
sys.exit(1)
|