Beispiel #1
0
class ListInfo(object):

    def __init__(self, arguments):
        self.cloudmanage = CloudManage()
        try:
            self.config = cm_config()
        except:
            Console.error("There is a problem with the configuration yaml files")

        self.username = self.config['cloudmesh']['profile']['username']

        self.arguments = arguments
        
        # pprint(self.arguments)
        
        self.cloudmanage = CloudManage()
        try:
            self.config = cm_config()
        except:
            Console.error("There is a problem with the configuration yaml files")
    
        self.username = self.config['cloudmesh']['profile']['username']
        self.refresh_default_setting = get_command_list_refresh_default_setting(self.username)

    def _list_flavor(self):
        self.cloudmanage._connect_to_mongo()
        clouds = self.get_working_cloud_name()
        if clouds:
            itemkeys = [
                ['id', 'id'],
                ['name', 'name'],
                ['vcpus', 'vcpus'],
                ['ram', 'ram'],
                ['disk', 'disk'],
                ['refresh time', 'cm_refresh']
            ]
            if self.refresh_default_setting or self.arguments['--refresh']:
                self.cloudmanage.mongo.activate(
                    cm_user_id=self.username, names=clouds)
                self.cloudmanage.mongo.refresh(
                    cm_user_id=self.username, names=clouds, types=['flavors'])

            # --format
            p_format = self.arguments['--format']

            # --column
            # available columns are: id, name, vcpus, ram, disk, refresh time,
            # and all

            if self.arguments['--column']:
                if self.arguments['--column'] != "all":
                    s_column = [x.strip() for x in
                                self.arguments['--column'].split(',')]
                    new_itemkeys = []
                    for item in itemkeys:
                        if item[0] in s_column:
                            new_itemkeys.append(item)
                    itemkeys = new_itemkeys

            for cloud in clouds:
                self.cloudmanage.print_cloud_flavors(username=self.username,
                                                     cloudname=cloud.encode(
                                                         "ascii"),
                                                     itemkeys=itemkeys,
                                                     refresh=False,
                                                     output=False,
                                                     print_format=p_format)
        else:
            return

    def _list_image(self):
        self.cloudmanage._connect_to_mongo()
        clouds = self.get_working_cloud_name()
        if clouds:
            itemkeys = {"openstack":
                        [
                            # [ "Metadata", "metadata"],
                            ["name", "name"],
                            ["status", "status"],
                            ["id", "id"],
                            ["type_id", "metadata", "instance_type_id"],
                            ["iname", "metadata", "instance_type_name"],
                            ["location", "metadata", "image_location"],
                            ["state", "metadata", "image_state"],
                            ["updated", "updated"],
                            # [ "minDisk" , "minDisk"],
                            ["memory_mb", "metadata",
                                'instance_type_memory_mb'],
                            ["fid", "metadata", "instance_type_flavorid"],
                            ["vcpus", "metadata", "instance_type_vcpus"],
                            # [ "user_id" , "metadata", "user_id"],
                            # [ "owner_id" , "metadata", "owner_id"],
                            # [ "gb" , "metadata", "instance_type_root_gb"],
                            # [ "arch", ""]
                        ],
                        "ec2":
                        [
                            # [ "Metadata", "metadata"],
                            ["state", "extra", "state"],
                            ["name", "name"],
                            ["id", "id"],
                            ["public", "extra", "is_public"],
                            ["ownerid", "extra", "owner_id"],
                            ["imagetype", "extra", "image_type"]
                        ],
                        "azure":
                        [
                            ["name", "label"],
                            ["category", "category"],
                            ["id", "id"],
                            ["size", "logical_size_in_gb"],
                            ["os", "os"]
                        ],
                        "aws":
                        [
                            ["state", "extra", "state"],
                            ["name", "name"],
                            ["id", "id"],
                            ["public", "extra", "ispublic"],
                            ["ownerid", "extra", "ownerid"],
                            ["imagetype", "extra", "imagetype"]
                        ]
                        }
            if self.refresh_default_setting or self.arguments['--refresh']:
                self.cloudmanage.mongo.activate(
                    cm_user_id=self.username, names=clouds)
                self.cloudmanage.mongo.refresh(
                    cm_user_id=self.username, names=clouds, types=['images'])
            p_format = self.arguments['--format']

            # --column
            # available columns are: id, name, vcpus, ram, disk, refresh time,
            # and all

            if self.arguments['--column']:
                if self.arguments['--column'] != "all":
                    s_column = [x.strip() for x in
                                self.arguments['--column'].split(',')]
                    new_itemkeys = {x: [] for x in itemkeys.keys()}
                    for cloud, items in itemkeys.iteritems():
                        for item in items:
                            if item[0] in s_column:
                                new_itemkeys[cloud].append(item)
                    itemkeys = new_itemkeys

            for cloud in clouds:
                self.cloudmanage.print_cloud_images(username=self.username,
                                                    cloudname=cloud.encode(
                                                        "ascii"),
                                                    itemkeys=itemkeys,
                                                    refresh=False, output=False,
                                                    print_format=p_format)

        else:
            return

    def _list_server(self):
        self.cloudmanage._connect_to_mongo()
        clouds = self.get_working_cloud_name()
        if clouds:
            itemkeys = {"openstack":
                        [
                            ['name', 'name'],
                            ['status', 'status'],
                            ['addresses', 'addresses'],
                            ['id', 'id'],
                            ['flavor', 'flavor', 'id'],
                            ['image', 'image', 'id'],
                            ['user_id', 'cm_user_id'],
                            ['metadata', 'metadata'],
                            ['key_name', 'key_name'],
                            ['created', 'created'],
                            ['cloud', 'cm_cloud']
                        ],
                        "ec2":
                        [
                            ["name", "id"],
                            ["status", "extra", "status"],
                            ["addresses", "public_ips"],
                            ["flavor", "extra", "instance_type"],
                            ['id', 'id'],
                            ['image', 'extra', 'imageId'],
                            ["user_id", 'user_id'],
                            ["metadata", "metadata"],
                            ["key_name", "extra", "key_name"],
                            ["created", "extra", "launch_time"]
                        ],
                        "aws":
                        [
                            ["name", "name"],
                            ["status", "extra", "status"],
                            ["addresses", "public_ips"],
                            ["flavor", "extra", "instance_type"],
                            ['id', 'id'],
                            ['image', 'extra', 'image_id'],
                            ["user_id", "user_id"],
                            ["metadata", "metadata"],
                            ["key_name", "extra", "key_name"],
                            ["created", "extra", "launch_time"]
                        ],
                        "azure":
                        [
                            ['name', 'name'],
                            ['status', 'status'],
                            ['addresses', 'vip'],
                            ['flavor', 'flavor', 'id'],
                            ['id', 'id'],
                            ['image', 'image', 'id'],
                            ['user_id', 'user_id'],
                            ['metadata', 'metadata'],
                            ['key_name', 'key_name'],
                            ['created', 'created'],
                        ]
                        }
                        
            itemkeys_short = {"openstack":
                        [
                            ['name', 'name'],
                            ['status', 'status'],
                            ['addresses', 'addresses'],
                            ['flavor', 'flavor', 'id'],
                            ['image', 'image', 'id']
                        ],
                        "ec2":
                        [
                            ["name", "id"],
                            ["status", "extra", "status"],
                            ["addresses", "public_ips"],
                            ["flavor", "extra", "instance_type"],
                            ['image', 'extra', 'imageId']
                        ],
                        "aws":
                        [
                            ["name", "name"],
                            ["status", "extra", "status"],
                            ["addresses", "public_ips"],
                            ["flavor", "extra", "instance_type"],
                            ['image', 'extra', 'image_id']
                        ],
                        "azure":
                        [
                            ['name', 'name'],
                            ['status', 'status'],
                            ['addresses', 'vip'],
                            ['flavor', 'flavor', 'id'],
                            ['image', 'image', 'id']
                        ]
                        }
            if self.refresh_default_setting or self.arguments['--refresh']:
                self.cloudmanage.mongo.activate(
                    cm_user_id=self.username, names=clouds)
                self.cloudmanage.mongo.refresh(
                    cm_user_id=self.username, names=clouds, types=['servers'])
            p_format = self.arguments['--format']

            # --column
            # available columns are: id, name, vcpus, ram, disk, refresh time,
            # and all

            if self.arguments['--column']:
                if self.arguments['--column'] != "all":
                    s_column = [x.strip() for x in
                                self.arguments['--column'].split(',')]
                    new_itemkeys = {x: [] for x in itemkeys.keys()}
                    for cloud, items in itemkeys.iteritems():
                        for item in items:
                            if item[0] in s_column:
                                new_itemkeys[cloud].append(item)
                    itemkeys = new_itemkeys
            else:
                if not self.arguments['--detail']:
                    itemkeys = itemkeys_short

            for cloud in clouds:
                self.cloudmanage.print_cloud_servers(username=self.username,
                                                     cloudname=cloud.encode(
                                                         "ascii"),
                                                     itemkeys=itemkeys,
                                                     refresh=False,
                                                     output=False,
                                                     print_format=p_format,
                                                     group=self.arguments['--group'])

        else:
            return

    def _list_project(self):
        self.cloudmanage._connect_to_mongo()
        selected_project = None
        try:
            selected_project = self.cloudmanage.mongo.db_defaults.find_one(
                {'cm_user_id': self.username + "OIO"})['project']
        except Exception, NoneType:
            Console.warning("could not find selected project in the database")

        except Exception, e:
            Console.error("could not connect to the database")
            print(e)
Beispiel #2
0
class ListInfo(object):
    def __init__(self, arguments):
        self.cloudmanage = CloudManage()
        try:
            self.config = cm_config()
        except:
            Console.error(
                "There is a problem with the configuration yaml files")

        self.username = self.config['cloudmesh']['profile']['username']

        self.arguments = arguments

        # pprint(self.arguments)

        self.cloudmanage = CloudManage()
        try:
            self.config = cm_config()
        except:
            Console.error(
                "There is a problem with the configuration yaml files")

        self.username = self.config['cloudmesh']['profile']['username']
        self.refresh_default_setting = get_command_list_refresh_default_setting(
            self.username)

    def _list_flavor(self):
        self.cloudmanage._connect_to_mongo()
        clouds = self.get_working_cloud_name()
        if clouds:
            itemkeys = [['id', 'id'], ['name', 'name'], ['vcpus', 'vcpus'],
                        ['ram', 'ram'], ['disk', 'disk'],
                        ['refresh time', 'cm_refresh']]
            if self.refresh_default_setting or self.arguments['--refresh']:
                self.cloudmanage.mongo.activate(cm_user_id=self.username,
                                                names=clouds)
                self.cloudmanage.mongo.refresh(cm_user_id=self.username,
                                               names=clouds,
                                               types=['flavors'])

            # --format
            p_format = self.arguments['--format']

            # --column
            # available columns are: id, name, vcpus, ram, disk, refresh time,
            # and all

            if self.arguments['--column']:
                if self.arguments['--column'] != "all":
                    s_column = [
                        x.strip()
                        for x in self.arguments['--column'].split(',')
                    ]
                    new_itemkeys = []
                    for item in itemkeys:
                        if item[0] in s_column:
                            new_itemkeys.append(item)
                    itemkeys = new_itemkeys

            for cloud in clouds:
                self.cloudmanage.print_cloud_flavors(
                    username=self.username,
                    cloudname=cloud.encode("ascii"),
                    itemkeys=itemkeys,
                    refresh=False,
                    output=False,
                    print_format=p_format)
        else:
            return

    def _list_image(self):
        self.cloudmanage._connect_to_mongo()
        clouds = self.get_working_cloud_name()
        if clouds:
            itemkeys = {
                "openstack": [
                    # [ "Metadata", "metadata"],
                    ["name", "name"],
                    ["status", "status"],
                    ["id", "id"],
                    ["type_id", "metadata", "instance_type_id"],
                    ["iname", "metadata", "instance_type_name"],
                    ["location", "metadata", "image_location"],
                    ["state", "metadata", "image_state"],
                    ["updated", "updated"],
                    # [ "minDisk" , "minDisk"],
                    ["memory_mb", "metadata", 'instance_type_memory_mb'],
                    ["fid", "metadata", "instance_type_flavorid"],
                    ["vcpus", "metadata", "instance_type_vcpus"],
                    # [ "user_id" , "metadata", "user_id"],
                    # [ "owner_id" , "metadata", "owner_id"],
                    # [ "gb" , "metadata", "instance_type_root_gb"],
                    # [ "arch", ""]
                ],
                "ec2": [
                    # [ "Metadata", "metadata"],
                    ["state", "extra", "state"],
                    ["name", "name"],
                    ["id", "id"],
                    ["public", "extra", "is_public"],
                    ["ownerid", "extra", "owner_id"],
                    ["imagetype", "extra", "image_type"]
                ],
                "azure": [["name", "label"], ["category", "category"],
                          ["id", "id"], ["size", "logical_size_in_gb"],
                          ["os", "os"]],
                "aws": [["state", "extra", "state"], ["name", "name"],
                        ["id", "id"], ["public", "extra", "ispublic"],
                        ["ownerid", "extra", "ownerid"],
                        ["imagetype", "extra", "imagetype"]]
            }
            if self.refresh_default_setting or self.arguments['--refresh']:
                self.cloudmanage.mongo.activate(cm_user_id=self.username,
                                                names=clouds)
                self.cloudmanage.mongo.refresh(cm_user_id=self.username,
                                               names=clouds,
                                               types=['images'])
            p_format = self.arguments['--format']

            # --column
            # available columns are: id, name, vcpus, ram, disk, refresh time,
            # and all

            if self.arguments['--column']:
                if self.arguments['--column'] != "all":
                    s_column = [
                        x.strip()
                        for x in self.arguments['--column'].split(',')
                    ]
                    new_itemkeys = {x: [] for x in itemkeys.keys()}
                    for cloud, items in itemkeys.iteritems():
                        for item in items:
                            if item[0] in s_column:
                                new_itemkeys[cloud].append(item)
                    itemkeys = new_itemkeys

            for cloud in clouds:
                self.cloudmanage.print_cloud_images(
                    username=self.username,
                    cloudname=cloud.encode("ascii"),
                    itemkeys=itemkeys,
                    refresh=False,
                    output=False,
                    print_format=p_format)

        else:
            return

    def _list_server(self):
        self.cloudmanage._connect_to_mongo()
        clouds = self.get_working_cloud_name()
        if clouds:
            itemkeys = {
                "openstack": [['name', 'name'], ['status', 'status'],
                              ['addresses', 'addresses'], ['id', 'id'],
                              ['flavor', 'flavor', 'id'],
                              ['image', 'image', 'id'],
                              ['user_id', 'cm_user_id'],
                              ['metadata', 'metadata'],
                              ['key_name', 'key_name'], ['created', 'created'],
                              ['cloud', 'cm_cloud']],
                "ec2": [["name", "id"], ["status", "extra", "status"],
                        ["addresses", "public_ips"],
                        ["flavor", "extra", "instance_type"], ['id', 'id'],
                        ['image', 'extra', 'imageId'], ["user_id", 'user_id'],
                        ["metadata", "metadata"],
                        ["key_name", "extra", "key_name"],
                        ["created", "extra", "launch_time"]],
                "aws": [["name", "name"], ["status", "extra", "status"],
                        ["addresses", "public_ips"],
                        ["flavor", "extra", "instance_type"], ['id', 'id'],
                        ['image', 'extra', 'image_id'], ["user_id", "user_id"],
                        ["metadata", "metadata"],
                        ["key_name", "extra", "key_name"],
                        ["created", "extra", "launch_time"]],
                "azure": [
                    ['name', 'name'],
                    ['status', 'status'],
                    ['addresses', 'vip'],
                    ['flavor', 'flavor', 'id'],
                    ['id', 'id'],
                    ['image', 'image', 'id'],
                    ['user_id', 'user_id'],
                    ['metadata', 'metadata'],
                    ['key_name', 'key_name'],
                    ['created', 'created'],
                ]
            }

            itemkeys_short = {
                "openstack": [['name', 'name'], ['status', 'status'],
                              ['addresses', 'addresses'],
                              ['flavor', 'flavor', 'id'],
                              ['image', 'image', 'id']],
                "ec2": [["name", "id"], ["status", "extra", "status"],
                        ["addresses", "public_ips"],
                        ["flavor", "extra", "instance_type"],
                        ['image', 'extra', 'imageId']],
                "aws": [["name", "name"], ["status", "extra", "status"],
                        ["addresses", "public_ips"],
                        ["flavor", "extra", "instance_type"],
                        ['image', 'extra', 'image_id']],
                "azure": [['name', 'name'], ['status', 'status'],
                          ['addresses', 'vip'], ['flavor', 'flavor', 'id'],
                          ['image', 'image', 'id']]
            }
            if self.refresh_default_setting or self.arguments['--refresh']:
                self.cloudmanage.mongo.activate(cm_user_id=self.username,
                                                names=clouds)
                self.cloudmanage.mongo.refresh(cm_user_id=self.username,
                                               names=clouds,
                                               types=['servers'])
            p_format = self.arguments['--format']

            # --column
            # available columns are: id, name, vcpus, ram, disk, refresh time,
            # and all

            if self.arguments['--column']:
                if self.arguments['--column'] != "all":
                    s_column = [
                        x.strip()
                        for x in self.arguments['--column'].split(',')
                    ]
                    new_itemkeys = {x: [] for x in itemkeys.keys()}
                    for cloud, items in itemkeys.iteritems():
                        for item in items:
                            if item[0] in s_column:
                                new_itemkeys[cloud].append(item)
                    itemkeys = new_itemkeys
            else:
                if not self.arguments['--detail']:
                    itemkeys = itemkeys_short

            for cloud in clouds:
                self.cloudmanage.print_cloud_servers(
                    username=self.username,
                    cloudname=cloud.encode("ascii"),
                    itemkeys=itemkeys,
                    refresh=False,
                    output=False,
                    print_format=p_format,
                    group=self.arguments['--group'])

        else:
            return

    def _list_project(self):
        self.cloudmanage._connect_to_mongo()
        selected_project = None
        try:
            selected_project = self.cloudmanage.mongo.db_defaults.find_one(
                {'cm_user_id': self.username + "OIO"})['project']
        except Exception, NoneType:
            Console.warning("could not find selected project in the database")

        except Exception, e:
            Console.error("could not connect to the database")
            print(e)