Merge "Auto Generated INFO.yaml file"
[joid.git] / ci / depMAAS.py
1 #!/usr/bin/python
2 # -*- coding: utf-8 -*-
3
4 """
5 This script generates a maas deployer config based on lab config file.
6
7 Parameters:
8  -l, --lab      : lab config file
9 """
10
11 from optparse import OptionParser
12 from jinja2 import Environment, FileSystemLoader
13 from distutils.version import LooseVersion, StrictVersion
14 import os
15 import subprocess
16 import yaml
17 from pprint import pprint as pp
18 import socket
19 import fcntl
20 import struct
21
22 #
23 # Parse parameters
24 #
25
26 parser = OptionParser()
27 parser.add_option("-l", "--lab", dest="lab", help="lab config file")
28 (options, args) = parser.parse_args()
29 labconfig_file = options.lab
30
31 #
32 # Set Path and configs path
33 #
34 TPL_DIR = os.path.dirname(os.path.abspath(__file__))+'/config_tpl/maas_tpl'
35
36 HOME = os.environ['HOME']
37 USER = os.environ['USER']
38
39 #
40 # Prepare variables
41 #
42
43 # Prepare a storage for passwords
44 passwords_store = dict()
45
46 #
47 # Local Functions
48 #
49
50
51 def load_yaml(filepath):
52     """Load YAML file"""
53     with open(filepath, 'r') as stream:
54         try:
55             return yaml.load(stream)
56         except yaml.YAMLError as exc:
57             print(exc)
58
59
60 def get_ip_address(ifname):
61     """Get local IP"""
62     s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
63     return socket.inet_ntoa(fcntl.ioctl(
64         s.fileno(),
65         0x8915,  # SIOCGIFADDR
66         struct.pack('256s', bytes(ifname.encode('utf-8')[:15]))
67     )[20:24])
68
69
70 #
71 # Config import
72 #
73
74 def installMAAS():
75     subprocess.call(["echo", i], shell=True)
76
77 def configMAAS():
78     
79     
80 # Create the jinja2 environment.
81 env = Environment(loader=FileSystemLoader(TPL_DIR),
82                   trim_blocks=True)
83 template = env.get_template('deployment.yaml')
84
85 # Render the template
86 output = template.render(**config)
87
88 # Check output syntax
89 try:
90     yaml.load(output)
91 except yaml.YAMLError as exc:
92     print(exc)
93
94 # print output
95 print(output)