~frbayart/charms/trusty/mesos-master/trunk

« back to all changes in this revision

Viewing changes to hooks/mesos-masters-relation-departed

  • Committer: Francois Bayart
  • Date: 2016-04-07 18:34:21 UTC
  • Revision ID: francois.bayart@data-fellas.guru-20160407183421-nm09uhq4qbwanjq5
InitialĀ FORKEDĀ charm

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/bin/bash
 
2
# This must be renamed to the name of the relation. The goal here is to
 
3
# affect any change needed by relationships being formed, modified, or broken
 
4
# This script should be idempotent.
 
5
set -ex
 
6
 
 
7
status-set maintenance "relations changed"
 
8
 
 
9
patt='([[:digit:]]+)'
 
10
[[ $JUJU_UNIT_NAME =~ $patt ]] && unit_no=${BASH_REMATCH[1]}
 
11
let unit_no+=1
 
12
 
 
13
sudo rm -f /etc/resolv.conf
 
14
sudo cp /etc/resolv.conf.backup /etc/resolv.conf
 
15
 
 
16
# Config Zookeeper
 
17
sudo sh -c "echo 'tickTime=`config-get zookeeper_tickTime`' > /etc/zookeeper/conf/zoo.cfg"
 
18
sudo sh -c "echo 'initLimit=`config-get zookeeper_initLimit`' >> /etc/zookeeper/conf/zoo.cfg"
 
19
sudo sh -c "echo 'syncLimit=`config-get zookeeper_syncLimit`' >> /etc/zookeeper/conf/zoo.cfg"
 
20
sudo sh -c "echo 'dataDir=`config-get zookeeper_dataDir`' >> /etc/zookeeper/conf/zoo.cfg"
 
21
sudo sh -c "echo 'clientPort=`config-get zookeeper_port`' >> /etc/zookeeper/conf/zoo.cfg"
 
22
 
 
23
if [ -z `relation-ids` ]
 
24
then
 
25
        juju-log "Running mesos-master in standalone mode"
 
26
 
 
27
        # Config mesos-master
 
28
        sudo sh -c "echo `config-get zookeeper` > /etc/mesos/zk"
 
29
        sudo sh -c "echo `config-get quorum` > /etc/mesos-master/quorum"
 
30
else
 
31
        # Config Zookeeper
 
32
        server_arr[0]="server.${unit_no}=`unit-get private-address`:2888:3888"
 
33
 
 
34
        for member in `relation-ids`
 
35
    do  
 
36
        juju-log "Adding $member to zokeeper quorum"
 
37
        [[ ${member} =~ $patt ]] && member_id=${BASH_REMATCH[1]}
 
38
        let member_id+=1
 
39
        member_hostname=`relation-get -r ${member} private-address`
 
40
                server_arr=("${server_arr[@]}" "server.${member_id}=${member_hostname}:2888:3888")
 
41
    done
 
42
 
 
43
    for server_line in "${server_arr[@]}"
 
44
    do
 
45
        sudo sh -c "echo ${server_line} >> /etc/zookeeper/conf/zoo.cfg"
 
46
    done
 
47
 
 
48
    # Config mesos-master
 
49
        sudo sh -c "echo $JUJU_UNIT_NAME > /etc/mesos-master/hostname"
 
50
        sudo sh -c "echo `unit-get private-address` > /etc/mesos-master/ip"
 
51
    zookeeper="zk://localhost:2181"
 
52
        quorum=1
 
53
        for member in `relation-ids`
 
54
    do  
 
55
        juju-log "Adding $member to mesos-master quorum"
 
56
                zookeeper="$zookeeper,`relation-get -r ${member} private-address`:2181"
 
57
                ((quorum++))
 
58
    done
 
59
 
 
60
        zookeeper="$zookeeper/mesos"
 
61
        let quorum=($quorum+2-1)/2
 
62
        sudo sh -c "echo ${quorum} > /etc/mesos-master/quorum"
 
63
        sudo sh -c "echo $zookeeper > /etc/mesos/zk"
 
64
 
 
65
        # Config resolve.conf
 
66
        if [ `config-get mesos-dns` = "True" ]
 
67
        then
 
68
                for member in `relation-ids`
 
69
                do
 
70
                        if ![ -z `relation-get mesos-dns ${member}` ]
 
71
                        then
 
72
                                sudo sed -i "1s/^/nameserver `relation-get -r ${member} private-address`\n /" /etc/resolv.conf
 
73
                        fi
 
74
                done
 
75
        fi
 
76
fi
 
77
 
 
78
sudo sh -c "echo $zookeeper > /etc/mesos/zk"
 
79
 
 
80
# Config mesos-dns
 
81
sudo rm -f /etc/resolv.conf
 
82
sudo cp /etc/resolv.conf.backup /etc/resolv.conf
 
83
 
 
84
if [ `config-get mesos-dns` = "True" ]
 
85
then
 
86
        httpon=`config-get dns_httpon`
 
87
        dsnon=`config-get dns_dsnon`
 
88
        externalon=`config-get dns_externalon`
 
89
        
 
90
        sudo sh -c "echo '{' > /usr/local/mesos-dns/config.json"
 
91
        sudo sh -c "echo '  \"zk\": \"${zookeeper}\",' >> /usr/local/mesos-dns/config.json"
 
92
        sudo sh -c "echo '  \"refreshSeconds\": `config-get dns_refreshSeconds`,' >> /usr/local/mesos-dns/config.json"
 
93
        sudo sh -c "echo '  \"ttl\": `config-get dns_ttl`,' >> /usr/local/mesos-dns/config.json"
 
94
        sudo sh -c "echo '  \"domain\": \"`config-get dns_domain`\",' >> /usr/local/mesos-dns/config.json"
 
95
        sudo sh -c "echo '  \"port\": `config-get dns_port`,' >> /usr/local/mesos-dns/config.json"
 
96
        sudo sh -c "echo '  \"resolvers\": [\"`unit-get private-address`\", \"8.8.8.8\"],' >> /usr/local/mesos-dns/config.json"
 
97
        sudo sh -c "echo '  \"timeout\": `config-get dns_timeout`,' >> /usr/local/mesos-dns/config.json"
 
98
        sudo sh -c "echo '  \"httpon\": ${httpon,,},' >> /usr/local/mesos-dns/config.json"
 
99
        sudo sh -c "echo '  \"dsnon\": ${dsnon,,},' >> /usr/local/mesos-dns/config.json"
 
100
        sudo sh -c "echo '  \"httpport\": `config-get dns_httpport`,' >> /usr/local/mesos-dns/config.json"
 
101
        sudo sh -c "echo '  \"externalon\": ${externalon,,},' >> /usr/local/mesos-dns/config.json"
 
102
        sudo sh -c "echo '  \"listener\": \"`config-get dns_listener`\",' >> /usr/local/mesos-dns/config.json"
 
103
        sudo sh -c "echo '  \"SOAMname\": \"`config-get dns_SOAMname`\",' >> /usr/local/mesos-dns/config.json"
 
104
        sudo sh -c "echo '  \"SOARname\": \"`config-get dns_SOARname`\",' >> /usr/local/mesos-dns/config.json"
 
105
        sudo sh -c "echo '  \"SOARefresh\": `config-get dns_SOARefresh`,' >> /usr/local/mesos-dns/config.json"
 
106
        sudo sh -c "echo '  \"SOARetry\": `config-get dns_SOARetry`,' >> /usr/local/mesos-dns/config.json"
 
107
        sudo sh -c "echo '  \"SOAExpire\": `config-get dns_SOAExpire`,' >> /usr/local/mesos-dns/config.json"
 
108
        sudo sh -c "echo '  \"SOAMinttl\": `config-get dns_SOAMinttl`,' >> /usr/local/mesos-dns/config.json"
 
109
        sudo sh -c "echo '  \"email\": \"root.mesos-dns.mesos\"' >> /usr/local/mesos-dns/config.json"
 
110
        sudo sh -c "echo '}' >> /usr/local/mesos-dns/config.json"
 
111
 
 
112
        for member in `relation-ids`
 
113
        do
 
114
                if ![ -z `relation-get -r ${member} mesos-dns` ]
 
115
                then
 
116
                        sudo sed -i "1s/^/nameserver `relation-get private-address ${member}`\n /" /etc/resolv.conf
 
117
                fi
 
118
        done
 
119
 
 
120
        # Config resolve.conf
 
121
        sudo sed -i "1s/^/nameserver `unit-get private-address`\n /" /etc/resolv.conf
 
122
fi
 
123
 
 
124
# Restart services
 
125
sudo service zookeeper restart
 
126
sudo service mesos-master restart
 
127
sudo service marathon restart
 
128
 
 
129
if [ `config-get mesos-slave` = "True" ]
 
130
then
 
131
        sudo service mesos-slave restart
 
132
        sudo service docker restart
 
133
fi
 
134
 
 
135
if [ `config-get mesos-dns` = "True" ]
 
136
then
 
137
        sudo service mesos-dns restart
 
138
fi
 
139
 
 
140
status-set active
 
 
b'\\ No newline at end of file'