删除记录Libcloud(GoDaddy api)

时间:2016-09-06 11:03:18

标签: python-2.7 libcloud

我尝试为Record delate-record实现delete方法,但是我第一次使用python和这个api。

3 个答案:

答案 0 :(得分:1)

GoDaddy API没有删除记录方法,因此驱动程序中不会公开此功能。 https://developer.godaddy.com/doc#!/_v1_domains/recordReplace

驱动程序可以在区域中提供“替换记录”。方法,它允许您获取当前记录列表,然后设置新列表减去要删除的记录。但是这个功能没有实现,风险很大。

答案 1 :(得分:0)

首先, 将GET请求发送到https://api.godaddy.com/v1/domains/{DOMAIN}/records

然后,枚举API响应(JSON数组)的所有记录,并通过删除需要删除的记录来准备新数据。

API响应(示例)

[
    {
        "data": "192.168.1.1",
        "name": "@",
        "ttl": 600,
        "type": "A"
    },
    {
        "data": "ns1.example.com",
        "name": "@",
        "ttl": 3600,
        "type": "NS"
    },
    {
        "data": "@",
        "name": "www",
        "ttl": 3600,
        "type": "CNAME"
    },
    {
        "data": "mail.example.com",
        "name": "@",
        "ttl": 3600,
        "priority": 1,
        "type": "MX"
    }
]

新数据(删除记录后)(样本)

[
    {
        "data": "192.168.1.1",
        "name": "@",
        "ttl": 600,
        "type": "A"
    },
    {
        "data": "ns1.example.com",
        "name": "@",
        "ttl": 3600,
        "type": "NS"
    },
    {
        "data": "@",
        "name": "www",
        "ttl": 3600,
        "type": "CNAME"
    }
]

现在, 使用新数据向https://api.godaddy.com/v1/domains/{DOMAIN}/records发送PUT请求。

最重要的是如何识别上述数组中需要删除的记录。假设您具有良好的编程技能,这将不是一件困难的事情。

答案 2 :(得分:0)

我设法解决了这一问题-我们有许多要删除的记录,手动执行似乎很奇怪,因此我在Chrome开发者控制台中添加了Javascript,并通过DNS管理在经过身份验证的会话上运行页面:

function deleteGoDaddyRecords(recordId) {
        $.ajax({
        url: 'https://dcc.godaddy.com/api/v3/domains/<YOUR-DOMAIN.com>/records?recordId='+recordId,
        type: 'DELETE',
        success: function(result) {
            console.log(result)
        }
    });
}

当您要求删除记录时,它可以让我使用UI所调用的相同呼叫。

您唯一需要提供的是AttributeUid,该属性在公共API中不可用,但是在前端API中:

https://dcc.godaddy.com/api/v2/domains/runahr.com/records

所以我设法创建了一个脚本,该脚本将生成一堆

deleteGoDaddyRecords('<RECORD-UUID>');
deleteGoDaddyRecords('<RECORD-UUID>');

将生成的脚本复制并粘贴到开发人员控制台中,目前该脚本已解决。

我希望GoDaddy将来在其API中添加一个公共DELETE终结点:)