Resync charmhelpers for py3 fixes
Includes fix for write_file encoding under py3. Change-Id: Ib5f211644c9591cb8185c4646679405b9e0f0f07 Closes-Bug: 1735068
This commit is contained in:
parent
ec4a06057f
commit
8ebe32897b
@ -13,6 +13,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import six
|
import six
|
||||||
@ -185,7 +186,7 @@ class OpenStackAmuletDeployment(AmuletDeployment):
|
|||||||
self.d.configure(service, config)
|
self.d.configure(service, config)
|
||||||
|
|
||||||
def _auto_wait_for_status(self, message=None, exclude_services=None,
|
def _auto_wait_for_status(self, message=None, exclude_services=None,
|
||||||
include_only=None, timeout=1800):
|
include_only=None, timeout=None):
|
||||||
"""Wait for all units to have a specific extended status, except
|
"""Wait for all units to have a specific extended status, except
|
||||||
for any defined as excluded. Unless specified via message, any
|
for any defined as excluded. Unless specified via message, any
|
||||||
status containing any case of 'ready' will be considered a match.
|
status containing any case of 'ready' will be considered a match.
|
||||||
@ -215,7 +216,10 @@ class OpenStackAmuletDeployment(AmuletDeployment):
|
|||||||
:param timeout: Maximum time in seconds to wait for status match
|
:param timeout: Maximum time in seconds to wait for status match
|
||||||
:returns: None. Raises if timeout is hit.
|
:returns: None. Raises if timeout is hit.
|
||||||
"""
|
"""
|
||||||
self.log.info('Waiting for extended status on units...')
|
if not timeout:
|
||||||
|
timeout = int(os.environ.get('AMULET_SETUP_TIMEOUT', 1800))
|
||||||
|
self.log.info('Waiting for extended status on units for {}s...'
|
||||||
|
''.format(timeout))
|
||||||
|
|
||||||
all_services = self.d.services.keys()
|
all_services = self.d.services.keys()
|
||||||
|
|
||||||
@ -252,9 +256,9 @@ class OpenStackAmuletDeployment(AmuletDeployment):
|
|||||||
service_messages = {service: message for service in services}
|
service_messages = {service: message for service in services}
|
||||||
|
|
||||||
# Check for idleness
|
# Check for idleness
|
||||||
self.d.sentry.wait()
|
self.d.sentry.wait(timeout=timeout)
|
||||||
# Check for error states and bail early
|
# Check for error states and bail early
|
||||||
self.d.sentry.wait_for_status(self.d.juju_env, services)
|
self.d.sentry.wait_for_status(self.d.juju_env, services, timeout=timeout)
|
||||||
# Check for ready messages
|
# Check for ready messages
|
||||||
self.d.sentry.wait_for_messages(service_messages, timeout=timeout)
|
self.d.sentry.wait_for_messages(service_messages, timeout=timeout)
|
||||||
|
|
||||||
|
@ -549,6 +549,8 @@ def write_file(path, content, owner='root', group='root', perms=0o444):
|
|||||||
with open(path, 'wb') as target:
|
with open(path, 'wb') as target:
|
||||||
os.fchown(target.fileno(), uid, gid)
|
os.fchown(target.fileno(), uid, gid)
|
||||||
os.fchmod(target.fileno(), perms)
|
os.fchmod(target.fileno(), perms)
|
||||||
|
if six.PY3 and isinstance(content, six.string_types):
|
||||||
|
content = content.encode('UTF-8')
|
||||||
target.write(content)
|
target.write(content)
|
||||||
return
|
return
|
||||||
# the contents were the same, but we might still need to change the
|
# the contents were the same, but we might still need to change the
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
# limitations under the License.
|
# limitations under the License.
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
import re
|
import re
|
||||||
import sys
|
import sys
|
||||||
import six
|
import six
|
||||||
@ -185,7 +186,7 @@ class OpenStackAmuletDeployment(AmuletDeployment):
|
|||||||
self.d.configure(service, config)
|
self.d.configure(service, config)
|
||||||
|
|
||||||
def _auto_wait_for_status(self, message=None, exclude_services=None,
|
def _auto_wait_for_status(self, message=None, exclude_services=None,
|
||||||
include_only=None, timeout=1800):
|
include_only=None, timeout=None):
|
||||||
"""Wait for all units to have a specific extended status, except
|
"""Wait for all units to have a specific extended status, except
|
||||||
for any defined as excluded. Unless specified via message, any
|
for any defined as excluded. Unless specified via message, any
|
||||||
status containing any case of 'ready' will be considered a match.
|
status containing any case of 'ready' will be considered a match.
|
||||||
@ -215,7 +216,10 @@ class OpenStackAmuletDeployment(AmuletDeployment):
|
|||||||
:param timeout: Maximum time in seconds to wait for status match
|
:param timeout: Maximum time in seconds to wait for status match
|
||||||
:returns: None. Raises if timeout is hit.
|
:returns: None. Raises if timeout is hit.
|
||||||
"""
|
"""
|
||||||
self.log.info('Waiting for extended status on units...')
|
if not timeout:
|
||||||
|
timeout = int(os.environ.get('AMULET_SETUP_TIMEOUT', 1800))
|
||||||
|
self.log.info('Waiting for extended status on units for {}s...'
|
||||||
|
''.format(timeout))
|
||||||
|
|
||||||
all_services = self.d.services.keys()
|
all_services = self.d.services.keys()
|
||||||
|
|
||||||
@ -252,9 +256,9 @@ class OpenStackAmuletDeployment(AmuletDeployment):
|
|||||||
service_messages = {service: message for service in services}
|
service_messages = {service: message for service in services}
|
||||||
|
|
||||||
# Check for idleness
|
# Check for idleness
|
||||||
self.d.sentry.wait()
|
self.d.sentry.wait(timeout=timeout)
|
||||||
# Check for error states and bail early
|
# Check for error states and bail early
|
||||||
self.d.sentry.wait_for_status(self.d.juju_env, services)
|
self.d.sentry.wait_for_status(self.d.juju_env, services, timeout=timeout)
|
||||||
# Check for ready messages
|
# Check for ready messages
|
||||||
self.d.sentry.wait_for_messages(service_messages, timeout=timeout)
|
self.d.sentry.wait_for_messages(service_messages, timeout=timeout)
|
||||||
|
|
||||||
|
@ -549,6 +549,8 @@ def write_file(path, content, owner='root', group='root', perms=0o444):
|
|||||||
with open(path, 'wb') as target:
|
with open(path, 'wb') as target:
|
||||||
os.fchown(target.fileno(), uid, gid)
|
os.fchown(target.fileno(), uid, gid)
|
||||||
os.fchmod(target.fileno(), perms)
|
os.fchmod(target.fileno(), perms)
|
||||||
|
if six.PY3 and isinstance(content, six.string_types):
|
||||||
|
content = content.encode('UTF-8')
|
||||||
target.write(content)
|
target.write(content)
|
||||||
return
|
return
|
||||||
# the contents were the same, but we might still need to change the
|
# the contents were the same, but we might still need to change the
|
||||||
|
Loading…
Reference in New Issue
Block a user