def __init__(self, net,
                 switch,
                 name='osm',
                 vca_host=os.environ.get('VCA_HOST'),
                 vca_secret=os.environ.get('VCA_SECRET'),
                 osm_version='releasefive-daily',
                 ip_start='10.0.0.100'):
        ip_int = Net.ip_2_int(ip_start)
        zookeeper_ip = ip_start
        kafka_ip = Net.int_2_ip(ip_int + 1)
        mongo_ip = Net.int_2_ip(ip_int + 2)
        nbi_ip = Net.int_2_ip(ip_int + 3)
        ro_db_ip = Net.int_2_ip(ip_int + 4)
        ro_ip = Net.int_2_ip(ip_int + 5)
        lcm_ip = Net.int_2_ip(ip_int + 6)

        name_prefix = '%s-' % name
        self.zookeeper = Zookeeper(net, '%s/16' % zookeeper_ip, name_prefix=name_prefix)
        self.kafka = Kafka(net, '%s/16' % kafka_ip, zookeeper_ip, name_prefix=name_prefix)
        self.mongo = Mongo(net, '%s/16' % mongo_ip, name_prefix=name_prefix)
        self.nbi = NBI(net, '%s/16' % nbi_ip, mongo_ip, kafka_ip, version=osm_version, name_prefix=name_prefix)
        self.ro_db = Mysql(net, '%s/16' % ro_db_ip, name_prefix=name_prefix)
        self.ro = RO(net, '%s/16' % ro_ip, ro_db_ip, version=osm_version, name_prefix=name_prefix)
        self.lcm = LCM(net, '%s/16' % lcm_ip, ro_ip, mongo_ip, kafka_ip,
                       vca_host, vca_secret, version=osm_version, name_prefix=name_prefix)

        net.addLink(self.zookeeper.instance, switch)
        net.addLink(self.kafka.instance, switch)
        net.addLink(self.mongo.instance, switch)
        net.addLink(self.nbi.instance, switch)
        net.addLink(self.ro_db.instance, switch)
        net.addLink(self.ro.instance, switch)
        net.addLink(self.lcm.instance, switch)
Beispiel #2
0
def get_new_cidr(uuid):
    """
    Calculates a unused cidr for a subnet.

    :param uuid: The UUID of the subnet - Thus it can store which subnet gets which CIDR
    :type uuid: ``str``
    :return: Returns None if all available CIDR are used. Otherwise returns a valid CIDR.
    :rtype: ``str``
    """
    global lock
    lock.acquire()

    global __current_ip
    while __first_ip <= __current_ip < __last_ip and __current_ip in __issued_ips:
        __current_ip += __default_subnet_size

    if __current_ip >= __last_ip or __current_ip < __first_ip or __current_ip in __issued_ips:
        return None

    __issued_ips[__current_ip] = uuid
    lock.release()

    return Net.int_2_ip(__current_ip) + '/' + str(__default_subnet_bitmask)