Commit 430fbc88 authored by Thomas Markwalder's avatar Thomas Markwalder
Browse files

[4202] Replaced underscores with hypens in NCR JSON element names

The NCR element names have also been changed to use hyphens.  This touched
quita a few unit tests. Files modified:

    src/bin/d2/tests/d2_process_unittests.cc
    src/bin/d2/tests/d2_queue_mgr_unittests.cc
    src/bin/d2/tests/d2_update_mgr_unittests.cc
    src/bin/d2/tests/nc_add_unittests.cc
    src/bin/d2/tests/nc_remove_unittests.cc
    src/bin/d2/tests/nc_test_utils.cc
    src/bin/d2/tests/nc_trans_unittests.cc
    src/bin/dhcp4/tests/d2_unittest.cc
    src/bin/dhcp6/tests/d2_unittest.cc
    src/lib/dhcp_ddns/libdhcp_ddns.dox
    src/lib/dhcp_ddns/ncr_msg.cc
    src/lib/dhcp_ddns/tests/ncr_udp_unittests.cc
    src/lib/dhcp_ddns/tests/ncr_unittests.cc
    src/lib/dhcpsrv/tests/d2_udp_unittest.cc
parent bdfb2c60
......@@ -274,14 +274,14 @@ TEST_F(D2ProcessTest, queueFullRecovery) {
// Valid test message, contents are unimportant.
const char* test_msg =
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}";
// Start queue manager with known good config.
......@@ -515,14 +515,14 @@ TEST_F(D2ProcessTest, canShutdown) {
const char* test_msg =
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"fish.tmark.org\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}";
// Manually enqueue a request. This lets us test logic with queue
......
......@@ -39,36 +39,36 @@ const char *valid_msgs[] =
{
// Valid Add.
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}",
// Valid Remove.
"{"
" \"change_type\" : 1 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 1 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}",
// Valid Add with IPv6 address
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"fe80::2acf:e9ff:fe12:e56f\" , "
" \"ip-address\" : \"fe80::2acf:e9ff:fe12:e56f\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}"
};
......
......@@ -96,14 +96,14 @@ public:
void makeCannedNcrs() {
const char* msg_str =
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"my.example.com.\" , "
" \"ip_address\" : \"192.168.1.2\" , "
" \"ip-address\" : \"192.168.1.2\" , "
" \"dhcid\" : \"0102030405060708\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}";
const char* dhcids[] = { "111111", "222222", "333333", "444444"};
......
......@@ -274,14 +274,14 @@ TEST(NameAddTransaction, construction) {
const char* msg_str =
"{"
" \"change_type\" : 1 , "
" \"forward_change\" : true , "
" \"reverse_change\" : true , "
" \"change-type\" : 1 , "
" \"forward-change\" : true , "
" \"reverse-change\" : true , "
" \"fqdn\" : \"example.com.\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"0102030405060708\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}";
dhcp_ddns::NameChangeRequestPtr ncr;
......
......@@ -276,14 +276,14 @@ TEST(NameRemoveTransaction, construction) {
const char* msg_str =
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : true , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : true , "
" \"fqdn\" : \"example.com.\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"0102030405060708\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}";
dhcp_ddns::NameChangeRequestPtr ncr;
......
......@@ -242,14 +242,14 @@ TransactionTest::setupForIPv4Transaction(dhcp_ddns::NameChangeType chg_type,
const TSIGKeyInfoPtr& tsig_key_info) {
const char* msg_str =
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : true , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : true , "
" \"fqdn\" : \"my.forward.example.com.\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"0102030405060708\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}";
// Create NameChangeRequest from JSON string.
......@@ -300,14 +300,14 @@ TransactionTest::setupForIPv6Transaction(dhcp_ddns::NameChangeType chg_type,
const TSIGKeyInfoPtr& tsig_key_info) {
const char* msg_str =
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : true , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : true , "
" \"fqdn\" : \"my6.forward.example.com.\" , "
" \"ip_address\" : \"2001:1::100\" , "
" \"ip-address\" : \"2001:1::100\" , "
" \"dhcid\" : \"0102030405060708\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}";
// Create NameChangeRequest from JSON string.
......
......@@ -374,14 +374,14 @@ TEST(NameChangeTransaction, construction) {
const char* msg_str =
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : true , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : true , "
" \"fqdn\" : \"example.com.\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"0102030405060708\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}";
dhcp_ddns::NameChangeRequestPtr ncr;
......
......@@ -57,18 +57,18 @@ Dhcp4SrvD2Test::buildTestNcr(uint32_t dhcid_id_num) {
stream <<
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"myhost.example.com.\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \""
<< std::hex << std::setfill('0') << std::setw(16)
<< dhcid_id_num << "\" , "
" \"lease_expires_on\" : \"20140121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20140121132405\" , "
" \"lease-length\" : 1300 "
"}";
return (dhcp_ddns::NameChangeRequest::fromJSON(stream.str()));
......
......@@ -59,18 +59,18 @@ Dhcp6SrvD2Test::buildTestNcr(uint32_t dhcid_id_num) {
stream <<
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"myhost.example.com.\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \""
<< std::hex << std::setfill('0') << std::setw(16)
<< dhcid_id_num << "\" , "
" \"lease_expires_on\" : \"20140121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20140121132405\" , "
" \"lease-length\" : 1300 "
"}";
return (dhcp_ddns::NameChangeRequest::fromJSON(stream.str()));
......
......@@ -21,18 +21,18 @@ This is a library of classes (in the isc::dhcp_ddns namespace) for sending
and receiving requests used by ISC's DHCP-DDNS (aka D2) service to carry
out DHCP-driven DNS updates. Each request contains the following information:
- change_type - indicates if this is a request to add or remove DNS entries
- forward_change - indicates if the forward DNS zone (the one that
- change-type - indicates if this is a request to add or remove DNS entries
- forward-change - indicates if the forward DNS zone (the one that
contains name to address mappings) should be updated
- reverse_change - indicates if reverse DNS zone (which contains the
- reverse-change - indicates if reverse DNS zone (which contains the
address to name mappings) should be updated
- fqdn - the fully qualified domain name whose DNS entries should be updated
- ip_address - IP address (v4 or v6) leased to the client with the
- ip-address - IP address (v4 or v6) leased to the client with the
given FQDN
- dhcid - DHCID (a form of identification) of the client to whom the IP
address is leased
- lease_expires_on - timestamp containing the date/time the lease expires
- lease_length - duration in seconds for which the lease is valid.
- lease-expires-on - timestamp containing the date/time the lease expires
- lease-length - duration in seconds for which the lease is valid.
These requests are implemented in this library by the class,
isc::dhcp_ddns::NameChangeRequest. This class provides services for
......
......@@ -323,28 +323,28 @@ NameChangeRequest::fromJSON(const std::string& json) {
// content is lexically invalid. If the element is NOT found in the
// map, getElement will throw NcrMessageError indicating the missing
// member. Currently there are no optional values.
element = ncr->getElement("change_type", element_map);
element = ncr->getElement("change-type", element_map);
ncr->setChangeType(element);
element = ncr->getElement("forward_change", element_map);
element = ncr->getElement("forward-change", element_map);
ncr->setForwardChange(element);
element = ncr->getElement("reverse_change", element_map);
element = ncr->getElement("reverse-change", element_map);
ncr->setReverseChange(element);
element = ncr->getElement("fqdn", element_map);
ncr->setFqdn(element);
element = ncr->getElement("ip_address", element_map);
element = ncr->getElement("ip-address", element_map);
ncr->setIpAddress(element);
element = ncr->getElement("dhcid", element_map);
ncr->setDhcid(element);
element = ncr->getElement("lease_expires_on", element_map);
element = ncr->getElement("lease-expires-on", element_map);
ncr->setLeaseExpiresOn(element);
element = ncr->getElement("lease_length", element_map);
element = ncr->getElement("lease-length", element_map);
ncr->setLeaseLength(element);
// All members were in the Element set and were correct lexically. Now
......@@ -363,16 +363,16 @@ NameChangeRequest::toJSON() const {
// forward.
std::ostringstream stream;
stream << "{\"change_type\":" << getChangeType() << ","
<< "\"forward_change\":"
stream << "{\"change-type\":" << getChangeType() << ","
<< "\"forward-change\":"
<< (isForwardChange() ? "true" : "false") << ","
<< "\"reverse_change\":"
<< "\"reverse-change\":"
<< (isReverseChange() ? "true" : "false") << ","
<< "\"fqdn\":\"" << getFqdn() << "\","
<< "\"ip_address\":\"" << getIpAddress() << "\","
<< "\"ip-address\":\"" << getIpAddress() << "\","
<< "\"dhcid\":\"" << getDhcid().toStr() << "\","
<< "\"lease_expires_on\":\"" << getLeaseExpiresOnStr() << "\","
<< "\"lease_length\":" << getLeaseLength() << "}";
<< "\"lease-expires-on\":\"" << getLeaseExpiresOnStr() << "\","
<< "\"lease-length\":" << getLeaseLength() << "}";
return (stream.str());
}
......@@ -456,7 +456,7 @@ NameChangeRequest::setForwardChange(isc::data::ConstElementPtr element) {
} catch (isc::data::TypeError& ex) {
// We expect a boolean Element type, don't have one.
isc_throw(NcrMessageError,
"Wrong data type for forward_change: " << ex.what());
"Wrong data type for forward-change: " << ex.what());
}
// Good to go, make the assignment.
......
......@@ -39,36 +39,36 @@ const char *valid_msgs[] =
{
// Valid Add.
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}",
// Valid Remove.
"{"
" \"change_type\" : 1 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 1 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}",
// Valid Add with IPv6 address
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"fe80::2acf:e9ff:fe12:e56f\" , "
" \"ip-address\" : \"fe80::2acf:e9ff:fe12:e56f\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}"
};
......
......@@ -33,36 +33,36 @@ const char *valid_msgs[] =
{
// Valid Add.
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}",
// Valid Remove.
"{"
" \"change_type\" : 1 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 1 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}",
// Valid Add with IPv6 address
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"fe80::2acf:e9ff:fe12:e56f\" , "
" \"ip-address\" : \"fe80::2acf:e9ff:fe12:e56f\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}"
};
......@@ -72,135 +72,135 @@ const char *invalid_msgs[] =
{
// Invalid change type.
"{"
" \"change_type\" : 7 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 7 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}",
// Invalid forward change.
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : \"bogus\" , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : \"bogus\" , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}",
// Invalid reverse change.
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : 500 , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : 500 , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}",
// Forward and reverse change both false.
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : false , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : false , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"walah.walah.com\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}",
// Blank FQDN
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \"\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "
" \"lease-expires-on\" : \"20130121132405\" , "
" \"lease-length\" : 1300 "
"}",
// Malformed FQDN
"{"
" \"change_type\" : 0 , "
" \"forward_change\" : true , "
" \"reverse_change\" : false , "
" \"change-type\" : 0 , "
" \"forward-change\" : true , "
" \"reverse-change\" : false , "
" \"fqdn\" : \".bad_name\" , "
" \"ip_address\" : \"192.168.2.1\" , "
" \"ip-address\" : \"192.168.2.1\" , "
" \"dhcid\" : \"010203040A7F8E3D\" , "
" \"lease_expires_on\" : \"20130121132405\" , "
" \"lease_length\" : 1300 "