]> review.fuel-infra Code Review - openstack-build/neutron-build.git/blob
e698eeaff64ccfb80a05a19bf645f5a399abf5c3
[openstack-build/neutron-build.git] /
1 \r
2 #parse("openstack_l4/openstack_common.vm")\r
3 \r
4 #property("summary", "Manage Real IPs - date: [2013-05-13]")\r
5 \r
6 ##I am corrently using the needed function from this file so not to handle the path structure.\r
7 ##parse("common_lib.vm")\r
8 \r
9 ## Manage RIPs\r
10 \r
11 ## Layer 4 part\r
12 #param("groupId", "int", "in", "prompt=Group ID")\r
13 #param("curRealServerIds", "int[]", "in", "prompt=Current Real Server IDs")\r
14 #param("memberIps", "ip[]", "in", "prompt=Updated Real Server IPs (0.0.0.0 means no value)")\r
15 #param("memberWeights", "int[]", "in", "prompt=Real Server Weights")\r
16 #param("memberPorts", "int[]", "in", "prompt=Real Server Ports")\r
17 #param("memberAdminStates", "bool[]", "in", "prompt=Real Server Admin States")\r
18 \r
19 #param("realServerIds", "int[]", "out")\r
20 \r
21 ## implementation\r
22 \r
23 #set($currRealServers={})\r
24 ## calculate the current list of servers connected to the group\r
25 #foreach ($serverId in $curRealServerIds)\r
26     #if($serverId>0)\r
27         #set($rse = $adc.newBean("/c/slb/real"))\r
28         #set($rse.Index = $serverId)\r
29         #set($rse2 = $adc.read($rse))\r
30         #if ($adc.isNull($rse2))\r
31             #error ("Server $serverId was not found")\r
32         #end\r
33         #set($key="#generate_key($rse2)")\r
34         #set($key=$key.trim())\r
35         #set($addStatus=$currRealServers.put($key, $serverId))\r
36     #end\r
37 #end\r
38 \r
39 #set($newRealServers={})\r
40 #set($memberIndex=0)\r
41 ## calculate the new list of servers connected to the group\r
42 #foreach ($memberIp in $memberIps)\r
43     #if($memberIp!=$NO_IP)\r
44         #set($memberPort=$memberPorts[$memberIndex])\r
45         #set($key="#generate_key2($memberIp, $memberPort)")\r
46         #set($key=$key.trim())\r
47         #set($addStatus=$newRealServers.put($key, $memberIndex))\r
48     #end\r
49     #set($memberIndex=$memberIndex+1)\r
50 #end\r
51 \r
52 #set($toUpdateRealServers={})\r
53 #set($addStatus=$toUpdateRealServers.putAll($currRealServers))\r
54 #set($addStatus=$toUpdateRealServers.keySet().retainAll($newRealServers.keySet()))\r
55 #log("Real servers to be updated: $toUpdateRealServers")\r
56 #foreach ($entry in $toUpdateRealServers.entrySet())\r
57     #set($updateId=$entry.getValue())\r
58     #set($updateKey=$entry.getKey())\r
59     #set($memberIndex=$newRealServers.get($updateKey))\r
60     #set($memberWeight=$memberWeights[$memberIndex])\r
61     #set($memberAdminState=$memberAdminStates[$memberIndex])\r
62 \r
63 /c/slb/real $updateId\r
64     #print_weight($memberWeight)\r
65     #os_print_bool_to_ena_dis($memberAdminState)\r
66 \r
67 #end\r
68 \r
69 #set($createId=0)\r
70 #set($toCreateRealServers={})\r
71 #set($addStatus=$toCreateRealServers.putAll($newRealServers))\r
72 #set($addStatus=$toCreateRealServers.keySet().removeAll($currRealServers.keySet()))\r
73 #log("Real servers to be created: $toCreateRealServers")\r
74 #foreach ($entry in $toCreateRealServers.entrySet())\r
75     #set($createId=$adc.getFreeIndex("/c/slb/real", $createId))\r
76     #set($memberIndex=$entry.getValue())\r
77     #set($memberWeight=$memberWeights[$memberIndex])\r
78     #set($memberPort=$memberPorts[$memberIndex])\r
79     #set($memberIp=$memberIps[$memberIndex])\r
80     #set($memberIpVer="#os_get_ip_version($memberIp)")\r
81     #set($memberIpVer=$memberIpVer.trim())\r
82     #set($memberAdminState=$memberAdminStates[$memberIndex])\r
83 \r
84 /c/slb/real $createId\r
85     ipver   $memberIpVer\r
86     rip     $memberIp\r
87     #print_weight($memberWeight)\r
88     addport $memberPort\r
89     #os_print_bool_to_ena_dis($memberAdminState)\r
90 \r
91 /c/slb/group $groupId\r
92     ipver $memberIpVer\r
93     add $createId\r
94 \r
95 #end\r
96 \r
97 #set($toDelRealServers={})\r
98 #set($addStatus=$toDelRealServers.putAll($currRealServers))\r
99 #set($addStatus=$toDelRealServers.keySet().removeAll($newRealServers.keySet()))\r
100 #log("Real servers to be deleted: $toDelRealServers")\r
101 #foreach ($delId in $toDelRealServers.values())\r
102 /c/slb/group $groupId\r
103     rem $delId\r
104 \r
105 /c/slb/real $delId\r
106     del\r
107 \r
108 #end\r
109 \r
110 #set($realServerIds = [])\r
111 #set($group1 = $adc.newBean("/c/slb/group"))\r
112 #set($group1.Index = $groupId)\r
113 #set($group2 = $adc.read($group1))\r
114 #set($realServerIds=$adc.readNumbersFromBitmapPlusOne($group2.RealServers))\r
115 \r
116 \r
117 #macro(generate_key, $rsBean)\r
118     #set($ret_key="")\r
119     #if ($rsBean.IpVer == "IPV4")\r
120         #set($ret_key=$ret_key+$rsBean.IpAddr)\r
121     #else\r
122         #set($ret_key=$ret_key+$rsBean.Ipv6Addr)\r
123     #end\r
124     #set($rports=[])\r
125     #set($dummy="#get_real_server_rports($rsBean.Index, $rports)")\r
126     #foreach($rport in $rports)\r
127         #set($ret_key=$ret_key+"-"+$rport)\r
128     #end\r
129 \r
130     $ret_key\r
131 #end\r
132 \r
133 #macro(generate_key2, $ip_address, $rport)\r
134     #set($ret_key="")\r
135     #set($ret_key=$ret_key + $ip_address + "-" + $rport)\r
136     $ret_key\r
137 #end\r
138 \r
139 #macro(get_real_server_rports, $rs_id, $rports)\r
140     #set($pe = $adc.newBean('SlbNewCfgRealServPortEntry'))\r
141     #set($pe.Index=1)\r
142     #set($pe.RealServIndex= $rs_id)\r
143     #set($pei = $adc.read($pe))\r
144     #if($adc.isNotNull($pei))\r
145         #set($dummy=$rports.add($pei.RealPort))\r
146     #else\r
147         #set($dummy=$rports.add(0))\r
148     #end\r
149 #end\r
150 \r
151 #macro(print_weight, $weight)\r
152     #set($weight=1+$weight/5)\r
153     weight  $weight\r
154 #end\r
155 \r
156 \r