.学习一个新的模块,先要学习理解各个文件主要功能以及相互配合的逻辑关系图。先简单列出来,后面回头分析逻辑关系。
├── 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