def acceptVPCPeering(self, session, vpcpeerid=None, noop=False, logoutput=None): ec2client = ec2.ec2(session) peers = ec2client.getVPCpeering(vpcpeerid=vpcpeerid, noop=noop) for peer in peers["VpcPeeringConnections"]: vpcpeerclient = ec2.ec2vpcpeer( session=session, identifier=peer["VpcPeeringConnectionId"]) status = vpcpeerclient.getStatus() if logoutput: print "VPC Peer: " + peer[ "VpcPeeringConnectionId"] + " has a status of: " + status[ "Code"] if status["Code"] == "pending-acceptance": try: vpcpeerclient.allowVPCpeeringDNS( peerid=peer["VpcPeeringConnectionId"], options=self.buildVPCPeerOptions(), noop=noop) except ClientError as err: logging.warn(err) try: vpcpeerclient.accept(noop=noop) except ClientError as err: logging.warn(err) status = vpcpeerclient.getStatus() if status["Code"] == "active": self.addPeertoRoutetable(ec2client=ec2client, peer=peer, vpcpeerclient=vpcpeerclient, role='Accepter', noop=noop, logoutput=logoutput)
def createVPNConnections(self, session, config, noop=False, logoutput=None): ec2client = ec2.ec2(session) cgws = self.getGustomerGateways(session=session)["CustomerGateways"] for peer, values in config["resources"]["vpcpeer"].iteritems(): if values["ipaddress"] not in [ x for x in cgws["IpAddress"] if cgws["State"] == "available" ]: if noop: print "VPN Connection: " + peer + " is not available" else: try: _vpngw = ec2client.create_vpn_gateway() except ClientError as err: logging.warn(err) try: _cgw = ec2client.create_customer_gateway( bgpasn=values["bgpasn"], publicip=values["publicip"]) except ClientError as err: logging.warn(err) try: _vpnconnection = ec2client.create_vpn_connection( cgwid=_cgw["CustomerGatewayId"], vpngwid=_vpngw["VpnGatewayId"], Options=self.buildVPNRoutingOptions(), noop=noop) except ClientError as err: logging.warn(err) print _vpnconnection
def getVPCs(self, session=None, vpcids=None, noop=False, logoutput=None): ec2client = ec2.ec2(session) vpcs = ec2client.getVPCs(vpcids=vpcids, noop=noop) if logoutput: print json.dumps(vpcs, default=str, sort_keys=True, indent=4, separators=(',', ': ')) return vpcs
def factory(copymethod,*args,**kwargs): if copymethod=='passwordAuth': return passwordAuth.passwordAuth(*args,**kwargs) if copymethod=='aaf': return aaf.aaf(*args,**kwargs) if copymethod=='ec2': return ec2.ec2(*args,**kwargs) if copymethod=='sftpAuth': return sftpAuth.passwordAuth(*args,**kwargs) if copymethod=='ASyncAuth': return ASyncAuthorise.ASyncAuthorise(*args,**kwargs)
def factory(copymethod, *args, **kwargs): if copymethod == 'passwordAuth': return passwordAuth.passwordAuth(*args, **kwargs) if copymethod == 'aaf': return aaf.aaf(*args, **kwargs) if copymethod == 'ec2': return ec2.ec2(*args, **kwargs) if copymethod == 'sftpAuth': return sftpAuth.passwordAuth(*args, **kwargs) if copymethod == 'ASyncAuth': return ASyncAuthorise.ASyncAuthorise(*args, **kwargs) if copymethod == 'keyAuth': return keyAuth.keyAuth(*args, **kwargs)
def getSubnets(self, session=None, subnetids=None, noop=False, logoutput=None): ec2client = ec2.ec2(session) subnets = ec2client.getSubnets(subnetids=subnetids, noop=noop) if logoutput: print json.dumps(subnets, default=str, sort_keys=True, indent=4, separators=(',', ': ')) return subnets
def getRoutetables(self, session=None, routetableids=None, noop=False, logoutput=None): ec2client = ec2.ec2(session) routetables = ec2client.getRouteTables(routetableids=routetableids, noop=noop) if logoutput: print json.dumps(routetables, default=str, sort_keys=True, indent=4, separators=(',', ': ')) return routetables
def createVPCPeering(self, session, config, noop=False, logoutput=None): ec2client = ec2.ec2(session) for peer, values in config["resources"]["vpcpeer"].iteritems(): print peer if logoutput: print "Peer Account:" + values["peeraccount"] print "Peer VPC ID:" + values["peervpcid"] print "VPC ID:" + values["vpcid"] print "----------------------------" try: ec2client.createVPCpeering(peeraccount=values["peeraccount"], peervpcid=values["peervpcid"], vpcid=values["vpcid"], noop=noop) except ClientError as err: logging.warn(err) sys.exit(1)
def legacy_pcs(args): region = args['region'] boto_profile = args['boto_profile'] bastion = args['bastion'] result = {} roles = ['pcs', 'tableloader'] for role in roles: jsn = ec2( dict(region=region, boto_profile=boto_profile, filters={'tag:CMDB_role': role}, bastion=bastion)) merge_inventories(result, json.loads(jsn)) return json.dumps(result, sort_keys=True, indent=2)
def verifyVPCPeering(self, session, vpcpeerid=None, noop=False, logoutput=None): ec2client = ec2.ec2(session) peers = ec2client.getVPCpeering(vpcpeerid=vpcpeerid, noop=noop) for peer in peers["VpcPeeringConnections"]: vpcpeerclient = ec2.ec2vpcpeer( session=session, identifier=peer["VpcPeeringConnectionId"]) status = vpcpeerclient.getStatus() if status["Code"] == "pending-acceptance": print "VPC Peer: " + peer[ "VpcPeeringConnectionId"] + " has a status of: " + status[ "Code"] + " please accept the connection with its peer VPC" if status["Code"] == "active": self.addPeertoRoutetable(ec2client=ec2client, peer=peer, vpcpeerclient=vpcpeerclient, role='Requester', noop=noop, logoutput=logoutput)
def cns(args): result = {} if 'clusters' not in args: raise Exception('clusters entry is missing in the cns plugin args') for cluster in args['clusters']: region = cluster['region'] profile = cluster['boto_profile'] for cns_cluster in cluster['names']: jsn = ec2( dict(region=region, boto_profile=profile, cache=args.get('cache', 3600 * 24), filters={'tag:cluster': cns_cluster}, bastion={ 'tag:cluster': cns_cluster, 'tag:role': 'bastion' })) merge_inventories(result, json.loads(jsn)) return json.dumps(result, sort_keys=True, indent=2)
def getVPCPeering(self, session, filtername=None, filtervalues=None, vpcpeerid=[], noop=False, logoutput=None): ec2client = ec2.ec2(session) filters = None if filtername and filtervalues: filters = self.buildFilters(name=filtername, filters=filtervalues) try: peers = ec2client.getVPCpeering(filters=filters, vpcpeerid=vpcpeerid, noop=noop) except ClientError as err: logging.warn(err) sys.exit(1) print json.dumps(peers, default=str, sort_keys=True, indent=4, separators=(',', ': '))