devopness 0.0.0__tar.gz
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.
- devopness-0.0.0/PKG-INFO +253 -0
- devopness-0.0.0/README.md +220 -0
- devopness-0.0.0/pyproject.toml +142 -0
- devopness-0.0.0/src/devopness/__init__.py +12 -0
- devopness-0.0.0/src/devopness/base/__init__.py +12 -0
- devopness-0.0.0/src/devopness/base/base_model.py +76 -0
- devopness-0.0.0/src/devopness/base/base_service.py +444 -0
- devopness-0.0.0/src/devopness/client.py +280 -0
- devopness-0.0.0/src/devopness/client_config.py +47 -0
- devopness-0.0.0/src/devopness/core/__init__.py +15 -0
- devopness-0.0.0/src/devopness/core/api_error.py +129 -0
- devopness-0.0.0/src/devopness/core/network_error.py +107 -0
- devopness-0.0.0/src/devopness/core/response.py +171 -0
- devopness-0.0.0/src/devopness/core/sdk_error.py +9 -0
- devopness-0.0.0/src/devopness/generated/__init__.py +9 -0
- devopness-0.0.0/src/devopness/generated/api/__init__.py +335 -0
- devopness-0.0.0/src/devopness/generated/api/actions_api.py +307 -0
- devopness-0.0.0/src/devopness/generated/api/actions_logs_api.py +70 -0
- devopness-0.0.0/src/devopness/generated/api/applications_api.py +342 -0
- devopness-0.0.0/src/devopness/generated/api/applications_hooks_api.py +89 -0
- devopness-0.0.0/src/devopness/generated/api/applications_variables_api.py +146 -0
- devopness-0.0.0/src/devopness/generated/api/credentials_api.py +387 -0
- devopness-0.0.0/src/devopness/generated/api/credentials_repositories_api.py +137 -0
- devopness-0.0.0/src/devopness/generated/api/cron_jobs_api.py +288 -0
- devopness-0.0.0/src/devopness/generated/api/daemons_api.py +504 -0
- devopness-0.0.0/src/devopness/generated/api/environments_actions_api.py +155 -0
- devopness-0.0.0/src/devopness/generated/api/environments_api.py +208 -0
- devopness-0.0.0/src/devopness/generated/api/environments_team_memberships_api.py +89 -0
- devopness-0.0.0/src/devopness/generated/api/environments_teams_api.py +124 -0
- devopness-0.0.0/src/devopness/generated/api/hook_requests_api.py +66 -0
- devopness-0.0.0/src/devopness/generated/api/hooks_api.py +214 -0
- devopness-0.0.0/src/devopness/generated/api/hooks_requests_api.py +91 -0
- devopness-0.0.0/src/devopness/generated/api/network_rules_api.py +288 -0
- devopness-0.0.0/src/devopness/generated/api/networks_api.py +344 -0
- devopness-0.0.0/src/devopness/generated/api/networks_subnets_api.py +154 -0
- devopness-0.0.0/src/devopness/generated/api/organizations_api.py +285 -0
- devopness-0.0.0/src/devopness/generated/api/organizations_environments_api.py +89 -0
- devopness-0.0.0/src/devopness/generated/api/organizations_projects_api.py +89 -0
- devopness-0.0.0/src/devopness/generated/api/pipelines_actions_api.py +146 -0
- devopness-0.0.0/src/devopness/generated/api/pipelines_api.py +292 -0
- devopness-0.0.0/src/devopness/generated/api/pipelines_hooks_api.py +143 -0
- devopness-0.0.0/src/devopness/generated/api/pipelines_steps_api.py +228 -0
- devopness-0.0.0/src/devopness/generated/api/projects_actions_api.py +91 -0
- devopness-0.0.0/src/devopness/generated/api/projects_api.py +240 -0
- devopness-0.0.0/src/devopness/generated/api/projects_archived_environments_api.py +89 -0
- devopness-0.0.0/src/devopness/generated/api/projects_environments_api.py +146 -0
- devopness-0.0.0/src/devopness/generated/api/projects_roles_api.py +141 -0
- devopness-0.0.0/src/devopness/generated/api/projects_teams_api.py +141 -0
- devopness-0.0.0/src/devopness/generated/api/resource_events_api.py +137 -0
- devopness-0.0.0/src/devopness/generated/api/resource_links_api.py +259 -0
- devopness-0.0.0/src/devopness/generated/api/roles_api.py +164 -0
- devopness-0.0.0/src/devopness/generated/api/servers_api.py +615 -0
- devopness-0.0.0/src/devopness/generated/api/services_api.py +558 -0
- devopness-0.0.0/src/devopness/generated/api/services_variables_api.py +146 -0
- devopness-0.0.0/src/devopness/generated/api/social_accounts_api.py +275 -0
- devopness-0.0.0/src/devopness/generated/api/ssh_keys_api.py +288 -0
- devopness-0.0.0/src/devopness/generated/api/ssl_certificates_api.py +234 -0
- devopness-0.0.0/src/devopness/generated/api/static_data_api.py +651 -0
- devopness-0.0.0/src/devopness/generated/api/subnets_api.py +110 -0
- devopness-0.0.0/src/devopness/generated/api/team_invitations_api.py +153 -0
- devopness-0.0.0/src/devopness/generated/api/teams_api.py +164 -0
- devopness-0.0.0/src/devopness/generated/api/teams_invitations_api.py +146 -0
- devopness-0.0.0/src/devopness/generated/api/teams_members_api.py +181 -0
- devopness-0.0.0/src/devopness/generated/api/users_api.py +602 -0
- devopness-0.0.0/src/devopness/generated/api/users_environments_api.py +93 -0
- devopness-0.0.0/src/devopness/generated/api/users_passwords_api.py +130 -0
- devopness-0.0.0/src/devopness/generated/api/users_projects_api.py +93 -0
- devopness-0.0.0/src/devopness/generated/api/users_team_invitations_api.py +87 -0
- devopness-0.0.0/src/devopness/generated/api/variables_api.py +292 -0
- devopness-0.0.0/src/devopness/generated/api/virtual_hosts_api.py +342 -0
- devopness-0.0.0/src/devopness/generated/models/__init__.py +1262 -0
- devopness-0.0.0/src/devopness/generated/models/action.py +224 -0
- devopness-0.0.0/src/devopness/generated/models/action_data.py +18 -0
- devopness-0.0.0/src/devopness/generated/models/action_deployment_commit.py +68 -0
- devopness-0.0.0/src/devopness/generated/models/action_deployment_content.py +67 -0
- devopness-0.0.0/src/devopness/generated/models/action_deployment_data.py +62 -0
- devopness-0.0.0/src/devopness/generated/models/action_hook_request.py +48 -0
- devopness-0.0.0/src/devopness/generated/models/action_pipeline_create.py +54 -0
- devopness-0.0.0/src/devopness/generated/models/action_relation.py +157 -0
- devopness-0.0.0/src/devopness/generated/models/action_relation_shallow.py +141 -0
- devopness-0.0.0/src/devopness/generated/models/action_resource.py +60 -0
- devopness-0.0.0/src/devopness/generated/models/action_resource_data.py +58 -0
- devopness-0.0.0/src/devopness/generated/models/action_retry_response.py +224 -0
- devopness-0.0.0/src/devopness/generated/models/action_status.py +42 -0
- devopness-0.0.0/src/devopness/generated/models/action_status_reason_code.py +46 -0
- devopness-0.0.0/src/devopness/generated/models/action_step.py +115 -0
- devopness-0.0.0/src/devopness/generated/models/action_summary.py +40 -0
- devopness-0.0.0/src/devopness/generated/models/action_summary_target.py +49 -0
- devopness-0.0.0/src/devopness/generated/models/action_target.py +146 -0
- devopness-0.0.0/src/devopness/generated/models/action_target_credential_data.py +67 -0
- devopness-0.0.0/src/devopness/generated/models/action_target_data.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/action_target_log_step.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/action_target_network_data.py +60 -0
- devopness-0.0.0/src/devopness/generated/models/action_target_server_data.py +76 -0
- devopness-0.0.0/src/devopness/generated/models/action_trigger_type.py +32 -0
- devopness-0.0.0/src/devopness/generated/models/action_triggered_from.py +76 -0
- devopness-0.0.0/src/devopness/generated/models/action_type.py +52 -0
- devopness-0.0.0/src/devopness/generated/models/api_error.py +46 -0
- devopness-0.0.0/src/devopness/generated/models/api_error_errors.py +51 -0
- devopness-0.0.0/src/devopness/generated/models/api_error_errors_field_name_inner.py +39 -0
- devopness-0.0.0/src/devopness/generated/models/application.py +203 -0
- devopness-0.0.0/src/devopness/generated/models/application_environment_create.py +118 -0
- devopness-0.0.0/src/devopness/generated/models/application_last_deployments.py +48 -0
- devopness-0.0.0/src/devopness/generated/models/application_options.py +69 -0
- devopness-0.0.0/src/devopness/generated/models/application_pipeline.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/application_relation.py +151 -0
- devopness-0.0.0/src/devopness/generated/models/application_update.py +97 -0
- devopness-0.0.0/src/devopness/generated/models/archived_environment_relation.py +101 -0
- devopness-0.0.0/src/devopness/generated/models/blueprint_service.py +61 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_instance_relation.py +66 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_os_version_code.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider.py +73 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_code.py +36 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_input_settings.py +71 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_input_settings_default_value.py +20 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_property_type.py +36 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_property_validation.py +64 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_relation.py +46 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_service.py +87 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_service_code.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_service_region.py +49 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_service_resource_type.py +102 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_service_resource_type_scope.py +34 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_provider_settings_list.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_resource_type.py +34 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_service_settings_aws_ec2.py +63 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_service_settings_azure_rm.py +63 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_service_settings_digital_ocean_droplet.py +58 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_service_settings_gcp_gce.py +58 -0
- devopness-0.0.0/src/devopness/generated/models/cloud_service_settings_self_hosted_custom.py +41 -0
- devopness-0.0.0/src/devopness/generated/models/commit.py +71 -0
- devopness-0.0.0/src/devopness/generated/models/credential.py +78 -0
- devopness-0.0.0/src/devopness/generated/models/credential_aws.py +42 -0
- devopness-0.0.0/src/devopness/generated/models/credential_azure.py +52 -0
- devopness-0.0.0/src/devopness/generated/models/credential_digital_ocean.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/credential_environment_create.py +71 -0
- devopness-0.0.0/src/devopness/generated/models/credential_google_cloud.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/credential_input_settings.py +43 -0
- devopness-0.0.0/src/devopness/generated/models/credential_input_settings_credential.py +40 -0
- devopness-0.0.0/src/devopness/generated/models/credential_options.py +63 -0
- devopness-0.0.0/src/devopness/generated/models/credential_provider.py +51 -0
- devopness-0.0.0/src/devopness/generated/models/credential_provider_type.py +40 -0
- devopness-0.0.0/src/devopness/generated/models/credential_relation.py +85 -0
- devopness-0.0.0/src/devopness/generated/models/credential_setting.py +59 -0
- devopness-0.0.0/src/devopness/generated/models/credential_source_provider.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/credential_update.py +54 -0
- devopness-0.0.0/src/devopness/generated/models/credits.py +49 -0
- devopness-0.0.0/src/devopness/generated/models/cron_job.py +136 -0
- devopness-0.0.0/src/devopness/generated/models/cron_job_environment_create.py +74 -0
- devopness-0.0.0/src/devopness/generated/models/cron_job_options.py +46 -0
- devopness-0.0.0/src/devopness/generated/models/cron_job_pattern.py +42 -0
- devopness-0.0.0/src/devopness/generated/models/cron_job_relation.py +106 -0
- devopness-0.0.0/src/devopness/generated/models/cron_job_update.py +62 -0
- devopness-0.0.0/src/devopness/generated/models/daemon.py +134 -0
- devopness-0.0.0/src/devopness/generated/models/daemon_environment_create.py +79 -0
- devopness-0.0.0/src/devopness/generated/models/daemon_get_status.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/daemon_relation.py +104 -0
- devopness-0.0.0/src/devopness/generated/models/daemon_restart.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/daemon_start.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/daemon_stop.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/daemon_update.py +67 -0
- devopness-0.0.0/src/devopness/generated/models/deployment_application_create.py +71 -0
- devopness-0.0.0/src/devopness/generated/models/deployment_default_step.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/deployment_type.py +34 -0
- devopness-0.0.0/src/devopness/generated/models/environment.py +111 -0
- devopness-0.0.0/src/devopness/generated/models/environment_link.py +45 -0
- devopness-0.0.0/src/devopness/generated/models/environment_options.py +47 -0
- devopness-0.0.0/src/devopness/generated/models/environment_project_create.py +54 -0
- devopness-0.0.0/src/devopness/generated/models/environment_relation.py +101 -0
- devopness-0.0.0/src/devopness/generated/models/environment_type.py +34 -0
- devopness-0.0.0/src/devopness/generated/models/environment_update.py +57 -0
- devopness-0.0.0/src/devopness/generated/models/hook.py +161 -0
- devopness-0.0.0/src/devopness/generated/models/hook_incoming_settings.py +47 -0
- devopness-0.0.0/src/devopness/generated/models/hook_outgoing_request_header.py +43 -0
- devopness-0.0.0/src/devopness/generated/models/hook_outgoing_settings.py +62 -0
- devopness-0.0.0/src/devopness/generated/models/hook_outgoing_settings_request_body.py +23 -0
- devopness-0.0.0/src/devopness/generated/models/hook_outgoing_trigger_when_condition.py +43 -0
- devopness-0.0.0/src/devopness/generated/models/hook_pipeline_create.py +83 -0
- devopness-0.0.0/src/devopness/generated/models/hook_pipeline_create_settings.py +25 -0
- devopness-0.0.0/src/devopness/generated/models/hook_relation.py +137 -0
- devopness-0.0.0/src/devopness/generated/models/hook_request.py +96 -0
- devopness-0.0.0/src/devopness/generated/models/hook_request_relation.py +77 -0
- devopness-0.0.0/src/devopness/generated/models/hook_settings.py +25 -0
- devopness-0.0.0/src/devopness/generated/models/hook_trigger_response.py +45 -0
- devopness-0.0.0/src/devopness/generated/models/hook_trigger_when.py +55 -0
- devopness-0.0.0/src/devopness/generated/models/hook_trigger_when_conditions_inner.py +28 -0
- devopness-0.0.0/src/devopness/generated/models/hook_type.py +32 -0
- devopness-0.0.0/src/devopness/generated/models/hook_update.py +88 -0
- devopness-0.0.0/src/devopness/generated/models/hook_variable.py +70 -0
- devopness-0.0.0/src/devopness/generated/models/hook_variable_default_value.py +25 -0
- devopness-0.0.0/src/devopness/generated/models/hook_variable_default_value_one_of_inner.py +23 -0
- devopness-0.0.0/src/devopness/generated/models/hook_variable_type.py +36 -0
- devopness-0.0.0/src/devopness/generated/models/invitation.py +107 -0
- devopness-0.0.0/src/devopness/generated/models/invitation_relation.py +116 -0
- devopness-0.0.0/src/devopness/generated/models/invitation_team_create.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/language.py +32 -0
- devopness-0.0.0/src/devopness/generated/models/language_runtime.py +76 -0
- devopness-0.0.0/src/devopness/generated/models/language_runtime_engine_versions_inner.py +35 -0
- devopness-0.0.0/src/devopness/generated/models/language_runtime_framework.py +55 -0
- devopness-0.0.0/src/devopness/generated/models/language_runtime_framework_commands.py +44 -0
- devopness-0.0.0/src/devopness/generated/models/language_runtime_framework_defaults.py +87 -0
- devopness-0.0.0/src/devopness/generated/models/linked_resource_data.py +68 -0
- devopness-0.0.0/src/devopness/generated/models/linked_resource_summary_field.py +43 -0
- devopness-0.0.0/src/devopness/generated/models/log.py +57 -0
- devopness-0.0.0/src/devopness/generated/models/member.py +62 -0
- devopness-0.0.0/src/devopness/generated/models/member_relation.py +52 -0
- devopness-0.0.0/src/devopness/generated/models/network.py +112 -0
- devopness-0.0.0/src/devopness/generated/models/network_environment_create.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/network_provision_input.py +55 -0
- devopness-0.0.0/src/devopness/generated/models/network_provision_input_settings.py +43 -0
- devopness-0.0.0/src/devopness/generated/models/network_provision_input_settings_aws.py +46 -0
- devopness-0.0.0/src/devopness/generated/models/network_provision_input_settings_azure.py +46 -0
- devopness-0.0.0/src/devopness/generated/models/network_provision_input_settings_digital_ocean.py +46 -0
- devopness-0.0.0/src/devopness/generated/models/network_provision_input_settings_gcp.py +43 -0
- devopness-0.0.0/src/devopness/generated/models/network_relation.py +105 -0
- devopness-0.0.0/src/devopness/generated/models/network_rule.py +120 -0
- devopness-0.0.0/src/devopness/generated/models/network_rule_direction.py +32 -0
- devopness-0.0.0/src/devopness/generated/models/network_rule_environment_create.py +81 -0
- devopness-0.0.0/src/devopness/generated/models/network_rule_options.py +66 -0
- devopness-0.0.0/src/devopness/generated/models/network_rule_protocol.py +36 -0
- devopness-0.0.0/src/devopness/generated/models/network_rule_relation.py +90 -0
- devopness-0.0.0/src/devopness/generated/models/network_rule_update.py +65 -0
- devopness-0.0.0/src/devopness/generated/models/network_update.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/operating_system.py +59 -0
- devopness-0.0.0/src/devopness/generated/models/operating_system_version.py +73 -0
- devopness-0.0.0/src/devopness/generated/models/operation_custom_settings.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/organization.py +76 -0
- devopness-0.0.0/src/devopness/generated/models/organization_activity.py +67 -0
- devopness-0.0.0/src/devopness/generated/models/organization_create.py +42 -0
- devopness-0.0.0/src/devopness/generated/models/organization_relation.py +67 -0
- devopness-0.0.0/src/devopness/generated/models/organization_update.py +45 -0
- devopness-0.0.0/src/devopness/generated/models/os_users_inner.py +35 -0
- devopness-0.0.0/src/devopness/generated/models/password_reset_response.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/password_user_reset.py +48 -0
- devopness-0.0.0/src/devopness/generated/models/password_user_send_reset_link.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/permission_relation.py +55 -0
- devopness-0.0.0/src/devopness/generated/models/pipeline.py +122 -0
- devopness-0.0.0/src/devopness/generated/models/pipeline_create.py +59 -0
- devopness-0.0.0/src/devopness/generated/models/pipeline_relation.py +104 -0
- devopness-0.0.0/src/devopness/generated/models/pipeline_settings.py +72 -0
- devopness-0.0.0/src/devopness/generated/models/pipeline_settings_stage.py +44 -0
- devopness-0.0.0/src/devopness/generated/models/pipeline_settings_variable.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/pipeline_step_runner_name.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/pipeline_trigger_when.py +47 -0
- devopness-0.0.0/src/devopness/generated/models/pipeline_update.py +57 -0
- devopness-0.0.0/src/devopness/generated/models/project.py +94 -0
- devopness-0.0.0/src/devopness/generated/models/project_create.py +54 -0
- devopness-0.0.0/src/devopness/generated/models/project_relation.py +100 -0
- devopness-0.0.0/src/devopness/generated/models/project_update.py +52 -0
- devopness-0.0.0/src/devopness/generated/models/provider_code.py +42 -0
- devopness-0.0.0/src/devopness/generated/models/provider_input_settings.py +64 -0
- devopness-0.0.0/src/devopness/generated/models/provider_input_settings_validation.py +48 -0
- devopness-0.0.0/src/devopness/generated/models/provider_relation.py +65 -0
- devopness-0.0.0/src/devopness/generated/models/provider_settings.py +65 -0
- devopness-0.0.0/src/devopness/generated/models/provider_type.py +32 -0
- devopness-0.0.0/src/devopness/generated/models/provider_type_list_inner.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/related_action.py +89 -0
- devopness-0.0.0/src/devopness/generated/models/repository.py +74 -0
- devopness-0.0.0/src/devopness/generated/models/repository_branch.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/repository_relation.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/repository_tag.py +45 -0
- devopness-0.0.0/src/devopness/generated/models/repository_tag_commit.py +42 -0
- devopness-0.0.0/src/devopness/generated/models/request_relation.py +66 -0
- devopness-0.0.0/src/devopness/generated/models/resource_event.py +51 -0
- devopness-0.0.0/src/devopness/generated/models/resource_event_relation.py +61 -0
- devopness-0.0.0/src/devopness/generated/models/resource_link_child.py +63 -0
- devopness-0.0.0/src/devopness/generated/models/resource_link_relation.py +76 -0
- devopness-0.0.0/src/devopness/generated/models/resource_operation.py +48 -0
- devopness-0.0.0/src/devopness/generated/models/resource_summary_item.py +63 -0
- devopness-0.0.0/src/devopness/generated/models/resource_summary_item_summary.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/resource_to_be_linked.py +40 -0
- devopness-0.0.0/src/devopness/generated/models/resource_type.py +54 -0
- devopness-0.0.0/src/devopness/generated/models/resource_type_related.py +59 -0
- devopness-0.0.0/src/devopness/generated/models/resource_type_relation.py +91 -0
- devopness-0.0.0/src/devopness/generated/models/role.py +78 -0
- devopness-0.0.0/src/devopness/generated/models/role_project_create.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/role_relation.py +68 -0
- devopness-0.0.0/src/devopness/generated/models/role_update.py +53 -0
- devopness-0.0.0/src/devopness/generated/models/script_runner.py +43 -0
- devopness-0.0.0/src/devopness/generated/models/server.py +189 -0
- devopness-0.0.0/src/devopness/generated/models/server_blueprint.py +64 -0
- devopness-0.0.0/src/devopness/generated/models/server_blueprint_spec.py +48 -0
- devopness-0.0.0/src/devopness/generated/models/server_cloud_service_code.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/server_command.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/server_environment_create.py +100 -0
- devopness-0.0.0/src/devopness/generated/models/server_options.py +47 -0
- devopness-0.0.0/src/devopness/generated/models/server_provision_input.py +64 -0
- devopness-0.0.0/src/devopness/generated/models/server_provision_input_settings.py +49 -0
- devopness-0.0.0/src/devopness/generated/models/server_relation.py +116 -0
- devopness-0.0.0/src/devopness/generated/models/server_status.py +44 -0
- devopness-0.0.0/src/devopness/generated/models/server_update.py +58 -0
- devopness-0.0.0/src/devopness/generated/models/service.py +135 -0
- devopness-0.0.0/src/devopness/generated/models/service_environment_create.py +77 -0
- devopness-0.0.0/src/devopness/generated/models/service_get_status.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/service_initial_state.py +32 -0
- devopness-0.0.0/src/devopness/generated/models/service_options.py +45 -0
- devopness-0.0.0/src/devopness/generated/models/service_relation.py +96 -0
- devopness-0.0.0/src/devopness/generated/models/service_reload.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/service_restart.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/service_start.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/service_stop.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/service_type.py +46 -0
- devopness-0.0.0/src/devopness/generated/models/service_update.py +35 -0
- devopness-0.0.0/src/devopness/generated/models/social_account.py +86 -0
- devopness-0.0.0/src/devopness/generated/models/social_account_create.py +47 -0
- devopness-0.0.0/src/devopness/generated/models/social_account_displayable_name.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/social_account_provider.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/social_account_relation.py +86 -0
- devopness-0.0.0/src/devopness/generated/models/social_account_status.py +41 -0
- devopness-0.0.0/src/devopness/generated/models/source_provider_displayable_name.py +34 -0
- devopness-0.0.0/src/devopness/generated/models/source_provider_name.py +34 -0
- devopness-0.0.0/src/devopness/generated/models/source_type.py +34 -0
- devopness-0.0.0/src/devopness/generated/models/ssh_key.py +112 -0
- devopness-0.0.0/src/devopness/generated/models/ssh_key_environment_create.py +56 -0
- devopness-0.0.0/src/devopness/generated/models/ssh_key_relation.py +82 -0
- devopness-0.0.0/src/devopness/generated/models/ssh_key_update.py +40 -0
- devopness-0.0.0/src/devopness/generated/models/ssl_certificate.py +113 -0
- devopness-0.0.0/src/devopness/generated/models/ssl_certificate_environment_create.py +81 -0
- devopness-0.0.0/src/devopness/generated/models/ssl_certificate_issuer.py +32 -0
- devopness-0.0.0/src/devopness/generated/models/ssl_certificate_relation.py +104 -0
- devopness-0.0.0/src/devopness/generated/models/ssl_certificate_type.py +34 -0
- devopness-0.0.0/src/devopness/generated/models/ssl_certificate_validation_level.py +34 -0
- devopness-0.0.0/src/devopness/generated/models/static_billing_info.py +47 -0
- devopness-0.0.0/src/devopness/generated/models/static_cloud_provider_code.py +36 -0
- devopness-0.0.0/src/devopness/generated/models/static_cron_job_frequency.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/static_environment_type.py +45 -0
- devopness-0.0.0/src/devopness/generated/models/static_network_rule_direction.py +52 -0
- devopness-0.0.0/src/devopness/generated/models/static_network_rule_protocol.py +59 -0
- devopness-0.0.0/src/devopness/generated/models/static_network_rule_protocol_defaults.py +36 -0
- devopness-0.0.0/src/devopness/generated/models/static_permission.py +51 -0
- devopness-0.0.0/src/devopness/generated/models/static_service_type.py +69 -0
- devopness-0.0.0/src/devopness/generated/models/static_service_type_supported_versions_inner.py +52 -0
- devopness-0.0.0/src/devopness/generated/models/static_virtual_host_type.py +52 -0
- devopness-0.0.0/src/devopness/generated/models/step.py +103 -0
- devopness-0.0.0/src/devopness/generated/models/step_pipeline_create.py +75 -0
- devopness-0.0.0/src/devopness/generated/models/step_pipeline_update.py +84 -0
- devopness-0.0.0/src/devopness/generated/models/subnet.py +127 -0
- devopness-0.0.0/src/devopness/generated/models/subnet_network_create.py +59 -0
- devopness-0.0.0/src/devopness/generated/models/subnet_provision_input.py +43 -0
- devopness-0.0.0/src/devopness/generated/models/subnet_provision_input_settings.py +43 -0
- devopness-0.0.0/src/devopness/generated/models/subnet_provision_input_settings_aws.py +52 -0
- devopness-0.0.0/src/devopness/generated/models/subnet_provision_input_settings_azure.py +47 -0
- devopness-0.0.0/src/devopness/generated/models/subnet_provision_input_settings_digital_ocean.py +46 -0
- devopness-0.0.0/src/devopness/generated/models/subnet_provision_input_settings_gcp.py +46 -0
- devopness-0.0.0/src/devopness/generated/models/subnet_relation.py +92 -0
- devopness-0.0.0/src/devopness/generated/models/subnet_type.py +28 -0
- devopness-0.0.0/src/devopness/generated/models/subscription.py +119 -0
- devopness-0.0.0/src/devopness/generated/models/subscription_balance.py +68 -0
- devopness-0.0.0/src/devopness/generated/models/subscription_plan.py +41 -0
- devopness-0.0.0/src/devopness/generated/models/team.py +74 -0
- devopness-0.0.0/src/devopness/generated/models/team_environment_link.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/team_invitation_relation.py +116 -0
- devopness-0.0.0/src/devopness/generated/models/team_invitation_status.py +34 -0
- devopness-0.0.0/src/devopness/generated/models/team_membership_relation.py +62 -0
- devopness-0.0.0/src/devopness/generated/models/team_project_create.py +43 -0
- devopness-0.0.0/src/devopness/generated/models/team_relation.py +52 -0
- devopness-0.0.0/src/devopness/generated/models/team_update.py +46 -0
- devopness-0.0.0/src/devopness/generated/models/trigger_event.py +40 -0
- devopness-0.0.0/src/devopness/generated/models/trigger_when_condition.py +71 -0
- devopness-0.0.0/src/devopness/generated/models/trigger_when_condition_accepted_values_inner.py +21 -0
- devopness-0.0.0/src/devopness/generated/models/trigger_when_condition_type.py +28 -0
- devopness-0.0.0/src/devopness/generated/models/triggered_action_stats.py +63 -0
- devopness-0.0.0/src/devopness/generated/models/triggered_action_summary.py +68 -0
- devopness-0.0.0/src/devopness/generated/models/triggered_actions.py +55 -0
- devopness-0.0.0/src/devopness/generated/models/user.py +82 -0
- devopness-0.0.0/src/devopness/generated/models/user_activity.py +67 -0
- devopness-0.0.0/src/devopness/generated/models/user_billing.py +41 -0
- devopness-0.0.0/src/devopness/generated/models/user_create.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/user_environment_stats.py +45 -0
- devopness-0.0.0/src/devopness/generated/models/user_login.py +40 -0
- devopness-0.0.0/src/devopness/generated/models/user_login_response.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/user_me.py +82 -0
- devopness-0.0.0/src/devopness/generated/models/user_profile_options.py +49 -0
- devopness-0.0.0/src/devopness/generated/models/user_project_stats.py +45 -0
- devopness-0.0.0/src/devopness/generated/models/user_refresh_token.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/user_refresh_token_response.py +50 -0
- devopness-0.0.0/src/devopness/generated/models/user_relation.py +78 -0
- devopness-0.0.0/src/devopness/generated/models/user_resend_verification.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/user_team_stats.py +45 -0
- devopness-0.0.0/src/devopness/generated/models/user_update.py +61 -0
- devopness-0.0.0/src/devopness/generated/models/user_url.py +37 -0
- devopness-0.0.0/src/devopness/generated/models/user_verify.py +59 -0
- devopness-0.0.0/src/devopness/generated/models/variable.py +109 -0
- devopness-0.0.0/src/devopness/generated/models/variable_application_create.py +73 -0
- devopness-0.0.0/src/devopness/generated/models/variable_create.py +73 -0
- devopness-0.0.0/src/devopness/generated/models/variable_relation.py +109 -0
- devopness-0.0.0/src/devopness/generated/models/variable_service_create.py +73 -0
- devopness-0.0.0/src/devopness/generated/models/variable_target.py +56 -0
- devopness-0.0.0/src/devopness/generated/models/variable_targets.py +53 -0
- devopness-0.0.0/src/devopness/generated/models/variable_type.py +32 -0
- devopness-0.0.0/src/devopness/generated/models/variable_update.py +76 -0
- devopness-0.0.0/src/devopness/generated/models/virtual_host.py +113 -0
- devopness-0.0.0/src/devopness/generated/models/virtual_host_environment_create.py +74 -0
- devopness-0.0.0/src/devopness/generated/models/virtual_host_get_status.py +38 -0
- devopness-0.0.0/src/devopness/generated/models/virtual_host_options.py +58 -0
- devopness-0.0.0/src/devopness/generated/models/virtual_host_relation.py +113 -0
- devopness-0.0.0/src/devopness/generated/models/virtual_host_type.py +32 -0
- devopness-0.0.0/src/devopness/generated/models/virtual_host_update.py +59 -0
- devopness-0.0.0/src/devopness/generated/utils.py +26 -0
- devopness-0.0.0/src/devopness/models.py +1317 -0
- devopness-0.0.0/src/devopness/py.typed +0 -0
- devopness-0.0.0/src/devopness/services/__init__.py +0 -0
- devopness-0.0.0/src/devopness/services/action_service.py +46 -0
- devopness-0.0.0/src/devopness/services/application_service.py +22 -0
- devopness-0.0.0/src/devopness/services/credential_service.py +28 -0
- devopness-0.0.0/src/devopness/services/cron_job_service.py +22 -0
- devopness-0.0.0/src/devopness/services/daemon_service.py +22 -0
- devopness-0.0.0/src/devopness/services/environment_service.py +46 -0
- devopness-0.0.0/src/devopness/services/hook_service.py +46 -0
- devopness-0.0.0/src/devopness/services/network_rule_service.py +22 -0
- devopness-0.0.0/src/devopness/services/network_service.py +22 -0
- devopness-0.0.0/src/devopness/services/organization_service.py +22 -0
- devopness-0.0.0/src/devopness/services/pipeline_service.py +28 -0
- devopness-0.0.0/src/devopness/services/project_service.py +34 -0
- devopness-0.0.0/src/devopness/services/resource_event_service.py +22 -0
- devopness-0.0.0/src/devopness/services/resource_link_service.py +22 -0
- devopness-0.0.0/src/devopness/services/role_service.py +28 -0
- devopness-0.0.0/src/devopness/services/server_service.py +22 -0
- devopness-0.0.0/src/devopness/services/service_service.py +22 -0
- devopness-0.0.0/src/devopness/services/social_account_service.py +22 -0
- devopness-0.0.0/src/devopness/services/ssh_key_service.py +22 -0
- devopness-0.0.0/src/devopness/services/ssl_certificate_service.py +22 -0
- devopness-0.0.0/src/devopness/services/static_service.py +22 -0
- devopness-0.0.0/src/devopness/services/subnet_service.py +28 -0
- devopness-0.0.0/src/devopness/services/team_service.py +90 -0
- devopness-0.0.0/src/devopness/services/user_service.py +28 -0
- devopness-0.0.0/src/devopness/services/variable_service.py +22 -0
- devopness-0.0.0/src/devopness/services/virtual_host_service.py +22 -0
devopness-0.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
|
+
Name: devopness
|
|
3
|
+
Version: 0.0.0
|
|
4
|
+
Summary: Devopness API Python SDK - Painless essential DevOps to everyone
|
|
5
|
+
License: MIT
|
|
6
|
+
Keywords: API Client,Cloud Engineering,Cloud Infrastructure,Cloud Platform,Cloud Resource Management,Configuration Management,Deployment Automation,Devopness,DevOps,Infrastructure as Code,Platform Engineering,Python SDK,Server Management,Server Provisioning,Zero Downtime Deployment
|
|
7
|
+
Author: Devopness (https://www.devopness.com)
|
|
8
|
+
Requires-Python: >=3.11
|
|
9
|
+
Classifier: Development Status :: 2 - Pre-Alpha
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Framework :: Pydantic
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Intended Audience :: System Administrators
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
21
|
+
Classifier: Topic :: Software Development
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
23
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
24
|
+
Classifier: Topic :: System :: Systems Administration
|
|
25
|
+
Classifier: Topic :: Utilities
|
|
26
|
+
Requires-Dist: httpcore (>=1.0.9)
|
|
27
|
+
Requires-Dist: httpx (>=0.28.1,<0.29.0)
|
|
28
|
+
Requires-Dist: pydantic (>=2.11.3,<3.0.0)
|
|
29
|
+
Project-URL: Homepage, https://www.devopness.com
|
|
30
|
+
Project-URL: Repository, https://github.com/devopness/devopness
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
|
+
|
|
33
|
+
# Devopness SDK - Python
|
|
34
|
+
|
|
35
|
+
The official Devopness SDK for Python.
|
|
36
|
+
|
|
37
|
+
This SDK provides predefined classes to access Devopness platform resources. It's suitable for building CLI tools, backend services, or automation scripts, helping you interact with the Devopness API.
|
|
38
|
+
|
|
39
|
+
## 📌 Table of Contents
|
|
40
|
+
|
|
41
|
+
- [Status](#status)
|
|
42
|
+
- [Usage](#usage)
|
|
43
|
+
|
|
44
|
+
- [Install](#install)
|
|
45
|
+
- [Initializing](#initializing)
|
|
46
|
+
- [Custom Configuration](#custom-configuration)
|
|
47
|
+
- [Authenticating](#authenticating)
|
|
48
|
+
- [Asynchronous usage](#asynchronous-usage)
|
|
49
|
+
- [Synchronous usage](#synchronous-usage)
|
|
50
|
+
- [Invoking authentication-protected endpoints](#invoking-authentication-protected-endpoints)
|
|
51
|
+
- [Asynchronous usage](#asynchronous-usage-1)
|
|
52
|
+
- [Synchronous usage](#synchronous-usage-1)
|
|
53
|
+
- [Error Handling](#error-handling)
|
|
54
|
+
- [Development](#development)
|
|
55
|
+
- [With Docker](#with-docker)
|
|
56
|
+
|
|
57
|
+
## Status
|
|
58
|
+
|
|
59
|
+
This SDK is in active development and not recommended for production use. Features, structure, and usage may change until a stable version is released.
|
|
60
|
+
|
|
61
|
+
## Usage
|
|
62
|
+
|
|
63
|
+
The SDK supports both asynchronous and synchronous usage, so you can choose based on your needs.
|
|
64
|
+
|
|
65
|
+
### Install
|
|
66
|
+
|
|
67
|
+
Install the SDK using your preferred package manager:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
# Using uv
|
|
71
|
+
uv add devopness
|
|
72
|
+
|
|
73
|
+
# Using poetry
|
|
74
|
+
poetry add devopness
|
|
75
|
+
|
|
76
|
+
# Using pip
|
|
77
|
+
pip install devopness
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Initializing
|
|
81
|
+
|
|
82
|
+
Import the SDK and create an instance of `DevopnessClient` or `DevopnessClientAsync`:
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
from devopness import DevopnessClient, DevopnessClientAsync
|
|
86
|
+
|
|
87
|
+
devopness = DevopnessClient()
|
|
88
|
+
devopness_async = DevopnessClientAsync()
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### Custom Configuration
|
|
92
|
+
|
|
93
|
+
You can provide a custom configuration when initializing the client:
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
from devopness import DevopnessClient, DevopnessClientAsync, DevopnessClientConfig
|
|
97
|
+
|
|
98
|
+
config = DevopnessClientConfig(base_url='https://api.devopness.com', timeout=10)
|
|
99
|
+
|
|
100
|
+
devopness = DevopnessClient(config)
|
|
101
|
+
devopness_async = DevopnessClientAsync(config)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Configuration options:
|
|
105
|
+
|
|
106
|
+
| Parameter | Default | Description |
|
|
107
|
+
| -------------------- | --------------------------- | --------------------------------------------------- |
|
|
108
|
+
| `auto_refresh_token` | `True` | Whether the access token is automatically refreshed |
|
|
109
|
+
| `base_url` | `https://api.devopness.com` | Base URL for all API requests |
|
|
110
|
+
| `timeout` | `30` | Timeout for HTTP requests (in seconds) |
|
|
111
|
+
| `default_encoding` | `utf-8` | Encoding for response content |
|
|
112
|
+
|
|
113
|
+
### Authenticating
|
|
114
|
+
|
|
115
|
+
To authenticate, invoke the `login_user` method on the `users` service.
|
|
116
|
+
|
|
117
|
+
#### Asynchronous usage
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
import asyncio
|
|
121
|
+
|
|
122
|
+
from devopness import DevopnessClientAsync
|
|
123
|
+
from devopness.models import UserLogin
|
|
124
|
+
|
|
125
|
+
devopness = DevopnessClientAsync({'auto_refresh_token': False})
|
|
126
|
+
|
|
127
|
+
async def authenticate(user_email, user_pass):
|
|
128
|
+
user_data = UserLogin(email=user_email, password=user_pass)
|
|
129
|
+
user_tokens = await devopness.users.login_user(user_data)
|
|
130
|
+
|
|
131
|
+
# The `access_token` must be set every time a token is obtained or refreshed,
|
|
132
|
+
# if the `auto_refresh_token` option is set to `False`.
|
|
133
|
+
devopness.access_token = user_tokens.data.access_token
|
|
134
|
+
|
|
135
|
+
if __name__ == "__main__":
|
|
136
|
+
asyncio.run(authenticate('user@email.com', 'secret-password'))
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
#### Synchronous usage
|
|
140
|
+
|
|
141
|
+
```python
|
|
142
|
+
from devopness import DevopnessClient
|
|
143
|
+
from devopness.models import UserLogin
|
|
144
|
+
|
|
145
|
+
devopness = DevopnessClient({'auto_refresh_token': False})
|
|
146
|
+
|
|
147
|
+
def authenticate(user_email, user_pass):
|
|
148
|
+
user_data = UserLogin(email=user_email, password=user_pass)
|
|
149
|
+
user_tokens = devopness.users.login_user(user_data)
|
|
150
|
+
|
|
151
|
+
# The `access_token` must be set every time a token is obtained or refreshed,
|
|
152
|
+
# if the `auto_refresh_token` option is set to `False`.
|
|
153
|
+
devopness.access_token = user_tokens.data.access_token
|
|
154
|
+
|
|
155
|
+
if __name__ == "__main__":
|
|
156
|
+
authenticate('user@email.com', 'secret-password')
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Invoking authentication-protected endpoints
|
|
160
|
+
|
|
161
|
+
Once authenticated, you can invoke protected endpoints like retrieving user details.
|
|
162
|
+
|
|
163
|
+
#### Asynchronous usage
|
|
164
|
+
|
|
165
|
+
```python
|
|
166
|
+
import asyncio
|
|
167
|
+
|
|
168
|
+
from devopness import DevopnessClientAsync
|
|
169
|
+
from devopness.models import UserLogin
|
|
170
|
+
|
|
171
|
+
devopness = DevopnessClientAsync()
|
|
172
|
+
|
|
173
|
+
async def authenticate(user_email, user_pass):
|
|
174
|
+
user_data = UserLogin(email=user_email, password=user_pass)
|
|
175
|
+
await devopness.users.login_user(user_data)
|
|
176
|
+
|
|
177
|
+
async def get_user_profile():
|
|
178
|
+
await authenticate('user@email.com', 'secret-password')
|
|
179
|
+
current_user = await devopness.users.get_user_me()
|
|
180
|
+
print(f'User ID: {current_user.data.id}')
|
|
181
|
+
|
|
182
|
+
if __name__ == "__main__":
|
|
183
|
+
asyncio.run(get_user_profile())
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
#### Synchronous usage
|
|
187
|
+
|
|
188
|
+
```python
|
|
189
|
+
from devopness import DevopnessClient
|
|
190
|
+
from devopness.models import UserLogin
|
|
191
|
+
|
|
192
|
+
devopness = DevopnessClient()
|
|
193
|
+
|
|
194
|
+
def authenticate(user_email, user_pass):
|
|
195
|
+
user_data = UserLogin(email=user_email, password=user_pass)
|
|
196
|
+
devopness.users.login_user(user_data)
|
|
197
|
+
|
|
198
|
+
def get_user_profile():
|
|
199
|
+
authenticate('user@email.com', 'secret-password')
|
|
200
|
+
current_user = devopness.users.get_user_me()
|
|
201
|
+
print(f'User ID: {current_user.data.id}')
|
|
202
|
+
|
|
203
|
+
if __name__ == "__main__":
|
|
204
|
+
get_user_profile()
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Error Handling
|
|
208
|
+
|
|
209
|
+
The SDK provides structured error handling through exceptions:
|
|
210
|
+
|
|
211
|
+
- `DevopnessApiError`: This exception is raised when the Devopness API returns an error response. This typically indicates issues with the request itself, such as invalid input data, unauthorized access, or resource not found. It provides the following attributes to help diagnose the error:
|
|
212
|
+
|
|
213
|
+
| Attribute | Description |
|
|
214
|
+
| ----------- | ------------------------------------------------------------------------------------------------------------------ |
|
|
215
|
+
| status_code | The HTTP status code returned by the API |
|
|
216
|
+
| message | A general error message from the API |
|
|
217
|
+
| errors | An optional dictionary containing detailed validation errors, often encountered during create or update operations |
|
|
218
|
+
|
|
219
|
+
- `DevopnessNetworkError`: This exception is raised when a generic network-related issue occurs during the communication with the Devopness API. This could be due to problems like an unreachable host, connection timeouts, or other network configuration errors.
|
|
220
|
+
|
|
221
|
+
Both exceptions inherit from `DevopnessSdkError`, the base class for all SDK exceptions. You can use this class to catch and handle all exceptions raised by the SDK.
|
|
222
|
+
|
|
223
|
+
## Development
|
|
224
|
+
|
|
225
|
+
To build the SDK locally, use Docker:
|
|
226
|
+
|
|
227
|
+
### With Docker
|
|
228
|
+
|
|
229
|
+
#### Prerequisites
|
|
230
|
+
|
|
231
|
+
- [Docker](https://www.docker.com/products/docker-desktop/)
|
|
232
|
+
- [Make](https://www.gnu.org/software/make/)
|
|
233
|
+
|
|
234
|
+
#### Steps
|
|
235
|
+
|
|
236
|
+
1. Navigate to the project directory:
|
|
237
|
+
|
|
238
|
+
```shell
|
|
239
|
+
cd packages/sdks/python/
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
1. Build the Docker image:
|
|
243
|
+
|
|
244
|
+
```shell
|
|
245
|
+
make build-image
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
1. Build the Python SDK:
|
|
249
|
+
|
|
250
|
+
```shell
|
|
251
|
+
make build-sdk-python
|
|
252
|
+
```
|
|
253
|
+
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
# Devopness SDK - Python
|
|
2
|
+
|
|
3
|
+
The official Devopness SDK for Python.
|
|
4
|
+
|
|
5
|
+
This SDK provides predefined classes to access Devopness platform resources. It's suitable for building CLI tools, backend services, or automation scripts, helping you interact with the Devopness API.
|
|
6
|
+
|
|
7
|
+
## 📌 Table of Contents
|
|
8
|
+
|
|
9
|
+
- [Status](#status)
|
|
10
|
+
- [Usage](#usage)
|
|
11
|
+
|
|
12
|
+
- [Install](#install)
|
|
13
|
+
- [Initializing](#initializing)
|
|
14
|
+
- [Custom Configuration](#custom-configuration)
|
|
15
|
+
- [Authenticating](#authenticating)
|
|
16
|
+
- [Asynchronous usage](#asynchronous-usage)
|
|
17
|
+
- [Synchronous usage](#synchronous-usage)
|
|
18
|
+
- [Invoking authentication-protected endpoints](#invoking-authentication-protected-endpoints)
|
|
19
|
+
- [Asynchronous usage](#asynchronous-usage-1)
|
|
20
|
+
- [Synchronous usage](#synchronous-usage-1)
|
|
21
|
+
- [Error Handling](#error-handling)
|
|
22
|
+
- [Development](#development)
|
|
23
|
+
- [With Docker](#with-docker)
|
|
24
|
+
|
|
25
|
+
## Status
|
|
26
|
+
|
|
27
|
+
This SDK is in active development and not recommended for production use. Features, structure, and usage may change until a stable version is released.
|
|
28
|
+
|
|
29
|
+
## Usage
|
|
30
|
+
|
|
31
|
+
The SDK supports both asynchronous and synchronous usage, so you can choose based on your needs.
|
|
32
|
+
|
|
33
|
+
### Install
|
|
34
|
+
|
|
35
|
+
Install the SDK using your preferred package manager:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
# Using uv
|
|
39
|
+
uv add devopness
|
|
40
|
+
|
|
41
|
+
# Using poetry
|
|
42
|
+
poetry add devopness
|
|
43
|
+
|
|
44
|
+
# Using pip
|
|
45
|
+
pip install devopness
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Initializing
|
|
49
|
+
|
|
50
|
+
Import the SDK and create an instance of `DevopnessClient` or `DevopnessClientAsync`:
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
from devopness import DevopnessClient, DevopnessClientAsync
|
|
54
|
+
|
|
55
|
+
devopness = DevopnessClient()
|
|
56
|
+
devopness_async = DevopnessClientAsync()
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### Custom Configuration
|
|
60
|
+
|
|
61
|
+
You can provide a custom configuration when initializing the client:
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from devopness import DevopnessClient, DevopnessClientAsync, DevopnessClientConfig
|
|
65
|
+
|
|
66
|
+
config = DevopnessClientConfig(base_url='https://api.devopness.com', timeout=10)
|
|
67
|
+
|
|
68
|
+
devopness = DevopnessClient(config)
|
|
69
|
+
devopness_async = DevopnessClientAsync(config)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Configuration options:
|
|
73
|
+
|
|
74
|
+
| Parameter | Default | Description |
|
|
75
|
+
| -------------------- | --------------------------- | --------------------------------------------------- |
|
|
76
|
+
| `auto_refresh_token` | `True` | Whether the access token is automatically refreshed |
|
|
77
|
+
| `base_url` | `https://api.devopness.com` | Base URL for all API requests |
|
|
78
|
+
| `timeout` | `30` | Timeout for HTTP requests (in seconds) |
|
|
79
|
+
| `default_encoding` | `utf-8` | Encoding for response content |
|
|
80
|
+
|
|
81
|
+
### Authenticating
|
|
82
|
+
|
|
83
|
+
To authenticate, invoke the `login_user` method on the `users` service.
|
|
84
|
+
|
|
85
|
+
#### Asynchronous usage
|
|
86
|
+
|
|
87
|
+
```python
|
|
88
|
+
import asyncio
|
|
89
|
+
|
|
90
|
+
from devopness import DevopnessClientAsync
|
|
91
|
+
from devopness.models import UserLogin
|
|
92
|
+
|
|
93
|
+
devopness = DevopnessClientAsync({'auto_refresh_token': False})
|
|
94
|
+
|
|
95
|
+
async def authenticate(user_email, user_pass):
|
|
96
|
+
user_data = UserLogin(email=user_email, password=user_pass)
|
|
97
|
+
user_tokens = await devopness.users.login_user(user_data)
|
|
98
|
+
|
|
99
|
+
# The `access_token` must be set every time a token is obtained or refreshed,
|
|
100
|
+
# if the `auto_refresh_token` option is set to `False`.
|
|
101
|
+
devopness.access_token = user_tokens.data.access_token
|
|
102
|
+
|
|
103
|
+
if __name__ == "__main__":
|
|
104
|
+
asyncio.run(authenticate('user@email.com', 'secret-password'))
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
#### Synchronous usage
|
|
108
|
+
|
|
109
|
+
```python
|
|
110
|
+
from devopness import DevopnessClient
|
|
111
|
+
from devopness.models import UserLogin
|
|
112
|
+
|
|
113
|
+
devopness = DevopnessClient({'auto_refresh_token': False})
|
|
114
|
+
|
|
115
|
+
def authenticate(user_email, user_pass):
|
|
116
|
+
user_data = UserLogin(email=user_email, password=user_pass)
|
|
117
|
+
user_tokens = devopness.users.login_user(user_data)
|
|
118
|
+
|
|
119
|
+
# The `access_token` must be set every time a token is obtained or refreshed,
|
|
120
|
+
# if the `auto_refresh_token` option is set to `False`.
|
|
121
|
+
devopness.access_token = user_tokens.data.access_token
|
|
122
|
+
|
|
123
|
+
if __name__ == "__main__":
|
|
124
|
+
authenticate('user@email.com', 'secret-password')
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Invoking authentication-protected endpoints
|
|
128
|
+
|
|
129
|
+
Once authenticated, you can invoke protected endpoints like retrieving user details.
|
|
130
|
+
|
|
131
|
+
#### Asynchronous usage
|
|
132
|
+
|
|
133
|
+
```python
|
|
134
|
+
import asyncio
|
|
135
|
+
|
|
136
|
+
from devopness import DevopnessClientAsync
|
|
137
|
+
from devopness.models import UserLogin
|
|
138
|
+
|
|
139
|
+
devopness = DevopnessClientAsync()
|
|
140
|
+
|
|
141
|
+
async def authenticate(user_email, user_pass):
|
|
142
|
+
user_data = UserLogin(email=user_email, password=user_pass)
|
|
143
|
+
await devopness.users.login_user(user_data)
|
|
144
|
+
|
|
145
|
+
async def get_user_profile():
|
|
146
|
+
await authenticate('user@email.com', 'secret-password')
|
|
147
|
+
current_user = await devopness.users.get_user_me()
|
|
148
|
+
print(f'User ID: {current_user.data.id}')
|
|
149
|
+
|
|
150
|
+
if __name__ == "__main__":
|
|
151
|
+
asyncio.run(get_user_profile())
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
#### Synchronous usage
|
|
155
|
+
|
|
156
|
+
```python
|
|
157
|
+
from devopness import DevopnessClient
|
|
158
|
+
from devopness.models import UserLogin
|
|
159
|
+
|
|
160
|
+
devopness = DevopnessClient()
|
|
161
|
+
|
|
162
|
+
def authenticate(user_email, user_pass):
|
|
163
|
+
user_data = UserLogin(email=user_email, password=user_pass)
|
|
164
|
+
devopness.users.login_user(user_data)
|
|
165
|
+
|
|
166
|
+
def get_user_profile():
|
|
167
|
+
authenticate('user@email.com', 'secret-password')
|
|
168
|
+
current_user = devopness.users.get_user_me()
|
|
169
|
+
print(f'User ID: {current_user.data.id}')
|
|
170
|
+
|
|
171
|
+
if __name__ == "__main__":
|
|
172
|
+
get_user_profile()
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### Error Handling
|
|
176
|
+
|
|
177
|
+
The SDK provides structured error handling through exceptions:
|
|
178
|
+
|
|
179
|
+
- `DevopnessApiError`: This exception is raised when the Devopness API returns an error response. This typically indicates issues with the request itself, such as invalid input data, unauthorized access, or resource not found. It provides the following attributes to help diagnose the error:
|
|
180
|
+
|
|
181
|
+
| Attribute | Description |
|
|
182
|
+
| ----------- | ------------------------------------------------------------------------------------------------------------------ |
|
|
183
|
+
| status_code | The HTTP status code returned by the API |
|
|
184
|
+
| message | A general error message from the API |
|
|
185
|
+
| errors | An optional dictionary containing detailed validation errors, often encountered during create or update operations |
|
|
186
|
+
|
|
187
|
+
- `DevopnessNetworkError`: This exception is raised when a generic network-related issue occurs during the communication with the Devopness API. This could be due to problems like an unreachable host, connection timeouts, or other network configuration errors.
|
|
188
|
+
|
|
189
|
+
Both exceptions inherit from `DevopnessSdkError`, the base class for all SDK exceptions. You can use this class to catch and handle all exceptions raised by the SDK.
|
|
190
|
+
|
|
191
|
+
## Development
|
|
192
|
+
|
|
193
|
+
To build the SDK locally, use Docker:
|
|
194
|
+
|
|
195
|
+
### With Docker
|
|
196
|
+
|
|
197
|
+
#### Prerequisites
|
|
198
|
+
|
|
199
|
+
- [Docker](https://www.docker.com/products/docker-desktop/)
|
|
200
|
+
- [Make](https://www.gnu.org/software/make/)
|
|
201
|
+
|
|
202
|
+
#### Steps
|
|
203
|
+
|
|
204
|
+
1. Navigate to the project directory:
|
|
205
|
+
|
|
206
|
+
```shell
|
|
207
|
+
cd packages/sdks/python/
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
1. Build the Docker image:
|
|
211
|
+
|
|
212
|
+
```shell
|
|
213
|
+
make build-image
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
1. Build the Python SDK:
|
|
217
|
+
|
|
218
|
+
```shell
|
|
219
|
+
make build-sdk-python
|
|
220
|
+
```
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["poetry-core>=2.0.0,<3.0.0"]
|
|
3
|
+
build-backend = "poetry.core.masonry.api"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "devopness"
|
|
7
|
+
version = "0.0.0"
|
|
8
|
+
description = "Devopness API Python SDK - Painless essential DevOps to everyone"
|
|
9
|
+
license = "MIT"
|
|
10
|
+
readme = "README.md"
|
|
11
|
+
requires-python = ">=3.11"
|
|
12
|
+
authors = [{ name = "Devopness (https://www.devopness.com)" }]
|
|
13
|
+
keywords = [
|
|
14
|
+
"API Client",
|
|
15
|
+
"Cloud Engineering",
|
|
16
|
+
"Cloud Infrastructure",
|
|
17
|
+
"Cloud Platform",
|
|
18
|
+
"Cloud Resource Management",
|
|
19
|
+
"Configuration Management",
|
|
20
|
+
"Deployment Automation",
|
|
21
|
+
"Devopness",
|
|
22
|
+
"DevOps",
|
|
23
|
+
"Infrastructure as Code",
|
|
24
|
+
"Platform Engineering",
|
|
25
|
+
"Python SDK",
|
|
26
|
+
"Server Management",
|
|
27
|
+
"Server Provisioning",
|
|
28
|
+
"Zero Downtime Deployment",
|
|
29
|
+
]
|
|
30
|
+
classifiers = [
|
|
31
|
+
"Development Status :: 2 - Pre-Alpha",
|
|
32
|
+
"Environment :: Console",
|
|
33
|
+
"Framework :: Pydantic",
|
|
34
|
+
"Intended Audience :: Developers",
|
|
35
|
+
"Intended Audience :: System Administrators",
|
|
36
|
+
"License :: OSI Approved :: MIT License",
|
|
37
|
+
"Operating System :: OS Independent",
|
|
38
|
+
"Programming Language :: Python",
|
|
39
|
+
"Programming Language :: Python :: 3",
|
|
40
|
+
"Programming Language :: Python :: 3.11",
|
|
41
|
+
"Programming Language :: Python :: 3.12",
|
|
42
|
+
"Programming Language :: Python :: 3.13",
|
|
43
|
+
"Topic :: Software Development",
|
|
44
|
+
"Topic :: Software Development :: Libraries",
|
|
45
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
46
|
+
"Topic :: System :: Systems Administration",
|
|
47
|
+
"Topic :: Utilities",
|
|
48
|
+
]
|
|
49
|
+
dependencies = [
|
|
50
|
+
# Explicitly added `httpcore` to ensure a secure version of h11 is used.
|
|
51
|
+
# httpcore is a transitive dependency of httpx (which allows any 1.*),
|
|
52
|
+
# but only httpcore >=1.0.9 guarantees h11 >=0.16 with the security fix.
|
|
53
|
+
# Related issue: https://github.com/devopness/devopness/security/dependabot/63
|
|
54
|
+
"httpcore (>=1.0.9)",
|
|
55
|
+
"httpx (>=0.28.1,<0.29.0)",
|
|
56
|
+
"pydantic (>=2.11.3,<3.0.0)",
|
|
57
|
+
]
|
|
58
|
+
|
|
59
|
+
[project.urls]
|
|
60
|
+
homepage = "https://www.devopness.com"
|
|
61
|
+
repository = "https://github.com/devopness/devopness"
|
|
62
|
+
|
|
63
|
+
[tool.poetry]
|
|
64
|
+
packages = [
|
|
65
|
+
{ include = "devopness", from = "src", to = "." },
|
|
66
|
+
]
|
|
67
|
+
exclude = ["src/devopness/generated/.openapi-generator-ignore"]
|
|
68
|
+
|
|
69
|
+
[tool.poetry.group.dev.dependencies]
|
|
70
|
+
openapi-generator-cli = { version = "7.12.0", markers = "python_version < '4.0'" }
|
|
71
|
+
ruff = "^0.11.6"
|
|
72
|
+
mypy = "1.15.0"
|
|
73
|
+
|
|
74
|
+
[tool.ruff]
|
|
75
|
+
line-length = 88
|
|
76
|
+
target-version = "py311"
|
|
77
|
+
|
|
78
|
+
[tool.ruff.lint]
|
|
79
|
+
preview = true
|
|
80
|
+
|
|
81
|
+
extend-select = [
|
|
82
|
+
"A", # flake8-builtins (avoid shadowing built-ins)
|
|
83
|
+
"ANN", # flake8-annotations (type hints for public APIs)
|
|
84
|
+
"B", # flake8-bugbear (common bugs and best practices)
|
|
85
|
+
"E", # pycodestyle (error)
|
|
86
|
+
"F", # pyflakes (basic errors)
|
|
87
|
+
"I", # isort (import sorting)
|
|
88
|
+
"N", # pep8-naming
|
|
89
|
+
"PIE", # flake8-pie (extra cleanups)
|
|
90
|
+
"PLC", # pylint conventions
|
|
91
|
+
"PLE", # pylint errors
|
|
92
|
+
"PLW", # pylint warnings
|
|
93
|
+
"Q", # flake8-quotes (quote consistency)
|
|
94
|
+
"RET", # flake8-return (return statement rules)
|
|
95
|
+
"RUF", # Ruff-specific rules
|
|
96
|
+
"S", # flake8-bandit (security rules)
|
|
97
|
+
"SIM", # flake8-simplify
|
|
98
|
+
"W", # pycodestyle (warning)
|
|
99
|
+
]
|
|
100
|
+
|
|
101
|
+
ignore = [
|
|
102
|
+
"PLC2701", # Private name import `*` from external module `*`
|
|
103
|
+
"RET504", # Unnecessary assignment to `**kwargs` before `return` statement
|
|
104
|
+
]
|
|
105
|
+
|
|
106
|
+
[tool.ruff.lint.per-file-ignores]
|
|
107
|
+
"src/devopness/generated/**/*" = [
|
|
108
|
+
"E501", # Line too long
|
|
109
|
+
]
|
|
110
|
+
"src/devopness/generated/**/__init__.py" = [
|
|
111
|
+
"F401", # Module imported but unused
|
|
112
|
+
]
|
|
113
|
+
"scripts/**/*" = [
|
|
114
|
+
"ANN", # flake8-annotations
|
|
115
|
+
"S404", # `subprocess` module is possibly insecure
|
|
116
|
+
"S602", # `subprocess` call with `shell=True` identified, security issue
|
|
117
|
+
]
|
|
118
|
+
"tests/**/*" = [
|
|
119
|
+
"ANN", # flake8-annotations
|
|
120
|
+
"E501", # Line too long
|
|
121
|
+
"S101", # Use of `assert` detected
|
|
122
|
+
]
|
|
123
|
+
|
|
124
|
+
[tool.ruff.lint.isort]
|
|
125
|
+
known-first-party = ["devopness"]
|
|
126
|
+
case-sensitive = true
|
|
127
|
+
|
|
128
|
+
[tool.mypy]
|
|
129
|
+
python_version = "3.11"
|
|
130
|
+
|
|
131
|
+
strict = true
|
|
132
|
+
disallow_any_unimported = true
|
|
133
|
+
strict_optional = true
|
|
134
|
+
warn_no_return = true
|
|
135
|
+
warn_unreachable = true
|
|
136
|
+
|
|
137
|
+
sqlite_cache = true
|
|
138
|
+
cache_fine_grained = true
|
|
139
|
+
|
|
140
|
+
[[tool.mypy.overrides]]
|
|
141
|
+
module = "devopness.generated.api.*"
|
|
142
|
+
disable_error_code = ["attr-defined"]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Devopness API Python SDK - Painless essential DevOps to everyone
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from .client import DevopnessClient, DevopnessClientAsync
|
|
6
|
+
from .client_config import DevopnessClientConfig
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"DevopnessClient",
|
|
10
|
+
"DevopnessClientAsync",
|
|
11
|
+
"DevopnessClientConfig",
|
|
12
|
+
]
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Devopness API Python SDK - Painless essential DevOps to everyone
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from .base_model import DevopnessBaseModel
|
|
6
|
+
from .base_service import DevopnessBaseService, DevopnessBaseServiceAsync
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"DevopnessBaseModel",
|
|
10
|
+
"DevopnessBaseService",
|
|
11
|
+
"DevopnessBaseServiceAsync",
|
|
12
|
+
]
|