예제 #1
0
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
예제 #2
0
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()
예제 #3
0
    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 ""
예제 #4
0
    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"
                              ]))