def image(service: str) -> list: """ Lists the images on teh cloud service :param service: The name of the service :return: the information in json format """ provider = Provider(name=service) result = provider.images() if flat and result: result = provider.Prints(result, kind="vm", output="flat") return result
class TestName: def setup(self): print() self.user = Config()["cloudmesh"]["profile"]["user"] self.clouduser = '******' self.name_generator = Name(experiment="exp", group="grp", user=self.user, kind="vm", counter=1) self.name = str(self.name_generator) self.name_generator.incr() self.new_name = str(self.name_generator) variables = Variables() cloud = variables['cloud'] self.p = Provider(name=cloud) self.secgroupname = "CM4TestSecGroup" self.secgrouprule = { "ip_protocol": "tcp", "from_port": 8080, "to_port": 8088, "ip_range": "129.79.0.0/16" } self.testnode = None print("\n") def test_01_list_flavors(self): HEADING() flavors = self.p.flavors() def test_02_list_images(self): HEADING() flavors = self.p.images() def test_03_list_keys(self): HEADING() self.keys = self.p.keys() def test_03_list_nodes(self): HEADING() self.keys = self.p.list()
def do_image(self, args, arguments): """ :: Usage: image list [NAMES] [--cloud=CLOUD] [--refresh] [--output=OUTPUT] [--query=QUERY] Options: --output=OUTPUT the output format [default: table] --cloud=CLOUD the cloud name --refresh live data taken from the cloud Description: image list image list --cloud=aws --refresh image list --output=csv image list 58c9552c-8d93-42c0-9dea-5f48d90a3188 --refresh """ map_parameters(arguments, "query", "refresh", "cloud", "output") variables = Variables() arguments.output = Parameter.find("output", arguments, variables, "table") arguments.refresh = Parameter.find_bool("refresh", arguments, variables) if arguments.list and arguments["--query"]: names = [] clouds, names = Arguments.get_cloud_and_names( "list", arguments, variables) for cloud in clouds: print(f"cloud {cloud} query={arguments.query}") provider = Provider(name=cloud) if arguments.query is not None: query = eval(arguments.query) images = provider.images(**query) else: images = provider.images() provider.Print(images, output=arguments.output, kind="image") return "" if arguments.list and arguments.refresh: names = [] clouds, names = Arguments.get_cloud_and_names( "list", arguments, variables) for cloud in clouds: print(f"cloud {cloud}") provider = Provider(name=cloud) images = provider.images() provider.Print(images, output=arguments.output, kind="image") return "" elif arguments.list: clouds, names = Arguments.get_cloud_and_names( "list", arguments, variables) print(clouds) print("find images") try: for cloud in clouds: print(f"List {cloud} images") provider = Provider(name=cloud) db = CmDatabase() images = db.find(collection=f"{cloud}-image") provider.Print(images, output=arguments.output, kind="image") except Exception as e: VERBOSE(e) return ""
def do_image(self, args, arguments): """ :: Usage: image list [NAMES] [--cloud=CLOUD] [--refresh] [--output=OUTPUT] Options: --output=OUTPUT the output format [default: table] --cloud=CLOUD the cloud name --refresh live data taken from the cloud Description: cm image list cm image list --output=csv cm image list 58c9552c-8d93-42c0-9dea-5f48d90a3188 --refresh """ map_parameters(arguments, "refresh", "cloud", "output") VERBOSE.print(arguments, verbose=9) variables = Variables() if arguments.list and arguments.refresh: names = [] clouds, names = Arguments.get_cloud_and_names( "list", arguments, variables) print("AAA", clouds, names) for cloud in clouds: print(f"cloud {cloud}") provider = Provider(name=cloud) images = provider.images() order = provider.p.output['vm']['order'] # not pretty header = provider.p.output['vm']['header'] # not pretty print( Printer.flatwrite(images, sort_keys=["name"], order=order, header=header, output=arguments.output)) return "" elif arguments.list: names = [] clouds, names = Arguments.get_cloud_and_names( "list", arguments, variables) print(clouds, names) try: for cloud in clouds: print(f"List {cloud}") p = Provider(cloud) kind = p.kind collection = "{cloud}-image".format(cloud=cloud, kind=p.kind) db = CmDatabase() vms = db.find(collection=collection) order = p.p.output['vm']['order'] # not pretty header = p.p.output['vm']['header'] # not pretty print( Printer.flatwrite(vms, sort_keys=["name"], order=order, header=header, output=arguments.output)) except Exception as e: VERBOSE.print(e, verbose=9) return ""
class Test_Compute_Database: def setup(self): print() self.user = Config()["cloudmesh"]["profile"]["user"] self.clouduser = '******' self.name_generator = Name(experiment="exp", group="grp", user=self.user, kind="vm", counter=1) self.name = str(self.name_generator) self.name_generator.incr() self.new_name = str(self.name_generator) variables = Variables() clouds = Parameter.expand(variables['cloud']) cloud = clouds[0] self.p = Provider(name=cloud) self.secgroupname = "CM4TestSecGroup" self.secgrouprule = { "ip_protocol": "tcp", "from_port": 8080, "to_port": 8088, "ip_range": "129.79.0.0/16" } self.testnode = None print("\n") def test_00_banner(self): StopWatch.start("banner") banner("START", color="RED") StopWatch.stop("banner") def test_01_list_flavors(self): HEADING() StopWatch.start("list flavors") flavors = self.p.flavors() StopWatch.stop("list flavors") def test_02_list_images(self): HEADING() StopWatch.start("list images") images = self.p.images() StopWatch.stop("list images") def test_03_list_nodes(self): HEADING() StopWatch.start("list nodes") nodes = self.p.list() StopWatch.stop("list nodes") def test_04_list_keys(self): HEADING() StopWatch.start("list keys") self.keys = self.p.keys() # pprint(self.keys) # print(Printer.flatwrite(self.keys, # sort_keys=["name"], # order=["name", "fingerprint"], # header=["Name", "Fingerprint"]) # ) StopWatch.stop("list keys") def test_05_key_upload(self): HEADING() StopWatch.start("key upload") key = SSHkey() print(key.__dict__) self.p.key_upload(key) self.test_04_list_keys() StopWatch.stop("key upload") def test_06_list_images(self): HEADING() StopWatch.start("list images2") images = self.p.images() # pprint(images) sort_keys = self.p.p.output['image']['sort_keys'] # not pretty order = self.p.p.output['image']['order'] # not pretty header = self.p.p.output['image']['header'] # not pretty print( Printer.flatwrite(images, sort_keys=sort_keys, order=order, header=header)) StopWatch.stop("list images2") def test_07_list_vm(self): HEADING() StopWatch.start("list vm") vms = self.p.list() # pprint (vms) sort_keys = self.p.p.output['vm']['sort_keys'] # not pretty order = self.p.p.output['vm']['order'] # not pretty header = self.p.p.output['vm']['header'] # not pretty print( Printer.flatwrite(vms, sort_keys=sort_keys, order=order, header=header)) StopWatch.stop("list vm") def test_print(self): HEADING() StopWatch.benchmark()
class TestDatabase: def setup(self): print() self.user = Config()["cloudmesh"]["profile"]["user"] self.clouduser = '******' self.name_generator = Name(experiment="exp", group="grp", user=self.user, kind="vm", counter=1) self.name = str(self.name_generator) self.name_generator.incr() self.new_name = str(self.name_generator) variables = Variables() clouds = Parameter.expand(variables['cloud']) cloud = clouds[0] self.p = Provider(name=cloud) self.secgroupname = "CM4TestSecGroup" self.secgrouprule = { "ip_protocol": "tcp", "from_port": 8080, "to_port": 8088, "ip_range": "129.79.0.0/16" } self.testnode = None print("\n") def test_00_banner(self): banner("START", color="RED") def test_01_list_flavors(self): HEADING() flavors = self.p.flavors() def test_02_list_images(self): HEADING() images = self.p.images() def test_03_list_nodes(self): HEADING() nodes = self.p.list() def test_04_list_keys(self): HEADING() self.keys = self.p.keys() # pprint(self.keys) #print(Printer.flatwrite(self.keys, # sort_keys=("name"), # order=["name", "fingerprint"], # header=["Name", "Fingerprint"]) # ) def test_05_key_upload(self): HEADING() key = SSHkey() print(key.__dict__) self.p.key_upload(key) self.test_04_list_keys() def test_06_list_images(self): HEADING() images = self.p.images() #pprint(images) print( Printer.flatwrite( images, sort_keys=("name", "extra.minDisk"), order=["name", "extra.minDisk", "updated", "driver"], header=["Name", "MinDisk", "Updated", "Driver"])) def test_07_list_vm(self): HEADING() vms = self.p.list() #pprint (vms) print( Printer.flatwrite(vms, sort_keys=("name"), order=[ "name", "state", "extra.task_state", "extra.vm_state", "extra.userId", "extra.key_name", "private_ips", "public_ips" ], header=[ "Name", "State", "Task state", "VM state", "User Id", "SSHKey", "Private ips", "Public ips" ]))