Esempio n. 1
0
    def node_create_by_imageId(self, vm_name, config):#image_id, keypair_name, security_group_names, flavor_id):
        """
        Created the node with
        specified image id, 
        keypair name should be AWS1
        rest of the parameter; security group
        and flavor id are take bydefault
        :returns: None
        :rtype: NoneType
        """
        # get driver
        driver = self._get_driver()
        db_client = Evemongo_client()
        if "image_id" not in config :
            image_id =  self.configd["default"]['image']#'ami-0183d861'
        else:
            image_id = config["image_id"]
        
        #print(image_id) 
        # Name of the existing keypair you want to use
        if "keypair_name" not in config:
            keypair_name = KEYPAIR_NAME_DEFAULT
        else:
            keypair_name = config["keypair_name"]

        # A list of security groups you want this node to be added to
        if "security_group_names" not in config:
            security_group_names = ['default']
        else:
            security_group_names = config["security_group_names"]

        if "flavor_id" not in config:
            flavor_id = self.configd["default"]['flavor']
        else:
            flavor_id = config["flavor_id"]

        sizes = driver.list_sizes()
        
        size = [s for s in sizes if s.id == flavor_id][0]
        image = driver.get_image(image_id)
        # create node
        node = driver.create_node(name=vm_name, size = size, image = image, ex_keyname = keypair_name, ex_securitygroup = security_group_names)
        #print("The Node is Created --------------- :: ",node)
        n = 0 ;
        e = {}
        data = {}
        data['uuid'] = str(node.uuid)
        data['name'] = str(node.name)
        data['state'] = str(node.state)
        data['public_ips'] = str(node.public_ips)
        data['private_ips'] = str(node.private_ips)
        data['provider'] = str(node.driver.name)
        e[n] = data
        n = n + 1
        Console.ok(str(Printer.dict_table(e, order=['uuid', 'name', 'state', 'public_ips', 'private_ips','provider'])))

        if bool(node) :
            #Push the created node in db
            db_client.post(NODE, data)
        return
Esempio n. 2
0
    def keypair_create(self, key_pair):
        """
        Creates the key pair 
        required for node object
        :returns: None
        :rtype: NoneType
        """
        driver = self._get_driver()
        
        key_pair_obj = driver.create_key_pair(key_pair)
        #print("keypair is created !",name)
        n = 0 ;
        e = {}
        # parse flavors
        data = {}
        data['name'] = str(key_pair_obj.name)
        data['fingerprint'] = str(key_pair_obj.fingerprint)
        e[n] = data
        n = n + 1
          
        Console.ok(str(Printer.dict_table(e, order=['name', 'fingerprint', 'driver'])))

        #Store the created keypair in db 
        db_client = Evemongo_client()
        db_client.post(KEYPAIR, data)
        
        return
Esempio n. 3
0
    def volume_create(self, volume_size, volume_name):
        """
        Creates the volume with default 
        size of 1GB with specified volume name
        location for volume will be fetch from
        ../cloudmesh.yaml file
        :returns: None
        :rtype: NoneType
        """
        #Some test functionality
        db_client = Evemongo_client()
        #Some test functionality
        flavor_id = self.configd["default"]['flavor']
        location = self.configd["default"]['location']
        driver = self._get_driver()
        sizes = driver.list_sizes()
        size = [s for s in sizes if s.id == flavor_id][0]
        locations = self.location_refresh(False)
        if len(locations) == 0:
            print("Location not found!!")
        else:
            e = {}
            for loc in locations:
                if loc.availability_zone.region_name == location:
                    locObj = loc
                    #print(locObj)
                    storageVolume = driver.create_volume(volume_size, volume_name, location=locObj, snapshot=None)
                    #<StorageVolume id=vol-0e80356132e246a7b size=1 driver=Amazon EC2>
                    data = {}
                    data['id'] = storageVolume.id
                    data['name'] = volume_name
                    data['size'] = storageVolume.size
                    data['driver'] = storageVolume.driver.name
                    e[0] = data
                    # store it in mongodb
                    db_client.post(VOLUME, data)
                    Console.ok(str(Printer.dict_table(e, order=['id','name', 'size','driver'])))
                else:
                    print("Location list does not match with selected location:  ", location)

                break
       
        #print("======Created volume ========= :: ",storageVolume)

        return
Esempio n. 4
0
    def location_list(self,print_location):
        """
        List out all the available location 
        for the associated account
        :returns: None
        :rtype: NoneType
        """
        db_client = Evemongo_client()
        locations = db_client.get(LOCATION)
        n = 1
        e = {}
        for location in locations:
            e[n] = location
            n = n + 1
        if print_location:
            Console.ok(str(Printer.dict_table(e, order=['id','name','country', 'availability_zone', 'zone_state','region_name','provider'])))

        return locations
Esempio n. 5
0
    def keypair_list(self):
        """
        List all the keypairs
        stored in db
        :returns: None
        :rtype: NoneType
        """
        db_client = Evemongo_client()
        keys = db_client.get(KEYPAIR)
        n= 1
        e = {}
        for key in keys:
            e[n] = key
            n = n + 1

        Console.ok(str(Printer.dict_table(e, order=['name', 'fingerprint'])))
        
        return
Esempio n. 6
0
    def node_list(self):
        """
        List all the nodes
        stored in db
        :returns: None
        :rtype: NoneType
        """
        db_client = Evemongo_client()
        nodes = db_client.get(NODE)

        n= 1
        e = {}
        for node in nodes:
            e[n] = node
            n = n + 1

        Console.ok(str(Printer.dict_table(e, order=['uuid', 'name', 'state', 'provider'])))

        return
Esempio n. 7
0
    def flavor_list(self):
        """List of amazon images
        get store it in db
        :returns: None
        :rtype: NoneType

        """
        #fetch the list from db, parse and print
        db_client = Evemongo_client()
        sizes = db_client.get(FLAVOR)

        n= 1
        e = {}
        for size in sizes:
            e[n] = size
            n = n + 1

        Console.ok(str(Printer.dict_table(e, order=['id', 'name', 'ram', 'disk', 'price'])))        

        return
Esempio n. 8
0
    def image_list(self):
        """List of amazon images 
        from mongodb
        :returns: None
        :rtype: NoneType

        """
        #Fetch the list of images from db
        db_client = Evemongo_client()
        images = db_client.get(IMAGE)

        n= 1
        e = {}
        for image in images:
            e[n] = image
            n = n + 1
  
        Console.ok(str(Printer.dict_table(e, order=['id', 'name', 'driver'])))

        return 
Esempio n. 9
0
    def volume_list(self, print_objs):
        """
        List all the successfuly stored
        volumes
        :returns: None
        :rtype: NoneType
        """
        #Fetch the list of images from db
        db_client = Evemongo_client()
        volumes = db_client.get(VOLUME)
        
        e = {}
        n = 1
        for vol in volumes:
            e[n] = vol
            n = n + 1

        if print_objs == True :
            Console.ok(str(Printer.dict_table(e, order=['id','name', 'size','driver'])))

        return volumes
Esempio n. 10
0
    def volume_refresh(self, print_objs):
        """
        List all the successfuly created
        volumes 
        :returns: volumes object
        :rtype: NoneType
        """
        driver = self._get_driver()
        volumes = driver.list_volumes()
        db_client = Evemongo_client()
        db_client.delete(VOLUME)
        e = {}
        n = 1
        for vol in volumes:
            #print(vol)
            data = {}
            data['id'] = vol.id
            data['name'] = vol.name
            data['size'] = vol.size
            data['driver'] = vol.driver.name
            e[n] = data
            n = n + 1
            db_client.post(VOLUME, data)

        if print_objs == True :
            Console.ok(str(Printer.dict_table(e, order=['id','name', 'size','driver'])))

        return volumes
Esempio n. 11
0
    def node_refresh(self, show_list):
        """
        List the all instance
        of node
        :returns: nodes object
        :rtype: NoneType
        """
        # get driver
        driver = self._get_driver()
        #List the running vm's
        nodes = driver.list_nodes()

        db_client = Evemongo_client()
        db_client.delete(NODE)

        n = 0 ;
        e = {}
        for node in nodes:
            # parse flavors
            data = {}
            data['uuid'] = str(node.uuid)
            data['name'] = str(node.name)
            data['state'] = str(node.state)
            data['provider'] = str(node.driver.name)
            e[n] = data
            n = n + 1
            
            db_client.post(NODE, data)

        if show_list:
            Console.ok(str(Printer.dict_table(e, order=['uuid', 'name', 'state', 'provider'])))

        return nodes
Esempio n. 12
0
 def location_refresh(self, print_location):
     """
     List all
     available locations
     :returns: location objects
     :rtype: NoneType
     """
     driver = self._get_driver()
     locations = driver.list_locations()
     db_client = Evemongo_client()
     db_client.delete(LOCATION)
     n = 1
     e = {}
     #<EC2NodeLocation: id=0, name=us-west-1a, country=USA, availability_zone=<ExEC2AvailabilityZone: name=us-west-1a, 
     # zone_state=available, region_name=us-west-1> driver=Amazon EC2>,
     for location in locations:
         data = {}
         data['id'] = location.id
         data['name'] = location.name
         data['country'] = location.country
         data['availability_zone'] = location.availability_zone.name
         data['zone_state'] = location.availability_zone.zone_state
         data['region_name'] = location.availability_zone.region_name
         #data['provider'] = location.driver.name    
         e[n] = data
         n = n + 1
         db_client.post(LOCATION, data)
     
     if print_location == True:
         Console.ok(str(Printer.dict_table(e, order=['id','name','country', 'availability_zone', 'zone_state','region_name','provider'])))
     
     return locations
Esempio n. 13
0
    def keypair_refresh(self):
        """
        List all the available key pair
        associated with account
        
        :returns: None
        :rtype: NoneType
        """
        driver = self._get_driver()
        db_client = Evemongo_client()
        db_client.delete(KEYPAIR)

        key_pair_objs = driver.list_key_pairs()
        n =1
        e = {}
        for kp in key_pair_objs:
            data = {}
            data['name'] = kp.name
            data['fingerprint'] = kp.fingerprint
            e[n] = data
            n = n + 1
            db_client.post(KEYPAIR, data)        
            
        Console.ok(str(Printer.dict_table(e, order=['name', 'fingerprint'])))
       
        return
Esempio n. 14
0
    def image_refresh(self):
        """List of amazon images
        get store it in db
        :returns: None
        :rtype: NoneType

        """
        # get driver
        driver = self._get_driver()
        # get image list and print
        images = driver.list_images()
        db_client = Evemongo_client()
       
        if len(images) == 0:
            print("Error in fetching new list ...Showing existing images")
            self.image_list()
        else:
            #r = db_client.delete(IMAGE)
            #print(images)
            #print("storing in db")
            #db_client.perform_delete(IMAGE)
            n = 0 ;
            e = {}
            for image in images:
                # parse flavors
                data = {}
                data['id'] = str(image .id)
                data['name'] = str(image.name)
                data['driver'] = str(image.driver)
                # store it in mongodb
                db_client.post(IMAGE, data)
                e[n] = data
                n = n + 1
                
          
            Console.ok(str(Printer.dict_table(e, order=['id', 'name', 'driver'])))
            #print(images)

        return
Esempio n. 15
0
    def node_reboot(self, node_name):
        """
        To reboot the node,
        reboot time specific to
        created node configuration
        :returns: None
        :rtype: NoneType
        """
        driver = self._get_driver()
        db_client = Evemongo_client()
        
        #Take the running node list
        nodes = self.node_refresh(False)
        node = {}
        for n in nodes:
            if n.name == node_name:
                node = n
                break

        if bool(node) == False:
            Console.error("No node found to reboot")
        else:
            if node.state == NodeState.RUNNING:
                isNodeReboot = node.reboot()
            n = 0 ;
            e = {}
            data = {}
            data['uuid'] = str(node.uuid)
            data['name'] = str(node.name)
            data['state'] = str(node.state)
            data['public_ips'] = str(node.public_ips)
            data['private_ips'] = str(node.private_ips)
            data['provider'] = str(node.driver.name)
            e[n] = data
            n = n + 1
            Console.ok(str(Printer.dict_table(e, order=['uuid', 'name', 'state', 'public_ips', 'private_ips','provider'])))
            print("Node is NodeState.REBOOTING---------------",isNodeReboot)
            if isNodeReboot :
                #Delete the node from db as well
                print("Node deleted from db")
                #db_client.delete(NODE)
        return        
Esempio n. 16
0
    def flavor_refresh(self):
        """
        List all the flavor list
        available on Amazon EC2
        :returns: None
        :rtype: NoneType
        """
        #get driver
        driver = self._get_driver()

        # get flavor list and print
        sizes = driver.list_sizes()
        #print(sizes)
        n = 1   
        e = {}
        db_client = Evemongo_client()
        db_client.delete(FLAVOR)
        for size in sizes:
            # parse flavors
            data = {}
            data['id'] = size .id
            data['name'] = size.name
            data['ram'] = size.ram
            data['disk'] = size.disk
            data['price'] = size.price

            e[n] = data
            n = n + 1
            # store it in mongodb
            db_client.post(FLAVOR, data)
            #print(data)    
        
        Console.ok(str(Printer.dict_table(e, order=['id', 'name', 'ram', 'disk', 'bandwidth', 'price'])))

        #print("successfully stored in db", r)
        return
Esempio n. 17
0
 def drop_collections(self):
     db_client = Evemongo_client()
     #Some test functionality
     print("======Delete db=========")
     db_client.delete_database(FLAVOR)
     return