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