keystone.common.sql package¶
Subpackages¶
- keystone.common.sql.contract_repo package
- Subpackages
- keystone.common.sql.contract_repo.versions package
- Submodules
- keystone.common.sql.contract_repo.versions.001_contract_initial_null_migration module
- keystone.common.sql.contract_repo.versions.002_password_created_at_not_nullable module
- keystone.common.sql.contract_repo.versions.003_remove_unencrypted_blob_column_from_credential module
- keystone.common.sql.contract_repo.versions.004_reset_password_created_at module
- keystone.common.sql.contract_repo.versions.005_placeholder module
- keystone.common.sql.contract_repo.versions.006_placeholder module
- keystone.common.sql.contract_repo.versions.007_placeholder module
- keystone.common.sql.contract_repo.versions.008_placeholder module
- keystone.common.sql.contract_repo.versions.009_placeholder module
- keystone.common.sql.contract_repo.versions.010_contract_add_revocation_event_index module
- keystone.common.sql.contract_repo.versions.011_contract_user_id_unique_for_nonlocal_user module
- keystone.common.sql.contract_repo.versions.012_contract_add_domain_id_to_idp module
- keystone.common.sql.contract_repo.versions.013_contract_protocol_cascade_delete_for_federated_user module
- keystone.common.sql.contract_repo.versions.014_contract_add_domain_id_to_user_table module
- keystone.common.sql.contract_repo.versions.015_contract_update_federated_user_domain module
- keystone.common.sql.contract_repo.versions.016_contract_add_user_options module
- keystone.common.sql.contract_repo.versions.017_placeholder module
- keystone.common.sql.contract_repo.versions.018_placeholder module
- keystone.common.sql.contract_repo.versions.019_placeholder module
- keystone.common.sql.contract_repo.versions.020_placeholder module
- keystone.common.sql.contract_repo.versions.021_placeholder module
- keystone.common.sql.contract_repo.versions.022_contract_add_default_project_id_index module
- keystone.common.sql.contract_repo.versions.023_contract_add_second_password_column_for_expanded_hash_sizes module
- keystone.common.sql.contract_repo.versions.024_contract_create_created_at_int_columns module
- keystone.common.sql.contract_repo.versions.025_placeholder module
- keystone.common.sql.contract_repo.versions.026_placeholder module
- keystone.common.sql.contract_repo.versions.027_placeholder module
- keystone.common.sql.contract_repo.versions.028_placeholder module
- keystone.common.sql.contract_repo.versions.029_placeholder module
- keystone.common.sql.contract_repo.versions.030_contract_add_project_tags_table module
- keystone.common.sql.contract_repo.versions.031_contract_system_assignment_table module
- keystone.common.sql.contract_repo.versions.032_contract_add_expired_at_int_to_trust module
- keystone.common.sql.contract_repo.versions.033_contract_add_limits_tables module
- keystone.common.sql.contract_repo.versions.034_contract_add_application_credentials_table module
- keystone.common.sql.contract_repo.versions.035_contract_add_system_column_to_application_credential_table module
- keystone.common.sql.contract_repo.versions.036_contract_rename_application_credential_restriction_column module
- keystone.common.sql.contract_repo.versions.037_contract_remove_service_and_region_fk_for_registered_limit module
- keystone.common.sql.contract_repo.versions.038_placeholder module
- keystone.common.sql.contract_repo.versions.039_placeholder module
- keystone.common.sql.contract_repo.versions.040_placeholder module
- keystone.common.sql.contract_repo.versions.041_placeholder module
- keystone.common.sql.contract_repo.versions.042_placeholder module
- keystone.common.sql.contract_repo.versions.043_placeholder module
- keystone.common.sql.contract_repo.versions.044_placeholder module
- keystone.common.sql.contract_repo.versions.045_contract_add_description_to_limit module
- keystone.common.sql.contract_repo.versions.046_contract_old_password_data_to_password_hash_column module
- keystone.common.sql.contract_repo.versions.047_contract_expand_update_pk_for_unified_limit module
- keystone.common.sql.contract_repo.versions.048_contract_add_registered_limit_id_column_for_limit module
- keystone.common.sql.contract_repo.versions.049_placeholder module
- keystone.common.sql.contract_repo.versions.050_placeholder module
- keystone.common.sql.contract_repo.versions.051_placeholder module
- keystone.common.sql.contract_repo.versions.052_placeholder module
- keystone.common.sql.contract_repo.versions.053_contract_add_role_description_to_role_table module
- keystone.common.sql.contract_repo.versions.054_contract_drop_old_passoword_column module
- keystone.common.sql.contract_repo.versions.055_contract_add_domain_to_limit module
- keystone.common.sql.contract_repo.versions.056_contract_add_application_credential_access_rules module
- keystone.common.sql.contract_repo.versions.057_placeholder module
- keystone.common.sql.contract_repo.versions.058_placeholder module
- keystone.common.sql.contract_repo.versions.059_placeholder module
- keystone.common.sql.contract_repo.versions.060_placeholder module
- keystone.common.sql.contract_repo.versions.061_placeholder module
- keystone.common.sql.contract_repo.versions.062_contract_extract_redelegation_data_from_extras module
- keystone.common.sql.contract_repo.versions.063_contract_drop_limit_columns module
- keystone.common.sql.contract_repo.versions.064_contract_add_remote_id_attribute_to_federation_protocol_table module
- keystone.common.sql.contract_repo.versions.065_contract_add_user_external_id_to_access_rule module
- keystone.common.sql.contract_repo.versions.066_contract_add_resource_options_table module
- keystone.common.sql.contract_repo.versions.067_placeholder module
- keystone.common.sql.contract_repo.versions.068_placeholder module
- keystone.common.sql.contract_repo.versions.069_placeholder module
- keystone.common.sql.contract_repo.versions.070_placeholder module
- keystone.common.sql.contract_repo.versions.071_placeholder module
- keystone.common.sql.contract_repo.versions.072_contract_drop_domain_id_fk module
- keystone.common.sql.contract_repo.versions.073_contract_expiring_group_membership module
- keystone.common.sql.contract_repo.versions.074_placeholder module
- keystone.common.sql.contract_repo.versions.075_placeholder module
- keystone.common.sql.contract_repo.versions.076_placeholder module
- keystone.common.sql.contract_repo.versions.077_placeholder module
- keystone.common.sql.contract_repo.versions.078_placeholder module
- Module contents
- keystone.common.sql.contract_repo.versions package
- Submodules
- keystone.common.sql.contract_repo.manage module
- Module contents
- Subpackages
- keystone.common.sql.data_migration_repo package
- Subpackages
- keystone.common.sql.data_migration_repo.versions package
- Submodules
- keystone.common.sql.data_migration_repo.versions.001_data_initial_null_migration module
- keystone.common.sql.data_migration_repo.versions.002_password_created_at_not_nullable module
- keystone.common.sql.data_migration_repo.versions.003_migrate_unencrypted_credentials module
- keystone.common.sql.data_migration_repo.versions.004_reset_password_created_at module
- keystone.common.sql.data_migration_repo.versions.005_placeholder module
- keystone.common.sql.data_migration_repo.versions.006_placeholder module
- keystone.common.sql.data_migration_repo.versions.007_placeholder module
- keystone.common.sql.data_migration_repo.versions.008_placeholder module
- keystone.common.sql.data_migration_repo.versions.009_placeholder module
- keystone.common.sql.data_migration_repo.versions.010_migrate_add_revocation_event_index module
- keystone.common.sql.data_migration_repo.versions.011_expand_user_id_unique_for_nonlocal_user module
- keystone.common.sql.data_migration_repo.versions.012_migrate_add_domain_id_to_idp module
- keystone.common.sql.data_migration_repo.versions.013_migrate_protocol_cascade_delete_for_federated_user module
- keystone.common.sql.data_migration_repo.versions.014_migrate_add_domain_id_to_user_table module
- keystone.common.sql.data_migration_repo.versions.015_migrate_update_federated_user_domain module
- keystone.common.sql.data_migration_repo.versions.016_migrate_add_user_options module
- keystone.common.sql.data_migration_repo.versions.017_placeholder module
- keystone.common.sql.data_migration_repo.versions.018_placeholder module
- keystone.common.sql.data_migration_repo.versions.019_placeholder module
- keystone.common.sql.data_migration_repo.versions.020_placeholder module
- keystone.common.sql.data_migration_repo.versions.021_placeholder module
- keystone.common.sql.data_migration_repo.versions.022_migrate_add_default_project_id_index module
- keystone.common.sql.data_migration_repo.versions.023_migrate_add_second_password_column_for_expanded_hash_sizes module
- keystone.common.sql.data_migration_repo.versions.024_migrate_create_created_at_int_columns module
- keystone.common.sql.data_migration_repo.versions.025_placeholder module
- keystone.common.sql.data_migration_repo.versions.026_placeholder module
- keystone.common.sql.data_migration_repo.versions.027_placeholder module
- keystone.common.sql.data_migration_repo.versions.028_placeholder module
- keystone.common.sql.data_migration_repo.versions.029_placeholder module
- keystone.common.sql.data_migration_repo.versions.030_migrate_add_project_tags_table module
- keystone.common.sql.data_migration_repo.versions.031_migrate_system_assignment_table module
- keystone.common.sql.data_migration_repo.versions.032_migrate_add_expired_at_int_to_trust module
- keystone.common.sql.data_migration_repo.versions.033_migrate_add_limits_tables module
- keystone.common.sql.data_migration_repo.versions.034_migrate_add_application_credentials_table module
- keystone.common.sql.data_migration_repo.versions.035_migrate_add_system_column_to_application_credential_table module
- keystone.common.sql.data_migration_repo.versions.036_migrate_rename_application_credential_restriction_column module
- keystone.common.sql.data_migration_repo.versions.037_migrate_remove_service_and_region_fk_for_registered_limit module
- keystone.common.sql.data_migration_repo.versions.038_placeholder module
- keystone.common.sql.data_migration_repo.versions.039_placeholder module
- keystone.common.sql.data_migration_repo.versions.040_placeholder module
- keystone.common.sql.data_migration_repo.versions.041_placeholder module
- keystone.common.sql.data_migration_repo.versions.042_placeholder module
- keystone.common.sql.data_migration_repo.versions.043_placeholder module
- keystone.common.sql.data_migration_repo.versions.044_placeholder module
- keystone.common.sql.data_migration_repo.versions.045_migrate_add_description_to_limit module
- keystone.common.sql.data_migration_repo.versions.046_migrate_old_password_data_to_password_hash_column module
- keystone.common.sql.data_migration_repo.versions.047_migrate_update_pk_for_unified_limit module
- keystone.common.sql.data_migration_repo.versions.048_migrate_add_registered_limit_id_column_for_limit module
- keystone.common.sql.data_migration_repo.versions.049_placeholder module
- keystone.common.sql.data_migration_repo.versions.050_placeholder module
- keystone.common.sql.data_migration_repo.versions.051_placeholder module
- keystone.common.sql.data_migration_repo.versions.052_placeholder module
- keystone.common.sql.data_migration_repo.versions.053_migrate_add_role_description_to_role_table module
- keystone.common.sql.data_migration_repo.versions.054_migrate_drop_old_passoword_column module
- keystone.common.sql.data_migration_repo.versions.055_migrate_add_domain_to_limit module
- keystone.common.sql.data_migration_repo.versions.056_migrate_add_application_credential_access_rules module
- keystone.common.sql.data_migration_repo.versions.057_placeholder module
- keystone.common.sql.data_migration_repo.versions.058_placeholder module
- keystone.common.sql.data_migration_repo.versions.059_placeholder module
- keystone.common.sql.data_migration_repo.versions.060_placeholder module
- keystone.common.sql.data_migration_repo.versions.061_placeholder module
- keystone.common.sql.data_migration_repo.versions.062_migrate_extract_redelegation_data_from_extras module
- keystone.common.sql.data_migration_repo.versions.063_migrate_drop_limit_columns module
- keystone.common.sql.data_migration_repo.versions.064_migrate_add_remote_id_attribute_to_federation_protocol_table module
- keystone.common.sql.data_migration_repo.versions.065_migrate_add_user_external_id_to_access_rule module
- keystone.common.sql.data_migration_repo.versions.066_migrate_add_resource_options_table module
- keystone.common.sql.data_migration_repo.versions.067_placeholder module
- keystone.common.sql.data_migration_repo.versions.068_placeholder module
- keystone.common.sql.data_migration_repo.versions.069_placeholder module
- keystone.common.sql.data_migration_repo.versions.070_placeholder module
- keystone.common.sql.data_migration_repo.versions.071_placeholder module
- keystone.common.sql.data_migration_repo.versions.072_migrate_drop_domain_id_fk module
- keystone.common.sql.data_migration_repo.versions.073_migrate_expiring_group_membership module
- keystone.common.sql.data_migration_repo.versions.074_placeholder module
- keystone.common.sql.data_migration_repo.versions.075_placeholder module
- keystone.common.sql.data_migration_repo.versions.076_placeholder module
- keystone.common.sql.data_migration_repo.versions.077_placeholder module
- keystone.common.sql.data_migration_repo.versions.078_placeholder module
- Module contents
- keystone.common.sql.data_migration_repo.versions package
- Submodules
- keystone.common.sql.data_migration_repo.manage module
- Module contents
- Subpackages
- keystone.common.sql.expand_repo package
- Subpackages
- keystone.common.sql.expand_repo.versions package
- Submodules
- keystone.common.sql.expand_repo.versions.001_expand_initial_null_migration module
- keystone.common.sql.expand_repo.versions.002_password_created_at_not_nullable module
- keystone.common.sql.expand_repo.versions.003_add_key_hash_and_encrypted_blob_to_credential module
- keystone.common.sql.expand_repo.versions.004_reset_password_created_at module
- keystone.common.sql.expand_repo.versions.005_placeholder module
- keystone.common.sql.expand_repo.versions.006_placeholder module
- keystone.common.sql.expand_repo.versions.007_placeholder module
- keystone.common.sql.expand_repo.versions.008_placeholder module
- keystone.common.sql.expand_repo.versions.009_placeholder module
- keystone.common.sql.expand_repo.versions.010_expand_add_revocation_event_index module
- keystone.common.sql.expand_repo.versions.011_expand_user_id_unique_for_nonlocal_user module
- keystone.common.sql.expand_repo.versions.012_expand_add_domain_id_to_idp module
- keystone.common.sql.expand_repo.versions.013_expand_protocol_cascade_delete_for_federated_user module
- keystone.common.sql.expand_repo.versions.014_expand_add_domain_id_to_user_table module
- keystone.common.sql.expand_repo.versions.015_expand_update_federated_user_domain module
- keystone.common.sql.expand_repo.versions.016_expand_add_user_options module
- keystone.common.sql.expand_repo.versions.017_placeholder module
- keystone.common.sql.expand_repo.versions.018_placeholder module
- keystone.common.sql.expand_repo.versions.019_placeholder module
- keystone.common.sql.expand_repo.versions.020_placeholder module
- keystone.common.sql.expand_repo.versions.021_placeholder module
- keystone.common.sql.expand_repo.versions.022_expand_add_default_project_id_index module
- keystone.common.sql.expand_repo.versions.023_expand_add_second_password_column_for_expanded_hash_sizes module
- keystone.common.sql.expand_repo.versions.024_expand_create_created_at_int_columns module
- keystone.common.sql.expand_repo.versions.025_placeholder module
- keystone.common.sql.expand_repo.versions.026_placeholder module
- keystone.common.sql.expand_repo.versions.027_placeholder module
- keystone.common.sql.expand_repo.versions.028_placeholder module
- keystone.common.sql.expand_repo.versions.029_placeholder module
- keystone.common.sql.expand_repo.versions.030_expand_add_project_tags_table module
- keystone.common.sql.expand_repo.versions.031_expand_system_assignment_table module
- keystone.common.sql.expand_repo.versions.032_expand_add_expired_at_int_to_trust module
- keystone.common.sql.expand_repo.versions.033_expand_add_limits_tables module
- keystone.common.sql.expand_repo.versions.034_expand_add_application_credential_table module
- keystone.common.sql.expand_repo.versions.035_expand_add_system_column_to_application_credential_table module
- keystone.common.sql.expand_repo.versions.036_expand_rename_application_credential_restriction_column module
- keystone.common.sql.expand_repo.versions.037_expand_remove_service_and_region_fk_for_registered_limit module
- keystone.common.sql.expand_repo.versions.038_placeholder module
- keystone.common.sql.expand_repo.versions.039_placeholder module
- keystone.common.sql.expand_repo.versions.040_placeholder module
- keystone.common.sql.expand_repo.versions.041_placeholder module
- keystone.common.sql.expand_repo.versions.042_placeholder module
- keystone.common.sql.expand_repo.versions.043_placeholder module
- keystone.common.sql.expand_repo.versions.044_placeholder module
- keystone.common.sql.expand_repo.versions.045_expand_add_description_to_limit module
- keystone.common.sql.expand_repo.versions.046_expand_old_password_data_to_password_hash_column module
- keystone.common.sql.expand_repo.versions.047_expand_update_pk_for_unified_limit module
- keystone.common.sql.expand_repo.versions.048_expand_add_registered_limit_id_column_for_limit module
- keystone.common.sql.expand_repo.versions.049_placeholder module
- keystone.common.sql.expand_repo.versions.050_placeholder module
- keystone.common.sql.expand_repo.versions.051_placeholder module
- keystone.common.sql.expand_repo.versions.052_placeholder module
- keystone.common.sql.expand_repo.versions.053_expand_add_role_description_to_role_table module
- keystone.common.sql.expand_repo.versions.054_expand_drop_old_passoword_column module
- keystone.common.sql.expand_repo.versions.055_expand_add_domain_to_limit module
- keystone.common.sql.expand_repo.versions.056_expand_add_application_credential_access_rules module
- keystone.common.sql.expand_repo.versions.057_placeholder module
- keystone.common.sql.expand_repo.versions.058_placeholder module
- keystone.common.sql.expand_repo.versions.059_placeholder module
- keystone.common.sql.expand_repo.versions.060_placeholder module
- keystone.common.sql.expand_repo.versions.061_placeholder module
- keystone.common.sql.expand_repo.versions.062_expand_extract_redelegation_data_from_extras module
- keystone.common.sql.expand_repo.versions.063_expand_drop_limit_columns module
- keystone.common.sql.expand_repo.versions.064_expand_add_remote_id_attribute_to_federation_protocol_table module
- keystone.common.sql.expand_repo.versions.065_expand_add_user_external_id_to_access_rule module
- keystone.common.sql.expand_repo.versions.066_expand_add_role_and_project_option_tables module
- keystone.common.sql.expand_repo.versions.067_placeholder module
- keystone.common.sql.expand_repo.versions.068_placeholder module
- keystone.common.sql.expand_repo.versions.069_placeholder module
- keystone.common.sql.expand_repo.versions.070_placeholder module
- keystone.common.sql.expand_repo.versions.071_placeholder module
- keystone.common.sql.expand_repo.versions.072_expand_drop_domain_id_fk module
- keystone.common.sql.expand_repo.versions.073_expand_expiring_group_membership module
- keystone.common.sql.expand_repo.versions.074_placeholder module
- keystone.common.sql.expand_repo.versions.075_placeholder module
- keystone.common.sql.expand_repo.versions.076_placeholder module
- keystone.common.sql.expand_repo.versions.077_placeholder module
- keystone.common.sql.expand_repo.versions.078_placeholder module
- Module contents
- keystone.common.sql.expand_repo.versions package
- Submodules
- keystone.common.sql.expand_repo.manage module
- Module contents
- Subpackages
- keystone.common.sql.migrate_repo package
- Subpackages
- keystone.common.sql.migrate_repo.versions package
- Submodules
- keystone.common.sql.migrate_repo.versions.067_kilo module
- keystone.common.sql.migrate_repo.versions.068_placeholder module
- keystone.common.sql.migrate_repo.versions.069_placeholder module
- keystone.common.sql.migrate_repo.versions.070_placeholder module
- keystone.common.sql.migrate_repo.versions.071_placeholder module
- keystone.common.sql.migrate_repo.versions.072_placeholder module
- keystone.common.sql.migrate_repo.versions.073_insert_assignment_inherited_pk module
- keystone.common.sql.migrate_repo.versions.074_add_is_domain_project module
- keystone.common.sql.migrate_repo.versions.075_confirm_config_registration module
- keystone.common.sql.migrate_repo.versions.076_placeholder module
- keystone.common.sql.migrate_repo.versions.077_placeholder module
- keystone.common.sql.migrate_repo.versions.078_placeholder module
- keystone.common.sql.migrate_repo.versions.079_placeholder module
- keystone.common.sql.migrate_repo.versions.080_placeholder module
- keystone.common.sql.migrate_repo.versions.081_add_endpoint_policy_table module
- keystone.common.sql.migrate_repo.versions.082_add_federation_tables module
- keystone.common.sql.migrate_repo.versions.083_add_oauth1_tables module
- keystone.common.sql.migrate_repo.versions.084_add_revoke_tables module
- keystone.common.sql.migrate_repo.versions.085_add_endpoint_filtering_table module
- keystone.common.sql.migrate_repo.versions.086_add_duplicate_constraint_trusts module
- keystone.common.sql.migrate_repo.versions.087_implied_roles module
- keystone.common.sql.migrate_repo.versions.088_domain_specific_roles module
- keystone.common.sql.migrate_repo.versions.089_add_root_of_all_domains module
- keystone.common.sql.migrate_repo.versions.090_add_local_user_and_password_tables module
- keystone.common.sql.migrate_repo.versions.091_migrate_data_to_local_user_and_password_tables module
- keystone.common.sql.migrate_repo.versions.092_make_implied_roles_fks_cascaded module
- keystone.common.sql.migrate_repo.versions.093_migrate_domains_to_projects module
- keystone.common.sql.migrate_repo.versions.094_add_federated_user_table module
- keystone.common.sql.migrate_repo.versions.095_add_integer_pkey_to_revocation_event_table module
- keystone.common.sql.migrate_repo.versions.096_drop_role_name_constraint module
- keystone.common.sql.migrate_repo.versions.097_drop_user_name_domainid_constraint module
- keystone.common.sql.migrate_repo.versions.098_placeholder module
- keystone.common.sql.migrate_repo.versions.099_placeholder module
- keystone.common.sql.migrate_repo.versions.100_placeholder module
- keystone.common.sql.migrate_repo.versions.101_drop_role_name_constraint module
- keystone.common.sql.migrate_repo.versions.102_drop_domain_table module
- keystone.common.sql.migrate_repo.versions.103_add_nonlocal_user_table module
- keystone.common.sql.migrate_repo.versions.104_drop_user_name_domainid_constraint module
- keystone.common.sql.migrate_repo.versions.105_add_password_date_columns module
- keystone.common.sql.migrate_repo.versions.106_allow_password_column_to_be_nullable module
- keystone.common.sql.migrate_repo.versions.107_add_user_date_columns module
- keystone.common.sql.migrate_repo.versions.108_add_failed_auth_columns module
- keystone.common.sql.migrate_repo.versions.109_add_password_self_service_column module
- Module contents
- keystone.common.sql.migrate_repo.versions package
- Submodules
- keystone.common.sql.migrate_repo.manage module
- Module contents
- Subpackages
Submodules¶
keystone.common.sql.core module¶
SQL backends for the various services.
Before using this module, call initialize(). This has to be done before CONF() because it sets up configuration options.
-
class
keystone.common.sql.core.
DateTimeInt
(*args, **kwargs)[source]¶ Bases:
sqlalchemy.sql.type_api.TypeDecorator
A column that automatically converts a datetime object to an Int.
Keystone relies on accurate (sub-second) datetime objects. In some cases the RDBMS drop sub-second accuracy (some versions of MySQL). This field automatically converts the value to an INT when storing the data and back to a datetime object when it is loaded from the database.
- NOTE: Any datetime object that has timezone data will be converted to UTC.
Any datetime object that has no timezone data will be assumed to be UTC and loaded from the DB as such.
-
epoch
= datetime.datetime(1970, 1, 1, 0, 0, tzinfo=<UTC>)¶
-
impl
¶ alias of
sqlalchemy.sql.sqltypes.BigInteger
-
process_bind_param
(value, dialect)[source]¶ Receive a bound parameter value to be converted.
Subclasses override this method to return the value that should be passed along to the underlying
TypeEngine
object, and from there to the DBAPIexecute()
method.The operation could be anything desired to perform custom behavior, such as transforming or serializing data. This could also be used as a hook for validating logic.
This operation should be designed with the reverse operation in mind, which would be the process_result_value method of this class.
- Parameters
value – Data to operate upon, of any type expected by this method in the subclass. Can be
None
.dialect – the
Dialect
in use.
-
process_result_value
(value, dialect)[source]¶ Receive a result-row column value to be converted.
Subclasses should implement this method to operate on data fetched from the database.
Subclasses override this method to return the value that should be passed back to the application, given a value that is already processed by the underlying
TypeEngine
object, originally from the DBAPI cursor methodfetchone()
or similar.The operation could be anything desired to perform custom behavior, such as transforming or serializing data. This could also be used as a hook for validating logic.
- Parameters
value – Data to operate upon, of any type expected by this method in the subclass. Can be
None
.dialect – the
Dialect
in use.
This operation should be designed to be reversible by the “process_bind_param” method of this class.
-
class
keystone.common.sql.core.
JsonBlob
(*args, **kwargs)[source]¶ Bases:
sqlalchemy.sql.type_api.TypeDecorator
-
impl
¶ alias of
sqlalchemy.sql.sqltypes.Text
-
process_bind_param
(value, dialect)[source]¶ Receive a bound parameter value to be converted.
Subclasses override this method to return the value that should be passed along to the underlying
TypeEngine
object, and from there to the DBAPIexecute()
method.The operation could be anything desired to perform custom behavior, such as transforming or serializing data. This could also be used as a hook for validating logic.
This operation should be designed with the reverse operation in mind, which would be the process_result_value method of this class.
- Parameters
value – Data to operate upon, of any type expected by this method in the subclass. Can be
None
.dialect – the
Dialect
in use.
-
process_result_value
(value, dialect)[source]¶ Receive a result-row column value to be converted.
Subclasses should implement this method to operate on data fetched from the database.
Subclasses override this method to return the value that should be passed back to the application, given a value that is already processed by the underlying
TypeEngine
object, originally from the DBAPI cursor methodfetchone()
or similar.The operation could be anything desired to perform custom behavior, such as transforming or serializing data. This could also be used as a hook for validating logic.
- Parameters
value – Data to operate upon, of any type expected by this method in the subclass. Can be
None
.dialect – the
Dialect
in use.
This operation should be designed to be reversible by the “process_bind_param” method of this class.
-
-
class
keystone.common.sql.core.
ModelDictMixinWithExtras
[source]¶ Bases:
oslo_db.sqlalchemy.models.ModelBase
Mixin making model behave with dict-like interfaces includes extras.
- NOTE: DO NOT USE THIS FOR FUTURE SQL MODELS. “Extra” column is a legacy
concept that should not be carried forward with new SQL models as the concept of “arbitrary” properties is not in line with the design philosophy of Keystone.
-
attributes
= []¶
-
keystone.common.sql.core.
filter_limit_query
(model, query, hints)[source]¶ Apply filtering and limit to a query.
- Parameters
model – table model
query – query to apply filters to
hints – contains the list of filters and limit details. This may be None, indicating that there are no filters or limits to be applied. If it’s not None, then any filters satisfied here will be removed so that the caller will know if any filters remain.
- Returns
query updated with any filters and limits satisfied
-
keystone.common.sql.core.
handle_conflicts
(conflict_type='object')[source]¶ Convert select sqlalchemy exceptions into HTTP 409 Conflict.
-
keystone.common.sql.core.
initialize_decorator
(init)[source]¶ Ensure that the length of string field do not exceed the limit.
This decorator check the initialize arguments, to make sure the length of string field do not exceed the length limit, or raise a ‘StringLengthExceeded’ exception.
Use decorator instead of inheritance, because the metaclass will check the __tablename__, primary key columns, etc. at the class definition.
keystone.common.sql.upgrades module¶
-
class
keystone.common.sql.upgrades.
Repository
(engine, repo_name)[source]¶ Bases:
object
-
property
version
¶
-
property
-
keystone.common.sql.upgrades.
contract_schema
()[source]¶ Contract the database.
This is run manually by the keystone-manage command once the keystone nodes have been upgraded to the latest release and will remove any old tables/columns that are no longer required.
-
keystone.common.sql.upgrades.
expand_schema
()[source]¶ Expand the database schema ahead of data migration.
This is run manually by the keystone-manage command before the first keystone node is migrated to the latest release.
-
keystone.common.sql.upgrades.
find_repo
(repo_name)[source]¶ Return the absolute path to the named repository.
-
keystone.common.sql.upgrades.
get_init_version
(abs_path=None)[source]¶ Get the initial version of a migrate repository.
- Parameters
abs_path – Absolute path to migrate repository.
- Returns
initial version number or None, if DB is empty.
-
keystone.common.sql.upgrades.
migrate_data
()[source]¶ Migrate data to match the new schema.
This is run manually by the keystone-manage command once the keystone schema has been expanded for the new release.
-
keystone.common.sql.upgrades.
offline_sync_database_to_version
(version=None)[source]¶ Perform and off-line sync of the database.
Migrate the database up to the latest version, doing the equivalent of the cycle of –expand, –migrate and –contract, for when an offline upgrade is being performed.
If a version is specified then only migrate the database up to that version. Downgrading is not supported. If version is specified, then only the main database migration is carried out - and the expand, migration and contract phases will NOT be run.
-
keystone.common.sql.upgrades.
validate_upgrade_order
(repo_name, target_repo_version=None)[source]¶ Validate the state of the migration repositories.
This is run before allowing the db_sync command to execute. Ensure the upgrade step and version specified by the operator remains consistent with the upgrade process. I.e. expand’s version is greater or equal to migrate’s, migrate’s version is greater or equal to contract’s.
- Parameters
repo_name – The name of the repository that the user is trying to upgrade.
target_repo_version – The version to upgrade the repo. Otherwise, the version will be upgraded to the latest version available.