本文整理汇总了Python中utils.log.logger.debug函数的典型用法代码示例。如果您正苦于以下问题:Python debug函数的具体用法?Python debug怎么用?Python debug使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了debug函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: find_request
def find_request(cells, partial_check=False):
"""Finds the request and returns the row element
Args:
cells: Search data for the requests table.
partial_check: If to use the ``in`` operator rather than ``==`` in find_rows_by_cells().
Returns: row
"""
navigate_to(Request, 'All')
from cfme.web_ui import paginator
for page in paginator.pages():
results = fields.request_list.find_rows_by_cells(cells, partial_check)
if len(results) == 0:
# row not on this page, assume it has yet to appear
# it might be nice to add an option to fail at this point
continue
elif len(results) > 1:
raise RequestException(
'Multiple requests with matching content found - be more specific!'
)
else:
# found the row!
row = results[0]
logger.debug(' Request Message: %s', row.last_message.text)
return row
else:
# Request not found at all, can't continue
return False
示例2: _wait_for_vm_running
def _wait_for_vm_running():
state = provider_mgmt.vm_status(vm_name)
if ON_REGEX.match(state):
return True
elif DOWN_REGEX.match(state) or SUSPEND_REGEX.match(state):
provider_mgmt.start_vm(vm_name)
logger.debug("Sleeping 15secs...(current state: " + state + ", needed state: running)")
示例3: map_vms_to_ids
def map_vms_to_ids(provider_names_to_vm_names):
"""Takes a dictionary of providers with a list of vms and generates a list of vm_ids for each
vm in the data structure. We need this because more than one provider can lead to a """
starttime = time.time()
expected_num_ids = sum(len(x) for x in provider_names_to_vm_names.itervalues())
expected_num_providers = len(provider_names_to_vm_names.keys())
# Intended ouput here (List of vm ids):
vm_ids = []
# Intermediate data structure holding provider_id to list of vm names
provider_ids_to_vm_names = {}
# First get all providers details
all_providers_details = []
for pro_id in get_all_provider_ids():
details = get_provider_details(pro_id)
all_providers_details.append(details)
providers_to_vms_copy = dict(provider_names_to_vm_names)
# Next map provider_name to the provider_id
for provider_name in provider_names_to_vm_names:
for provider_detail in all_providers_details:
if provider_name == provider_detail['name']:
# Copy VMs from that provider to the Intermediate data structure
provider_ids_to_vm_names[provider_detail['id']] = list(
provider_names_to_vm_names[provider_name])
del providers_to_vms_copy[provider_name]
break
if len(providers_to_vms_copy) > 0:
# Error, we did not find all providers, likely there is an issue with the scenario data
# inside of cfme_performance.yml or cfme_performance.local.yml
logger.error('Provider(s) + vm(s) not found in CFME Inventory: {}'.format(
providers_to_vms_copy))
provider_ids_to_vm_names_copy = copy.deepcopy(provider_ids_to_vm_names)
# Now map each vm_name+ems_id to the actual vm_id and append to our list
for vm_id in get_all_vm_ids():
vm_details = get_vm_details(vm_id)
for provider_id in provider_ids_to_vm_names:
if ('ems_id' in vm_details and provider_id == vm_details['ems_id']):
# Match provider_id, now check vm_name
for vm_name in provider_ids_to_vm_names[provider_id]:
if vm_name == vm_details['name']:
logger.debug('Matching {} to vm id: {}'.format(vm_name, vm_id))
vm_ids.append(vm_id)
del (provider_ids_to_vm_names_copy[provider_id]
[provider_ids_to_vm_names_copy[provider_id].index(vm_name)])
break
if (sum(len(x) for x in provider_ids_to_vm_names_copy.itervalues()) == 0):
break
# Now check for left over vms that we did not match:
leftover_num_ids = sum(len(x) for x in provider_ids_to_vm_names_copy.itervalues())
if leftover_num_ids > 0:
logger.error('(Provider_id(s)) + VM(s) not found in CFME inventory: {}'.format(
provider_ids_to_vm_names_copy))
logger.debug('Mapped {}/{} vm ids/names over {}/{} provider ids/names in {}s'.format(
len(vm_ids), expected_num_ids, len(provider_ids_to_vm_names.keys()), expected_num_providers,
round(time.time() - starttime, 2)))
return vm_ids
示例4: refresh_providers
def refresh_providers(provider_ids):
"""Refresh the specified providers with one request per provider via the REST API"""
starttime = time.time()
for provider in provider_ids:
refresh_provider(provider)
logger.debug('Queued Refresh {} Provider(s) in: {}s'.format(len(provider_ids),
round(time.time() - starttime, 2)))
示例5: ensure_advanced_search_closed
def ensure_advanced_search_closed():
"""Checks if the advanced search box is open and if it does, closes it."""
if is_advanced_search_opened():
logger.debug('search.ensure_advanced_search_closed: search was open, closing')
sel.click(search_box.close_button)
wait_for(is_advanced_search_opened, fail_condition=True, num_sec=10, delay=2,
fail_func=check_and_click_close, message='Waiting for advanced search to close')
示例6: _setup_providers
def _setup_providers(cloud_or_infra, validate, check_existing):
"""Helper to set up all cloud or infra providers, and then validate them
Args:
cloud_or_infra: Like the name says: 'cloud' or 'infra' (a string)
validate: see description in :py:func:`setup_provider`
check_existing: see description in :py:func:`setup_provider`
Returns:
A list of provider objects that have been created.
"""
# Pivot behavior on cloud_or_infra
options_map = {
'cloud': {
'navigate': 'clouds_providers',
'quad': 'cloud_prov',
'list': list_cloud_providers
},
'infra': {
'navigate': 'infrastructure_providers',
'quad': 'infra_prov',
'list': list_infra_providers
}
}
# Check for existing providers all at once, to prevent reloading
# the providers page for every provider in cfme_data
if not options_map[cloud_or_infra]['list']():
return []
if check_existing:
sel.force_navigate(options_map[cloud_or_infra]['navigate'])
add_providers = []
for provider_key in options_map[cloud_or_infra]['list']():
provider_name = conf.cfme_data.get('management_systems', {})[provider_key]['name']
quad = Quadicon(provider_name, options_map[cloud_or_infra]['quad'])
for page in paginator.pages():
if sel.is_displayed(quad):
logger.debug('Provider "%s" exists, skipping' % provider_key)
break
else:
add_providers.append(provider_key)
else:
# Add all cloud or infra providers unconditionally
add_providers = options_map[cloud_or_infra]['list']()
if add_providers:
logger.info('Providers to be added: %s' % ', '.join(add_providers))
# Save the provider objects for validation and return
added_providers = []
for provider_name in add_providers:
# Don't validate in this step; add all providers, then go back and validate in order
provider = setup_provider(provider_name, validate=False, check_existing=False)
added_providers.append(provider)
if validate:
map(methodcaller('validate'), added_providers)
return added_providers
示例7: wait_for_request
def wait_for_request(cells, partial_check=False):
"""helper function checks if a request is complete
After finding the request's row using the ``cells`` argument, this will wait for a request to
reach the 'Finished' state and return it. In the event of an 'Error' state, it will raise an
AssertionError, for use with ``pytest.raises``, if desired.
Args:
cells: A dict of cells use to identify the request row to inspect in the
:py:attr:`request_list` Table. See :py:meth:`cfme.web_ui.Table.find_rows_by_cells`
for more.
Usage:
# Filter on the "Description" column
description = 'Provision from [%s] to [%s]' % (template_name, vm_name)
cells = {'Description': description}
# Filter on the "Request ID" column
# Text must match exactly, you can use "{:,}".format(request_id) to add commas if needed.
request_id = '{:,}'.format(1000000000001) # Becomes '1,000,000,000,001', as in the table
cells = {'Request ID': request_id}
# However you construct the cells dict, pass it to wait_for_request
# Provisioning requests often take more than 5 minutes but less than 10.
wait_for(wait_for_request, [cells], num_sec=600)
Raises:
AssertionError: if the matched request has status 'Error'
RequestException: if multiple matching requests were found
Returns:
The matching :py:class:`cfme.web_ui.Table.Row` if found, ``False`` otherwise.
"""
for page in paginator.pages():
if sel.elements(request_list._header_loc) and not sel.is_displayed(request_list):
# The table exists but it is hidden - no cells
return False
results = request_list.find_rows_by_cells(cells, partial_check)
if len(results) == 0:
# row not on this page, assume it has yet to appear
continue
elif len(results) > 1:
raise RequestException(
'Multiple requests with matching content found - be more specific!'
)
else:
# found the row!
row = results[0]
logger.debug(' Request Message: %s' % row.last_message.text)
break
else:
# Request not found at all, can't continue
return False
assert row.status.text != 'Error'
if row.request_state.text == 'Finished':
return row
else:
return False
示例8: browser_setup
def browser_setup(get_appliance, provider, vm_to_analyze, fs_type, mgmt_sys_api_clients):
'''Overrides env.conf and points a browser to the appliance IP passed to it.
Once finished with the test, it checks if any tests need the appliance and delete it if not the
appliance specified in conf/env.yaml.
'''
global appliance_vm_name
global test_list
test_list.remove(['', provider, vm_to_analyze, fs_type])
with browser_session(base_url='https://' + get_appliance):
yield nav.home_page_logged_in(testsetup)
# cleanup provisioned appliance if not more tests for it
if ('appliances_provider' not in cfme_data['basic_info'].keys() or
provider != cfme_data['basic_info']['appliances_provider']):
more_same_provider_tests = False
for outstanding_test in test_list:
if outstanding_test[1] == provider:
logger.debug("More provider tests found")
more_same_provider_tests = True
break
if not more_same_provider_tests:
# if rhev, remove direct_lun disk before delete
if cfme_data['management_systems'][provider]['type'] == 'rhevm':
logger.info('Removing RHEV direct_lun hook...')
run_command("./scripts/connect_directlun.py --remove --provider " +
provider + " --vm_name " + appliance_vm_name)
# delete appliance
logger.info("Delete provisioned appliance: " + appliance_list[provider])
destroy_cmd = ('./scripts/clone_template.py --provider ' + provider + ' '
'--destroy --vm_name ' + appliance_vm_name + ' ')
run_command(destroy_cmd)
示例9: login
def login(username, password, submit_method=_click_on_login):
"""
Login to CFME with the given username and password.
Optionally, submit_method can be press_enter_after_password
to use the enter key to login, rather than clicking the button.
Args:
user: The username to fill in the username field.
password: The password to fill in the password field.
submit_method: A function to call after the username and password have been input.
Raises:
RuntimeError: If the login fails, ie. if a flash message appears
"""
# TODO: Should probably do the username check here, but there are pretty usernames to deal with
# e.g. 'admin' shows up in the UI as 'Administrator'
if not logged_in():
# workaround for strange bug where we are logged out
# as soon as we click something on the dashboard
sel.sleep(1.0)
logger.debug('Logging in as user %s' % username)
fill(form, {'username': username, 'password': password})
submit_method()
flash.assert_no_errors()
示例10: save_cluster
def save_cluster(user, beans, form):
global G_vclustermgr
clustername = form.get('clustername', None)
if (clustername == None):
return json.dumps({'success':'false', 'message':'clustername is null'})
imagename = form.get("image", None)
description = form.get("description", None)
containername = form.get("containername", None)
isforce = form.get("isforce", None)
G_ulockmgr.acquire(user)
try:
if not isforce == "true":
[status,message] = G_vclustermgr.image_check(user,imagename)
if not status:
return json.dumps({'success':'false','reason':'exists', 'message':message})
user_info = post_to_user("/user/selfQuery/", {'token':form.get("token")})
[status,message] = G_vclustermgr.create_image(user,clustername,containername,imagename,description,user_info["data"]["groupinfo"]["image"])
if status:
logger.info("image has been saved")
return json.dumps({'success':'true', 'action':'save'})
else:
logger.debug(message)
return json.dumps({'success':'false', 'reason':'exceed', 'message':message})
except Exception as ex:
logger.error(str(ex))
return json.dumps({'success':'false', 'message': str(ex)})
finally:
G_ulockmgr.release(user)
示例11: provision_appliances
def provision_appliances(
self, count=1, preconfigured=False, version=None, stream=None, provider=None,
lease_time=120, ram=None, cpu=None):
# If we specify version, stream is ignored because we will get that specific version
if version:
stream = get_stream(version)
# If we specify stream but not version, sprout will give us latest version of that stream
elif stream:
pass
# If we dont specify either, we will get the same version as current appliance
else:
stream = get_stream(current_appliance.version)
version = current_appliance.version.vstring
request_id = self.call_method(
'request_appliances', preconfigured=preconfigured, version=version,
group=stream, provider=provider, lease_time=lease_time, ram=ram, cpu=cpu, count=count
)
wait_for(
lambda: self.call_method('request_check', str(request_id))['finished'], num_sec=300,
message='provision {} appliance(s) from sprout'.format(count))
data = self.call_method('request_check', str(request_id))
logger.debug(data)
appliances = []
for appliance in data['appliances']:
appliances.append(IPAppliance(appliance['ip_address']))
return appliances, request_id
示例12: checkbox
def checkbox(loc, set_to=False):
"""
Checks or unchecks a given checkbox
Finds an element given by loc and checks it
Args:
loc: The locator of the element
value: The value the checkbox should represent as a bool (or None to do nothing)
Returns: Previous state of the checkbox
"""
if set_to is not None:
el = move_to_element(loc)
if el.tag_name == 'img':
# Yeah, CFME sometimes uses images for check boxen. *sigh*
# item_chk0 = unchecked, item_chk1 = checked
selected = 'item_chk1' in el.get_attribute('src')
else:
selected = el.is_selected()
if selected is not set_to:
logger.debug("Setting checkbox %s to %s" % (str(loc), str(set_to)))
click(el)
return selected
示例13: _test_vm_power_on
def _test_vm_power_on():
"""Ensures power button is shown for a VM"""
logger.info("Checking for power button")
vm_name = virtual_machines.get_first_vm_title()
logger.debug("VM " + vm_name + " selected")
if not virtual_machines.is_pwr_option_visible(vm_name, option=virtual_machines.Vm.POWER_ON):
raise OptionNotAvailable("Power button does not exist")
示例14: set_rails_loglevel
def set_rails_loglevel(level, validate_against_worker='MiqUiWorker'):
"""Sets the logging level for level_rails and detects when change occured."""
ui_worker_pid = '#{}'.format(get_worker_pid(validate_against_worker))
logger.info('Setting log level_rails on appliance to {}'.format(level))
yaml = store.current_appliance.get_yaml_config()
if not str(yaml['log']['level_rails']).lower() == level.lower():
logger.info('Opening /var/www/miq/vmdb/log/evm.log for tail')
evm_tail = SSHTail('/var/www/miq/vmdb/log/evm.log')
evm_tail.set_initial_file_end()
yaml['log']['level_rails'] = level
store.current_appliance.set_yaml_config(yaml)
attempts = 0
detected = False
while (not detected and attempts < 60):
logger.debug('Attempting to detect log level_rails change: {}'.format(attempts))
for line in evm_tail:
if ui_worker_pid in line:
if 'Log level for production.log has been changed to' in line:
# Detects a log level change but does not validate the log level
logger.info('Detected change to log level for production.log')
detected = True
break
time.sleep(1) # Allow more log lines to accumulate
attempts += 1
if not (attempts < 60):
# Note the error in the logger but continue as the appliance could be slow at logging
# that the log level changed
logger.error('Could not detect log level_rails change.')
evm_tail.close()
else:
logger.info('Log level_rails already set to {}'.format(level))
示例15: __init__
def __init__(self, stream_output=False, keystate=_ssh_keystate.not_installed,
**connect_kwargs):
super(SSHClient, self).__init__()
self._streaming = stream_output
self._keystate = keystate
logger.debug('client initialized with keystate {}'.format(_ssh_keystate[keystate]))
# Load credentials and destination from confs, set up sane defaults
parsed_url = urlparse(store.base_url)
default_connect_kwargs = {
'username': conf.credentials['ssh']['username'],
'password': conf.credentials['ssh']['password'],
'hostname': parsed_url.hostname,
'timeout': 10,
'allow_agent': False,
'look_for_keys': False,
'gss_auth': False
}
default_connect_kwargs["port"] = ports.SSH
# Overlay defaults with any passed-in kwargs and store
default_connect_kwargs.update(connect_kwargs)
self._connect_kwargs = default_connect_kwargs
self.set_missing_host_key_policy(paramiko.AutoAddPolicy())
_client_session.append(self)