diff options
author | OpenStack Proposal Bot <openstack-infra@lists.openstack.org> | 2014-04-22 06:09:29 +0000 |
---|---|---|
committer | OpenStack Proposal Bot <openstack-infra@lists.openstack.org> | 2014-04-22 06:09:29 +0000 |
commit | 0529c3823faeff00bb74494c35a844b3abcceb74 (patch) | |
tree | 0705dc3736a258bfdbd7130c5e6d5dfeb7ce9c12 /heat/locale/zh_TW | |
parent | 635fad8ffbab10f5e1e75b0e7f5e4943c8b3218c (diff) | |
download | heat-0529c3823faeff00bb74494c35a844b3abcceb74.tar.gz |
Imported Translations from Transifex
Change-Id: I16caae565e2127e6f87536a8b21d6aa06bd53f53
Diffstat (limited to 'heat/locale/zh_TW')
-rw-r--r-- | heat/locale/zh_TW/LC_MESSAGES/heat.po | 2955 |
1 files changed, 1270 insertions, 1685 deletions
diff --git a/heat/locale/zh_TW/LC_MESSAGES/heat.po b/heat/locale/zh_TW/LC_MESSAGES/heat.po index a5e2c05cf..5feb76002 100644 --- a/heat/locale/zh_TW/LC_MESSAGES/heat.po +++ b/heat/locale/zh_TW/LC_MESSAGES/heat.po @@ -1,265 +1,265 @@ # Chinese (Traditional, Taiwan) translations for heat. -# Copyright (C) 2013 ORGANIZATION +# Copyright (C) 2014 ORGANIZATION # This file is distributed under the same license as the heat project. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. # -#, fuzzy +# Translators: msgid "" msgstr "" -"Project-Id-Version: heat 2013.2.a430.gd264018\n" +"Project-Id-Version: Heat\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2014-03-28 06:08+0000\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: zh_Hant_TW <LL@li.org>\n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"POT-Creation-Date: 2014-04-22 06:08+0000\n" +"PO-Revision-Date: 2014-04-21 17:21+0000\n" +"Last-Translator: openstackjenkins <jenkins@openstack.org>\n" +"Language-Team: Chinese (Taiwan) " +"(http://www.transifex.com/projects/p/openstack/language/zh_TW/)\n" +"Plural-Forms: nplurals=1; plural=0\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 1.3\n" -#: heat/api/aws/ec2token.py:38 +#: heat/api/aws/ec2token.py:37 msgid "Authentication Endpoint URI." msgstr "" -#: heat/api/aws/ec2token.py:41 heat/common/config.py:148 +#: heat/api/aws/ec2token.py:40 heat/common/config.py:150 msgid "Allow orchestration of multiple clouds." msgstr "" -#: heat/api/aws/ec2token.py:44 heat/common/config.py:151 +#: heat/api/aws/ec2token.py:43 heat/common/config.py:153 msgid "" "Allowed keystone endpoints for auth_uri when multi_cloud is enabled. At " "least one endpoint needs to be specified." msgstr "" -#: heat/api/aws/ec2token.py:129 +#: heat/api/aws/ec2token.py:128 #, python-format msgid "Attempt authorize on %s" msgstr "" -#: heat/api/aws/ec2token.py:132 +#: heat/api/aws/ec2token.py:131 #, python-format msgid "Authorize failed: %s" msgstr "" -#: heat/api/aws/ec2token.py:142 +#: heat/api/aws/ec2token.py:141 msgid "Checking AWS credentials.." msgstr "" -#: heat/api/aws/ec2token.py:149 +#: heat/api/aws/ec2token.py:148 msgid "No AWS Signature found." msgstr "" -#: heat/api/aws/ec2token.py:157 +#: heat/api/aws/ec2token.py:156 msgid "No AWSAccessKeyId/Authorization Credential" msgstr "" -#: heat/api/aws/ec2token.py:160 +#: heat/api/aws/ec2token.py:159 msgid "AWS credentials found, checking against keystone." msgstr "" -#: heat/api/aws/ec2token.py:163 +#: heat/api/aws/ec2token.py:162 msgid "Ec2Token authorization failed, no auth_uri specified in config file" msgstr "" -#: heat/api/aws/ec2token.py:165 +#: heat/api/aws/ec2token.py:164 msgid "Service misconfigured" msgstr "" -#: heat/api/aws/ec2token.py:188 +#: heat/api/aws/ec2token.py:187 #, python-format msgid "Authenticating with %s" msgstr "" -#: heat/api/aws/ec2token.py:196 +#: heat/api/aws/ec2token.py:195 msgid "AWS authentication successful." msgstr "" -#: heat/api/aws/ec2token.py:198 +#: heat/api/aws/ec2token.py:197 msgid "AWS authentication failure." msgstr "" -#: heat/api/aws/exception.py:35 +#: heat/api/aws/exception.py:36 msgid "Generic HeatAPIException, please use specific subclasses!" msgstr "" -#: heat/api/aws/exception.py:74 +#: heat/api/aws/exception.py:75 msgid "The request signature does not conform to AWS standards" msgstr "" -#: heat/api/aws/exception.py:83 +#: heat/api/aws/exception.py:84 msgid "The request processing has failed due to an internal error" msgstr "" -#: heat/api/aws/exception.py:94 +#: heat/api/aws/exception.py:95 msgid "The action or operation requested is invalid" msgstr "" -#: heat/api/aws/exception.py:103 +#: heat/api/aws/exception.py:104 msgid "The certificate or AWS Key ID provided does not exist" msgstr "" -#: heat/api/aws/exception.py:112 +#: heat/api/aws/exception.py:113 msgid "Incompatible parameters were used together" msgstr "" -#: heat/api/aws/exception.py:121 +#: heat/api/aws/exception.py:122 msgid "A bad or out-of-range value was supplied" msgstr "" -#: heat/api/aws/exception.py:130 +#: heat/api/aws/exception.py:131 msgid "AWS query string is malformed, does not adhere to AWS spec" msgstr "" -#: heat/api/aws/exception.py:140 +#: heat/api/aws/exception.py:141 msgid "The query string is malformed" msgstr "" -#: heat/api/aws/exception.py:149 +#: heat/api/aws/exception.py:150 msgid "The request is missing an action or operation parameter" msgstr "" -#: heat/api/aws/exception.py:159 +#: heat/api/aws/exception.py:160 msgid "Does not contain a valid AWS Access Key or certificate" msgstr "" -#: heat/api/aws/exception.py:168 +#: heat/api/aws/exception.py:169 msgid "A mandatory input parameter is missing" msgstr "" -#: heat/api/aws/exception.py:177 +#: heat/api/aws/exception.py:178 msgid "The AWS Access Key ID needs a subscription for the service" msgstr "" -#: heat/api/aws/exception.py:188 +#: heat/api/aws/exception.py:189 msgid "Request expired or more than 15mins in the future" msgstr "" -#: heat/api/aws/exception.py:197 +#: heat/api/aws/exception.py:198 msgid "Service temporarily unavailable" msgstr "" -#: heat/api/aws/exception.py:207 +#: heat/api/aws/exception.py:208 msgid "Request was denied due to request throttling" msgstr "" -#: heat/api/aws/exception.py:216 +#: heat/api/aws/exception.py:217 msgid "Resource with the name requested already exists" msgstr "" -#: heat/api/aws/exception.py:227 +#: heat/api/aws/exception.py:228 msgid "User is not authorized to perform action" msgstr "" -#: heat/api/aws/exception.py:237 +#: heat/api/aws/exception.py:238 msgid "" "The request signature we calculated does not match the signature you " "provided" msgstr "" -#: heat/api/aws/exception.py:248 +#: heat/api/aws/exception.py:249 msgid "The requested action is not yet implemented" msgstr "" -#: heat/api/aws/utils.py:106 +#: heat/api/aws/utils.py:105 #, python-format msgid "Request does not contain %s parameter!" msgstr "" -#: heat/api/cfn/v1/stacks.py:55 heat/api/cloudwatch/watch.py:49 +#: heat/api/cfn/v1/stacks.py:54 heat/api/cloudwatch/watch.py:48 #, python-format msgid "Action %s not allowed for user" msgstr "" -#: heat/api/cfn/v1/stacks.py:62 heat/api/cloudwatch/watch.py:56 +#: heat/api/cfn/v1/stacks.py:61 heat/api/cloudwatch/watch.py:55 #, python-format msgid "Error authorizing action %s" msgstr "" -#: heat/api/cfn/v1/stacks.py:258 +#: heat/api/cfn/v1/stacks.py:257 #, python-format msgid "Failed to fetch template: %s" msgstr "" -#: heat/api/cfn/v1/stacks.py:293 +#: heat/api/cfn/v1/stacks.py:292 msgid "DisableRollback and OnFailure may not be used together" msgstr "" -#: heat/api/cfn/v1/stacks.py:313 +#: heat/api/cfn/v1/stacks.py:312 #, python-format msgid "Unexpected action %(action)s" msgstr "" -#: heat/api/cfn/v1/stacks.py:331 heat/api/cfn/v1/stacks.py:413 +#: heat/api/cfn/v1/stacks.py:330 heat/api/cfn/v1/stacks.py:412 msgid "Invalid Template URL" msgstr "" -#: heat/api/cfn/v1/stacks.py:335 heat/api/cfn/v1/stacks.py:416 +#: heat/api/cfn/v1/stacks.py:334 heat/api/cfn/v1/stacks.py:415 msgid "TemplateBody or TemplateUrl were not given." msgstr "" -#: heat/api/cfn/v1/stacks.py:341 heat/api/cfn/v1/stacks.py:422 +#: heat/api/cfn/v1/stacks.py:340 heat/api/cfn/v1/stacks.py:421 msgid "The Template must be a JSON or YAML document." msgstr "" -#: heat/api/cfn/v1/stacks.py:383 +#: heat/api/cfn/v1/stacks.py:382 msgid "stack not not found" msgstr "" -#: heat/api/cloudwatch/watch.py:215 +#: heat/api/cloudwatch/watch.py:214 #, python-format msgid "Invalid filter key %s, ignoring" msgstr "" -#: heat/api/cloudwatch/watch.py:224 +#: heat/api/cloudwatch/watch.py:223 #, python-format msgid "filter parameters : %s" msgstr "" -#: heat/api/cloudwatch/watch.py:270 +#: heat/api/cloudwatch/watch.py:269 msgid "Request does not contain required MetricData" msgstr "" -#: heat/api/cloudwatch/watch.py:321 +#: heat/api/cloudwatch/watch.py:320 #, python-format msgid "Invalid state %(state)s, expecting one of %(expect)s" msgstr "" -#: heat/api/cloudwatch/watch.py:328 +#: heat/api/cloudwatch/watch.py:327 #, python-format msgid "setting %(name)s to %(state)s" msgstr "" -#: heat/api/middleware/version_negotiation.py:50 +#: heat/api/middleware/version_negotiation.py:49 #, python-format msgid "Processing request: %(method)s %(path)s Accept: %(accept)s" msgstr "" -#: heat/api/middleware/version_negotiation.py:65 +#: heat/api/middleware/version_negotiation.py:64 #, python-format msgid "Matched versioned URI. Version: %(major_version)d.%(minor_version)d" msgstr "" -#: heat/api/middleware/version_negotiation.py:73 +#: heat/api/middleware/version_negotiation.py:72 #, python-format msgid "" "Unknown version in versioned URI: %(major_version)d.%(minor_version)d. " "Returning version choices." msgstr "" -#: heat/api/middleware/version_negotiation.py:89 +#: heat/api/middleware/version_negotiation.py:88 #, python-format msgid "Matched versioned media type. Version: %(major_version)d.%(minor_version)d" msgstr "" -#: heat/api/middleware/version_negotiation.py:95 +#: heat/api/middleware/version_negotiation.py:94 #, python-format msgid "" "Unknown version in accept header: " "%(major_version)d.%(minor_version)d...returning version choices." msgstr "" -#: heat/api/middleware/version_negotiation.py:103 +#: heat/api/middleware/version_negotiation.py:102 #, python-format msgid "Unknown accept header: %s...returning HTTP not found." msgstr "" @@ -310,7 +310,12 @@ msgstr "" msgid "No template specified" msgstr "" -#: heat/api/openstack/v1/util.py:62 +#: heat/api/openstack/v1/stacks.py:185 +#, python-format +msgid "Old Engine Version: %s" +msgstr "" + +#: heat/api/openstack/v1/util.py:61 msgid "Invalid Stack address" msgstr "" @@ -322,53 +327,57 @@ msgstr "" msgid "Granularity to use for age argument, defaults to days." msgstr "" -#: heat/common/auth_url.py:43 +#: heat/common/auth_url.py:44 msgid "Request missing required header X-Auth-Url" msgstr "" -#: heat/common/auth_url.py:47 +#: heat/common/auth_url.py:48 #, python-format msgid "Header X-Auth-Url \"%s\" not an allowed endpoint" msgstr "" -#: heat/common/config.py:36 +#: heat/common/config.py:34 msgid "The flavor to use." msgstr "" -#: heat/common/config.py:38 +#: heat/common/config.py:36 msgid "The API paste config file to use." msgstr "" -#: heat/common/config.py:102 +#: heat/common/config.py:100 msgid "Select deferred auth method, stored password or trusts." msgstr "" -#: heat/common/config.py:106 +#: heat/common/config.py:104 msgid "Subset of trustor roles to be delegated to heat." msgstr "" -#: heat/common/config.py:112 +#: heat/common/config.py:110 msgid "Maximum number of stacks any one tenant may have active at one time." msgstr "" -#: heat/common/config.py:116 +#: heat/common/config.py:114 msgid "" "Controls how many events will be pruned whenever a stack's events exceed" " max_events_per_stack. Set this lower to keep more events at the expense " "of more frequent purges." msgstr "" -#: heat/common/config.py:122 +#: heat/common/config.py:120 msgid "" "Maximum events that will be available per stack. Older events will be " "deleted when this is reached. Set to 0 for unlimited events per stack." msgstr "" -#: heat/common/config.py:127 +#: heat/common/config.py:125 +msgid "Timeout in seconds for stack action (ie. create or update)." +msgstr "" + +#: heat/common/config.py:129 msgid "RPC timeout for the engine liveness check that is used for stack locking." msgstr "" -#: heat/common/config.py:130 +#: heat/common/config.py:132 msgid "" "onready allows you to send a notification when the heat processes are " "ready to serve. This is either a module with the notify() method or a " @@ -377,56 +386,58 @@ msgid "" "notification module." msgstr "" -#: heat/common/config.py:157 +#: heat/common/config.py:159 msgid "" "Type of endpoint in Identity service catalog to use for communication " "with the OpenStack service." msgstr "" -#: heat/common/config.py:161 +#: heat/common/config.py:163 msgid "Optional CA cert file to use in SSL connections." msgstr "" -#: heat/common/config.py:163 +#: heat/common/config.py:165 msgid "Optional PEM-formatted certificate chain file." msgstr "" -#: heat/common/config.py:165 +#: heat/common/config.py:167 msgid "Optional PEM-formatted file that contains the private key." msgstr "" -#: heat/common/config.py:169 +#: heat/common/config.py:171 msgid "If set, then the server's certificate will not be verified." msgstr "" -#: heat/common/config.py:184 +#: heat/common/config.py:186 #, python-format msgid "Optional heat url in format like http://0.0.0.0:8004/v1/%(tenant_id)s." msgstr "" -#: heat/common/config.py:194 +#: heat/common/config.py:196 msgid "" "Heat build revision. If you would prefer to manage your build revision " "separately, you can move this section to a different file and add it as " "another config option." msgstr "" -#: heat/common/config.py:223 +#: heat/common/config.py:225 msgid "" "The \"instance_user\" option in heat.conf is deprecated and will be " "removed in the Juno release." msgstr "" -#: heat/common/config.py:270 +#: heat/common/config.py:272 msgid "Unable to locate config file" msgstr "" -#: heat/common/config.py:282 +#: heat/common/config.py:284 #, python-format msgid "" "Unable to load %(app_name)s from configuration file %(conf_file)s.\n" "Got: %(e)r" msgstr "" +"無法從配置檔 %(conf_file)s 載入 %(app_name)s。\n" +"發生錯誤:%(e)r" #: heat/common/custom_backend_auth.py:45 msgid "Authenticating user token" @@ -436,359 +447,368 @@ msgstr "" msgid "Backend authentication failed" msgstr "" -#: heat/common/environment_format.py:39 +#: heat/common/environment_format.py:38 msgid "The environment is not a valid YAML mapping data type." msgstr "" -#: heat/common/environment_format.py:43 +#: heat/common/environment_format.py:42 #, python-format msgid "environment has wrong section \"%s\"" msgstr "" -#: heat/common/exception.py:102 +#: heat/common/exception.py:104 msgid "An unknown exception occurred." -msgstr "" +msgstr "發生一個未知例外" -#: heat/common/exception.py:113 heat/openstack/common/rpc/common.py:88 +#: heat/common/exception.py:115 msgid "Exception in string format operation" -msgstr "" +msgstr "字串格式化作業發生異常狀況" -#: heat/common/exception.py:128 +#: heat/common/exception.py:133 #, python-format msgid "Missing required credential: %(required)s" -msgstr "" +msgstr "遺漏了必要認證:%(required)s" -#: heat/common/exception.py:132 +#: heat/common/exception.py:137 #, python-format msgid "" "Incorrect auth strategy, expected \"%(expected)s\" but received " "\"%(received)s\"" -msgstr "" +msgstr "不正確的鑑別策略,需要 \"%(expected)s\",但收到 \"%(received)s\"" -#: heat/common/exception.py:137 +#: heat/common/exception.py:142 #, python-format msgid "Connect error/bad request to Auth service at URL %(url)s." -msgstr "" +msgstr "將錯誤/不當的要求連接至 URL %(url)s 處的鑑別服務。" -#: heat/common/exception.py:141 +#: heat/common/exception.py:146 #, python-format msgid "Auth service at URL %(url)s not found." -msgstr "" +msgstr "在 URL %(url)s 處找不到鑑別服務。" -#: heat/common/exception.py:145 +#: heat/common/exception.py:150 msgid "Authorization failed." -msgstr "" +msgstr "授權失敗。" -#: heat/common/exception.py:149 +#: heat/common/exception.py:154 msgid "You are not authenticated." -msgstr "" +msgstr "您沒有進行鑑別。" -#: heat/common/exception.py:153 heat/common/exception.py:158 +#: heat/common/exception.py:158 heat/common/exception.py:163 msgid "You are not authorized to complete this action." -msgstr "" +msgstr "您未獲授權來完成此動作。" -#: heat/common/exception.py:162 +#: heat/common/exception.py:167 #, python-format msgid "Data supplied was not valid: %(reason)s" msgstr "" -#: heat/common/exception.py:166 +#: heat/common/exception.py:171 #, python-format msgid "Redirecting to %(uri)s for authorization." -msgstr "" +msgstr "正在重新導向至 %(uri)s 以進行授權。" -#: heat/common/exception.py:170 +#: heat/common/exception.py:175 msgid "The URI was too long." msgstr "" -#: heat/common/exception.py:174 +#: heat/common/exception.py:179 #, python-format msgid "Maximum redirects (%(redirects)s) was exceeded." -msgstr "" +msgstr "已超出重新導向數目上限(%(redirects)s 個)。" -#: heat/common/exception.py:178 +#: heat/common/exception.py:183 msgid "Received invalid HTTP redirect." -msgstr "" +msgstr "收到無效的 HTTP 重新導向。" -#: heat/common/exception.py:182 +#: heat/common/exception.py:187 #, python-format msgid "" "Multiple 'image' service matches for region %(region)s. This generally " "means that a region is required and you have not supplied one." -msgstr "" +msgstr "區域 %(region)s 有多個「映像檔」服務相符項。這通常表示需要一個區域,但您尚未提供。" -#: heat/common/exception.py:188 +#: heat/common/exception.py:193 #, python-format msgid "The Parameter (%(key)s) was not provided." msgstr "" -#: heat/common/exception.py:192 +#: heat/common/exception.py:197 #, python-format msgid "The Parameter (%(key)s) was not defined in template." msgstr "" -#: heat/common/exception.py:196 +#: heat/common/exception.py:201 #, python-format msgid "The template version is invalid: %(explanation)s" msgstr "" -#: heat/common/exception.py:200 +#: heat/common/exception.py:205 +#, python-format +msgid "The template section is invalid: %(section)s" +msgstr "" + +#: heat/common/exception.py:209 #, python-format msgid "The Parameter (%(key)s) has no attributes." msgstr "" -#: heat/common/exception.py:204 +#: heat/common/exception.py:213 #, python-format msgid "The Referenced Attribute (%(resource)s %(key)s) is incorrect." msgstr "" -#: heat/common/exception.py:209 +#: heat/common/exception.py:218 #, python-format msgid "The specified reference \"%(resource)s\" (in %(key)s) is incorrect." msgstr "" -#: heat/common/exception.py:214 +#: heat/common/exception.py:223 #, python-format msgid "The Key (%(key_name)s) could not be found." msgstr "" -#: heat/common/exception.py:218 +#: heat/common/exception.py:227 #, python-format msgid "The Flavor ID (%(flavor_id)s) could not be found." msgstr "" -#: heat/common/exception.py:222 +#: heat/common/exception.py:231 #, python-format msgid "The Image (%(image_name)s) could not be found." msgstr "" -#: heat/common/exception.py:226 +#: heat/common/exception.py:235 #, python-format msgid "Multiple physical resources were found with name (%(name)s)." msgstr "" -#: heat/common/exception.py:231 +#: heat/common/exception.py:240 #, python-format msgid "Searching Tenant %(target)s from Tenant %(actual)s forbidden." msgstr "" -#: heat/common/exception.py:236 +#: heat/common/exception.py:245 #, python-format msgid "The Stack (%(stack_name)s) could not be found." msgstr "" -#: heat/common/exception.py:240 +#: heat/common/exception.py:249 #, python-format msgid "The Stack (%(stack_name)s) already exists." msgstr "" -#: heat/common/exception.py:244 +#: heat/common/exception.py:253 #, python-format msgid "%(message)s" msgstr "" -#: heat/common/exception.py:248 +#: heat/common/exception.py:257 #, python-format msgid "" "The Resource (%(resource_name)s) could not be found in Stack " "%(stack_name)s." msgstr "" -#: heat/common/exception.py:253 +#: heat/common/exception.py:262 #, python-format msgid "The Resource Type (%(type_name)s) could not be found." msgstr "" -#: heat/common/exception.py:257 +#: heat/common/exception.py:266 #, python-format msgid "The Resource (%(resource_name)s) is not available." msgstr "" -#: heat/common/exception.py:261 +#: heat/common/exception.py:270 #, python-format msgid "The Resource (%(resource_id)s) could not be found." msgstr "" -#: heat/common/exception.py:265 +#: heat/common/exception.py:274 #, python-format msgid "The Watch Rule (%(watch_name)s) could not be found." msgstr "" -#: heat/common/exception.py:269 +#: heat/common/exception.py:278 #, python-format msgid "%(exc_type)s: %(message)s" msgstr "" -#: heat/common/exception.py:283 +#: heat/common/exception.py:292 #, python-format msgid "%(feature)s is not supported." msgstr "" -#: heat/common/exception.py:287 +#: heat/common/exception.py:296 #, python-format msgid "Cannot define the following properties at the same time: %s." msgstr "" -#: heat/common/exception.py:305 +#: heat/common/exception.py:314 msgid "" "Egress rules are only allowed when Neutron is used and the 'VpcId' " "property is set." msgstr "" -#: heat/common/exception.py:322 +#: heat/common/exception.py:325 +msgid "Not found" +msgstr "" + +#: heat/common/exception.py:331 #, python-format msgid "Invalid content type %(content_type)s" -msgstr "" +msgstr "無效的內容類型 %(content_type)s" -#: heat/common/exception.py:326 +#: heat/common/exception.py:335 #, python-format msgid "Request limit exceeded: %(message)s" msgstr "" -#: heat/common/exception.py:330 +#: heat/common/exception.py:339 msgid "Maximum resources per stack exceeded." msgstr "" -#: heat/common/exception.py:334 +#: heat/common/exception.py:343 #, python-format msgid "Stack %(stack_name)s already has an action (%(action)s) in progress." msgstr "" -#: heat/common/exception.py:339 +#: heat/common/exception.py:348 #, python-format msgid "The config (%(software_config_id)s) could not be found." msgstr "" -#: heat/common/exception.py:343 +#: heat/common/exception.py:352 #, python-format msgid "Failed to stop stack (%(stack_name)s) on other engine (%(engine_id)s)" msgstr "" -#: heat/common/heat_keystoneclient.py:94 +#: heat/common/heat_keystoneclient.py:93 msgid "" "heat.conf misconfigured, cannot specify stack_user_domain without " "stack_domain_admin and stack_domain_admin_password" msgstr "" -#: heat/common/heat_keystoneclient.py:99 +#: heat/common/heat_keystoneclient.py:98 msgid "stack_user_domain ID not set in heat.conf falling back to using default" msgstr "" -#: heat/common/heat_keystoneclient.py:101 +#: heat/common/heat_keystoneclient.py:100 #, python-format msgid "Using stack domain %s" msgstr "" -#: heat/common/heat_keystoneclient.py:161 +#: heat/common/heat_keystoneclient.py:160 msgid "Keystone v3 API connection failed, no password trust or auth_token!" msgstr "" -#: heat/common/heat_keystoneclient.py:172 +#: heat/common/heat_keystoneclient.py:171 msgid "trust token re-scoping failed!" msgstr "" -#: heat/common/heat_keystoneclient.py:262 +#: heat/common/heat_keystoneclient.py:261 #, python-format msgid "Truncating the username %s to the last 64 characters." msgstr "" -#: heat/common/heat_keystoneclient.py:296 -#: heat/common/heat_keystoneclient.py:337 +#: heat/common/heat_keystoneclient.py:295 +#: heat/common/heat_keystoneclient.py:336 #, python-format msgid "Adding user %(user)s to role %(role)s" msgstr "" -#: heat/common/heat_keystoneclient.py:301 -#: heat/common/heat_keystoneclient.py:342 +#: heat/common/heat_keystoneclient.py:300 +#: heat/common/heat_keystoneclient.py:341 #, python-format msgid "Failed to add user %(user)s to role %(role)s, check role exists!" msgstr "" -#: heat/common/heat_keystoneclient.py:305 -#: heat/common/heat_keystoneclient.py:345 +#: heat/common/heat_keystoneclient.py:304 +#: heat/common/heat_keystoneclient.py:344 #, python-format msgid "Can't find role %s" msgstr "" -#: heat/common/heat_keystoneclient.py:321 +#: heat/common/heat_keystoneclient.py:320 msgid "" "Falling back to legacy non-domain user create, configure domain in " "heat.conf" msgstr "" -#: heat/common/heat_keystoneclient.py:354 +#: heat/common/heat_keystoneclient.py:353 #, python-format msgid "User %s in invalid domain" msgstr "" -#: heat/common/heat_keystoneclient.py:356 +#: heat/common/heat_keystoneclient.py:355 #, python-format msgid "User %s in invalid project" msgstr "" -#: heat/common/heat_keystoneclient.py:362 +#: heat/common/heat_keystoneclient.py:361 msgid "" "Falling back to legacy non-domain user delete, configure domain in " "heat.conf" msgstr "" -#: heat/common/heat_keystoneclient.py:376 -#: heat/common/heat_keystoneclient.py:393 +#: heat/common/heat_keystoneclient.py:375 +#: heat/common/heat_keystoneclient.py:392 msgid "Falling back to legacy non-domain project, configure domain in heat.conf" msgstr "" -#: heat/common/heat_keystoneclient.py:460 -#: heat/common/heat_keystoneclient.py:477 +#: heat/common/heat_keystoneclient.py:459 +#: heat/common/heat_keystoneclient.py:476 msgid "Falling back to legacy non-domain keypair, configure domain in heat.conf" msgstr "" -#: heat/common/heat_keystoneclient.py:496 +#: heat/common/heat_keystoneclient.py:495 msgid "Falling back to legacy non-domain disable, configure domain in heat.conf" msgstr "" -#: heat/common/heat_keystoneclient.py:506 +#: heat/common/heat_keystoneclient.py:505 msgid "Falling back to legacy non-domain enable, configure domain in heat.conf" msgstr "" -#: heat/common/identifier.py:40 +#: heat/common/identifier.py:41 msgid "Stack name may not contain \"/\"" msgstr "" -#: heat/common/identifier.py:56 +#: heat/common/identifier.py:57 #, python-format msgid "\"%s\" is not a valid ARN" msgstr "" -#: heat/common/identifier.py:62 +#: heat/common/identifier.py:63 #, python-format msgid "\"%s\" is not a valid Heat ARN" msgstr "" -#: heat/common/identifier.py:79 +#: heat/common/identifier.py:80 #, python-format msgid "\"%s\" is not a valid URL" msgstr "" -#: heat/common/identifier.py:85 +#: heat/common/identifier.py:86 #, python-format msgid "\"%s\" is not a valid ARN URL" msgstr "" -#: heat/common/identifier.py:141 heat/common/identifier.py:148 +#: heat/common/identifier.py:142 heat/common/identifier.py:149 #, python-format msgid "Unknown attribute \"%s\"" msgstr "" -#: heat/common/identifier.py:179 heat/engine/resource.py:142 +#: heat/common/identifier.py:180 heat/engine/resource.py:141 msgid "Resource name may not contain \"/\"" msgstr "" -#: heat/common/notify.py:36 +#: heat/common/notify.py:38 #, python-format msgid "Failed to execute onready command: %s" msgstr "" -#: heat/common/plugin_loader.py:93 +#: heat/common/plugin_loader.py:92 #, python-format msgid "Failed to import module %s" msgstr "" @@ -798,20 +818,20 @@ msgstr "" msgid "Invalid UUID version (%d)" msgstr "" -#: heat/common/systemd.py:39 +#: heat/common/systemd.py:40 msgid "Unable to notify systemd of startup completion: NOTIFY_SOCKET not set" msgstr "" -#: heat/common/template_format.py:72 +#: heat/common/template_format.py:71 #, python-format msgid "Template exceeds maximum allowed size (%s bytes)" msgstr "" -#: heat/common/template_format.py:77 +#: heat/common/template_format.py:76 msgid "The template is not a JSON object or YAML mapping." msgstr "" -#: heat/common/template_format.py:83 +#: heat/common/template_format.py:82 msgid "Template format version not found." msgstr "" @@ -819,215 +839,215 @@ msgstr "" msgid "Only ISO 8601 duration format of the form PT#H#M#S is supported." msgstr "" -#: heat/common/urlfetch.py:41 +#: heat/common/urlfetch.py:46 #, python-format msgid "Fetching data from %s" msgstr "" -#: heat/common/urlfetch.py:46 +#: heat/common/urlfetch.py:51 #, python-format msgid "Invalid URL scheme %s" msgstr "" -#: heat/common/urlfetch.py:52 heat/common/urlfetch.py:76 +#: heat/common/urlfetch.py:57 heat/common/urlfetch.py:81 #, python-format msgid "Failed to retrieve template: %s" msgstr "" -#: heat/common/wsgi.py:54 heat/common/wsgi.py:88 heat/common/wsgi.py:122 +#: heat/common/wsgi.py:55 heat/common/wsgi.py:89 heat/common/wsgi.py:123 msgid "" "Address to bind the server. Useful when selecting a particular network " "interface." msgstr "" -#: heat/common/wsgi.py:58 heat/common/wsgi.py:92 heat/common/wsgi.py:126 +#: heat/common/wsgi.py:59 heat/common/wsgi.py:93 heat/common/wsgi.py:127 msgid "The port on which the server will listen." msgstr "" -#: heat/common/wsgi.py:61 heat/common/wsgi.py:95 heat/common/wsgi.py:129 +#: heat/common/wsgi.py:62 heat/common/wsgi.py:96 heat/common/wsgi.py:130 msgid "Number of backlog requests to configure the socket with." msgstr "" -#: heat/common/wsgi.py:65 heat/common/wsgi.py:99 heat/common/wsgi.py:133 +#: heat/common/wsgi.py:66 heat/common/wsgi.py:100 heat/common/wsgi.py:134 msgid "Location of the SSL certificate file to use for SSL mode." msgstr "" -#: heat/common/wsgi.py:69 heat/common/wsgi.py:103 heat/common/wsgi.py:137 +#: heat/common/wsgi.py:70 heat/common/wsgi.py:104 heat/common/wsgi.py:138 msgid "Location of the SSL key file to use for enabling SSL mode." msgstr "" -#: heat/common/wsgi.py:73 heat/common/wsgi.py:107 heat/common/wsgi.py:141 +#: heat/common/wsgi.py:74 heat/common/wsgi.py:108 heat/common/wsgi.py:142 msgid "Number of workers for Heat service." msgstr "" -#: heat/common/wsgi.py:76 heat/common/wsgi.py:110 +#: heat/common/wsgi.py:77 heat/common/wsgi.py:111 msgid "" "Maximum line size of message headers to be accepted. max_header_line may " "need to be increased when using large tokens (typically those generated " "by the Keystone v3 API with big service catalogs)." msgstr "" -#: heat/common/wsgi.py:144 +#: heat/common/wsgi.py:145 msgid "" "Maximum line size of message headers to be accepted. max_header_line may " "need to be increased when using large tokens (typically those generated " "by the Keystone v3 API with big service catalogs.)" msgstr "" -#: heat/common/wsgi.py:204 heat/openstack/common/sslutils.py:59 +#: heat/common/wsgi.py:205 heat/openstack/common/sslutils.py:59 msgid "" "When running server in SSL mode, you must specify both a cert_file and " "key_file option value in your configuration file" -msgstr "" +msgstr "在 SSL 模式下執行伺服器時,必須在配置檔中指定 cert_file 及 key_file 選項值" -#: heat/common/wsgi.py:222 +#: heat/common/wsgi.py:223 #, python-format msgid "Could not bind to %(bind_addr)safter trying for 30 seconds" msgstr "" -#: heat/common/wsgi.py:254 +#: heat/common/wsgi.py:255 msgid "SIGTERM received" -msgstr "" +msgstr "收到 SIGTERM" -#: heat/common/wsgi.py:263 +#: heat/common/wsgi.py:264 msgid "SIGHUP received" msgstr "" -#: heat/common/wsgi.py:279 heat/openstack/common/service.py:337 +#: heat/common/wsgi.py:280 #, python-format msgid "Starting %d workers" -msgstr "" +msgstr "正在啟動 %d 個工作程式" -#: heat/common/wsgi.py:290 +#: heat/common/wsgi.py:291 #, python-format msgid "Removing dead child %s" -msgstr "" +msgstr "正在移除已停用的子項 %s" -#: heat/common/wsgi.py:297 +#: heat/common/wsgi.py:298 msgid "Caught keyboard interrupt. Exiting." -msgstr "" +msgstr "已捕捉到鍵盤岔斷。正在結束。" -#: heat/common/wsgi.py:301 +#: heat/common/wsgi.py:302 msgid "Exited" -msgstr "" +msgstr "已結束" -#: heat/common/wsgi.py:319 +#: heat/common/wsgi.py:320 #, python-format msgid "Child %d exiting normally" -msgstr "" +msgstr "子項 %d 正在正常結束" -#: heat/common/wsgi.py:322 +#: heat/common/wsgi.py:323 #, python-format msgid "Started child %s" -msgstr "" +msgstr "已啟動子項 %s" -#: heat/common/wsgi.py:345 +#: heat/common/wsgi.py:346 msgid "Starting single process server" -msgstr "" +msgstr "正在啟動單一程序伺服器" -#: heat/common/wsgi.py:552 +#: heat/common/wsgi.py:553 #, python-format msgid "" "JSON body size (%(len)s bytes) exceeds maximum allowed size (%(limit)s " "bytes)." msgstr "" -#: heat/common/wsgi.py:678 +#: heat/common/wsgi.py:620 #, python-format msgid "Exception handling resource: %s" -msgstr "" +msgstr "處理資源時發生異常狀況:%s" -#: heat/common/wsgi.py:679 +#: heat/common/wsgi.py:621 msgid "" "The server could not comply with the request since\r\n" "it is either malformed or otherwise incorrect.\r\n" msgstr "" -#: heat/common/wsgi.py:695 +#: heat/common/wsgi.py:642 #, python-format msgid "Returning %(code)s to user: %(explanation)s" -msgstr "" +msgstr "正在將 %(code)s 傳回給使用者:%(explanation)s" -#: heat/common/wsgi.py:735 +#: heat/common/wsgi.py:681 msgid "Unable to serialize exception response" msgstr "" -#: heat/common/wsgi.py:770 +#: heat/common/wsgi.py:716 #, python-format msgid "Unexpected error occurred serving API: %s" msgstr "" -#: heat/db/sqlalchemy/api.py:77 +#: heat/db/sqlalchemy/api.py:89 #, python-format msgid "raw template with id %s not found" msgstr "" -#: heat/db/sqlalchemy/api.py:94 +#: heat/db/sqlalchemy/api.py:106 #, python-format msgid "resource with id %s not found" msgstr "" -#: heat/db/sqlalchemy/api.py:124 +#: heat/db/sqlalchemy/api.py:136 msgid "no resources were found" msgstr "" -#: heat/db/sqlalchemy/api.py:138 +#: heat/db/sqlalchemy/api.py:150 msgid "no resource data found" msgstr "" -#: heat/db/sqlalchemy/api.py:188 +#: heat/db/sqlalchemy/api.py:200 msgid "No resource data found" msgstr "" -#: heat/db/sqlalchemy/api.py:241 +#: heat/db/sqlalchemy/api.py:253 #, python-format msgid "no resources for stack_id %s were found" msgstr "" -#: heat/db/sqlalchemy/api.py:382 +#: heat/db/sqlalchemy/api.py:394 #, python-format msgid "Attempt to update a stack with id: %(id)s %(msg)s" msgstr "" -#: heat/db/sqlalchemy/api.py:394 +#: heat/db/sqlalchemy/api.py:406 #, python-format msgid "Attempt to delete a stack with id: %(id)s %(msg)s" msgstr "" -#: heat/db/sqlalchemy/api.py:477 +#: heat/db/sqlalchemy/api.py:489 #, python-format msgid "Attempt to delete user creds with id %(id)s that does not exist" msgstr "" -#: heat/db/sqlalchemy/api.py:592 +#: heat/db/sqlalchemy/api.py:604 #, python-format msgid "Attempt to update a watch with id: %(id)s %(msg)s" msgstr "" -#: heat/db/sqlalchemy/api.py:604 +#: heat/db/sqlalchemy/api.py:616 #, python-format msgid "Attempt to delete watch_rule: %(id)s %(msg)s" msgstr "" -#: heat/db/sqlalchemy/api.py:643 +#: heat/db/sqlalchemy/api.py:655 #, python-format msgid "Software config with id %s not found" msgstr "" -#: heat/db/sqlalchemy/api.py:670 +#: heat/db/sqlalchemy/api.py:682 #, python-format msgid "Deployment with id %s not found" msgstr "" -#: heat/db/sqlalchemy/api.py:706 +#: heat/db/sqlalchemy/api.py:718 msgid "age should be an integer" msgstr "" -#: heat/db/sqlalchemy/api.py:708 +#: heat/db/sqlalchemy/api.py:720 msgid "age should be a positive integer" msgstr "" -#: heat/db/sqlalchemy/api.py:712 +#: heat/db/sqlalchemy/api.py:724 msgid "granularity should be days, hours, minutes, or seconds" msgstr "" @@ -1037,340 +1057,322 @@ msgid "" "records." msgstr "" -#: heat/db/sqlalchemy/migrate_repo/versions/037_migrate_hot_template.py:56 -#: heat/db/sqlalchemy/migrate_repo/versions/041_migrate_hot_template_resources.py:69 +#: heat/db/sqlalchemy/migrate_repo/versions/037_migrate_hot_template.py:58 +#: heat/db/sqlalchemy/migrate_repo/versions/041_migrate_hot_template_resources.py:70 #: heat/db/sqlalchemy/migrate_repo/versions/043_migrate_template_versions.py:57 msgid "" "This version cannot be downgraded because it involves a data migration to" " the raw_template table." msgstr "" -#: heat/engine/api.py:35 -msgid "create timeout conversion" +#: heat/engine/api.py:36 +msgid "Timeout conversion failed" +msgstr "" + +#: heat/engine/api.py:41 +#, python-format +msgid "Invalid timeout value %s" msgstr "" -#: heat/engine/api.py:47 +#: heat/engine/api.py:50 #, python-format msgid "Unexpected value for parameter %(name)s : %(value)s" msgstr "" -#: heat/engine/api.py:57 +#: heat/engine/api.py:60 #, python-format msgid "Unexpected adopt data \"%s\". Adopt data must be a dict." msgstr "" -#: heat/engine/api.py:233 +#: heat/engine/api.py:236 msgid "Unexpected number of keys in watch_data.data!" msgstr "" -#: heat/engine/attributes.py:84 +#: heat/engine/attributes.py:83 #, python-format msgid "%(resource)s: Invalid attribute %(key)s" msgstr "" -#: heat/engine/clients.py:33 +#: heat/engine/clients.py:31 msgid "swiftclient not available" msgstr "" -#: heat/engine/clients.py:38 +#: heat/engine/clients.py:36 msgid "neutronclient not available" msgstr "" -#: heat/engine/clients.py:43 +#: heat/engine/clients.py:41 msgid "cinderclient not available" msgstr "" -#: heat/engine/clients.py:49 +#: heat/engine/clients.py:47 msgid "troveclient not available" msgstr "" -#: heat/engine/clients.py:55 +#: heat/engine/clients.py:53 msgid "ceilometerclient not available" msgstr "" -#: heat/engine/clients.py:104 -msgid "Nova connection failed, no auth_token!" -msgstr "" - -#: heat/engine/clients.py:141 -msgid "Swift connection failed, no auth_token!" -msgstr "" - -#: heat/engine/clients.py:169 +#: heat/engine/clients.py:159 msgid "Neutron connection failed, no auth_token!" msgstr "" -#: heat/engine/clients.py:196 -msgid "Cinder connection failed, no auth_token!" -msgstr "" - -#: heat/engine/clients.py:227 -msgid "Trove connection failed, no auth_token!" -msgstr "" - -#: heat/engine/clients.py:257 -msgid "Ceilometer connection failed, no auth_token!" -msgstr "" - -#: heat/engine/clients.py:304 -msgid "Heat connection failed, no auth_token!" -msgstr "" - -#: heat/engine/constraints.py:84 +#: heat/engine/constraints.py:87 #, python-format msgid "Invalid type (%s)" msgstr "" -#: heat/engine/constraints.py:91 +#: heat/engine/constraints.py:94 #, python-format msgid "Single schema valid only for %(ltype)s, not %(utype)s" msgstr "" -#: heat/engine/constraints.py:101 +#: heat/engine/constraints.py:104 #, python-format msgid "Schema valid only for %(ltype)s or %(mtype)s, not %(utype)s" msgstr "" -#: heat/engine/constraints.py:110 +#: heat/engine/constraints.py:113 #, python-format msgid "%(name)s constraint invalid for %(utype)s" msgstr "" -#: heat/engine/constraints.py:124 heat/engine/parameters.py:83 +#: heat/engine/constraints.py:127 heat/engine/parameters.py:85 #, python-format msgid "Invalid default %(default)s (%(exc)s)" msgstr "" -#: heat/engine/constraints.py:200 +#: heat/engine/constraints.py:206 #, python-format msgid "Invalid key %s" msgstr "" -#: heat/engine/constraints.py:289 +#: heat/engine/constraints.py:295 msgid "min/max must be numeric" msgstr "" -#: heat/engine/constraints.py:293 +#: heat/engine/constraints.py:299 msgid "A range constraint must have a min value and/or a max value specified." msgstr "" -#: heat/engine/constraints.py:298 +#: heat/engine/constraints.py:304 #, python-format msgid "The value must be at least %(min)s." msgstr "" -#: heat/engine/constraints.py:300 +#: heat/engine/constraints.py:306 #, python-format msgid "The value must be no greater than %(max)s." msgstr "" -#: heat/engine/constraints.py:302 +#: heat/engine/constraints.py:308 #, python-format msgid "The value must be in the range %(min)s to %(max)s." msgstr "" -#: heat/engine/constraints.py:350 +#: heat/engine/constraints.py:356 msgid "A length constraint must have a min value and/or a max value specified." msgstr "" -#: heat/engine/constraints.py:357 +#: heat/engine/constraints.py:363 msgid "min/max length must be integral" msgstr "" -#: heat/engine/constraints.py:362 +#: heat/engine/constraints.py:368 #, python-format msgid "The length must be at least %(min)s." msgstr "" -#: heat/engine/constraints.py:364 +#: heat/engine/constraints.py:370 #, python-format msgid "The length must be no greater than %(max)s." msgstr "" -#: heat/engine/constraints.py:366 +#: heat/engine/constraints.py:372 #, python-format msgid "The length must be in the range %(min)s to %(max)s." msgstr "" -#: heat/engine/constraints.py:397 +#: heat/engine/constraints.py:403 msgid "AllowedValues must be a list" msgstr "" -#: heat/engine/constraints.py:402 +#: heat/engine/constraints.py:408 #, python-format msgid "Allowed values: %s" msgstr "" -#: heat/engine/constraints.py:437 +#: heat/engine/constraints.py:443 msgid "AllowedPattern must be a string" msgstr "" -#: heat/engine/constraints.py:442 +#: heat/engine/constraints.py:448 #, python-format msgid "Value must match pattern: %s" msgstr "" -#: heat/engine/constraints.py:484 +#: heat/engine/constraints.py:490 #, python-format msgid "Value must be of type %s" msgstr "" -#: heat/engine/constraints.py:490 +#: heat/engine/constraints.py:496 #, python-format msgid "\"%(value)s\" does not validate %(name)s (constraint not found)" msgstr "" -#: heat/engine/constraints.py:497 +#: heat/engine/constraints.py:503 #, python-format msgid "\"%(value)s\" does not validate %(name)s" msgstr "" -#: heat/engine/dependencies.py:26 +#: heat/engine/dependencies.py:24 #, python-format msgid "Circular Dependency Found: %(cycle)s" msgstr "" -#: heat/engine/environment.py:193 heat/engine/environment.py:199 +#: heat/engine/environment.py:192 heat/engine/environment.py:198 #, python-format msgid "Removing %(item)s from %(path)s" msgstr "" -#: heat/engine/environment.py:212 +#: heat/engine/environment.py:211 #, python-format msgid "Changing %(path)s from %(was)s to %(now)s" msgstr "" -#: heat/engine/environment.py:214 +#: heat/engine/environment.py:213 #, python-format msgid "Registering %(path)s -> %(value)s" msgstr "" -#: heat/engine/environment.py:285 heat/tests/test_resource.py:85 +#: heat/engine/environment.py:284 heat/tests/test_resource.py:85 #, python-format msgid "Resource \"%s\" has no type" msgstr "" -#: heat/engine/environment.py:288 heat/tests/test_resource.py:102 +#: heat/engine/environment.py:287 heat/tests/test_resource.py:102 #, python-format msgid "Non-empty resource type is required for resource \"%s\"" msgstr "" -#: heat/engine/environment.py:292 heat/tests/test_resource.py:93 +#: heat/engine/environment.py:291 heat/tests/test_resource.py:93 #, python-format msgid "Resource \"%s\" type is not a string" msgstr "" -#: heat/engine/environment.py:298 +#: heat/engine/environment.py:297 #, python-format msgid "Unknown resource Type : %s" msgstr "" -#: heat/engine/environment.py:401 +#: heat/engine/environment.py:400 #, python-format msgid "Failed to read %s" msgstr "" -#: heat/engine/environment.py:408 +#: heat/engine/environment.py:407 #, python-format msgid "Loading %s" msgstr "" -#: heat/engine/environment.py:413 +#: heat/engine/environment.py:412 #, python-format msgid "Failed to parse %(file_path)s" msgstr "" -#: heat/engine/environment.py:417 +#: heat/engine/environment.py:416 #, python-format msgid "Failed to read %(file_path)s" msgstr "" -#: heat/engine/event.py:59 +#: heat/engine/event.py:60 #, python-format msgid "No event exists with id \"%s\"" msgstr "" -#: heat/engine/event.py:90 +#: heat/engine/event.py:91 msgid "Duplicating event" msgstr "" -#: heat/engine/parameter_groups.py:42 +#: heat/engine/parameter_groups.py:43 msgid "Validating Parameter Groups." msgstr "" -#: heat/engine/parameter_groups.py:51 heat/tests/test_validate.py:1195 +#: heat/engine/parameter_groups.py:52 heat/tests/test_validate.py:1398 msgid "Parameters must be provided for each Parameter Group." msgstr "" -#: heat/engine/parameter_groups.py:58 +#: heat/engine/parameter_groups.py:59 #, python-format msgid "The %s parameter must be assigned to one Parameter Group only." msgstr "" -#: heat/engine/parameter_groups.py:66 +#: heat/engine/parameter_groups.py:67 #, python-format msgid "The Parameter name (%s) does not reference an existing parameter." msgstr "" -#: heat/engine/parameters.py:77 +#: heat/engine/parameters.py:78 #, python-format msgid "Default must be a comma-delimited list string: %s" msgstr "" -#: heat/engine/parameters.py:103 +#: heat/engine/parameters.py:105 #, python-format msgid "Invalid %s, expected a mapping" msgstr "" -#: heat/engine/parameters.py:107 +#: heat/engine/parameters.py:109 #, python-format msgid "Invalid key '%(key)s' for %(entity)s" msgstr "" -#: heat/engine/parameters.py:115 -msgid "Missing parameter type" +#: heat/engine/parameters.py:120 +#, python-format +msgid "Missing parameter type for parameter: %s" msgstr "" -#: heat/engine/parameters.py:185 +#: heat/engine/parameters.py:194 #, python-format msgid "Invalid Parameter type \"%s\"" msgstr "" -#: heat/engine/parameters.py:214 +#: heat/engine/parameters.py:223 #, python-format msgid "Missing parameter %s" msgstr "" -#: heat/engine/parameters.py:293 +#: heat/engine/parameters.py:302 #, python-format msgid "Value must be a comma-delimited list string: %s" msgstr "" -#: heat/engine/parameters.py:329 +#: heat/engine/parameters.py:338 #, python-format msgid "Value must be valid JSON: %s" msgstr "" -#: heat/engine/parameters.py:445 heat/engine/hot/parameters.py:135 +#: heat/engine/parameters.py:454 heat/engine/hot/parameters.py:138 msgid "Stack ID" -msgstr "" +msgstr "機櫃識別號" -#: heat/engine/parameters.py:449 heat/engine/hot/parameters.py:140 +#: heat/engine/parameters.py:458 heat/engine/hot/parameters.py:143 msgid "Stack Name" -msgstr "" +msgstr "機櫃名稱" -#: heat/engine/parser.py:73 +#: heat/engine/parser.py:70 #, python-format msgid "" "Invalid stack name %s must contain only alphanumeric or \"_-.\" " "characters, must start with alpha" msgstr "" -#: heat/engine/parser.py:166 +#: heat/engine/parser.py:163 msgid "Unable to set parameters StackId identifier" msgstr "" -#: heat/engine/parser.py:185 +#: heat/engine/parser.py:182 #, python-format msgid "No stack exists with id \"%s\"" msgstr "" @@ -1380,237 +1382,241 @@ msgstr "" msgid "Duplicate names %s" msgstr "" -#: heat/engine/parser.py:375 heat/engine/resource.py:813 +#: heat/engine/parser.py:383 heat/engine/resource.py:807 #, python-format msgid "Invalid action %s" msgstr "" -#: heat/engine/parser.py:378 heat/engine/resource.py:816 +#: heat/engine/parser.py:386 heat/engine/resource.py:810 #, python-format msgid "Invalid status %s" msgstr "" -#: heat/engine/parser.py:488 +#: heat/engine/parser.py:495 msgid "Loaded existing backup stack" msgstr "" -#: heat/engine/parser.py:496 +#: heat/engine/parser.py:503 msgid "Created new backup stack" msgstr "" -#: heat/engine/parser.py:536 +#: heat/engine/parser.py:543 #, python-format msgid "Unexpected action %s passed to update!" msgstr "" -#: heat/engine/parser.py:545 +#: heat/engine/parser.py:552 #, python-format msgid "Starting update rollback for %s" msgstr "" -#: heat/engine/parser.py:595 +#: heat/engine/parser.py:603 msgid "Deleting backup stack" msgstr "" -#: heat/engine/parser.py:618 +#: heat/engine/parser.py:632 #, python-format msgid "Unexpected action %s passed to delete!" msgstr "" -#: heat/engine/parser.py:698 +#: heat/engine/parser.py:712 #, python-format msgid "%s is already suspended" msgstr "" -#: heat/engine/parser.py:717 +#: heat/engine/parser.py:731 #, python-format msgid "%s is already resumed" msgstr "" -#: heat/engine/parser.py:745 +#: heat/engine/parser.py:762 #, python-format msgid "delete: %s" msgstr "" -#: heat/engine/parser.py:753 +#: heat/engine/parser.py:770 msgid "create" msgstr "" -#: heat/engine/plugin_manager.py:97 +#: heat/engine/plugin_manager.py:96 #, python-format msgid "Failed to load %(mapping_name)s from %(module)s" msgstr "" -#: heat/engine/plugin_manager.py:104 +#: heat/engine/plugin_manager.py:103 #, python-format msgid "Invalid type for %(mapping_name)s from %(module)s" msgstr "" -#: heat/engine/properties.py:74 +#: heat/engine/properties.py:75 #, python-format msgid "Unknown key(s) %s" msgstr "" -#: heat/engine/properties.py:95 +#: heat/engine/properties.py:96 #, python-format msgid "No %s specified" msgstr "" -#: heat/engine/properties.py:104 +#: heat/engine/properties.py:105 #, python-format msgid "%(schema)s supplied for %(type)s %(data)s" msgstr "" -#: heat/engine/properties.py:199 +#: heat/engine/properties.py:200 #, python-format msgid "Value '%s' is not an integer" msgstr "" -#: heat/engine/properties.py:212 +#: heat/engine/properties.py:213 msgid "Value must be a string" msgstr "" -#: heat/engine/properties.py:232 +#: heat/engine/properties.py:233 #, python-format msgid "\"%s\" is not a map" msgstr "" -#: heat/engine/properties.py:241 +#: heat/engine/properties.py:242 #, python-format msgid "\"%s\" is not a list" msgstr "" -#: heat/engine/properties.py:253 +#: heat/engine/properties.py:254 #, python-format msgid "\"%s\" is not a valid boolean" msgstr "" -#: heat/engine/properties.py:312 +#: heat/engine/properties.py:313 #, python-format msgid "Property error : %s" msgstr "" -#: heat/engine/properties.py:317 +#: heat/engine/properties.py:318 #, python-format msgid "Property %s not implemented yet" msgstr "" -#: heat/engine/properties.py:322 +#: heat/engine/properties.py:323 #, python-format msgid "Unknown Property %s" msgstr "" -#: heat/engine/properties.py:327 +#: heat/engine/properties.py:328 #, python-format msgid "%(prefix)sInvalid Property %(key)s" msgstr "" -#: heat/engine/properties.py:343 +#: heat/engine/properties.py:345 #, python-format msgid "%(prefix)sProperty %(key)s not assigned" msgstr "" -#: heat/engine/resource.py:58 heat/engine/resource.py:61 +#: heat/engine/resource.py:60 #, python-format msgid "The Resource %s requires replacement." msgstr "" -#: heat/engine/resource.py:433 +#: heat/engine/resource.py:422 msgid "Error marking resource as failed" msgstr "" -#: heat/engine/resource.py:452 +#: heat/engine/resource.py:441 #, python-format msgid "State %s invalid for create" msgstr "" -#: heat/engine/resource.py:490 +#: heat/engine/resource.py:479 msgid "Resource ID was not provided." msgstr "" -#: heat/engine/resource.py:536 +#: heat/engine/resource.py:525 msgid "Resource update already requested" msgstr "" -#: heat/engine/resource.py:560 +#: heat/engine/resource.py:555 #, python-format msgid "Resource %s update requires replacement" msgstr "" -#: heat/engine/resource.py:581 +#: heat/engine/resource.py:558 +#, python-format +msgid "update %(resource)s : %(err)s" +msgstr "" + +#: heat/engine/resource.py:577 #, python-format msgid "State %s invalid for suspend" msgstr "" -#: heat/engine/resource.py:585 +#: heat/engine/resource.py:581 #, python-format msgid "suspending %s" msgstr "" -#: heat/engine/resource.py:597 +#: heat/engine/resource.py:593 #, python-format msgid "State %s invalid for resume" msgstr "" -#: heat/engine/resource.py:601 +#: heat/engine/resource.py:597 #, python-format msgid "resuming %s" msgstr "" -#: heat/engine/resource.py:637 +#: heat/engine/resource.py:633 msgid "limit cannot be less than 4" msgstr "" -#: heat/engine/resource.py:643 +#: heat/engine/resource.py:639 #, python-format msgid "Validating %s" msgstr "" -#: heat/engine/resource.py:652 +#: heat/engine/resource.py:649 #, python-format msgid "Invalid DeletionPolicy %s" msgstr "" -#: heat/engine/resource.py:656 +#: heat/engine/resource.py:653 msgid "Snapshot DeletionPolicy not supported" msgstr "" -#: heat/engine/resource.py:674 +#: heat/engine/resource.py:671 #, python-format msgid "deleting %s" msgstr "" -#: heat/engine/resource.py:696 +#: heat/engine/resource.py:693 #, python-format msgid "Delete %s" -msgstr "" +msgstr "刪除 %s" -#: heat/engine/resource.py:706 +#: heat/engine/resource.py:703 msgid "Error marking resource deletion failed" msgstr "" -#: heat/engine/resource.py:737 +#: heat/engine/resource.py:734 #, python-format msgid "db error %s" msgstr "" -#: heat/engine/resource.py:756 heat/engine/resource.py:767 -#: heat/engine/resource.py:784 +#: heat/engine/resource.py:753 heat/engine/resource.py:778 #, python-format msgid "DB error %s" msgstr "" -#: heat/engine/resource.py:888 +#: heat/engine/resource.py:882 #, python-format msgid "Resource %s is not able to receive a signal" msgstr "" -#: heat/engine/resource.py:895 +#: heat/engine/resource.py:889 #, python-format msgid "signal %(name)s : %(msg)s" msgstr "" -#: heat/engine/resource.py:908 +#: heat/engine/resource.py:902 #, python-format msgid "Resource %s does not implement metadata update" msgstr "" @@ -1620,148 +1626,148 @@ msgstr "" msgid "%s Timed out" msgstr "" -#: heat/engine/scheduler.py:130 +#: heat/engine/scheduler.py:131 #, python-format msgid "%s sleeping" msgstr "" -#: heat/engine/scheduler.py:153 +#: heat/engine/scheduler.py:154 #, python-format msgid "%s starting" msgstr "" -#: heat/engine/scheduler.py:165 +#: heat/engine/scheduler.py:166 #, python-format msgid "%s done (not resumable)" msgstr "" -#: heat/engine/scheduler.py:176 +#: heat/engine/scheduler.py:177 #, python-format msgid "%s timed out" msgstr "" -#: heat/engine/scheduler.py:186 +#: heat/engine/scheduler.py:187 #, python-format msgid "%s running" msgstr "" -#: heat/engine/scheduler.py:192 +#: heat/engine/scheduler.py:193 #, python-format msgid "%s complete" msgstr "" -#: heat/engine/scheduler.py:209 +#: heat/engine/scheduler.py:210 #, python-format msgid "%s cancelled" msgstr "" -#: heat/engine/service.py:197 +#: heat/engine/service.py:196 #, python-format msgid "Periodic watcher task for stack %s" msgstr "" -#: heat/engine/service.py:201 +#: heat/engine/service.py:200 #, python-format msgid "Unable to retrieve stack %s for periodic task" msgstr "" -#: heat/engine/service.py:215 +#: heat/engine/service.py:214 #, python-format -msgid "periodic_task db error (%(msg)s) %(ex)s" +msgid "periodic_task db error watch rule removed? %(ex)s" msgstr "" -#: heat/engine/service.py:289 +#: heat/engine/service.py:288 #, python-format msgid "Starting listener for engine %s" msgstr "" -#: heat/engine/service.py:439 +#: heat/engine/service.py:438 #, python-format msgid "" "You have reached the maximum stacks per tenant, %d. Please delete some " "stacks." msgstr "" -#: heat/engine/service.py:464 +#: heat/engine/service.py:463 #, python-format msgid "previewing stack %s" msgstr "" -#: heat/engine/service.py:492 heat/engine/service.py:545 +#: heat/engine/service.py:491 heat/engine/service.py:544 #, python-format msgid "template is %s" msgstr "" -#: heat/engine/service.py:506 +#: heat/engine/service.py:505 #, python-format msgid "Stack create failed, status %s" msgstr "" -#: heat/engine/service.py:553 +#: heat/engine/service.py:552 msgid "Updating a stack when it is suspended" msgstr "" -#: heat/engine/service.py:557 +#: heat/engine/service.py:556 msgid "Updating a stack when another action is in progress" msgstr "" -#: heat/engine/service.py:592 +#: heat/engine/service.py:594 msgid "validate_template" msgstr "" -#: heat/engine/service.py:594 +#: heat/engine/service.py:596 msgid "No Template provided." msgstr "" -#: heat/engine/service.py:687 +#: heat/engine/service.py:684 #, python-format msgid "Deleting stack %s" msgstr "" -#: heat/engine/service.py:707 +#: heat/engine/service.py:704 #, python-format msgid "Successfully stopped remote task on engine %s" msgstr "" -#: heat/engine/service.py:739 +#: heat/engine/service.py:736 #, python-format msgid "abandoning stack %s" msgstr "" -#: heat/engine/service.py:854 +#: heat/engine/service.py:870 #, python-format msgid "Access denied to resource %s" msgstr "" -#: heat/engine/service.py:935 +#: heat/engine/service.py:951 #, python-format msgid "suspending stack %s" msgstr "" -#: heat/engine/service.py:950 +#: heat/engine/service.py:966 #, python-format msgid "resuming stack %s" msgstr "" -#: heat/engine/service.py:1033 +#: heat/engine/service.py:1049 #, python-format msgid "show_watch (all) db error %s" msgstr "" -#: heat/engine/service.py:1056 +#: heat/engine/service.py:1072 msgid "Filtering by namespace/metric not yet supported" msgstr "" -#: heat/engine/service.py:1062 +#: heat/engine/service.py:1078 #, python-format msgid "show_metric (all) db error %s" msgstr "" -#: heat/engine/service.py:1124 +#: heat/engine/service.py:1140 msgid "server_id must be specified" msgstr "" -#: heat/engine/signal_responder.py:79 +#: heat/engine/signal_responder.py:76 msgid "Cannot generate signed url, no stored access/secret key" msgstr "" @@ -1811,89 +1817,109 @@ msgstr "" msgid "Engine %(engine)s released lock on stack %(stack)s" msgstr "" -#: heat/engine/stack_resource.py:70 +#: heat/engine/stack_resource.py:68 msgid "Nested stack not found in DB" msgstr "" -#: heat/engine/stack_resource.py:107 +#: heat/engine/stack_resource.py:105 #, python-format msgid "Preview of '%s' not yet implemented" msgstr "" -#: heat/engine/stack_resource.py:136 +#: heat/engine/stack_resource.py:134 #, python-format msgid "Recursion depth exceeds %d." msgstr "" -#: heat/engine/stack_resource.py:188 +#: heat/engine/stack_resource.py:189 #, python-format msgid "Cannot update %s, stack not created" msgstr "" -#: heat/engine/stack_resource.py:228 +#: heat/engine/stack_resource.py:232 #, python-format msgid "Nested stack UPDATE failed: %s" msgstr "" -#: heat/engine/stack_resource.py:239 +#: heat/engine/stack_resource.py:243 msgid "Stack not found to delete" msgstr "" -#: heat/engine/stack_resource.py:262 +#: heat/engine/stack_resource.py:266 #, python-format msgid "Cannot suspend %s, stack not created" msgstr "" -#: heat/engine/stack_resource.py:284 +#: heat/engine/stack_resource.py:288 #, python-format msgid "Cannot resume %s, stack not created" msgstr "" -#: heat/engine/stack_user.py:86 +#: heat/engine/stack_user.py:84 msgid "Reverting to legacy user delete path" msgstr "" -#: heat/engine/stack_user.py:123 +#: heat/engine/stack_user.py:121 #, python-format msgid "Error creating ec2 keypair for user %s" msgstr "" -#: heat/engine/support.py:29 +#: heat/engine/support.py:28 #, python-format msgid "Specified status is invalid, defaulting to %s" msgstr "" -#: heat/engine/template.py:67 +#: heat/engine/template.py:68 #, python-format msgid "Ambiguous versions (%s)" msgstr "" -#: heat/engine/template.py:88 +#: heat/engine/template.py:94 #, python-format -msgid "Unknown version (%(version)s). Should be one of: %(available)s" +msgid "\"%(version)s\". \"%(version_type)s\" should be one of: %(available)s" msgstr "" -#: heat/engine/update.py:82 +#: heat/engine/template.py:97 +#, python-format +msgid "\"%(version)s\". \"%(version_type)s\" should be: %(available)s" +msgstr "" + +#: heat/engine/template.py:195 +msgid "" +"Template does not contain any resources, so the template would not really" +" do anything when being instantiated." +msgstr "" + +#: heat/engine/template.py:202 +msgid "Every Resource object must contain a Type member." +msgstr "" + +#: heat/engine/template.py:209 +#, python-format +msgid "Resources must contain Resource. Found a [%s] instead" +msgstr "" + +#: heat/engine/update.py:79 #, python-format msgid "Deleting backup resource %s" msgstr "" -#: heat/engine/update.py:106 +#: heat/engine/update.py:103 #, python-format msgid "Swapping in backup Resource %s" msgstr "" -#: heat/engine/update.py:112 +#: heat/engine/update.py:109 #, python-format msgid "Deleting backup Resource %s" msgstr "" -#: heat/engine/update.py:117 +#: heat/engine/update.py:114 #, python-format msgid "Backing up existing Resource %s" msgstr "" -#: heat/engine/update.py:137 +#: heat/engine/update.py:134 #, python-format msgid "Resource %(res_name)s for stack %(stack_name)s updated" msgstr "" @@ -1968,569 +1994,565 @@ msgstr "" msgid "Arguments to \"%s\" must be of the form [resource_name, attribute]" msgstr "" -#: heat/engine/cfn/functions.py:196 +#: heat/engine/cfn/functions.py:197 #, python-format msgid "Arguments to \"%s\" must be of the form [index, collection]" msgstr "" -#: heat/engine/cfn/functions.py:222 +#: heat/engine/cfn/functions.py:223 #, python-format msgid "\"%(fn_name)s\": %(err)s" msgstr "" -#: heat/engine/cfn/functions.py:226 +#: heat/engine/cfn/functions.py:227 #, python-format msgid "Index to \"%s\" must be a string" msgstr "" -#: heat/engine/cfn/functions.py:233 +#: heat/engine/cfn/functions.py:234 #, python-format msgid "Index to \"%s\" must be an integer" msgstr "" -#: heat/engine/cfn/functions.py:244 +#: heat/engine/cfn/functions.py:245 #, python-format msgid "Arguments to %s not fully resolved" msgstr "" -#: heat/engine/cfn/functions.py:269 heat/engine/cfn/functions.py:275 -#: heat/engine/cfn/functions.py:320 heat/engine/cfn/functions.py:326 -#: heat/engine/cfn/functions.py:379 heat/engine/cfn/functions.py:385 +#: heat/engine/cfn/functions.py:270 heat/engine/cfn/functions.py:276 +#: heat/engine/cfn/functions.py:321 heat/engine/cfn/functions.py:327 +#: heat/engine/cfn/functions.py:380 heat/engine/cfn/functions.py:386 #, python-format msgid "Incorrect arguments to \"%(fn_name)s\" should be: %(example)s" msgstr "" -#: heat/engine/cfn/functions.py:282 +#: heat/engine/cfn/functions.py:283 #, python-format msgid "\"%s\" must operate on a list" msgstr "" -#: heat/engine/cfn/functions.py:286 +#: heat/engine/cfn/functions.py:287 #, python-format msgid "\"%s\" delimiter must be a string" msgstr "" -#: heat/engine/cfn/functions.py:293 +#: heat/engine/cfn/functions.py:294 msgid "Items to join must be strings" msgstr "" -#: heat/engine/cfn/functions.py:333 +#: heat/engine/cfn/functions.py:334 #, python-format msgid "Delimiter for %s must be string" msgstr "" -#: heat/engine/cfn/functions.py:336 +#: heat/engine/cfn/functions.py:337 #, python-format msgid "String to split must be string; got %s" msgstr "" -#: heat/engine/cfn/functions.py:367 +#: heat/engine/cfn/functions.py:368 #, python-format msgid "\"%s\" parameters must be a mapping" msgstr "" -#: heat/engine/cfn/functions.py:395 +#: heat/engine/cfn/functions.py:396 #, python-format msgid "\"%s\" template must be a string" msgstr "" -#: heat/engine/cfn/functions.py:398 +#: heat/engine/cfn/functions.py:399 #, python-format msgid "\"%s\" params must be a map" msgstr "" -#: heat/engine/cfn/functions.py:404 +#: heat/engine/cfn/functions.py:405 #, python-format msgid "\"%s\" param placeholders must be strings" msgstr "" -#: heat/engine/cfn/functions.py:411 +#: heat/engine/cfn/functions.py:412 #, python-format msgid "\"%s\" params must be strings or numbers" msgstr "" -#: heat/engine/cfn/functions.py:435 +#: heat/engine/cfn/functions.py:436 #, python-format msgid "\"%s\" argument must be a string" msgstr "" -#: heat/engine/cfn/functions.py:470 +#: heat/engine/cfn/functions.py:471 #, python-format msgid "Wrong Arguments try: \"%s\"" msgstr "" -#: heat/engine/cfn/functions.py:473 +#: heat/engine/cfn/functions.py:474 #, python-format msgid "%s Key Name must be a string" msgstr "" -#: heat/engine/cfn/functions.py:476 +#: heat/engine/cfn/functions.py:477 #, python-format msgid "%s Value Name must be a string" msgstr "" -#: heat/engine/cfn/functions.py:482 +#: heat/engine/cfn/functions.py:483 msgid "Member list must be a list" msgstr "" -#: heat/engine/cfn/functions.py:486 +#: heat/engine/cfn/functions.py:487 msgid "Member list items must be strings" msgstr "" -#: heat/engine/cfn/functions.py:521 +#: heat/engine/cfn/functions.py:522 #, python-format msgid "Incorrect arguments to \"%(fn_name)s\" should be one of: %(allowed)s" msgstr "" -#: heat/engine/cfn/functions.py:538 -#, python-format -msgid "\"%(fn_name)s\" key \"%(key)s\" not found" -msgstr "" - -#: heat/engine/cfn/template.py:32 heat/engine/hot/template.py:49 -#: heat/engine/hot/template.py:53 +#: heat/engine/cfn/template.py:33 heat/engine/hot/template.py:48 +#: heat/engine/hot/template.py:52 #, python-format msgid "\"%s\" is not a valid template section" msgstr "" -#: heat/engine/cfn/template.py:35 heat/engine/hot/template.py:56 +#: heat/engine/cfn/template.py:36 heat/engine/hot/template.py:55 #, python-format msgid "Section %s can not be accessed directly." msgstr "" -#: heat/engine/hot/functions.py:47 +#: heat/engine/hot/functions.py:46 #, python-format msgid "Function \"%s\" must have arguments" msgstr "" -#: heat/engine/hot/functions.py:57 +#: heat/engine/hot/functions.py:56 #, python-format msgid "Argument to \"%s\" must be string or list" msgstr "" -#: heat/engine/hot/functions.py:61 +#: heat/engine/hot/functions.py:60 #, python-format msgid "Parameter name in \"%s\" must be string" msgstr "" -#: heat/engine/hot/functions.py:72 heat/engine/hot/functions.py:124 +#: heat/engine/hot/functions.py:71 heat/engine/hot/functions.py:123 #, python-format msgid "\"%s\" can't traverse path" msgstr "" -#: heat/engine/hot/functions.py:75 heat/engine/hot/functions.py:127 +#: heat/engine/hot/functions.py:74 heat/engine/hot/functions.py:126 #, python-format msgid "Path components in \"%s\" must be strings" msgstr "" -#: heat/engine/hot/functions.py:102 +#: heat/engine/hot/functions.py:101 #, python-format msgid "Argument to \"%s\" must be a list" msgstr "" -#: heat/engine/hot/functions.py:106 +#: heat/engine/hot/functions.py:105 #, python-format msgid "" "Arguments to \"%s\" must be of the form [resource_name, attribute, " "(path), ...]" msgstr "" -#: heat/engine/hot/functions.py:161 +#: heat/engine/hot/functions.py:160 #, python-format msgid "Arguments to \"%s\" must be a map" msgstr "" -#: heat/engine/hot/functions.py:173 +#: heat/engine/hot/functions.py:172 #, python-format msgid "\"str_replace\" syntax should be %s" msgstr "" -#: heat/engine/hot/functions.py:194 +#: heat/engine/hot/functions.py:193 #, python-format msgid "Argument to \"%s\" must be a string" msgstr "" -#: heat/engine/hot/functions.py:201 +#: heat/engine/hot/functions.py:200 #, python-format msgid "" "No content found in the \"files\" section for %(fn_name)s path: " "%(file_key)s" msgstr "" -#: heat/engine/hot/parameters.py:68 -msgid "Invalid parameter constraints, expected a list" +#: heat/engine/hot/parameters.py:70 +#, python-format +msgid "Invalid parameter constraints for parameter %s, expected a list" msgstr "" -#: heat/engine/hot/parameters.py:100 +#: heat/engine/hot/parameters.py:103 msgid "No constraint expressed" msgstr "" -#: heat/engine/hot/template.py:107 +#: heat/engine/hot/template.py:106 #, python-format msgid "\"%s\" is not a valid keyword inside a resource definition" msgstr "" -#: heat/engine/hot/template.py:127 +#: heat/engine/hot/template.py:126 #, python-format msgid "\"%s\" is not a valid keyword inside an output definition" msgstr "" -#: heat/engine/resources/autoscaling.py:103 -#: heat/engine/resources/autoscaling.py:462 -#: heat/engine/resources/autoscaling.py:495 -#: heat/engine/resources/autoscaling.py:500 -#: heat/engine/resources/autoscaling.py:783 -#: heat/engine/resources/autoscaling.py:788 -#: heat/engine/resources/autoscaling.py:793 +#: heat/engine/resources/autoscaling.py:104 +#: heat/engine/resources/autoscaling.py:463 +#: heat/engine/resources/autoscaling.py:496 +#: heat/engine/resources/autoscaling.py:501 +#: heat/engine/resources/autoscaling.py:784 +#: heat/engine/resources/autoscaling.py:789 +#: heat/engine/resources/autoscaling.py:794 #: heat/engine/resources/instance.py:173 heat/engine/resources/instance.py:178 #: heat/engine/resources/instance.py:183 heat/engine/resources/instance.py:188 #: heat/engine/resources/instance.py:193 heat/engine/resources/instance.py:198 #: heat/engine/resources/instance.py:215 heat/engine/resources/instance.py:259 -#: heat/engine/resources/loadbalancer.py:310 -#: heat/engine/resources/loadbalancer.py:315 -#: heat/engine/resources/loadbalancer.py:324 -#: heat/engine/resources/loadbalancer.py:329 -#: heat/engine/resources/loadbalancer.py:334 -#: heat/engine/resources/loadbalancer.py:339 heat/engine/resources/user.py:48 -#: heat/engine/resources/user.py:52 heat/engine/resources/user.py:139 -#: heat/engine/resources/user.py:149 +#: heat/engine/resources/loadbalancer.py:309 +#: heat/engine/resources/loadbalancer.py:314 +#: heat/engine/resources/loadbalancer.py:323 +#: heat/engine/resources/loadbalancer.py:328 +#: heat/engine/resources/loadbalancer.py:333 +#: heat/engine/resources/loadbalancer.py:338 heat/engine/resources/user.py:47 +#: heat/engine/resources/user.py:51 heat/engine/resources/user.py:138 +#: heat/engine/resources/user.py:148 msgid "Not Implemented." msgstr "" -#: heat/engine/resources/autoscaling.py:108 -#: heat/engine/resources/autoscaling.py:467 +#: heat/engine/resources/autoscaling.py:109 +#: heat/engine/resources/autoscaling.py:468 msgid "Name of LaunchConfiguration resource." msgstr "" -#: heat/engine/resources/autoscaling.py:114 +#: heat/engine/resources/autoscaling.py:115 msgid "Desired number of instances." msgstr "" -#: heat/engine/resources/autoscaling.py:120 -#: heat/engine/resources/autoscaling.py:508 +#: heat/engine/resources/autoscaling.py:121 +#: heat/engine/resources/autoscaling.py:509 msgid "List of LoadBalancer resources." msgstr "" -#: heat/engine/resources/autoscaling.py:124 -#: heat/engine/resources/autoscaling.py:516 +#: heat/engine/resources/autoscaling.py:125 +#: heat/engine/resources/autoscaling.py:517 msgid "Tags to attach to this group." msgstr "" -#: heat/engine/resources/autoscaling.py:144 +#: heat/engine/resources/autoscaling.py:145 msgid "A comma-delimited list of server ip addresses. (Heat extension)." msgstr "" -#: heat/engine/resources/autoscaling.py:403 +#: heat/engine/resources/autoscaling.py:404 #, python-format msgid "Unsupported resource '%s' in LoadBalancerNames" msgstr "" -#: heat/engine/resources/autoscaling.py:473 +#: heat/engine/resources/autoscaling.py:474 msgid "Maximum number of instances in the group." msgstr "" -#: heat/engine/resources/autoscaling.py:479 +#: heat/engine/resources/autoscaling.py:480 msgid "Minimum number of instances in the group." msgstr "" -#: heat/engine/resources/autoscaling.py:485 -#: heat/engine/resources/autoscaling.py:853 -#: heat/engine/resources/autoscaling.py:954 -#: heat/engine/resources/autoscaling.py:1094 +#: heat/engine/resources/autoscaling.py:486 +#: heat/engine/resources/autoscaling.py:854 +#: heat/engine/resources/autoscaling.py:955 +#: heat/engine/resources/autoscaling.py:1095 msgid "Cooldown period, in seconds." msgstr "" -#: heat/engine/resources/autoscaling.py:490 +#: heat/engine/resources/autoscaling.py:491 msgid "Desired initial number of instances." msgstr "" -#: heat/engine/resources/autoscaling.py:512 +#: heat/engine/resources/autoscaling.py:513 msgid "List of VPC subnet identifiers." msgstr "" -#: heat/engine/resources/autoscaling.py:620 +#: heat/engine/resources/autoscaling.py:621 #, python-format msgid "%(name)s NOT performing scaling adjustment, cooldown %(cooldown)s" msgstr "" -#: heat/engine/resources/autoscaling.py:647 +#: heat/engine/resources/autoscaling.py:648 #, python-format msgid "truncating growth to %s" msgstr "" -#: heat/engine/resources/autoscaling.py:650 +#: heat/engine/resources/autoscaling.py:651 #, python-format msgid "can not exceed %s" msgstr "" -#: heat/engine/resources/autoscaling.py:654 +#: heat/engine/resources/autoscaling.py:655 #, python-format msgid "truncating shrinkage to %s" msgstr "" -#: heat/engine/resources/autoscaling.py:657 +#: heat/engine/resources/autoscaling.py:658 #, python-format msgid "can not be less than %s" msgstr "" -#: heat/engine/resources/autoscaling.py:661 +#: heat/engine/resources/autoscaling.py:662 #, python-format msgid "no change in capacity %d" msgstr "" -#: heat/engine/resources/autoscaling.py:671 +#: heat/engine/resources/autoscaling.py:672 #, python-format msgid "Start resizing the group %(group)s" msgstr "" -#: heat/engine/resources/autoscaling.py:686 +#: heat/engine/resources/autoscaling.py:687 msgid "Failed sending error notification" msgstr "" -#: heat/engine/resources/autoscaling.py:691 +#: heat/engine/resources/autoscaling.py:692 #, python-format msgid "End resizing the group %(group)s" msgstr "" -#: heat/engine/resources/autoscaling.py:719 +#: heat/engine/resources/autoscaling.py:720 msgid "MinSize can not be greater than MaxSize" msgstr "" -#: heat/engine/resources/autoscaling.py:723 +#: heat/engine/resources/autoscaling.py:724 msgid "The size of AutoScalingGroup can not be less than zero" msgstr "" -#: heat/engine/resources/autoscaling.py:729 +#: heat/engine/resources/autoscaling.py:730 msgid "DesiredCapacity must be between MinSize and MaxSize" msgstr "" -#: heat/engine/resources/autoscaling.py:738 +#: heat/engine/resources/autoscaling.py:739 msgid "Anything other than one VPCZoneIdentifier" msgstr "" -#: heat/engine/resources/autoscaling.py:761 +#: heat/engine/resources/autoscaling.py:762 #: heat/engine/resources/instance.py:146 msgid "Glance image ID or name." msgstr "" -#: heat/engine/resources/autoscaling.py:766 +#: heat/engine/resources/autoscaling.py:767 #: heat/engine/resources/instance.py:156 msgid "Nova instance type (flavor)." msgstr "" -#: heat/engine/resources/autoscaling.py:771 +#: heat/engine/resources/autoscaling.py:772 #: heat/engine/resources/instance.py:162 msgid "Optional Nova keypair name." msgstr "" -#: heat/engine/resources/autoscaling.py:775 +#: heat/engine/resources/autoscaling.py:776 #: heat/engine/resources/instance.py:267 msgid "User data to pass to instance." msgstr "" -#: heat/engine/resources/autoscaling.py:779 +#: heat/engine/resources/autoscaling.py:780 #: heat/engine/resources/instance.py:203 msgid "Security group names to assign." msgstr "" -#: heat/engine/resources/autoscaling.py:798 +#: heat/engine/resources/autoscaling.py:799 #: heat/engine/resources/instance.py:242 msgid "Scheduler hints to pass to Nova (Heat extension)." msgstr "" -#: heat/engine/resources/autoscaling.py:831 +#: heat/engine/resources/autoscaling.py:832 msgid "" "Resource definition for the resources in the group, in HOT format. The " "value of this property is the definition of a resource just as if it had " "been declared in the template itself." msgstr "" -#: heat/engine/resources/autoscaling.py:839 +#: heat/engine/resources/autoscaling.py:840 msgid "Maximum number of resources in the group." msgstr "" -#: heat/engine/resources/autoscaling.py:846 +#: heat/engine/resources/autoscaling.py:847 msgid "Minimum number of resources in the group." msgstr "" -#: heat/engine/resources/autoscaling.py:858 +#: heat/engine/resources/autoscaling.py:859 msgid "Desired initial number of resources." msgstr "" -#: heat/engine/resources/autoscaling.py:932 +#: heat/engine/resources/autoscaling.py:933 msgid "AutoScaling group name to apply policy to." msgstr "" -#: heat/engine/resources/autoscaling.py:937 -#: heat/engine/resources/autoscaling.py:1077 +#: heat/engine/resources/autoscaling.py:938 +#: heat/engine/resources/autoscaling.py:1078 msgid "Size of adjustment." msgstr "" -#: heat/engine/resources/autoscaling.py:943 -#: heat/engine/resources/autoscaling.py:1083 +#: heat/engine/resources/autoscaling.py:944 +#: heat/engine/resources/autoscaling.py:1084 msgid "Type of adjustment (absolute or percentage)." msgstr "" -#: heat/engine/resources/autoscaling.py:962 +#: heat/engine/resources/autoscaling.py:963 msgid "A signed url to handle the alarm. (Heat extension)." msgstr "" -#: heat/engine/resources/autoscaling.py:987 +#: heat/engine/resources/autoscaling.py:988 #: heat/engine/resources/instance.py:72 heat/tests/generic_resource.py:115 #, python-format msgid "Cannot signal resource during %s" msgstr "" -#: heat/engine/resources/autoscaling.py:1004 +#: heat/engine/resources/autoscaling.py:1005 #: heat/engine/resources/instance.py:80 #, python-format msgid "%(name)s Alarm, new state %(state)s" msgstr "" -#: heat/engine/resources/autoscaling.py:1010 +#: heat/engine/resources/autoscaling.py:1011 #, python-format msgid "%(name)s NOT performing scaling action, cooldown %(cooldown)s" msgstr "" -#: heat/engine/resources/autoscaling.py:1019 +#: heat/engine/resources/autoscaling.py:1020 #, python-format msgid "Alarm %(alarm)s could not find scaling group named \"%(group)s\"" msgstr "" -#: heat/engine/resources/autoscaling.py:1024 +#: heat/engine/resources/autoscaling.py:1025 #, python-format msgid "" "%(name)s Alarm, adjusting Group %(group)s with id %(asgn_id)s by " "%(filter)s" msgstr "" -#: heat/engine/resources/autoscaling.py:1072 +#: heat/engine/resources/autoscaling.py:1073 msgid "AutoScaling group ID to apply policy to." msgstr "" -#: heat/engine/resources/autoscaling.py:1102 +#: heat/engine/resources/autoscaling.py:1103 msgid "A signed url to handle the alarm." msgstr "" -#: heat/engine/resources/cloud_watch.py:42 +#: heat/engine/resources/cloud_watch.py:41 msgid "Operator used to compare the specified Statistic with Threshold." msgstr "" -#: heat/engine/resources/cloud_watch.py:54 -#: heat/engine/resources/ceilometer/alarm.py:34 +#: heat/engine/resources/cloud_watch.py:53 +#: heat/engine/resources/ceilometer/alarm.py:33 msgid "Description for the alarm." msgstr "" -#: heat/engine/resources/cloud_watch.py:59 -#: heat/engine/resources/ceilometer/alarm.py:116 +#: heat/engine/resources/cloud_watch.py:58 +#: heat/engine/resources/ceilometer/alarm.py:115 msgid "Number of periods to evaluate over." msgstr "" -#: heat/engine/resources/cloud_watch.py:64 +#: heat/engine/resources/cloud_watch.py:63 msgid "Metric name watched by the alarm." msgstr "" -#: heat/engine/resources/cloud_watch.py:68 +#: heat/engine/resources/cloud_watch.py:67 msgid "Namespace for the metric." msgstr "" -#: heat/engine/resources/cloud_watch.py:72 -#: heat/engine/resources/ceilometer/alarm.py:126 +#: heat/engine/resources/cloud_watch.py:71 +#: heat/engine/resources/ceilometer/alarm.py:125 msgid "Period (seconds) to evaluate over." msgstr "" -#: heat/engine/resources/cloud_watch.py:77 +#: heat/engine/resources/cloud_watch.py:76 msgid "Metric statistic to evaluate." msgstr "" -#: heat/engine/resources/cloud_watch.py:86 +#: heat/engine/resources/cloud_watch.py:85 msgid "A list of actions to execute when state transitions to alarm." msgstr "" -#: heat/engine/resources/cloud_watch.py:91 +#: heat/engine/resources/cloud_watch.py:90 msgid "A list of actions to execute when state transitions to ok." msgstr "" -#: heat/engine/resources/cloud_watch.py:96 +#: heat/engine/resources/cloud_watch.py:95 msgid "" "A list of dimensions (arbitrary name/value pairs) associated with the " "metric." msgstr "" -#: heat/engine/resources/cloud_watch.py:101 +#: heat/engine/resources/cloud_watch.py:100 msgid "A list of actions to execute when state transitions to insufficient-data." msgstr "" -#: heat/engine/resources/cloud_watch.py:107 -#: heat/engine/resources/ceilometer/alarm.py:140 +#: heat/engine/resources/cloud_watch.py:106 +#: heat/engine/resources/ceilometer/alarm.py:139 msgid "Threshold to evaluate against." msgstr "" -#: heat/engine/resources/cloud_watch.py:112 +#: heat/engine/resources/cloud_watch.py:111 msgid "Unit for the metric." msgstr "" -#: heat/engine/resources/eip.py:38 +#: heat/engine/resources/eip.py:37 msgid "Set to \"vpc\" to have IP address allocation associated to your VPC." msgstr "" -#: heat/engine/resources/eip.py:46 +#: heat/engine/resources/eip.py:45 msgid "Instance ID to associate with EIP." msgstr "" -#: heat/engine/resources/eip.py:51 +#: heat/engine/resources/eip.py:50 msgid "" "ID that AWS assigns to represent the allocation of the address for use " "with Amazon VPC. Returned only for VPC elastic IP addresses." msgstr "" -#: heat/engine/resources/eip.py:68 heat/engine/resources/eip.py:75 +#: heat/engine/resources/eip.py:67 heat/engine/resources/eip.py:74 #, python-format msgid "Floating IPs not found: %s" msgstr "" -#: heat/engine/resources/eip.py:92 heat/engine/resources/eip.py:109 +#: heat/engine/resources/eip.py:91 heat/engine/resources/eip.py:108 #, python-format msgid "ElasticIp create %s" msgstr "" -#: heat/engine/resources/eip.py:95 +#: heat/engine/resources/eip.py:94 #, python-format msgid "Domain property can not be set on resource %s without Neutron available" msgstr "" -#: heat/engine/resources/eip.py:102 +#: heat/engine/resources/eip.py:101 msgid "" "No default floating IP pool configured. Set 'default_floating_pool' in " "nova.conf." msgstr "" -#: heat/engine/resources/eip.py:159 +#: heat/engine/resources/eip.py:158 msgid "Instance ID to associate with EIP specified by EIP property." msgstr "" -#: heat/engine/resources/eip.py:163 +#: heat/engine/resources/eip.py:162 msgid "EIP address to associate with instance." msgstr "" -#: heat/engine/resources/eip.py:167 +#: heat/engine/resources/eip.py:166 msgid "Allocation ID for VPC EIP address." msgstr "" -#: heat/engine/resources/eip.py:171 +#: heat/engine/resources/eip.py:170 msgid "Network interface ID to associate with EIP." msgstr "" -#: heat/engine/resources/eip.py:188 +#: heat/engine/resources/eip.py:187 msgid "Skipping association, InstanceId not specified" msgstr "" -#: heat/engine/resources/eip.py:194 +#: heat/engine/resources/eip.py:193 #, python-format msgid "ElasticIpAssociation %(instance)s.add_floating_ip(%(eip)s)" msgstr "" -#: heat/engine/resources/eip.py:211 +#: heat/engine/resources/eip.py:210 msgid "Skipping association, resource not specified" msgstr "" @@ -2576,15 +2598,15 @@ msgstr "" msgid "Volumes to attach to instance." msgstr "" -#: heat/engine/resources/instance.py:278 heat/engine/resources/volume.py:318 +#: heat/engine/resources/instance.py:278 heat/engine/resources/volume.py:338 msgid "" "The device where the volume is exposed on the instance. This assignment " "may not be honored and it is advised that the path /dev/disk/by-" "id/virtio-<VolumeId> be used instead." msgstr "" -#: heat/engine/resources/instance.py:287 heat/engine/resources/volume.py:313 -#: heat/engine/resources/volume.py:490 +#: heat/engine/resources/instance.py:287 heat/engine/resources/volume.py:332 +#: heat/engine/resources/volume.py:547 msgid "The ID of the volume to be attached." msgstr "" @@ -2613,441 +2635,441 @@ msgstr "" msgid "%(name)s._resolve_attribute(%(attname)s) == %(res)s" msgstr "" -#: heat/engine/resources/instance.py:503 +#: heat/engine/resources/instance.py:511 #, python-format msgid "Creation of server %(server)s failed: %(message)s (%(code)s)" msgstr "" -#: heat/engine/resources/instance.py:510 heat/engine/resources/server.py:559 +#: heat/engine/resources/instance.py:518 heat/engine/resources/server.py:562 #, python-format msgid "Creation of server %(server)s failed with unknown status: %(status)s" msgstr "" -#: heat/engine/resources/instance.py:590 +#: heat/engine/resources/instance.py:598 #, python-format msgid "Deletion of server %s failed." msgstr "" -#: heat/engine/resources/instance.py:638 heat/engine/resources/server.py:951 +#: heat/engine/resources/instance.py:646 heat/engine/resources/server.py:985 #, python-format msgid "Cannot suspend %s, resource_id not set" msgstr "" -#: heat/engine/resources/instance.py:644 heat/engine/resources/instance.py:700 +#: heat/engine/resources/instance.py:652 heat/engine/resources/instance.py:708 #, python-format msgid "Failed to find instance %s" msgstr "" -#: heat/engine/resources/instance.py:647 +#: heat/engine/resources/instance.py:655 #, python-format msgid "suspending instance %s" msgstr "" -#: heat/engine/resources/instance.py:669 heat/engine/resources/server.py:977 +#: heat/engine/resources/instance.py:677 heat/engine/resources/server.py:1011 #, python-format msgid "%(name)s check_suspend_complete status = %(status)s" msgstr "" -#: heat/engine/resources/instance.py:677 +#: heat/engine/resources/instance.py:685 #, python-format msgid " nova reported unexpected instance[%(instance)s] status[%(status)s]" msgstr "" -#: heat/engine/resources/instance.py:694 heat/engine/resources/server.py:997 +#: heat/engine/resources/instance.py:702 heat/engine/resources/server.py:1031 #, python-format msgid "Cannot resume %s, resource_id not set" msgstr "" -#: heat/engine/resources/instance.py:703 +#: heat/engine/resources/instance.py:711 #, python-format msgid "resuming instance %s" msgstr "" -#: heat/engine/resources/internet_gateway.py:75 +#: heat/engine/resources/internet_gateway.py:74 #, python-format msgid "Expected 1 external network, found %d" msgstr "" -#: heat/engine/resources/internet_gateway.py:91 +#: heat/engine/resources/internet_gateway.py:90 msgid "VPC ID for this gateway association." msgstr "" -#: heat/engine/resources/internet_gateway.py:96 +#: heat/engine/resources/internet_gateway.py:95 msgid "ID of the InternetGateway." msgstr "" -#: heat/engine/resources/internet_gateway.py:100 +#: heat/engine/resources/internet_gateway.py:99 msgid "ID of the VPNGateway to attach to the VPC." msgstr "" -#: heat/engine/resources/loadbalancer.py:239 +#: heat/engine/resources/loadbalancer.py:238 msgid "The Availability Zones in which to create the load balancer." msgstr "" -#: heat/engine/resources/loadbalancer.py:244 +#: heat/engine/resources/loadbalancer.py:243 msgid "An application health check for the instances." msgstr "" -#: heat/engine/resources/loadbalancer.py:248 +#: heat/engine/resources/loadbalancer.py:247 msgid "" "The number of consecutive health probe successes required before moving " "the instance to the healthy state." msgstr "" -#: heat/engine/resources/loadbalancer.py:255 +#: heat/engine/resources/loadbalancer.py:254 msgid "" "The approximate interval, in seconds, between health checks of an " "individual instance." msgstr "" -#: heat/engine/resources/loadbalancer.py:261 +#: heat/engine/resources/loadbalancer.py:260 msgid "The port being checked." msgstr "" -#: heat/engine/resources/loadbalancer.py:266 +#: heat/engine/resources/loadbalancer.py:265 msgid "Health probe timeout, in seconds." msgstr "" -#: heat/engine/resources/loadbalancer.py:271 +#: heat/engine/resources/loadbalancer.py:270 msgid "" "The number of consecutive health probe failures required before moving " "the instance to the unhealthy state" msgstr "" -#: heat/engine/resources/loadbalancer.py:280 +#: heat/engine/resources/loadbalancer.py:279 msgid "The list of instance IDs load balanced." msgstr "" -#: heat/engine/resources/loadbalancer.py:285 +#: heat/engine/resources/loadbalancer.py:284 msgid "One or more listeners for this load balancer." msgstr "" -#: heat/engine/resources/loadbalancer.py:291 +#: heat/engine/resources/loadbalancer.py:290 msgid "TCP port on which the instance server is listening." msgstr "" -#: heat/engine/resources/loadbalancer.py:297 +#: heat/engine/resources/loadbalancer.py:296 msgid "The external load balancer port number." msgstr "" -#: heat/engine/resources/loadbalancer.py:302 +#: heat/engine/resources/loadbalancer.py:301 msgid "The load balancer transport protocol to use." msgstr "" -#: heat/engine/resources/loadbalancer.py:345 +#: heat/engine/resources/loadbalancer.py:344 msgid "The name of the hosted zone that is associated with the LoadBalancer." msgstr "" -#: heat/engine/resources/loadbalancer.py:347 +#: heat/engine/resources/loadbalancer.py:346 msgid "The ID of the hosted zone name that is associated with the LoadBalancer." msgstr "" -#: heat/engine/resources/loadbalancer.py:350 +#: heat/engine/resources/loadbalancer.py:349 msgid "The DNS name for the LoadBalancer." msgstr "" -#: heat/engine/resources/loadbalancer.py:351 +#: heat/engine/resources/loadbalancer.py:350 msgid "" "The security group that you can use as part of your inbound rules for " "your LoadBalancer's back-end instances." msgstr "" -#: heat/engine/resources/loadbalancer.py:355 +#: heat/engine/resources/loadbalancer.py:354 msgid "Owner of the source security group." msgstr "" -#: heat/engine/resources/loadbalancer.py:417 +#: heat/engine/resources/loadbalancer.py:416 #, python-format msgid "haproxy server:%s" msgstr "" -#: heat/engine/resources/loadbalancer.py:428 +#: heat/engine/resources/loadbalancer.py:427 #, python-format msgid "Using custom loadbalancer template %s" msgstr "" -#: heat/engine/resources/loadbalancer.py:497 +#: heat/engine/resources/loadbalancer.py:496 msgid "Custom LoadBalancer template can not be found" msgstr "" -#: heat/engine/resources/network_interface.py:43 +#: heat/engine/resources/network_interface.py:42 msgid "Description for this interface." msgstr "" -#: heat/engine/resources/network_interface.py:47 +#: heat/engine/resources/network_interface.py:46 msgid "List of security group IDs associated with this interface." msgstr "" -#: heat/engine/resources/network_interface.py:55 +#: heat/engine/resources/network_interface.py:54 msgid "Flag indicating if traffic to or from instance is validated." msgstr "" -#: heat/engine/resources/network_interface.py:60 +#: heat/engine/resources/network_interface.py:59 msgid "Subnet ID to associate with this interface." msgstr "" -#: heat/engine/resources/network_interface.py:67 +#: heat/engine/resources/network_interface.py:66 msgid "List of tags associated with this interface." msgstr "" -#: heat/engine/resources/network_interface.py:83 +#: heat/engine/resources/network_interface.py:82 msgid "Private IP address of the network interface." msgstr "" -#: heat/engine/resources/nova_floatingip.py:29 +#: heat/engine/resources/nova_floatingip.py:30 msgid "Allocate a floating IP from a given floating IP pool." -msgstr "" +msgstr "從浮動 IP 倉庫分配一個浮動 IP。" -#: heat/engine/resources/nova_floatingip.py:35 +#: heat/engine/resources/nova_floatingip.py:36 msgid "Pool from which floating IP is allocated." msgstr "" -#: heat/engine/resources/nova_floatingip.py:36 +#: heat/engine/resources/nova_floatingip.py:37 msgid "Allocated floating IP address." msgstr "" -#: heat/engine/resources/nova_floatingip.py:56 +#: heat/engine/resources/nova_floatingip.py:57 msgid "" "Could not allocate floating IP. Probably there is no default floating IP " "pool is configured." msgstr "" -#: heat/engine/resources/nova_floatingip.py:89 +#: heat/engine/resources/nova_floatingip.py:90 msgid "Server to assign floating IP to." msgstr "" -#: heat/engine/resources/nova_floatingip.py:94 +#: heat/engine/resources/nova_floatingip.py:95 msgid "ID of the floating IP to assign to the server." msgstr "" -#: heat/engine/resources/nova_keypair.py:50 +#: heat/engine/resources/nova_keypair.py:51 msgid "The name of the key pair." msgstr "" -#: heat/engine/resources/nova_keypair.py:55 +#: heat/engine/resources/nova_keypair.py:56 msgid "" "True if the system should remember a generated private key; False " "otherwise." msgstr "" -#: heat/engine/resources/nova_keypair.py:61 +#: heat/engine/resources/nova_keypair.py:62 msgid "" "The optional public key. This allows users to supply the public key from " "a pre-existing key pair. If not supplied, a new key pair will be " "generated." msgstr "" -#: heat/engine/resources/nova_keypair.py:68 +#: heat/engine/resources/nova_keypair.py:69 msgid "The public key." msgstr "" -#: heat/engine/resources/nova_keypair.py:69 +#: heat/engine/resources/nova_keypair.py:70 msgid "The private key if it has been saved." msgstr "" -#: heat/engine/resources/nova_utils.py:57 +#: heat/engine/resources/nova_utils.py:56 #, python-format msgid "" "Server %(name)s (%(id)s) received an OverLimit response during " "server.get(): %(exception)s" msgstr "" -#: heat/engine/resources/nova_utils.py:64 +#: heat/engine/resources/nova_utils.py:63 #, python-format msgid "" "Server \"%(name)s\" (%(id)s) received the following exception during " "server.get(): %(exception)s" msgstr "" -#: heat/engine/resources/nova_utils.py:86 -#: heat/engine/resources/nova_utils.py:100 +#: heat/engine/resources/nova_utils.py:85 +#: heat/engine/resources/nova_utils.py:98 #, python-format msgid "Image %s was not found in glance" msgstr "" -#: heat/engine/resources/nova_utils.py:94 +#: heat/engine/resources/nova_utils.py:93 #, python-format msgid "Error retrieving image list from nova: %s" msgstr "" -#: heat/engine/resources/nova_utils.py:104 +#: heat/engine/resources/nova_utils.py:102 #, python-format msgid "Multiple images %s were found in glance with name" msgstr "" -#: heat/engine/resources/nova_utils.py:319 +#: heat/engine/resources/nova_utils.py:317 #, python-format msgid "Resizing to '%(flavor)s' failed, status '%(status)s'" msgstr "" -#: heat/engine/resources/nova_utils.py:341 +#: heat/engine/resources/nova_utils.py:339 #, python-format msgid "Rebuilding server failed, status '%s'" msgstr "" -#: heat/engine/resources/nova_utils.py:373 heat/engine/resources/server.py:624 +#: heat/engine/resources/nova_utils.py:371 heat/engine/resources/server.py:639 #, python-format msgid "Instance (%(server)s) not found: %(ex)s" msgstr "" -#: heat/engine/resources/os_database.py:55 +#: heat/engine/resources/os_database.py:54 msgid "Name of the DB instance to create." msgstr "" -#: heat/engine/resources/os_database.py:63 +#: heat/engine/resources/os_database.py:62 msgid "Reference to a flavor for creating DB instance." msgstr "" -#: heat/engine/resources/os_database.py:68 +#: heat/engine/resources/os_database.py:67 msgid "Database volume size in GB." msgstr "" -#: heat/engine/resources/os_database.py:76 +#: heat/engine/resources/os_database.py:75 msgid "List of databases to be created on DB instance creation." msgstr "" -#: heat/engine/resources/os_database.py:83 +#: heat/engine/resources/os_database.py:82 msgid "Set of symbols and encodings." msgstr "" -#: heat/engine/resources/os_database.py:88 +#: heat/engine/resources/os_database.py:87 msgid "Set of rules for comparing characters in a character set." msgstr "" -#: heat/engine/resources/os_database.py:94 +#: heat/engine/resources/os_database.py:93 msgid "Specifies database names for creating databases on instance creation." msgstr "" -#: heat/engine/resources/os_database.py:109 +#: heat/engine/resources/os_database.py:108 msgid "List of users to be created on DB instance creation." msgstr "" -#: heat/engine/resources/os_database.py:116 +#: heat/engine/resources/os_database.py:115 msgid "User name to create a user on instance creation." msgstr "" -#: heat/engine/resources/os_database.py:128 +#: heat/engine/resources/os_database.py:127 msgid "Password for those users on instance creation." msgstr "" -#: heat/engine/resources/os_database.py:139 +#: heat/engine/resources/os_database.py:138 msgid "The host from which a user is allowed to connect to the database." msgstr "" -#: heat/engine/resources/os_database.py:145 +#: heat/engine/resources/os_database.py:144 msgid "Names of databases that those users can access on instance creation." msgstr "" -#: heat/engine/resources/os_database.py:157 +#: heat/engine/resources/os_database.py:156 msgid "Name of the availability zone for DB instance." msgstr "" -#: heat/engine/resources/os_database.py:161 +#: heat/engine/resources/os_database.py:160 msgid "DB instance restore point." msgstr "" -#: heat/engine/resources/os_database.py:166 +#: heat/engine/resources/os_database.py:165 msgid "Hostname of the instance" msgstr "" -#: heat/engine/resources/os_database.py:167 +#: heat/engine/resources/os_database.py:166 msgid "Api endpoint reference of the instance" msgstr "" -#: heat/engine/resources/os_database.py:226 +#: heat/engine/resources/os_database.py:225 #, python-format msgid "" "Stack %(name)s (%(id)s) received an OverLimit response during " "instance.get(): %(exception)s" msgstr "" -#: heat/engine/resources/os_database.py:239 +#: heat/engine/resources/os_database.py:238 msgid "Database instance creation failed." msgstr "" -#: heat/engine/resources/os_database.py:244 +#: heat/engine/resources/os_database.py:243 #, python-format msgid "" "Database instance %(database)s created (flavor:%(flavor)s, " "volume:%(volume)s)" msgstr "" -#: heat/engine/resources/os_database.py:262 +#: heat/engine/resources/os_database.py:261 #, python-format msgid "Database instance %s not found." msgstr "" -#: heat/engine/resources/os_database.py:299 +#: heat/engine/resources/os_database.py:298 msgid "Databases property is required if users property is provided" msgstr "" -#: heat/engine/resources/os_database.py:306 +#: heat/engine/resources/os_database.py:305 #, python-format msgid "Must provide access to at least one database for user %s" msgstr "" -#: heat/engine/resources/os_database.py:314 +#: heat/engine/resources/os_database.py:313 #, python-format msgid "Database %s specified for user does not exist in databases." msgstr "" -#: heat/engine/resources/random_string.py:41 +#: heat/engine/resources/random_string.py:40 msgid "Length of the string to generate." msgstr "" -#: heat/engine/resources/random_string.py:49 +#: heat/engine/resources/random_string.py:48 msgid "Sequence of characters to build the random string from." msgstr "" -#: heat/engine/resources/random_string.py:60 +#: heat/engine/resources/random_string.py:59 msgid "" "Value which can be set or changed on stack update to trigger the resource" " for replacement with a new random string . The salt value itself is " "ignored by the random generator." msgstr "" -#: heat/engine/resources/random_string.py:67 +#: heat/engine/resources/random_string.py:66 msgid "" "The random string generated by this resource. This value is also " "available by referencing the resource." msgstr "" -#: heat/engine/resources/resource_group.py:61 +#: heat/engine/resources/resource_group.py:60 msgid "The number of instances to create." msgstr "" -#: heat/engine/resources/resource_group.py:70 +#: heat/engine/resources/resource_group.py:69 msgid "" "Resource definition for the resources in the group. The value of this " "property is the definition of a resource just as if it had been declared " "in the template itself." msgstr "" -#: heat/engine/resources/resource_group.py:76 +#: heat/engine/resources/resource_group.py:75 msgid "The type of the resources in the group" msgstr "" -#: heat/engine/resources/resource_group.py:81 +#: heat/engine/resources/resource_group.py:80 msgid "Property values for the resources in the group" msgstr "" -#: heat/engine/resources/resource_group.py:89 +#: heat/engine/resources/resource_group.py:88 msgid "A list of resource IDs for the resources in the group" msgstr "" -#: heat/engine/resources/route_table.py:45 +#: heat/engine/resources/route_table.py:44 msgid "VPC ID for where the route table is created." msgstr "" -#: heat/engine/resources/route_table.py:52 +#: heat/engine/resources/route_table.py:51 msgid "List of tags to be attached to this resource." msgstr "" -#: heat/engine/resources/route_table.py:121 +#: heat/engine/resources/route_table.py:120 msgid "Route table ID." msgstr "" -#: heat/engine/resources/route_table.py:126 +#: heat/engine/resources/route_table.py:125 msgid "Subnet ID." msgstr "" @@ -3104,89 +3126,89 @@ msgstr "" msgid "Delete container failed: %s" msgstr "" -#: heat/engine/resources/security_group.py:71 -#: heat/engine/resources/neutron/security_group.py:118 +#: heat/engine/resources/security_group.py:70 +#: heat/engine/resources/neutron/security_group.py:117 msgid "Description of the security group." msgstr "" -#: heat/engine/resources/security_group.py:76 +#: heat/engine/resources/security_group.py:75 msgid "Physical ID of the VPC." msgstr "" -#: heat/engine/resources/security_group.py:82 +#: heat/engine/resources/security_group.py:81 msgid "List of security group ingress rules." msgstr "" -#: heat/engine/resources/security_group.py:90 +#: heat/engine/resources/security_group.py:89 msgid "List of security group egress rules." msgstr "" -#: heat/engine/resources/security_group.py:285 +#: heat/engine/resources/security_group.py:284 #, python-format msgid "Security Group \"%(group_name)s\" not found" msgstr "" -#: heat/engine/resources/server.py:89 +#: heat/engine/resources/server.py:91 msgid "Server name." msgstr "" -#: heat/engine/resources/server.py:94 +#: heat/engine/resources/server.py:96 msgid "The ID or name of the image to boot with." msgstr "" -#: heat/engine/resources/server.py:102 +#: heat/engine/resources/server.py:104 msgid "Block device mappings for this server." msgstr "" -#: heat/engine/resources/server.py:108 +#: heat/engine/resources/server.py:110 msgid "" "A device name where the volume will be attached in the system at " "/dev/device_name. This value is typically vda." msgstr "" -#: heat/engine/resources/server.py:115 +#: heat/engine/resources/server.py:117 msgid "" "The ID of the volume to boot from. Only one of volume_id or snapshot_id " "should be provided." msgstr "" -#: heat/engine/resources/server.py:121 +#: heat/engine/resources/server.py:123 msgid "The ID of the snapshot to create a volume from." msgstr "" -#: heat/engine/resources/server.py:126 +#: heat/engine/resources/server.py:128 msgid "" "The size of the volume, in GB. It is safe to leave this blank and have " "the Compute service infer the size." msgstr "" -#: heat/engine/resources/server.py:132 +#: heat/engine/resources/server.py:134 msgid "" "Indicate whether the volume should be deleted when the server is " "terminated." msgstr "" -#: heat/engine/resources/server.py:140 +#: heat/engine/resources/server.py:142 msgid "The ID or name of the flavor to boot onto." msgstr "" -#: heat/engine/resources/server.py:146 +#: heat/engine/resources/server.py:148 msgid "" "Policy on how to apply a flavor update; either by requesting a server " "resize or by replacing the entire server." msgstr "" -#: heat/engine/resources/server.py:156 +#: heat/engine/resources/server.py:158 msgid "" "Policy on how to apply an image-id update; either by requesting a server " "rebuild or by replacing the entire server" msgstr "" -#: heat/engine/resources/server.py:167 +#: heat/engine/resources/server.py:169 msgid "Name of keypair to inject into the server." msgstr "" -#: heat/engine/resources/server.py:174 +#: heat/engine/resources/server.py:176 msgid "" "Name of the administrative user to use on the server. This property will " "be removed from Juno in favor of the default cloud-init user set up for " @@ -3194,48 +3216,48 @@ msgid "" "and \"cloud-user\" for CentOS/RHEL 6.5)." msgstr "" -#: heat/engine/resources/server.py:183 +#: heat/engine/resources/server.py:185 msgid "Name of the availability zone for server placement." msgstr "" -#: heat/engine/resources/server.py:187 +#: heat/engine/resources/server.py:189 msgid "" "List of security group names or IDs. Cannot be used if neutron ports are " "associated with this server; assign security groups to the ports instead." msgstr "" -#: heat/engine/resources/server.py:194 +#: heat/engine/resources/server.py:196 msgid "" "An ordered list of nics to be added to this server, with information " "about connected networks, fixed ips, port etc." msgstr "" -#: heat/engine/resources/server.py:201 +#: heat/engine/resources/server.py:203 msgid "ID of network to create a port on." msgstr "" -#: heat/engine/resources/server.py:204 heat/engine/resources/volume.py:406 +#: heat/engine/resources/server.py:206 heat/engine/resources/volume.py:462 #, python-format msgid "Use property %s." msgstr "" -#: heat/engine/resources/server.py:208 +#: heat/engine/resources/server.py:210 msgid "Name or ID of network to create a port on." msgstr "" -#: heat/engine/resources/server.py:212 +#: heat/engine/resources/server.py:214 msgid "Fixed IP address to specify for the port created on the requested network." msgstr "" -#: heat/engine/resources/server.py:217 +#: heat/engine/resources/server.py:219 msgid "ID of an existing port to associate with this server." msgstr "" -#: heat/engine/resources/server.py:226 +#: heat/engine/resources/server.py:228 msgid "Arbitrary key-value pairs specified by the client to help boot a server." msgstr "" -#: heat/engine/resources/server.py:231 +#: heat/engine/resources/server.py:233 msgid "" "Arbitrary key/value metadata to store for this server. Both keys and " "values must be 255 characters or less. Non-string values will be " @@ -3243,7 +3265,7 @@ msgid "" "less)." msgstr "" -#: heat/engine/resources/server.py:239 +#: heat/engine/resources/server.py:241 msgid "" "How the user_data should be formatted for the server. For HEAT_CFNTOOLS, " "the user_data is bundled as part of the heat-cfntools cloud-init boot " @@ -3253,7 +3275,7 @@ msgid "" "resources." msgstr "" -#: heat/engine/resources/server.py:253 +#: heat/engine/resources/server.py:255 msgid "" "How the server should receive the metadata required for software " "configuration. POLL_SERVER_CFN will allow calls to the cfn API action " @@ -3262,81 +3284,81 @@ msgid "" " provided keystone credentials." msgstr "" -#: heat/engine/resources/server.py:266 +#: heat/engine/resources/server.py:268 msgid "User data script to be executed by cloud-init." msgstr "" -#: heat/engine/resources/server.py:271 +#: heat/engine/resources/server.py:273 msgid "A UUID for the set of servers being requested." msgstr "" -#: heat/engine/resources/server.py:275 +#: heat/engine/resources/server.py:277 msgid "value for config drive either boolean, or volume-id." msgstr "" -#: heat/engine/resources/server.py:279 +#: heat/engine/resources/server.py:281 msgid "Control how the disk is partitioned when the server is created." msgstr "" -#: heat/engine/resources/server.py:287 +#: heat/engine/resources/server.py:289 msgid "" "A map of files to create/overwrite on the server upon boot. Keys are file" " names and values are the file contents." msgstr "" -#: heat/engine/resources/server.py:293 +#: heat/engine/resources/server.py:295 msgid "The administrator password for the server." msgstr "" -#: heat/engine/resources/server.py:300 +#: heat/engine/resources/server.py:302 msgid "A dict of all server details as returned by the API." msgstr "" -#: heat/engine/resources/server.py:301 -msgid "A dict of all network addresses as returned by the API." +#: heat/engine/resources/server.py:303 +msgid "A dict of all network addresses with corresponding port_id." msgstr "" -#: heat/engine/resources/server.py:303 +#: heat/engine/resources/server.py:305 msgid "" "A dict of assigned network addresses of the form: {\"public\": [ip1, " "ip2...], \"private\": [ip3, ip4]}." msgstr "" -#: heat/engine/resources/server.py:305 +#: heat/engine/resources/server.py:307 msgid "" "Convenience attribute to fetch the first assigned network address, or an " "empty string if nothing has been assigned at this time. Result may not be" " predictable if the server has addresses from more than one network." msgstr "" -#: heat/engine/resources/server.py:311 +#: heat/engine/resources/server.py:313 msgid "AWS compatible instance name." msgstr "" -#: heat/engine/resources/server.py:312 +#: heat/engine/resources/server.py:314 msgid "The manually assigned alternative public IPv4 address of the server." msgstr "" -#: heat/engine/resources/server.py:314 +#: heat/engine/resources/server.py:316 msgid "The manually assigned alternative public IPv6 address of the server." msgstr "" -#: heat/engine/resources/server.py:555 +#: heat/engine/resources/server.py:558 #, python-format msgid "Creation of server %s failed." msgstr "" -#: heat/engine/resources/server.py:845 +#: heat/engine/resources/server.py:879 #, python-format msgid "Either volume_id or snapshot_id must be specified for device mapping %s" msgstr "" -#: heat/engine/resources/server.py:852 +#: heat/engine/resources/server.py:886 #, python-format msgid "Neither image nor bootable volume is specified for instance %s" msgstr "" -#: heat/engine/resources/server.py:865 +#: heat/engine/resources/server.py:899 #, python-format msgid "" "Properties \"%(uuid)s\" and \"%(id)s\" are both set to the network " @@ -3344,7 +3366,7 @@ msgid "" "is deprecated. Use only \"%(id)s\" property." msgstr "" -#: heat/engine/resources/server.py:875 +#: heat/engine/resources/server.py:909 #, python-format msgid "" "For the server \"%(server)s\" the \"%(uuid)s\" property is set to network" @@ -3352,79 +3374,79 @@ msgid "" "property instead." msgstr "" -#: heat/engine/resources/server.py:902 +#: heat/engine/resources/server.py:936 #, python-format msgid "" "Instance metadata must not contain greater than %s entries. This is the " "maximum number allowed by your service provider" msgstr "" -#: heat/engine/resources/server.py:911 +#: heat/engine/resources/server.py:945 #, python-format msgid "The personality property may not contain greater than %s entries." msgstr "" -#: heat/engine/resources/server.py:917 +#: heat/engine/resources/server.py:951 #, python-format msgid "" "The contents of personality file \"%(path)s\" is larger than the maximum " "allowed personality file size (%(max_size)s bytes)." msgstr "" -#: heat/engine/resources/server.py:957 heat/engine/resources/server.py:1003 +#: heat/engine/resources/server.py:991 heat/engine/resources/server.py:1037 #, python-format msgid "Failed to find server %s" msgstr "" -#: heat/engine/resources/server.py:960 +#: heat/engine/resources/server.py:994 #, python-format msgid "suspending server %s" msgstr "" -#: heat/engine/resources/server.py:984 +#: heat/engine/resources/server.py:1018 #, python-format msgid "Suspend of server %(server)s failed with unknown status: %(status)s" msgstr "" -#: heat/engine/resources/server.py:1006 +#: heat/engine/resources/server.py:1040 #, python-format msgid "resuming server %s" msgstr "" -#: heat/engine/resources/stack.py:42 +#: heat/engine/resources/stack.py:41 msgid "" "The URL of a template that specifies the stack to be created as a " "resource." msgstr "" -#: heat/engine/resources/stack.py:49 +#: heat/engine/resources/stack.py:48 msgid "The length of time, in minutes, to wait for the nested stack creation." msgstr "" -#: heat/engine/resources/stack.py:55 +#: heat/engine/resources/stack.py:54 msgid "The set of parameters passed to this nested stack." msgstr "" -#: heat/engine/resources/stack.py:66 heat/engine/resources/stack.py:112 +#: heat/engine/resources/stack.py:65 heat/engine/resources/stack.py:111 #, python-format msgid "Could not fetch remote template '%(url)s': %(exc)s" msgstr "" -#: heat/engine/resources/subnet.py:42 +#: heat/engine/resources/subnet.py:41 msgid "Availability zone in which you want the subnet." msgstr "" -#: heat/engine/resources/subnet.py:46 +#: heat/engine/resources/subnet.py:45 msgid "CIDR block to apply to subnet." msgstr "" -#: heat/engine/resources/subnet.py:51 +#: heat/engine/resources/subnet.py:50 msgid "" "Ref structure that contains the ID of the VPC on which you want to create" " the subnet." msgstr "" -#: heat/engine/resources/subnet.py:59 +#: heat/engine/resources/subnet.py:58 msgid "List of tags to attach to this resource." msgstr "" @@ -3536,109 +3558,124 @@ msgstr "" msgid "Failed to retrieve template data: %s" msgstr "" -#: heat/engine/resources/user.py:56 +#: heat/engine/resources/user.py:55 msgid "A login profile for the user." msgstr "" -#: heat/engine/resources/user.py:65 +#: heat/engine/resources/user.py:64 msgid "Access policies to apply to the user." msgstr "" -#: heat/engine/resources/user.py:80 heat/engine/resources/user.py:120 +#: heat/engine/resources/user.py:79 heat/engine/resources/user.py:119 #, python-format msgid "Ignoring policy %s, must be string resource name" msgstr "" -#: heat/engine/resources/user.py:87 +#: heat/engine/resources/user.py:86 #, python-format msgid "Policy %(policy)s does not exist in stack %(stack)s" msgstr "" -#: heat/engine/resources/user.py:94 +#: heat/engine/resources/user.py:93 #, python-format msgid "Policy %s is not an AccessPolicy resource" msgstr "" -#: heat/engine/resources/user.py:144 +#: heat/engine/resources/user.py:143 msgid "The name of the user that the new key will belong to." msgstr "" -#: heat/engine/resources/user.py:158 +#: heat/engine/resources/user.py:157 msgid "Username associated with the AccessKey." msgstr "" -#: heat/engine/resources/user.py:159 +#: heat/engine/resources/user.py:158 msgid "Keypair secret key." msgstr "" -#: heat/engine/resources/user.py:185 +#: heat/engine/resources/user.py:184 #, python-format msgid "could not find user %s" msgstr "" -#: heat/engine/resources/user.py:205 +#: heat/engine/resources/user.py:204 #, python-format msgid "Error deleting %s - user not found" msgstr "" -#: heat/engine/resources/user.py:215 heat/engine/resources/user.py:239 +#: heat/engine/resources/user.py:214 heat/engine/resources/user.py:238 #, python-format msgid "could not get secret for %(username)s Error:%(msg)s" msgstr "" -#: heat/engine/resources/user.py:270 +#: heat/engine/resources/user.py:269 msgid "" "Resources that users are allowed to access by the DescribeStackResource " "API." msgstr "" -#: heat/engine/resources/user.py:287 +#: heat/engine/resources/user.py:286 #, python-format msgid "AccessPolicy resource %s not in stack" msgstr "" -#: heat/engine/resources/volume.py:50 heat/engine/resources/volume.py:367 +#: heat/engine/resources/volume.py:49 heat/engine/resources/volume.py:423 msgid "The availability zone in which the volume will be created." msgstr "" -#: heat/engine/resources/volume.py:55 heat/engine/resources/volume.py:371 -#: heat/engine/resources/volume.py:425 +#: heat/engine/resources/volume.py:54 heat/engine/resources/volume.py:427 +#: heat/engine/resources/volume.py:481 msgid "The size of the volume in GB." msgstr "" -#: heat/engine/resources/volume.py:59 +#: heat/engine/resources/volume.py:58 msgid "If specified, the backup used as the source to create the volume." msgstr "" -#: heat/engine/resources/volume.py:64 +#: heat/engine/resources/volume.py:63 msgid "The list of tags to associate with the volume." msgstr "" -#: heat/engine/resources/volume.py:108 +#: heat/engine/resources/volume.py:107 msgid "Backups not supported." msgstr "" -#: heat/engine/resources/volume.py:153 +#: heat/engine/resources/volume.py:152 msgid "can not delete volume when in-use" msgstr "" -#: heat/engine/resources/volume.py:154 +#: heat/engine/resources/volume.py:153 msgid "Volume in use" msgstr "" -#: heat/engine/resources/volume.py:221 +#: heat/engine/resources/volume.py:215 heat/engine/resources/volume.py:288 #, python-format -msgid "%(name)s - volume status: %(status)s" +msgid "%s - volume not found" +msgstr "" + +#: heat/engine/resources/volume.py:217 +#, python-format +msgid "Failed to attach %(vol)s to server %(srv)s" msgstr "" #: heat/engine/resources/volume.py:229 #, python-format +msgid "%(name)s - volume status: %(status)s" +msgstr "" + +#: heat/engine/resources/volume.py:237 heat/engine/resources/volume.py:313 +#, python-format msgid "%s - complete" msgstr "" -#: heat/engine/resources/volume.py:262 heat/engine/resources/volume.py:295 +#: heat/engine/resources/volume.py:254 #, python-format -msgid "%s - volume not found" +msgid "Removing volume %(vol)s from Instance %(srv)s" +msgstr "" + +#: heat/engine/resources/volume.py:271 +#, python-format +msgid "Volume %(vol)s is not attached to server %(srv)s" msgstr "" #: heat/engine/resources/volume.py:278 @@ -3646,118 +3683,128 @@ msgstr "" msgid "%s - volume still in use" msgstr "" -#: heat/engine/resources/volume.py:289 +#: heat/engine/resources/volume.py:282 #, python-format msgid "%(name)s - status: %(status)s" msgstr "" -#: heat/engine/resources/volume.py:308 +#: heat/engine/resources/volume.py:291 +#, python-format +msgid "Failed to detach %(vol)s from server %(srv)s" +msgstr "" + +#: heat/engine/resources/volume.py:309 +#, python-format +msgid "Server %(srv)s still has %(vol)s attached." +msgstr "" + +#: heat/engine/resources/volume.py:326 msgid "The ID of the instance to which the volume attaches." msgstr "" -#: heat/engine/resources/volume.py:378 +#: heat/engine/resources/volume.py:434 msgid "If specified, the snapshot to create the volume from." msgstr "" -#: heat/engine/resources/volume.py:382 +#: heat/engine/resources/volume.py:438 msgid "If specified, the backup to create the volume from." msgstr "" -#: heat/engine/resources/volume.py:386 +#: heat/engine/resources/volume.py:442 msgid "A name used to distinguish the volume." msgstr "" -#: heat/engine/resources/volume.py:390 +#: heat/engine/resources/volume.py:446 msgid "A description of the volume." msgstr "" -#: heat/engine/resources/volume.py:394 +#: heat/engine/resources/volume.py:450 msgid "If specified, the type of volume to use, mapping to a specific backend." msgstr "" -#: heat/engine/resources/volume.py:399 +#: heat/engine/resources/volume.py:455 msgid "Key/value pairs to associate with the volume." msgstr "" -#: heat/engine/resources/volume.py:403 +#: heat/engine/resources/volume.py:459 msgid "The ID of the image to create the volume from." msgstr "" -#: heat/engine/resources/volume.py:410 +#: heat/engine/resources/volume.py:466 msgid "If specified, the name or ID of the image to create the volume from." msgstr "" -#: heat/engine/resources/volume.py:418 +#: heat/engine/resources/volume.py:474 msgid "If specified, the volume to use as source." msgstr "" -#: heat/engine/resources/volume.py:423 +#: heat/engine/resources/volume.py:479 msgid "The availability zone in which the volume is located." msgstr "" -#: heat/engine/resources/volume.py:426 +#: heat/engine/resources/volume.py:482 msgid "The snapshot the volume was created from, if any." msgstr "" -#: heat/engine/resources/volume.py:427 +#: heat/engine/resources/volume.py:483 msgid "Name of the volume." msgstr "" -#: heat/engine/resources/volume.py:428 +#: heat/engine/resources/volume.py:484 msgid "Description of the volume." msgstr "" -#: heat/engine/resources/volume.py:429 +#: heat/engine/resources/volume.py:485 msgid "The type of the volume mapping to a backend, if any." msgstr "" -#: heat/engine/resources/volume.py:431 +#: heat/engine/resources/volume.py:487 msgid "Key/value pairs associated with the volume." msgstr "" -#: heat/engine/resources/volume.py:432 +#: heat/engine/resources/volume.py:488 msgid "The volume used as source, if any." msgstr "" -#: heat/engine/resources/volume.py:433 +#: heat/engine/resources/volume.py:489 msgid "The current status of the volume." msgstr "" -#: heat/engine/resources/volume.py:434 +#: heat/engine/resources/volume.py:490 msgid "The timestamp indicating volume creation." msgstr "" -#: heat/engine/resources/volume.py:435 +#: heat/engine/resources/volume.py:491 msgid "Boolean indicating if the volume can be booted or not." msgstr "" -#: heat/engine/resources/volume.py:485 +#: heat/engine/resources/volume.py:541 msgid "The ID of the server to which the volume attaches." msgstr "" -#: heat/engine/resources/volume.py:495 +#: heat/engine/resources/volume.py:553 msgid "" "The location where the volume is exposed on the instance. This assignment" " may not be honored and it is advised that the path /dev/disk/by-" "id/virtio-<VolumeId> be used instead." msgstr "" -#: heat/engine/resources/vpc.py:43 +#: heat/engine/resources/vpc.py:42 msgid "CIDR block to apply to the VPC." msgstr "" -#: heat/engine/resources/vpc.py:47 +#: heat/engine/resources/vpc.py:46 msgid "" "Allowed tenancy of instances launched in the VPC. default - any tenancy; " "dedicated - instance will be dedicated, regardless of the tenancy option " "specified at instance launch." msgstr "" -#: heat/engine/resources/vpc.py:61 +#: heat/engine/resources/vpc.py:60 msgid "List of tags to attach to the instance." msgstr "" -#: heat/engine/resources/vpc.py:104 +#: heat/engine/resources/vpc.py:103 #, python-format msgid "Multiple routers found with name %s" msgstr "" @@ -3776,123 +3823,123 @@ msgstr "" msgid "Metadata format invalid" msgstr "" -#: heat/engine/resources/wait_condition.py:143 +#: heat/engine/resources/wait_condition.py:140 #, python-format msgid "%(len)d of %(count)d received - %(reasons)s" msgstr "" -#: heat/engine/resources/wait_condition.py:145 +#: heat/engine/resources/wait_condition.py:142 #, python-format msgid "%(len)d of %(count)d received" msgstr "" -#: heat/engine/resources/wait_condition.py:159 +#: heat/engine/resources/wait_condition.py:156 msgid "" "A reference to the wait condition handle used to signal this wait " "condition." msgstr "" -#: heat/engine/resources/wait_condition.py:165 +#: heat/engine/resources/wait_condition.py:162 msgid "The number of seconds to wait for the correct number of signals to arrive." msgstr "" -#: heat/engine/resources/wait_condition.py:174 +#: heat/engine/resources/wait_condition.py:171 msgid "" "The number of success signals that must be received before the stack " "creation process continues." msgstr "" -#: heat/engine/resources/wait_condition.py:185 +#: heat/engine/resources/wait_condition.py:182 msgid "" "JSON serialized dict containing data associated with wait condition " "signals sent to the handle." msgstr "" -#: heat/engine/resources/wait_condition.py:198 +#: heat/engine/resources/wait_condition.py:195 #, python-format msgid "WaitCondition invalid Handle tenant %s" msgstr "" +#: heat/engine/resources/wait_condition.py:198 #: heat/engine/resources/wait_condition.py:201 -#: heat/engine/resources/wait_condition.py:204 #, python-format msgid "WaitCondition invalid Handle stack %s" msgstr "" -#: heat/engine/resources/wait_condition.py:207 -#: heat/engine/resources/wait_condition.py:211 +#: heat/engine/resources/wait_condition.py:204 +#: heat/engine/resources/wait_condition.py:208 #, python-format msgid "WaitCondition invalid Handle %s" msgstr "" -#: heat/engine/resources/wait_condition.py:225 +#: heat/engine/resources/wait_condition.py:222 #, python-format msgid "%(name)s Timed out (%(timeout)s)" msgstr "" -#: heat/engine/resources/wait_condition.py:233 +#: heat/engine/resources/wait_condition.py:230 #, python-format msgid "%(name)s Failed (%(failure)s)" msgstr "" -#: heat/engine/resources/wait_condition.py:238 +#: heat/engine/resources/wait_condition.py:235 #, python-format msgid "%s Succeeded" msgstr "" -#: heat/engine/resources/wait_condition.py:285 +#: heat/engine/resources/wait_condition.py:282 #, python-format msgid "%(name)s.GetAtt(%(key)s) == %(res)s" msgstr "" -#: heat/engine/resources/ceilometer/alarm.py:39 +#: heat/engine/resources/ceilometer/alarm.py:38 msgid "True if alarm evaluation/actioning is enabled." msgstr "" -#: heat/engine/resources/ceilometer/alarm.py:45 +#: heat/engine/resources/ceilometer/alarm.py:44 msgid "A list of URLs (webhooks) to invoke when state transitions to alarm." msgstr "" -#: heat/engine/resources/ceilometer/alarm.py:51 +#: heat/engine/resources/ceilometer/alarm.py:50 msgid "A list of URLs (webhooks) to invoke when state transitions to ok." msgstr "" -#: heat/engine/resources/ceilometer/alarm.py:57 +#: heat/engine/resources/ceilometer/alarm.py:56 msgid "" "A list of URLs (webhooks) to invoke when state transitions to " "insufficient-data." msgstr "" -#: heat/engine/resources/ceilometer/alarm.py:63 +#: heat/engine/resources/ceilometer/alarm.py:62 msgid "" "False to trigger actions when the threshold is reached AND the alarm's " "state has changed. By default, actions are called each time the threshold" " is reached." msgstr "" -#: heat/engine/resources/ceilometer/alarm.py:107 +#: heat/engine/resources/ceilometer/alarm.py:106 msgid "Operator used to compare specified statistic with threshold." msgstr "" -#: heat/engine/resources/ceilometer/alarm.py:121 +#: heat/engine/resources/ceilometer/alarm.py:120 msgid "Meter name watched by the alarm." msgstr "" -#: heat/engine/resources/ceilometer/alarm.py:131 +#: heat/engine/resources/ceilometer/alarm.py:130 msgid "Meter statistic to evaluate." msgstr "" -#: heat/engine/resources/ceilometer/alarm.py:146 +#: heat/engine/resources/ceilometer/alarm.py:145 msgid "" "Meter should match this resource metadata (key=value) additionally to the" " meter_name." msgstr "" -#: heat/engine/resources/ceilometer/alarm.py:212 +#: heat/engine/resources/ceilometer/alarm.py:211 msgid "List of alarm identifiers to combine." msgstr "" -#: heat/engine/resources/ceilometer/alarm.py:218 +#: heat/engine/resources/ceilometer/alarm.py:217 msgid "Operator used to combine the alarms." msgstr "" @@ -3938,16 +3985,16 @@ msgid "Id of the tenant owning the firewall." msgstr "" #: heat/engine/resources/neutron/firewall.py:73 -#: heat/engine/resources/neutron/floatingip.py:68 -#: heat/engine/resources/neutron/loadbalancer.py:118 -#: heat/engine/resources/neutron/loadbalancer.py:496 -#: heat/engine/resources/neutron/net.py:87 +#: heat/engine/resources/neutron/floatingip.py:67 +#: heat/engine/resources/neutron/loadbalancer.py:117 +#: heat/engine/resources/neutron/loadbalancer.py:495 +#: heat/engine/resources/neutron/net.py:86 #: heat/engine/resources/neutron/network_gateway.py:122 -#: heat/engine/resources/neutron/port.py:150 +#: heat/engine/resources/neutron/port.py:149 #: heat/engine/resources/neutron/provider_net.py:68 #: heat/engine/resources/neutron/router.py:98 -#: heat/engine/resources/neutron/subnet.py:150 -#: heat/engine/resources/neutron/vpnservice.py:80 +#: heat/engine/resources/neutron/subnet.py:149 +#: heat/engine/resources/neutron/vpnservice.py:79 msgid "All attributes." msgstr "" @@ -4091,374 +4138,374 @@ msgstr "" msgid "Position of the rule within the firewall policy." msgstr "" -#: heat/engine/resources/neutron/floatingip.py:37 +#: heat/engine/resources/neutron/floatingip.py:36 msgid "ID of network to allocate floating IP from." msgstr "" -#: heat/engine/resources/neutron/floatingip.py:42 +#: heat/engine/resources/neutron/floatingip.py:41 msgid "" "Extra parameters to include in the \"floatingip\" object in the creation " "request. Parameters are often specific to installed hardware or " "extensions." msgstr "" -#: heat/engine/resources/neutron/floatingip.py:49 -#: heat/engine/resources/neutron/floatingip.py:115 +#: heat/engine/resources/neutron/floatingip.py:48 +#: heat/engine/resources/neutron/floatingip.py:114 msgid "" "ID of an existing port with at least one IP address to associate with " "this floating IP." msgstr "" -#: heat/engine/resources/neutron/floatingip.py:54 -#: heat/engine/resources/neutron/floatingip.py:120 +#: heat/engine/resources/neutron/floatingip.py:53 +#: heat/engine/resources/neutron/floatingip.py:119 msgid "IP address to use if the port has multiple addresses." msgstr "" -#: heat/engine/resources/neutron/floatingip.py:59 +#: heat/engine/resources/neutron/floatingip.py:58 msgid "ID of the router used as gateway, set when associated with a port." msgstr "" -#: heat/engine/resources/neutron/floatingip.py:61 +#: heat/engine/resources/neutron/floatingip.py:60 msgid "The tenant owning this floating IP." msgstr "" -#: heat/engine/resources/neutron/floatingip.py:62 +#: heat/engine/resources/neutron/floatingip.py:61 msgid "ID of the network in which this IP is allocated." msgstr "" -#: heat/engine/resources/neutron/floatingip.py:64 +#: heat/engine/resources/neutron/floatingip.py:63 msgid "IP address of the associated port, if specified." msgstr "" -#: heat/engine/resources/neutron/floatingip.py:66 +#: heat/engine/resources/neutron/floatingip.py:65 msgid "The allocated address of this IP." msgstr "" -#: heat/engine/resources/neutron/floatingip.py:67 +#: heat/engine/resources/neutron/floatingip.py:66 msgid "ID of the port associated with this IP." msgstr "" -#: heat/engine/resources/neutron/floatingip.py:110 +#: heat/engine/resources/neutron/floatingip.py:109 msgid "ID of the floating IP to associate." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:46 -#: heat/engine/resources/neutron/loadbalancer.py:104 +#: heat/engine/resources/neutron/loadbalancer.py:45 +#: heat/engine/resources/neutron/loadbalancer.py:103 msgid "The minimum time in seconds between regular connections of the member." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:53 -#: heat/engine/resources/neutron/loadbalancer.py:114 +#: heat/engine/resources/neutron/loadbalancer.py:52 +#: heat/engine/resources/neutron/loadbalancer.py:113 msgid "One of predefined health monitor types." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:61 -#: heat/engine/resources/neutron/loadbalancer.py:110 +#: heat/engine/resources/neutron/loadbalancer.py:60 +#: heat/engine/resources/neutron/loadbalancer.py:109 msgid "" "Number of permissible connection failures before changing the member " "status to INACTIVE." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:68 -#: heat/engine/resources/neutron/loadbalancer.py:112 +#: heat/engine/resources/neutron/loadbalancer.py:67 +#: heat/engine/resources/neutron/loadbalancer.py:111 msgid "" "Maximum number of seconds for a monitor to wait for a connection to be " "established before it times out." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:75 +#: heat/engine/resources/neutron/loadbalancer.py:74 msgid "The administrative state of the health monitor." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:81 -#: heat/engine/resources/neutron/loadbalancer.py:108 +#: heat/engine/resources/neutron/loadbalancer.py:80 +#: heat/engine/resources/neutron/loadbalancer.py:107 msgid "The HTTP method used for requests by the monitor of type HTTP." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:87 -#: heat/engine/resources/neutron/loadbalancer.py:106 +#: heat/engine/resources/neutron/loadbalancer.py:86 +#: heat/engine/resources/neutron/loadbalancer.py:105 msgid "" "The list of HTTP status codes expected in response from the member to " "declare it healthy." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:93 -#: heat/engine/resources/neutron/loadbalancer.py:115 +#: heat/engine/resources/neutron/loadbalancer.py:92 +#: heat/engine/resources/neutron/loadbalancer.py:114 msgid "" "The HTTP path used in the HTTP request used by the monitor to test a " "member health." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:102 +#: heat/engine/resources/neutron/loadbalancer.py:101 msgid "The administrative state of this health monitor." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:117 +#: heat/engine/resources/neutron/loadbalancer.py:116 msgid "Tenant owning the health monitor." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:179 +#: heat/engine/resources/neutron/loadbalancer.py:178 msgid "Protocol for balancing." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:187 -#: heat/engine/resources/neutron/loadbalancer.py:290 +#: heat/engine/resources/neutron/loadbalancer.py:186 +#: heat/engine/resources/neutron/loadbalancer.py:289 msgid "" "The subnet for the port on which the members of the pool will be " "connected." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:193 -#: heat/engine/resources/neutron/loadbalancer.py:292 +#: heat/engine/resources/neutron/loadbalancer.py:192 +#: heat/engine/resources/neutron/loadbalancer.py:291 msgid "The algorithm used to distribute load between the members of the pool." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:204 -#: heat/engine/resources/neutron/loadbalancer.py:288 +#: heat/engine/resources/neutron/loadbalancer.py:203 +#: heat/engine/resources/neutron/loadbalancer.py:287 msgid "Name of the pool." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:208 -#: heat/engine/resources/neutron/loadbalancer.py:294 +#: heat/engine/resources/neutron/loadbalancer.py:207 +#: heat/engine/resources/neutron/loadbalancer.py:293 msgid "Description of the pool." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:213 -#: heat/engine/resources/neutron/loadbalancer.py:287 +#: heat/engine/resources/neutron/loadbalancer.py:212 +#: heat/engine/resources/neutron/loadbalancer.py:286 msgid "The administrative state of this pool." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:219 +#: heat/engine/resources/neutron/loadbalancer.py:218 msgid "IP address and port of the pool." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:223 +#: heat/engine/resources/neutron/loadbalancer.py:222 msgid "Name of the vip." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:227 +#: heat/engine/resources/neutron/loadbalancer.py:226 msgid "Description of the vip." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:231 +#: heat/engine/resources/neutron/loadbalancer.py:230 msgid "Subnet of the vip." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:235 +#: heat/engine/resources/neutron/loadbalancer.py:234 msgid "IP address of the vip." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:239 +#: heat/engine/resources/neutron/loadbalancer.py:238 msgid "The maximum number of connections per second allowed for the vip." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:244 +#: heat/engine/resources/neutron/loadbalancer.py:243 msgid "" "TCP port on which to listen for client traffic that is associated with " "the vip address." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:250 +#: heat/engine/resources/neutron/loadbalancer.py:249 msgid "Configuration of session persistence." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:254 +#: heat/engine/resources/neutron/loadbalancer.py:253 msgid "Method of implementation of session persistence feature." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:263 +#: heat/engine/resources/neutron/loadbalancer.py:262 msgid "Name of the cookie, required if type is APP_COOKIE." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:270 +#: heat/engine/resources/neutron/loadbalancer.py:269 msgid "The administrative state of this vip." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:278 +#: heat/engine/resources/neutron/loadbalancer.py:277 msgid "List of health monitors associated with the pool." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:289 +#: heat/engine/resources/neutron/loadbalancer.py:288 msgid "Protocol to balance." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:295 +#: heat/engine/resources/neutron/loadbalancer.py:294 msgid "Tenant owning the pool." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:296 +#: heat/engine/resources/neutron/loadbalancer.py:295 msgid "Vip associated with the pool." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:314 +#: heat/engine/resources/neutron/loadbalancer.py:313 #: heat/tests/test_neutron_loadbalancer.py:562 msgid "" "Property cookie_name is required, when session_persistence type is set to" " APP_COOKIE." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:372 +#: heat/engine/resources/neutron/loadbalancer.py:371 #, python-format msgid "neutron reported unexpected vip resource[%(name)s] status[%(status)s]" msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:377 +#: heat/engine/resources/neutron/loadbalancer.py:376 #, python-format msgid "neutron reported unexpected pool resource[%(name)s] status[%(status)s]" msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:454 -#: heat/engine/resources/neutron/loadbalancer.py:493 -#: heat/engine/resources/neutron/loadbalancer.py:554 +#: heat/engine/resources/neutron/loadbalancer.py:453 +#: heat/engine/resources/neutron/loadbalancer.py:492 +#: heat/engine/resources/neutron/loadbalancer.py:553 msgid "The ID of the load balancing pool." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:460 +#: heat/engine/resources/neutron/loadbalancer.py:459 msgid "IP address of the pool member on the pool network." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:465 +#: heat/engine/resources/neutron/loadbalancer.py:464 msgid "TCP port on which the pool member listens for requests or connections." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:474 +#: heat/engine/resources/neutron/loadbalancer.py:473 msgid "Weight of pool member in the pool (default to 1)." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:482 +#: heat/engine/resources/neutron/loadbalancer.py:481 msgid "The administrative state of the pool member." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:488 +#: heat/engine/resources/neutron/loadbalancer.py:487 msgid "The administrative state of this pool member." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:490 +#: heat/engine/resources/neutron/loadbalancer.py:489 msgid "Tenant owning the pool member." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:491 +#: heat/engine/resources/neutron/loadbalancer.py:490 msgid "Weight of the pool member in the pool." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:492 +#: heat/engine/resources/neutron/loadbalancer.py:491 msgid "IP address of the pool member." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:494 +#: heat/engine/resources/neutron/loadbalancer.py:493 msgid "TCP port on which the pool member listens forrequests or connections." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:560 +#: heat/engine/resources/neutron/loadbalancer.py:559 msgid "Port number on which the servers are running on the members." msgstr "" -#: heat/engine/resources/neutron/loadbalancer.py:565 +#: heat/engine/resources/neutron/loadbalancer.py:564 msgid "The list of Nova server IDs load balanced." msgstr "" -#: heat/engine/resources/neutron/metering.py:36 -#: heat/engine/resources/neutron/metering.py:45 +#: heat/engine/resources/neutron/metering.py:37 +#: heat/engine/resources/neutron/metering.py:46 msgid "Name of the metering label." msgstr "" -#: heat/engine/resources/neutron/metering.py:40 -#: heat/engine/resources/neutron/metering.py:46 +#: heat/engine/resources/neutron/metering.py:41 +#: heat/engine/resources/neutron/metering.py:47 msgid "Description of the metering label." msgstr "" -#: heat/engine/resources/neutron/metering.py:86 +#: heat/engine/resources/neutron/metering.py:87 msgid "The metering label ID to associate with this metering rule." msgstr "" -#: heat/engine/resources/neutron/metering.py:91 +#: heat/engine/resources/neutron/metering.py:92 msgid "Indicates remote IP prefix to be associated with this metering rule." msgstr "" -#: heat/engine/resources/neutron/metering.py:97 +#: heat/engine/resources/neutron/metering.py:98 msgid "The direction in which metering rule is applied, either ingress or egress." msgstr "" -#: heat/engine/resources/neutron/metering.py:105 +#: heat/engine/resources/neutron/metering.py:106 msgid "" "Specify whether the remote_ip_prefix will be excluded or not from traffic" " counters of the metering label. For example to not count the traffic of " "a specific IP address of a range." msgstr "" -#: heat/engine/resources/neutron/metering.py:113 +#: heat/engine/resources/neutron/metering.py:114 msgid "The direction in which metering rule is applied." msgstr "" -#: heat/engine/resources/neutron/metering.py:114 +#: heat/engine/resources/neutron/metering.py:115 msgid "Exclude state for cidr." msgstr "" -#: heat/engine/resources/neutron/metering.py:115 +#: heat/engine/resources/neutron/metering.py:116 msgid "The metering label ID to associate with this metering rule.." msgstr "" -#: heat/engine/resources/neutron/metering.py:117 +#: heat/engine/resources/neutron/metering.py:118 msgid "CIDR to be associated with this metering rule." msgstr "" -#: heat/engine/resources/neutron/net.py:39 +#: heat/engine/resources/neutron/net.py:38 msgid "" "A string specifying a symbolic name for the network, which is not " "required to be unique." msgstr "" -#: heat/engine/resources/neutron/net.py:45 +#: heat/engine/resources/neutron/net.py:44 msgid "" "Extra parameters to include in the \"network\" object in the creation " "request. Parameters are often specific to installed hardware or " "extensions." msgstr "" -#: heat/engine/resources/neutron/net.py:53 +#: heat/engine/resources/neutron/net.py:52 msgid "A boolean value specifying the administrative status of the network." msgstr "" -#: heat/engine/resources/neutron/net.py:60 +#: heat/engine/resources/neutron/net.py:59 msgid "" "The ID of the tenant which will own the network. Only administrative " "users can set the tenant identifier; this cannot be changed using " "authorization policies." msgstr "" -#: heat/engine/resources/neutron/net.py:66 +#: heat/engine/resources/neutron/net.py:65 msgid "" "Whether this network should be shared across all tenants. Note that the " "default policy setting restricts usage of this attribute to " "administrative users only." msgstr "" -#: heat/engine/resources/neutron/net.py:74 +#: heat/engine/resources/neutron/net.py:73 msgid "" "The IDs of the DHCP agent to schedule the network. Note that the default " "policy setting in Neutron restricts usage of this property to " "administrative users only." msgstr "" -#: heat/engine/resources/neutron/net.py:82 +#: heat/engine/resources/neutron/net.py:81 #: heat/engine/resources/neutron/provider_net.py:66 msgid "The status of the network." msgstr "" -#: heat/engine/resources/neutron/net.py:83 +#: heat/engine/resources/neutron/net.py:82 msgid "The name of the network." msgstr "" -#: heat/engine/resources/neutron/net.py:84 +#: heat/engine/resources/neutron/net.py:83 #: heat/engine/resources/neutron/provider_net.py:67 msgid "Subnets of this network." msgstr "" -#: heat/engine/resources/neutron/net.py:85 +#: heat/engine/resources/neutron/net.py:84 msgid "The administrative status of the network." msgstr "" -#: heat/engine/resources/neutron/net.py:86 +#: heat/engine/resources/neutron/net.py:85 msgid "The tenant owning this network." msgstr "" @@ -4508,118 +4555,118 @@ msgstr "" msgid "segmentation_id cannot be specified except 0 for using flat" msgstr "" -#: heat/engine/resources/neutron/neutron.py:115 +#: heat/engine/resources/neutron/neutron.py:114 #, python-format msgid "neutron reported unexpected resource[%(name)s] status[%(status)s]" msgstr "" -#: heat/engine/resources/neutron/neutron.py:124 +#: heat/engine/resources/neutron/neutron.py:123 #, python-format msgid "failed to fetch resource attributes: %s" msgstr "" -#: heat/engine/resources/neutron/port.py:54 +#: heat/engine/resources/neutron/port.py:53 msgid "Network ID this port belongs to." msgstr "" -#: heat/engine/resources/neutron/port.py:59 +#: heat/engine/resources/neutron/port.py:58 msgid "A symbolic name for this port." msgstr "" -#: heat/engine/resources/neutron/port.py:64 +#: heat/engine/resources/neutron/port.py:63 msgid "" "Extra parameters to include in the \"port\" object in the creation " "request." msgstr "" -#: heat/engine/resources/neutron/port.py:70 -#: heat/engine/resources/neutron/port.py:138 +#: heat/engine/resources/neutron/port.py:69 +#: heat/engine/resources/neutron/port.py:137 msgid "The administrative state of this port." msgstr "" -#: heat/engine/resources/neutron/port.py:76 +#: heat/engine/resources/neutron/port.py:75 msgid "Desired IPs for this port." msgstr "" -#: heat/engine/resources/neutron/port.py:83 +#: heat/engine/resources/neutron/port.py:82 msgid "Subnet in which to allocate the IP address for this port." msgstr "" -#: heat/engine/resources/neutron/port.py:88 +#: heat/engine/resources/neutron/port.py:87 msgid "IP address desired in the subnet for this port." msgstr "" -#: heat/engine/resources/neutron/port.py:96 +#: heat/engine/resources/neutron/port.py:95 msgid "MAC address to give to this port." msgstr "" -#: heat/engine/resources/neutron/port.py:100 +#: heat/engine/resources/neutron/port.py:99 msgid "Device ID of this port." msgstr "" -#: heat/engine/resources/neutron/port.py:105 +#: heat/engine/resources/neutron/port.py:104 msgid "Security group IDs to associate with this port." msgstr "" -#: heat/engine/resources/neutron/port.py:111 +#: heat/engine/resources/neutron/port.py:110 msgid "Additional MAC/IP address pairs allowed to pass through the port." msgstr "" -#: heat/engine/resources/neutron/port.py:118 +#: heat/engine/resources/neutron/port.py:117 msgid "MAC address to allow through this port." msgstr "" -#: heat/engine/resources/neutron/port.py:122 +#: heat/engine/resources/neutron/port.py:121 msgid "IP address to allow through this port." msgstr "" -#: heat/engine/resources/neutron/port.py:130 +#: heat/engine/resources/neutron/port.py:129 msgid "" "Name of the network owning the port. The value is typically " "network:floatingip or network:router_interface or network:dhcp" msgstr "" -#: heat/engine/resources/neutron/port.py:139 +#: heat/engine/resources/neutron/port.py:138 msgid "Unique identifier for the device." msgstr "" -#: heat/engine/resources/neutron/port.py:140 +#: heat/engine/resources/neutron/port.py:139 msgid "Name of the network owning the port." msgstr "" -#: heat/engine/resources/neutron/port.py:141 +#: heat/engine/resources/neutron/port.py:140 msgid "Fixed IP addresses." msgstr "" -#: heat/engine/resources/neutron/port.py:142 +#: heat/engine/resources/neutron/port.py:141 msgid "MAC address of the port." msgstr "" -#: heat/engine/resources/neutron/port.py:143 +#: heat/engine/resources/neutron/port.py:142 msgid "Friendly name of the port." msgstr "" -#: heat/engine/resources/neutron/port.py:144 +#: heat/engine/resources/neutron/port.py:143 msgid "Unique identifier for the network owning the port." msgstr "" -#: heat/engine/resources/neutron/port.py:145 +#: heat/engine/resources/neutron/port.py:144 msgid "A list of security groups for the port." msgstr "" -#: heat/engine/resources/neutron/port.py:146 +#: heat/engine/resources/neutron/port.py:145 msgid "The status of the port." msgstr "" -#: heat/engine/resources/neutron/port.py:147 +#: heat/engine/resources/neutron/port.py:146 msgid "Tenant owning the port." msgstr "" -#: heat/engine/resources/neutron/port.py:148 +#: heat/engine/resources/neutron/port.py:147 msgid "Additional MAC/IP address pairs allowed to pass through a port." msgstr "" -#: heat/engine/resources/neutron/port.py:228 +#: heat/engine/resources/neutron/port.py:227 #, python-format msgid "updating port with %s" msgstr "" @@ -4644,24 +4691,27 @@ msgstr "" msgid "segmentation_id not allowed for flat network type." msgstr "" -#: heat/engine/resources/neutron/router.py:49 +#: heat/engine/resources/neutron/router.py:48 msgid "The name of the router." msgstr "" -#: heat/engine/resources/neutron/router.py:54 +#: heat/engine/resources/neutron/router.py:53 msgid "External network gateway configuration for a router." msgstr "" -#: heat/engine/resources/neutron/router.py:58 +#: heat/engine/resources/neutron/router.py:57 msgid "ID or name of the external network for the gateway." msgstr "" -#: heat/engine/resources/neutron/router.py:64 -msgid "Enables Source NAT on the router gateway." +#: heat/engine/resources/neutron/router.py:63 +msgid "" +"Enables Source NAT on the router gateway. NOTE: The default policy " +"setting in Neutron restricts usage of this property to administrative " +"users only." msgstr "" #: heat/engine/resources/neutron/router.py:73 -#: heat/engine/resources/neutron/subnet.py:64 +#: heat/engine/resources/neutron/subnet.py:63 msgid "Extra parameters to include in the creation request." msgstr "" @@ -4695,34 +4745,34 @@ msgstr "" msgid "Tenant owning the router." msgstr "" -#: heat/engine/resources/neutron/router.py:188 +#: heat/engine/resources/neutron/router.py:190 msgid "The router id." msgstr "" -#: heat/engine/resources/neutron/router.py:193 +#: heat/engine/resources/neutron/router.py:195 msgid "The subnet id, either subnet_id or port_id should be specified." msgstr "" -#: heat/engine/resources/neutron/router.py:198 +#: heat/engine/resources/neutron/router.py:200 msgid "The port id, either subnet_id or port_id should be specified." msgstr "" -#: heat/engine/resources/neutron/router.py:248 +#: heat/engine/resources/neutron/router.py:250 msgid "" "RouterGateway resource is deprecated and should not be used. Instead use " "the `external_gateway_info` property in the router resource to set up the" " gateway." msgstr "" -#: heat/engine/resources/neutron/router.py:262 +#: heat/engine/resources/neutron/router.py:264 msgid "ID of the router." msgstr "" -#: heat/engine/resources/neutron/router.py:267 +#: heat/engine/resources/neutron/router.py:269 msgid "ID of the external network for the gateway." msgstr "" -#: heat/engine/resources/neutron/security_group.py:49 +#: heat/engine/resources/neutron/security_group.py:48 msgid "" "The direction in which the security group rule is applied. For a compute " "instance, an ingress security group rule matches traffic that is incoming" @@ -4730,11 +4780,11 @@ msgid "" "leaving the instance." msgstr "" -#: heat/engine/resources/neutron/security_group.py:61 +#: heat/engine/resources/neutron/security_group.py:60 msgid "Ethertype of the traffic." msgstr "" -#: heat/engine/resources/neutron/security_group.py:69 +#: heat/engine/resources/neutron/security_group.py:68 msgid "" "The minimum port number in the range that is matched by the security " "group rule. If the protocol is TCP or UDP, this value must be less than " @@ -4742,566 +4792,566 @@ msgid "" " ICMP, this value must be an ICMP type." msgstr "" -#: heat/engine/resources/neutron/security_group.py:77 +#: heat/engine/resources/neutron/security_group.py:76 msgid "" "The maximum port number in the range that is matched by the security " "group rule. The port_range_min attribute constrains the port_range_max " "attribute. If the protocol is ICMP, this value must be an ICMP type." msgstr "" -#: heat/engine/resources/neutron/security_group.py:84 +#: heat/engine/resources/neutron/security_group.py:83 msgid "" "The protocol that is matched by the security group rule. Valid values " "include tcp, udp, and icmp." msgstr "" -#: heat/engine/resources/neutron/security_group.py:89 +#: heat/engine/resources/neutron/security_group.py:88 msgid "Whether to specify a remote group or a remote IP prefix." msgstr "" -#: heat/engine/resources/neutron/security_group.py:98 +#: heat/engine/resources/neutron/security_group.py:97 msgid "" "The remote group ID to be associated with this security group rule. If no" " value is specified then this rule will use this security group for the " "remote_group_id." msgstr "" -#: heat/engine/resources/neutron/security_group.py:104 +#: heat/engine/resources/neutron/security_group.py:103 msgid "" "The remote IP prefix (CIDR) to be associated with this security group " "rule." msgstr "" -#: heat/engine/resources/neutron/security_group.py:112 +#: heat/engine/resources/neutron/security_group.py:111 msgid "" "A string specifying a symbolic name for the security group, which is not " "required to be unique." msgstr "" -#: heat/engine/resources/neutron/security_group.py:123 +#: heat/engine/resources/neutron/security_group.py:122 msgid "List of security group rules." msgstr "" -#: heat/engine/resources/neutron/security_group.py:143 +#: heat/engine/resources/neutron/security_group.py:142 msgid "Security groups cannot be assigned the name \"default\"." msgstr "" -#: heat/engine/resources/neutron/subnet.py:54 +#: heat/engine/resources/neutron/subnet.py:53 msgid "The ID of the attached network." msgstr "" -#: heat/engine/resources/neutron/subnet.py:59 +#: heat/engine/resources/neutron/subnet.py:58 msgid "The CIDR." msgstr "" -#: heat/engine/resources/neutron/subnet.py:70 +#: heat/engine/resources/neutron/subnet.py:69 msgid "The name of the subnet." msgstr "" -#: heat/engine/resources/neutron/subnet.py:75 +#: heat/engine/resources/neutron/subnet.py:74 msgid "The IP version, which is 4 or 6." msgstr "" -#: heat/engine/resources/neutron/subnet.py:83 +#: heat/engine/resources/neutron/subnet.py:82 msgid "A specified set of DNS name servers to be used." msgstr "" -#: heat/engine/resources/neutron/subnet.py:89 +#: heat/engine/resources/neutron/subnet.py:88 msgid "The gateway IP address." msgstr "" -#: heat/engine/resources/neutron/subnet.py:94 +#: heat/engine/resources/neutron/subnet.py:93 msgid "Set to true if DHCP is enabled and false if DHCP is disabled." msgstr "" -#: heat/engine/resources/neutron/subnet.py:100 +#: heat/engine/resources/neutron/subnet.py:99 msgid "The start and end addresses for the allocation pools." msgstr "" -#: heat/engine/resources/neutron/subnet.py:117 +#: heat/engine/resources/neutron/subnet.py:116 msgid "" "The ID of the tenant who owns the network. Only administrative users can " "specify a tenant ID other than their own." msgstr "" -#: heat/engine/resources/neutron/subnet.py:139 +#: heat/engine/resources/neutron/subnet.py:138 msgid "Friendly name of the subnet." msgstr "" -#: heat/engine/resources/neutron/subnet.py:140 +#: heat/engine/resources/neutron/subnet.py:139 msgid "Parent network of the subnet." msgstr "" -#: heat/engine/resources/neutron/subnet.py:141 +#: heat/engine/resources/neutron/subnet.py:140 msgid "Tenant owning the subnet." msgstr "" -#: heat/engine/resources/neutron/subnet.py:142 +#: heat/engine/resources/neutron/subnet.py:141 msgid "Ip allocation pools and their ranges." msgstr "" -#: heat/engine/resources/neutron/subnet.py:143 +#: heat/engine/resources/neutron/subnet.py:142 msgid "Ip of the subnet's gateway." msgstr "" -#: heat/engine/resources/neutron/subnet.py:144 +#: heat/engine/resources/neutron/subnet.py:143 msgid "Additional routes for this subnet." msgstr "" -#: heat/engine/resources/neutron/subnet.py:145 +#: heat/engine/resources/neutron/subnet.py:144 msgid "Ip version for the subnet." msgstr "" -#: heat/engine/resources/neutron/subnet.py:146 +#: heat/engine/resources/neutron/subnet.py:145 msgid "CIDR block notation for this subnet." msgstr "" -#: heat/engine/resources/neutron/subnet.py:147 +#: heat/engine/resources/neutron/subnet.py:146 msgid "List of dns nameservers." msgstr "" -#: heat/engine/resources/neutron/subnet.py:148 +#: heat/engine/resources/neutron/subnet.py:147 msgid "'true' if DHCP is enabled for this subnet; 'false' otherwise." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:41 +#: heat/engine/resources/neutron/vpnservice.py:40 msgid "Name for the vpn service." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:46 +#: heat/engine/resources/neutron/vpnservice.py:45 msgid "Description for the vpn service." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:51 +#: heat/engine/resources/neutron/vpnservice.py:50 msgid "Administrative state for the vpn service." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:57 +#: heat/engine/resources/neutron/vpnservice.py:56 msgid "Unique identifier for the subnet in which the vpn service will be created." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:63 +#: heat/engine/resources/neutron/vpnservice.py:62 msgid "" "Unique identifier for the router to which the vpn service will be " "inserted." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:70 +#: heat/engine/resources/neutron/vpnservice.py:69 msgid "The administrative state of the vpn service." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:71 +#: heat/engine/resources/neutron/vpnservice.py:70 msgid "The description of the vpn service." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:72 +#: heat/engine/resources/neutron/vpnservice.py:71 msgid "The name of the vpn service." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:73 +#: heat/engine/resources/neutron/vpnservice.py:72 msgid "The unique identifier of the router to which the vpn service was inserted." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:75 +#: heat/engine/resources/neutron/vpnservice.py:74 msgid "The status of the vpn service." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:76 +#: heat/engine/resources/neutron/vpnservice.py:75 msgid "The unique identifier of the subnet in which the vpn service was created." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:78 +#: heat/engine/resources/neutron/vpnservice.py:77 msgid "The unique identifier of the tenant owning the vpn service." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:135 +#: heat/engine/resources/neutron/vpnservice.py:134 msgid "Name for the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:140 +#: heat/engine/resources/neutron/vpnservice.py:139 msgid "Description for the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:145 +#: heat/engine/resources/neutron/vpnservice.py:144 msgid "Remote branch router public IPv4 address or IPv6 address or FQDN." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:151 +#: heat/engine/resources/neutron/vpnservice.py:150 msgid "Remote branch router identity." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:156 +#: heat/engine/resources/neutron/vpnservice.py:155 msgid "Remote subnet(s) in CIDR format." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:161 +#: heat/engine/resources/neutron/vpnservice.py:160 msgid "Maximum transmission unit size (in bytes) for the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:167 +#: heat/engine/resources/neutron/vpnservice.py:166 msgid "Dead Peer Detection protocol configuration for the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:172 +#: heat/engine/resources/neutron/vpnservice.py:171 msgid "Controls DPD protocol mode." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:182 +#: heat/engine/resources/neutron/vpnservice.py:181 msgid "Number of seconds for the DPD delay." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:187 +#: heat/engine/resources/neutron/vpnservice.py:186 msgid "Number of seconds for the DPD timeout." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:194 +#: heat/engine/resources/neutron/vpnservice.py:193 msgid "Pre-shared key string for the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:199 +#: heat/engine/resources/neutron/vpnservice.py:198 msgid "Initiator state in lowercase for the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:207 +#: heat/engine/resources/neutron/vpnservice.py:206 msgid "Administrative state for the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:213 +#: heat/engine/resources/neutron/vpnservice.py:212 msgid "" "Unique identifier for the ike policy associated with the ipsec site " "connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:219 +#: heat/engine/resources/neutron/vpnservice.py:218 msgid "" "Unique identifier for the ipsec policy associated with the ipsec site " "connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:225 +#: heat/engine/resources/neutron/vpnservice.py:224 msgid "" "Unique identifier for the vpn service associated with the ipsec site " "connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:232 +#: heat/engine/resources/neutron/vpnservice.py:231 msgid "The administrative state of the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:234 +#: heat/engine/resources/neutron/vpnservice.py:233 msgid "The authentication mode of the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:236 +#: heat/engine/resources/neutron/vpnservice.py:235 msgid "The description of the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:237 +#: heat/engine/resources/neutron/vpnservice.py:236 msgid "" "The dead peer detection protocol configuration of the ipsec site " "connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:239 +#: heat/engine/resources/neutron/vpnservice.py:238 msgid "" "The unique identifier of ike policy associated with the ipsec site " "connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:241 +#: heat/engine/resources/neutron/vpnservice.py:240 msgid "The initiator of the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:242 +#: heat/engine/resources/neutron/vpnservice.py:241 msgid "" "The unique identifier of ipsec policy associated with the ipsec site " "connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:244 +#: heat/engine/resources/neutron/vpnservice.py:243 msgid "" "The maximum transmission unit size (in bytes) of the ipsec site " "connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:246 +#: heat/engine/resources/neutron/vpnservice.py:245 msgid "The name of the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:247 +#: heat/engine/resources/neutron/vpnservice.py:246 msgid "The remote branch router public IPv4 address or IPv6 address or FQDN." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:249 +#: heat/engine/resources/neutron/vpnservice.py:248 msgid "The remote subnet(s) in CIDR format of the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:251 +#: heat/engine/resources/neutron/vpnservice.py:250 msgid "The remote branch router identity of the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:253 +#: heat/engine/resources/neutron/vpnservice.py:252 msgid "The pre-shared key string of the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:254 +#: heat/engine/resources/neutron/vpnservice.py:253 msgid "The route mode of the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:255 +#: heat/engine/resources/neutron/vpnservice.py:254 msgid "The status of the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:256 +#: heat/engine/resources/neutron/vpnservice.py:255 msgid "The unique identifier of the tenant owning the ipsec site connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:258 +#: heat/engine/resources/neutron/vpnservice.py:257 msgid "" "The unique identifier of vpn service associated with the ipsec site " "connection." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:313 +#: heat/engine/resources/neutron/vpnservice.py:312 msgid "Name for the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:318 +#: heat/engine/resources/neutron/vpnservice.py:317 msgid "Description for the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:323 +#: heat/engine/resources/neutron/vpnservice.py:322 msgid "Authentication hash algorithm for the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:331 +#: heat/engine/resources/neutron/vpnservice.py:330 msgid "Encryption algorithm for the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:340 +#: heat/engine/resources/neutron/vpnservice.py:339 msgid "Negotiation mode for the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:348 +#: heat/engine/resources/neutron/vpnservice.py:347 msgid "Safety assessment lifetime configuration for the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:352 -#: heat/engine/resources/neutron/vpnservice.py:499 +#: heat/engine/resources/neutron/vpnservice.py:351 +#: heat/engine/resources/neutron/vpnservice.py:498 msgid "Safety assessment lifetime units." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:360 -#: heat/engine/resources/neutron/vpnservice.py:508 +#: heat/engine/resources/neutron/vpnservice.py:359 +#: heat/engine/resources/neutron/vpnservice.py:507 msgid "Safety assessment lifetime value in specified units." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:368 +#: heat/engine/resources/neutron/vpnservice.py:367 msgid "Perfect forward secrecy in lowercase for the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:376 +#: heat/engine/resources/neutron/vpnservice.py:375 msgid "Version for the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:385 +#: heat/engine/resources/neutron/vpnservice.py:384 msgid "The authentication hash algorithm used by the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:387 +#: heat/engine/resources/neutron/vpnservice.py:386 msgid "The description of the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:388 +#: heat/engine/resources/neutron/vpnservice.py:387 msgid "The encryption algorithm used by the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:390 +#: heat/engine/resources/neutron/vpnservice.py:389 msgid "The version of the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:391 +#: heat/engine/resources/neutron/vpnservice.py:390 msgid "The safety assessment lifetime configuration for the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:393 +#: heat/engine/resources/neutron/vpnservice.py:392 msgid "The name of the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:394 +#: heat/engine/resources/neutron/vpnservice.py:393 msgid "The perfect forward secrecy of the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:395 +#: heat/engine/resources/neutron/vpnservice.py:394 msgid "The negotiation mode of the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:397 +#: heat/engine/resources/neutron/vpnservice.py:396 msgid "The unique identifier of the tenant owning the ike policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:451 +#: heat/engine/resources/neutron/vpnservice.py:450 msgid "Name for the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:456 +#: heat/engine/resources/neutron/vpnservice.py:455 msgid "Description for the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:461 +#: heat/engine/resources/neutron/vpnservice.py:460 msgid "Transform protocol for the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:469 +#: heat/engine/resources/neutron/vpnservice.py:468 msgid "Encapsulation mode for the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:477 +#: heat/engine/resources/neutron/vpnservice.py:476 msgid "Authentication hash algorithm for the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:485 +#: heat/engine/resources/neutron/vpnservice.py:484 msgid "Encryption algorithm for the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:494 +#: heat/engine/resources/neutron/vpnservice.py:493 msgid "Safety assessment lifetime configuration for the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:516 +#: heat/engine/resources/neutron/vpnservice.py:515 msgid "Perfect forward secrecy for the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:525 +#: heat/engine/resources/neutron/vpnservice.py:524 msgid "The authentication hash algorithm of the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:527 +#: heat/engine/resources/neutron/vpnservice.py:526 msgid "The description of the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:528 +#: heat/engine/resources/neutron/vpnservice.py:527 msgid "The encapsulation mode of the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:529 +#: heat/engine/resources/neutron/vpnservice.py:528 msgid "The encryption algorithm of the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:531 +#: heat/engine/resources/neutron/vpnservice.py:530 msgid "The safety assessment lifetime configuration of the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:533 +#: heat/engine/resources/neutron/vpnservice.py:532 msgid "The name of the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:534 +#: heat/engine/resources/neutron/vpnservice.py:533 msgid "The perfect forward secrecy of the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:535 +#: heat/engine/resources/neutron/vpnservice.py:534 msgid "The unique identifier of the tenant owning the ipsec policy." msgstr "" -#: heat/engine/resources/neutron/vpnservice.py:537 +#: heat/engine/resources/neutron/vpnservice.py:536 msgid "The transform protocol of the ipsec policy." msgstr "" -#: heat/engine/resources/software_config/cloud_config.py:44 +#: heat/engine/resources/software_config/cloud_config.py:43 msgid "" "Map representing the cloud-config data structure which will be formatted " "as YAML." msgstr "" -#: heat/engine/resources/software_config/multi_part.py:61 +#: heat/engine/resources/software_config/multi_part.py:60 msgid "Parts belonging to this messsage." msgstr "" -#: heat/engine/resources/software_config/multi_part.py:68 +#: heat/engine/resources/software_config/multi_part.py:67 msgid "" "Content of part to attach, either inline or by referencing the ID of " "another software config resource" msgstr "" -#: heat/engine/resources/software_config/multi_part.py:75 +#: heat/engine/resources/software_config/multi_part.py:74 msgid "Optional filename to associate with part." msgstr "" -#: heat/engine/resources/software_config/multi_part.py:79 +#: heat/engine/resources/software_config/multi_part.py:78 msgid "Whether the part content is text or multipart." msgstr "" -#: heat/engine/resources/software_config/multi_part.py:85 +#: heat/engine/resources/software_config/multi_part.py:84 msgid "Optional subtype to specify with the type." msgstr "" -#: heat/engine/resources/software_config/software_config.py:64 +#: heat/engine/resources/software_config/software_config.py:63 msgid "Name of the input." msgstr "" -#: heat/engine/resources/software_config/software_config.py:69 +#: heat/engine/resources/software_config/software_config.py:68 msgid "Description of the input." msgstr "" -#: heat/engine/resources/software_config/software_config.py:73 +#: heat/engine/resources/software_config/software_config.py:72 msgid "Type of the value of the input." msgstr "" -#: heat/engine/resources/software_config/software_config.py:80 +#: heat/engine/resources/software_config/software_config.py:79 msgid "Default value for the input if none is specified." msgstr "" -#: heat/engine/resources/software_config/software_config.py:87 +#: heat/engine/resources/software_config/software_config.py:86 msgid "Name of the output." msgstr "" -#: heat/engine/resources/software_config/software_config.py:92 +#: heat/engine/resources/software_config/software_config.py:91 msgid "Description of the output." msgstr "" -#: heat/engine/resources/software_config/software_config.py:96 +#: heat/engine/resources/software_config/software_config.py:95 msgid "Type of the value of the output." msgstr "" -#: heat/engine/resources/software_config/software_config.py:103 +#: heat/engine/resources/software_config/software_config.py:102 msgid "" "Denotes that the deployment is in an error state if this output has a " "value." msgstr "" -#: heat/engine/resources/software_config/software_config.py:112 +#: heat/engine/resources/software_config/software_config.py:111 msgid "" "Namespace to group this software config by when delivered to a server. " "This may imply what configuration tool is going to perform the " "configuration." msgstr "" -#: heat/engine/resources/software_config/software_config.py:119 +#: heat/engine/resources/software_config/software_config.py:118 msgid "" "Configuration script or manifest which specifies what actual " "configuration is performed." msgstr "" -#: heat/engine/resources/software_config/software_config.py:124 +#: heat/engine/resources/software_config/software_config.py:123 msgid "" "Map containing options specific to the configuration management tool used" " by this resource." msgstr "" -#: heat/engine/resources/software_config/software_config.py:129 +#: heat/engine/resources/software_config/software_config.py:128 msgid "Schema representing the inputs that this software config is expecting." msgstr "" -#: heat/engine/resources/software_config/software_config.py:136 +#: heat/engine/resources/software_config/software_config.py:135 msgid "Schema representing the outputs that this software config will produce." msgstr "" -#: heat/engine/resources/software_config/software_config.py:144 +#: heat/engine/resources/software_config/software_config.py:143 msgid "The config value of the software config." msgstr "" -#: heat/engine/resources/software_config/software_config.py:163 +#: heat/engine/resources/software_config/software_config.py:162 #, python-format msgid "Software config %s is not found." msgstr "" @@ -5360,57 +5410,57 @@ msgstr "" msgid "Deploy data available" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:232 +#: heat/engine/resources/software_config/software_deployment.py:237 #, python-format msgid "Deployment to server failed: %s" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:282 +#: heat/engine/resources/software_config/software_deployment.py:287 msgid "ID of the server being deployed to" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:287 +#: heat/engine/resources/software_config/software_deployment.py:292 msgid "Name of the current action being deployed" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:292 +#: heat/engine/resources/software_config/software_deployment.py:297 msgid "ID of the stack this deployment belongs to" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:297 +#: heat/engine/resources/software_config/software_deployment.py:302 msgid "Name of this deployment resource in the stack" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:305 +#: heat/engine/resources/software_config/software_deployment.py:310 msgid "ID of signal to use for signalling output values" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:313 +#: heat/engine/resources/software_config/software_deployment.py:318 msgid "URL for API authentication" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:318 +#: heat/engine/resources/software_config/software_deployment.py:323 msgid "Username for API authentication" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:323 +#: heat/engine/resources/software_config/software_deployment.py:328 msgid "User ID for API authentication" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:328 +#: heat/engine/resources/software_config/software_deployment.py:333 msgid "Password for API authentication" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:333 +#: heat/engine/resources/software_config/software_deployment.py:338 msgid "ID of project for API authentication" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:441 +#: heat/engine/resources/software_config/software_deployment.py:446 #, python-format msgid "Deployment exited with non-zero status code: %s" msgstr "" -#: heat/engine/resources/software_config/software_deployment.py:463 +#: heat/engine/resources/software_config/software_deployment.py:468 msgid "Outputs received" msgstr "" @@ -5424,283 +5474,126 @@ msgstr "" msgid "Name of key to use for substituting inputs during deployment" msgstr "" -#: heat/openstack/common/eventlet_backdoor.py:140 -#, python-format -msgid "Eventlet backdoor listening on %(port)s for process %(pid)d" -msgstr "" - -#: heat/openstack/common/excutils.py:62 -#, python-format -msgid "Original exception being dropped: %s" -msgstr "" - -#: heat/openstack/common/excutils.py:91 -#, python-format -msgid "Unexpected exception occurred %d time(s)... retrying." -msgstr "" - -#: heat/openstack/common/fileutils.py:62 -#, python-format -msgid "Reloading cached file %s" -msgstr "" - -#: heat/openstack/common/gettextutils.py:263 +#: heat/openstack/common/gettextutils.py:271 msgid "Message objects do not support addition." msgstr "" -#: heat/openstack/common/gettextutils.py:272 +#: heat/openstack/common/gettextutils.py:281 msgid "" "Message objects do not support str() because they may contain non-ascii " "characters. Please use unicode() or translate() instead." msgstr "" -#: heat/openstack/common/lockutils.py:82 -#, python-format -msgid "Created lock path: %s" -msgstr "" - -#: heat/openstack/common/lockutils.py:93 -#, python-format -msgid "Got file lock \"%s\"" -msgstr "" - -#: heat/openstack/common/lockutils.py:108 -#, python-format -msgid "Could not release the acquired lock `%s`" -msgstr "" - -#: heat/openstack/common/lockutils.py:110 -#, python-format -msgid "Released file lock \"%s\"" -msgstr "" - -#: heat/openstack/common/lockutils.py:148 -#, python-format -msgid "Attempting to grab external lock \"%(lock)s\"" -msgstr "" - -#: heat/openstack/common/lockutils.py:174 +#: heat/openstack/common/lockutils.py:102 #, python-format -msgid "Got semaphore \"%(lock)s\"" +msgid "Unable to acquire lock on `%(filename)s` due to %(exception)s" msgstr "" -#: heat/openstack/common/lockutils.py:231 -#, python-format -msgid "Got semaphore / lock \"%(function)s\"" -msgstr "" - -#: heat/openstack/common/lockutils.py:235 -#, python-format -msgid "Semaphore / lock released \"%(function)s\"" -msgstr "" - -#: heat/openstack/common/log.py:301 +#: heat/openstack/common/log.py:327 #, python-format msgid "Deprecated: %s" -msgstr "" +msgstr "已淘汰:%s" -#: heat/openstack/common/log.py:404 +#: heat/openstack/common/log.py:438 #, python-format msgid "Error loading logging config %(log_config)s: %(err_msg)s" msgstr "" -#: heat/openstack/common/log.py:455 +#: heat/openstack/common/log.py:489 #, python-format msgid "syslog facility must be one of: %s" -msgstr "" +msgstr "Syslog 機能必須是下列其中一項:%s" -#: heat/openstack/common/log.py:625 +#: heat/openstack/common/log.py:710 #, python-format msgid "Fatal call to deprecated config: %(msg)s" -msgstr "" +msgstr "呼叫已淘汰的配置時發生嚴重錯誤:%(msg)s" -#: heat/openstack/common/loopingcall.py:82 -#, python-format -msgid "task run outlasted interval by %s sec" -msgstr "" - -#: heat/openstack/common/loopingcall.py:89 -msgid "in fixed duration looping call" -msgstr "" - -#: heat/openstack/common/loopingcall.py:129 -#, python-format -msgid "Dynamic looping call sleeping for %.02f seconds" -msgstr "" - -#: heat/openstack/common/loopingcall.py:136 -msgid "in dynamic looping call" -msgstr "" - -#: heat/openstack/common/policy.py:73 +#: heat/openstack/common/policy.py:96 msgid "JSON file containing policy" msgstr "" -#: heat/openstack/common/policy.py:76 +#: heat/openstack/common/policy.py:99 msgid "Rule enforced when requested rule is not found" msgstr "" -#: heat/openstack/common/policy.py:90 +#: heat/openstack/common/policy.py:113 #, python-format msgid "Policy doesn't allow %s to be performed." msgstr "" -#: heat/openstack/common/policy.py:175 +#: heat/openstack/common/policy.py:207 #, python-format msgid "Rules must be an instance of dict or Rules, got %s instead" msgstr "" -#: heat/openstack/common/policy.py:205 -msgid "Rules successfully reloaded" -msgstr "" - -#: heat/openstack/common/policy.py:251 -#, python-format -msgid "Rule %s will be now enforced" -msgstr "" - -#: heat/openstack/common/policy.py:266 -#, python-format -msgid "Rule [%s] doesn't exist" -msgstr "" - -#: heat/openstack/common/policy.py:474 -#, python-format -msgid "Failed to understand rule %s" -msgstr "" - -#: heat/openstack/common/policy.py:484 -#, python-format -msgid "No handler for matches of kind %s" -msgstr "" - -#: heat/openstack/common/policy.py:754 -#, python-format -msgid "Failed to understand rule %r" -msgstr "" - -#: heat/openstack/common/processutils.py:130 +#: heat/openstack/common/processutils.py:131 #, python-format msgid "Got unknown keyword args to utils.execute: %r" -msgstr "" +msgstr "已取得 utils.execute 的不明關鍵字引數:%r" -#: heat/openstack/common/processutils.py:145 +#: heat/openstack/common/processutils.py:146 #, python-format msgid "Running cmd (subprocess): %s" -msgstr "" +msgstr "正在執行 cmd(子程序):%s" -#: heat/openstack/common/processutils.py:169 -#: heat/openstack/common/processutils.py:241 +#: heat/openstack/common/processutils.py:170 +#: heat/openstack/common/processutils.py:242 #, python-format msgid "Result was %s" -msgstr "" +msgstr "結果是 %s" -#: heat/openstack/common/processutils.py:181 +#: heat/openstack/common/processutils.py:182 #, python-format msgid "%r failed. Retrying." -msgstr "" +msgstr "%r 失敗。正在重試。" -#: heat/openstack/common/processutils.py:220 +#: heat/openstack/common/processutils.py:221 #, python-format msgid "Running cmd (SSH): %s" -msgstr "" +msgstr "正在執行 cmd (SSH):%s" -#: heat/openstack/common/processutils.py:222 +#: heat/openstack/common/processutils.py:223 msgid "Environment not supported over SSH" -msgstr "" +msgstr "無法透過 SSH 來支援環境" -#: heat/openstack/common/processutils.py:226 +#: heat/openstack/common/processutils.py:227 msgid "process_input not supported over SSH" -msgstr "" - -#: heat/openstack/common/service.py:166 heat/openstack/common/service.py:384 -msgid "Full set of CONF:" -msgstr "" - -#: heat/openstack/common/service.py:175 heat/openstack/common/service.py:269 -#, python-format -msgid "Caught %s, exiting" -msgstr "" - -#: heat/openstack/common/service.py:187 -msgid "Exception during rpc cleanup." -msgstr "" - -#: heat/openstack/common/service.py:238 -msgid "Parent process has died unexpectedly, exiting" -msgstr "" - -#: heat/openstack/common/service.py:275 -msgid "Unhandled exception" -msgstr "" - -#: heat/openstack/common/service.py:308 -msgid "Forking too fast, sleeping" -msgstr "" - -#: heat/openstack/common/service.py:327 -#, python-format -msgid "Started child %d" -msgstr "" - -#: heat/openstack/common/service.py:354 -#, python-format -msgid "Child %(pid)d killed by signal %(sig)d" -msgstr "" - -#: heat/openstack/common/service.py:358 -#, python-format -msgid "Child %(pid)s exited with status %(code)d" -msgstr "" - -#: heat/openstack/common/service.py:362 -#, python-format -msgid "pid %d not in child list" -msgstr "" - -#: heat/openstack/common/service.py:392 -#, python-format -msgid "Caught %s, stopping children" -msgstr "" - -#: heat/openstack/common/service.py:410 -#, python-format -msgid "Waiting on %d children to exit" -msgstr "" +msgstr "無法透過 SSH 來支援 process_input" #: heat/openstack/common/sslutils.py:50 #, python-format msgid "Unable to find cert_file : %s" -msgstr "" +msgstr "找不到 cert_file:%s" #: heat/openstack/common/sslutils.py:53 #, python-format msgid "Unable to find ca_file : %s" -msgstr "" +msgstr "找不到 ca_file:%s" #: heat/openstack/common/sslutils.py:56 #, python-format msgid "Unable to find key_file : %s" -msgstr "" +msgstr "找不到 key_file:%s" #: heat/openstack/common/sslutils.py:98 #, python-format msgid "Invalid SSL version : %s" msgstr "" -#: heat/openstack/common/strutils.py:86 +#: heat/openstack/common/strutils.py:92 #, python-format msgid "Unrecognized value '%(val)s', acceptable values are: %(acceptable)s" msgstr "" -#: heat/openstack/common/strutils.py:188 +#: heat/openstack/common/strutils.py:197 #, python-format -msgid "Invalid string format: %s" +msgid "Invalid unit system: \"%s\"" msgstr "" -#: heat/openstack/common/strutils.py:195 +#: heat/openstack/common/strutils.py:206 #, python-format -msgid "Unknown byte multiplier: %s" +msgid "Invalid string format: %s" msgstr "" #: heat/openstack/common/versionutils.py:69 @@ -5731,128 +5624,87 @@ msgstr "" msgid "Length of %(given)d is too long, max = %(maximum)d" msgstr "" -#: heat/openstack/common/db/exception.py:42 +#: heat/openstack/common/db/exception.py:44 msgid "Invalid Parameter: Unicode is not supported by the current database." -msgstr "" +msgstr "無效參數:現行資料庫不支援 Unicode。" -#: heat/openstack/common/db/sqlalchemy/migration.py:219 +#: heat/openstack/common/db/sqlalchemy/migration.py:190 msgid "version should be an integer" -msgstr "" +msgstr "版本應該是整數" -#: heat/openstack/common/db/sqlalchemy/migration.py:242 +#: heat/openstack/common/db/sqlalchemy/migration.py:226 #, python-format msgid "" "Tables \"%s\" have non utf8 collation, please make sure all tables are " "CHARSET=utf8" msgstr "" -#: heat/openstack/common/db/sqlalchemy/migration.py:266 +#: heat/openstack/common/db/sqlalchemy/migration.py:250 msgid "" "The database is not under version control, but has tables. Please stamp " "the current version of the schema manually." msgstr "" -#: heat/openstack/common/db/sqlalchemy/session.py:596 -msgid "DB exception wrapped." -msgstr "" - -#: heat/openstack/common/db/sqlalchemy/session.py:665 -#, python-format -msgid "Database server has gone away: %s" -msgstr "" +#: heat/openstack/common/db/sqlalchemy/utils.py:58 +msgid "Sort key supplied was not valid." +msgstr "提供的排序鍵無效。" -#: heat/openstack/common/db/sqlalchemy/session.py:743 -msgid "" -"This application has not enabled MySQL traditional mode, which means " -"silent data corruption may occur. Please encourage the application " -"developers to enable this mode." -msgstr "" +#: heat/openstack/common/db/sqlalchemy/utils.py:119 +msgid "Unknown sort direction, must be 'desc' or 'asc'" +msgstr "不明的排序方向,必須為 'desc' 或 'asc'" -#: heat/openstack/common/db/sqlalchemy/session.py:767 +#: heat/openstack/common/db/sqlalchemy/utils.py:162 #, python-format -msgid "SQL connection failed. %s attempts left." +msgid "" +"There is no `deleted` column in `%s` table. Project doesn't use soft-" +"deleted feature." msgstr "" -#: heat/openstack/common/db/sqlalchemy/test_migrations.py:103 +#: heat/openstack/common/db/sqlalchemy/utils.py:174 #, python-format -msgid "Got lock \"%s\"" -msgstr "" +msgid "Unrecognized read_deleted value '%s'" +msgstr "無法辨識 read_deleted 值 '%s'" -#: heat/openstack/common/db/sqlalchemy/test_migrations.py:106 +#: heat/openstack/common/db/sqlalchemy/utils.py:181 #, python-format -msgid "Lock released \"%s\"" -msgstr "" - -#: heat/openstack/common/db/sqlalchemy/utils.py:58 -msgid "Sort key supplied was not valid." +msgid "There is no `project_id` column in `%s` table." msgstr "" -#: heat/openstack/common/db/sqlalchemy/utils.py:97 -msgid "Id not in sort_keys; is sort_keys unique?" +#: heat/openstack/common/db/sqlalchemy/utils.py:243 +msgid "model should be a subclass of ModelBase" msgstr "" -#: heat/openstack/common/db/sqlalchemy/utils.py:119 -msgid "Unknown sort direction, must be 'desc' or 'asc'" -msgstr "" - -#: heat/openstack/common/db/sqlalchemy/utils.py:194 +#: heat/openstack/common/db/sqlalchemy/utils.py:294 #, python-format msgid "" "Please specify column %s in col_name_col_instance param. It is required " "because column has unsupported type by sqlite)." -msgstr "" +msgstr "請在 col_name_col_instance 參數中指定直欄 %s。它是必要的,因為直欄具有不受 SQLite 支援的類型。" -#: heat/openstack/common/db/sqlalchemy/utils.py:200 +#: heat/openstack/common/db/sqlalchemy/utils.py:300 #, python-format msgid "" "col_name_col_instance param has wrong type of column instance for column " "%s It should be instance of sqlalchemy.Column." -msgstr "" - -#: heat/openstack/common/db/sqlalchemy/utils.py:280 -#, python-format -msgid "Deleting duplicated row with id: %(id)s from table: %(table)s" -msgstr "" +msgstr "col_name_col_instance 參數的直欄 %s 具有錯誤類型的直欄實例。它應該是 sqlalchemy.Column 的實例。" -#: heat/openstack/common/db/sqlalchemy/utils.py:301 +#: heat/openstack/common/db/sqlalchemy/utils.py:408 msgid "Unsupported id columns type" msgstr "" #: heat/openstack/common/notifier/api.py:129 #, python-format msgid "%s not in valid priorities" -msgstr "" - -#: heat/openstack/common/notifier/api.py:145 -#, python-format -msgid "" -"Problem '%(e)s' attempting to send to notification system. " -"Payload=%(payload)s" -msgstr "" +msgstr "%s 的優先順序無效" -#: heat/openstack/common/notifier/api.py:164 -#, python-format -msgid "Failed to load notifier %s. These notifications will not be sent." -msgstr "" - -#: heat/openstack/common/notifier/list_notifier.py:112 +#: heat/openstack/common/notifier/list_notifier.py:113 #, python-format msgid "Problem '%(e)s' attempting to send to notification driver %(driver)s." msgstr "" -#: heat/openstack/common/notifier/rabbit_notifier.py:27 +#: heat/openstack/common/notifier/rabbit_notifier.py:28 msgid "The rabbit_notifier is now deprecated. Please use rpc_notifier instead." -msgstr "" - -#: heat/openstack/common/notifier/rpc_notifier.py:45 -#: heat/openstack/common/notifier/rpc_notifier2.py:51 -#, python-format -msgid "Could not send notification to %(topic)s. Payload=%(message)s" -msgstr "" - -#: heat/openstack/common/rpc/amqp.py:75 -msgid "Pool creating new connection" -msgstr "" +msgstr "rabbit_notifier 現已淘汰。請改用 rpc_notifier。" #: heat/openstack/common/rpc/amqp.py:202 #, python-format @@ -5871,69 +5723,19 @@ msgid "" " be a MulticallProxyWaiter leak." msgstr "" -#: heat/openstack/common/rpc/amqp.py:290 -#, python-format -msgid "unpacked context: %s" -msgstr "" - -#: heat/openstack/common/rpc/amqp.py:342 -#, python-format -msgid "UNIQUE_ID is %s." -msgstr "" - -#: heat/openstack/common/rpc/amqp.py:435 -#, python-format -msgid "received %s" -msgstr "" - #: heat/openstack/common/rpc/amqp.py:443 #, python-format msgid "no method for message: %s" -msgstr "" +msgstr "訊息沒有方法:%s" #: heat/openstack/common/rpc/amqp.py:444 #, python-format msgid "No method for message: %s" -msgstr "" - -#: heat/openstack/common/rpc/amqp.py:472 -#: heat/openstack/common/rpc/impl_zmq.py:280 -#, python-format -msgid "Expected exception during message handling (%s)" -msgstr "" - -#: heat/openstack/common/rpc/amqp.py:480 -#: heat/openstack/common/rpc/impl_zmq.py:286 -msgid "Exception during message handling" -msgstr "" - -#: heat/openstack/common/rpc/amqp.py:554 -#, python-format -msgid "Making synchronous call on %s ..." -msgstr "" - -#: heat/openstack/common/rpc/amqp.py:557 -#, python-format -msgid "MSG_ID is %s" -msgstr "" - -#: heat/openstack/common/rpc/amqp.py:583 -#, python-format -msgid "Making asynchronous cast on %s..." -msgstr "" - -#: heat/openstack/common/rpc/amqp.py:592 -msgid "Making asynchronous fanout cast..." -msgstr "" - -#: heat/openstack/common/rpc/amqp.py:620 -#, python-format -msgid "Sending %(event_type)s on %(topic)s" -msgstr "" +msgstr "訊息沒有方法:%s" #: heat/openstack/common/rpc/common.py:76 msgid "An unknown RPC related exception occurred." -msgstr "" +msgstr "發生與 RPC 相關的不明異常狀況。" #: heat/openstack/common/rpc/common.py:106 #, python-format @@ -5941,6 +5743,8 @@ msgid "" "Remote error: %(exc_type)s %(value)s\n" "%(traceback)s." msgstr "" +"遠端錯誤:%(exc_type)s %(value)s\n" +"%(traceback)s。" #: heat/openstack/common/rpc/common.py:123 #, python-format @@ -5953,292 +5757,79 @@ msgstr "" #: heat/openstack/common/rpc/common.py:141 #: heat/openstack/common/rpc/common.py:142 msgid "<unknown>" -msgstr "" +msgstr "<未知>" #: heat/openstack/common/rpc/common.py:146 #, python-format msgid "Found duplicate message(%(msg_id)s). Skipping it." -msgstr "" +msgstr "發現重複的訊息 (%(msg_id)s)。正在跳過該訊息。" #: heat/openstack/common/rpc/common.py:150 msgid "Invalid reuse of an RPC connection." -msgstr "" +msgstr "重複使用 RPC 連線無效。" #: heat/openstack/common/rpc/common.py:154 #, python-format msgid "Specified RPC version, %(version)s, not supported by this endpoint." -msgstr "" +msgstr "此端點不支援所指定的 RPC 版本 %(version)s。" #: heat/openstack/common/rpc/common.py:159 #, python-format msgid "" "Specified RPC envelope version, %(version)s, not supported by this " "endpoint." -msgstr "" +msgstr "此端點不支援所指定的 RPC 封套版本 %(version)s。" #: heat/openstack/common/rpc/common.py:164 #, python-format msgid "Specified RPC version cap, %(version_cap)s, is too low" msgstr "" -#: heat/openstack/common/rpc/common.py:292 -#, python-format -msgid "Returning exception %s to caller" -msgstr "" - -#: heat/openstack/common/rpc/impl_kombu.py:156 -msgid "Failed to process message ... skipping it." -msgstr "" - -#: heat/openstack/common/rpc/impl_kombu.py:160 -msgid "Failed to process message ... will requeue." -msgstr "" - -#: heat/openstack/common/rpc/impl_kombu.py:495 -#, python-format -msgid "Reconnecting to AMQP server on %(hostname)s:%(port)d" -msgstr "" - -#: heat/openstack/common/rpc/impl_kombu.py:517 -#, python-format -msgid "Connected to AMQP server on %(hostname)s:%(port)d" -msgstr "" - -#: heat/openstack/common/rpc/impl_kombu.py:554 +#: heat/openstack/common/rpc/impl_kombu.py:557 #, python-format msgid "" "Unable to connect to AMQP server on %(hostname)s:%(port)d after " "%(max_retries)d tries: %(err_str)s" msgstr "" - -#: heat/openstack/common/rpc/impl_kombu.py:568 -#, python-format -msgid "" -"AMQP server on %(hostname)s:%(port)d is unreachable: %(err_str)s. Trying " -"again in %(sleep_time)d seconds." -msgstr "" - -#: heat/openstack/common/rpc/impl_kombu.py:622 -#: heat/openstack/common/rpc/impl_qpid.py:573 -#, python-format -msgid "Failed to declare consumer for topic '%(topic)s': %(err_str)s" -msgstr "" - -#: heat/openstack/common/rpc/impl_kombu.py:640 -#: heat/openstack/common/rpc/impl_qpid.py:588 -#, python-format -msgid "Timed out waiting for RPC response: %s" -msgstr "" - -#: heat/openstack/common/rpc/impl_kombu.py:644 -#: heat/openstack/common/rpc/impl_qpid.py:592 -#, python-format -msgid "Failed to consume message from queue: %s" -msgstr "" - -#: heat/openstack/common/rpc/impl_kombu.py:683 -#: heat/openstack/common/rpc/impl_qpid.py:627 -#, python-format -msgid "Failed to publish message to topic '%(topic)s': %(err_str)s" -msgstr "" +"嘗試 %(max_retries)d 次之後,仍無法連接至 %(hostname)s:%(port)d 上的 AMQP " +"伺服器:%(err_str)s" #: heat/openstack/common/rpc/impl_qpid.py:87 #, python-format msgid "Invalid value for qpid_topology_version: %d" msgstr "" -#: heat/openstack/common/rpc/impl_qpid.py:191 -msgid "Failed to process message... skipping it." -msgstr "" - -#: heat/openstack/common/rpc/impl_qpid.py:515 -#, python-format -msgid "Unable to connect to AMQP server: %(e)s. Sleeping %(delay)s seconds" -msgstr "" - -#: heat/openstack/common/rpc/impl_qpid.py:521 -#, python-format -msgid "Connected to AMQP server on %s" -msgstr "" - -#: heat/openstack/common/rpc/impl_qpid.py:534 -msgid "Re-established AMQP queues" -msgstr "" - -#: heat/openstack/common/rpc/impl_qpid.py:600 -msgid "Error processing message. Skipping it." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:96 -msgid "JSON serialization failed." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:101 -#, python-format -msgid "Deserializing: %s" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:136 -#, python-format -msgid "Connecting to %(addr)s with %(type)s" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:137 -#, python-format -msgid "-> Subscribed to %(subscribe)s" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:138 -#, python-format -msgid "-> bind: %(bind)s" -msgstr "" - #: heat/openstack/common/rpc/impl_zmq.py:146 msgid "Could not open socket." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:158 -#, python-format -msgid "Subscribing to %s" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:195 -msgid "ZeroMQ socket could not be closed." -msgstr "" +msgstr "無法開啟 Socket。" #: heat/openstack/common/rpc/impl_zmq.py:200 msgid "You cannot recv on this socket." -msgstr "" +msgstr "無法在此 Socket 上接收。" #: heat/openstack/common/rpc/impl_zmq.py:205 msgid "You cannot send on this socket." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:267 -#, python-format -msgid "Running func with context: %s" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:305 -msgid "Sending reply" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:339 -msgid "RPC message did not include method." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:371 -msgid "Registering reactor" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:383 -msgid "In reactor registered" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:388 -msgid "Consuming socket" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:438 -#, python-format -msgid "Creating proxy for topic: %s" -msgstr "" +msgstr "無法在此 Socket 上傳送。" #: heat/openstack/common/rpc/impl_zmq.py:444 msgid "Topic contained dangerous characters." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:476 -msgid "Topic socket file creation failed." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:482 -#, python-format -msgid "Local per-topic backlog buffer full for topic %(topic)s. Dropping message." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:498 -#, python-format -msgid "Required IPC directory does not exist at %s" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:507 -#, python-format -msgid "Permission denied to IPC directory at %s" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:510 -msgid "Could not create ZeroMQ receiver daemon. Socket may already be in use." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:544 -#, python-format -msgid "CONSUMER RECEIVED DATA: %s" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:563 -msgid "ZMQ Envelope version unsupported or unknown." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:591 -msgid "Skipping topic registration. Already registered." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:598 -#, python-format -msgid "Consumer is a zmq.%s" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:650 -msgid "Creating payload" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:663 -msgid "Creating queue socket for reply waiter" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:676 -msgid "Sending cast" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:679 -msgid "Cast sent; Waiting reply" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:682 -#, python-format -msgid "Received message: %s" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:683 -msgid "Unpacking response" -msgstr "" +msgstr "主題包含危險字元。" #: heat/openstack/common/rpc/impl_zmq.py:692 msgid "Unsupported or unknown ZMQ envelope returned." -msgstr "" +msgstr "傳回了不支援或不明的 ZMQ 封套。" #: heat/openstack/common/rpc/impl_zmq.py:699 msgid "RPC Message Invalid." -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:722 -#, python-format -msgid "%(msg)s" -msgstr "" - -#: heat/openstack/common/rpc/impl_zmq.py:725 -#, python-format -msgid "Sending message(s) to: %s" -msgstr "" +msgstr "RPC 訊息無效。" #: heat/openstack/common/rpc/impl_zmq.py:729 msgid "No matchmaker results. Not casting." -msgstr "" +msgstr "符合程式找不到結果。不進行強制轉型。" #: heat/openstack/common/rpc/impl_zmq.py:732 msgid "No match from matchmaker." -msgstr "" +msgstr "沒有來自符合程式的相符項。" #: heat/openstack/common/rpc/impl_zmq.py:814 #, python-format @@ -6247,31 +5838,15 @@ msgstr "" #: heat/openstack/common/rpc/matchmaker.py:46 msgid "Match not found by MatchMaker." -msgstr "" +msgstr "符合程式找不到相符項。" #: heat/openstack/common/rpc/matchmaker.py:80 msgid "Matchmaker does not implement registration or heartbeat." -msgstr "" - -#: heat/openstack/common/rpc/matchmaker.py:216 -#, python-format -msgid "Matchmaker unregistered: %(key)s, %(host)s" -msgstr "" +msgstr "符合程式沒有實作登錄或活動訊號。" #: heat/openstack/common/rpc/matchmaker.py:228 msgid "Register before starting heartbeat." -msgstr "" - -#: heat/openstack/common/rpc/matchmaker_ring.py:76 -#: heat/openstack/common/rpc/matchmaker_ring.py:94 -#, python-format -msgid "No key defining hosts for topic '%s', see ringfile" -msgstr "" - -#: heat/openstack/common/rpc/service.py:47 -#, python-format -msgid "Creating Consumer connection for Service %s" -msgstr "" +msgstr "在啟動活動訊號之前登錄。" #: heat/tests/generic_resource.py:32 #, python-format @@ -6303,12 +5878,22 @@ msgstr "" msgid "Signaled resource (Type \"%(type)s\") %(details)s" msgstr "" -#: heat/tests/test_exception.py:24 +#: heat/tests/test_exception.py:25 #, python-format msgid "Testing message %(text)s" msgstr "" -#: heat/tests/test_server.py:814 +#: heat/tests/test_function.py:24 +msgid "Need more arguments" +msgstr "" + +#: heat/tests/test_provider_template.py:398 +#: heat/tests/test_provider_template.py:504 +#: heat/tests/test_provider_template.py:530 +msgid "Failed to retrieve template" +msgstr "" + +#: heat/tests/test_server.py:878 #, python-format msgid "" "Properties \"uuid\" and \"network\" are both set to the network " @@ -6316,11 +5901,11 @@ msgid "" "deprecated. Use only \"network\" property." msgstr "" -#: heat/tests/test_validate.py:1170 +#: heat/tests/test_validate.py:1373 msgid "The InstanceType parameter must be assigned to one Parameter Group only." msgstr "" -#: heat/tests/test_validate.py:1185 +#: heat/tests/test_validate.py:1388 msgid "" "The Parameter name (SomethingNotHere) does not reference an existing " "parameter." |