Example #1
0
    def _add(self, argv):
        options = self._config.options

        if options.filename:
            with open(options.filename, 'r') as f:
                item = json.load(f, object_pairs_hook=OrderedDict)
        elif options.json:
            item = json.loads(options.json, object_pairs_hook=OrderedDict)
        else:
            template_json = json.load(
                open(
                    os.path.join(Config()._get_templates_path(),
                                 self._template)))
            self._complete_template(argv, template_json)
            updated = edit_text(json.dumps(template_json, indent=4))
            item = json.loads(updated, object_pairs_hook=OrderedDict)

        res = self.get_collection(argv)._new(item)
        parameters = {}
        if options.populate:
            parameters["populate"] = "true"
        if options.default:
            parameters["default"] = "true"
        if options.test:
            parameters["test"] = "true"
        if options.flavor != None:
            parameters["flavor"] = options.flavor
        res.create(parameters=parameters)
        res.show(as_json=options.raw)
Example #2
0
    def add(self,
            raw=False,
            populate=False,
            default=False,
            test=False,
            flavor=None):
        if self._collection == None or self._template == None:
            raise Exception("Add operation is not available in this container")

        template_json = json.load(
            open(os.path.join(Config()._get_templates_path(), self._template)))
        updated = edit_text(json.dumps(template_json, indent=4))
        entity_data = json.loads(updated, object_pairs_hook=OrderedDict)

        res = self._collection._new(entity_data)

        parameters = {}
        if populate:
            parameters["populate"] = "true"
        if default:
            parameters["default"] = "true"
        if test:
            parameters["test"] = "true"
        if flavor != None:
            parameters["flavor"] = flavor

        res.create(parameters=parameters)
        res.show(as_json=raw)
Example #3
0
    def _add(self, argv):
        options = globals.options

        if options.filename:
            with open(options.filename, 'r') as f:
                item = json.load(f)
        elif options.json:
            item = json.loads(options.json)
        else:
            template_json = json.load(
                open(
                    os.path.join(Config()._get_templates_path(),
                                 self._template)))
            # template = "# To abort the request; just exit your editor without saving this file.\n\n" + template
            self._complete_template(argv, template_json)
            updated = edit_text(json.dumps(template_json, indent=4))
            # updated = re.sub(r'#.*$', "", updated)
            item = json.loads(updated)

        res = self.get_collection(argv)._new(item)
        parameters = {}
        if options.populate:
            parameters["populate"] = "true"
        if options.default:
            parameters["default"] = "true"
        if options.test:
            parameters["test"] = "true"
        if options.flavor != None:
            parameters["flavor"] = options.flavor
        res.create(parameters=parameters)
        res.show(as_json=options.raw)
Example #4
0
 def __init__(self):
     self._actions = {}
     self._subcontrollers = {}
     self._completions = {}
     self._docs = {}
     self._register("__available_actions", self._available_actions)
     self._default_action = lambda x : self._error("No default action defined", -1)
     self._config = Config()
Example #5
0
    def _publish(self, argv):
        app = self._ctrl._get_entity(argv)

        if not app.published_as is None:
            raise PythonApiException(self._type_name + " has already been published")

        template_json = json.load(open(os.path.join(Config()._get_templates_path(), self._template)))
        template_json[self._label] = app.uuid

        pub_app = self.store()._new(template_json)
        self.store()._create(pub_app)
Example #6
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()
Example #7
0
    def _vnc(self, argv):
        if len(argv) != 3:
            raise MissingException("This action takes 3 arguments")

        host = self._get_entity(argv)
        vnc_params = host.instance().get().vnc

        # Get VNC viewer call string
        config = Config()
        viewer_call_template = config.get_vnc_viewer_call(self._config.options.profile_name)
        if viewer_call_template is None or viewer_call_template == "":
            raise ControllerException("VNC viewer is not configured")

        # Call viewer
        hostname = vnc_params.hostname
        port = vnc_params.port
        if hostname != None and port != None:
            call = viewer_call_template.replace("%h", hostname).replace("%p", port)
            subprocess.call(call, shell = True)
        else:
            raise ControllerException("Could not retrieve VNC server host and/or port")
Example #8
0
# coding: utf-8

from __future__ import print_function
import sys, argparse

from comodit_client.console.core import ComodITConsole
from comodit_client.config import Config, ConfigException

if __name__ == '__main__':
    # Load configuration
    try:
        config = Config()
    except ConfigException as e:
        print("Configuration error:")
        print(e.msg)
        exit(-1)

    parser = argparse.ArgumentParser(
        formatter_class=argparse.RawDescriptionHelpFormatter,
        description="This is the ComodIT console.")

    parser.add_argument('-P',
                        "--profile",
                        dest="profile",
                        help="A profile from comoditrc file",
                        default=None)
    parser.add_argument('-a',
                        "--api",
                        dest="api",
                        help="URL of the API",
                        default=None)