def clean_ovs_bridges():
    basic_cmd = "ovs-vsctl del-br br-{}1".format(
        system_driver.get_ip().split(".")[3])
    os.system(basic_cmd)
    basic_cmd = "ovs-vsctl del-br br-{}2".format(
        system_driver.get_ip().split(".")[3])
    os.system(basic_cmd)
def core_cleaner():
    container_to_delete = container_list()
    for i in range(len(container_to_delete)):
        clean_container_bridge_ovs(
            container_to_delete[i],
            "br-{}1".format(system_driver.get_ip().split(".")[3]))
        clean_container_bridge_ovs(
            container_to_delete[i],
            "br-{}2".format(system_driver.get_ip().split(".")[3]))
        lxc_driver.delete_container(container_to_delete[i])
    clean_ovs_bridges()
Beispiel #3
0
    def __init__(self,
                 exchange_key='main_queue',
                 ip_mngmt='195.148.125.125',
                 user_name='mqadmin',
                 password='******'):
        self.credentials = pika.PlainCredentials(user_name, password)
        self.parameters = pika.ConnectionParameters(ip_mngmt, 5672, '/',
                                                    self.credentials)
        self.connection = pika.BlockingConnection(self.parameters)

        # Prepare the exchange and wait for a request from the client
        self.channel = self.connection.channel()
        self.channel.exchange_declare(exchange=exchange_key,
                                      exchange_type='direct')

        result = self.channel.queue_declare(exclusive=True)
        self.channel.queue_declare(queue=str(system_driver.get_ip()) +
                                   exchange_key.split('_')[0],
                                   durable=True)
        queue1 = 'star' + exchange_key.split('_')[0]
        queue2 = str(system_driver.get_ip())
        self.channel.queue_bind(exchange=exchange_key,
                                queue=str(system_driver.get_ip()) +
                                exchange_key.split('_')[0],
                                routing_key=queue1)
        self.channel.queue_bind(exchange=exchange_key,
                                queue=str(system_driver.get_ip()) +
                                exchange_key.split('_')[0],
                                routing_key=queue2)

        self.channel.basic_qos(prefetch_count=1)
        self.channel.basic_consume(self.on_request,
                                   queue=str(system_driver.get_ip()) +
                                   exchange_key.split('_')[0])

        print(" [x] Awaiting RPC requests")
        self.channel.start_consuming()
Beispiel #4
0
def run():
    controller_ip = '195.148.125.104'
    url = 'iaas_delete'
    while True:
        time.sleep(5)
        cmd = 'ps -ax'
        answer = subprocess.check_output(cmd, shell=True)
        if 'server_broker.py' not in answer.decode():
            print("server_broker stopped ")
            list_ip = [{'ip': '{}'.format(str(system_driver.get_ip()))}]
            list_ip = json.dumps(list_ip)
            link_to_orchestrator = 'http://{}/api/{}?iaas_ip='.format(
                controller_ip, url) + list_ip
            print(link_to_orchestrator)
            requests.get(link_to_orchestrator)
def container_live_resources():
    monitor = {}
    containers = {}
    nb_container = lxc_driver.list_containers()
    vm_cpu = 0
    vm_ram = 0
    vm_disk = 0
    for i in range(len(nb_container)):
        if nb_container[i] != 'nginxBKserver' and nb_container[
                i] != 'nginxBKclient':
            container_status, ip = lxc_driver.containers_status(
                nb_container[i])
            cpu = lxc_driver.get_cpu(nb_container[i])
            ram = lxc_driver.get_mem(nb_container[i])
            disk = lxc_driver.get_size(nb_container[i])
            vm_cpu = int(vm_cpu) + int(cpu)
            vm_ram = int(vm_ram) + int(ram)
            vm_disk = float(vm_disk) + float(disk)
            if container_status == 'RUNNING' and ip != 0:
                live_cpu = lxc_driver.get_live_cpu(nb_container[i])
                live_ram = lxc_driver.get_live_mem(nb_container[i])
                containers[nb_container[i]] = {
                    'cpu': cpu,
                    'live_cpu': live_cpu,
                    'ram': ram,
                    'live_ram': live_ram,
                    'disk': disk
                }

    vm_cpu = int(system_driver.get_vm_cpu()) - int(vm_cpu)
    vm_ram = int(system_driver.get_vm_mem()) - int(vm_ram)
    vm_disk = float(system_driver.get_vm_disk()) - float(vm_disk)

    monitor[system_driver.get_ip()] = {
        'vm_cpu': vm_cpu,
        'vm_ram': vm_ram,
        'vm_disk': vm_disk,
        'containers': containers
    }

    return monitor
Beispiel #6
0
    os.system(basic_cmd)

    basic_cmd = 'sudo ip link add name int{0}1 type veth peer name int{0}2'.format(
        ovs_1)
    os.system(basic_cmd)

    basic_cmd = "ip link set int{0}1 up".format(ovs_1)
    os.system(basic_cmd)

    basic_cmd = "ip link set int{0}2 up".format(ovs_1)
    os.system(basic_cmd)

    basic_cmd = "sudo ovs-vsctl add-port br-{0}1 int{0}1 -- set Interface int{0}1 ofport_request=1".format(
        ovs_1)
    os.system(basic_cmd)

    basic_cmd = "sudo ovs-vsctl add-port br-{0}2 int{0}2 -- set Interface int{0}2 ofport_request=1".format(
        ovs_1)
    os.system(basic_cmd)

    basic_cmd = "sudo ovs-vsctl set-controller br-{}1 tcp:195.148.125.90:6653".format(
        ovs_1)
    os.system(basic_cmd)

    basic_cmd = "sudo ovs-vsctl set-controller br-{}2 tcp:195.148.125.90:6653".format(
        ovs_1)
    os.system(basic_cmd)


create_ovs_environment(system_driver.get_ip().split('.')[3])
Beispiel #7
0
    def on_request(self, ch, method, props, body):

        print(" I received: {}".format(body))
        print("my correlation id is: {}".format(props.correlation_id))
        x = body.decode().split("#")
        response = ""
        if x[0] == "admin":
            subprocess.Popen([
                'python3', '/root/minion/server_broker.py',
                str(x[1]) + "_queue"
            ],
                             stdout=subprocess.PIPE,
                             stderr=subprocess.STDOUT)
            response = 1
            print("The response is equal to: {}".format(response))
        elif x[0] == "available_resource_creation":
            print(
                "***********The Host Node Server Broker -- verify_resource_creation--***********"
            )
            cpu, ram, disk = system_driver.resource_availability()
            response = str(system_driver.get_ip()) + "#" + str(
                cpu) + "#" + str(ram) + "#" + str(disk)
        elif x[0] == "create":
            print(
                "***********The Host Node Server Broker -- create_container --***********"
            )
            system_driver.default_bridge()
            print("calling the creation library .....")
            response = sdn.create(x[1], x[2], x[3], x[4], x[5], x[6], x[7],
                                  x[8])
            print("The response is equal to: {}".format(response))
        elif x[0] == "container_resources":
            print(
                "***********The Host Node Server Broker -- get_container_resources --***********"
            )
            print("getting the cpu, ram information .....")
            cpu, ram = lxc_driver.get_container_resources(x[1])
            response = str(
                system_driver.get_ip()) + "#" + str(cpu) + "#" + str(ram)
            print("The response is equal to: {}".format(response))
        elif x[0] == "available_resource_migration":
            print(
                "***********The Host Node Server Broker -- verify_resource_migration --***********"
            )
            if str(system_driver.get_ip()) != x[1]:
                cpu, ram, disk = system_driver.resource_availability()
                response = str(system_driver.get_ip()) + "#" + str(
                    cpu) + "#" + str(ram) + "#" + str(disk)
            else:
                response = str(system_driver.get_ip()) + "#" + str(
                    0) + "#" + str(0) + "#" + str(0)
        elif x[0] == "container_image":
            print(
                "***********The Host Node Server Broker -- container_image --***********"
            )
            print("getting the image name .....")
            response = migration.container_image(x[1])
        elif x[0] == "part_migration_check":
            print(
                "***********The Host Node Server Broker -- part_migration_check --***********"
            )
            print("searching for partial migration action .....")
            if migration.target_container_image(x[1]):
                response = migration.partial_migration_preparation(x[1], x[2])
        elif x[0] == "migration":
            print(
                "***********The Host Node Server Broker -- full_migration --***********"
            )
            print("Full-Migration Process .....")
            response = migration.migrate(x[1], x[2], x[3])
        elif x[0] == "validate_migration":
            print(
                "***********The Host Node Server Broker -- validate_migration --***********"
            )
            print("Validate-Migration Process .....")
            response = migration.validate_migration(x[1], x[2])
        elif x[0] == "rat_trigger":
            print(
                "***********The Host Node Server Broker -- rat_trigger --***********"
            )
            response = rat.container_list()
        elif x[0] == "sct_trigger":
            print(
                "***********The Host Node Server Broker -- sct_trigger --***********"
            )
            response = sct.container_live_resources()
        elif x[0] == "scale_up_cpu_ram":
            print(
                "***********The Host Node Server Broker -- scale_up_cpu_ram --***********"
            )
            response = scale_up.scale_up_cpu_ram(x[1], x[2], x[3])
        elif x[0] == "scale_up_cpu":
            print(
                "***********The Host Node Server Broker -- scale_up_cpu --***********"
            )
            response = scale_up.scale_up_cpu_full(x[1], x[2])
        elif x[0] == "scale_up_ram":
            print(
                "***********The Host Node Server Broker -- scale_up_ram --***********"
            )
            response = scale_up.scale_up_ram_full(x[1], x[2])
        elif x[0] == "container_dashboard_resources":
            print(
                "***********The Host Node Server Broker -- container_dashboard_resources --***********"
            )
            container_ip, cpu, ram, disk = lxc_driver.container_dashboard_resources(
                x[1])
            response = str(container_ip) + "#" + str(cpu) + "#" + str(
                ram) + "#" + str(disk)
        elif x[0] == "environment_cleaner":
            print(
                "***********The Host Node Server Broker -- environment_cleaner --***********"
            )
            subprocess.Popen(
                ['python3', '/root/minion/environment_cleaner.py'],
                stdout=subprocess.PIPE,
                stderr=subprocess.STDOUT)
            response = 1

        ch.basic_publish(exchange='',
                         routing_key=props.reply_to,
                         properties=pika.BasicProperties(
                             correlation_id=props.correlation_id),
                         body=str(response))
        ch.basic_ack(delivery_tag=method.delivery_tag)