Exemplo n.º 1
0
 def __split_name(self, name):
     slash_index0 = name.find("/")
     slash_index1 = name.find("/", slash_index0 + 1)
     if slash_index1 == -1:
         raise ArgumentException(
             "Wrong compliance error name, should be of the form applications/<app_name>/<type>/<id>"
         )
     slash_index2 = name.find("/", slash_index1 + 1)
     if slash_index2 == -1:
         raise ArgumentException(
             "Wrong compliance error name, should be of the form applications/<app_name>/<type>/<id>"
         )
     return (name[slash_index0 + 1:slash_index1],
             name[slash_index1 + 1:slash_index2], name[slash_index2 + 1:])
Exemplo n.º 2
0
    def _get_name_argument(self, argv):
        if len(argv) < 5:
            raise ArgumentException(
                "An organization, an environment, a host, an application and a setting name must be provided"
            )

        return argv[4]
Exemplo n.º 3
0
    def get_collection(self, argv):
        if len(argv) < 3:
            raise ArgumentException(
                "An organization, an environment and a host name must be provided"
            )

        return self._client.get_host(argv[0], argv[1], argv[2]).settings()
Exemplo n.º 4
0
    def get_collection(self, argv):
        if len(argv) < 3:
            raise ArgumentException(
                "An organization, an environment and a host must be provided")

        host = self._client.hosts(argv[0], argv[1]).get(argv[2])
        return self._get_settings(host, argv)
Exemplo n.º 5
0
    def _get_name_argument(self, argv):
        if len(argv) < 3:
            raise ArgumentException(
                "An organization, a platform and a setting name must be provided"
            )

        return argv[2]
Exemplo n.º 6
0
    def _import(self, argv):
        if len(argv) != 2:
            raise ArgumentException("Wrong number of arguments")

        org = self._client.get_organization(argv[0])
        imp = Import()
        imp.import_application(org, argv[1])
Exemplo n.º 7
0
    def _import(self, argv):
        """
        Pushes local data to comodit server. Data may include applications,
        distributions, platforms, organizations, environments and hosts.
        Local data are automatically imported if no collision with remote data
        is detected. In case of collision, 'force' option can be used to still
        import data.
        """
        self._options = self._config.options
        org = self._client.organizations().get(argv[0])
        env = self._client.environments(argv[0]).get(argv[1])

        if len(argv) < 3:
            raise ArgumentException("Wrong number of arguments")

        importer = Import(self._config.options.skip_conflict,
                          queue_actions=True,
                          with_instances=self._config.options.with_instances)
        importer.import_full_host(org, env, argv[2])

        if self._config.options.dry_run:
            importer.display_queue(show_only_conflicts=False)

        elif (importer.no_conflict() or self._config.options.skip_conflict):
            importer.execute_queue()
        else:
            importer.display_queue(show_only_conflicts=True)
            print(
                "Impossible to import host. There are conflicts. Use --skip-conflict to force"
            )
Exemplo n.º 8
0
    def _import(self, argv):
        if len(argv) != 2:
            raise ArgumentException("Wrong number of arguments")

        org = self._client.organizations().get(argv[0])
        imp = Import(update_existing=self._config.options.update_existing)
        imp.import_platform(org, argv[1])
    def _disable_service(self, argv):
        if len(argv) < 4:
            raise ArgumentException("Wrong number of arguments")

        host = self._get_host(argv)
        app_name = argv[3]
        svc_name = argv[4]
        host.live_disable_service(app_name, svc_name)
Exemplo n.º 10
0
    def _install_package(self, argv):
        if len(argv) < 4:
            raise ArgumentException("Wrong number of arguments")

        host = self._get_host(argv)
        app_name = argv[3]
        pkg_name = argv[4]
        host.live_install_package(app_name, pkg_name)
Exemplo n.º 11
0
    def __set_root_folder(self, argv):
        if len(argv) < 1:
            raise ArgumentException("Wrong number of arguments")

        self._root = argv[
            0]  # By default, use organization name as folder name
        if len(argv) > 1:
            self._root = argv[1]
Exemplo n.º 12
0
    def _complete_template(self, argv, template_json):
        if len(argv) < 4:
            raise ArgumentException("Wrong number of arguments");

        app = self._client.get_application(argv[0], argv[3])
        template_json["application"] = app.name
        template_json["services"] = [{"name": s.name, "enabled": s.enabled} for s in app.services]
        template_json["settings"] = [{"key": p.key, "value": p.value} for p in app.parameters_f]
Exemplo n.º 13
0
    def _render_file(self, argv):
        if len(argv) != 4:
            raise ArgumentException("Wrong number of arguments");

        host = self._get_host(argv)
        file_name = argv[3]

        print host.render_dist_file(file_name).read()
    def _update_file(self, argv):
        if len(argv) < 4:
            raise ArgumentException("Wrong number of arguments")

        host = self._get_host(argv)
        app_name = argv[3]
        file_name = argv[4]
        host.live_update_file(app_name, file_name)
Exemplo n.º 15
0
    def _render_file(self, argv):
        if len(argv) != 5:
            raise ArgumentException("Wrong number of arguments");

        host = self._get_host(argv)
        app_name = argv[3]
        file_name = argv[4]

        print host.render_app_file(app_name, file_name).read()
Exemplo n.º 16
0
    def _get_link(self, argv):
        if len(argv) < 4:
            raise ArgumentException("Wrong number of arguments");

        host = self._get_host(argv)
        file_name = argv[3]
        short = True if len(argv) == 5 and argv[4] == "True" else False

        print host.get_dist_link(file_name, short)
Exemplo n.º 17
0
    def _run_action(self, argv):
        if len(argv) != 5:
            raise ArgumentException("Wrong number of arguments");

        host = self._get_host(argv)
        app_name = argv[3]
        key = argv[4]

        host.get_application(app_name).run_custom_action(key)
    def _update_package(self, argv):
        if len(argv) < 4:
            raise ArgumentException("Wrong number of arguments")

        host = self._get_host(argv)
        app_name = argv[3]
        pkg_name = argv[4]
        pkg_version = argv[5]
        host.live_update_package(app_name, pkg_name, pkg_version)
Exemplo n.º 19
0
 def _get_filter_parameters(self):
     list_filter = self._get_filter()
     param = {"filter": list_filter}
     if globals.options.org_name:
         param["org_name"] = globals.options.org_name
     elif list_filter == "private":
         raise ArgumentException(
             "An organization name must be provided with private filter")
     return param
    def _impact(self, argv):

        if len(argv) != 5:
            raise ArgumentException("Wrong number of arguments")

        app_name = argv[3]
        key = argv[4]

        application = self._client.get_application(argv[0], app_name)
        application.show_action(key)
Exemplo n.º 21
0
    def _get_link(self, argv):
        if len(argv) < 5:
            raise ArgumentException("Wrong number of arguments");

        host = self._get_host(argv)
        app_name = argv[3]
        file_name = argv[4]
        short = True if len(argv) == 6 and argv[5] == "True" else False

        print host.get_app_link(app_name, file_name, short)
Exemplo n.º 22
0
    def _run(self, argv):
        if len(argv) < 4:
            raise ArgumentException("Wrong number of arguments")

        host = self._get_host(argv)
        orch_name = argv[3]
        changes = host.run_orchestration(orch_name)

        if self._config.options.wait:
            for change in changes:
                host.wait_for_change_terminated(str(change))
Exemplo n.º 23
0
    def _run_action(self, argv):
        if len(argv) != 5:
            raise ArgumentException("Wrong number of arguments");

        host = self._get_host(argv)
        app_name = argv[3]
        handler_name = argv[4]

        changeId = host.get_application(app_name).run_handler(handler_name)

        if self._config.options.wait:
            host.wait_for_change_terminated(changeId)                    
Exemplo n.º 24
0
    def _tree(self, argv):
        paramters = self._get_list_parameters(argv)

        if len(argv) < 1:
            raise ArgumentException("An organization must be provided")

        entity = self._client.get_organization(argv[0]).tree(
            self._config.options.secret, self._config.options.non_secret,
            self._config.options.key)

        if self._config.options.raw:
            print(json.dumps(entity.get_json(), indent=4))
        else:
            entity.show()
    def _run_action(self, argv):
        if len(argv) != 5:
            raise ArgumentException("Wrong number of arguments")

        host = self._get_host(argv)
        app_name = argv[3]
        handler_name = argv[4]

        try:
            time_out = int(self._config.options.timeout)
        except Exception:
            sys.exit("Invalid format for timeout")

        changeId = host.get_application(app_name).run_handler(handler_name)

        if self._config.options.wait:
            host.wait_for_change_terminated(changeId, time_out)
Exemplo n.º 26
0
    def _purchase(self, argv):
        if len(argv) < 2:
            raise ArgumentException(
                "A published entity UUID and an organization name must be provided"
            )

        org = self._client.organizations().get(argv[1])
        pub = self.get_collection(argv).get(argv[0],
                                            parameters={"org_name": argv[1]})

        template_json = json.load(
            open(os.path.join(Config()._get_templates_path(), self._template)))
        template_json["published"] = pub.uuid
        template_json["name"] = pub.name
        updated = edit_text(json.dumps(template_json, indent=4))

        pur_app = self.get_purchased_collection(org)._new(json.loads(updated))
        pur_app.create()
Exemplo n.º 27
0
    def _run(self, argv):
        if len(argv) < 4:
            raise ArgumentException("Wrong number of arguments")

        try:
            time_out = int(self._config.options.timeout)
        except Exception:
            sys.exit("Invalid format for timeout")

        host = self._get_host(argv)
        org = argv[0]
        orch_name = argv[3]

        result = host.run_orchestration(orch_name)


        if self._config.options.wait:
            context = self._client.orchestrationContext(org, orch_name, result["uuid"])
            context.wait_finished(time_out, self._config.options.debug)
Exemplo n.º 28
0
    def _import(self, argv):
        """
        Pushes local data to comodit server. Data may include applications,
        distributions, platforms, organizations, environments and hosts.
        Local data are automatically imported if no collision with remote data
        is detected. In case of collision, 'force' option can be used to still
        import data.
        """
        self._options = globals.options

        if len(argv) < 1:
            raise ArgumentException("Wrong number of arguments")
        self._root = argv[0]

        importer = Import(globals.options.skip_conflict, True)
        importer.import_organization(self._client, self._root)

        if (importer.no_conflict() or
                globals.options.skip_conflict) and not globals.options.dry_run:
            importer.execute_queue()
        else:
            importer.display_queue(show_only_conflicts=True)
Exemplo n.º 29
0
 def _get_name_argument(self, argv):
     if len(argv) < 3:
         raise ArgumentException(
             "An organization name and ank environment name and a group name must be provided"
         )
     return argv[2]
Exemplo n.º 30
0
 def get_collection(self, argv):
     if len(argv) < 2:
         raise ArgumentException("Wrong number of arguments")
     # return self._client.get_organization(argv[0]).groups()
     return self._client.get_environment(argv[0], argv[1]).groups()