diff --git a/client/pom.xml b/client/pom.xml
index b8dffe65d4f..5c7abe771dc 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -662,6 +662,12 @@
cloud-utils
${project.version}
+
+ org.apache.cloudstack
+ cloud-plugin-dns-powerdns
+ ${project.version}
+
+
diff --git a/core/src/main/resources/META-INF/cloudstack/core/spring-core-registry-core-context.xml b/core/src/main/resources/META-INF/cloudstack/core/spring-core-registry-core-context.xml
index 01c568d7891..8bca42f16bc 100644
--- a/core/src/main/resources/META-INF/cloudstack/core/spring-core-registry-core-context.xml
+++ b/core/src/main/resources/META-INF/cloudstack/core/spring-core-registry-core-context.xml
@@ -366,4 +366,6 @@
+
+
diff --git a/core/src/main/resources/META-INF/cloudstack/dns/module.properties b/core/src/main/resources/META-INF/cloudstack/dns/module.properties
new file mode 100644
index 00000000000..a2bb467be75
--- /dev/null
+++ b/core/src/main/resources/META-INF/cloudstack/dns/module.properties
@@ -0,0 +1,21 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+name=dns
+parent=core
diff --git a/core/src/main/resources/META-INF/cloudstack/dns/spring-core-lifecycle-dns-context-inheritable.xml b/core/src/main/resources/META-INF/cloudstack/dns/spring-core-lifecycle-dns-context-inheritable.xml
new file mode 100644
index 00000000000..27cac940028
--- /dev/null
+++ b/core/src/main/resources/META-INF/cloudstack/dns/spring-core-lifecycle-dns-context-inheritable.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
+
+
+
diff --git a/plugins/dns/powerdns/pom.xml b/plugins/dns/powerdns/pom.xml
new file mode 100644
index 00000000000..ef915559f47
--- /dev/null
+++ b/plugins/dns/powerdns/pom.xml
@@ -0,0 +1,37 @@
+
+
+ 4.0.0
+ cloud-plugin-dns-powerdns
+ Apache CloudStack Plugin - PowerDNS
+
+ org.apache.cloudstack
+ cloudstack-plugins
+ 4.23.0.0-SNAPSHOT
+ ../../pom.xml
+
+
+
+ 11
+ 11
+ UTF-8
+
+
+
diff --git a/plugins/dns/powerdns/src/main/java/org/apache/cloudstack/dns/powerdns/PowerDnsProvider.java b/plugins/dns/powerdns/src/main/java/org/apache/cloudstack/dns/powerdns/PowerDnsProvider.java
new file mode 100644
index 00000000000..c18820e4134
--- /dev/null
+++ b/plugins/dns/powerdns/src/main/java/org/apache/cloudstack/dns/powerdns/PowerDnsProvider.java
@@ -0,0 +1,70 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package org.apache.cloudstack.dns.powerdns;
+
+import java.util.List;
+
+import org.apache.cloudstack.dns.DnsProvider;
+import org.apache.cloudstack.dns.DnsProviderType;
+import org.apache.cloudstack.dns.DnsRecord;
+import org.apache.cloudstack.dns.DnsServer;
+import org.apache.cloudstack.dns.DnsZone;
+
+import com.cloud.utils.component.AdapterBase;
+
+public class PowerDnsProvider extends AdapterBase implements DnsProvider {
+ @Override
+ public DnsProviderType getProviderType() {
+ return DnsProviderType.PowerDNS;
+ }
+
+ @Override
+ public boolean validate(DnsServer server) {
+ return false;
+ }
+
+ @Override
+ public boolean createZone(DnsServer server, DnsZone zone) {
+ return false;
+ }
+
+ @Override
+ public boolean deleteZone(DnsServer server, DnsZone zone) {
+ return false;
+ }
+
+ @Override
+ public DnsRecord createRecord(DnsServer server, DnsZone zone, DnsRecord record) {
+ return null;
+ }
+
+ @Override
+ public boolean updateRecord(DnsServer server, DnsZone zone, DnsRecord record) {
+ return false;
+ }
+
+ @Override
+ public boolean deleteRecord(DnsServer server, DnsZone zone, DnsRecord record) {
+ return false;
+ }
+
+ @Override
+ public List listRecords(DnsServer server, DnsZone zone) {
+ return List.of();
+ }
+}
diff --git a/plugins/dns/powerdns/src/main/resources/META-INF/cloudstack/powerdns/module.properties b/plugins/dns/powerdns/src/main/resources/META-INF/cloudstack/powerdns/module.properties
new file mode 100644
index 00000000000..baec3fde6a6
--- /dev/null
+++ b/plugins/dns/powerdns/src/main/resources/META-INF/cloudstack/powerdns/module.properties
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+name=powerdns
+parent=dns
diff --git a/plugins/dns/powerdns/src/main/resources/META-INF/cloudstack/powerdns/spring-dns-powerdns-context.xml b/plugins/dns/powerdns/src/main/resources/META-INF/cloudstack/powerdns/spring-dns-powerdns-context.xml
new file mode 100644
index 00000000000..c9e4937dac5
--- /dev/null
+++ b/plugins/dns/powerdns/src/main/resources/META-INF/cloudstack/powerdns/spring-dns-powerdns-context.xml
@@ -0,0 +1,31 @@
+
+
+
+
+
diff --git a/plugins/pom.xml b/plugins/pom.xml
index e7d13871285..acd5efad7de 100755
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -154,6 +154,7 @@
user-two-factor-authenticators/totp
user-two-factor-authenticators/static-pin
+ dns/powerdns
diff --git a/server/src/main/java/org/apache/cloudstack/dns/DnsProviderManagerImpl.java b/server/src/main/java/org/apache/cloudstack/dns/DnsProviderManagerImpl.java
index 09293f2c859..93d3c42d0ac 100644
--- a/server/src/main/java/org/apache/cloudstack/dns/DnsProviderManagerImpl.java
+++ b/server/src/main/java/org/apache/cloudstack/dns/DnsProviderManagerImpl.java
@@ -34,7 +34,6 @@ import org.apache.cloudstack.api.response.DnsRecordResponse;
import org.apache.cloudstack.api.response.DnsServerResponse;
import org.apache.cloudstack.api.response.DnsZoneResponse;
import org.apache.cloudstack.api.response.ListResponse;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.cloud.utils.component.ManagerBase;
@@ -43,7 +42,6 @@ import com.cloud.utils.exception.CloudRuntimeException;
@Component
public class DnsProviderManagerImpl extends ManagerBase implements DnsProviderManager, PluggableService {
- @Autowired(required = false)
List dnsProviders;
private DnsProvider getProvider(DnsProviderType type) {
@@ -174,4 +172,12 @@ public class DnsProviderManagerImpl extends ManagerBase implements DnsProviderMa
cmdList.add(DeleteDnsRecordCmd.class);
return cmdList;
}
+
+ public List getDnsProviders() {
+ return dnsProviders;
+ }
+
+ public void setDnsProviders(List dnsProviders) {
+ this.dnsProviders = dnsProviders;
+ }
}
diff --git a/server/src/main/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml b/server/src/main/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
index 3cec9737904..02b38e38634 100644
--- a/server/src/main/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
+++ b/server/src/main/resources/META-INF/cloudstack/core/spring-server-core-managers-context.xml
@@ -403,5 +403,7 @@
-
+
+
+