diff options
author | 2017-04-28 17:35:57 -0400 | |
---|---|---|
committer | 2017-05-02 17:22:42 -0400 | |
commit | 4a9d6b863d1c77af21a1c5ea278c8cba3386a45f (patch) | |
tree | 41cb6d6d48e3117fe713b08c286bc2194be4c444 /manifests/honeycomb | |
parent | a789a040563bb27e591bea0c7ab504d379a4825c (diff) |
Add support for interface role mapping
Change-Id: I88a01914304f5e32840810c03646d9cda1ae7fff
Signed-off-by: Feng Pan <fpan@redhat.com>
Diffstat (limited to 'manifests/honeycomb')
-rw-r--r-- | manifests/honeycomb/configure_role_mappings.pp | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/manifests/honeycomb/configure_role_mappings.pp b/manifests/honeycomb/configure_role_mappings.pp new file mode 100644 index 0000000..826f6e6 --- /dev/null +++ b/manifests/honeycomb/configure_role_mappings.pp @@ -0,0 +1,40 @@ +# == Define: fdio::honeycomb::configure_role_mappings +# +# Defined type to configure interface role mapping in OpenDaylight +# +# === Parameters: +# [*honeycomb_username*] +# User name for Honeycomb. +# +# [*honeycomb_password*] +# Password for Honeycomb. +# +# [*honeycomb_url*] +# Honeycomb restconf binding URL. +# +# [*interface_role_mapping*] +# List of interface role mapping in the format +# of <VPP interface name>:<role name> +# Example: +# [ 'GigabitEthernet0/5/0:public-interface', +# 'GigabitEthernet0/6/0:tenant-interface' ] +# +define fdio::honeycomb::configure_role_mappings ( + $honeycomb_username, + $honeycomb_password, + $honeycomb_url, + $interface_role_mapping = $title, +) { + $mapping = split($interface_role_mapping, ':') + $vpp_int = regsubst($mapping[0], '/', '%2F', 'G') + $role_name = $mapping[1] + $config_url = "${honeycomb_url}/restconf/config/ietf-interfaces:interfaces/interface/${vpp_int}" + + exec { "Register interface ${mapping[0]} with role ${role_name}": + command => "curl -XPOST --fail -H 'Content-Type: application/json' -u ${honeycomb_username}:${honeycomb_password} ${config_url} -d \"{'description': '${role_name}'}\"", + tries => 5, + try_sleep => 30, + path => '/usr/sbin:/usr/bin:/sbin:/bin', + unless => "curl -u ${honeycomb_username}:${honeycomb_password} ${config_url} | grep '${role_name}'", + } +} |