mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
140 lines
3.1 KiB
Ruby
140 lines
3.1 KiB
Ruby
SUBDOMAIN_FORMAT = {
|
|
'name' => String,
|
|
'id' => Integer,
|
|
'created' => String,
|
|
'updated' => String
|
|
}
|
|
|
|
LIST_SUBDOMAINS_FORMAT = {
|
|
'domains' => [SUBDOMAIN_FORMAT],
|
|
'totalEntries' => Integer
|
|
}
|
|
|
|
LIST_DOMAIN_FORMAT = {
|
|
'domains' => [
|
|
{
|
|
'name' => String,
|
|
'id' => Integer,
|
|
'accountId' => Integer,
|
|
'updated' => String,
|
|
'created' => String
|
|
}
|
|
],
|
|
'totalEntries' => Integer,
|
|
'links' => [
|
|
{
|
|
'rel' => String,
|
|
'href' => String
|
|
}
|
|
]
|
|
}
|
|
|
|
RECORD_FORMAT = {
|
|
'name' => String,
|
|
'id' => String,
|
|
'type' => String,
|
|
'data' => String,
|
|
'updated' => String,
|
|
'created' => String,
|
|
'ttl' => Integer,
|
|
'priority' => Fog::Nullable::Integer
|
|
}
|
|
|
|
RECORD_LIST_FORMAT = {
|
|
'records' => [RECORD_FORMAT],
|
|
#In some cases this is returned (domain details) and in some cases it isn't (create domain). Marking as nullable.
|
|
'totalEntries' => Fog::Nullable::Integer
|
|
}
|
|
|
|
NAME_SERVERS_FORMAT = [{
|
|
'name' => String
|
|
}]
|
|
|
|
BASIC_DOMAIN_DETAIL_FORMAT = {
|
|
'name' => String,
|
|
'id' => Integer,
|
|
'accountId' => Integer,
|
|
'updated' => String,
|
|
'created' =>String,
|
|
'ttl' => Integer,
|
|
'emailAddress' => String,
|
|
'nameservers' => NAME_SERVERS_FORMAT
|
|
}
|
|
|
|
LIST_DOMAIN_DETAILS_WITH_RECORDS = BASIC_DOMAIN_DETAIL_FORMAT.merge({
|
|
'recordsList' => RECORD_LIST_FORMAT
|
|
})
|
|
|
|
LIST_DOMAIN_DETAILS_WITH_RECORDS_AND_SUBDOMAINS_FORMAT = BASIC_DOMAIN_DETAIL_FORMAT.merge({
|
|
'recordsList' => RECORD_LIST_FORMAT,
|
|
'subdomains' => {
|
|
'domains' => [{
|
|
'created' => String,
|
|
'name' => String,
|
|
'id' => Integer,
|
|
'updated' => String
|
|
}],
|
|
'totalEntries' => Integer
|
|
}
|
|
})
|
|
|
|
LIST_DOMAIN_DETAILS_WITHOUT_RECORDS_AND_SUBDOMAINS_FORMAT = BASIC_DOMAIN_DETAIL_FORMAT
|
|
|
|
CREATE_DOMAINS_FORMAT = {
|
|
'domains' => [
|
|
BASIC_DOMAIN_DETAIL_FORMAT.merge({
|
|
'recordsList' => RECORD_LIST_FORMAT
|
|
})
|
|
]
|
|
}
|
|
|
|
def wait_for(service, response)
|
|
job_id = response.body['jobId']
|
|
Fog.wait_for do
|
|
response = service.callback(job_id)
|
|
response.body['status'] != 'RUNNING'
|
|
end
|
|
response
|
|
end
|
|
|
|
def domain_tests(service, domain_attributes)
|
|
tests("create_domains([#{domain_attributes}])").formats(CREATE_DOMAINS_FORMAT) do
|
|
response = wait_for service, service.create_domains([domain_attributes])
|
|
@domain_details = response.body['response']['domains']
|
|
@domain_id = @domain_details[0]['id']
|
|
response.body['response']
|
|
end
|
|
|
|
begin
|
|
if block_given?
|
|
yield
|
|
end
|
|
ensure
|
|
tests("remove_domain('#{@domain_id}')").succeeds do
|
|
wait_for service, service.remove_domain(@domain_id)
|
|
end
|
|
end
|
|
end
|
|
|
|
def domains_tests(service, domains_attributes, custom_delete = false)
|
|
tests("create_domains(#{domains_attributes})").formats(CREATE_DOMAINS_FORMAT) do
|
|
response = wait_for service, service.create_domains(domains_attributes)
|
|
@domain_details = response.body['response']['domains']
|
|
@domain_ids = @domain_details.collect { |domain| domain['id'] }
|
|
response.body['response']
|
|
end
|
|
|
|
begin
|
|
if block_given?
|
|
yield
|
|
end
|
|
ensure
|
|
if !custom_delete
|
|
tests("remove_domains(#{@domain_ids})").succeeds do
|
|
wait_for service, service.remove_domains(@domain_ids)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
|