Source code for ucsmsdk.ucsxmlcodec
# Copyright 2015 Cisco Systems, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
try:
import xml.etree.cElementTree as ET
from xml.etree.cElementTree import Element, SubElement
except ImportError:
import cElementTree as ET
from cElementTree import Element, SubElement
from . import ucsgenutils
from . import ucscoreutils
from . import ucsexception as ex
[docs]def to_xml_str(elem):
"""
Converts xml element to xml string.
Args:
elem (xml element)
Returns:
xml string
Example:
xml_str = to_xml_str(elem=xml_element)
"""
return ET.tostring(elem)
[docs]def from_xml_str(xml_str, handle=None):
"""
Generates response object from the given xml string.
Args:
xml_str (str): xml string
Returns:
object (external method or managed object or generic managed object)
Example:
xml_str='''\n
<lsServer dn="org-root/ls-testsp" dynamicConPolicyName="test"\n
extIPPoolName="ext-mgmt" name="testsp" />\n
'''\n
root_element = extract_root_elem(xml_str)\n
"""
root_elem = ET.fromstring(xml_str)
if root_elem.tag == "error":
error_code = root_elem.attrib['errorCode']
error_descr = root_elem.attrib['errorDescr']
raise ex.UcsException(error_code, error_descr)
class_id = ucsgenutils.word_u(root_elem.tag)
response = ucscoreutils.get_ucs_obj(class_id, root_elem)
response.from_xml(root_elem, handle)
return response