working on bulk
This commit is contained in:
parent
d4121bcbc0
commit
43e8325890
@ -279,6 +279,9 @@ class connapp:
|
|||||||
print("{} moved succesfully to {}".format(args.data[0],args.data[1]))
|
print("{} moved succesfully to {}".format(args.data[0],args.data[1]))
|
||||||
if args.command == "cp":
|
if args.command == "cp":
|
||||||
print("{} copied succesfully to {}".format(args.data[0],args.data[1]))
|
print("{} copied succesfully to {}".format(args.data[0],args.data[1]))
|
||||||
|
elif args.command == "bulk":
|
||||||
|
test = self._questions_bulk()
|
||||||
|
print(test)
|
||||||
else:
|
else:
|
||||||
print(args.command)
|
print(args.command)
|
||||||
print(vars(args))
|
print(vars(args))
|
||||||
@ -350,6 +353,33 @@ class connapp:
|
|||||||
raise inquirer.errors.ValidationError("", reason="Profile {} don't exist".format(current))
|
raise inquirer.errors.ValidationError("", reason="Profile {} don't exist".format(current))
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def _bulk_node_validation(self, answers, current, regex = "^[0-9a-zA-Z_.,$#-]+$"):
|
||||||
|
if not re.match(regex, current):
|
||||||
|
raise inquirer.errors.ValidationError("", reason="Host cannot be empty")
|
||||||
|
if current.startswith("@"):
|
||||||
|
if current[1:] not in self.profiles:
|
||||||
|
raise inquirer.errors.ValidationError("", reason="Profile {} don't exist".format(current))
|
||||||
|
return True
|
||||||
|
|
||||||
|
def _bulk_folder_validation(self, answers, current):
|
||||||
|
|
||||||
|
matches = list(filter(lambda k: k == current, self.folders))
|
||||||
|
if current != "" and len(matches) == 0:
|
||||||
|
raise inquirer.errors.ValidationError("", reason="Location {} don't exist".format(current))
|
||||||
|
return True
|
||||||
|
|
||||||
|
def _bulk_host_validation(self, answers, current, regex = "^.+$"):
|
||||||
|
if not re.match(regex, current):
|
||||||
|
raise inquirer.errors.ValidationError("", reason="Host cannot be empty")
|
||||||
|
if current.startswith("@"):
|
||||||
|
if current[1:] not in self.profiles:
|
||||||
|
raise inquirer.errors.ValidationError("", reason="Profile {} don't exist".format(current))
|
||||||
|
hosts = current.split(",")
|
||||||
|
nodes = answers["ids"].split(",")
|
||||||
|
if len(hosts) > 1 and len(hosts) != len(nodes):
|
||||||
|
raise inquirer.errors.ValidationError("", reason="Hosts list should be the same length of nodes list")
|
||||||
|
return True
|
||||||
|
|
||||||
def _questions_edit(self):
|
def _questions_edit(self):
|
||||||
questions = []
|
questions = []
|
||||||
questions.append(inquirer.Confirm("host", message="Edit Hostname/IP?"))
|
questions.append(inquirer.Confirm("host", message="Edit Hostname/IP?"))
|
||||||
@ -482,6 +512,33 @@ class connapp:
|
|||||||
result["id"] = unique
|
result["id"] = unique
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def _questions_bulk(self):
|
||||||
|
questions = []
|
||||||
|
questions.append(inquirer.Text("ids", message="add a comma separated list of nodes to add", validate=self._bulk_node_validation))
|
||||||
|
questions.append(inquirer.Text("location", message="Add a @folder, @subfolder@folder or leave empty", validate=self._bulk_folder_validation))
|
||||||
|
questions.append(inquirer.Text("host", message="Add comma separated list of Hostnames or IPs", validate=self._bulk_host_validation))
|
||||||
|
questions.append(inquirer.Text("protocol", message="Select Protocol", validate=self._protocol_validation))
|
||||||
|
questions.append(inquirer.Text("port", message="Select Port Number", validate=self._port_validation))
|
||||||
|
questions.append(inquirer.Text("options", message="Pass extra options to protocol", validate=self._default_validation))
|
||||||
|
questions.append(inquirer.Text("logs", message="Pick logging path/file ", validate=self._default_validation))
|
||||||
|
questions.append(inquirer.Text("user", message="Pick username", validate=self._default_validation))
|
||||||
|
questions.append(inquirer.List("password", message="Password: Use a local password, no password or a list of profiles to reference?", choices=["Local Password", "Profiles", "No Password"]))
|
||||||
|
answer = inquirer.prompt(questions)
|
||||||
|
if answer == None:
|
||||||
|
return False
|
||||||
|
if "password" in answer.keys():
|
||||||
|
if answer["password"] == "Local Password":
|
||||||
|
passq = [inquirer.Password("password", message="Set Password")]
|
||||||
|
passa = inquirer.prompt(passq)
|
||||||
|
answer["password"] = self.encrypt(passa["password"])
|
||||||
|
elif answer["password"] == "Profiles":
|
||||||
|
passq = [(inquirer.Text("password", message="Set a @profile or a comma separated list of @profiles", validate=self._pass_validation))]
|
||||||
|
passa = inquirer.prompt(passq)
|
||||||
|
answer["password"] = passa["password"].split(",")
|
||||||
|
elif answer["password"] == "No Password":
|
||||||
|
answer["password"] = ""
|
||||||
|
answer["type"] = "connection"
|
||||||
|
return answer
|
||||||
|
|
||||||
def _type_node(self, arg_value, pat=re.compile(r"^[0-9a-zA-Z_.$@#-]+$")):
|
def _type_node(self, arg_value, pat=re.compile(r"^[0-9a-zA-Z_.$@#-]+$")):
|
||||||
if not pat.match(arg_value):
|
if not pat.match(arg_value):
|
||||||
|
Loading…
Reference in New Issue
Block a user