summaryrefslogtreecommitdiffstats
path: root/ci/deploy.py
diff options
context:
space:
mode:
authorNarinder Gupta <narinder.gupta@canonical.com>2016-05-17 19:55:56 +0000
committerGerrit Code Review <gerrit@172.30.200.206>2016-05-17 19:55:56 +0000
commita72a52456135c2e298feeef6d75745ed657216c5 (patch)
tree5c0dd4ebf42e010dfd3255f969214056e7ed814f /ci/deploy.py
parent07437a3f83edef9102b526961004b64f93bb9e8b (diff)
parent943a83ac552121d599476661634d250a44be590b (diff)
Merge "added new labconfig file for each lab also the default config file. User can send the url also to deployment.yaml file to the script. If can not copy the file then will use the file from labconfig directory."
Diffstat (limited to 'ci/deploy.py')
-rw-r--r--ci/deploy.py173
1 files changed, 140 insertions, 33 deletions
diff --git a/ci/deploy.py b/ci/deploy.py
index d52bd609..c1a714d8 100644
--- a/ci/deploy.py
+++ b/ci/deploy.py
@@ -1,12 +1,24 @@
import yaml
import pprint
-
-with open('example.yaml', 'r') as f:
- doc = yaml.load(f)
-txt = doc["nodes"][0]["power"]
-
-with open('deployment.yaml', 'r') as ft:
- doc1 = yaml.load(ft)
+import socket
+import fcntl
+import struct
+import os
+import getpass
+
+def get_ip_address(ifname):
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ return socket.inet_ntoa(fcntl.ioctl(
+ s.fileno(),
+ 0x8915, # SIOCGIFADDR
+ struct.pack('256s', ifname[:15])
+ )[20:24])
+
+with open('labconfig.yaml', 'r') as labf:
+ labcfg = yaml.load(labf)
+
+with open('deployment.yaml', 'r') as opnfvf:
+ opnfvcfg = yaml.load(opnfvf)
def setInDict(dataDict, mapList, value):
getFromDict(dataDict, mapList[:-1])[mapList[-1]] = value
@@ -14,46 +26,141 @@ def setInDict(dataDict, mapList, value):
def getFromDict(dataDict, mapList):
return reduce(lambda d, k: d[k], mapList, dataDict)
-if len(doc["nodes"]) > len(doc1["demo-maas"]["maas"]["nodes"]):
- exit 0
+if len(labcfg["labconfig"]["nodes"]) < 3:
+ print("minimum three nodes are needed for opnfv architecture deployment")
+ exit()
+
+# lets modify the maas general settings:
+
+updns = getFromDict(labcfg, ["labconfig","labsettings","upstream_dns"])
+setInDict(opnfvcfg, ["demo-maas", "maas", "settings", "upstream_dns"], updns)
+value = getFromDict(labcfg, ["labconfig","lab_location"])
+setInDict(opnfvcfg, ["demo-maas", "maas", "settings", "maas_name"], value)
+setInDict(opnfvcfg, ["demo-maas", "maas", "name"], "opnfv-"+value)
+
+#lets figure out the interfaces data
+
+ethbrAdm=""
+ethbrAdmin=""
c=0
-while c < len(doc["nodes"]):
+y=0
+z=0
+
+while c < len(labcfg["labconfig"]["bridges"]):
+ brtype = getFromDict(labcfg, ["labconfig","bridges",c,"type"])
+ brname = getFromDict(labcfg, ["labconfig","bridges",c,"bridge"])
+ brcidr = getFromDict(labcfg, ["labconfig","bridges",c,"cidr"])
+ if brtype == "admin":
+ ethbrAdmin = getFromDict(labcfg, ["labconfig","bridges",c,"bridge"])
+ brgway = getFromDict(labcfg, ["labconfig","bridges",c,"gateway"])
+ tmpcidr = brcidr[:-4]
+ setInDict(opnfvcfg, ["demo-maas", "maas", "ip_address"], tmpcidr+"5")
+ opnfvcfg["demo-maas"]["maas"]["interfaces"][y] = "bridge="+brname+",model=virtio"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["device"] = "eth"+str(y)
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["ip"] = tmpcidr+"5"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["subnet_mask"] = "255.255.255.0"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["broadcast_ip"] = tmpcidr+"255"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["router_ip"] = brgway
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["static_range"]["low"] = tmpcidr+"50"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["static_range"]["high"] = tmpcidr+"80"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["dynamic_range"]["low"] = tmpcidr+"81"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["dynamic_range"]["high"] = tmpcidr+"250"
+ opnfvcfg["demo-maas"]["juju-bootstrap"]["interfaces"][z] = "bridge="+brname+",model=virtio"
+ ethbrAdm = ('auto lo\n'
+ ' iface lo inet loopback\n\n'
+ 'auto eth'+str(y)+'\n'
+ ' iface eth'+str(y)+' inet static\n'
+ ' address '+tmpcidr+'5\n'
+ ' netmask 255.255.255.0\n'
+ ' gateway '+brgway+'\n'
+ ' dns-nameservers '+updns+' '+tmpcidr+'5 127.0.0.1\n')
+ z=z+1
+ y=y+1
+ elif brtype:
+ opnfvcfg["demo-maas"]["maas"]["interfaces"].append("bridge="+brname+",model=virtio")
+ brgway = getFromDict(labcfg, ["labconfig","bridges",c,"gateway"])
+ if brtype != "external":
+ tmpcidr = brcidr[:-4]
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["device"] = "eth"+str(y)
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["ip"] = tmpcidr+"5"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["subnet_mask"] = "255.255.255.0"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["broadcast_ip"] = tmpcidr+"255"
+ if brgway:
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["router_ip"] = brgway
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["management"] = 1
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["static_range"]["low"] = tmpcidr+"20"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["static_range"]["high"] = tmpcidr+"150"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["dynamic_range"]["low"] = tmpcidr+"151"
+ opnfvcfg["demo-maas"]["maas"]["node_group_ifaces"][y]["dynamic_range"]["high"] = tmpcidr+"200"
+ ethbrAdm = (ethbrAdm+'\n'
+ 'auto eth'+str(y)+'\n'
+ ' iface eth'+str(y)+' inet static\n'
+ ' address '+tmpcidr+'5\n'
+ ' netmask 255.255.255.0\n')
+ if brtype == "public":
+ opnfvcfg["demo-maas"]["juju-bootstrap"]["interfaces"].append("bridge="+brname+",model=virtio")
+ z=z+1
+ if brtype == "external":
+ ipaddress = getFromDict(labcfg, ["labconfig","bridges",c,"ipaddress"])
+ ethbrAdm = (ethbrAdm+'\n'
+ 'auto eth'+str(y)+'\n'
+ ' iface eth'+str(y)+' inet static\n'
+ ' address '+ipaddress+'\n'
+ ' netmask 255.255.255.0\n')
+ opnfvcfg["demo-maas"]["juju-bootstrap"]["interfaces"].append("bridge="+brname+",model=virtio")
+ z=z+1
+ y=y+1
+
- value = getFromDict(doc, ["nodes",c, "name"])
- setInDict(doc1, ["demo-maas", "maas", "nodes", c, "name"], value)
+ c=c+1
- value = getFromDict(doc, ["nodes",c, "tags"])
- setInDict(doc1, ["demo-maas", "maas", "nodes", c, "tags"], value)
+setInDict(opnfvcfg, ["demo-maas", "maas", "network_config"], ethbrAdm)
- value = getFromDict(doc, ["nodes",c, "arch"])
- if value == "x86_64":
- value="amd64/generic"
- setInDict(doc1, ["demo-maas", "maas", "nodes", c, "architecture"], value)
+# lets modify the maas general settings:
+value = get_ip_address(ethbrAdmin)
+value = "qemu+ssh://"+getpass.getuser()+"@"+value+"/system"
+setInDict(opnfvcfg, ["demo-maas", "maas", "virsh", "uri"], value)
- value = getFromDict(doc, ["nodes",c, "mac_address"])
- setInDict(doc1, ["demo-maas", "maas", "nodes", c, "mac_addresses"], value)
+#lets insert the node details here:
+c=0
- value = getFromDict(doc, ["nodes",c, "power", "type"])
- setInDict(doc1, ["demo-maas", "maas", "nodes", c, "power", "type"], value)
+while c < len(labcfg["labconfig"]["nodes"]):
+ # setup value of name and tags accordigly
+ value = getFromDict(labcfg, ["labconfig","nodes",c, "type"])
+ namevalue = "node" + str(c+1) + "-" + value
+ opnfvcfg["demo-maas"]["maas"]["nodes"][c]["name"] = namevalue
+ opnfvcfg["demo-maas"]["maas"]["nodes"][c]["tags"] = value
+ # setup value of architecture
+ value = getFromDict(labcfg, ["labconfig","nodes",c, "architecture"])
+ if value == "x86_64":
+ value="amd64/generic"
+ opnfvcfg["demo-maas"]["maas"]["nodes"][c]["architecture"] = value
+
+ # setup mac_addresses
+ value = getFromDict(labcfg, ["labconfig","nodes",c, "pxe_mac_address"])
+ opnfvcfg["demo-maas"]["maas"]["nodes"][c]["mac_addresses"] = value
+
+ value = getFromDict(labcfg, ["labconfig","nodes",c, "power", "type"])
+ opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["type"] = value
if value == "wakeonlan":
- value = getFromDict(doc, ["nodes",c, "power", "mac_address"])
- setInDict(doc1, ["demo-maas", "maas", "nodes", c, "power", "mac_address"], value)
+ value = getFromDict(labcfg, ["labconfig","nodes",c, "power", "mac_address"])
+ opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["mac_address"] = value
if value == "ipmi":
- value = getFromDict(doc, ["nodes",c, "power", "address"])
- setInDict(doc1, ["demo-maas", "maas", "nodes", c, "power", "address"], value)
-
- value = getFromDict(doc, ["nodes",c, "power", "user"])
- setInDict(doc1, ["demo-maas", "maas", "nodes", c, "power", "user"], value)
+ value = getFromDict(labcfg, ["labconfig","nodes",c, "power", "address"])
+ opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["address"] = value
+ value = getFromDict(labcfg, ["labconfig","nodes",c, "power", "user"])
+ opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["user"] = value
+ value = getFromDict(labcfg, ["labconfig","nodes",c, "power", "pass"])
+ opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["pass"] = value
+ opnfvcfg["demo-maas"]["maas"]["nodes"][c]["power"]["driver"] = "LAN_2_0"
- value = getFromDict(doc, ["nodes",c, "power", "pass"])
- setInDict(doc1, ["demo-maas", "maas", "nodes", c, "power", "pass"], value)
c=c+1
-with open('deployment.yaml', 'w') as ft:
- yaml.dump(doc1, ft)
+with open('deployment.yaml', 'w') as opnfvf:
+ yaml.dump(opnfvcfg, opnfvf, default_flow_style=False)