def main(): s = StarWatts("conf.yml") test_instance = s.conn.get_instance_by_tags({'name': 'node_blender_job0'})[0] app = s.new_cloud_app("blender", "2.72", "prod", "job0", instance=test_instance, debug=True) # Direct connection works app.ssh_client.connect("171.33.90.69", username='******') (stdin, stdout, stderr) = app.ssh_client.exec_command("echo 'Hello World !'") for line in stdout.readlines(): print(line) app.ssh_client.close() # Proxy connection doesn't (stdin, stdout, stderr) = app.through('bastion').connect( use_key=False).command("echo 'Hello World !'") for line in stdout.readlines(): print(line) app.disconnect()
def new_instance(request): from starwatts import StarWatts s = StarWatts(access_key=os.environ['ACCESS_KEY'], secret_key=os.environ['PRIVATE_KEY']) c = s.get_connection() inst = c.quick_instance('pytest-new', 'ami-14506474', 't1.micro', private=False) inst.wait_for('running') def teardown(): c.delete_key_pair(inst.key_name) inst.terminate() request.addfinalizer(teardown) return inst
def attached_volume(request): from starwatts import StarWatts s = StarWatts(access_key=os.environ['ACCESS_KEY'], secret_key=os.environ['PRIVATE_KEY']) c = s.get_connection() inst = c.quick_instance('pytest-volume', 'ami-14506474', 't1.micro') inst.wait_for('running') def teardown(): c.delete_key_pair(inst.key_name) inst.terminate() request.addfinalizer(teardown) return inst.get_all_attached_volumes()[0]
def volume(request): from starwatts import StarWatts s = StarWatts(access_key=os.environ['ACCESS_KEY'], secret_key=os.environ['PRIVATE_KEY']) c = s.get_connection() zone = c.get_all_volumes()[0].zone fixture_volume = c.create_volume(1, zone) fixture_volume.wait_for('available') def teardown(): try: fixture_volume.delete() except EC2ResponseError: pass request.addfinalizer(teardown) return fixture_volume
def main(): s = StarWatts('conf.yml') c = s.get_connection() sg_dc = dict() for sg in c.get_all_security_groups(): for i in sg.instances(): if i.id in sg_dc: sg_dc[i.id].append(sg.name) else: sg_dc[i.id] = [sg.name, ] for inst in c.get_only_instances(): print("{name:20}{id}\t{sg}".format( name=inst.tags.get('name', 'No Name'), id=inst.id, sg=", ".join(sg_dc.get(inst.id, [])), ))
def main(): s = StarWatts("conf.yml") test_instance = s.conn.get_instance_by_tags({'name': 'node_blender_job0'})[0] app = s.new_cloud_app("blender", "2.72", "prod", "job0", instance=test_instance, debug=True) # Direct connection works app.ssh_client.connect("171.33.90.69", username='******') (stdin, stdout, stderr) = app.ssh_client.exec_command("echo 'Hello World !'") for line in stdout.readlines(): print(line) app.ssh_client.close() # Proxy connection doesn't (stdin, stdout, stderr) = app.through('bastion').connect(use_key=False).command("echo 'Hello World !'") for line in stdout.readlines(): print(line) app.disconnect()
def cli(instance_id): s = StarWatts('conf.yml') c = s.get_connection() try: inst_list = c.get_only_instances([instance_id]) except EC2ResponseError: click.secho("This instance could not be found.", fg='red') sys.exit(1) if len(inst_list) > 0: inst = inst_list[0] else: click.secho("This instance could not be found.", fg='red') sys.exit(1) click.secho("Instance found, now working...", fg='green') log = inst.set_private() click.secho("The instance was set to private.", fg='green') for t in log: click.secho("{} => {}".format(t[0], t[1]), fg='green')
def main(): s = StarWatts('conf.yml') c = s.get_connection() sg_dc = dict() for sg in c.get_all_security_groups(): for i in sg.instances(): if i.id in sg_dc: sg_dc[i.id].append(sg.name) else: sg_dc[i.id] = [ sg.name, ] for inst in c.get_only_instances(): print("{name:20}{id}\t{sg}".format( name=inst.tags.get('name', 'No Name'), id=inst.id, sg=", ".join(sg_dc.get(inst.id, [])), ))
def test_init_empty(): assert isinstance(StarWatts(), StarWatts)
def test_get_connection(): s = StarWatts() assert s.get_connection() is None s = StarWatts(access_key="wrong", secret_key="wrong") assert isinstance(s.get_connection(), EC2Connection)
def stw(): from starwatts import StarWatts return StarWatts(access_key=os.environ['ACCESS_KEY'], secret_key=os.environ['PRIVATE_KEY'])
def test_init_good_file(): StarWatts("tests/data/valid.yml")
def test_init_wrong_file(): with pytest.raises(ValueError): StarWatts("tests/data/wrong.yml")
def cli(output, local): s = StarWatts('conf.yml') output.write(s.generate_ssh_config(local=local)) output.flush()
def cli(output, local): s = StarWatts('conf.yml') output.write(s.generate_ansible_hosts_file(local=local)) output.flush()
def test_load_configuration(): s = StarWatts() s.load_configuration("tests/data/valid.yml")
def test_init_missing_arg(): with pytest.raises(ValueError): StarWatts(access_key="0xSw4G") with pytest.raises(ValueError): StarWatts(secret_key="0xSw4G")
def instance(): from starwatts import StarWatts s = StarWatts(access_key=os.environ['ACCESS_KEY'], secret_key=os.environ['PRIVATE_KEY']) return s.conn.get_only_instances()[0]
def test_init_wrong_keys(): s = StarWatts(access_key="wrong", secret_key="wrong") c = s.get_connection() with pytest.raises(EC2ResponseError): c.get_only_instances()