--- Begin Message ---
From: Lou Lecrivain <lou.lecriv...@wdz.de>

Signed-off-by: lou lecrivain <lou.lecriv...@wdz.de>
---
 src/PVE/Network/SDN/Ipams/NautobotPlugin.pm   | 29 +++++++++++++------
 src/test/ipams/nautobot/expected.add_ip       | 11 +++++++
 .../ipams/nautobot/expected.add_ip_notgateway | 11 +++++++
 .../ipams/nautobot/expected.add_next_freeip   | 11 +++++++
 src/test/ipams/nautobot/expected.add_subnet   | 11 +++++++
 src/test/ipams/nautobot/expected.del_ip       | 11 +++++++
 src/test/ipams/nautobot/expected.update_ip    | 11 +++++++
 src/test/ipams/nautobot/ipam_config           | 24 +++++++++++++++
 src/test/ipams/nautobot/sdn_config            | 20 +++++++++++++
 src/test/ipams/netbox/ipam_config             |  8 ++++-
 src/test/ipams/phpipam/ipam_config            |  8 ++++-
 11 files changed, 144 insertions(+), 11 deletions(-)
 create mode 100644 src/test/ipams/nautobot/expected.add_ip
 create mode 100644 src/test/ipams/nautobot/expected.add_ip_notgateway
 create mode 100644 src/test/ipams/nautobot/expected.add_next_freeip
 create mode 100644 src/test/ipams/nautobot/expected.add_subnet
 create mode 100644 src/test/ipams/nautobot/expected.del_ip
 create mode 100644 src/test/ipams/nautobot/expected.update_ip
 create mode 100644 src/test/ipams/nautobot/ipam_config
 create mode 100644 src/test/ipams/nautobot/sdn_config

diff --git a/src/PVE/Network/SDN/Ipams/NautobotPlugin.pm 
b/src/PVE/Network/SDN/Ipams/NautobotPlugin.pm
index 58f7c68..6f2a380 100644
--- a/src/PVE/Network/SDN/Ipams/NautobotPlugin.pm
+++ b/src/PVE/Network/SDN/Ipams/NautobotPlugin.pm
@@ -54,7 +54,7 @@ sub add_subnet {
     my $namespace = $plugin_config->{namespace};
     my $headers = default_headers($plugin_config);
 
-    my $internalid = get_prefix_id($url, $cidr, $headers, $noerr);
+    my $internalid = get_prefix_id($plugin_config, $cidr, $noerr);
 
     #create subnet
     if (!$internalid) {
@@ -80,7 +80,7 @@ sub del_subnet {
     my $url = $plugin_config->{url};
     my $headers = default_headers($plugin_config);
 
-    my $internalid = get_prefix_id($url, $cidr, $headers, $noerr);
+    my $internalid = get_prefix_id($plugin_config, $cidr, $noerr);
     return if !$internalid;
 
     # TODO check that prefix is empty before deletion
@@ -142,7 +142,7 @@ sub add_next_freeip {
     my $namespace = $plugin_config->{namespace};
     my $headers = default_headers($plugin_config);
 
-    my $internalid = get_prefix_id($url, $cidr, $headers, $noerr);
+    my $internalid = get_prefix_id($plugin_config, $cidr, $noerr);
     die "cannot find prefix $cidr in Nautobot" if !$internalid;
 
     my $description = undef;
@@ -235,7 +235,7 @@ sub update_ip {
        status => default_ip_status()
     };
 
-    my $ip_id = get_ip_id($url, $ip, $headers, $noerr);
+    my $ip_id = get_ip_id($plugin_config, $ip, $noerr);
     die "can't find ip $ip in ipam" if !$noerr && !$ip_id;
 
     eval {
@@ -256,7 +256,7 @@ sub del_ip {
     my $url = $plugin_config->{url};
     my $headers = default_headers($plugin_config);
 
-    my $ip_id = get_ip_id($url, $ip, $headers, $noerr);
+    my $ip_id = get_ip_id($plugin_config, $ip, $noerr);
     die "can't find ip $ip in ipam" if !$ip_id && !$noerr;
 
     eval {
@@ -268,7 +268,6 @@ sub del_ip {
     }
 }
 
-
 sub verify_api {
     my ($class, $plugin_config) = @_;
 
@@ -330,7 +329,11 @@ sub get_ips_within_range {
 }
 
 sub get_ip_id {
-    my ($url, $ip, $headers, $noerr) = @_;
+    my ($plugin_config, $ip, $noerr) = @_;
+
+    my $url = $plugin_config->{url};
+    my $namespace = $plugin_config->{namespace};
+    my $headers = default_headers($plugin_config);
 
     my $result = eval {
        return PVE::Network::SDN::api_request(
@@ -346,7 +349,11 @@ sub get_ip_id {
 }
 
 sub get_prefix_id {
-    my ($url, $cidr, $headers, $noerr) = @_;
+    my ($plugin_config, $cidr, $noerr) = @_;
+
+    my $url = $plugin_config->{url};
+    my $namespace = $plugin_config->{namespace};
+    my $headers = default_headers($plugin_config);
 
     my $result = eval {
        return PVE::Network::SDN::api_request(
@@ -394,7 +401,11 @@ sub get_status_id {
 }
 
 sub is_ip_gateway {
-    my ($url, $ip, $headers, $noerr) = @_;
+    my ($plugin_config, $ip, $noerr) = @_;
+
+    my $url = $plugin_config->{url};
+    my $namespace = $plugin_config->{namespace};
+    my $headers = default_headers($plugin_config);
 
     my $result = eval {
        return PVE::Network::SDN::api_request(
diff --git a/src/test/ipams/nautobot/expected.add_ip 
b/src/test/ipams/nautobot/expected.add_ip
new file mode 100644
index 0000000..60c62d4
--- /dev/null
+++ b/src/test/ipams/nautobot/expected.add_ip
@@ -0,0 +1,11 @@
+bless( {
+                  '_content' => 
'{"address":"10.0.0.1/24","description":"gateway","dns_name":"myhostname","namespace":"TestNamespace","status":"Active","type":"dhcp"}',
+                  '_headers' => bless( {
+                                         'authorization' => 'token 
FAKETESTTOKEN',
+                                         'content-type' => 'application/json',
+                                        'accept' => 'application/json'
+                                       }, 'HTTP::Headers' ),
+                  '_max_body_size' => undef,
+                  '_method' => 'POST',
+                  '_uri' => bless( do{\(my $o = 
'http://localhost:8080/api/ipam/ip-addresses/')}, 'URI::http' )
+                }, 'HTTP::Request' );
diff --git a/src/test/ipams/nautobot/expected.add_ip_notgateway 
b/src/test/ipams/nautobot/expected.add_ip_notgateway
new file mode 100644
index 0000000..355ccde
--- /dev/null
+++ b/src/test/ipams/nautobot/expected.add_ip_notgateway
@@ -0,0 +1,11 @@
+bless( {
+                  '_content' => 
'{"address":"10.0.0.1/24","description":"mac:da:65:8f:18:9b:6f","dns_name":"myhostname","namespace":"TestNamespace","status":"Active","type":"dhcp"}',
+                  '_headers' => bless( {
+                                         'authorization' => 'token 
FAKETESTTOKEN',
+                                         'content-type' => 'application/json',
+                                        'accept' => 'application/json'
+                                       }, 'HTTP::Headers' ),
+                  '_max_body_size' => undef,
+                  '_method' => 'POST',
+                  '_uri' => bless( do{\(my $o = 
'http://localhost:8080/api/ipam/ip-addresses/')}, 'URI::http' )
+                }, 'HTTP::Request' );
diff --git a/src/test/ipams/nautobot/expected.add_next_freeip 
b/src/test/ipams/nautobot/expected.add_next_freeip
new file mode 100644
index 0000000..da79a27
--- /dev/null
+++ b/src/test/ipams/nautobot/expected.add_next_freeip
@@ -0,0 +1,11 @@
+bless( {
+                  '_content' => 
'{"description":"mac:da:65:8f:18:9b:6f","dns_name":"myhostname","namespace":"TestNamespace","status":"Active","type":"dhcp"}',
+                  '_headers' => bless( {
+                                         'authorization' => 'token 
FAKETESTTOKEN',
+                                         'content-type' => 'application/json',
+                                        'accept' => 'application/json'
+                                       }, 'HTTP::Headers' ),
+                  '_max_body_size' => undef,
+                  '_method' => 'POST',
+                  '_uri' => bless( do{\(my $o = 
'http://localhost:8080/api/ipam/prefixes/1/available-ips/')}, 'URI::http' )
+                }, 'HTTP::Request' );
diff --git a/src/test/ipams/nautobot/expected.add_subnet 
b/src/test/ipams/nautobot/expected.add_subnet
new file mode 100644
index 0000000..af4bc8e
--- /dev/null
+++ b/src/test/ipams/nautobot/expected.add_subnet
@@ -0,0 +1,11 @@
+bless({
+       '_content' => 
'{"namespace":"TestNamespace","prefix":"10.0.0.0/24","status":"Active"}',
+       '_headers' => bless({
+                  'authorization' => 'token FAKETESTTOKEN',
+                  'content-type' => 'application/json',
+                  'accept' => 'application/json',
+       }, 'HTTP::Headers'),
+       '_max_body_size' => undef,
+       '_method' => 'POST',
+       '_uri' => bless(do{\(my $o = 
'http://localhost:8080/api/ipam/prefixes/')}, 'URI::http'),
+}, 'HTTP::Request');
diff --git a/src/test/ipams/nautobot/expected.del_ip 
b/src/test/ipams/nautobot/expected.del_ip
new file mode 100644
index 0000000..f4bc182
--- /dev/null
+++ b/src/test/ipams/nautobot/expected.del_ip
@@ -0,0 +1,11 @@
+bless( {
+                  '_content' => '',
+                  '_headers' => bless( {
+                                         'authorization' => 'token 
FAKETESTTOKEN',
+                                         'content-type' => 'application/json',
+                                        'accept' => 'application/json'
+                                       }, 'HTTP::Headers' ),
+                  '_max_body_size' => undef,
+                  '_method' => 'DELETE',
+                  '_uri' => bless( do{\(my $o = 
'http://localhost:8080/api/ipam/ip-addresses/1/')}, 'URI::http' )
+                }, 'HTTP::Request' );
diff --git a/src/test/ipams/nautobot/expected.update_ip 
b/src/test/ipams/nautobot/expected.update_ip
new file mode 100644
index 0000000..58e0ac6
--- /dev/null
+++ b/src/test/ipams/nautobot/expected.update_ip
@@ -0,0 +1,11 @@
+bless( {
+                  '_content' => 
'{"address":"10.0.0.1/24","description":"gateway","dns_name":"myhostname","namespace":"TestNamespace","status":"Active","type":"dhcp"}',
+                  '_headers' => bless( {
+                                         'authorization' => 'token 
FAKETESTTOKEN',
+                                         'content-type' => 'application/json',
+                                        'accept' => 'application/json'
+                                       }, 'HTTP::Headers' ),
+                  '_max_body_size' => undef,
+                  '_method' => 'PATCH',
+                  '_uri' => bless( do{\(my $o = 
'http://localhost:8080/api/ipam/ip-addresses/1/')}, 'URI::http' )
+                }, 'HTTP::Request' );
diff --git a/src/test/ipams/nautobot/ipam_config 
b/src/test/ipams/nautobot/ipam_config
new file mode 100644
index 0000000..014d6b1
--- /dev/null
+++ b/src/test/ipams/nautobot/ipam_config
@@ -0,0 +1,24 @@
+{
+          'ids' => {
+                     'phpipam' => {
+                                    'url' => 'https://localhost/api/apiadmin',
+                                    'type' => 'phpipam',
+                                    'section' => 1,
+                                    'token' => 
'JPHkPSLB4O_XL-GQz4qtEFmNpx-99Htw'
+                                  },
+                     'pve' => {
+                                'type' => 'pve'
+                              },
+                     'netbox' => {
+                                   'token' => 
'0123456789abcdef0123456789abcdef01234567',
+                                   'type' => 'netbox',
+                                   'url' => 'http://localhost:8000/api'
+                                 },
+                     'nautobot' => {
+                                   'url' => 'http://localhost:8080/api',
+                                   'type' => 'nautobot',
+                                   'token' => 'FAKETESTTOKEN',
+                                   'namespace' => 'TestNamespace'
+                     }
+                   },
+}
diff --git a/src/test/ipams/nautobot/sdn_config 
b/src/test/ipams/nautobot/sdn_config
new file mode 100644
index 0000000..784cd95
--- /dev/null
+++ b/src/test/ipams/nautobot/sdn_config
@@ -0,0 +1,20 @@
+{
+  version => 1,
+  vnets   => {
+               ids => {
+                        myvnet => { type => "vnet", zone => "myzone" },
+                      },
+             },
+
+  zones   => {
+               ids => { myzone => { ipam => "nautobot" } },
+             },
+
+  subnets => {
+              ids => { 'myzone-10.0.0.0-24' => {
+                                                        'type' => 'subnet',
+                                                        'vnet' => 'myvnet',
+                                                  }
+                     }
+             }
+}
diff --git a/src/test/ipams/netbox/ipam_config 
b/src/test/ipams/netbox/ipam_config
index a33be30..014d6b1 100644
--- a/src/test/ipams/netbox/ipam_config
+++ b/src/test/ipams/netbox/ipam_config
@@ -13,6 +13,12 @@
                                    'token' => 
'0123456789abcdef0123456789abcdef01234567',
                                    'type' => 'netbox',
                                    'url' => 'http://localhost:8000/api'
-                                 }
+                                 },
+                     'nautobot' => {
+                                   'url' => 'http://localhost:8080/api',
+                                   'type' => 'nautobot',
+                                   'token' => 'FAKETESTTOKEN',
+                                   'namespace' => 'TestNamespace'
+                     }
                    },
 }
diff --git a/src/test/ipams/phpipam/ipam_config 
b/src/test/ipams/phpipam/ipam_config
index a33be30..014d6b1 100644
--- a/src/test/ipams/phpipam/ipam_config
+++ b/src/test/ipams/phpipam/ipam_config
@@ -13,6 +13,12 @@
                                    'token' => 
'0123456789abcdef0123456789abcdef01234567',
                                    'type' => 'netbox',
                                    'url' => 'http://localhost:8000/api'
-                                 }
+                                 },
+                     'nautobot' => {
+                                   'url' => 'http://localhost:8080/api',
+                                   'type' => 'nautobot',
+                                   'token' => 'FAKETESTTOKEN',
+                                   'namespace' => 'TestNamespace'
+                     }
                    },
 }
-- 
2.39.5



--- End Message ---
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to