Esempio n. 1
0
    def _create_server(self):
        path_to_json_file = os.path.dirname(os.path.realpath(__file__)) + "/joyent"
        machine_name = input_choice("Machine name", fmode=True)
        api = input_choice("API Server", ["us-east-1", "us-west-1", "us-sw-1", "eu-ams-1", "us-east-2", "us-east-3"],
                           fmode=False)

        package_list = self._load_list(path_to_json_file + "/{}.package.json".format(api))
        package = input_choice("Package", options=package_list, fmode=True)

        image_list, image_id = self._load_list(path_to_json_file + "/{}.images.json".format(api),
                                               fields=["name", "version"], return_id=True)
        image = input_choice("Image", options=image_list, fmode=True)
        if image in image_list:
            image_ref = "alias=" + image
            image = image_id[image_list.index(image)]
        else:
            image_ref = ""

        network_list, network_id = self._load_list(path_to_json_file + "/{}.networks.json".format(api), return_id=True)
        networks_ref,  networks = [], []
        new_input = input_choice("Network", options=network_list, fmode=False)
        while not new_input == "d":
            if new_input in network_list:
                networks_ref.append(new_input)
                networks.append(network_id[network_list.index(new_input)])

            new_input = input_choice("Network ('d' for done)", options=network_list, fmode=True)
            if new_input == "d":
                break

        networks = ",".join(networks)
        networks_ref = "alias=" + ",".join(networks_ref)
        print "You want to provision the following:"
        print "{0:15}: {1:30}".format("DC", TColors.warning(api))
        print "{0:15}: {1:30}".format("Machine Name", TColors.warning(machine_name))
        print "{0:15}: {1:30}".format("Package", TColors.warning(package))
        print "{0:15}: {1:30} {2:30}".format("Image", TColors.warning(image), image_ref)
        print "{0:15}: {1:30} {2:30}".format("Networks", TColors.warning(networks), networks_ref)
        answer = input_choice("Are you (yes/no)", ["yes", "no"], fmode=False)
        if answer == "yes":
            self.joyent_runner(machine_name, api, "present", package=package, image=image, networks=networks)
        else:
            print "bye..."
Esempio n. 2
0
    def __get__(self):
        with open('/tmp/server.json') as data_file:
            servers = json.load(data_file)
        server_names = []
        for server, ips in servers.iteritems():
            server_names.append(server)

        ssh_hostname = input_choice("SSH Server", server_names, fmode=False)
        ips = servers.get(ssh_hostname)

        if len(ips) == 1:
            self._run_cmd(ips[0])
        elif len(ips) > 1:
            matched_ip = False
            for ip in ips:
                if re.match(r'10.224.*.*', ip):
                    matched_ip = ip
                    break
            if not matched_ip:
                matched_ip = ips[0]
            self._run_cmd(matched_ip)
        else:
            print "No IP defined for this server"
            exit(1)