<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-IE" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Im having an issue with glance-registry.conf I can create snapshots from admin login where only admin can see the instance snapshots,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">But when other users in different tenants try to create a snapshot they can’t see their own snapshots
<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I found a misconfiguration where in glance-registry.conf flavor = keystone was not set but when i uncomment flavor = keystone and restart glance-registry.conf i get the following:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">2015-10-27 09:16:39.265 25047 INFO eventlet.wsgi.server [-] (25047) wsgi starting up on http://0.0.0.0:9191/<o:p></o:p></p>
<p class="MsoNormal">2015-10-27 09:16:39.273 25048 INFO eventlet.wsgi.server [-] (25048) wsgi starting up on http://0.0.0.0:9191/<o:p></o:p></p>
<p class="MsoNormal">2015-10-27 09:16:39.273 25039 INFO glance.common.wsgi [-] Started child 25048<o:p></o:p></p>
<p class="MsoNormal">2015-10-27 09:16:40.882 25047 WARNING keystonemiddleware.auth_token [-] Unable to find authentication token in headers<o:p></o:p></p>
<p class="MsoNormal">2015-10-27 09:16:40.885 25047 INFO eventlet.wsgi.server [-] 172.16.1.16 - - [27/Oct/2015 09:16:40] "OPTIONS / HTTP/1.0" 401 213 0.004707<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Please note registry host pointing to vip 172.16.1.250 <o:p>
</o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">3 controllers are behind this VIP and all correct ports settings setup in haproxy.cfg<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">My glance-api.conf:<o:p></o:p></p>
<p class="MsoNormal">[DEFAULT]<o:p></o:p></p>
<p class="MsoNormal">default_store = rbd<o:p></o:p></p>
<p class="MsoNormal">notification_driver = messagingv2<o:p></o:p></p>
<p class="MsoNormal">rpc_backend = rabbit<o:p></o:p></p>
<p class="MsoNormal">rabbit_hosts = kloud-rabbit1,kloud-rabbit2,kloud-rabbit3<o:p></o:p></p>
<p class="MsoNormal">rabbit_userid = openstack<o:p></o:p></p>
<p class="MsoNormal">rabbit_password = openstack<o:p></o:p></p>
<p class="MsoNormal">show_image_direct_url = True<o:p></o:p></p>
<p class="MsoNormal">verbose = True<o:p></o:p></p>
<p class="MsoNormal">auth_strategy = keystone<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Address to bind the API server<o:p></o:p></p>
<p class="MsoNormal">bind_host = 0.0.0.0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Port the bind the API server to<o:p></o:p></p>
<p class="MsoNormal">bind_port = 9292<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Log to this file. Make sure you do not set the same log file for both the API<o:p></o:p></p>
<p class="MsoNormal"># and registry servers!<o:p></o:p></p>
<p class="MsoNormal">#<o:p></o:p></p>
<p class="MsoNormal"># If `log_file` is omitted and `use_syslog` is false, then log messages are<o:p></o:p></p>
<p class="MsoNormal"># sent to stdout as a fallback.<o:p></o:p></p>
<p class="MsoNormal">log_file = /var/log/glance/api.log<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Backlog requests when creating socket<o:p></o:p></p>
<p class="MsoNormal">backlog = 4096<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># TCP_KEEPIDLE value in seconds when creating socket.<o:p></o:p></p>
<p class="MsoNormal"># Not supported on OS X.<o:p></o:p></p>
<p class="MsoNormal">#tcp_keepidle = 600<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># API to use for accessing data. Default value points to sqlalchemy<o:p></o:p></p>
<p class="MsoNormal"># package, it is also possible to use: glance.db.registry.api<o:p></o:p></p>
<p class="MsoNormal"># data_api = glance.db.sqlalchemy.api<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The number of child process workers that will be<o:p></o:p></p>
<p class="MsoNormal"># created to service API requests. The default will be<o:p></o:p></p>
<p class="MsoNormal"># equal to the number of CPUs available. (integer value)<o:p></o:p></p>
<p class="MsoNormal">#workers = 4<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Maximum line size of message headers to be accepted.<o:p></o:p></p>
<p class="MsoNormal"># max_header_line may need to be increased when using large tokens<o:p></o:p></p>
<p class="MsoNormal"># (typically those generated by the Keystone v3 API with big service<o:p></o:p></p>
<p class="MsoNormal"># catalogs)<o:p></o:p></p>
<p class="MsoNormal"># max_header_line = 16384<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Role used to identify an authenticated user as administrator<o:p></o:p></p>
<p class="MsoNormal">#admin_role = admin<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Allow unauthenticated users to access the API with read-only<o:p></o:p></p>
<p class="MsoNormal"># privileges. This only applies when using ContextMiddleware.<o:p></o:p></p>
<p class="MsoNormal">#allow_anonymous_access = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Allow access to version 1 of glance api<o:p></o:p></p>
<p class="MsoNormal">#enable_v1_api = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Allow access to version 2 of glance api<o:p></o:p></p>
<p class="MsoNormal">#enable_v2_api = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Return the URL that references where the data is stored on<o:p></o:p></p>
<p class="MsoNormal"># the backend storage system.  For example, if using the<o:p></o:p></p>
<p class="MsoNormal"># file system store a URL of 'file:///path/to/image' will<o:p></o:p></p>
<p class="MsoNormal"># be returned to the user in the 'direct_url' meta-data field.<o:p></o:p></p>
<p class="MsoNormal"># The default value is false.<o:p></o:p></p>
<p class="MsoNormal">#show_image_direct_url = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Send headers containing user and tenant information when making requests to<o:p></o:p></p>
<p class="MsoNormal"># the v1 glance registry. This allows the registry to function as if a user is<o:p></o:p></p>
<p class="MsoNormal"># authenticated without the need to authenticate a user itself using the<o:p></o:p></p>
<p class="MsoNormal"># auth_token middleware.<o:p></o:p></p>
<p class="MsoNormal"># The default value is false.<o:p></o:p></p>
<p class="MsoNormal">#send_identity_headers = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Supported values for the 'container_format' image attribute<o:p></o:p></p>
<p class="MsoNormal">#container_formats=ami,ari,aki,bare,ovf,ova<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Supported values for the 'disk_format' image attribute<o:p></o:p></p>
<p class="MsoNormal">#disk_formats=ami,ari,aki,vhd,vmdk,raw,qcow2,vdi,iso<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Property Protections config file<o:p></o:p></p>
<p class="MsoNormal"># This file contains the rules for property protections and the roles/policies<o:p></o:p></p>
<p class="MsoNormal"># associated with it.<o:p></o:p></p>
<p class="MsoNormal"># If this config value is not specified, by default, property protections<o:p></o:p></p>
<p class="MsoNormal"># won't be enforced.<o:p></o:p></p>
<p class="MsoNormal"># If a value is specified and the file is not found, then the glance-api<o:p></o:p></p>
<p class="MsoNormal"># service will not start.<o:p></o:p></p>
<p class="MsoNormal">#property_protection_file =<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Specify whether 'roles' or 'policies' are used in the<o:p></o:p></p>
<p class="MsoNormal"># property_protection_file.<o:p></o:p></p>
<p class="MsoNormal"># The default value for property_protection_rule_format is 'roles'.<o:p></o:p></p>
<p class="MsoNormal">#property_protection_rule_format = roles<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># This value sets what strategy will be used to determine the image location<o:p></o:p></p>
<p class="MsoNormal"># order. Currently two strategies are packaged with Glance 'location_order'<o:p></o:p></p>
<p class="MsoNormal"># and 'store_type'.<o:p></o:p></p>
<p class="MsoNormal">#location_strategy = location_order<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Public url to use for versions endpoint. The default is None,<o:p></o:p></p>
<p class="MsoNormal"># which will use the request's host_url attribute to populate the URL base.<o:p></o:p></p>
<p class="MsoNormal"># If Glance is operating behind a proxy, you will want to change this to<o:p></o:p></p>
<p class="MsoNormal"># represent the proxy's URL.<o:p></o:p></p>
<p class="MsoNormal">#public_endpoint=<None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># http_keepalive option. If False, server will return the header<o:p></o:p></p>
<p class="MsoNormal"># "Connection: close", If True, server will return "Connection: Keep-Alive"<o:p></o:p></p>
<p class="MsoNormal"># in its responses. In order to close the client socket connection<o:p></o:p></p>
<p class="MsoNormal"># explicitly after the response is sent and read successfully by the client,<o:p></o:p></p>
<p class="MsoNormal"># you simply have to set this option to False when you create a wsgi server.<o:p></o:p></p>
<p class="MsoNormal">#http_keepalive = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ================= Syslog Options ============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Send logs to syslog (/dev/log) instead of to file specified<o:p></o:p></p>
<p class="MsoNormal"># by `log_file`<o:p></o:p></p>
<p class="MsoNormal">#use_syslog = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Facility to use. If unset defaults to LOG_USER.<o:p></o:p></p>
<p class="MsoNormal">#syslog_log_facility = LOG_LOCAL0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ================= SSL Options ===============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Certificate file to use when starting API server securely<o:p></o:p></p>
<p class="MsoNormal">#cert_file = /path/to/certfile<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Private key file to use when starting API server securely<o:p></o:p></p>
<p class="MsoNormal">#key_file = /path/to/keyfile<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># CA certificate file to use to verify connecting clients<o:p></o:p></p>
<p class="MsoNormal">#ca_file = /path/to/cafile<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ================= Security Options ==========================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># AES key for encrypting store 'location' metadata, including<o:p></o:p></p>
<p class="MsoNormal"># -- if used -- Swift or S3 credentials<o:p></o:p></p>
<p class="MsoNormal"># Should be set to a random string of length 16, 24 or 32 bytes<o:p></o:p></p>
<p class="MsoNormal">#metadata_encryption_key = <16, 24 or 32 char registry metadata key><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Digest algorithm which will be used for digital signature, the default is<o:p></o:p></p>
<p class="MsoNormal"># sha1 in Kilo for a smooth upgrade process, and it will be updated with<o:p></o:p></p>
<p class="MsoNormal"># sha256 in next release(L). Use command<o:p></o:p></p>
<p class="MsoNormal"># "openssl list-message-digest-algorithms" to get the available algorithms<o:p></o:p></p>
<p class="MsoNormal"># supported by the version of OpenSSL on the platform. Examples are 'sha1',<o:p></o:p></p>
<p class="MsoNormal"># 'sha256', 'sha512', etc.<o:p></o:p></p>
<p class="MsoNormal">#digest_algorithm = sha1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ============ Registry Options ===============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Address to find the registry server<o:p></o:p></p>
<p class="MsoNormal">registry_host = 172.16.1.250<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Port the registry server is listening on<o:p></o:p></p>
<p class="MsoNormal">registry_port = 9191<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># What protocol to use when connecting to the registry server?<o:p></o:p></p>
<p class="MsoNormal"># Set to https for secure HTTP communication<o:p></o:p></p>
<p class="MsoNormal">registry_client_protocol = http<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The path to the key file to use in SSL connections to the<o:p></o:p></p>
<p class="MsoNormal"># registry server, if any. Alternately, you may set the<o:p></o:p></p>
<p class="MsoNormal"># GLANCE_CLIENT_KEY_FILE environ variable to a filepath of the key file<o:p></o:p></p>
<p class="MsoNormal">#registry_client_key_file = /path/to/key/file<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The path to the cert file to use in SSL connections to the<o:p></o:p></p>
<p class="MsoNormal"># registry server, if any. Alternately, you may set the<o:p></o:p></p>
<p class="MsoNormal"># GLANCE_CLIENT_CERT_FILE environ variable to a filepath of the cert file<o:p></o:p></p>
<p class="MsoNormal">#registry_client_cert_file = /path/to/cert/file<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The path to the certifying authority cert file to use in SSL connections<o:p></o:p></p>
<p class="MsoNormal"># to the registry server, if any. Alternately, you may set the<o:p></o:p></p>
<p class="MsoNormal"># GLANCE_CLIENT_CA_FILE environ variable to a filepath of the CA cert file<o:p></o:p></p>
<p class="MsoNormal">#registry_client_ca_file = /path/to/ca/file<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># When using SSL in connections to the registry server, do not require<o:p></o:p></p>
<p class="MsoNormal"># validation via a certifying authority. This is the registry's equivalent of<o:p></o:p></p>
<p class="MsoNormal"># specifying --insecure on the command line using glanceclient for the API<o:p></o:p></p>
<p class="MsoNormal"># Default: False<o:p></o:p></p>
<p class="MsoNormal">#registry_client_insecure = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The period of time, in seconds, that the API server will wait for a registry<o:p></o:p></p>
<p class="MsoNormal"># request to complete. A value of '0' implies no timeout.<o:p></o:p></p>
<p class="MsoNormal"># Default: 600<o:p></o:p></p>
<p class="MsoNormal">#registry_client_timeout = 600<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Enable DEBUG log messages from sqlalchemy which prints every database<o:p></o:p></p>
<p class="MsoNormal"># query and response.<o:p></o:p></p>
<p class="MsoNormal"># Default: False<o:p></o:p></p>
<p class="MsoNormal">#sqlalchemy_debug = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Pass the user's token through for API requests to the registry.<o:p></o:p></p>
<p class="MsoNormal"># Default: True<o:p></o:p></p>
<p class="MsoNormal">#use_user_token = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If 'use_user_token' is not in effect then admin credentials<o:p></o:p></p>
<p class="MsoNormal"># can be specified. Requests to the registry on behalf of<o:p></o:p></p>
<p class="MsoNormal"># the API will use these credentials.<o:p></o:p></p>
<p class="MsoNormal"># Admin user name<o:p></o:p></p>
<p class="MsoNormal">#admin_user = None<o:p></o:p></p>
<p class="MsoNormal"># Admin password<o:p></o:p></p>
<p class="MsoNormal">#admin_password = None<o:p></o:p></p>
<p class="MsoNormal"># Admin tenant name<o:p></o:p></p>
<p class="MsoNormal">#admin_tenant_name = None<o:p></o:p></p>
<p class="MsoNormal"># Keystone endpoint<o:p></o:p></p>
<p class="MsoNormal">#auth_url = None<o:p></o:p></p>
<p class="MsoNormal"># Keystone region<o:p></o:p></p>
<p class="MsoNormal">#auth_region = None<o:p></o:p></p>
<p class="MsoNormal"># Auth strategy<o:p></o:p></p>
<p class="MsoNormal">#auth_strategy = keystone<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ============ Notification System Options =====================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Driver or drivers to handle sending notifications. Set to<o:p></o:p></p>
<p class="MsoNormal"># 'messaging' to send notifications to a message queue.<o:p></o:p></p>
<p class="MsoNormal"># notification_driver = noop<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Default publisher_id for outgoing notifications.<o:p></o:p></p>
<p class="MsoNormal"># default_publisher_id = image.localhost<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># List of disabled notifications. A notification can be given either as a<o:p></o:p></p>
<p class="MsoNormal"># notification type to disable a single event, or as a notification group<o:p></o:p></p>
<p class="MsoNormal"># prefix to disable all events within a group.<o:p></o:p></p>
<p class="MsoNormal"># Example: if this config option is set to<o:p></o:p></p>
<p class="MsoNormal"># ["image.create", "metadef_namespace"], then "image.create" notification will<o:p></o:p></p>
<p class="MsoNormal"># not be sent after image is created and none of the notifications for<o:p></o:p></p>
<p class="MsoNormal"># metadefinition namespaces will be sent.<o:p></o:p></p>
<p class="MsoNormal"># disabled_notifications = []<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Messaging driver used for 'messaging' notifications driver<o:p></o:p></p>
<p class="MsoNormal"># rpc_backend = 'rabbit'<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Configuration options if sending notifications via rabbitmq (these are<o:p></o:p></p>
<p class="MsoNormal"># the defaults)<o:p></o:p></p>
<p class="MsoNormal">rabbit_hosts = kloud-rabbit1,kloud-rabbit2,kloud-rabbit3<o:p></o:p></p>
<p class="MsoNormal">rabbit_port = 5672<o:p></o:p></p>
<p class="MsoNormal">rabbit_use_ssl = false<o:p></o:p></p>
<p class="MsoNormal">rabbit_userid = openstack<o:p></o:p></p>
<p class="MsoNormal">rabbit_password = openstack<o:p></o:p></p>
<p class="MsoNormal">rabbit_virtual_host = /<o:p></o:p></p>
<p class="MsoNormal">rabbit_notification_exchange = glance<o:p></o:p></p>
<p class="MsoNormal">rabbit_notification_topic = notifications<o:p></o:p></p>
<p class="MsoNormal">rabbit_durable_queues = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Configuration options if sending notifications via Qpid (these are<o:p></o:p></p>
<p class="MsoNormal"># the defaults)<o:p></o:p></p>
<p class="MsoNormal">qpid_notification_exchange = glance<o:p></o:p></p>
<p class="MsoNormal">qpid_notification_topic = notifications<o:p></o:p></p>
<p class="MsoNormal">qpid_hostname = localhost<o:p></o:p></p>
<p class="MsoNormal">qpid_port = 5672<o:p></o:p></p>
<p class="MsoNormal">qpid_username =<o:p></o:p></p>
<p class="MsoNormal">qpid_password =<o:p></o:p></p>
<p class="MsoNormal">qpid_sasl_mechanisms =<o:p></o:p></p>
<p class="MsoNormal">qpid_reconnect_timeout = 0<o:p></o:p></p>
<p class="MsoNormal">qpid_reconnect_limit = 0<o:p></o:p></p>
<p class="MsoNormal">qpid_reconnect_interval_min = 0<o:p></o:p></p>
<p class="MsoNormal">qpid_reconnect_interval_max = 0<o:p></o:p></p>
<p class="MsoNormal">qpid_reconnect_interval = 0<o:p></o:p></p>
<p class="MsoNormal">qpid_heartbeat = 5<o:p></o:p></p>
<p class="MsoNormal"># Set to 'ssl' to enable SSL<o:p></o:p></p>
<p class="MsoNormal">qpid_protocol = tcp<o:p></o:p></p>
<p class="MsoNormal">qpid_tcp_nodelay = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ============ Delayed Delete Options =============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Turn on/off delayed delete<o:p></o:p></p>
<p class="MsoNormal">delayed_delete = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Delayed delete time in seconds<o:p></o:p></p>
<p class="MsoNormal">scrub_time = 43200<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Directory that the scrubber will use to remind itself of what to delete<o:p></o:p></p>
<p class="MsoNormal"># Make sure this is also set in glance-scrubber.conf<o:p></o:p></p>
<p class="MsoNormal">scrubber_datadir = /var/lib/glance/scrubber<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># =============== Quota Options ==================================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The maximum number of image members allowed per image<o:p></o:p></p>
<p class="MsoNormal">#image_member_quota = 128<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The maximum number of image properties allowed per image<o:p></o:p></p>
<p class="MsoNormal">#image_property_quota = 128<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The maximum number of tags allowed per image<o:p></o:p></p>
<p class="MsoNormal">#image_tag_quota = 128<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The maximum number of locations allowed per image<o:p></o:p></p>
<p class="MsoNormal">#image_location_quota = 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Set a system wide quota for every user.  This value is the total number<o:p></o:p></p>
<p class="MsoNormal"># of bytes that a user can use across all storage systems.  A value of<o:p></o:p></p>
<p class="MsoNormal"># 0 means unlimited.<o:p></o:p></p>
<p class="MsoNormal">#user_storage_quota = 0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># =============== Image Cache Options =============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Base directory that the Image Cache uses<o:p></o:p></p>
<p class="MsoNormal">image_cache_dir = /var/lib/glance/image-cache/<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># =============== Policy Options ==================================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[oslo_policy]<o:p></o:p></p>
<p class="MsoNormal"># The JSON file that defines policies.<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/policy_file<o:p></o:p></p>
<p class="MsoNormal">#policy_file = policy.json<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Default rule. Enforced when a requested rule is not found.<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/policy_default_rule<o:p></o:p></p>
<p class="MsoNormal">#policy_default_rule = default<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Directories where policy configuration files are stored.<o:p></o:p></p>
<p class="MsoNormal"># They can be relative to any directory in the search path<o:p></o:p></p>
<p class="MsoNormal"># defined by the config_dir option, or absolute paths.<o:p></o:p></p>
<p class="MsoNormal"># The file defined by policy_file must exist for these<o:p></o:p></p>
<p class="MsoNormal"># directories to be searched.<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/policy_dirs<o:p></o:p></p>
<p class="MsoNormal">#policy_dirs = policy.d<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># =============== Database Options =================================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[database]<o:p></o:p></p>
<p class="MsoNormal"># The file name to use with SQLite (string value)<o:p></o:p></p>
<p class="MsoNormal">#sqlite_db = /var/lib/glance/glance.sqlite<o:p></o:p></p>
<p class="MsoNormal">connection = mysql://glance:Password12@172.16.1.250/glance<o:p></o:p></p>
<p class="MsoNormal"># If True, SQLite uses synchronous mode (boolean value)<o:p></o:p></p>
<p class="MsoNormal">#sqlite_synchronous = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The backend to use for db (string value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/db_backend<o:p></o:p></p>
<p class="MsoNormal">backend = sqlalchemy<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The SQLAlchemy connection string used to connect to the<o:p></o:p></p>
<p class="MsoNormal"># database (string value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_connection<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sql_connection<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [sql]/connection<o:p></o:p></p>
<p class="MsoNormal">#connection = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The SQL mode to be used for MySQL sessions. This option,<o:p></o:p></p>
<p class="MsoNormal"># including the default, overrides any server-set SQL mode. To<o:p></o:p></p>
<p class="MsoNormal"># use whatever SQL mode is set by the server configuration,<o:p></o:p></p>
<p class="MsoNormal"># set this to no value. Example: mysql_sql_mode= (string<o:p></o:p></p>
<p class="MsoNormal"># value)<o:p></o:p></p>
<p class="MsoNormal">#mysql_sql_mode = TRADITIONAL<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Timeout before idle sql connections are reaped (integer<o:p></o:p></p>
<p class="MsoNormal"># value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_idle_timeout<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sql_idle_timeout<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [sql]/idle_timeout<o:p></o:p></p>
<p class="MsoNormal">#idle_timeout = 3600<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Minimum number of SQL connections to keep open in a pool<o:p></o:p></p>
<p class="MsoNormal"># (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_min_pool_size<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sql_min_pool_size<o:p></o:p></p>
<p class="MsoNormal">#min_pool_size = 1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Maximum number of SQL connections to keep open in a pool<o:p></o:p></p>
<p class="MsoNormal"># (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_max_pool_size<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sql_max_pool_size<o:p></o:p></p>
<p class="MsoNormal">#max_pool_size = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Maximum db connection retries during startup. (setting -1<o:p></o:p></p>
<p class="MsoNormal"># implies an infinite retry count) (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_max_retries<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sql_max_retries<o:p></o:p></p>
<p class="MsoNormal">#max_retries = 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Interval between retries of opening a sql connection<o:p></o:p></p>
<p class="MsoNormal"># (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_retry_interval<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/reconnect_interval<o:p></o:p></p>
<p class="MsoNormal">#retry_interval = 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If set, use this value for max_overflow with sqlalchemy<o:p></o:p></p>
<p class="MsoNormal"># (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_max_overflow<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow<o:p></o:p></p>
<p class="MsoNormal">#max_overflow = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Verbosity of SQL debugging information. 0=None,<o:p></o:p></p>
<p class="MsoNormal"># 100=Everything (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_connection_debug<o:p></o:p></p>
<p class="MsoNormal">#connection_debug = 0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Add python stack traces to SQL as comment strings (boolean<o:p></o:p></p>
<p class="MsoNormal"># value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_connection_trace<o:p></o:p></p>
<p class="MsoNormal">#connection_trace = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If set, use this value for pool_timeout with sqlalchemy<o:p></o:p></p>
<p class="MsoNormal"># (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout<o:p></o:p></p>
<p class="MsoNormal">#pool_timeout = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Enable the experimental use of database reconnect on<o:p></o:p></p>
<p class="MsoNormal"># connection lost (boolean value)<o:p></o:p></p>
<p class="MsoNormal">#use_db_reconnect = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># seconds between db connection retries (integer value)<o:p></o:p></p>
<p class="MsoNormal">#db_retry_interval = 1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Whether to increase interval between db connection retries,<o:p></o:p></p>
<p class="MsoNormal"># up to db_max_retry_interval (boolean value)<o:p></o:p></p>
<p class="MsoNormal">#db_inc_retry_interval = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># max seconds between db connection retries, if<o:p></o:p></p>
<p class="MsoNormal"># db_inc_retry_interval is enabled (integer value)<o:p></o:p></p>
<p class="MsoNormal">#db_max_retry_interval = 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># maximum db connection retries before error is raised.<o:p></o:p></p>
<p class="MsoNormal"># (setting -1 implies an infinite retry count) (integer value)<o:p></o:p></p>
<p class="MsoNormal">#db_max_retries = 20<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[oslo_concurrency]<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Enables or disables inter-process locks. (boolean value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/disable_process_locking<o:p></o:p></p>
<p class="MsoNormal">#disable_process_locking = false<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Directory to use for lock files.  For security, the specified<o:p></o:p></p>
<p class="MsoNormal"># directory should only be writable by the user running the processes<o:p></o:p></p>
<p class="MsoNormal"># that need locking. It could be read from environment variable<o:p></o:p></p>
<p class="MsoNormal"># OSLO_LOCK_PATH. This setting needs to be the same for both<o:p></o:p></p>
<p class="MsoNormal"># glance-scrubber and glance-api service. Default to a temp directory.<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/lock_path (string value)<o:p></o:p></p>
<p class="MsoNormal">#lock_path = /tmp<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[keystone_authtoken]<o:p></o:p></p>
<p class="MsoNormal">auth_uri = http://172.16.1.250:5000<o:p></o:p></p>
<p class="MsoNormal">auth_url = http://172.16.1.250:35357<o:p></o:p></p>
<p class="MsoNormal">auth_plugin = password<o:p></o:p></p>
<p class="MsoNormal">project_domain_id = default<o:p></o:p></p>
<p class="MsoNormal">user_domain_id = default<o:p></o:p></p>
<p class="MsoNormal">project_name = service<o:p></o:p></p>
<p class="MsoNormal">username = glance<o:p></o:p></p>
<p class="MsoNormal">password = Password12<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[paste_deploy]<o:p></o:p></p>
<p class="MsoNormal"># Name of the paste configuration file that defines the available pipelines<o:p></o:p></p>
<p class="MsoNormal">#config_file = glance-api-paste.ini<o:p></o:p></p>
<p class="MsoNormal">flavor = keystone<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[store_type_location_strategy]<o:p></o:p></p>
<p class="MsoNormal"># The scheme list to use to get store preference order. The scheme must be<o:p></o:p></p>
<p class="MsoNormal"># registered by one of the stores defined by the 'stores' config option.<o:p></o:p></p>
<p class="MsoNormal"># This option will be applied when you using 'store_type' option as image<o:p></o:p></p>
<p class="MsoNormal"># location strategy defined by the 'location_strategy' config option.<o:p></o:p></p>
<p class="MsoNormal">#store_type_preference =<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[profiler]<o:p></o:p></p>
<p class="MsoNormal"># If False fully disable profiling feature.<o:p></o:p></p>
<p class="MsoNormal">#enabled = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If False doesn't trace SQL requests.<o:p></o:p></p>
<p class="MsoNormal">#trace_sqlalchemy = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[task]<o:p></o:p></p>
<p class="MsoNormal"># ================= Glance Tasks Options ============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Specifies how long (in hours) a task is supposed to live in the tasks DB<o:p></o:p></p>
<p class="MsoNormal"># after succeeding or failing before getting soft-deleted.<o:p></o:p></p>
<p class="MsoNormal"># The default value for task_time_to_live is 48 hours.<o:p></o:p></p>
<p class="MsoNormal"># task_time_to_live = 48<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Specifies which task executor to be used to run the task scripts.<o:p></o:p></p>
<p class="MsoNormal"># The default value for task_executor is taskflow.<o:p></o:p></p>
<p class="MsoNormal"># task_executor = taskflow<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Work dir for asynchronous task operations.  The directory set here<o:p></o:p></p>
<p class="MsoNormal"># will be used to operate over images - normally before they are<o:p></o:p></p>
<p class="MsoNormal"># imported in the destination store. When providing work dir, make sure<o:p></o:p></p>
<p class="MsoNormal"># enough space is provided for concurrent tasks to run efficiently<o:p></o:p></p>
<p class="MsoNormal"># without running out of space. A rough estimation can be done by<o:p></o:p></p>
<p class="MsoNormal"># multiplying the number of `max_workers` - or the N of workers running<o:p></o:p></p>
<p class="MsoNormal"># - by an average image size (e.g 500MB). The image size estimation<o:p></o:p></p>
<p class="MsoNormal"># should be done based on the average size in your deployment. Note that<o:p></o:p></p>
<p class="MsoNormal"># depending on the tasks running you may need to multiply this number by<o:p></o:p></p>
<p class="MsoNormal"># some factor depending on what the task does. For example, you may want<o:p></o:p></p>
<p class="MsoNormal"># to double the available size if image conversion is enabled. All this<o:p></o:p></p>
<p class="MsoNormal"># being said, remember these are just estimations and you should do them<o:p></o:p></p>
<p class="MsoNormal"># based on the worst case scenario and be prepared to act in case they<o:p></o:p></p>
<p class="MsoNormal"># were wrong.<o:p></o:p></p>
<p class="MsoNormal"># work_dir=None<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Specifies the maximum number of eventlet threads which can be spun up by<o:p></o:p></p>
<p class="MsoNormal"># the eventlet based task executor to perform execution of Glance tasks.<o:p></o:p></p>
<p class="MsoNormal"># DEPRECATED: Use [taskflow_executor]/max_workers instead.<o:p></o:p></p>
<p class="MsoNormal"># eventlet_executor_pool_size = 1000<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[taskflow_executor]<o:p></o:p></p>
<p class="MsoNormal"># The mode in which the engine will run. Can be 'default', 'serial',<o:p></o:p></p>
<p class="MsoNormal"># 'parallel' or 'worker-based'<o:p></o:p></p>
<p class="MsoNormal">#engine_mode = serial<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The number of parallel activities executed at the same time by<o:p></o:p></p>
<p class="MsoNormal"># the engine. The value can be greater than one when the engine mode is<o:p></o:p></p>
<p class="MsoNormal"># 'parallel' or 'worker-based', otherwise this value will be ignored.<o:p></o:p></p>
<p class="MsoNormal">#max_workers = 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[glance_store]<o:p></o:p></p>
<p class="MsoNormal"># List of which store classes and store class locations are<o:p></o:p></p>
<p class="MsoNormal"># currently known to glance at startup.<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/known_stores<o:p></o:p></p>
<p class="MsoNormal"># Existing but disabled stores:<o:p></o:p></p>
<p class="MsoNormal">#      glance.store.rbd.Store,<o:p></o:p></p>
<p class="MsoNormal">#      glance.store.s3.Store,<o:p></o:p></p>
<p class="MsoNormal">#      glance.store.swift.Store,<o:p></o:p></p>
<p class="MsoNormal">#      glance.store.sheepdog.Store,<o:p></o:p></p>
<p class="MsoNormal">#      glance.store.cinder.Store,<o:p></o:p></p>
<p class="MsoNormal">#      glance.store.gridfs.Store,<o:p></o:p></p>
<p class="MsoNormal">#      glance.store.vmware_datastore.Store,<o:p></o:p></p>
<p class="MsoNormal">#stores = glance.store.filesystem.Store,<o:p></o:p></p>
<p class="MsoNormal">#         glance.store.http.Store<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Which backend scheme should Glance use by default is not specified<o:p></o:p></p>
<p class="MsoNormal"># in a request to add a new image to Glance? Known schemes are determined<o:p></o:p></p>
<p class="MsoNormal"># by the stores option.<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/default_store<o:p></o:p></p>
<p class="MsoNormal"># Default: 'file'<o:p></o:p></p>
<p class="MsoNormal">default_store = rbd<o:p></o:p></p>
<p class="MsoNormal">#stores = rbd<o:p></o:p></p>
<p class="MsoNormal">stores = glance.store.rbd.Store, glance.store.filesystem.Store, glance.store.http.Store<o:p></o:p></p>
<p class="MsoNormal">rbd_store_pool = images<o:p></o:p></p>
<p class="MsoNormal">rbd_store_user = glance<o:p></o:p></p>
<p class="MsoNormal">rbd_store_ceph_conf = /etc/ceph/ceph.conf<o:p></o:p></p>
<p class="MsoNormal">rbd_store_chunk_size = 8<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ============ Filesystem Store Options ========================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Directory that the Filesystem backend store<o:p></o:p></p>
<p class="MsoNormal"># writes image data to<o:p></o:p></p>
<p class="MsoNormal">filesystem_store_datadir = /var/lib/glance/images/<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># A list of directories where image data can be stored.<o:p></o:p></p>
<p class="MsoNormal"># This option may be specified multiple times for specifying multiple store<o:p></o:p></p>
<p class="MsoNormal"># directories. Either one of filesystem_store_datadirs or<o:p></o:p></p>
<p class="MsoNormal"># filesystem_store_datadir option is required. A priority number may be given<o:p></o:p></p>
<p class="MsoNormal"># after each directory entry, separated by a ":".<o:p></o:p></p>
<p class="MsoNormal"># When adding an image, the highest priority directory will be selected, unless<o:p></o:p></p>
<p class="MsoNormal"># there is not enough space available in cases where the image size is already<o:p></o:p></p>
<p class="MsoNormal"># known. If no priority is given, it is assumed to be zero and the directory<o:p></o:p></p>
<p class="MsoNormal"># will be considered for selection last. If multiple directories have the same<o:p></o:p></p>
<p class="MsoNormal"># priority, then the one with the most free space available is selected.<o:p></o:p></p>
<p class="MsoNormal"># If same store is specified multiple times then BadStoreConfiguration<o:p></o:p></p>
<p class="MsoNormal"># exception will be raised.<o:p></o:p></p>
<p class="MsoNormal">#filesystem_store_datadirs = /var/lib/glance/images/:1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># A path to a JSON file that contains metadata describing the storage<o:p></o:p></p>
<p class="MsoNormal"># system.  When show_multiple_locations is True the information in this<o:p></o:p></p>
<p class="MsoNormal"># file will be returned with any location that is contained in this<o:p></o:p></p>
<p class="MsoNormal"># store.<o:p></o:p></p>
<p class="MsoNormal">#filesystem_store_metadata_file = None<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ============ Swift Store Options =============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Version of the authentication service to use<o:p></o:p></p>
<p class="MsoNormal"># Valid versions are '2' for keystone and '1' for swauth and rackspace<o:p></o:p></p>
<p class="MsoNormal">swift_store_auth_version = 2<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Address where the Swift authentication service lives<o:p></o:p></p>
<p class="MsoNormal"># Valid schemes are 'http://' and 'https://'<o:p></o:p></p>
<p class="MsoNormal"># If no scheme specified,  default to 'https://'<o:p></o:p></p>
<p class="MsoNormal"># For swauth, use something like '127.0.0.1:8080/v1.0/'<o:p></o:p></p>
<p class="MsoNormal">swift_store_auth_address = 127.0.0.1:5000/v2.0/<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># User to authenticate against the Swift authentication service<o:p></o:p></p>
<p class="MsoNormal"># If you use Swift authentication service, set it to 'account':'user'<o:p></o:p></p>
<p class="MsoNormal"># where 'account' is a Swift storage account and 'user'<o:p></o:p></p>
<p class="MsoNormal"># is a user in that account<o:p></o:p></p>
<p class="MsoNormal">swift_store_user = jdoe:jdoe<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Auth key for the user authenticating against the<o:p></o:p></p>
<p class="MsoNormal"># Swift authentication service<o:p></o:p></p>
<p class="MsoNormal">swift_store_key = a86850deb2742ec3cb41518e26aa2d89<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Container within the account that the account should use<o:p></o:p></p>
<p class="MsoNormal"># for storing images in Swift<o:p></o:p></p>
<p class="MsoNormal">swift_store_container = glance<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Do we create the container if it does not exist?<o:p></o:p></p>
<p class="MsoNormal">swift_store_create_container_on_put = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># What size, in MB, should Glance start chunking image files<o:p></o:p></p>
<p class="MsoNormal"># and do a large object manifest in Swift? By default, this is<o:p></o:p></p>
<p class="MsoNormal"># the maximum object size in Swift, which is 5GB<o:p></o:p></p>
<p class="MsoNormal">swift_store_large_object_size = 5120<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># swift_store_config_file = glance-swift.conf<o:p></o:p></p>
<p class="MsoNormal"># This file contains references for each of the configured<o:p></o:p></p>
<p class="MsoNormal"># Swift accounts/backing stores. If used, this option can prevent<o:p></o:p></p>
<p class="MsoNormal"># credentials being stored in the database. Using Swift references<o:p></o:p></p>
<p class="MsoNormal"># is disabled if this config is left blank.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The reference to the default Swift parameters to use for adding new images.<o:p></o:p></p>
<p class="MsoNormal"># default_swift_reference = 'ref1'<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># When doing a large object manifest, what size, in MB, should<o:p></o:p></p>
<p class="MsoNormal"># Glance write chunks to Swift? This amount of data is written<o:p></o:p></p>
<p class="MsoNormal"># to a temporary disk buffer during the process of chunking<o:p></o:p></p>
<p class="MsoNormal"># the image file, and the default is 200MB<o:p></o:p></p>
<p class="MsoNormal">swift_store_large_object_chunk_size = 200<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If set, the configured endpoint will be used. If None, the storage URL<o:p></o:p></p>
<p class="MsoNormal"># from the auth response will be used. The location of an object is<o:p></o:p></p>
<p class="MsoNormal"># obtained by appending the container and object to the configured URL.<o:p></o:p></p>
<p class="MsoNormal">#<o:p></o:p></p>
<p class="MsoNormal"># swift_store_endpoint = https://www.example.com/v1/not_a_container<o:p></o:p></p>
<p class="MsoNormal">#swift_store_endpoint =<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If set to True enables multi-tenant storage mode which causes Glance images<o:p></o:p></p>
<p class="MsoNormal"># to be stored in tenant specific Swift accounts.<o:p></o:p></p>
<p class="MsoNormal">#swift_store_multi_tenant = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If set to an integer value between 1 and 32, a single-tenant store will<o:p></o:p></p>
<p class="MsoNormal"># use multiple containers to store images. If set to the default value of 0,<o:p></o:p></p>
<p class="MsoNormal"># only a single container will be used. Multi-tenant stores are not affected<o:p></o:p></p>
<p class="MsoNormal"># by this option. The max number of containers that will be used to store<o:p></o:p></p>
<p class="MsoNormal"># images is approximately 16^N where N is the value of this option. Discuss<o:p></o:p></p>
<p class="MsoNormal"># the impact of this with your swift deployment team, as this option is only<o:p></o:p></p>
<p class="MsoNormal"># beneficial in the largest of deployments where swift rate limiting can lead<o:p></o:p></p>
<p class="MsoNormal"># to unwanted throttling on a single container.<o:p></o:p></p>
<p class="MsoNormal">#swift_store_multiple_containers_seed = 0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># A list of swift ACL strings that will be applied as both read and<o:p></o:p></p>
<p class="MsoNormal"># write ACLs to the containers created by Glance in multi-tenant<o:p></o:p></p>
<p class="MsoNormal"># mode. This grants the specified tenants/users read and write access<o:p></o:p></p>
<p class="MsoNormal"># to all newly created image objects. The standard swift ACL string<o:p></o:p></p>
<p class="MsoNormal"># formats are allowed, including:<o:p></o:p></p>
<p class="MsoNormal"># <tenant_id>:<username><o:p></o:p></p>
<p class="MsoNormal"># <tenant_name>:<username><o:p></o:p></p>
<p class="MsoNormal"># *:<username><o:p></o:p></p>
<p class="MsoNormal"># Multiple ACLs can be combined using a comma separated list, for<o:p></o:p></p>
<p class="MsoNormal"># example: swift_store_admin_tenants = service:glance,*:admin<o:p></o:p></p>
<p class="MsoNormal">#swift_store_admin_tenants =<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The region of the swift endpoint to be used for single tenant. This setting<o:p></o:p></p>
<p class="MsoNormal"># is only necessary if the tenant has multiple swift endpoints.<o:p></o:p></p>
<p class="MsoNormal">#swift_store_region =<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If set to False, disables SSL layer compression of https swift requests.<o:p></o:p></p>
<p class="MsoNormal"># Setting to 'False' may improve performance for images which are already<o:p></o:p></p>
<p class="MsoNormal"># in a compressed format, eg qcow2. If set to True, enables SSL layer<o:p></o:p></p>
<p class="MsoNormal"># compression (provided it is supported by the target swift proxy).<o:p></o:p></p>
<p class="MsoNormal">#swift_store_ssl_compression = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The number of times a Swift download will be retried before the<o:p></o:p></p>
<p class="MsoNormal"># request fails<o:p></o:p></p>
<p class="MsoNormal">#swift_store_retry_get_count = 0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Bypass SSL verification for Swift<o:p></o:p></p>
<p class="MsoNormal">#swift_store_auth_insecure = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The path to a CA certificate bundle file to use for SSL verification when<o:p></o:p></p>
<p class="MsoNormal"># communicating with Swift.<o:p></o:p></p>
<p class="MsoNormal">#swift_store_cacert =<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ============ S3 Store Options =============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Address where the S3 authentication service lives<o:p></o:p></p>
<p class="MsoNormal"># Valid schemes are 'http://' and 'https://'<o:p></o:p></p>
<p class="MsoNormal"># If no scheme specified,  default to 'http://'<o:p></o:p></p>
<p class="MsoNormal">s3_store_host = s3.amazonaws.com<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># User to authenticate against the S3 authentication service<o:p></o:p></p>
<p class="MsoNormal">s3_store_access_key = <20-char AWS access key><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Auth key for the user authenticating against the<o:p></o:p></p>
<p class="MsoNormal"># S3 authentication service<o:p></o:p></p>
<p class="MsoNormal">s3_store_secret_key = <40-char AWS secret key><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Container within the account that the account should use<o:p></o:p></p>
<p class="MsoNormal"># for storing images in S3. Note that S3 has a flat namespace,<o:p></o:p></p>
<p class="MsoNormal"># so you need a unique bucket name for your glance images. An<o:p></o:p></p>
<p class="MsoNormal"># easy way to do this is append your AWS access key to "glance".<o:p></o:p></p>
<p class="MsoNormal"># S3 buckets in AWS *must* be lowercased, so remember to lowercase<o:p></o:p></p>
<p class="MsoNormal"># your AWS access key if you use it in your bucket name below!<o:p></o:p></p>
<p class="MsoNormal">s3_store_bucket = <lowercased 20-char aws access key>glance<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Do we create the bucket if it does not exist?<o:p></o:p></p>
<p class="MsoNormal">s3_store_create_bucket_on_put = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># When sending images to S3, the data will first be written to a<o:p></o:p></p>
<p class="MsoNormal"># temporary buffer on disk. By default the platform's temporary directory<o:p></o:p></p>
<p class="MsoNormal"># will be used. If required, an alternative directory can be specified here.<o:p></o:p></p>
<p class="MsoNormal">#s3_store_object_buffer_dir = /path/to/dir<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># When forming a bucket url, boto will either set the bucket name as the<o:p></o:p></p>
<p class="MsoNormal"># subdomain or as the first token of the path. Amazon's S3 service will<o:p></o:p></p>
<p class="MsoNormal"># accept it as the subdomain, but Swift's S3 middleware requires it be<o:p></o:p></p>
<p class="MsoNormal"># in the path. Set this to 'path' or 'subdomain' - defaults to 'subdomain'.<o:p></o:p></p>
<p class="MsoNormal">#s3_store_bucket_url_format = subdomain<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Size, in MB, should S3 start chunking image files<o:p></o:p></p>
<p class="MsoNormal"># and do a multipart upload in S3. The default is 100MB.<o:p></o:p></p>
<p class="MsoNormal">#s3_store_large_object_size = 100<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Multipart upload part size, in MB, should S3 use when uploading<o:p></o:p></p>
<p class="MsoNormal"># parts. The size must be greater than or equal to<o:p></o:p></p>
<p class="MsoNormal"># 5MB. The default is 10MB.<o:p></o:p></p>
<p class="MsoNormal">#s3_store_large_object_chunk_size = 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The number of thread pools to perform a multipart upload<o:p></o:p></p>
<p class="MsoNormal"># in S3. The default is 10.<o:p></o:p></p>
<p class="MsoNormal">#s3_store_thread_pools = 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ============ RBD Store Options =============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Ceph configuration file path<o:p></o:p></p>
<p class="MsoNormal"># If using cephx authentication, this file should<o:p></o:p></p>
<p class="MsoNormal"># include a reference to the right keyring<o:p></o:p></p>
<p class="MsoNormal"># in a client.<USER> section<o:p></o:p></p>
<p class="MsoNormal">#rbd_store_ceph_conf = /etc/ceph/ceph.conf<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># RADOS user to authenticate as (only applicable if using cephx)<o:p></o:p></p>
<p class="MsoNormal"># If <None>, a default will be chosen based on the client. section<o:p></o:p></p>
<p class="MsoNormal"># in rbd_store_ceph_conf<o:p></o:p></p>
<p class="MsoNormal">#rbd_store_user = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># RADOS pool in which images are stored<o:p></o:p></p>
<p class="MsoNormal">#rbd_store_pool = images<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># RADOS images will be chunked into objects of this size (in megabytes).<o:p></o:p></p>
<p class="MsoNormal"># For best performance, this should be a power of two<o:p></o:p></p>
<p class="MsoNormal">#rbd_store_chunk_size = 8<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ============ Sheepdog Store Options =============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">sheepdog_store_address = localhost<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">sheepdog_store_port = 7000<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Images will be chunked into objects of this size (in megabytes).<o:p></o:p></p>
<p class="MsoNormal"># For best performance, this should be a power of two<o:p></o:p></p>
<p class="MsoNormal">sheepdog_store_chunk_size = 64<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ============ Cinder Store Options ===============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Info to match when looking for cinder in the service catalog<o:p></o:p></p>
<p class="MsoNormal"># Format is : separated values of the form:<o:p></o:p></p>
<p class="MsoNormal"># <service_type>:<service_name>:<endpoint_type> (string value)<o:p></o:p></p>
<p class="MsoNormal">#cinder_catalog_info = volume:cinder:publicURL<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Override service catalog lookup with template for cinder endpoint<o:p></o:p></p>
<p class="MsoNormal"># e.g. http://localhost:8776/v1/%(project_id)s (string value)<o:p></o:p></p>
<p class="MsoNormal">#cinder_endpoint_template = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Region name of this node (string value)<o:p></o:p></p>
<p class="MsoNormal">#os_region_name = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Location of ca certicates file to use for cinder client requests<o:p></o:p></p>
<p class="MsoNormal"># (string value)<o:p></o:p></p>
<p class="MsoNormal">#cinder_ca_certificates_file = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Number of cinderclient retries on failed http calls (integer value)<o:p></o:p></p>
<p class="MsoNormal">#cinder_http_retries = 3<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Allow to perform insecure SSL requests to cinder (boolean value)<o:p></o:p></p>
<p class="MsoNormal">#cinder_api_insecure = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ============ VMware Datastore Store Options =====================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ESX/ESXi or vCenter Server target system.<o:p></o:p></p>
<p class="MsoNormal"># The server value can be an IP address or a DNS name<o:p></o:p></p>
<p class="MsoNormal"># e.g. 127.0.0.1, 127.0.0.1:443, www.vmware-infra.com<o:p></o:p></p>
<p class="MsoNormal">#vmware_server_host = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Server username (string value)<o:p></o:p></p>
<p class="MsoNormal">#vmware_server_username = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Server password (string value)<o:p></o:p></p>
<p class="MsoNormal">#vmware_server_password = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Inventory path to a datacenter (string value)<o:p></o:p></p>
<p class="MsoNormal"># Value optional when vmware_server_ip is an ESX/ESXi host: if specified<o:p></o:p></p>
<p class="MsoNormal"># should be `ha-datacenter`.<o:p></o:p></p>
<p class="MsoNormal"># Deprecated in favor of vmware_datastores.<o:p></o:p></p>
<p class="MsoNormal">#vmware_datacenter_path = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Datastore associated with the datacenter (string value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated in favor of vmware_datastores.<o:p></o:p></p>
<p class="MsoNormal">#vmware_datastore_name = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># A list of datastores where the image can be stored.<o:p></o:p></p>
<p class="MsoNormal"># This option may be specified multiple times for specifying multiple<o:p></o:p></p>
<p class="MsoNormal"># datastores. Either one of vmware_datastore_name or vmware_datastores is<o:p></o:p></p>
<p class="MsoNormal"># required. The datastore name should be specified after its datacenter<o:p></o:p></p>
<p class="MsoNormal"># path, separated by ":". An optional weight may be given after the datastore<o:p></o:p></p>
<p class="MsoNormal"># name, separated again by ":". Thus, the required format becomes<o:p></o:p></p>
<p class="MsoNormal"># <datacenter_path>:<datastore_name>:<optional_weight>.<o:p></o:p></p>
<p class="MsoNormal"># When adding an image, the datastore with highest weight will be selected,<o:p></o:p></p>
<p class="MsoNormal"># unless there is not enough free space available in cases where the image size<o:p></o:p></p>
<p class="MsoNormal"># is already known. If no weight is given, it is assumed to be zero and the<o:p></o:p></p>
<p class="MsoNormal"># directory will be considered for selection last. If multiple datastores have<o:p></o:p></p>
<p class="MsoNormal"># the same weight, then the one with the most free space available is selected.<o:p></o:p></p>
<p class="MsoNormal">#vmware_datastores = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The number of times we retry on failures<o:p></o:p></p>
<p class="MsoNormal"># e.g., socket error, etc (integer value)<o:p></o:p></p>
<p class="MsoNormal">#vmware_api_retry_count = 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The interval used for polling remote tasks<o:p></o:p></p>
<p class="MsoNormal"># invoked on VMware ESX/VC server in seconds (integer value)<o:p></o:p></p>
<p class="MsoNormal">#vmware_task_poll_interval = 5<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Absolute path of the folder containing the images in the datastore<o:p></o:p></p>
<p class="MsoNormal"># (string value)<o:p></o:p></p>
<p class="MsoNormal">#vmware_store_image_dir = /openstack_glance<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Allow to perform insecure SSL requests to the target system (boolean value)<o:p></o:p></p>
<p class="MsoNormal">#vmware_api_insecure = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">MY glance-registry.conf:<o:p></o:p></p>
<p class="MsoNormal">[DEFAULT]<o:p></o:p></p>
<p class="MsoNormal">auth_strategy = keystone<o:p></o:p></p>
<p class="MsoNormal"># Show more verbose log output (sets INFO log level output)<o:p></o:p></p>
<p class="MsoNormal">#verbose = False<o:p></o:p></p>
<p class="MsoNormal">#notification_driver = noop<o:p></o:p></p>
<p class="MsoNormal">verbose = True<o:p></o:p></p>
<p class="MsoNormal">notification_driver = messagingv2<o:p></o:p></p>
<p class="MsoNormal">rpc_backend = rabbit<o:p></o:p></p>
<p class="MsoNormal">rabbit_hosts = kloud-rabbit1,kloud-rabbit2,kloud-rabbit3<o:p></o:p></p>
<p class="MsoNormal">rabbit_userid = openstack<o:p></o:p></p>
<p class="MsoNormal">rabbit_password = openstack<o:p></o:p></p>
<p class="MsoNormal"># Show debugging output in logs (sets DEBUG log level output)<o:p></o:p></p>
<p class="MsoNormal">debug = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Address to bind the registry server<o:p></o:p></p>
<p class="MsoNormal">bind_host = 0.0.0.0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Port the bind the registry server to<o:p></o:p></p>
<p class="MsoNormal">bind_port = 9191<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Log to this file. Make sure you do not set the same log file for both the API<o:p></o:p></p>
<p class="MsoNormal"># and registry servers!<o:p></o:p></p>
<p class="MsoNormal">#<o:p></o:p></p>
<p class="MsoNormal"># If `log_file` is omitted and `use_syslog` is false, then log messages are<o:p></o:p></p>
<p class="MsoNormal"># sent to stdout as a fallback.<o:p></o:p></p>
<p class="MsoNormal">log_file = /var/log/glance/registry.log<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Backlog requests when creating socket<o:p></o:p></p>
<p class="MsoNormal">backlog = 4096<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># TCP_KEEPIDLE value in seconds when creating socket.<o:p></o:p></p>
<p class="MsoNormal"># Not supported on OS X.<o:p></o:p></p>
<p class="MsoNormal">#tcp_keepidle = 600<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># API to use for accessing data. Default value points to sqlalchemy<o:p></o:p></p>
<p class="MsoNormal"># package.<o:p></o:p></p>
<p class="MsoNormal">#data_api = glance.db.sqlalchemy.api<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The number of child process workers that will be<o:p></o:p></p>
<p class="MsoNormal"># created to service Registry requests. The default will be<o:p></o:p></p>
<p class="MsoNormal"># equal to the number of CPUs available. (integer value)<o:p></o:p></p>
<p class="MsoNormal">#workers = None<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Enable Registry API versions individually or simultaneously<o:p></o:p></p>
<p class="MsoNormal">#enable_v1_registry = True<o:p></o:p></p>
<p class="MsoNormal">#enable_v2_registry = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Limit the api to return `param_limit_max` items in a call to a container. If<o:p></o:p></p>
<p class="MsoNormal"># a larger `limit` query param is provided, it will be reduced to this value.<o:p></o:p></p>
<p class="MsoNormal">api_limit_max = 1000<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If a `limit` query param is not provided in an api request, it will<o:p></o:p></p>
<p class="MsoNormal"># default to `limit_param_default`<o:p></o:p></p>
<p class="MsoNormal">limit_param_default = 25<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Role used to identify an authenticated user as administrator<o:p></o:p></p>
<p class="MsoNormal">#admin_role = admin<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Enable DEBUG log messages from sqlalchemy which prints every database<o:p></o:p></p>
<p class="MsoNormal"># query and response.<o:p></o:p></p>
<p class="MsoNormal"># Default: False<o:p></o:p></p>
<p class="MsoNormal">#sqlalchemy_debug = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># http_keepalive option. If False, server will return the header<o:p></o:p></p>
<p class="MsoNormal"># "Connection: close", If True, server will return "Connection: Keep-Alive"<o:p></o:p></p>
<p class="MsoNormal"># in its responses. In order to close the client socket connection<o:p></o:p></p>
<p class="MsoNormal"># explicitly after the response is sent and read successfully by the client,<o:p></o:p></p>
<p class="MsoNormal"># you simply have to set this option to False when you create a wsgi server.<o:p></o:p></p>
<p class="MsoNormal">#http_keepalive = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ================= Syslog Options ============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Send logs to syslog (/dev/log) instead of to file specified<o:p></o:p></p>
<p class="MsoNormal"># by `log_file`<o:p></o:p></p>
<p class="MsoNormal">#use_syslog = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Facility to use. If unset defaults to LOG_USER.<o:p></o:p></p>
<p class="MsoNormal">#syslog_log_facility = LOG_LOCAL1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ================= SSL Options ===============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Certificate file to use when starting registry server securely<o:p></o:p></p>
<p class="MsoNormal">#cert_file = /path/to/certfile<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Private key file to use when starting registry server securely<o:p></o:p></p>
<p class="MsoNormal">#key_file = /path/to/keyfile<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># CA certificate file to use to verify connecting clients<o:p></o:p></p>
<p class="MsoNormal">#ca_file = /path/to/cafile<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ============ Notification System Options =====================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Driver or drivers to handle sending notifications. Set to<o:p></o:p></p>
<p class="MsoNormal"># 'messaging' to send notifications to a message queue.<o:p></o:p></p>
<p class="MsoNormal"># notification_driver = noop<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Default publisher_id for outgoing notifications.<o:p></o:p></p>
<p class="MsoNormal"># default_publisher_id = image.localhost<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Messaging driver used for 'messaging' notifications driver<o:p></o:p></p>
<p class="MsoNormal"># rpc_backend = 'rabbit'<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Configuration options if sending notifications via rabbitmq (these are<o:p></o:p></p>
<p class="MsoNormal"># the defaults)<o:p></o:p></p>
<p class="MsoNormal">rabbit_host = localhost<o:p></o:p></p>
<p class="MsoNormal">rabbit_port = 5672<o:p></o:p></p>
<p class="MsoNormal">rabbit_use_ssl = false<o:p></o:p></p>
<p class="MsoNormal">rabbit_userid = guest<o:p></o:p></p>
<p class="MsoNormal">rabbit_password = guest<o:p></o:p></p>
<p class="MsoNormal">rabbit_virtual_host = /<o:p></o:p></p>
<p class="MsoNormal">rabbit_notification_exchange = glance<o:p></o:p></p>
<p class="MsoNormal">rabbit_notification_topic = notifications<o:p></o:p></p>
<p class="MsoNormal">rabbit_durable_queues = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Configuration options if sending notifications via Qpid (these are<o:p></o:p></p>
<p class="MsoNormal"># the defaults)<o:p></o:p></p>
<p class="MsoNormal">qpid_notification_exchange = glance<o:p></o:p></p>
<p class="MsoNormal">qpid_notification_topic = notifications<o:p></o:p></p>
<p class="MsoNormal">qpid_hostname = localhost<o:p></o:p></p>
<p class="MsoNormal">qpid_port = 5672<o:p></o:p></p>
<p class="MsoNormal">qpid_username =<o:p></o:p></p>
<p class="MsoNormal">qpid_password =<o:p></o:p></p>
<p class="MsoNormal">qpid_sasl_mechanisms =<o:p></o:p></p>
<p class="MsoNormal">qpid_reconnect_timeout = 0<o:p></o:p></p>
<p class="MsoNormal">qpid_reconnect_limit = 0<o:p></o:p></p>
<p class="MsoNormal">qpid_reconnect_interval_min = 0<o:p></o:p></p>
<p class="MsoNormal">qpid_reconnect_interval_max = 0<o:p></o:p></p>
<p class="MsoNormal">qpid_reconnect_interval = 0<o:p></o:p></p>
<p class="MsoNormal">qpid_heartbeat = 5<o:p></o:p></p>
<p class="MsoNormal"># Set to 'ssl' to enable SSL<o:p></o:p></p>
<p class="MsoNormal">qpid_protocol = tcp<o:p></o:p></p>
<p class="MsoNormal">qpid_tcp_nodelay = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># =============== Policy Options ==============================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[oslo_policy]<o:p></o:p></p>
<p class="MsoNormal"># The JSON file that defines policies.<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/policy_file<o:p></o:p></p>
<p class="MsoNormal">#policy_file = policy.json<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Default rule. Enforced when a requested rule is not found.<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/policy_default_rule<o:p></o:p></p>
<p class="MsoNormal">#policy_default_rule = default<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Directories where policy configuration files are stored.<o:p></o:p></p>
<p class="MsoNormal"># They can be relative to any directory in the search path<o:p></o:p></p>
<p class="MsoNormal"># defined by the config_dir option, or absolute paths.<o:p></o:p></p>
<p class="MsoNormal"># The file defined by policy_file must exist for these<o:p></o:p></p>
<p class="MsoNormal"># directories to be searched.<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/policy_dirs<o:p></o:p></p>
<p class="MsoNormal">#policy_dirs = policy.d<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># ================= Database Options ==========================<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[database]<o:p></o:p></p>
<p class="MsoNormal"># The file name to use with SQLite (string value)<o:p></o:p></p>
<p class="MsoNormal">#sqlite_db = /var/lib/glance/glance.sqlite<o:p></o:p></p>
<p class="MsoNormal">connection = mysql://glance:Password12@172.16.1.250/glance<o:p></o:p></p>
<p class="MsoNormal"># If True, SQLite uses synchronous mode (boolean value)<o:p></o:p></p>
<p class="MsoNormal">#sqlite_synchronous = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The backend to use for db (string value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/db_backend<o:p></o:p></p>
<p class="MsoNormal">backend = sqlalchemy<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The SQLAlchemy connection string used to connect to the<o:p></o:p></p>
<p class="MsoNormal"># database (string value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_connection<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sql_connection<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [sql]/connection<o:p></o:p></p>
<p class="MsoNormal">#connection = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># The SQL mode to be used for MySQL sessions. This option,<o:p></o:p></p>
<p class="MsoNormal"># including the default, overrides any server-set SQL mode. To<o:p></o:p></p>
<p class="MsoNormal"># use whatever SQL mode is set by the server configuration,<o:p></o:p></p>
<p class="MsoNormal"># set this to no value. Example: mysql_sql_mode= (string<o:p></o:p></p>
<p class="MsoNormal"># value)<o:p></o:p></p>
<p class="MsoNormal">#mysql_sql_mode = TRADITIONAL<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Timeout before idle sql connections are reaped (integer<o:p></o:p></p>
<p class="MsoNormal"># value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_idle_timeout<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sql_idle_timeout<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [sql]/idle_timeout<o:p></o:p></p>
<p class="MsoNormal">#idle_timeout = 3600<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Minimum number of SQL connections to keep open in a pool<o:p></o:p></p>
<p class="MsoNormal"># (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_min_pool_size<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sql_min_pool_size<o:p></o:p></p>
<p class="MsoNormal">#min_pool_size = 1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Maximum number of SQL connections to keep open in a pool<o:p></o:p></p>
<p class="MsoNormal"># (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_max_pool_size<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sql_max_pool_size<o:p></o:p></p>
<p class="MsoNormal">#max_pool_size = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Maximum db connection retries during startup. (setting -1<o:p></o:p></p>
<p class="MsoNormal"># implies an infinite retry count) (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_max_retries<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sql_max_retries<o:p></o:p></p>
<p class="MsoNormal">#max_retries = 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Interval between retries of opening a sql connection<o:p></o:p></p>
<p class="MsoNormal"># (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_retry_interval<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/reconnect_interval<o:p></o:p></p>
<p class="MsoNormal">#retry_interval = 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If set, use this value for max_overflow with sqlalchemy<o:p></o:p></p>
<p class="MsoNormal"># (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_max_overflow<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow<o:p></o:p></p>
<p class="MsoNormal">#max_overflow = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Verbosity of SQL debugging information. 0=None,<o:p></o:p></p>
<p class="MsoNormal"># 100=Everything (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_connection_debug<o:p></o:p></p>
<p class="MsoNormal">#connection_debug = 0<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Add python stack traces to SQL as comment strings (boolean<o:p></o:p></p>
<p class="MsoNormal"># value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DEFAULT]/sql_connection_trace<o:p></o:p></p>
<p class="MsoNormal">#connection_trace = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If set, use this value for pool_timeout with sqlalchemy<o:p></o:p></p>
<p class="MsoNormal"># (integer value)<o:p></o:p></p>
<p class="MsoNormal"># Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout<o:p></o:p></p>
<p class="MsoNormal">#pool_timeout = <None><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Enable the experimental use of database reconnect on<o:p></o:p></p>
<p class="MsoNormal"># connection lost (boolean value)<o:p></o:p></p>
<p class="MsoNormal">#use_db_reconnect = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># seconds between db connection retries (integer value)<o:p></o:p></p>
<p class="MsoNormal">#db_retry_interval = 1<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># Whether to increase interval between db connection retries,<o:p></o:p></p>
<p class="MsoNormal"># up to db_max_retry_interval (boolean value)<o:p></o:p></p>
<p class="MsoNormal">#db_inc_retry_interval = True<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># max seconds between db connection retries, if<o:p></o:p></p>
<p class="MsoNormal"># db_inc_retry_interval is enabled (integer value)<o:p></o:p></p>
<p class="MsoNormal">#db_max_retry_interval = 10<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># maximum db connection retries before error is raised.<o:p></o:p></p>
<p class="MsoNormal"># (setting -1 implies an infinite retry count) (integer value)<o:p></o:p></p>
<p class="MsoNormal">#db_max_retries = 20<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[keystone_authtoken]<o:p></o:p></p>
<p class="MsoNormal">auth_uri = http://172.16.1.250:5000<o:p></o:p></p>
<p class="MsoNormal">auth_url = http://172.16.1.250:35357<o:p></o:p></p>
<p class="MsoNormal">auth_plugin = password<o:p></o:p></p>
<p class="MsoNormal">project_domain_id = default<o:p></o:p></p>
<p class="MsoNormal">user_domain_id = default<o:p></o:p></p>
<p class="MsoNormal">project_name = service<o:p></o:p></p>
<p class="MsoNormal">username = glance<o:p></o:p></p>
<p class="MsoNormal">password = Password12<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[paste_deploy]<o:p></o:p></p>
<p class="MsoNormal"># Name of the paste configuration file that defines the available pipelines<o:p></o:p></p>
<p class="MsoNormal">flavor = keystone<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[profiler]<o:p></o:p></p>
<p class="MsoNormal"># If False fully disable profiling feature.<o:p></o:p></p>
<p class="MsoNormal">#enabled = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># If False doesn't trace SQL requests.<o:p></o:p></p>
<p class="MsoNormal">#trace_sqlalchemy = False<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Can anyone help me with this issue?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-IE">--<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-IE">Regards,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-IE">James Galvin,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-IE">Senior Engineer,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-IE">Servecentric Ltd.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><a href="http://www.servecentric.com/"><span style="color:windowtext;mso-fareast-language:EN-IE;text-decoration:none"><img border="0" width="216" height="35" id="Picture_x0020_1" src="cid:image001.png@01D11099.B436B560" alt="logo"></span></a><span style="mso-fareast-language:EN-IE"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-IE"><o:p> </o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
This e-mail contains confidential information or information belonging to Servecentric Ltd and is intended solely for the addressee(s). The unauthorized disclosure, use, dissemination or copy (either in whole or in part) of this e-mail, or any information it
 contains, is prohibited. Any views or opinions presented are solely those of the author and do not necessarily represent those of Servecentric Ltd. E-mails are susceptible to alteration and their integrity cannot be guaranteed. Servecentric shall not be liable
 for the contents of this e-mail if modified or falsified. If you are not the intended recipient of this e-mail, please delete it immediately from your system and notify the sender of the wrong delivery and of the email's deletion.
</body>
</html>