glance文件组织关系

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

├── 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将OSS文件上传到OpenStack Glance,你需要使用阿里云OSS SDK下载文件,并使用OpenStack Glance的API将文件上传为镜像。以下是一个示例代码,演示了如何使用阿里云OSS Go SDK和OpenStack Go SDK完成此操作: ```go package main import ( "fmt" "io/ioutil" "os" "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/gophercloud/gophercloud" "github.com/gophercloud/gophercloud/auth/aksk" "github.com/gophercloud/gophercloud/openstack" "github.com/gophercloud/gophercloud/openstack/imageservice/v2/images" ) func main() { // 配置阿里云OSS连接 ossEndpoint := "your-oss-endpoint" ossAccessKey := "your-oss-access-key" ossAccessSecret := "your-oss-access-secret" bucketName := "your-bucket-name" objectKey := "your-object-key" // 创建OSS客户端 client, err := oss.New(ossEndpoint, ossAccessKey, ossAccessSecret) if err != nil { fmt.Println("Failed to create OSS client: ", err) return } // 从OSS下载镜像文件 tempFile, err := ioutil.TempFile("", "image") if err != nil { fmt.Println("Failed to create temporary file: ", err) return } defer os.Remove(tempFile.Name()) err = client.GetObjectToFile(bucketName, objectKey, tempFile.Name()) if err != nil { fmt.Println("Failed to download image from OSS: ", err) return } // 配置OpenStack连接 openStackAuthURL := "your-openstack-auth-url" openStackUsername := "your-openstack-username" openStackPassword := "your-openstack-password" openStackTenantID := "your-openstack-tenant-id" opts := gophercloud.AuthOptions{ IdentityEndpoint: openStackAuthURL, Username: openStackUsername, Password: openStackPassword, TenantID: openStackTenantID, } provider, err := openstack.AuthenticatedClient(opts) if err != nil { fmt.Println("Failed to authenticate with OpenStack: ", err) return } // 创建OpenStack Image Service客户端 imageClient, err := openstack.NewImageServiceV2(provider, gophercloud.EndpointOpts{}) if err != nil { fmt.Println("Failed to create OpenStack Image Service client: ", err) return } // 创建Glance镜像 image, err := images.Create(imageClient, images.CreateOpts{ Name: "imported-image", DiskFormat: "qcow2", ContainerFormat: "bare", Visibility: images.Public, }).Extract() if err != nil { fmt.Println("Failed to create Glance image: ", err) return } // 上传镜像到Glance imageData, err := os.Open(tempFile.Name()) if err != nil { fmt.Println("Failed to open image file: ", err) return } defer imageData.Close() err = images.Upload(imageClient, image.ID, imageData).ExtractErr() if err != nil { fmt.Println("Failed to upload image to Glance: ", err) return } fmt.Println("Image upload completed successfully!") } ``` 确保替换示例代码中的"your-oss-endpoint"、"your-oss-access-key"、"your-oss-access-secret"、"your-bucket-name"、"your-object-key"、"your-openstack-auth-url"、"your-openstack-username"、"your-openstack-password"和"your-openstack-tenant-id"参数为你的实际值。 这段示例代码中使用了阿里云OSS Go SDK和OpenStack Go SDK来实现从OSS下载文件并将其上传到OpenStack Glance。首先,它通过阿里云OSS Go SDK从OSS下载镜像文件到本地临时文件。然后,通过OpenStack Go SDK创建Glance镜像,并使用Glance API将镜像文件上传到Glance。 请确保你已经安装了所需的Go SDK并正确配置了相关的认证信息和权限。如有任何疑问,请参考相关SDK的文档或与社区进行进一步交流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值