2 #parse("openstack_l4/openstack_common.vm")
\r
4 #property("summary", "Manage Real IPs - date: [2013-05-13]")
\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
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
19 #param("realServerIds", "int[]", "out")
\r
23 #set($currRealServers={})
\r
24 ## calculate the current list of servers connected to the group
\r
25 #foreach ($serverId in $curRealServerIds)
\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
33 #set($key="#generate_key($rse2)")
\r
34 #set($key=$key.trim())
\r
35 #set($addStatus=$currRealServers.put($key, $serverId))
\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
49 #set($memberIndex=$memberIndex+1)
\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
63 /c/slb/real $updateId
\r
64 #print_weight($memberWeight)
\r
65 #os_print_bool_to_ena_dis($memberAdminState)
\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
84 /c/slb/real $createId
\r
87 #print_weight($memberWeight)
\r
89 #os_print_bool_to_ena_dis($memberAdminState)
\r
91 /c/slb/group $groupId
\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
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
117 #macro(generate_key, $rsBean)
\r
119 #if ($rsBean.IpVer == "IPV4")
\r
120 #set($ret_key=$ret_key+$rsBean.IpAddr)
\r
122 #set($ret_key=$ret_key+$rsBean.Ipv6Addr)
\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
133 #macro(generate_key2, $ip_address, $rport)
\r
135 #set($ret_key=$ret_key + $ip_address + "-" + $rport)
\r
139 #macro(get_real_server_rports, $rs_id, $rports)
\r
140 #set($pe = $adc.newBean('SlbNewCfgRealServPortEntry'))
\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
147 #set($dummy=$rports.add(0))
\r
151 #macro(print_weight, $weight)
\r
152 #set($weight=1+$weight/5)
\r