コード例 #1
0
ファイル: test_utils.py プロジェクト: sofyan48/neo-cli
 def test_get_project(self):
     os.chdir("tests")
     default_file = orch.check_manifest_file()
     os.chdir(os.pardir)
     assert utils.get_project(default_file) == [
         'unittest-network', 'unittest-vm', 'unittest-key'
     ]
コード例 #2
0
ファイル: update.py プロジェクト: sdmoko/neo-cli
    def execute(self):
        headers = ["ID", "Name", "Status", "Created", "Updated"]

        set_file = self.args["--file"]
        default_file = orch.check_manifest_file()

        if set_file:
            if os.path.exists(set_file):
                default_file = set_file
            else:
                utils.log_err("{} file is not exists!".format(set_file))
                exit()

        if not default_file:
            utils.log_err("Can't find neo.yml manifest file!")
            exit()

        deploy_init = orch.initialize(default_file)
        try:
            orch.do_update(deploy_init)
        except:
            utils.log_err("Update Stack failed...")
            exit()

        projects = utils.get_project(default_file)

        project_list = list()
        for project in projects:
            proj = orch.get_stack(project)
            if proj:
                project_list.append(proj)

        if len(project_list) > 0:
            print(tabulate(project_list, headers=headers, tablefmt="grid"))
コード例 #3
0
 def test_get_project(self):
     current_path = path.abspath(path.dirname(__file__))
     parent_path = pathlib.Path(current_path).parent
     assert ["awesome-project"
             ] == utils.get_project(f"{parent_path}/fixtures/manifest.yml")
コード例 #4
0
    def execute(self):

        set_file = self.args["--file"]
        default_file = orch.check_manifest_file()

        if self.args["vm"]:
            instance_id = self.args["<VM_ID>"]
            try:
                q_vm = utils.question(
                    "Are you sure to delete this virtual machines ? ")

                if q_vm:
                    vm_lib.do_delete(instance_id)
                    utils.log_info("VM has been deleted")
            except Exception as e:
                utils.log_err(e)
            else:
                pass
            finally:
                pass
            exit()

        if self.args["network"]:
            network_id = self.args["<NETWORK_ID>"]
            try:
                q_net = utils.question("Are you sure to delete this network ?")

                if q_net:
                    network_lib.do_delete(network_id)
                    utils.log_info("network has been deleted")
            except Exception as e:
                utils.log_err(e)
            else:
                pass
            finally:
                pass
            exit()

        if self.args["stack"]:
            stack_name = self.args["<STACK_NAME>"]
            try:
                q_stack = utils.question(
                    'Are you sure to delete "{}" stack ? '.format(stack_name))

                if q_stack:
                    proj = orch.do_delete(stack_name)
                    if proj:
                        utils.log_info(
                            "Stack {} has been deleted".format(stack_name))
                    else:
                        utils.log_err(
                            "Stack {} is not exists".format(stack_name))
            except Exception as e:
                utils.log_err(e)
            else:
                pass
            finally:
                pass
            exit()

        if set_file:
            if os.path.exists(set_file):
                default_file = "{}".format(set_file)
            else:
                utils.log_err("{} file is not exists!".format(set_file))
                print(self.__doc__)
                exit()

        if not default_file:
            utils.log_err("Can't find neo.yml manifest file!")
            print(self.__doc__)
            exit()

        projects = utils.get_project(default_file)
        project_answer = ",".join(projects)
        q_project = utils.question(
            "Are you sure to delete {} ? ".format(project_answer))

        if q_project:
            for project in projects:
                proj = orch.do_delete(project)
                if proj:
                    utils.log_info("Stack {} has been deleted".format(project))
                else:
                    utils.log_err("Stack {} is not exists".format(project))
コード例 #5
0
ファイル: ls.py プロジェクト: nofriiza/neo-cli
    def execute(self):
        headers = ["ID", "Name", "Status", "Created", "Updated"]
        if self.args["stack"]:
            print(tabulate(orch.get_list(), headers=headers, tablefmt="grid"))
            exit()

        set_file = self.args["--file"]
        default_file = orch.check_manifest_file()

        if self.args["vm"]:
            try:
                data_instance = list()
                for instance in vm_lib.get_list():
                    pre_instance = [
                        instance.id, instance.name, instance.key_name
                    ]
                    pre_instance.append(
                        image.detail(instance.image["id"]).name)
                    flavors = vm_lib.detail_flavor(instance.flavor["id"])
                    flavors_name = flavors.name
                    flavors_vcpu = flavors.vcpus
                    flavors_ram = bitmath.MiB(
                        flavors.ram).to_GiB().best_prefix()
                    pre_instance.append(flavors_name)
                    pre_instance.append(flavors_ram)
                    pre_instance.append(flavors_vcpu)

                    # Address
                    addr = list()
                    addr_objs = utils.get_index(instance.addresses)
                    if len(addr_objs) > 0:
                        for addr_obj in addr_objs:
                            addr.append("network : {}".format(addr_obj))
                            for addr_ip in instance.addresses[addr_obj]:
                                addr_meta = "{} IP : {}".format(
                                    addr_ip["OS-EXT-IPS:type"],
                                    addr_ip["addr"])
                                addr.append(addr_meta)
                    if len(addr) > 0:
                        pre_instance.append("\n".join(addr))
                    else:
                        pre_instance.append("")

                    pre_instance.append(instance.status)
                    data_instance.append(pre_instance)

                if len(data_instance) == 0:
                    utils.log_err("No Data...")
                    print(self.__doc__)

            except Exception as e:
                utils.log_err(e)
                exit()
            print(
                tabulate(
                    data_instance,
                    headers=[
                        "ID",
                        "Name",
                        "Key Pair",
                        "Image",
                        "Flavor",
                        "RAM (GiB)",
                        "vCPU",
                        "Addresses",
                        "Status",
                    ],
                    tablefmt="grid",
                ))
            exit()

        if self.args["network"]:
            data_network = [[
                network["id"], network["name"], network["status"]
            ] for network in network_lib.get_list()]
            if len(data_network) == 0:
                utils.log_err("No Data...")
                print(self.__doc__)
                exit()
            print(
                tabulate(data_network,
                         headers=["ID", "Name", "Status"],
                         tablefmt="grid"))
            exit()

        if self.args["floatingips"]:
            data_floatingips = [[
                floatingips["floating_ip_address"],
                floatingips["created_at"],
                floatingips["status"],
            ] for floatingips in network_lib.get_floatingips()]
            if len(data_floatingips) == 0:
                utils.log_err("No Data...")
                print(self.__doc__)
                exit()
            print(
                tabulate(
                    data_floatingips,
                    headers=["IP Address", "Created at", "Status"],
                    tablefmt="grid",
                ))
            exit()

        if self.args["--outputs"]:
            stack_name = self.args["--outputs"].split(".")
            if len(stack_name) is 1:
                for meta in orch.get_meta_stack(stack_name[0]):
                    print(meta["output_key"], " :")
                    print(meta["output_value"])
                    print("")
            if len(stack_name) is 2:
                print(orch.get_metadata(stack_name[0], stack_name[1]))
            exit()

        if set_file:
            if os.path.exists(set_file):
                default_file = "{}".format(set_file)
            else:
                utils.log_err("{} file is not exists!".format(set_file))
                print(self.__doc__)
                exit()

        if not default_file:
            utils.log_err("Oops!! Can't find neo.yml manifest file!")
            print(self.__doc__)
            exit()

        projects = utils.get_project(default_file)

        project_list = list()
        for project in projects:
            proj = orch.get_stack(project)
            if proj:
                project_list.append(proj)

        if len(project_list) > 0:
            print(tabulate(project_list, headers=headers, tablefmt="grid"))
        else:
            utils.log_err("No Data...")
            print(self.__doc__)
コード例 #6
0
    def execute(self):

        set_file = self.args["--file"]
        default_file = orch.check_manifest_file()

        if self.args["vm"]:
            instance_id = self.args["<VM_ID>"]
            try:
                answer = ""
                while answer not in ["y", "n"]:
                    answer = input(
                        "Are you sure to delete this virtual machines [y/n]? "
                    ).lower()

                if answer == "y":
                    vm_lib.do_delete(instance_id)
                    utils.log_info("VM has been deleted")
            except Exception as e:
                utils.log_err(e)
            else:
                pass
            finally:
                pass
            exit()

        if self.args["network"]:
            network_id = self.args["<NETWORK_ID>"]
            try:
                answer = ""
                while answer not in ["y", "n"]:
                    answer = input(
                        "Are you sure to delete this network [Y/N]? ")

                if answer == "y":
                    network_lib.do_delete(network_id)
                    utils.log_info("network has been deleted")
            except Exception as e:
                utils.log_err(e)
            else:
                pass
            finally:
                pass
            exit()

        if self.args["stack"]:
            stack_name = self.args["<STACK_NAME>"]
            try:
                answer = ""
                while answer not in ["y", "n"]:
                    answer = input(
                        "Are you sure to delete \"{}\" stack [Y/N]? ".format(stack_name))

                if answer == "y":
                    proj = orch.do_delete(stack_name)
                    if proj:
                        utils.log_info("Stack {} has been deleted".format(stack_name))
                    else:
                        utils.log_err("Stack {} is not exists".format(stack_name))
            except Exception as e:
                utils.log_err(e)
            else:
                pass
            finally:
                pass
            exit()

        if set_file:
            if os.path.exists(set_file):
                default_file = "{}".format(set_file)
            else:
                utils.log_err("{} file is not exists!".format(set_file))
                print(self.__doc__)
                exit()

        if not default_file:
            utils.log_err("Can't find neo.yml manifest file!")
            print(self.__doc__)
            exit()

        projects = utils.get_project(default_file)
        project_answer = ",".join(projects)
        answer = ""
        while answer not in ["y", "n"]:
            answer = input("Are you sure to delete {} [y/n]? ".format(
                project_answer).lower())

        if answer == "y":
            for project in projects:
                proj = orch.do_delete(project)
                if proj:
                    utils.log_info("Stack {} has been deleted".format(project))
                else:
                    utils.log_err("Stack {} is not exists".format(project))
コード例 #7
0
ファイル: ls.py プロジェクト: sdmoko/neo-cli
    def execute(self):
        headers = ["ID", "Name", "Status", "Created", "Updated"]
        if self.args["stack"]:
            print(tabulate(orch.get_list(), headers=headers, tablefmt="grid"))
            exit()

        set_file = self.args["--file"]
        default_file = orch.check_manifest_file()

        if self.args["vm"]:
            data_instance = list()
            for instance in vm_lib.get_list():
                pre_instance = [instance.id, instance.name]
                pre_instance.append(image.detail(instance.image["id"]).name)
                flavors = vm_lib.detail_flavor(instance.flavor["id"])
                flavors_name = flavors.name
                flavors_vcpu = flavors.vcpus
                flavors_ram = bitmath.MiB(flavors.ram).to_GiB().best_prefix()
                pre_instance.append(flavors_name)
                pre_instance.append(flavors_ram)
                pre_instance.append(flavors_vcpu)

                # Address
                addr = list()
                addr_objs = utils.get_index(instance.addresses)
                if len(addr_objs) > 0:
                    for addr_obj in addr_objs:
                        addr.append("network : {}".format(addr_obj))
                        for addr_ip in instance.addresses[addr_obj]:
                            addr_meta = "{} IP : {}".format(
                                addr_ip["OS-EXT-IPS:type"], addr_ip["addr"])
                            addr.append(addr_meta)
                if len(addr) > 0:
                    pre_instance.append("\n".join(addr))
                else:
                    pre_instance.append("")

                pre_instance.append(instance.status)
                data_instance.append(pre_instance)

            if len(data_instance) == 0:
                utils.log_err("No Data...")
                print(self.__doc__)
                exit()
            print(
                tabulate(
                    data_instance,
                    headers=[
                        "ID", "Name", "Image", "Flavor", "RAM (GiB)", "vCPU",
                        "Addresses", "Status"
                    ],
                    tablefmt="grid"))
            exit()

        if self.args["network"]:
            data_network = [[
                network['id'], network['name'], network['status']
            ] for network in network_lib.get_list()]
            if len(data_network) == 0:
                utils.log_err("No Data...")
                print(self.__doc__)
                exit()
            print(
                tabulate(
                    data_network,
                    headers=["ID", "Name", "Status"],
                    tablefmt="grid"))
            exit()

        if self.args["--outputs"]:
            stack_name = self.args["--outputs"].split(".")
            if len(stack_name) is 1:
                for meta in orch.get_meta_stack(stack_name[0]):
                    print(meta["output_key"], " :")
                    print(meta["output_value"])
                    print("")
            if len(stack_name) is 2:
                print(orch.get_metadata(stack_name[0], stack_name[1]))
            exit()

        if set_file:
            if os.path.exists(set_file):
                default_file = "{}".format(set_file)
            else:
                utils.log_err("{} file is not exists!".format(set_file))
                print(self.__doc__)
                exit()

        if not default_file:
            utils.log_err("Oops!! Can't find neo.yml manifest file!")
            print(self.__doc__)
            exit()

        projects = utils.get_project(default_file)

        project_list = list()
        for project in projects:
            proj = orch.get_stack(project)
            if proj:
                project_list.append(proj)

        if len(project_list) > 0:
            print(tabulate(project_list, headers=headers, tablefmt="grid"))
        else:
            utils.log_err("No Data...")
            print(self.__doc__)
コード例 #8
0
ファイル: create.py プロジェクト: nofriiza/neo-cli
    def execute(self):
        if self.args["--template"]:
            if self.args["--template"] in ("clusters", "instances", "networks"):
                tmpl = self.args["--template"]

                if self.args["--interactive"]:
                    ncurses.init(stack=tmpl)
                else:
                    prompt.init(stack=tmpl)
            exit()

        if self.args["kubernetes"]:
            if self.args["--interactive"]:
                print(ncurses.init(stack="clusters", project="kubernetes"))
            else:
                print(prompt.init(stack="clusters", project="kubernetes"))

        if self.args["vm"]:
            if self.args["--interactive"]:
                print(ncurses.init(stack="instances", project="vm"))
            else:
                print(prompt.init(stack="instances", project="vm"))

        headers = ["ID", "Name", "Status", "Created", "Updated"]

        set_file = self.args["--file"]
        default_file = orch.check_manifest_file()

        if set_file:
            if os.path.exists(set_file):
                default_file = set_file
            else:
                utils.log_err("{} file is not exists!".format(set_file))
                exit()

        if not default_file:
            utils.log_err("Can't find neo.yml manifest file!")
            q_stack = utils.question("Do you want to generate neo.yml manifest? ")

            if q_stack:
                if self.args["--interactive"]:
                    print(ncurses.init())
                else:
                    print(prompt.init())
                q_deploy = utils.question("Continue to deploy? ")
                if q_deploy:
                    default_file = "neo.yml"
                else:
                    exit()
            else:
                exit()
        else:
            q_deploy = utils.question("Continue to deploy? ")
            if q_deploy:
                default_file = "neo.yml"
            else:
                exit()

        deploy_init = orch.initialize(default_file)
        try:
            orch.do_create(deploy_init)
        except Exception as e:
            utils.log_err(e)
            utils.log_err("Deploying Stack failed...")
            exit()

        projects = utils.get_project(default_file)

        project_list = list()
        for project in projects:
            proj = orch.get_stack(project)
            if proj:
                project_list.append(proj)

        if len(project_list) > 0:
            print(tabulate(project_list, headers=headers, tablefmt="grid"))
コード例 #9
0
ファイル: create.py プロジェクト: sdmoko/neo-cli
    def execute(self):
        if self.args["--template"]:
            if self.args["--template"] in ('clusters', 'instances',
                                           'networks'):
                tmpl = self.args["--template"]

                if self.args["--interactive"]:
                    ncurses.init(stack=tmpl)
                else:
                    prompt.init(stack=tmpl)
            exit()

        if self.args["kubernetes"]:
            if self.args["--interactive"]:
                print(ncurses.init(stack="clusters", project="kubernetes"))
            else:
                print(prompt.init(stack="clusters", project="kubernetes"))

        if self.args["vm"]:
            if self.args["--interactive"]:
                print(ncurses.init(stack="instances", project="vm"))
            else:
                print(prompt.init(stack="instances", project="vm"))

        headers = ["ID", "Name", "Status", "Created", "Updated"]

        set_file = self.args["--file"]
        default_file = orch.check_manifest_file()

        if set_file:
            if os.path.exists(set_file):
                default_file = set_file
            else:
                utils.log_err("{} file is not exists!".format(set_file))
                exit()

        if not default_file:
            utils.log_err("Can't find neo.yml manifest file!")
            q_stack = utils.question(
                "Do you want to generate neo.yml manifest? ")

            if q_stack:
                if self.args["--interactive"]:
                    print(ncurses.init())
                else:
                    print(prompt.init())
                q_deploy = utils.question("Continue to deploy? ")
                if q_deploy:
                    default_file = "neo.yml"
                else:
                    exit()
            else:
                exit()
        else:
            q_deploy = utils.question("Continue to deploy? ")
            if q_deploy:
                default_file = "neo.yml"
            else:
                exit()

        deploy_init = orch.initialize(default_file)
        try:
            orch.do_create(deploy_init)
        except Exception as e:
            utils.log_err(e)
            utils.log_err("Deploying Stack failed...")
            exit()

        projects = utils.get_project(default_file)

        project_list = list()
        for project in projects:
            proj = orch.get_stack(project)
            if proj:
                project_list.append(proj)

        if len(project_list) > 0:
            print(tabulate(project_list, headers=headers, tablefmt="grid"))