예제 #1
0
    def test_conversion_CONFD_XML_to_JSON_convert_error_2(self):
        self.maxDiff = None

        xml = _collapse_string('''
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:b5b5fd30-8eeb-11e5-8001-fa163e05ddfa" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><rpc-error>
<error-type>application</error-type>
<error-tag>data-missing</error-tag>
<error-severity>error</error-severity>
<error-app-tag>instance-required</error-app-tag>
<error-path xmlns:rw-mc="http://riftio.com/ns/riftware-1.0/rw-mc">
    /rpc/edit-config/config/rw-mc:network-pool/rw-mc:pool[rw-mc:name='n1']/rw-mc:cloud-account
</error-path>
<error-message xml:lang="en">illegal reference /network-pool/pool[name='n1']/cloud-account</error-message>
<error-info xmlns:tailf="http://tail-f.com/ns/netconf/params/1.1"  xmlns:rw-mc="http://riftio.com/ns/riftware-1.0/rw-mc">
  <tailf:bad-keyref>
    <tailf:bad-element>/rw-mc:network-pool/rw-mc:pool[rw-mc:name='n1']/rw-mc:cloud-account</tailf:bad-element>
    <tailf:missing-element>/rw-mc:cloud/rw-mc:account[rw-mc:name='c1']</tailf:missing-element>
  </tailf:bad-keyref>
</error-info>
</rpc-error>
</rpc-reply>
        ''')

        expected_json = _collapse_string('''
{"rpc-reply" : {"rpc-error" : {"error-type" : "application","error-tag" : "data-missing","error-severity" : "error","error-app-tag" : "instance-required","error-path" : "/rpc/edit-config/config/rw-mc:network-pool/rw-mc:pool[rw-mc:name='n1']/rw-mc:cloud-account","error-message" : "illegal reference /network-pool/pool[name='n1']/cloud-account","error-info" : {"bad-keyref" : {"bad-element" : "/rw-mc:network-pool/rw-mc:pool[rw-mc:name='n1']/rw-mc:cloud-account","missing-element" : "/rw-mc:cloud/rw-mc:account[rw-mc:name='c1']"}}}}}
        ''')

        actual_json = naive_xml_to_json(bytes(xml, "utf-8"))

        actual = _ordered(json.loads(actual_json))
        expected = _ordered(json.loads(expected_json))

        self.assertEquals(actual, expected)
예제 #2
0
    def test_conversion_CONFD_XML_to_JSON_convert_error_1(self):
        self.maxDiff = None

        xml = _collapse_string('''
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:2bdd6476-92d4-11e5-86ca-fa163e622f12" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
  <rpc-error>
  <error-type>application</error-type>
  <error-tag>data-missing</error-tag>
  <error-severity>error</error-severity>
  <error-path xmlns:rw-mc="http://riftio.com/ns/riftware-1.0/rw-mc" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
    /nc:rpc/nc:edit-config/nc:config/rw-mc:cloud/rw-mc:account[rw-mc:name=\'cloudname\']
  </error-path>
  <error-info>
    <bad-element>account</bad-element>
  </error-info>
</rpc-error>
</rpc-reply>
        ''')

        expected_json = _collapse_string('''
{"rpc-reply" : {"rpc-error" : {"error-type" : "application","error-tag" : "data-missing","error-severity" : "error","error-path" : "/nc:rpc/nc:edit-config/nc:config/rw-mc:cloud/rw-mc:account[rw-mc:name='cloudname']","error-info" : {"bad-element" : "account"}}}}
        ''')

        actual_json = naive_xml_to_json(bytes(xml, "utf-8"))

        actual = _ordered(json.loads(actual_json))
        expected = _ordered(json.loads(expected_json))

        self.assertEquals(actual, expected)
예제 #3
0
    def test_conversion_rpc_to_json_output(self):
        self.maxDiff = None
        url = "/api/operations/ping"
        xml = _collapse_string(
            """
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:0ba69bd8-938c-11e5-a933-fa163e622f12" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
    <out xmlns='http://riftio.com/ns/riftware-1.0/rw-restconf'>true</out>
</rpc-reply>
        """
        )

        expected_json = _collapse_string(
            """
{"output": {"out": "true"}}
        """
        )

        intermediate_json = naive_xml_to_json(bytes(xml, "utf-8"))

        actual_json = convert_rpc_to_json_output(intermediate_json)

        actual = _ordered(json.loads(actual_json))
        expected = _ordered(json.loads(expected_json))

        self.assertEqual(actual, expected)
예제 #4
0
    def test_conversion_CONFD_XML_to_JSON_convert_error_1(self):
        self.maxDiff = None

        xml = _collapse_string(
            """
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:2bdd6476-92d4-11e5-86ca-fa163e622f12" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
  <rpc-error>
  <error-type>application</error-type>
  <error-tag>data-missing</error-tag>
  <error-severity>error</error-severity>
  <error-path xmlns:rw-mc="http://riftio.com/ns/riftware-1.0/rw-mc" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
    /nc:rpc/nc:edit-config/nc:config/rw-mc:cloud/rw-mc:account[rw-mc:name=\'cloudname\']
  </error-path>
  <error-info>
    <bad-element>account</bad-element>
  </error-info>
</rpc-error>
</rpc-reply>
        """
        )

        expected_json = _collapse_string(
            """
{"rpc-reply" : {"rpc-error" : {"error-type" : "application","error-tag" : "data-missing","error-severity" : "error","error-path" : "/nc:rpc/nc:edit-config/nc:config/rw-mc:cloud/rw-mc:account[rw-mc:name='cloudname']","error-info" : {"bad-element" : "account"}}}}
        """
        )

        actual_json = naive_xml_to_json(bytes(xml, "utf-8"))

        actual = _ordered(json.loads(actual_json))
        expected = _ordered(json.loads(expected_json))

        self.assertEquals(actual, expected)
예제 #5
0
    def test_conversion_CONFD_XML_to_JSON_convert_error_2(self):
        self.maxDiff = None

        xml = _collapse_string('''
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:b5b5fd30-8eeb-11e5-8001-fa163e05ddfa" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0"><rpc-error>
<error-type>application</error-type>
<error-tag>data-missing</error-tag>
<error-severity>error</error-severity>
<error-app-tag>instance-required</error-app-tag>
<error-path xmlns:rw-mc="http://riftio.com/ns/riftware-1.0/rw-mc">
    /rpc/edit-config/config/rw-mc:network-pool/rw-mc:pool[rw-mc:name='n1']/rw-mc:cloud-account
</error-path>
<error-message xml:lang="en">illegal reference /network-pool/pool[name='n1']/cloud-account</error-message>
<error-info xmlns:tailf="http://tail-f.com/ns/netconf/params/1.1"  xmlns:rw-mc="http://riftio.com/ns/riftware-1.0/rw-mc">
  <tailf:bad-keyref>
    <tailf:bad-element>/rw-mc:network-pool/rw-mc:pool[rw-mc:name='n1']/rw-mc:cloud-account</tailf:bad-element>
    <tailf:missing-element>/rw-mc:cloud/rw-mc:account[rw-mc:name='c1']</tailf:missing-element>
  </tailf:bad-keyref>
</error-info>
</rpc-error>
</rpc-reply>
        ''')

        expected_json = _collapse_string('''
{"rpc-reply" : {"rpc-error" : {"error-type" : "application","error-tag" : "data-missing","error-severity" : "error","error-app-tag" : "instance-required","error-path" : "/rpc/edit-config/config/rw-mc:network-pool/rw-mc:pool[rw-mc:name='n1']/rw-mc:cloud-account","error-message" : "illegal reference /network-pool/pool[name='n1']/cloud-account","error-info" : {"bad-keyref" : {"bad-element" : "/rw-mc:network-pool/rw-mc:pool[rw-mc:name='n1']/rw-mc:cloud-account","missing-element" : "/rw-mc:cloud/rw-mc:account[rw-mc:name='c1']"}}}}}
        ''')

        actual_json = naive_xml_to_json(bytes(xml,"utf-8"))

        actual = _ordered(json.loads(actual_json))
        expected = _ordered(json.loads(expected_json))

        self.assertEquals(actual, expected)
예제 #6
0
    def test_conversion_CONFD_XML_to_JSON_convert_error_3(self):
        self.maxDiff = None

        xml = _collapse_string('''
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:ab56ec5e-92e3-11e5-83c5-fa163e622f12" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
    <ok/>
</rpc-reply>
        ''')

        expected_json = _collapse_string('''
        {"rpc-reply" : {"ok" : ""}}
        ''')

        actual_json = naive_xml_to_json(bytes(xml, "utf-8"))

        actual = _ordered(json.loads(actual_json))
        expected = _ordered(json.loads(expected_json))

        self.assertEquals(actual, expected)
예제 #7
0
    def test_conversion_CONFD_XML_to_JSON_convert_error_3(self):
        self.maxDiff = None

        xml = _collapse_string('''
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:ab56ec5e-92e3-11e5-83c5-fa163e622f12" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
    <ok/>
</rpc-reply>
        ''')

        expected_json = _collapse_string('''
        {"rpc-reply" : {"ok" : ""}}
        ''')

        actual_json = naive_xml_to_json(bytes(xml,"utf-8"))

        actual = _ordered(json.loads(actual_json))
        expected = _ordered(json.loads(expected_json))

        self.assertEquals(actual, expected)
예제 #8
0
    def test_conversion_rpc_to_json_output(self):
        self.maxDiff = None
        url = "/api/operations/ping"
        xml = _collapse_string('''
<?xml version="1.0" encoding="UTF-8"?>
<rpc-reply xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="urn:uuid:0ba69bd8-938c-11e5-a933-fa163e622f12" xmlns:nc="urn:ietf:params:xml:ns:netconf:base:1.0">
    <out xmlns='http://riftio.com/ns/riftware-1.0/rw-restconf'>true</out>
</rpc-reply>
        ''')

        expected_json = _collapse_string('''
{"output": {"out": "true"}}
        ''')

        intermediate_json = naive_xml_to_json(bytes(xml, "utf-8"))

        actual_json = convert_rpc_to_json_output(intermediate_json)

        actual = _ordered(json.loads(actual_json))
        expected = _ordered(json.loads(expected_json))

        self.assertEqual(actual, expected)