More flexible way for message about revert to snapshot

Change-Id: I9f46e8410c97215fb727fe3051073227a97bee4b
This commit is contained in:
NastyaUrlapova 2014-04-01 14:35:49 +04:00
parent 8a56d244ff
commit 3f053b080d
3 changed files with 48 additions and 43 deletions

View File

@ -11,11 +11,9 @@
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import functools
import logging
import os
from fuelweb_test.helpers.decorators import debug
from fuelweb_test.settings import LOGS_DIR
logging.basicConfig(level=logging.DEBUG,
@ -33,4 +31,21 @@ console.setFormatter(formatter)
logger = logging.getLogger(__name__)
logger.addHandler(console)
def debug(logger):
def wrapper(func):
@functools.wraps(func)
def wrapped(*args, **kwargs):
logger.debug(
"Calling: {} with args: {} {}".format(
func.__name__, args, kwargs
)
)
result = func(*args, **kwargs)
logger.debug(
"Done: {} with result: {}".format(func.__name__, result))
return result
return wrapped
return wrapper
logwrap = debug(logger)

View File

@ -14,7 +14,6 @@
import functools
import json
import logging
import os
import time
import urllib2
@ -23,17 +22,18 @@ from devops.helpers.helpers import SSHClient
from proboscis import SkipTest
from fuelweb_test import settings
from fuelweb_test import logger
def save_logs(url, filename):
logging.info('Saving logs to "{}" file'.format(filename))
logger.info('Saving logs to "{}" file'.format(filename))
try:
with open(filename, 'w') as f:
f.write(
urllib2.urlopen(url).read()
)
except urllib2.HTTPError as e:
logging.error(e)
logger.error(e)
def log_snapshot_on_error(func):
@ -53,21 +53,7 @@ def log_snapshot_on_error(func):
status = "fail"
name = 'error_%s' % func.__name__
description = "Failed in method '%s'." % func.__name__
logging.info("<" * 5 + "*" * 100 + ">" * 5)
logging.info("{} Make snapshot: {}".format(description, name))
logging.info(
"You could revert this snapshot using [{command}]".format(
command="dos.py revert {env} --snapshot-name {name} && "
"dos.py resume {env} && "
"virsh net-dumpxml {env}_admin | grep -P {pattern} -o "
"| awk {awk_command}".format(
env=settings.ENV_NAME, name=name,
pattern="\"(\d+\.){3}\"",
awk_command="'{print \"Admin node IP: \"$0\"2\"}'"
)
)
)
logging.info("<" * 5 + "*" * 100 + ">" * 5)
revert_info(description, name)
if args[0].env is not None:
args[0].env.make_snapshot(snapshot_name=name[-50:])
raise
@ -92,23 +78,6 @@ def log_snapshot_on_error(func):
return wrapper
def debug(logger):
def wrapper(func):
@functools.wraps(func)
def wrapped(*args, **kwargs):
logger.debug(
"Calling: {} with args: {} {}".format(
func.__name__, args, kwargs
)
)
result = func(*args, **kwargs)
logger.debug(
"Done: {} with result: {}".format(func.__name__, result))
return result
return wrapped
return wrapper
def json_parse(func):
@functools.wraps(func)
def wrapped(*args, **kwargs):
@ -123,20 +92,39 @@ def upload_manifests(func):
result = func(*args, **kwargs)
try:
if settings.UPLOAD_MANIFESTS:
logging.info("Uploading new manifests from %s" %
settings.UPLOAD_MANIFESTS_PATH)
logger.info("Uploading new manifests from %s" %
settings.UPLOAD_MANIFESTS_PATH)
remote = SSHClient(args[0].admin_node_ip,
username='root',
password='r00tme')
remote.execute('rm -rf /etc/puppet/modules/*')
remote.upload(settings.UPLOAD_MANIFESTS_PATH,
'/etc/puppet/modules/')
logging.info("Copying new site.pp from %s" %
settings.SITEPP_FOR_UPLOAD)
logger.info("Copying new site.pp from %s" %
settings.SITEPP_FOR_UPLOAD)
remote.execute("cp %s /etc/puppet/manifests" %
settings.SITEPP_FOR_UPLOAD)
except Exception:
logging.error("Could not upload manifests")
logger.error("Could not upload manifests")
raise
return result
return wrapper
def revert_info(snapshot_name, description=""):
logger.info("<" * 5 + "*" * 100 + ">" * 5)
logger.info("{} Make snapshot: {}".format(description, snapshot_name))
logger.info("You could revert this snapshot using [{command}]".format(
command="dos.py revert {env} --snapshot-name {name} && "
"dos.py resume {env} && virsh net-dumpxml {env}_admin | "
"grep -P {pattern} -o "
"| awk {awk_command}".format(
env=settings.ENV_NAME,
name=snapshot_name,
pattern="\"(\d+\.){3}\"",
awk_command="'{print \"Admin node IP: \"$0\"2\"}'"
)
)
)
logger.info("<" * 5 + "*" * 100 + ">" * 5)

View File

@ -22,6 +22,7 @@ from ipaddr import IPNetwork
from paramiko import RSAKey
from fuelweb_test.helpers import checkers
from fuelweb_test.helpers.decorators import revert_info
from fuelweb_test.helpers.eb_tables import Ebtables
from fuelweb_test.models.fuel_web_client import FuelWebClient
from fuelweb_test import settings
@ -299,6 +300,7 @@ class EnvironmentModel(object):
def make_snapshot(self, snapshot_name):
self.get_virtual_environment().suspend(verbose=False)
self.get_virtual_environment().snapshot(snapshot_name, force=True)
revert_info(snapshot_name)
def nailgun_nodes(self, devops_nodes):
return map(