def validate(self): super().validate() if "to" in self.parameters: if self.parameters["to"] == "ssh": return if "authorize" in self.parameters: if self.parameters["authorize"] != "ssh": return if not any( "ssh" in data for data in self.job.device["actions"]["deploy"]["methods"]): # idempotency - leave self.identity_file as None return params = self.job.device["actions"]["deploy"]["methods"] check = check_ssh_identity_file(params) if check[0]: self.errors = check[0] elif check[1]: self.identity_file = check[1] if self.valid: self.set_namespace_data( action=self.name, label="authorize", key="identity_file", value=self.identity_file, ) if "authorize" in self.parameters: # only secondary connections set active. self.active = True
def validate(self): super().validate() if 'to' in self.parameters: if self.parameters['to'] == 'ssh': return if 'authorize' in self.parameters: if self.parameters['authorize'] != 'ssh': return if not any( 'ssh' in data for data in self.job.device['actions']['deploy']['methods']): # idempotency - leave self.identity_file as None return params = self.job.device['actions']['deploy']['methods'] check = check_ssh_identity_file(params) if check[0]: self.errors = check[0] elif check[1]: self.identity_file = check[1] if self.valid: self.set_namespace_data(action=self.name, label='authorize', key='identity_file', value=self.identity_file) if 'authorize' in self.parameters: # only secondary connections set active. self.active = True
def test_ssh_identity(self): params = { "tftp": "None", "usb": "None", "ssh": { "host": "172.16.200.165", "options": [ "-o", "Compression=yes", "-o", "UserKnownHostsFile=/dev/null", "-o", "PasswordAuthentication=no", "-o", "StrictHostKeyChecking=no", "-o", "LogLevel=FATAL", "-l", "root ", "-p", 22, ], "identity_file": "dynamic_vm_keys/lava", }, } check = check_ssh_identity_file(params) self.assertIsNone(check[0]) self.assertIsNotNone(check[1]) self.assertEqual(os.path.basename(check[1]), "lava")
def _check_params(self): # the deployment strategy ensures that this key exists # use a different class if the destination is set using common_data, e.g. protocols if not any('ssh' in data for data in self.job.device['actions']['deploy']['methods']): self.errors = "Invalid device configuration - no suitable deploy method for ssh" return params = self.job.device['actions']['deploy']['methods'] if 'identity_file' in self.job.device['actions']['deploy']['methods']['ssh']: check = check_ssh_identity_file(params) if check[0]: self.errors = check[0] elif check[1]: self.identity_file = check[1] if 'ssh' not in params: self.errors = "Empty ssh parameter list in device configuration %s" % params return if 'options' in params['ssh']: if any([option for option in params['ssh']['options'] if not isinstance(option, str)]): msg = [(option, type(option)) for option in params['ssh']['options'] if not isinstance(option, str)] self.errors = "[%s] Invalid device configuration: all options must be only strings: %s" % (self.name, msg) return if 'port' in params['ssh']: self.ssh_port = ["-p", "%s" % str(params['ssh']['port'])] self.scp_port = ["-P", "%s" % str(params['ssh']['port'])] if 'host' in params['ssh'] and params['ssh']['host']: # get the value from the protocol later. self.host = params['ssh']['host'] if 'user' in params['ssh'] and params['ssh']['user']: self.ssh_user = params['ssh']['user'] return params['ssh']
def test_ssh_identity(self): params = { 'tftp': 'None', 'usb': 'None', 'ssh': { 'host': '172.16.200.165', 'options': [ '-o', 'Compression=yes', '-o', 'UserKnownHostsFile=/dev/null', '-o', 'PasswordAuthentication=no', '-o', 'StrictHostKeyChecking=no', '-o', 'LogLevel=FATAL', '-l', 'root ', '-p', 22], 'identity_file': 'dynamic_vm_keys/lava' } } check = check_ssh_identity_file(params) self.assertIsNone(check[0]) self.assertIsNotNone(check[1]) self.assertEqual(os.path.basename(check[1]), 'lava')
def _check_params(self): # the deployment strategy ensures that this key exists # use a different class if the destination is set using common_data, e.g. protocols if not any( "ssh" in data for data in self.job.device["actions"]["deploy"]["methods"]): self.errors = ( "Invalid device configuration - no suitable deploy method for ssh" ) return params = self.job.device["actions"]["deploy"]["methods"] if "identity_file" in self.job.device["actions"]["deploy"]["methods"][ "ssh"]: check = check_ssh_identity_file(params) if check[0]: self.errors = check[0] elif check[1]: self.identity_file = check[1] if "ssh" not in params: self.errors = "Empty ssh parameter list in device configuration %s" % params return if "options" in params["ssh"]: if any([ option for option in params["ssh"]["options"] if not isinstance(option, str) ]): msg = [(option, type(option)) for option in params["ssh"]["options"] if not isinstance(option, str)] self.errors = ( "[%s] Invalid device configuration: all options must be only strings: %s" % (self.name, msg)) return if "port" in params["ssh"]: self.ssh_port = ["-p", "%s" % str(params["ssh"]["port"])] self.scp_port = ["-P", "%s" % str(params["ssh"]["port"])] if "host" in params["ssh"] and params["ssh"]["host"]: # get the value from the protocol later. self.host = params["ssh"]["host"] if "user" in params["ssh"] and params["ssh"]["user"]: self.ssh_user = params["ssh"]["user"] return params["ssh"]
def validate(self): super(SshAuthorize, self).validate() if 'to' in self.parameters: if self.parameters['to'] == 'ssh': return if 'authorize' in self.parameters: if self.parameters['authorize'] != 'ssh': return if not any('ssh' in data for data in self.job.device['actions']['deploy']['methods']): # idempotency - leave self.identity_file as None return params = self.job.device['actions']['deploy']['methods'] check = check_ssh_identity_file(params) if check[0]: self.errors = check[0] elif check[1]: self.identity_file = check[1] if self.valid: self.set_namespace_data(action=self.name, label='authorize', key='identity_file', value=self.identity_file) if 'authorize' in self.parameters: # only secondary connections set active. self.active = True
def test_ssh_identity(self): params = { 'tftp': 'None', 'usb': 'None', 'ssh': { 'host': '172.16.200.165', 'options': [ '-o', 'Compression=yes', '-o', 'UserKnownHostsFile=/dev/null', '-o', 'PasswordAuthentication=no', '-o', 'StrictHostKeyChecking=no', '-o', 'LogLevel=FATAL', '-l', 'root ', '-p', 22 ], 'identity_file': 'dynamic_vm_keys/lava' } } check = check_ssh_identity_file(params) self.assertIsNone(check[0]) self.assertIsNotNone(check[1]) self.assertEqual(os.path.basename(check[1]), 'lava')
def _check_params(self): # the deployment strategy ensures that this key exists # use a different class if the destination is set using common_data, e.g. protocols if not any( 'ssh' in data for data in self.job.device['actions']['deploy']['methods']): self.errors = "Invalid device configuration - no suitable deploy method for ssh" return params = self.job.device['actions']['deploy']['methods'] if 'identity_file' in self.job.device['actions']['deploy']['methods'][ 'ssh']: check = check_ssh_identity_file(params) if check[0]: self.errors = check[0] elif check[1]: self.identity_file = check[1] if 'ssh' not in params: self.errors = "Empty ssh parameter list in device configuration %s" % params return if 'options' in params['ssh']: if any([ option for option in params['ssh']['options'] if not isinstance(option, str) ]): msg = [(option, type(option)) for option in params['ssh']['options'] if not isinstance(option, str)] self.errors = "[%s] Invalid device configuration: all options must be only strings: %s" % ( self.name, msg) return if 'port' in params['ssh']: self.ssh_port = ["-p", "%s" % str(params['ssh']['port'])] self.scp_port = ["-P", "%s" % str(params['ssh']['port'])] if 'host' in params['ssh'] and params['ssh']['host']: # get the value from the protocol later. self.host = params['ssh']['host'] if 'user' in params['ssh'] and params['ssh']['user']: self.ssh_user = params['ssh']['user'] return params['ssh']