To learn a new module, you must first learn to understand the main functions of each file and the logical relationship between each other. First, simply list the data, and then analyze the logical relationship.
├── api│ ├── cached_images.py│ ├── cached_images.pyc│ ├── common.py│ ├── common.pyc│ ├── __init__.py│ ├── __init__.pyc│ ├── middleware│ │ ├── cache_manage.py│ │ ├── cache_manage.pyc│ │ ├── cache.py│ │ ├── cache.pyc│ │ ├── context.py│ │ ├── context.pyc│ │ ├── __init__.py│ │ ├── __init__.pyc│ │ ├── log_request.py│ │ ├── version_negotiation.py│ │ └── version_negotiation.pyc│ ├── policy.py│ ├── policy.pyc│ ├── v1│ │ ├── controller.py│ │ ├── controller.pyc│ │ ├── filters.py│ │ ├── filters.pyc│ │ ├── images.py│ │ ├── images.pyc│ │ ├── __init__.py│ │ ├── __init__.pyc│ │ ├── members.py│ │ ├── members.pyc│ │ ├── router.py│ │ └── router.pyc│ ├── v2│ │ ├── image_data.py│ │ ├── image_data.pyc│ │ ├── images.py│ │ ├── images.pyc│ │ ├── image_tags.py│ │ ├── image_tags.pyc│ │ ├── __init__.py│ │ ├── __init__.pyc│ │ ├── router.py│ │ ├── router.pyc│ │ ├── schemas.py│ │ └── schemas.pyc│ ├── versions.py│ └── versions.pyc├── client.py├── common│ ├── animation.py│ ├── auth.py│ ├── auth.pyc│ ├── client.py│ ├── client.pyc│ ├── config.py│ ├── config.pyc│ ├── crypt.py│ ├── crypt.pyc│ ├── exception.py│ ├── exception.pyc│ ├── __init__.py│ ├── __init__.pyc│ ├── lock│ │ ├── delete_lock.py│ │ ├── delete_lock.pyc│ │ ├── __init__.py│ │ ├── __init__.pyc│ │ ├── read_lock.py│ │ ├── read_lock.pyc│ │ ├── write_lock.py│ │ └── write_lock.pyc│ ├── utils.py│ ├── utils.pyc│ ├── wsgi.py│ └── wsgi.pyc├── context.py├── context.pyc├── db│ ├── __init__.py│ ├── __init__.pyc│ ├── simple│ │ ├── api.py│ │ └── __init__.py│ └── sqlalchemy│ ├── api.py│ ├── api.pyc│ ├── __init__.py│ ├── __init__.pyc│ ├── migrate_repo│ │ ├── __init__.py│ │ ├── __init__.pyc│ │ ├── manage.py│ │ ├── migrate.cfg│ │ ├── README│ │ ├── schema.py│ │ ├── schema.pyc│ │ └── versions│ │ ├── 001_add_images_table.py│ │ ├── 001_add_images_table.pyc│ │ ├── 002_add_image_properties_table.py│ │ ├── 002_add_image_properties_table.pyc│ │ ├── 003_add_disk_format.py│ │ ├── 003_add_disk_format.pyc│ │ ├── 003_sqlite_downgrade.sql│ │ ├── 003_sqlite_upgrade.sql│ │ ├── 004_add_checksum.py│ │ ├── 004_add_checksum.pyc│ │ ├── 005_size_big_integer.py│ │ ├── 005_size_big_integer.pyc│ │ ├── 006_key_to_name.py│ │ ├── 006_mysql_downgrade.sql│ │ ├── 006_mysql_upgrade.sql│ │ ├── 006_sqlite_downgrade.sql│ │ ├── 006_sqlite_upgrade.sql│ │ ├── 007_add_owner.py│ │ ├── 007_add_owner.pyc│ │ ├── 008_add_image_members_table.py│ │ ├── 008_add_image_members_table.pyc│ │ ├── 009_add_mindisk_and_minram.py│ │ ├── 009_add_mindisk_and_minram.pyc│ │ ├── 010_default_update_at.py│ │ ├── 010_default_update_at.pyc│ │ ├── 011_make_mindisk_and_minram_notnull.py│ │ ├── 011_make_mindisk_and_minram_notnull.pyc│ │ ├── 012_id_to_uuid.py│ │ ├── 012_id_to_uuid.pyc│ │ ├── 013_add_protected.py│ │ ├── 013_add_protected.pyc│ │ ├── 013_sqlite_downgrade.sql│ │ ├── 014_add_image_tags_table.py│ │ ├── 014_add_image_tags_table.pyc│ │ ├── 015_quote_swift_credentials.py│ │ ├── 015_quote_swift_credentials.pyc│ │ ├── __init__.py│ │ └── __init__.pyc│ ├── migration.py│ ├── migration.pyc│ ├── models.py│ └── models.pyc├── image_cache│ ├── base.py│ ├── cleaner.py│ ├── drivers│ │ ├── base.py│ │ ├── base.pyc│ │ ├── __init__.py│ │ ├── __init__.pyc│ │ ├── mysql.py│ │ ├── sqlite.py│ │ ├── sqlite.pyc│ │ └── xattr.py│ ├── __init__.py│ ├── __init__.pyc│ ├── prefetcher.py│ └── pruner.py├── __init__.py├── __init__.pyc├── locale│ ├── bs│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── cs│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── da│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── de│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── en_AU│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── en_GB│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── es│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── fr│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── glance.pot│ ├── it│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── ja│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── ko│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── pt_BR│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── ru│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── tl│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── tr│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── uk│ │ └── LC_MESSAGES│ │ └── glance.po│ ├── zh_CN│ │ └── LC_MESSAGES│ │ └── glance.po│ └── zh_TW│ └── LC_MESSAGES│ └── glance.po├── notifier│ ├── __init__.py│ ├── __init__.pyc│ ├── notify_kombu.py│ ├── notify_kombu.pyc│ ├── notify_log.py│ ├── notify_noop.py│ ├── notify_qpid.py│ ├── strategy.py│ └── strategy.pyc├── nt_version.py├── openstack│ ├── common│ │ ├── cfg.py│ │ ├── cfg.pyc│ │ ├── gettextutils.py│ │ ├── gettextutils.pyc│ │ ├── importutils.py│ │ ├── importutils.pyc│ │ ├── iniparser.py│ │ ├── iniparser.pyc│ │ ├── __init__.py│ │ ├── __init__.pyc│ │ ├── jsonutils.py│ │ ├── jsonutils.pyc│ │ ├── local.py│ │ ├── local.pyc│ │ ├── log.py│ │ ├── log.pyc│ │ ├── notifier│ │ │ ├── api.py│ │ │ ├── __init__.py│ │ │ ├── __init__.pyc│ │ │ ├── log_notifier.py│ │ │ ├── no_op_notifier.py│ │ │ ├── rabbit_notifier.py│ │ │ └── test_notifier.py│ │ ├── policy.py│ │ ├── policy.pyc│ │ ├── README│ │ ├── setup.py│ │ ├── setup.pyc│ │ ├── timeutils.py│ │ ├── timeutils.pyc│ │ ├── version.py│ │ └── version.pyc│ ├── __init__.py│ └── __init__.pyc├── registry│ ├── api│ │ ├── __init__.py│ │ ├── __init__.pyc│ │ └── v1│ │ ├── images.py│ │ ├── images.pyc│ │ ├── __init__.py│ │ ├── __init__.pyc│ │ ├── members.py│ │ └── members.pyc│ ├── client.py│ ├── client.pyc│ ├── image_info.py│ ├── image_info.pyc│ ├── __init__.py│ └── __init__.pyc├── schema.py├── schema.pyc├── store│ ├── base.py│ ├── base.pyc│ ├── chunkcache│ │ ├── cache.py│ │ ├── cache.pyc│ │ ├── fake.py│ │ ├── __init__.py│ │ ├── __init__.pyc│ │ ├── memcached.py│ │ └── prune_strategy│ │ ├── fake.py│ │ ├── fifo.py│ │ ├── __init__.py│ │ ├── lfu.py│ │ └── lru.py│ ├── chunksos│ │ ├── __init__.py│ │ ├── nos.py│ │ └── swift.py│ ├── chunkstore.py│ ├── chunkstore.pyc│ ├── filesystem.py│ ├── filesystem.pyc│ ├── http.py│ ├── http.pyc│ ├── __init__.py│ ├── __init__.pyc│ ├── location.py│ ├── location.pyc│ ├── rbd.py│ ├── rbd.pyc│ ├── s3.py│ ├── s3.pyc│ ├── scrubber.py│ ├── swift.py│ └── swift.pyc├── tests│ ├── etc│ │ ├── policy.json│ │ └── schema-image.json│ ├── functional│ │ ├── db│ │ │ ├── __init__.py│ │ │ ├── test_simple.py│ │ │ └── test_sqlalchemy.py│ │ ├── __init__.py│ │ ├── store_utils.py│ │ ├── test_api.py│ │ ├── test_bin_glance_control.py│ │ ├── test_bin_glance.py│ │ ├── test_cache_middleware.py│ │ ├── test_client_exceptions.py│ │ ├── test_client_redirects.py│ │ ├── test_glance_manage.py│ │ ├── test_logging.py│ │ ├── test_scrubber.py│ │ ├── test_sqlite.py│ │ ├── v1│ │ │ ├── __init__.py│ │ │ ├── test_api.py│ │ │ ├── test_bin_glance_cache_manage.py│ │ │ ├── test_copy_to_file.py│ │ │ ├── test_misc.py│ │ │ ├── test_multiprocessing.py│ │ │ ├── test_rbd.py│ │ │ ├── test_s3.py│ │ │ ├── test_ssl.py│ │ │ └── test_swift.py│ │ └── v2│ │ ├── __init__.py│ │ ├── test_images.py│ │ └── test_schemas.py│ ├── __init__.py│ ├── logcapture.py│ ├── stubs.py│ ├── unit│ │ ├── base.py│ │ ├── common│ │ │ ├── __init__.py│ │ │ ├── lock│ │ │ │ ├── __init__.py│ │ │ │ ├── test_delete_lock.py│ │ │ │ ├── test_read_lock.py│ │ │ │ └── test_write_lock.py│ │ │ └── test_exception.py│ │ ├── __init__.py│ │ ├── test_auth.py│ │ ├── test_cache_middleware.py│ │ ├── test_chunkcache.py│ │ ├── test_chunkstore.py│ │ ├── test_clients.py│ │ ├── test_config.py│ │ ├── test_context_middleware.py│ │ ├── test_context.py│ │ ├── test_filesystem_store.py│ │ ├── test_glance_replicator.py│ │ ├── test_http_store.py│ │ ├── test_image_cache.py│ │ ├── test_image_delete.py│ │ ├── test_migrations.conf│ │ ├── test_migrations.py│ │ ├── test_misc.py│ │ ├── test_notifier.py│ │ ├── test_policy.py│ │ ├── test_s3_store.py│ │ ├── test_schema.py│ │ ├── test_skip_examples.py│ │ ├── test_store_location.py│ │ ├── test_swift_store.py│ │ ├── test_utils.py│ │ ├── test_versions.py│ │ ├── test_wsgi.py│ │ ├── utils.py│ │ ├── v1│ │ │ ├── __init__.py│ │ │ └── test_api.py│ │ └── v2│ │ ├── __init__.py│ │ ├── test_image_data_resource.py│ │ ├── test_images_resource.py│ │ ├── test_image_tags_resource.py│ │ └── test_schemas_resource.py│ ├── utils.py│ └── var│ ├── ca.crt│ ├── certificate.crt│ └── privatekey.key├── versioninfo├── version.py└── version.pyc