@Override public @Nullable Distribution getDistribution(@Nonnull String distributionId) throws InternalException, CloudException { APITrace.begin(provider, "CDN.getDistribution"); try { ProviderContext ctx = provider.getContext(); if (ctx == null) { throw new InternalException("No context exists for this request"); } NovaMethod method = new NovaMethod(provider); Map<String, String> metaData = method.headResource(SERVICE, RESOURCE, distributionId); if (metaData == null) { return null; } Distribution distribution = new Distribution(); distribution.setAliases(new String[0]); String dnsName = null, cdnUri = null; boolean enabled = false; for (String key : metaData.keySet()) { if (key.equalsIgnoreCase("X-CDN-Enabled")) { String value = metaData.get(key); enabled = (value != null && value.equalsIgnoreCase("true")); } else if (key.equalsIgnoreCase("X-CDN-SSL-URI")) { dnsName = metaData.get(key); } else if (key.equalsIgnoreCase("X-CDN-URI")) { cdnUri = metaData.get(key); } } distribution.setActive(enabled); distribution.setDeployed(enabled); String prefix = "http://"; if (dnsName == null) { dnsName = cdnUri; if (dnsName == null) { return null; } if (dnsName.startsWith("http://")) { dnsName = dnsName.substring("http://".length()); } } else { if (dnsName.startsWith("https://")) { dnsName = dnsName.substring("https://".length()); prefix = "https://"; } } distribution.setDnsName(dnsName); distribution.setLocation(prefix + distribution.getDnsName() + "/" + distributionId); distribution.setLogDirectory(null); distribution.setLogName(null); distribution.setName(distributionId); distribution.setProviderDistributionId(distributionId); distribution.setProviderOwnerId(getTenantId()); return distribution; } finally { APITrace.end(); } }