aboutsummaryrefslogtreecommitdiffstats
path: root/deploy/adapters/ansible/roles/setup-network
diff options
context:
space:
mode:
Diffstat (limited to 'deploy/adapters/ansible/roles/setup-network')
-rw-r--r--deploy/adapters/ansible/roles/setup-network/files/setup_networks/check_network.py71
-rw-r--r--deploy/adapters/ansible/roles/setup-network/files/setup_networks/log.py52
-rwxr-xr-xdeploy/adapters/ansible/roles/setup-network/files/setup_networks/net_init24
-rw-r--r--deploy/adapters/ansible/roles/setup-network/files/setup_networks/setup_networks.py100
-rw-r--r--deploy/adapters/ansible/roles/setup-network/tasks/main.yml87
-rw-r--r--deploy/adapters/ansible/roles/setup-network/templates/my_configs.debian14
-rw-r--r--deploy/adapters/ansible/roles/setup-network/templates/network.cfg5
7 files changed, 0 insertions, 353 deletions
diff --git a/deploy/adapters/ansible/roles/setup-network/files/setup_networks/check_network.py b/deploy/adapters/ansible/roles/setup-network/files/setup_networks/check_network.py
deleted file mode 100644
index be3c552a..00000000
--- a/deploy/adapters/ansible/roles/setup-network/files/setup_networks/check_network.py
+++ /dev/null
@@ -1,71 +0,0 @@
-##############################################################################
-# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-import yaml
-import sys
-import subprocess
-
-import log as logging
-
-LOG = logging.getLogger("net-check")
-
-
-def is_ip_reachable(ip):
- cmd = "ping -c 2 %s" % ip
- process = subprocess.Popen(
- cmd,
- stdout=subprocess.PIPE,
- stderr=None,
- shell=True)
-
- output = process.communicate()[0]
- if " 0% packet loss" in output:
- LOG.info("%s is reachable", ip)
- elif "100% packet loss" in output:
- LOG.error("%s is unreachable" % (ip))
- return False
- else:
- LOG.warn("%r", output)
-
- return True
-
-
-def is_host_ips_reachable(settings):
- external = settings["br-prv"]["ip"]
- external_gw = settings["br-prv"]["gw"]
- storage = settings["storage"]["ip"]
- mgmt = settings["mgmt"]["ip"]
-
- return is_ip_reachable(external) \
- and is_ip_reachable(external_gw) \
- and is_ip_reachable(storage) \
- and is_ip_reachable(mgmt)
-
-
-def main(hostname, config):
- LOG.info("host is %s", hostname)
-
- result = True
-
- for host, settings in config.iteritems():
- LOG.info("check %s network connectivity start", host)
- result = result and is_host_ips_reachable(settings)
-
- if result:
- LOG.info("All hosts ips are reachable")
- else:
- LOG.error("Some hosts ips are unreachable !!!")
- sys.exit(-1)
-
-if __name__ == "__main__":
- hostname = yaml.load(sys.argv[1])
- config = yaml.load(sys.argv[2])
- config.pop(hostname, None)
-
- main(hostname, config)
diff --git a/deploy/adapters/ansible/roles/setup-network/files/setup_networks/log.py b/deploy/adapters/ansible/roles/setup-network/files/setup_networks/log.py
deleted file mode 100644
index 422931bc..00000000
--- a/deploy/adapters/ansible/roles/setup-network/files/setup_networks/log.py
+++ /dev/null
@@ -1,52 +0,0 @@
-##############################################################################
-# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-import logging
-import os
-loggers = {}
-log_dir = "/var/log/setup_network"
-try:
- os.makedirs(log_dir)
-except:
- pass
-
-
-def getLogger(name):
- if name in loggers:
- return loggers[name]
-
- logger = logging.getLogger(name)
- logger.setLevel(logging.DEBUG)
-
- # create file handler which logs even debug messages
- log_file = "%s/%s.log" % (log_dir, name)
- try:
- os.remove(log_file)
- except:
- pass
-
- fh = logging.FileHandler(log_file)
- fh.setLevel(logging.DEBUG)
-
- # create console handler with a higher log level
- ch = logging.StreamHandler()
- ch.setLevel(logging.ERROR)
-
- # create formatter and add it to the handlers
- formatter = logging.Formatter(
- "%(asctime)s - %(name)s - %(levelname)s - %(message)s")
- ch.setFormatter(formatter)
- fh.setFormatter(formatter)
-
- # add the handlers to logger
- logger.addHandler(ch)
- logger.addHandler(fh)
-
- loggers[name] = logger
- return logger
diff --git a/deploy/adapters/ansible/roles/setup-network/files/setup_networks/net_init b/deploy/adapters/ansible/roles/setup-network/files/setup_networks/net_init
deleted file mode 100755
index 41ccb988..00000000
--- a/deploy/adapters/ansible/roles/setup-network/files/setup_networks/net_init
+++ /dev/null
@@ -1,24 +0,0 @@
-#! /bin/sh
-### BEGIN INIT INFO
-# Provides: anamon.init
-# Required-Start: $network
-# Required-Stop:
-# Should-Start:
-# Should-Stop:
-# Default-Start: 2 3 4 5
-# Default-Stop: 0 1 6
-# Short-Description: Starts the cobbler anamon boot notification program
-# Description: anamon runs the first time a machine is booted after installation.
-### END INIT INFO
-
-
-
-#
-# anamon.init: Starts the cobbler post-install boot notification program
-#
-# chkconfig: 35 0 6
-#
-# description: anamon runs the first time a machine is booted after
-# installation.
-#
-python /opt/setup_networks/setup_networks.py
diff --git a/deploy/adapters/ansible/roles/setup-network/files/setup_networks/setup_networks.py b/deploy/adapters/ansible/roles/setup-network/files/setup_networks/setup_networks.py
deleted file mode 100644
index 64c0469e..00000000
--- a/deploy/adapters/ansible/roles/setup-network/files/setup_networks/setup_networks.py
+++ /dev/null
@@ -1,100 +0,0 @@
-##############################################################################
-# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
-
-import yaml
-import netaddr
-import os
-import platform
-import re
-import log as logging
-
-LOG = logging.getLogger("net-init")
-config_path = os.path.join(os.path.dirname(__file__), "network.cfg")
-
-
-def setup_bondings(bond_mappings):
- print bond_mappings
-
-
-def add_vlan_link(interface, ifname, vlan_id):
- LOG.info("add_vlan_link enter")
- cmd = "ip link add link %s name %s type vlan id %s; " % (
- ifname, interface, vlan_id)
- cmd += "ip link set %s up; ip link set %s up" % (interface, ifname)
- LOG.info("add_vlan_link: cmd=%s" % cmd)
- os.system(cmd)
-
-
-def add_ovs_port(ovs_br, ifname, uplink, vlan_id=None):
- LOG.info("add_ovs_port enter")
- cmd = "ovs-vsctl --may-exist add-port %s %s" % (ovs_br, ifname)
- if vlan_id:
- cmd += " tag=%s" % vlan_id
- cmd += " -- set Interface %s type=internal;" % ifname
- cmd += "ip link set dev %s address \
- `ip link show %s |awk '/link\/ether/{print $2}'`;" % (ifname, uplink)
- cmd += "ip link set %s up;" % ifname
- LOG.info("add_ovs_port: cmd=%s" % cmd)
- os.system(cmd)
-
-
-def setup_intfs(sys_intf_mappings, uplink_map):
- LOG.info("setup_intfs enter")
- for intf_name, intf_info in sys_intf_mappings.items():
- if intf_info["type"] == "vlan":
- add_vlan_link(
- intf_name,
- intf_info["interface"],
- intf_info["vlan_tag"])
- elif intf_info["type"] == "ovs":
- add_ovs_port(
- intf_info["interface"],
- intf_name,
- uplink_map[intf_info["interface"]],
- vlan_id=intf_info.get("vlan_tag"))
- else:
- pass
-
-
-def setup_ips(ip_settings, sys_intf_mappings):
- LOG.info("setup_ips enter")
- for intf_info in ip_settings.values():
- network = netaddr.IPNetwork(intf_info["cidr"])
- if sys_intf_mappings[intf_info["name"]]["type"] == "ovs":
- intf_name = intf_info["name"]
- else:
- intf_name = intf_info["alias"]
- cmd = "ip addr add %s/%s brd %s dev %s;" \
- % (intf_info["ip"], intf_info["netmask"], str(network.broadcast), intf_name) # noqa
- if "gw" in intf_info:
- cmd += "route del default;"
- cmd += "ip route add default via %s dev %s" % (
- intf_info["gw"], intf_name)
- LOG.info("setup_ips: cmd=%s" % cmd)
- os.system(cmd)
-
-
-def main(config):
- uplink_map = {}
- setup_bondings(config["bond_mappings"])
- for provider_net in config["provider_net_mappings"]:
- uplink_map[provider_net['name']] = provider_net['interface']
-
- setup_intfs(config["sys_intf_mappings"], uplink_map)
- setup_ips(config["ip_settings"], config["sys_intf_mappings"])
-
-if __name__ == "__main__":
- if re.search('Ubuntu', platform.platform()):
- os.system("service openvswitch-switch start")
- elif re.search('redhat|centos', platform.platform()):
- os.system("service openvswitch start")
- else:
- os.system("echo 'ERROR: no service named openvswitch'")
- config = yaml.load(open(config_path))
- main(config)
diff --git a/deploy/adapters/ansible/roles/setup-network/tasks/main.yml b/deploy/adapters/ansible/roles/setup-network/tasks/main.yml
deleted file mode 100644
index 24d69f6e..00000000
--- a/deploy/adapters/ansible/roles/setup-network/tasks/main.yml
+++ /dev/null
@@ -1,87 +0,0 @@
-##############################################################################
-# Copyright (c) 2016 HUAWEI TECHNOLOGIES CO.,LTD and others.
-#
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Apache License, Version 2.0
-# which accompanies this distribution, and is available at
-# http://www.apache.org/licenses/LICENSE-2.0
-##############################################################################
----
-- name: disable NetworkManager
- service: name=NetworkManager state=stopped enabled=no
- when: ansible_os_family == 'RedHat'
-
-- name: enable network service
- service: name=network state=started enabled=yes
- when: ansible_os_family == 'RedHat'
-
-- name: add ovs bridge
- openvswitch_bridge: bridge={{ item["name"] }} state=present
- with_items: "{{ network_cfg['provider_net_mappings'] }}"
- when: 'item["type"] == "ovs"'
-
-- name: add ovs uplink
- openvswitch_port: bridge={{ item["name"] }} port={{ item["interface"] }}
- state=present
- with_items: "{{ network_cfg['provider_net_mappings'] }}"
- when: 'item["type"] == "ovs"'
-
-- name: add ovs uplink
- shell: ip link set {{ item["interface"] }} up
- with_items: "{{ network_cfg['provider_net_mappings'] }}"
- when: 'item["type"] == "ovs"'
-
-- name: ensure script dir exist
- shell: mkdir -p /opt/setup_networks
-
-- name: copy scripts
- copy: src={{ item }} dest=/opt/setup_networks
- with_items:
- - setup_networks/log.py
- - setup_networks/setup_networks.py
- - setup_networks/check_network.py
- tags:
- - network_check
-
-- name: copy boot scripts
- copy: src={{ item }} dest=/etc/init.d/ mode=0755
- with_items:
- - setup_networks/net_init
-
-- name: copy config files
- template: src=network.cfg dest=/opt/setup_networks
-
-- name: make sure python lib exist
- action: "{{ ansible_pkg_mgr }} name={{ item }} state=present"
- with_items:
- - python-yaml
- - python-netaddr
-
-- name: run scripts
- shell: python /opt/setup_networks/setup_networks.py
- tags:
- - recovery
-
-- name: check basic network connectivity
- shell: >
- python /opt/setup_networks/check_network.py \
- "{{ inventory_hostname }}" \
- "{{ ip_settings | to_json }}"
- register: result
- until: result.stderr.find('unreachable')==-1
- retries: 3
- delay: 2
- tags:
- - network_check
-
-- name: add to boot scripts
- shell: update-rc.d net_init defaults
- when: ansible_os_family == "Debian"
-
-- name: add to boot scripts
- shell: |
- chkconfig --add net_init;
- chkconfig --level 2345 net_init on;
- when: ansible_os_family == 'RedHat'
-
-- meta: flush_handlers
diff --git a/deploy/adapters/ansible/roles/setup-network/templates/my_configs.debian b/deploy/adapters/ansible/roles/setup-network/templates/my_configs.debian
deleted file mode 100644
index 5ab1519b..00000000
--- a/deploy/adapters/ansible/roles/setup-network/templates/my_configs.debian
+++ /dev/null
@@ -1,14 +0,0 @@
-{%- for alias, intf in host_ip_settings.items() %}
-
-auto {{ alias }}
-iface {{ alias }} inet static
- address {{ intf["ip"] }}
- netmask {{ intf["netmask"] }}
-{% if "gw" in intf %}
- gateway {{ intf["gw"] }}
-{% endif %}
-{% if intf["name"] == alias %}
- pre-up ip link set {{ sys_intf_mappings[alias]["interface"] }} up
- pre-up ip link add link {{ sys_intf_mappings[alias]["interface"] }} name {{ alias }} type vlan id {{ sys_intf_mappings[alias]["vlan_tag"] }}
-{% endif %}
-{% endfor %}
diff --git a/deploy/adapters/ansible/roles/setup-network/templates/network.cfg b/deploy/adapters/ansible/roles/setup-network/templates/network.cfg
deleted file mode 100644
index cf271ad6..00000000
--- a/deploy/adapters/ansible/roles/setup-network/templates/network.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-bond_mappings: {{ network_cfg["bond_mappings"] | to_json }}
-ip_settings: {{ ip_settings[inventory_hostname] | to_json }}
-sys_intf_mappings: {{ sys_intf_mappings | to_json }}
-provider_net_mappings: {{ network_cfg["provider_net_mappings"] | to_json }}
-