示例#1
0
def api_instance_lifecycle(type, instance_name):
    if (check_user_credential(request) is False):
        return Response("Invalid Credential", 401)
    username = request.authorization.get('username')
    if (check_instance_ownership(username, instance_name) is False):
        return Response("Invalid Credential", 401)

    if (type == "start"):
        conn = create_connection_from_config()
        if (start_instance(conn, instance_name) is True):
            conn.close()
            return Response(response=json.dumps({"status": "OK"}), status=200)
    elif (type == "shutdown"):
        conn = create_connection_from_config()
        if (shut_off_instance(conn, instance_name) is True):
            conn.close()
            return Response(response=json.dumps({"status": "OK"}), status=200)
    elif (type == "reboot"):
        conn = create_connection_from_config()
        if (reboot_instance(conn, instance_name) is True):
            conn.close()
            return Response(response=json.dumps({"status": "OK"}), status=200)
    else:
        return Response("Invalid operation", 400)
    return Response("Failed", 400)
示例#2
0
def api_create_user():
    content = request.get_json()

    # Try to get data from json body
    try:
        username = content["username"]
        password = content["password"]
        email = content["email"]

    # If data is not correct in the body, return 400
    except TypeError:
        return Response("Bad Request", 400)

    # Create user
    else:
        # Open conenction
        conn = create_connection_from_config()
        # If creation failed, return 500
        if (create_user(conn, username, password, email) is False):
            conn.close()
            return Response("Creating failed", 403)
        # Creation succeed, return 200
        else:
            conn.close()
            return Response(response=json.dumps({'username': username}),
                            status=200)
示例#3
0
文件: Instance.py 项目: yang242j/t2ee
def mq_create_instance(username, instance_name, image, flavor, root_password):
    conn = create_connection_from_config()
    if (check_instance_name_available(conn, instance_name) is True):
        keypair = get_keypair(username)
        instance = create_instance(conn,
                                   image,
                                   flavor,
                                   get_network_name(),
                                   instance_name,
                                   root_password=root_password,
                                   keypair=keypair)
        add_instance_to_user(username, instance_name, instance.id)
        conn.compute.wait_for_server(instance, status='ACTIVE', wait=60)
        # Wait for 30 second to let instance boot up
        time.sleep(30)
        # Try to set the root password if it fails
        for i in range(0, 10):
            time.sleep(10)
            try:
                conn.compute.change_server_password(instance, root_password)
            except openstack.exceptions.HttpException:
                continue
            else:
                break
    conn.close()
示例#4
0
文件: Image.py 项目: yang242j/t2ee
def mq_create_image(username, image_name, instance_name, description):
    conn = create_connection_from_config()
    if (check_image_name_available(conn, image_name) is True):
        image = create_image_from_instance(conn, instance_name, image_name,
                                           description)
        create_image_document(username, image_name, instance_name, description)
        add_image_to_user(username, image_name, image.id)
    conn.close()
示例#5
0
文件: Instance.py 项目: yang242j/t2ee
def mq_delete_instance(username, instance_name):
    if (check_instance_ownership(username, instance_name) is False):
        return
    conn = create_connection_from_config()
    delete_instance(conn, instance_name)
    remove_instance_from_user(username, instance_name)
    print(username)
    conn.close()
示例#6
0
def create_keypair(user, pubkey):
    conn = create_connection_from_config()
    try:
        conn.compute.create_keypair(name=user + "_key", public_key=pubkey)
    except:
        conn.close()
        return False
    else:
        add_keypair_to_user(user, user + "_key")
        conn.close()
        return True
示例#7
0
def api_get_user_info():
    if (check_user_credential(request) is False):
        return Response("Invalid Credential", 401)
    username = request.authorization.get('username')
    conn = create_connection_from_config()
    result = get_user_info(username)
    if (result is not None):
        for instance in result['instance']:
            instance['status'] = get_instance_status(conn,
                                                     instance["instance_name"])
            address = get_instance_address(conn, instance["instance_name"])
            instance['address'] = list(address[list(address)[0]])[0]
    conn.close()
    return Response(response=json.dumps(result), status=200)
示例#8
0
def api_update_user(field):
    # If the variable is not email or password, return 404
    if (field != ("email" and "password")):
        return Response("URL not found", 404)
    # Check if the username and password in authorization is correct
    if (check_user_credential(request) is False):
        return Response("Invalid Credential", 401)
    content = request.get_json()
    # Update email
    if (field == "email"):
        try:
            username = request.authorization.get('username')
            email = content["email"]
        # If data is not correct in the body, return 400
        except TypeError:
            return Response("Bad Request, insufficient data", 400)
        else:
            conn = create_connection_from_config()
            if (update_user_email(conn, username, email) is True):
                return Response("OK", 200)
            else:
                return Response("Update email failed", 400)
        # Update password
    if (field == "password"):
        try:
            username = request.authorization.get('username')
            password = content["password"]
        # If data is not correct in the body, return 400
        except TypeError:
            return Response("Bad Request, insufficient data", 400)
        else:
            conn = create_connection_from_config()
            if (update_user_password(conn, username, password) is True):
                return Response(response=json.dumps({"status": "OK"}),
                                status=200)
            else:
                return Response("Update password failed", 400)
示例#9
0
def update_keypair(user, pubkey):
    client = create_db_connection()
    user_col = client["t2ee"]["user"]
    result = user_col.find_one({"name": user})
    client.close()
    #If cannot find the user
    if (result is None):
        return False
    #If the user doesn't have a key, create it
    if (result["key"] == ""):
        return create_keypair(user, pubkey)
    else:
        conn = create_connection_from_config()
        key = conn.compute.find_keypair(result["key"])
        if (key is not None):
            conn.compute.delete_keypair(key)
        return create_keypair(user, pubkey)
示例#10
0
def api_instance_transfer():
    if (check_user_credential(request) is False):
        return Response("Invalid Credential", 401)

    content = request.get_json()
    try:
        username = request.authorization.get('username')
        instance_name = content['instance_name']
        new_owner = content['new_owner']
    except KeyError:
        return Response("Bad Request, insufficient data", 400)
    else:
        if (check_instance_ownership(username, instance_name) is False):
            return Response("Invalid Credential", 401)
        if (get_user_info(new_owner) is None):
            return Response("New owner not exist", 400)
        conn = create_connection_from_config()
        instance = conn.compute.find_server(instance_name)
        if (instance is None):
            return Response("Instance not exist", 400)
        remove_instance_from_user(username, instance_name)
        add_instance_to_user(new_owner, instance_name, instance.id)
        return Response(response=json.dumps({"status": "OK"}), status=200)
示例#11
0
def create_image_document(name, image_name, instance_name, description):
    client = create_db_connection()
    db = client["t2ee"]
    image_col = db["image"]
    conn = create_connection_from_config()
    
    instance = conn.compute.find_server(instance_name)
    try:
        image_id = conn.compute.get_server(instance.id).image.id
    except:
        return
    else:
        base_image_name = conn.image.find_image(image_id).name
        print(base_image_name)
        image_data = {
            "username" : name,
            "image_id": image_id,
            "image_name": image_name,
            "base_image_name": base_image_name,
            "description": description,
            "count": 0
        }
        image_col.insert_one(image_data)
    client.close()
示例#12
0
#!/usr/bin/python3
import unittest

from lib.ConnectionUtilities import create_connection_from_config
from lib.CredentialUtilities import create_user

conn = create_connection_from_config()


class test_user(unittest.TestCase):
    def test_creating(self):
        #Delete the user before creating it
        if (conn.identity.find_user("test_user") is not None):
            conn.identity.delete_user(conn.identity.find_user("test_user"))

        create_user(conn, "test_user", "test123", "*****@*****.**")
        user = conn.identity.find_user("test_user")
        print(user.id)
        self.assertEqual(user.name, "test_user")
        self.assertEqual(user.email, "*****@*****.**")


if __name__ == '__main__':
    unittest.main()
示例#13
0
文件: Image.py 项目: yang242j/t2ee
def mq_delete_image(username, image_name):
    conn = create_connection_from_config()
    remove_image_from_user(username, image_name)
    remove_image_from_image_database(image_name)
    delete_image(conn, image_name)
    conn.close()
示例#14
0
 def test_change_password(self):
     conn = create_connection_from_config()
     conn.compute.change_server_password(
         conn.compute.find_server("test_creation2"), "whatever")
示例#15
0
 def test_deleting(self):
     conn = create_connection_from_config()
     self.assertTrue(delete_instance(conn, "test"))
示例#16
0
 def test_creating(self):
     conn = create_connection_from_config()
     create_instance(conn, "	Ubuntu16.04", "small", "provider1", "test")
     self.assertFalse(check_instance_name_available(conn, "test"))