Statistics
| Branch: | Tag: | Revision:

root / snf-deploy / snfdeploy / fabfile2.py @ d4f28d8f

History | View | Annotate | Download (8.9 kB)

1 3c3bccab Dimitris Aragiorgis
# Too many lines in module pylint: disable-msg=C0302
2 3c3bccab Dimitris Aragiorgis
# Too many arguments (7/5) pylint: disable-msg=R0913
3 3c3bccab Dimitris Aragiorgis
4 3c3bccab Dimitris Aragiorgis
# Copyright (C) 2010, 2011, 2012, 2013 GRNET S.A. All rights reserved.
5 3c3bccab Dimitris Aragiorgis
#
6 3c3bccab Dimitris Aragiorgis
# Redistribution and use in source and binary forms, with or
7 3c3bccab Dimitris Aragiorgis
# without modification, are permitted provided that the following
8 3c3bccab Dimitris Aragiorgis
# conditions are met:
9 3c3bccab Dimitris Aragiorgis
#
10 3c3bccab Dimitris Aragiorgis
#   1. Redistributions of source code must retain the above
11 3c3bccab Dimitris Aragiorgis
#      copyright notice, this list of conditions and the following
12 3c3bccab Dimitris Aragiorgis
#      disclaimer.
13 3c3bccab Dimitris Aragiorgis
#
14 3c3bccab Dimitris Aragiorgis
#   2. Redistributions in binary form must reproduce the above
15 3c3bccab Dimitris Aragiorgis
#      copyright notice, this list of conditions and the following
16 3c3bccab Dimitris Aragiorgis
#      disclaimer in the documentation and/or other materials
17 3c3bccab Dimitris Aragiorgis
#      provided with the distribution.
18 3c3bccab Dimitris Aragiorgis
#
19 3c3bccab Dimitris Aragiorgis
# THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
20 3c3bccab Dimitris Aragiorgis
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 3c3bccab Dimitris Aragiorgis
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 3c3bccab Dimitris Aragiorgis
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A. OR
23 3c3bccab Dimitris Aragiorgis
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24 3c3bccab Dimitris Aragiorgis
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25 3c3bccab Dimitris Aragiorgis
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
26 3c3bccab Dimitris Aragiorgis
# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
27 3c3bccab Dimitris Aragiorgis
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 3c3bccab Dimitris Aragiorgis
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
29 3c3bccab Dimitris Aragiorgis
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 3c3bccab Dimitris Aragiorgis
# POSSIBILITY OF SUCH DAMAGE.
31 3c3bccab Dimitris Aragiorgis
#
32 3c3bccab Dimitris Aragiorgis
# The views and conclusions contained in the software and
33 3c3bccab Dimitris Aragiorgis
# documentation are those of the authors and should not be
34 3c3bccab Dimitris Aragiorgis
# interpreted as representing official policies, either expressed
35 3c3bccab Dimitris Aragiorgis
# or implied, of GRNET S.A.
36 3c3bccab Dimitris Aragiorgis
37 3c3bccab Dimitris Aragiorgis
"""
38 3c3bccab Dimitris Aragiorgis
Fabric file for snf-deploy
39 3c3bccab Dimitris Aragiorgis

40 3c3bccab Dimitris Aragiorgis
"""
41 3c3bccab Dimitris Aragiorgis
42 3c3bccab Dimitris Aragiorgis
from __future__ import with_statement
43 3c3bccab Dimitris Aragiorgis
from fabric.api import hide, env, settings, local, roles, execute
44 3c3bccab Dimitris Aragiorgis
from fabric.operations import run, put, get
45 3c3bccab Dimitris Aragiorgis
import fabric
46 3c3bccab Dimitris Aragiorgis
import re
47 3c3bccab Dimitris Aragiorgis
import os
48 3c3bccab Dimitris Aragiorgis
import shutil
49 3c3bccab Dimitris Aragiorgis
import tempfile
50 3c3bccab Dimitris Aragiorgis
import ast
51 3c3bccab Dimitris Aragiorgis
from snfdeploy.lib import debug, Conf, Env, disable_color
52 3c3bccab Dimitris Aragiorgis
from snfdeploy.utils import *
53 3c3bccab Dimitris Aragiorgis
from snfdeploy import massedit
54 3c3bccab Dimitris Aragiorgis
from snfdeploy.components import *
55 3c3bccab Dimitris Aragiorgis
from snfdeploy import components
56 3c3bccab Dimitris Aragiorgis
57 3c3bccab Dimitris Aragiorgis
58 3c3bccab Dimitris Aragiorgis
def setup_env(args, localenv):
59 3c3bccab Dimitris Aragiorgis
    """Setup environment"""
60 3c3bccab Dimitris Aragiorgis
    print("Loading configuration for synnefo...")
61 3c3bccab Dimitris Aragiorgis
62 3c3bccab Dimitris Aragiorgis
    env.env = localenv
63 3c3bccab Dimitris Aragiorgis
64 3c3bccab Dimitris Aragiorgis
    env.target_node = args.node
65 3c3bccab Dimitris Aragiorgis
    env.target_component = args.component
66 3c3bccab Dimitris Aragiorgis
    env.target_method = args.method
67 3c3bccab Dimitris Aragiorgis
    env.target_role = args.role
68 3c3bccab Dimitris Aragiorgis
    env.dry_run = args.dry_run
69 3c3bccab Dimitris Aragiorgis
    env.local = args.autoconf
70 3c3bccab Dimitris Aragiorgis
    env.key_inject = args.key_inject
71 3c3bccab Dimitris Aragiorgis
    env.password = env.env.password
72 3c3bccab Dimitris Aragiorgis
    env.user = env.env.user
73 3c3bccab Dimitris Aragiorgis
    env.shell = "/bin/bash -c"
74 3c3bccab Dimitris Aragiorgis
    env.key_filename = args.ssh_key
75 3c3bccab Dimitris Aragiorgis
    env.jsonfile = "/tmp/service.json"
76 3c3bccab Dimitris Aragiorgis
    env.force = args.force
77 3c3bccab Dimitris Aragiorgis
78 3c3bccab Dimitris Aragiorgis
    if args.disable_colors:
79 3c3bccab Dimitris Aragiorgis
        disable_color()
80 3c3bccab Dimitris Aragiorgis
81 3c3bccab Dimitris Aragiorgis
    env.roledefs = {
82 3c3bccab Dimitris Aragiorgis
        "accounts": [env.env.accounts.ip],
83 3c3bccab Dimitris Aragiorgis
        "cyclades": [env.env.cyclades.ip],
84 3c3bccab Dimitris Aragiorgis
        "pithos": [env.env.pithos.ip],
85 3c3bccab Dimitris Aragiorgis
        "cms": [env.env.cms.ip],
86 3c3bccab Dimitris Aragiorgis
        "mq": [env.env.mq.ip],
87 3c3bccab Dimitris Aragiorgis
        "db": [env.env.db.ip],
88 3c3bccab Dimitris Aragiorgis
        "ns": [env.env.ns.ip],
89 3c3bccab Dimitris Aragiorgis
        "client": [env.env.client.ip],
90 3c3bccab Dimitris Aragiorgis
        "stats": [env.env.stats.ip],
91 3c3bccab Dimitris Aragiorgis
        "nfs": [env.env.nfs.ip],
92 3c3bccab Dimitris Aragiorgis
    }
93 3c3bccab Dimitris Aragiorgis
94 3c3bccab Dimitris Aragiorgis
    env.enable_lvm = False
95 3c3bccab Dimitris Aragiorgis
    env.enable_drbd = False
96 3c3bccab Dimitris Aragiorgis
    if ast.literal_eval(env.env.create_extra_disk) and env.env.extra_disk:
97 3c3bccab Dimitris Aragiorgis
        env.enable_lvm = True
98 3c3bccab Dimitris Aragiorgis
        env.enable_drbd = True
99 3c3bccab Dimitris Aragiorgis
100 3c3bccab Dimitris Aragiorgis
    env.roledefs.update({
101 3c3bccab Dimitris Aragiorgis
        "ganeti": env.env.cluster_ips,
102 3c3bccab Dimitris Aragiorgis
        "master": [env.env.master.ip],
103 3c3bccab Dimitris Aragiorgis
    })
104 3c3bccab Dimitris Aragiorgis
105 3c3bccab Dimitris Aragiorgis
106 3c3bccab Dimitris Aragiorgis
#
107 3c3bccab Dimitris Aragiorgis
#
108 3c3bccab Dimitris Aragiorgis
# Those methods retrieve info from existing installation and update env
109 3c3bccab Dimitris Aragiorgis
#
110 3c3bccab Dimitris Aragiorgis
#
111 3c3bccab Dimitris Aragiorgis
@roles("db")
112 3c3bccab Dimitris Aragiorgis
def update_env_with_user_info():
113 3c3bccab Dimitris Aragiorgis
    user_email = env.env.user_email
114 3c3bccab Dimitris Aragiorgis
    result = RunComponentMethod(DB, "get_user_info_from_db")
115 3c3bccab Dimitris Aragiorgis
    r = re.compile(r"(\d+)[ |]*(\S+)[ |]*(\S+)[ |]*" + user_email, re.M)
116 3c3bccab Dimitris Aragiorgis
    match = r.search(result)
117 3c3bccab Dimitris Aragiorgis
    if env.dry_run:
118 3c3bccab Dimitris Aragiorgis
        env.user_id, env.user_auth_token, env.user_uuid = \
119 3c3bccab Dimitris Aragiorgis
              ("dummy_uid", "dummy_user_auth_token", "dummy_user_uuid")
120 3c3bccab Dimitris Aragiorgis
    else:
121 3c3bccab Dimitris Aragiorgis
        env.user_id, env.user_auth_token, env.user_uuid = match.groups()
122 3c3bccab Dimitris Aragiorgis
123 3c3bccab Dimitris Aragiorgis
124 3c3bccab Dimitris Aragiorgis
@roles("accounts")
125 3c3bccab Dimitris Aragiorgis
def update_env_with_service_info(service="pithos"):
126 3c3bccab Dimitris Aragiorgis
    result = RunComponentMethod(Astakos, "get_services")
127 3c3bccab Dimitris Aragiorgis
    r = re.compile(r"(\d+)[ ]*%s[ ]*(\S+)" % service, re.M)
128 d4f28d8f Dimitris Aragiorgis
    match = r.search(result)
129 3c3bccab Dimitris Aragiorgis
    if env.dry_run:
130 3c3bccab Dimitris Aragiorgis
        env.service_id, env.service_token = \
131 3c3bccab Dimitris Aragiorgis
            ("dummy_service_id", "dummy_service_token")
132 3c3bccab Dimitris Aragiorgis
    else:
133 3c3bccab Dimitris Aragiorgis
        env.service_id, env.service_token = match.groups()
134 3c3bccab Dimitris Aragiorgis
135 3c3bccab Dimitris Aragiorgis
136 3c3bccab Dimitris Aragiorgis
@roles("cyclades")
137 3c3bccab Dimitris Aragiorgis
def update_env_with_backend_info():
138 3c3bccab Dimitris Aragiorgis
    cluster_name = env.env.cluster.fqdn
139 3c3bccab Dimitris Aragiorgis
    result = RunComponentMethod(Cyclades, "list_backends")
140 3c3bccab Dimitris Aragiorgis
    r = re.compile(r"(\d+)[ ]*%s.*" % cluster_name, re.M)
141 3c3bccab Dimitris Aragiorgis
    match = r.search(result)
142 3c3bccab Dimitris Aragiorgis
    if env.dry_run:
143 3c3bccab Dimitris Aragiorgis
        env.backend_id = "dummy_backend_id"
144 3c3bccab Dimitris Aragiorgis
    else:
145 3c3bccab Dimitris Aragiorgis
        env.backend_id, = match.groups()
146 3c3bccab Dimitris Aragiorgis
147 d4f28d8f Dimitris Aragiorgis
148 3c3bccab Dimitris Aragiorgis
#
149 3c3bccab Dimitris Aragiorgis
#
150 3c3bccab Dimitris Aragiorgis
# Those methods act on components after their basic setup
151 3c3bccab Dimitris Aragiorgis
#
152 3c3bccab Dimitris Aragiorgis
#
153 3c3bccab Dimitris Aragiorgis
@roles("cyclades")
154 3c3bccab Dimitris Aragiorgis
def add_ganeti_backend():
155 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Cyclades, "add_backend")
156 3c3bccab Dimitris Aragiorgis
    execute(update_env_with_backend_info)
157 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Cyclades, "undrain_backend")
158 3c3bccab Dimitris Aragiorgis
159 3c3bccab Dimitris Aragiorgis
160 3c3bccab Dimitris Aragiorgis
@roles("accounts")
161 3c3bccab Dimitris Aragiorgis
def add_synnefo_user():
162 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Astakos, "add_user")
163 3c3bccab Dimitris Aragiorgis
164 3c3bccab Dimitris Aragiorgis
165 3c3bccab Dimitris Aragiorgis
@roles("accounts")
166 3c3bccab Dimitris Aragiorgis
def activate_user():
167 3c3bccab Dimitris Aragiorgis
    execute(update_env_with_user_info)
168 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Astakos, "activate_user")
169 3c3bccab Dimitris Aragiorgis
170 3c3bccab Dimitris Aragiorgis
171 3c3bccab Dimitris Aragiorgis
@roles("accounts")
172 3c3bccab Dimitris Aragiorgis
def import_service():
173 3c3bccab Dimitris Aragiorgis
    f = env.jsonfile
174 3c3bccab Dimitris Aragiorgis
    PutToComponent(Astakos, f + ".local", f)
175 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Astakos, "import_service")
176 3c3bccab Dimitris Aragiorgis
177 3c3bccab Dimitris Aragiorgis
178 3c3bccab Dimitris Aragiorgis
@roles("ns")
179 3c3bccab Dimitris Aragiorgis
def update_ns_for_node(node_info):
180 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(NS, "update_ns_for_node", node_info)
181 3c3bccab Dimitris Aragiorgis
182 3c3bccab Dimitris Aragiorgis
183 3c3bccab Dimitris Aragiorgis
@roles("nfs")
184 3c3bccab Dimitris Aragiorgis
def update_exports_for_node(node_info):
185 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(NFS, "update_exports", node_info)
186 3c3bccab Dimitris Aragiorgis
187 3c3bccab Dimitris Aragiorgis
188 3c3bccab Dimitris Aragiorgis
@roles("master")
189 3c3bccab Dimitris Aragiorgis
def add_ganeti_node(node_info):
190 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Master, "add_node", node_info)
191 3c3bccab Dimitris Aragiorgis
192 3c3bccab Dimitris Aragiorgis
193 3c3bccab Dimitris Aragiorgis
@roles("db")
194 3c3bccab Dimitris Aragiorgis
def allow_db_access(node_info):
195 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(DB, "allow_access_in_db", node_info, "all", "trust")
196 3c3bccab Dimitris Aragiorgis
197 3c3bccab Dimitris Aragiorgis
198 3c3bccab Dimitris Aragiorgis
@roles("accounts")
199 3c3bccab Dimitris Aragiorgis
def set_default_quota():
200 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Astakos, "set_default_quota")
201 3c3bccab Dimitris Aragiorgis
202 3c3bccab Dimitris Aragiorgis
203 3c3bccab Dimitris Aragiorgis
@roles("cyclades")
204 3c3bccab Dimitris Aragiorgis
def add_public_networks():
205 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Cyclades, "add_network")
206 3c3bccab Dimitris Aragiorgis
    if ast.literal_eval(env.env.testing_vm):
207 3c3bccab Dimitris Aragiorgis
        RunComponentMethod(Cyclades, "add_network6")
208 3c3bccab Dimitris Aragiorgis
209 3c3bccab Dimitris Aragiorgis
210 3c3bccab Dimitris Aragiorgis
@roles("client")
211 3c3bccab Dimitris Aragiorgis
def add_image():
212 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Kamaki, "fetch_image")
213 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Kamaki, "upload_image")
214 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Kamaki, "register_image")
215 d4f28d8f Dimitris Aragiorgis
216 d4f28d8f Dimitris Aragiorgis
217 3c3bccab Dimitris Aragiorgis
#
218 3c3bccab Dimitris Aragiorgis
#
219 3c3bccab Dimitris Aragiorgis
# Those methods do the basic setup of a synnefo role
220 3c3bccab Dimitris Aragiorgis
#
221 3c3bccab Dimitris Aragiorgis
#
222 3c3bccab Dimitris Aragiorgis
@roles("ns")
223 3c3bccab Dimitris Aragiorgis
def setup_ns_role():
224 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("ns")
225 3c3bccab Dimitris Aragiorgis
226 3c3bccab Dimitris Aragiorgis
227 3c3bccab Dimitris Aragiorgis
@roles("nfs")
228 3c3bccab Dimitris Aragiorgis
def setup_nfs_role():
229 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("nfs")
230 3c3bccab Dimitris Aragiorgis
231 3c3bccab Dimitris Aragiorgis
232 3c3bccab Dimitris Aragiorgis
@roles("db")
233 3c3bccab Dimitris Aragiorgis
def setup_db_role():
234 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("db")
235 3c3bccab Dimitris Aragiorgis
    if ast.literal_eval(env.env.testing_vm):
236 3c3bccab Dimitris Aragiorgis
        RunComponentMethod(DB, "make_db_fast")
237 3c3bccab Dimitris Aragiorgis
238 3c3bccab Dimitris Aragiorgis
239 3c3bccab Dimitris Aragiorgis
@roles("mq")
240 3c3bccab Dimitris Aragiorgis
def setup_mq_role():
241 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("mq")
242 3c3bccab Dimitris Aragiorgis
243 3c3bccab Dimitris Aragiorgis
244 3c3bccab Dimitris Aragiorgis
@roles("accounts")
245 3c3bccab Dimitris Aragiorgis
def setup_astakos_role():
246 3c3bccab Dimitris Aragiorgis
    node_info = get_node_info(env.host)
247 3c3bccab Dimitris Aragiorgis
    execute(allow_db_access, node_info)
248 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("astakos")
249 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Astakos, "export_service")
250 3c3bccab Dimitris Aragiorgis
    f = env.jsonfile
251 3c3bccab Dimitris Aragiorgis
    GetFromComponent(Astakos, f, f + ".local")
252 3c3bccab Dimitris Aragiorgis
    execute(import_service)
253 3c3bccab Dimitris Aragiorgis
254 3c3bccab Dimitris Aragiorgis
255 3c3bccab Dimitris Aragiorgis
@roles("pithos")
256 3c3bccab Dimitris Aragiorgis
def setup_pithos_role():
257 3c3bccab Dimitris Aragiorgis
    node_info = get_node_info(env.host)
258 3c3bccab Dimitris Aragiorgis
    execute(allow_db_access, node_info)
259 3c3bccab Dimitris Aragiorgis
    execute(update_env_with_service_info, "pithos")
260 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("pithos")
261 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Pithos, "export_service")
262 3c3bccab Dimitris Aragiorgis
    f = env.jsonfile
263 3c3bccab Dimitris Aragiorgis
    GetFromComponent(Pithos, f, f + ".local")
264 3c3bccab Dimitris Aragiorgis
    execute(import_service)
265 3c3bccab Dimitris Aragiorgis
266 3c3bccab Dimitris Aragiorgis
267 3c3bccab Dimitris Aragiorgis
@roles("cyclades")
268 3c3bccab Dimitris Aragiorgis
def setup_cyclades_role():
269 3c3bccab Dimitris Aragiorgis
    node_info = get_node_info(env.host)
270 3c3bccab Dimitris Aragiorgis
    execute(allow_db_access, node_info)
271 3c3bccab Dimitris Aragiorgis
    execute(update_env_with_service_info, "cyclades")
272 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("cyclades")
273 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(Cyclades, "export_service")
274 3c3bccab Dimitris Aragiorgis
    f = env.jsonfile
275 3c3bccab Dimitris Aragiorgis
    GetFromComponent(Cyclades, f, f + ".local")
276 3c3bccab Dimitris Aragiorgis
    execute(import_service)
277 3c3bccab Dimitris Aragiorgis
278 3c3bccab Dimitris Aragiorgis
279 3c3bccab Dimitris Aragiorgis
@roles("cms")
280 3c3bccab Dimitris Aragiorgis
def setup_cms_role():
281 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("cms")
282 3c3bccab Dimitris Aragiorgis
283 3c3bccab Dimitris Aragiorgis
284 3c3bccab Dimitris Aragiorgis
@roles("ganeti")
285 3c3bccab Dimitris Aragiorgis
def setup_ganeti_role():
286 3c3bccab Dimitris Aragiorgis
    if not env.host:
287 3c3bccab Dimitris Aragiorgis
        return
288 3c3bccab Dimitris Aragiorgis
    node_info = get_node_info(env.host)
289 3c3bccab Dimitris Aragiorgis
    execute(update_exports_for_node, node_info)
290 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("ganeti")
291 3c3bccab Dimitris Aragiorgis
    execute(add_ganeti_node, node_info)
292 3c3bccab Dimitris Aragiorgis
    #FIXME: prepare_lvm ????
293 3c3bccab Dimitris Aragiorgis
294 3c3bccab Dimitris Aragiorgis
295 3c3bccab Dimitris Aragiorgis
@roles("master")
296 3c3bccab Dimitris Aragiorgis
def setup_master_role():
297 3c3bccab Dimitris Aragiorgis
    node_info = get_node_info(env.host)
298 3c3bccab Dimitris Aragiorgis
    execute(update_exports_for_node, node_info)
299 3c3bccab Dimitris Aragiorgis
    execute(update_ns_for_node, env.env.cluster)
300 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("master")
301 3c3bccab Dimitris Aragiorgis
302 3c3bccab Dimitris Aragiorgis
303 3c3bccab Dimitris Aragiorgis
@roles("stats")
304 3c3bccab Dimitris Aragiorgis
def setup_stats_role():
305 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("stats")
306 3c3bccab Dimitris Aragiorgis
307 3c3bccab Dimitris Aragiorgis
308 3c3bccab Dimitris Aragiorgis
@roles("client")
309 3c3bccab Dimitris Aragiorgis
def setup_client_role():
310 3c3bccab Dimitris Aragiorgis
    execute(update_env_with_user_info)
311 3c3bccab Dimitris Aragiorgis
    SetupSynnefoRole("client")
312 3c3bccab Dimitris Aragiorgis
313 3c3bccab Dimitris Aragiorgis
314 3c3bccab Dimitris Aragiorgis
def setup():
315 3c3bccab Dimitris Aragiorgis
    node_info = get_node_info(env.target_node)
316 3c3bccab Dimitris Aragiorgis
    if not node_info:
317 3c3bccab Dimitris Aragiorgis
        debug("setup", "Please give a valid node identifier")
318 3c3bccab Dimitris Aragiorgis
        return
319 3c3bccab Dimitris Aragiorgis
    execute(update_ns_for_node, node_info)
320 3c3bccab Dimitris Aragiorgis
    env.host = env.host_string = node_info.ip
321 3c3bccab Dimitris Aragiorgis
    if env.target_role:
322 3c3bccab Dimitris Aragiorgis
        SetupSynnefoRole(env.target_role)
323 3c3bccab Dimitris Aragiorgis
        return
324 3c3bccab Dimitris Aragiorgis
    if not env.target_component:
325 3c3bccab Dimitris Aragiorgis
        debug("setup", "Please give a valid Component")
326 3c3bccab Dimitris Aragiorgis
        return
327 3c3bccab Dimitris Aragiorgis
    component_class = getattr(components, env.target_component)
328 3c3bccab Dimitris Aragiorgis
    if not env.target_method:
329 3c3bccab Dimitris Aragiorgis
        debug("setup", "Please give a valid Component method")
330 3c3bccab Dimitris Aragiorgis
        return
331 3c3bccab Dimitris Aragiorgis
    RunComponentMethod(component_class, env.target_method)