def create_instances(self, instance_type, image_id, key_pair_path, minCount=1, maxCount=1, subnet_id='subnet-02ce134a'): """docstring""" try: key_pair = Misc.remove_extensions( (Misc.get_filename_from_path(key_pair_path))) ec2 = self.resource instances = ec2.create_instances(ImageId=image_id, MinCount=minCount, MaxCount=maxCount, InstanceType=instance_type, SubnetId=subnet_id, KeyName=key_pair) instance = instances[0] print("Created instance:", instance.instance_id) instance.wait_until_running() instance.reload() print("Current Instance State:", instance.state) sleep(30) # time for aws to register the instance_id except Exception as e: if hasattr(e, 'message'): print("Error occured: ", e.message) else: print("Error occured: ", e) traceback.print_exc(file=sys.stdout) return instances
def send_commands(self, cmds, test_plan, test_data, result_log_name='log.jtl', log_name='jmeter.log', default_username="******"): prefix = '' if result_log_name == 'log.jtl': prefix = Misc.remove_extensions( Misc.get_filename_from_path( test_plan)) + '_' + Misc.time_now() + '_' with paramiko.SSHClient() as client: key = paramiko.RSAKey.from_private_key_file(self.key_path) client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: client.connect(hostname=self.private_ip, username=default_username, pkey=key) self.execute_commands(client, ["echo 'Connected to EC2 instance'" ]) # connection acknowledgement self.execute_commands( client, ["mkdir jmeter"]) # create separate directory ftp_client = client.open_sftp() print("Starting Jmeter config file upload:", Misc.get_filename_from_path(test_plan)) ftp_client.put(test_plan, '/home/ec2-user/jmeter/' + Misc.get_filename_from_path(test_plan), callback=self.print_transfer_status) print("Jmeter config (.jmx) file uploaded.") if test_data: print("Starting test data CSV file upload:", Misc.get_filename_from_path(test_data)) ftp_client.put(test_data, '/home/ec2-user/jmeter/' + Misc.get_filename_from_path(test_data), callback=self.print_transfer_status) print("Test Data (.csv) uploaded.") self.execute_commands(client, cmds) print('Starting Jmeter log (.log) file download') ftp_client.get('/home/ec2-user/' + log_name, prefix + log_name, callback=self.print_transfer_status) print("JMeter log (.log) file downloaded as :", prefix + log_name) print("Starting Jmeter results file (.jtl) download.") ftp_client.get('/home/ec2-user/jmeter/' + result_log_name, prefix + result_log_name, callback=self.print_transfer_status) print("JMeter results (.jtl) file downloaded as :", prefix + result_log_name) ftp_client.close() except Exception as e: if hasattr(e, 'message'): print("Error occured: ", e.message) else: print("Error occured: ", e) traceback.print_exc(file=sys.stdout)