예제 #1
0
    def _vm_delete(self):
        """
        delete a VM instance 
        """
        # -------------------------
        # check input
        if self.arguments['NAME'] is None and \
                        self.arguments['--id'] is None and \
                        self.arguments['--group'] is None and \
                        self.arguments['--cloud'] is None and \
                        self.arguments['--prefix'] is None and \
                        self.arguments['--names'] is None:
            print("Please specify at least one option, to get more information: vm help")
            return

        cloudname = self.get_working_cloud_name()
        if not cloudname:
            return

        deleteAllCloudVMs = False
        if (self.arguments['--cloud'] and
                    self.arguments['NAME'] is None and
                    self.arguments['--id'] is None and
                    self.arguments['--group'] is None and
                    self.arguments['--prefix'] is None and
                    self.arguments['--names'] is None):
            deleteAllCloudVMs = True

        if self.arguments['--force']:
            preview = False
        else:
            preview = True

        server_id_list = get_vms_look_for(self.username,
                                          cloudname,
                                          servername=self.arguments['NAME'],
                                          serverid=self.arguments['--id'],
                                          groupname=self.arguments['--group'],
                                          prefix=self.arguments['--prefix'],
                                          hostls=self.arguments['--names'],
                                          getAll=deleteAllCloudVMs,
                                          refresh=True)
        if not server_id_list:
            return
        delete_vm(self.username,
                  cloudname,
                  server_id_list=server_id_list,
                  preview=preview,
                  refresh=False)
예제 #2
0
    def _show_ip(self):
        '''
        list the ips of VMs
        '''
        mongo = cm_mongo()
        cloudname = self.get_working_cloud_name()
        if not cloudname:
            return
        if get_command_list_refresh_default_setting(self.username) or self.arguments['--refresh']:
            mongo.activate(cm_user_id=self.username, names=[cloudname])
            mongo.refresh(cm_user_id=self.username,
                          names=[cloudname],
                          types=['servers'])

        servers_dict = mongo.servers(
            clouds=[cloudname], cm_user_id=self.username)[cloudname]

        AllCloudVMs = False
        if (self.arguments['--cloud'] and
                    self.arguments['NAME'] is None and
                    self.arguments['--id'] is None and
                    self.arguments['--group'] is None and
                    self.arguments['--prefix'] is None and
                    self.arguments['--names'] is None):
            AllCloudVMs = True

        server_id_list = get_vms_look_for(self.username,
                                          cloudname,
                                          servername=self.arguments['NAME'],
                                          serverid=self.arguments['--id'],
                                          groupname=self.arguments['--group'],
                                          prefix=self.arguments['--prefix'],
                                          hostls=self.arguments['--names'],
                                          getAll=AllCloudVMs,
                                          refresh=False)
        if not server_id_list:
            return
        if server_id_list == []:
            Console.warning("no vm meets the condition")
            return

        res = {}
        for item in server_id_list:
            temp = servers_dict[item]['addresses']
            temp_val = temp.keys()[0]
            temp = temp[temp_val]
            fixed = ""
            floating = ""
            for item0 in temp:
                if item0['OS-EXT-IPS:type'] == 'fixed':
                    fixed = fixed + item0['addr'] + ", "
                elif item0['OS-EXT-IPS:type'] == 'floating':
                    floating = floating + item0['addr'] + ", "
            if fixed != "":
                fixed = fixed[:-2]
            if floating != "":
                floating = floating[:-2]
            temp0 = {}
            temp0['name'] = servers_dict[item]['name']
            temp0['fixed'] = fixed
            temp0['floating'] = floating
            res[item] = temp0

        if self.arguments['--format']:
            if self.arguments['--format'] not in ['table', 'json', 'csv']:
                Console.error("please select printing format among table, json and csv")
                return
            else:
                p_format = self.arguments['--format']
        else:
            p_format = None

        header = ['name', 'fixed', 'floating']

        shell_commands_dict_output(self.username,
                                   res,
                                   print_format=p_format,
                                   firstheader="id",
                                   header=header)