summaryrefslogtreecommitdiffstats
path: root/lib/common-functions.sh
diff options
context:
space:
mode:
authorFeng Pan <fpan@redhat.com>2016-04-15 11:43:34 -0400
committerFeng Pan <fpan@redhat.com>2016-04-21 09:37:20 -0400
commit3d56d3211e2ddee0825e79174cfdfbcda70cd20b (patch)
treed67789ed8ec95857711f57b297f0048106cc37ff /lib/common-functions.sh
parenta412ab4c4a4835bb4a9f4bf0f2ef8c7e965f1aaf (diff)
Adds python IP utility library
Changes include: - IP utility library in python 3 that supports both IPv4 and IPv6 address generation. This library currently includes a single function of generating IP ranges or single IP for a given CIDR. More functionality will be added at a later time to support features such as IP address calculation. - Updated common-function.sh to use python library to generate IP ranges. All existing bash functions are preserved, so any callers will get identical IP ranges as before. - Add dependency to python3 for opnfv-apex-common package. - Add python dependency to build.sh No change is made to interface related functions. Change-Id: Idc6998754f9f3c7a3868ec5b5768f3bb5f78cd90 Signed-off-by: Feng Pan <fpan@redhat.com>
Diffstat (limited to 'lib/common-functions.sh')
-rw-r--r--lib/common-functions.sh65
1 files changed, 21 insertions, 44 deletions
diff --git a/lib/common-functions.sh b/lib/common-functions.sh
index af9b7103..32ee6bcc 100644
--- a/lib/common-functions.sh
+++ b/lib/common-functions.sh
@@ -2,6 +2,9 @@
# Common Functions used by OPNFV Apex
# author: Tim Rozet (trozet@redhat.com)
+#python ip_gen command
+ip_gen="python3.4 -B -m apex.ip_utils generate_ip_range"
+
##converts subnet mask to prefix
##params: subnet mask
function prefix2mask {
@@ -212,25 +215,19 @@ function find_usable_ip_range {
}
##generates usable IP range in correct format based on CIDR
-##assumes the first 20 IPs are used (by undercloud or otherwise)
+##A block of 20 IP addresses are reserved at beginning of address space.
+##A block of 22 IP addresses are reserved at end of address space, this includes
+##the broadcast IP address.
+##In a /24 IPv4 CIDR, this results in .1-20 as as .234-255 being excluded.
##params: cidr
function generate_usable_ip_range {
- local first_ip first_block_ip last_block_ip
- #first_ip=$(ipcalc -nb $1 | grep HostMin: | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- first_ip=$(ipcalc -nmpb $1 | grep NETWORK= | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- first_ip=$(increment_ip ${first_ip} 1)
- first_block_ip=$(increment_ip ${first_ip} 20)
- #last_block_ip=$(ipcalc -nb $1 | grep HostMax: | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- last_block_ip=$(ipcalc -nmpb $1 | grep BROADCAST= | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- last_block_ip=$(subtract_ip ${last_block_ip} 1)
- if [[ -z "$first_block_ip" || -z "$last_block_ip" ]]; then
+ if [ -z "$1" ]; then
return 1
- else
- last_block_ip=$(subtract_ip ${last_block_ip} 21)
- echo "${first_block_ip},${last_block_ip}"
fi
+ echo $($ip_gen $1 21 -23)
}
+
##find the undercloud IP address
##finds first usable IP on subnet
##params: interface
@@ -249,16 +246,13 @@ function find_provisioner_ip {
##generates undercloud IP address based on CIDR
##params: cidr
function generate_provisioner_ip {
- local provisioner_ip
- #provisioner_ip=$(ipcalc -nb $1 | grep HostMin: | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- provisioner_ip=$(ipcalc -nmpb $1 | grep NETWORK= | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- if [ -z "$provisioner_ip" ]; then
+ if [ -z "$1" ]; then
return 1
fi
- provisioner_ip=$(increment_ip ${provisioner_ip} 1)
- echo "$provisioner_ip"
+ echo $($ip_gen $1 1 1)
}
+
##finds the dhcp range available via interface
##uses first 8 IPs, after 2nd IP
##params: interface
@@ -280,16 +274,10 @@ function find_dhcp_range {
##uses first 8 IPs, after 1st IP
##params: cidr
function generate_dhcp_range {
- local dhcp_range_start dhcp_range_end first_ip
- #first_ip=$(ipcalc -nb $1 | grep HostMin: | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- first_ip=$(ipcalc -nmpb $1 | grep NETWORK= | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- if [ -z "$first_ip" ]; then
+ if [ -z "$1" ]; then
return 1
fi
- first_ip=$(increment_ip ${first_ip} 1)
- dhcp_range_start=$(increment_ip ${first_ip} 1)
- dhcp_range_end=$(increment_ip ${dhcp_range_start} 8)
- echo "${dhcp_range_start},${dhcp_range_end}"
+ echo $($ip_gen $1 2 10)
}
##finds the introspection range available via interface
@@ -313,16 +301,10 @@ function find_introspection_range {
##uses 8 IPs, after the first 10 IPs
##params: cidr
function generate_introspection_range {
- local inspect_range_start inspect_range_end first_ip
- #first_ip=$(ipcalc -nb $1 | grep HostMin: | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- first_ip=$(ipcalc -nmpb $1 | grep NETWORK= | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- if [ -z "$first_ip" ]; then
+ if [ -z "$1" ]; then
return 1
fi
- first_ip=$(increment_ip ${first_ip} 1)
- inspect_range_start=$(increment_ip ${first_ip} 10)
- inspect_range_end=$(increment_ip ${inspect_range_start} 8)
- echo "${inspect_range_start},${inspect_range_end}"
+ echo $($ip_gen $1 11 19)
}
##finds the floating ip range available via interface
@@ -345,19 +327,14 @@ function find_floating_ip_range {
}
##generate the floating range available via CIDR
-##uses last 20 IPs of subnet, minus last IP
+##uses last 20 IPs of subnet, minus last 2 IPs.
+##In a /24 IPv4 CIDR, this would result in floating ip range of .234-253
##params: cidr
function generate_floating_ip_range {
- local float_range_start float_range_end last_ip
- #last_ip=$(ipcalc -nb $1 | grep HostMax: | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- last_ip=$(ipcalc -nmpb $1 | grep BROADCAST= | grep -Eo "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
- if [ -z "$last_ip" ]; then
+ if [ -z "$1" ]; then
return 1
fi
- last_ip=$(subtract_ip ${last_ip} 2)
- float_range_start=$(subtract_ip ${last_ip} 19)
- float_range_end=${last_ip}
- echo "${float_range_start},${float_range_end}"
+ echo $($ip_gen $1 -22 -3)
}
##attach interface to OVS and set the network config correctly