本文整理汇总了Python中nova.fusioncompute.virt.huaweiapi.utils.LOG类的典型用法代码示例。如果您正苦于以下问题:Python LOG类的具体用法?Python LOG怎么用?Python LOG使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了LOG类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: get_cpu_usage
def get_cpu_usage(self, monitor_period, cluster_urn):
end_time = self.get_fc_current_time()
start_time = end_time - (monitor_period*2)
body = [
{
"startTime": str(start_time),
"endTime": str(end_time),
"interval": str(monitor_period),
"metricId": "cpu_usage",
"urn": cluster_urn
}
]
LOG.debug("get_cpu_usage body:%s", json.dumps(body))
response = self.fc_client.post(self.site.metric_curvedata_uri,
data=body)
LOG.debug("get_cpu_usage body:%s response:%s",
json.dumps(body), json.dumps(response))
if response:
if len(response["items"]) > 0:
metric_value = response["items"][0]["metricValue"]
if len(metric_value) > 0:
value = metric_value[0]["value"]
if len(metric_value) is 2:
if metric_value[1]["value"] is not None:
value = metric_value[1]["value"]
return value
return None
示例2: request_msg
def request_msg(self, method, path, data=None, headers=None, **kwargs):
req_headers = self._update_and_get_headers(headers, False)
# set default request time out
kwargs['timeout'] = kwargs.get('timeout', self.__request_time_out)
rsp = self._request(method, path, data, headers=req_headers, **kwargs)
if rsp.status_code in self.STATUS_NO_AUTH:
LOG.info('token may expired, fetch again.')
req_headers = self._update_and_get_headers(headers, True)
rsp = self._request(method, path, data, headers=req_headers,
**kwargs)
#catch message sending exception
self._raise_if_not_in_status_ok(rsp)
ret_data = {'response': rsp, 'data': None}
if rsp.text:
try:
ret_data['data'] = rsp.json()
#ignore pylint:disable=W0703
except Exception as excp:
LOG.warn(_('failed to loads json response data, %s'), excp)
ret_data['data'] = rsp.text
if kwargs.get('need_response', False):
return ret_data
return ret_data['data']
示例3: inner
def inner(*args, **kwargs):
"""
inner function
:param args: the list format args of function that will
be decorated
:param kwargs: the dict format args of function that will
be decorated
:return:
"""
try:
resp = func(*args, **kwargs)
except fc_exc.RequestError as req_exc:
if exc:
raise exc(str(req_exc.kwargs['reason']))
raise req_exc
if isinstance(resp, dict) and resp.get('taskUri'):
success, reason = task_ops.wait_task_done(resp['taskUri'])
if not success:
LOG.error(_('task failed: %s'), reason)
if exc:
raise exc(str(reason))
raise fc_exc.FusionComputeTaskException(reason=reason)
return resp
示例4: _modify_boot_option_if_needed
def _modify_boot_option_if_needed(self, instance, fc_vm):
"""
:param instance: OpenStack instance object
:param fc_vm: FusionCompute vm object
:return:
"""
new_boot_option = utils.get_boot_option_from_metadata(
instance.get('metadata'))
old_boot_option = None
if 'vmConfig' in fc_vm:
vm_property = fc_vm['vmConfig'].get('properties')
old_boot_option = vm_property.get('bootOption') if vm_property \
else None
if new_boot_option and old_boot_option and \
new_boot_option != old_boot_option:
LOG.info(_("trying to modify boot option from %s to %s") %
(old_boot_option, new_boot_option))
body = {
'properties':{
'bootOption': new_boot_option
}
}
try:
self.modify_vm(instance, vm_config=body)
except Exception as msg:
LOG.error(_("modify boot option has exception: %s") % msg)
示例5: ensure_network
def ensure_network(self, network_info):
"""
Ensure network resource on FC
:param network_info: network_info from nova, dictionary type
:return:
"""
# NOTE: physical network only visible to admin user
context = nova_ctxt.get_admin_context()
network = self._get_network_from_neutron(context, network_info)
LOG.debug(_('get network info from neutron: %s'), network)
if network['provider:network_type'] == constant.TYPE_VXLAN:
dvs_name = constant.CONF.fusioncompute.vxlan_dvs_name
else:
dvs_name = network['provider:physical_network']
dvs_id = self._get_dvs_id_by_physnet_name(dvs_name)
if not dvs_id:
raise fc_exc.DVSwitchNotFound(
dvs_id=network['provider:physical_network'])
pg_adpt = PortGroupQueryAdapter(network, dvs_id)
pg_data = self.query_port_group(pg_adpt)
if not pg_data:
try:
pg_adpt = PortGroupCreateAdapter(network, dvs_id)
pg_data = self.create_port_group(dvs_id, pg_adpt)
except Exception as e:
# race condition
LOG.warn(_('create pg failed (%s), will check it again'), e)
pg_adpt = PortGroupQueryAdapter(network, dvs_id)
pg_data = self.query_port_group(pg_adpt)
return pg_data['urn'] if pg_data else None
示例6: finish_revert_migration
def finish_revert_migration(self, instance, power_on=True):
"""
:param instance:
:param power_on:
:return:
"""
LOG.info(_("begin finish_revert_migration ..."))
# 1. get flavor info from fc
fc_vm = FC_MGR.get_vm_by_uuid(instance)
#ignore pylint:disable=W0612
old_flavor, new_flavor = self._get_flavor_from_group(fc_vm.group)
# 2. check cpu mem changes
location = self._cluster_ops.\
get_cluster_urn_by_nodename(instance['node'])
data = self._generate_vm_spec_info(location=location,
flavor=old_flavor)
self.modify_vm(fc_vm, vm_config=data)
LOG.info(_("modify cpu and mem success."))
# 5. clear vm group info
self._reset_vm_group(fc_vm)
# 6. power on vm if needed
if power_on:
self.start_vm(instance)
示例7: detach_interface
def detach_interface(self, instance, vif):
"""
Send message to fusion compute virtual machine
:param instance:
:param vif:
:return: response : {"taskUrn": string, "taskUri": string}
if the nic does not exited, return {} else {"taskUrn": string,
"taskUri": string}
"""
LOG.debug(_("trying to detach interface for vm name: %s,"
"vm uuid: %s, vif information is %s"), instance['name'],
instance['uuid'], vif)
response = {}
fc_vm = FC_MGR.get_vm_by_uuid(instance)
nics = fc_vm["vmConfig"]["nics"]
LOG.info("nics in FusionCompute is %s", nics)
nic_uri = None
for nic in nics:
if nic['name'] == vif['id']:
nic_uri = nic['uri']
break
if nic_uri:
detach_interface_uri = (nic_uri.replace("nics", "virtualNics"))
LOG.info("detach_interface_uri is %s", detach_interface_uri)
response = self.delete(detach_interface_uri,
excp=exception.InstanceInvalidState)
else:
LOG.warn(_("detach interface for vm name: %s, not exist nic."),
instance['name'])
LOG.info(_('send detach interface finished, return is: %s'),
jsonutils.dumps(response))
return response
示例8: _generate_vm_spec_info
def _generate_vm_spec_info(self, location=None, flavor=None):
"""
Generate the vm spec info for cole migration
:param location:
:param flavor:
:return:
"""
data = {}
if location:
data['location'] = location
if flavor:
if flavor.get('vcpus'):
data['cpu'] = {
'quantity':flavor.get('vcpus')
}
if flavor.get('memory_mb'):
data['memory'] = {
'quantityMB':flavor.get('memory_mb')
}
cpu_qos = utils.dict_filter_and_convert(flavor,
constant.CPU_QOS_FC_KEY,
constant.CPU_QOS_FC_KEY)
if data.get('cpu', None):
data['cpu'] = utils.dict_add(data['cpu'], cpu_qos)
else:
data['cpu'] = cpu_qos
LOG.debug(_("vm spec data: %s.") % jsonutils.dumps(data))
return data
示例9: get_disks_info
def get_disks_info(self):
"""get image disk detail info"""
LOG.debug(_('prepare volume'))
disks_info = []
# sys vol info
sys_disk_info = {
'sequenceNum': 1,
'quantityGB': self._instance['root_gb'],
'isThin': constant.FC_DRIVER_JOINT_CFG['volume_is_thin']
}
disks_info.append(sys_disk_info)
# user vol info
for disk in self._volume_ops.ensure_volume(self._block_device_info):
user_disk_info = {
'pciType': disk['pci'],
'volumeUrn': disk['urn'],
'sequenceNum':
constant.MOUNT_DEVICE_SEQNUM_MAP[disk['mount_device']],
'isThin': constant.FC_DRIVER_JOINT_CFG['volume_is_thin']
}
disks_info.append(user_disk_info)
return disks_info
示例10: attach_volume
def attach_volume(self, connection_info, instance, mountpoint):
"""
Attach volume for vm
:param connection_info:
:param instance:
:return:
"""
LOG.info(_("trying to attach vol for vm: %s.") % instance['name'])
# 0. set qos io
self._volume_ops.set_qos_specs_to_volume(connection_info)
# 1. volume can only be attached when vm is running or stopped
fc_vm = FC_MGR.get_vm_by_uuid(instance)
if fc_vm.status not in [constant.VM_STATUS.RUNNING,
constant.VM_STATUS.STOPPED]:
reason = _("vm status is not running or stopped !")
raise fc_exc.InstanceAttachvolFailure(reason=reason)
# 2. ignore this op when vm already has this volume
vol_urn = self._get_vol_urn_from_connection(connection_info)
if self._check_if_vol_in_instance(fc_vm, vol_urn) is True:
LOG.info(_("vm %s already has vol %s, consider it success"),
fc_vm.name, vol_urn)
return
# 3. attach this volume
self._volume_action(self._volume_ops.attach_volume,
vol_urn, fc_vm, mountpoint)
示例11: detach_volume
def detach_volume(self, connection_info, instance):
"""
Detach volume for vm
:param connection_info:
:param instance:
:return:
"""
LOG.info(_("trying to detach vol for vm: %s.") % instance['name'])
# 1. volume can only be detached when vm is running or stopped
fc_vm = FC_MGR.get_vm_by_uuid(instance)
if fc_vm.status not in [constant.VM_STATUS.RUNNING,
constant.VM_STATUS.STOPPED]:
reason = _("vm status is not running or stopped !")
raise fc_exc.InstanceDetachvolFailure(reason=reason)
# 2. ignore this op when vm do not have this volume
vol_urn = self._get_vol_urn_from_connection(connection_info)
if self._check_if_vol_in_instance(fc_vm, vol_urn) is False:
LOG.info(_("vol %s is not in vm %s, consider it success"),
vol_urn, fc_vm.name)
return
# 3. detach this volume
self._volume_action(self._volume_ops.detach_volume, vol_urn, fc_vm)
示例12: _request
def _request(self, method, path, data=None, headers=None, **kwargs):
"""
send request msg
:param method:
:param path:
:param data:
:param headers:
:param kwargs:
:return:
"""
url = self._to_url(path)
if not data:
data = jsonutils.dumps({})
elif isinstance(data, dict) or isinstance(data, list):
data = jsonutils.dumps(data)
try:
data_for_log = copy.deepcopy(jsonutils.loads(data))
utils.drop_password_key(data_for_log)
LOG.debug(_('request: %s %s %s'), method, url,
jsonutils.dumps(data_for_log))
except Exception:
LOG.debug(_('request: %s %s'), method, url)
rsp = requests.request(method, url, data=data, headers=headers,
verify=False, **kwargs)
return rsp
示例13: modify_drs_rules
def modify_drs_rules(self, cluster, rule_name, rule_type, vms):
"""
:param cluster:
:param rule_name:
:param rule_type:
:param vms:
:return:
"""
rule = self._get_drs_rules_from_cluster(cluster, rule_name, rule_type)
if rule is None:
msg = _("Can not find drs rules: name=%s, type=%d") % \
(rule_name, rule_type)
raise fc_exc.AffinityGroupException(reason=msg)
body = {
'drsSetting':{
'drsRules':[{
'operationType': constant.DRS_RULES_OP_TYPE_MAP['modify'],
'ruleIndex': rule['ruleIndex'],
'ruleName': rule_name,
'ruleType': rule_type,
'vms': vms
}]
}
}
self._modify_cluster(cluster, body)
LOG.debug(_("modify drs rules %s succeed"), rule_name)
示例14: create_drs_rules
def create_drs_rules(self, cluster, rule_name, rule_type):
"""
:param cluster:
:param rule_name:
:param rule_type:
:return:
"""
rule = self._get_drs_rules_from_cluster(cluster, rule_name, rule_type)
if rule:
LOG.debug(_("drs rules %s already exists"), rule_name)
return
body = {
'drsSetting':{
'drsRules':[{
'operationType': constant.DRS_RULES_OP_TYPE_MAP['create'],
'ruleName': rule_name,
'ruleType': rule_type
}]
}
}
self._modify_cluster(cluster, body)
LOG.debug(_("create drs rules %s succeed"), rule_name)
示例15: __init__
def __init__(self, virtapi):
LOG.info(_("begin to init FusionComputeDriver ..."))
super(FusionComputeDriver, self).__init__(virtapi)
self._client = FCBaseClient(
constant.CONF.fusioncompute.fc_ip,
constant.CONF.fusioncompute.fc_user,
crypt.decrypt(constant.CONF.fusioncompute.fc_pwd),
constant.FC_DRIVER_JOINT_CFG["user_type"],
ssl=True,
port=constant.FC_DRIVER_JOINT_CFG["fc_port"],
api_version=constant.FC_DRIVER_JOINT_CFG["api_version"],
request_time_out=constant.FC_DRIVER_JOINT_CFG["request_time_out"],
)
self._client.set_default_site()
# task ops is need by other ops, init it first
self.task_ops = taskops.TaskOperation(self._client)
FC_MGR.set_client(self._client)
self.network_ops = networkops.NetworkOps(self._client, self.task_ops)
self.volume_ops = volumeops.VolumeOps(self._client, self.task_ops)
self.cluster_ops = fc_cluster.ClusterOps(self._client, self.task_ops)
self.compute_ops = computeops.ComputeOps(
self._client, self.task_ops, self.network_ops, self.volume_ops, self.cluster_ops
)