Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
    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
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
 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)
Exemplo n.º 11
0
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)
Exemplo n.º 12
0
    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=(',', ': '))