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/_portainer.py
CHANGED
|
@@ -5,275 +5,499 @@ Common utility functions for Portainer API scripts.
|
|
|
5
5
|
from __future__ import annotations
|
|
6
6
|
|
|
7
7
|
import json
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
import docker
|
|
9
|
+
import docker.api.client
|
|
10
|
+
from requests.adapters import HTTPAdapter as RequestsHTTPAdapter
|
|
10
11
|
|
|
12
|
+
from ptctools.portainer_client.openapi_client import ApiClient
|
|
13
|
+
from ptctools.portainer_client.openapi_client.configuration import Configuration
|
|
14
|
+
from ptctools.portainer_client.openapi_client.api.resource_controls_api import (
|
|
15
|
+
ResourceControlsApi,
|
|
16
|
+
)
|
|
17
|
+
from ptctools.portainer_client.openapi_client.api.users_api import UsersApi
|
|
18
|
+
from ptctools.portainer_client.openapi_client.models.resourcecontrols_resource_control_create_payload import (
|
|
19
|
+
ResourcecontrolsResourceControlCreatePayload,
|
|
20
|
+
)
|
|
21
|
+
from ptctools.portainer_client.openapi_client.models.resourcecontrols_resource_control_update_payload import (
|
|
22
|
+
ResourcecontrolsResourceControlUpdatePayload,
|
|
23
|
+
)
|
|
24
|
+
from ptctools.portainer_client.openapi_client.models.portainer_resource_control_type import (
|
|
25
|
+
PortainerResourceControlType,
|
|
26
|
+
)
|
|
27
|
+
from ptctools.portainer_client.openapi_client.exceptions import ApiException
|
|
11
28
|
|
|
12
|
-
def api_request(
|
|
13
|
-
url: str,
|
|
14
|
-
api_key: str,
|
|
15
|
-
method: str = "GET",
|
|
16
|
-
data: dict | None = None,
|
|
17
|
-
) -> tuple[dict | list | None, int]:
|
|
18
|
-
"""Make an API request to Portainer."""
|
|
19
|
-
headers = {
|
|
20
|
-
"X-API-Key": api_key,
|
|
21
|
-
"Content-Type": "application/json",
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
body = json.dumps(data).encode("utf-8") if data else None
|
|
25
|
-
req = Request(url, data=body, headers=headers, method=method)
|
|
26
29
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
response_body = response.read().decode("utf-8")
|
|
30
|
-
return json.loads(response_body) if response_body else None, response.status
|
|
31
|
-
except HTTPError as e:
|
|
32
|
-
response_body = e.read().decode("utf-8")
|
|
33
|
-
try:
|
|
34
|
-
return json.loads(response_body), e.code
|
|
35
|
-
except json.JSONDecodeError:
|
|
36
|
-
return {"error": response_body}, e.code
|
|
37
|
-
except URLError as e:
|
|
38
|
-
return {"error": str(e.reason)}, 0
|
|
30
|
+
class PortainerError(Exception):
|
|
31
|
+
"""Base exception for Portainer-related errors."""
|
|
39
32
|
|
|
33
|
+
pass
|
|
40
34
|
|
|
41
|
-
def create_container(
|
|
42
|
-
portainer_url: str,
|
|
43
|
-
api_key: str,
|
|
44
|
-
endpoint_id: int,
|
|
45
|
-
config: dict,
|
|
46
|
-
) -> str | None:
|
|
47
|
-
"""Create a container and return its ID."""
|
|
48
|
-
url = f"{portainer_url}/api/endpoints/{endpoint_id}/docker/containers/create"
|
|
49
|
-
response, status_code = api_request(url, api_key, method="POST", data=config)
|
|
50
35
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
else:
|
|
54
|
-
print(f"Error creating container (HTTP {status_code}):")
|
|
55
|
-
print(json.dumps(response, indent=2))
|
|
56
|
-
return None
|
|
36
|
+
class ResourceControlError(PortainerError):
|
|
37
|
+
"""Exception for resource control operations."""
|
|
57
38
|
|
|
39
|
+
pass
|
|
58
40
|
|
|
59
|
-
def pull_image(
|
|
60
|
-
portainer_url: str,
|
|
61
|
-
api_key: str,
|
|
62
|
-
endpoint_id: int,
|
|
63
|
-
image: str,
|
|
64
|
-
) -> bool:
|
|
65
|
-
"""Pull a Docker image."""
|
|
66
|
-
from urllib.request import Request, urlopen
|
|
67
|
-
from urllib.parse import quote
|
|
68
|
-
|
|
69
|
-
url = f"{portainer_url}/api/endpoints/{endpoint_id}/docker/images/create?fromImage={quote(image)}"
|
|
70
|
-
headers = {"X-API-Key": api_key}
|
|
71
|
-
req = Request(url, data=b"", headers=headers, method="POST")
|
|
72
41
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
# Read streaming response (Docker sends progress updates)
|
|
76
|
-
response.read()
|
|
77
|
-
return response.status == 200
|
|
78
|
-
except Exception:
|
|
79
|
-
return False
|
|
42
|
+
class VolumeOwnershipError(PortainerError):
|
|
43
|
+
"""Exception for volume ownership operations."""
|
|
80
44
|
|
|
45
|
+
pass
|
|
81
46
|
|
|
82
|
-
def start_container(
|
|
83
|
-
portainer_url: str,
|
|
84
|
-
api_key: str,
|
|
85
|
-
endpoint_id: int,
|
|
86
|
-
container_id: str,
|
|
87
|
-
) -> bool:
|
|
88
|
-
"""Start a container."""
|
|
89
|
-
url = f"{portainer_url}/api/endpoints/{endpoint_id}/docker/containers/{container_id}/start"
|
|
90
|
-
_, status_code = api_request(url, api_key, method="POST")
|
|
91
|
-
return 200 <= status_code < 300
|
|
92
47
|
|
|
48
|
+
class PortainerHTTPAdapter(RequestsHTTPAdapter):
|
|
49
|
+
"""Custom HTTP adapter that routes requests through Portainer's Docker proxy."""
|
|
93
50
|
|
|
94
|
-
def
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
) -> int:
|
|
100
|
-
"""Wait for a container to finish and return exit code."""
|
|
101
|
-
url = f"{portainer_url}/api/endpoints/{endpoint_id}/docker/containers/{container_id}/wait"
|
|
102
|
-
response, status_code = api_request(url, api_key, method="POST")
|
|
51
|
+
def __init__(self, portainer_url: str, endpoint_id: int, api_key: str, **kwargs):
|
|
52
|
+
self.portainer_url = portainer_url.rstrip("/")
|
|
53
|
+
self.endpoint_id = endpoint_id
|
|
54
|
+
self.api_key = api_key
|
|
55
|
+
super().__init__(**kwargs)
|
|
103
56
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
57
|
+
def send(self, request, *args, **kwargs):
|
|
58
|
+
# Rewrite URL: http://localhost:2375/v1.xx/containers/... -> {portainer_url}/api/endpoints/{id}/docker/containers/...
|
|
59
|
+
original_url = request.url
|
|
107
60
|
|
|
61
|
+
# docker-py sends to http://localhost:2375/v1.45/containers/...
|
|
62
|
+
if original_url.startswith("http://localhost"):
|
|
63
|
+
# Extract path after localhost (strip host and port)
|
|
64
|
+
# e.g., "http://localhost:2375/v1.45/containers/abc" -> "/v1.45/containers/abc"
|
|
65
|
+
from urllib.parse import urlparse
|
|
108
66
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
container_id: str,
|
|
114
|
-
) -> str:
|
|
115
|
-
"""Get container logs."""
|
|
116
|
-
url = f"{portainer_url}/api/endpoints/{endpoint_id}/docker/containers/{container_id}/logs?stdout=true&stderr=true"
|
|
67
|
+
parsed = urlparse(original_url)
|
|
68
|
+
path = parsed.path
|
|
69
|
+
if parsed.query:
|
|
70
|
+
path = f"{path}?{parsed.query}"
|
|
117
71
|
|
|
118
|
-
|
|
119
|
-
|
|
72
|
+
# Remove version prefix like /v1.45
|
|
73
|
+
if path.startswith("/v"):
|
|
74
|
+
parts = path.split("/", 2)
|
|
75
|
+
if len(parts) >= 3:
|
|
76
|
+
path = "/" + parts[2]
|
|
120
77
|
|
|
121
|
-
|
|
122
|
-
with urlopen(req) as response:
|
|
123
|
-
# Docker logs have stream headers, strip them
|
|
124
|
-
raw_logs = response.read()
|
|
125
|
-
# Simple cleanup - remove Docker stream headers (8 bytes each)
|
|
126
|
-
logs = ""
|
|
127
|
-
i = 0
|
|
128
|
-
while i < len(raw_logs):
|
|
129
|
-
if i + 8 <= len(raw_logs):
|
|
130
|
-
size = int.from_bytes(raw_logs[i + 4 : i + 8], "big")
|
|
131
|
-
if i + 8 + size <= len(raw_logs):
|
|
132
|
-
logs += raw_logs[i + 8 : i + 8 + size].decode(
|
|
133
|
-
"utf-8", errors="replace"
|
|
134
|
-
)
|
|
135
|
-
i += 8 + size
|
|
136
|
-
continue
|
|
137
|
-
break
|
|
138
|
-
return logs
|
|
139
|
-
except Exception as e:
|
|
140
|
-
return f"Error getting logs: {e}"
|
|
78
|
+
request.url = f"{self.portainer_url.rstrip('/')}/api/endpoints/{self.endpoint_id}/docker{path}"
|
|
141
79
|
|
|
80
|
+
# Inject API key header
|
|
81
|
+
request.headers["X-API-Key"] = self.api_key
|
|
142
82
|
|
|
143
|
-
|
|
144
|
-
portainer_url: str,
|
|
145
|
-
api_key: str,
|
|
146
|
-
endpoint_id: int,
|
|
147
|
-
container_id: str,
|
|
148
|
-
) -> bool:
|
|
149
|
-
"""Remove a container."""
|
|
150
|
-
url = f"{portainer_url}/api/endpoints/{endpoint_id}/docker/containers/{container_id}?force=true"
|
|
151
|
-
_, status_code = api_request(url, api_key, method="DELETE")
|
|
152
|
-
return 200 <= status_code < 300
|
|
83
|
+
return super().send(request, *args, **kwargs)
|
|
153
84
|
|
|
154
85
|
|
|
155
|
-
def
|
|
86
|
+
def get_portainer_docker_client(
|
|
156
87
|
portainer_url: str,
|
|
157
88
|
api_key: str,
|
|
158
89
|
endpoint_id: int,
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
90
|
+
) -> docker.DockerClient:
|
|
91
|
+
"""Create a docker-py client that works through Portainer's Docker proxy.
|
|
92
|
+
|
|
93
|
+
Args:
|
|
94
|
+
portainer_url: Portainer base URL (e.g., "https://portainer.example.com")
|
|
95
|
+
api_key: Portainer API key
|
|
96
|
+
endpoint_id: Portainer endpoint/environment ID
|
|
97
|
+
|
|
98
|
+
Returns:
|
|
99
|
+
A DockerClient configured to route through Portainer
|
|
100
|
+
"""
|
|
101
|
+
# Create APIClient with explicit version to skip auto-detection
|
|
102
|
+
api_client = docker.api.client.APIClient(
|
|
103
|
+
base_url="http://localhost:2375",
|
|
104
|
+
version="1.45", # Fixed version, skip auto-detection
|
|
105
|
+
)
|
|
164
106
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
107
|
+
# APIClient inherits from requests.Session, so mount adapter directly on it
|
|
108
|
+
adapter = PortainerHTTPAdapter(portainer_url, endpoint_id, api_key)
|
|
109
|
+
api_client.mount("http://", adapter)
|
|
110
|
+
api_client.mount("https://", adapter)
|
|
168
111
|
|
|
112
|
+
# Wrap in high-level client
|
|
113
|
+
client = docker.DockerClient()
|
|
114
|
+
client.api = api_client
|
|
169
115
|
|
|
170
|
-
|
|
171
|
-
portainer_url: str,
|
|
172
|
-
api_key: str,
|
|
173
|
-
endpoint_id: int,
|
|
174
|
-
network_name: str,
|
|
175
|
-
) -> str | None:
|
|
176
|
-
"""Find a network by name and return its ID."""
|
|
177
|
-
url = f'{portainer_url}/api/endpoints/{endpoint_id}/docker/networks?filters={{"name":["{network_name}"]}}'
|
|
178
|
-
response, status_code = api_request(url, api_key)
|
|
116
|
+
return client
|
|
179
117
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
118
|
+
|
|
119
|
+
def get_portainer_api_client(portainer_url: str, api_key: str) -> ApiClient:
|
|
120
|
+
"""Create a configured ApiClient for Portainer API."""
|
|
121
|
+
config = Configuration(
|
|
122
|
+
host=f"{portainer_url.rstrip('/')}/api", api_key={"ApiKeyAuth": api_key}
|
|
123
|
+
)
|
|
124
|
+
return ApiClient(configuration=config)
|
|
183
125
|
|
|
184
126
|
|
|
185
|
-
def
|
|
127
|
+
def set_volume_ownership(
|
|
186
128
|
portainer_url: str,
|
|
187
129
|
api_key: str,
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
130
|
+
volume_name: str,
|
|
131
|
+
ownership: str,
|
|
132
|
+
team_id: int | None = None,
|
|
133
|
+
endpoint_id: int = 1,
|
|
134
|
+
) -> str:
|
|
135
|
+
"""Set ownership on a volume.
|
|
136
|
+
|
|
137
|
+
Args:
|
|
138
|
+
ownership: 'private', 'team', or 'public'
|
|
139
|
+
team_id: Required if ownership is 'team'
|
|
140
|
+
endpoint_id: Portainer endpoint ID (default 1)
|
|
141
|
+
|
|
142
|
+
Returns:
|
|
143
|
+
A message describing what was done (e.g., "set to private", "updated to team 5")
|
|
144
|
+
|
|
145
|
+
Raises:
|
|
146
|
+
VolumeOwnershipError: If ownership cannot be set
|
|
147
|
+
"""
|
|
148
|
+
# 1. Inspect volume to get existing RC via Docker Proxy
|
|
149
|
+
# This relies on Portainer injecting metadata into the Docker volume inspect response
|
|
150
|
+
docker_client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
151
|
+
try:
|
|
152
|
+
volume = docker_client.volumes.get(volume_name)
|
|
153
|
+
except docker.errors.NotFound:
|
|
154
|
+
# If volume not found, we can't set ownership
|
|
155
|
+
raise VolumeOwnershipError(f"Volume {volume_name} not found")
|
|
156
|
+
except docker.errors.APIError as e:
|
|
157
|
+
raise VolumeOwnershipError(f"Failed to inspect volume: {e}") from e
|
|
158
|
+
|
|
159
|
+
# Extract ResourceControl ID if it exists
|
|
160
|
+
# Structure: volume.attrs['Portainer']['ResourceControl']['Id']
|
|
161
|
+
rc_id = None
|
|
162
|
+
portainer_meta = volume.attrs.get("Portainer")
|
|
163
|
+
if portainer_meta:
|
|
164
|
+
rc = portainer_meta.get("ResourceControl")
|
|
165
|
+
if rc:
|
|
166
|
+
rc_id = rc.get("Id")
|
|
167
|
+
|
|
168
|
+
# 2. Use Portainer Client for RC operations
|
|
169
|
+
with get_portainer_api_client(portainer_url, api_key) as client:
|
|
170
|
+
rc_api = ResourceControlsApi(client)
|
|
171
|
+
users_api = UsersApi(client)
|
|
172
|
+
|
|
173
|
+
if ownership == "private":
|
|
174
|
+
# Get current user ID
|
|
175
|
+
try:
|
|
176
|
+
user = users_api.current_user_inspect()
|
|
177
|
+
user_id = user.id
|
|
178
|
+
except ApiException as e:
|
|
179
|
+
raise VolumeOwnershipError("Failed to get current user") from e
|
|
180
|
+
|
|
181
|
+
# Payload logic
|
|
182
|
+
if rc_id:
|
|
183
|
+
payload = ResourcecontrolsResourceControlUpdatePayload(
|
|
184
|
+
public=False,
|
|
185
|
+
teams=[],
|
|
186
|
+
users=[user_id],
|
|
187
|
+
)
|
|
188
|
+
try:
|
|
189
|
+
rc_api.resource_control_update(id=rc_id, body=payload.to_dict())
|
|
190
|
+
except ApiException as e:
|
|
191
|
+
error_msg = str(e.body) if e.body else str(e.reason)
|
|
192
|
+
raise VolumeOwnershipError(
|
|
193
|
+
f"Failed to update resource control: {error_msg}"
|
|
194
|
+
) from e
|
|
195
|
+
return "updated to private"
|
|
196
|
+
else:
|
|
197
|
+
payload = ResourcecontrolsResourceControlCreatePayload(
|
|
198
|
+
resource_id=volume_name,
|
|
199
|
+
# IMPORTANT: Resource ID for volumes must include the suffix if present?
|
|
200
|
+
# The volume.attrs['ResourceID'] field usually contains the full ID.
|
|
201
|
+
# Or 'Name' + suffix.
|
|
202
|
+
# docker-py volume.id usually is the name for local driver, but Portainer might expect
|
|
203
|
+
# the ID with suffix if it lists it that way.
|
|
204
|
+
# Actually, for CREATION, we use the volume NAME usually if it's external?
|
|
205
|
+
# But the API sample showed "ResourceID": "llmproxy-data_db-data_t4sho5o9f8rqtdf236jvt44us"
|
|
206
|
+
# If we create a NEW control, we need to match the resource ID expected by Portainer.
|
|
207
|
+
# If Portainer hasn't assigned a suffix yet (new volume), validation might rely on name.
|
|
208
|
+
# But if we use volume.attrs['ResourceID'], that should be safer.
|
|
209
|
+
# If 'ResourceID' field is missing, fallback to volume_name.
|
|
210
|
+
# Checking the user's JSON: "ResourceID": "..." is at top level.
|
|
211
|
+
# Docker standard inspect has "Name". "ResourceID" is likely added by Portainer proxy?
|
|
212
|
+
# Let's check docker-py Volume object attrs.
|
|
213
|
+
# Defaulting to volume_name is safest for 'create' if unsure, as that's what we did before.
|
|
214
|
+
# But if Portainer uses a unique ID, we should use it.
|
|
215
|
+
# I will try to use volume.attrs.get("ResourceID") or volume_name.
|
|
216
|
+
type=PortainerResourceControlType.VolumeResourceControl,
|
|
217
|
+
public=False,
|
|
218
|
+
teams=[],
|
|
219
|
+
users=[user_id],
|
|
220
|
+
)
|
|
221
|
+
# Correction: ResourceID in payload.
|
|
222
|
+
resource_identifier = volume.attrs.get("ResourceID", volume_name)
|
|
223
|
+
payload.resource_id = resource_identifier
|
|
224
|
+
|
|
225
|
+
try:
|
|
226
|
+
rc_api.resource_control_create(body=payload.to_dict())
|
|
227
|
+
except ApiException as e:
|
|
228
|
+
error_msg = str(e.body) if e.body else str(e.reason)
|
|
229
|
+
raise VolumeOwnershipError(
|
|
230
|
+
f"Failed to create resource control: {error_msg}"
|
|
231
|
+
) from e
|
|
232
|
+
return "set to private"
|
|
233
|
+
|
|
234
|
+
elif ownership == "team":
|
|
235
|
+
if not team_id:
|
|
236
|
+
# Auto-detect team
|
|
237
|
+
try:
|
|
238
|
+
user = users_api.current_user_inspect()
|
|
239
|
+
memberships = users_api.user_memberships_inspect(user.id)
|
|
240
|
+
team_ids = [m.team_id for m in memberships if m.team_id]
|
|
241
|
+
if not team_ids:
|
|
242
|
+
raise VolumeOwnershipError(
|
|
243
|
+
"No team found and --team-id not specified"
|
|
244
|
+
)
|
|
245
|
+
team_id = team_ids[0]
|
|
246
|
+
except ApiException as e:
|
|
247
|
+
raise VolumeOwnershipError(
|
|
248
|
+
"No team found and --team-id not specified"
|
|
249
|
+
) from e
|
|
250
|
+
|
|
251
|
+
if rc_id:
|
|
252
|
+
payload = ResourcecontrolsResourceControlUpdatePayload(
|
|
253
|
+
public=False,
|
|
254
|
+
teams=[team_id],
|
|
255
|
+
users=[],
|
|
256
|
+
)
|
|
257
|
+
try:
|
|
258
|
+
rc_api.resource_control_update(id=rc_id, body=payload.to_dict())
|
|
259
|
+
except ApiException as e:
|
|
260
|
+
error_msg = str(e.body) if e.body else str(e.reason)
|
|
261
|
+
raise VolumeOwnershipError(
|
|
262
|
+
f"Failed to update resource control: {error_msg}"
|
|
263
|
+
) from e
|
|
264
|
+
return f"updated to team {team_id}"
|
|
265
|
+
else:
|
|
266
|
+
resource_identifier = volume.attrs.get("ResourceID", volume_name)
|
|
267
|
+
payload = ResourcecontrolsResourceControlCreatePayload(
|
|
268
|
+
resource_id=resource_identifier,
|
|
269
|
+
type=PortainerResourceControlType.VolumeResourceControl,
|
|
270
|
+
public=False,
|
|
271
|
+
teams=[team_id],
|
|
272
|
+
users=[],
|
|
273
|
+
)
|
|
274
|
+
try:
|
|
275
|
+
rc_api.resource_control_create(body=payload.to_dict())
|
|
276
|
+
except ApiException as e:
|
|
277
|
+
error_msg = str(e.body) if e.body else str(e.reason)
|
|
278
|
+
raise VolumeOwnershipError(
|
|
279
|
+
f"Failed to create resource control: {error_msg}"
|
|
280
|
+
) from e
|
|
281
|
+
return f"set to team {team_id}"
|
|
282
|
+
|
|
283
|
+
elif ownership == "public":
|
|
284
|
+
if rc_id:
|
|
285
|
+
payload = ResourcecontrolsResourceControlUpdatePayload(
|
|
286
|
+
public=True,
|
|
287
|
+
teams=[],
|
|
288
|
+
users=[],
|
|
289
|
+
)
|
|
290
|
+
try:
|
|
291
|
+
rc_api.resource_control_update(id=rc_id, body=payload.to_dict())
|
|
292
|
+
except ApiException as e:
|
|
293
|
+
error_msg = str(e.body) if e.body else str(e.reason)
|
|
294
|
+
raise VolumeOwnershipError(
|
|
295
|
+
f"Failed to update resource control: {error_msg}"
|
|
296
|
+
) from e
|
|
297
|
+
return "updated to public"
|
|
298
|
+
else:
|
|
299
|
+
resource_identifier = volume.attrs.get("ResourceID", volume_name)
|
|
300
|
+
payload = ResourcecontrolsResourceControlCreatePayload(
|
|
301
|
+
resource_id=resource_identifier,
|
|
302
|
+
type=PortainerResourceControlType.VolumeResourceControl,
|
|
303
|
+
public=True,
|
|
304
|
+
teams=[],
|
|
305
|
+
users=[],
|
|
306
|
+
)
|
|
307
|
+
try:
|
|
308
|
+
rc_api.resource_control_create(body=payload.to_dict())
|
|
309
|
+
except ApiException as e:
|
|
310
|
+
error_msg = str(e.body) if e.body else str(e.reason)
|
|
311
|
+
raise VolumeOwnershipError(
|
|
312
|
+
f"Failed to create resource control: {error_msg}"
|
|
313
|
+
) from e
|
|
314
|
+
return "set to public"
|
|
315
|
+
|
|
316
|
+
else:
|
|
317
|
+
raise VolumeOwnershipError(f"Unknown ownership type: {ownership}")
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
def copy_volume_resource_control(
|
|
207
321
|
portainer_url: str,
|
|
208
322
|
api_key: str,
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
from
|
|
323
|
+
source_volume: str,
|
|
324
|
+
dest_volume: str,
|
|
325
|
+
endpoint_id: int = 1,
|
|
326
|
+
) -> str:
|
|
327
|
+
"""Copy ResourceControl from source volume to destination volume.
|
|
214
328
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
}
|
|
220
|
-
body = json.dumps({"Detach": False, "Tty": False}).encode("utf-8")
|
|
221
|
-
req = Request(url, data=body, headers=headers, method="POST")
|
|
329
|
+
Returns:
|
|
330
|
+
Action taken: 'copied' or 'skipped'
|
|
331
|
+
"""
|
|
332
|
+
docker_client = get_portainer_docker_client(portainer_url, api_key, endpoint_id)
|
|
222
333
|
|
|
334
|
+
# Check Source RC
|
|
223
335
|
try:
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
# Strip Docker stream headers
|
|
228
|
-
output = ""
|
|
229
|
-
i = 0
|
|
230
|
-
while i < len(raw_output):
|
|
231
|
-
if i + 8 <= len(raw_output):
|
|
232
|
-
size = int.from_bytes(raw_output[i + 4 : i + 8], "big")
|
|
233
|
-
if i + 8 + size <= len(raw_output):
|
|
234
|
-
output += raw_output[i + 8 : i + 8 + size].decode(
|
|
235
|
-
"utf-8", errors="replace"
|
|
236
|
-
)
|
|
237
|
-
i += 8 + size
|
|
238
|
-
continue
|
|
239
|
-
break
|
|
240
|
-
except Exception as e:
|
|
241
|
-
return -1, f"Error: {e}"
|
|
242
|
-
|
|
243
|
-
# Get exec exit code
|
|
244
|
-
inspect_url = (
|
|
245
|
-
f"{portainer_url}/api/endpoints/{endpoint_id}/docker/exec/{exec_id}/json"
|
|
246
|
-
)
|
|
247
|
-
inspect_resp, _ = api_request(inspect_url, api_key)
|
|
248
|
-
exit_code = inspect_resp.get("ExitCode", -1) if inspect_resp else -1
|
|
336
|
+
source_vol = docker_client.volumes.get(source_volume)
|
|
337
|
+
except docker.errors.NotFound:
|
|
338
|
+
return "skipped"
|
|
249
339
|
|
|
250
|
-
|
|
340
|
+
source_meta = source_vol.attrs.get("Portainer", {})
|
|
341
|
+
source_rc = source_meta.get("ResourceControl")
|
|
251
342
|
|
|
343
|
+
if not source_rc:
|
|
344
|
+
return "skipped"
|
|
252
345
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
if
|
|
263
|
-
|
|
264
|
-
|
|
346
|
+
# Check Dest RC
|
|
347
|
+
try:
|
|
348
|
+
dest_vol = docker_client.volumes.get(dest_volume)
|
|
349
|
+
except docker.errors.NotFound:
|
|
350
|
+
return "skipped"
|
|
351
|
+
|
|
352
|
+
dest_meta = dest_vol.attrs.get("Portainer", {})
|
|
353
|
+
dest_rc = dest_meta.get("ResourceControl")
|
|
354
|
+
|
|
355
|
+
if dest_rc:
|
|
356
|
+
return "skipped"
|
|
357
|
+
|
|
358
|
+
# Extract settings from source
|
|
359
|
+
public = source_rc.get("Public", False)
|
|
360
|
+
team_ids = [
|
|
361
|
+
ta.get("TeamId") for ta in source_rc.get("TeamAccesses", []) if ta.get("TeamId")
|
|
362
|
+
]
|
|
363
|
+
user_ids = [
|
|
364
|
+
ua.get("UserId") for ua in source_rc.get("UserAccesses", []) if ua.get("UserId")
|
|
365
|
+
]
|
|
366
|
+
|
|
367
|
+
# Create resource control on dest
|
|
368
|
+
resource_identifier = dest_vol.attrs.get("ResourceID", dest_volume)
|
|
369
|
+
|
|
370
|
+
with get_portainer_api_client(portainer_url, api_key) as client:
|
|
371
|
+
rc_api = ResourceControlsApi(client)
|
|
372
|
+
payload = ResourcecontrolsResourceControlCreatePayload(
|
|
373
|
+
resource_id=resource_identifier,
|
|
374
|
+
type=PortainerResourceControlType.VolumeResourceControl,
|
|
375
|
+
public=public,
|
|
376
|
+
teams=team_ids or [],
|
|
377
|
+
users=user_ids or [],
|
|
378
|
+
)
|
|
379
|
+
try:
|
|
380
|
+
rc_api.resource_control_create(body=payload.to_dict())
|
|
381
|
+
except ApiException as e:
|
|
382
|
+
error_msg = str(e.body) if e.body else str(e.reason)
|
|
383
|
+
raise ResourceControlError(
|
|
384
|
+
f"Failed to copy resource control: {error_msg}"
|
|
385
|
+
) from e
|
|
265
386
|
|
|
266
|
-
|
|
267
|
-
if not container_id:
|
|
268
|
-
return -1, "Failed to create container"
|
|
387
|
+
return "copied"
|
|
269
388
|
|
|
270
|
-
try:
|
|
271
|
-
if not start_container(portainer_url, api_key, endpoint_id, container_id):
|
|
272
|
-
return -1, "Failed to start container"
|
|
273
389
|
|
|
274
|
-
|
|
275
|
-
|
|
390
|
+
def run_container(
|
|
391
|
+
client: docker.DockerClient, image: str, binds: list[str] | None = None, **kwargs
|
|
392
|
+
) -> tuple[int, str]:
|
|
393
|
+
"""Run a container, wait for it to finish, and clean up.
|
|
394
|
+
|
|
395
|
+
1. Pulls image
|
|
396
|
+
2. Creates and runs container
|
|
397
|
+
3. Removes container
|
|
398
|
+
4. Removes image if unused
|
|
399
|
+
|
|
400
|
+
Args:
|
|
401
|
+
client: Docker client
|
|
402
|
+
image: Image name (e.g. "busybox:latest")
|
|
403
|
+
binds: List of volume binds (e.g. ["vol:/data"])
|
|
404
|
+
**kwargs: Additional arguments for client.api.create_container
|
|
405
|
+
|
|
406
|
+
Returns:
|
|
407
|
+
tuple(exit_code, logs)
|
|
408
|
+
"""
|
|
409
|
+
# 1. Check if image exists
|
|
410
|
+
image_existed = False
|
|
411
|
+
try:
|
|
412
|
+
client.images.get(image)
|
|
413
|
+
image_existed = True
|
|
414
|
+
except docker.errors.ImageNotFound:
|
|
415
|
+
image_existed = False
|
|
416
|
+
except docker.errors.APIError:
|
|
417
|
+
# If we can't check, assume it existed to be safe (don't delete user data)
|
|
418
|
+
# And try to pull just in case the error was transient?
|
|
419
|
+
# Actually safer to assume it exists so we don't auto-remove,
|
|
420
|
+
# but we should still try to pull if we're not sure strictly...
|
|
421
|
+
# But instructions say "if image exist so no need pull".
|
|
422
|
+
# If API error, we don't know. Let's assume we need to pull to be safe (ensure it's there),
|
|
423
|
+
# but NOT auto-remove (safe).
|
|
424
|
+
image_existed = True
|
|
425
|
+
# But we will fall through to pull logic if we don't set a flag "need_pull"
|
|
426
|
+
pass
|
|
427
|
+
|
|
428
|
+
# Pull image only if it didn't exist
|
|
429
|
+
if not image_existed:
|
|
430
|
+
try:
|
|
431
|
+
# Split image into name and tag if possible, or just pass full string
|
|
432
|
+
if ":" in image:
|
|
433
|
+
repo, tag = image.split(":", 1)
|
|
434
|
+
client.images.pull(repo, tag=tag)
|
|
435
|
+
else:
|
|
436
|
+
client.images.pull(image)
|
|
437
|
+
except docker.errors.APIError:
|
|
438
|
+
# Continue even if pull fails (maybe we are offline?)
|
|
439
|
+
pass
|
|
440
|
+
|
|
441
|
+
# Prepare host config
|
|
442
|
+
# If host_config is already in kwargs, use it (but we might need to merge binds)
|
|
443
|
+
# The existing usages pass host_config=client.api.create_host_config(...)
|
|
444
|
+
# If the user passes 'binds' argument, we should create host_config or update it.
|
|
445
|
+
|
|
446
|
+
# However, to be flexible:
|
|
447
|
+
# If 'host_config' is passed in kwargs, use it.
|
|
448
|
+
# If 'binds' is passed, we construct host_config.
|
|
449
|
+
|
|
450
|
+
host_config = kwargs.pop("host_config", None)
|
|
451
|
+
if binds and not host_config:
|
|
452
|
+
host_config = client.api.create_host_config(
|
|
453
|
+
binds=binds,
|
|
454
|
+
auto_remove=False,
|
|
455
|
+
)
|
|
456
|
+
elif binds and host_config:
|
|
457
|
+
# This is tricky if host_config is a dict or object.
|
|
458
|
+
# docker-py create_host_config returns a dictionary.
|
|
459
|
+
# We'll just assume the caller handles it if they pass both.
|
|
460
|
+
# But for simpler usage, let's just support passing binds.
|
|
461
|
+
pass
|
|
462
|
+
|
|
463
|
+
# 2. Create container
|
|
464
|
+
# We use client.api.create_container (low-level) as per existing usages
|
|
465
|
+
# image and other args in kwargs
|
|
466
|
+
|
|
467
|
+
# Ensure image is in kwargs or passed
|
|
468
|
+
create_kwargs = kwargs.copy()
|
|
469
|
+
create_kwargs["image"] = image
|
|
470
|
+
if host_config:
|
|
471
|
+
create_kwargs["host_config"] = host_config
|
|
472
|
+
|
|
473
|
+
container_id = None
|
|
474
|
+
try:
|
|
475
|
+
container_resp = client.api.create_container(**create_kwargs)
|
|
476
|
+
container_id = container_resp.get("Id")
|
|
477
|
+
|
|
478
|
+
# 3. Start and wait
|
|
479
|
+
container = client.containers.get(container_id)
|
|
480
|
+
container.start()
|
|
481
|
+
result = container.wait()
|
|
482
|
+
exit_code = result.get("StatusCode", -1)
|
|
483
|
+
logs = container.logs(stdout=True, stderr=True)
|
|
484
|
+
if isinstance(logs, bytes):
|
|
485
|
+
logs = logs.decode("utf-8", errors="replace")
|
|
276
486
|
|
|
277
|
-
return exit_code, logs
|
|
278
487
|
finally:
|
|
279
|
-
|
|
488
|
+
# 4. Remove container
|
|
489
|
+
if container_id:
|
|
490
|
+
try:
|
|
491
|
+
client.api.remove_container(container_id, force=True)
|
|
492
|
+
except docker.errors.APIError:
|
|
493
|
+
pass
|
|
494
|
+
|
|
495
|
+
# 5. Remove image if it didn't exist before
|
|
496
|
+
if not image_existed:
|
|
497
|
+
try:
|
|
498
|
+
client.images.remove(image=image)
|
|
499
|
+
except docker.errors.APIError:
|
|
500
|
+
# Likely in use by other containers or is a base image
|
|
501
|
+
pass
|
|
502
|
+
|
|
503
|
+
return exit_code, logs
|