def handleAddGroup(request): yield request.credential.addGroup(request.body['group_name'], request.body['group_description']) queue.returnQueueSuccess(request.mq, request.body['return_queue'], True) defer.returnValue(request)
def handleListInstances(request): queue.returnQueueSuccess(request.mq, request.body['return_queue'], [request.credential.instanceToDict(i) for i in request.state.credentialsCache.getCredential(request.credential.name)['instances']]) return defer_pipe.ret(request)
def handleListGroups(request): groups = yield request.credential.listGroups() queue.returnQueueSuccess(request.mq, request.body['return_queue'], groups) defer.returnValue(request)
def handleListKeypairs(request): keypairs = yield request.credential.listKeypairs() queue.returnQueueSuccess(request.mq, request.body['return_queue'], keypairs) defer.returnValue(request)
def handleRunInstances(request): credential = request.credential userDataFile = None if 'user_data' in request.body: userData = credentials_misc.replaceUserDataVariables( credential, request.body['user_data']) userDataFile = '/tmp/' + global_state.make_ref() + '.conf' fout = open(userDataFile, 'w') fout.write(userData + '\n') fout.close() instances = yield credential.runInstances( amiId=request.body['ami'], key=request.body['key'], instanceType=request.body['instance_type'], groups=request.body['groups'], availabilityZone=request.body.get('availability_zone', None), number=request.body.get('num_instances', 1), userDataFile=userDataFile, log=True) if userDataFile: os.remove(userDataFile) for i in instances: log.msg('INSTANCE: instance_id: %s public_dns: %s' % (i.instanceId, i.publicDNS)) yield request.state.credentialsCache.invalidate(credential.name) queue.returnQueueSuccess(request.mq, request.body['return_queue'], [credential.instanceToDict(i) for i in instances]) defer.returnValue(request)
def handleRunSpotInstances(request): userDataFile=None if 'user_data' in request.body: userData = credentials_misc.replaceUserDataVariables(request.credential, request.body['user_data']) userDataFile = '/tmp/' + global_state.make_ref() + '.conf' fout = open(userDataFile, 'w') fout.write(userData + '\n') fout.close() instances = yield request.credential.runSpotInstances(bidPrice=request.body['bid_price'], amiId=request.body['ami'], key=request.body['key'], instanceType=request.body['instance_type'], groups=request.body['groups'], availabilityZone=request.body.get('availability_zone', None), number=request.body.get('num_instances', 1), userDataFile=userDataFile, log=True) if userDataFile: os.remove(userDataFile) yield request.state.credentialsCache.invalidate(request.credential.name) queue.returnQueueSuccess(request.mq, request.body['return_queue'], [request.credential.instanceToDict(i) for i in instances]) defer.returnValue(request)
def handleAddKeypair(request): yield request.credential.addKeypair(request.body['keypair_name']) queue.returnQueueSuccess(request.mq, request.body['return_queue'], True) defer.returnValue(request)
def handleCredentialConfig(request): conf = config.configToDict(request.credential.credInstance.conf) conf = func.updateDict( conf, {'general.ctype': request.credential.credential.getCType()}) queue.returnQueueSuccess(request.mq, request.body['return_queue'], conf) return defer_pipe.ret(request)
def handleCredentialConfig(request): conf = config.configToDict(request.credential.credInstance.conf) conf = func.updateDict(conf, {'general.ctype': request.credential.credential.getCType()}) queue.returnQueueSuccess(request.mq, request.body['return_queue'], conf) return defer_pipe.ret(request)
def handleWWWListAddCredentials(request): if 'credential_name' in request.body and core.keysInDict( ['credential_name', 'description', 'ctype', 'metadata'], request.body): # Users can provide a file name or the actual contents of the # certificate. if 'cert_file' in request.body: cert = open(request.body['cert_file']).read() else: cert = request.body['cert'] if 'pkey_file' in request.body: pkey = open(request.body['pkey_file']).read() else: pkey = request.body['pkey'] conf = config.configFromMap(request.body.get('conf', {}), base=config.configFromEnv()) cred = persist.createCredential(name=request.body['credential_name'], desc=request.body['description'], ctype=request.body['ctype'], cert=cert, pkey=pkey, active=True, metadata=request.body['metadata'], conf=conf) taskName = yield tasks_tx.createTaskAndSave('addCredential', 1) instantiateAndSaveCredential(taskName, cred, request.state.credentialPersist) queue.returnQueueSuccess(request.mq, request.body['return_queue'], taskName) defer.returnValue(request) elif 'credential_name' not in request.body: credentials = request.state.credentialsCache.getAllCredentials() credentialsDicts = [{ 'name': name, 'description': c['cred_instance'].credential.desc, 'num_instances': len(c['instances']), 'ctype': c['cred_instance'].credential.getCType() } for name, c in credentials.iteritems() if ('credential_names' in request.body and name in request.body['credential_names']) or 'credential_names' not in request.body] queue.returnQueueSuccess(request.mq, request.body['return_queue'], credentialsDicts) defer.returnValue(request) else: queue.returnQueueError(request.mq, request.body['return_queue'], 'Unknown credential query') raise UnknownRequestError(str(request.body))
def handleAuthorizeGroup(request): yield request.credential.authorizeGroup(groupName=request.body['group_name'], protocol=request.body.get('protocol', None), portRange=request.body['port_range'], sourceGroup=request.body.get('source_group', None), sourceGroupUser=request.body.get('source_group_user', None), sourceSubnet=request.body.get('source_subnet', None)) queue.returnQueueSuccess(request.mq, request.body['return_queue'], True) defer.returnValue(request)
def handleUpdateInstances(request): convertedInstances = [request.credential.instanceFromDict(i) for i in request.body["instances"]] queue.returnQueueSuccess( request.mq, request.body["return_queue"], [ request.credential.instanceToDict(ci) for ci in request.state.credentialsCache.getCredential(request.credential.name)["instances"] for i in convertedInstances if (ci.spotRequestId and ci.spotRequestId == i.spotRequestId) or ci.instanceId == i.instanceId ], ) return defer_pipe.ret(request)
def handleUpdateInstances(request): convertedInstances = [ request.credential.instanceFromDict(i) for i in request.body['instances'] ] queue.returnQueueSuccess(request.mq, request.body['return_queue'], [ request.credential.instanceToDict(ci) for ci in request.state.credentialsCache.getCredential( request.credential.name)['instances'] for i in convertedInstances if (ci.spotRequestId and ci.spotRequestId == i.spotRequestId) or ci.instanceId == i.instanceId ]) return defer_pipe.ret(request)
def handleTerminateInstances(request): if request.body['instances']: yield request.credential.terminateInstances([request.credential.instanceFromDict(i) for i in request.body['instances']], log=True) request.state.credentialsCache.invalidate(request.credential.name) queue.returnQueueSuccess(request.mq, request.body['return_queue'], True) else: queue.returnQueueSuccess(request.mq, request.body['return_queue'], True) defer.returnValue(request)
def handleWWWDeleteCredential(request): clusters = yield clusters_client.listClusters('localhost', {}, 'guest') for cluster in clusters: if cluster['cred_name'] == request.body['credential_name']: raise CredentialInUseError() if not request.body.get('dry_run', False): yield request.state.credentialPersist.deleteCredential(request.body['credential_name']) queue.returnQueueSuccess(request.mq, request.body['return_queue'], True) defer.returnValue(request)
def handleTerminateInstances(request): if request.body['instances']: yield request.credential.terminateInstances([ request.credential.instanceFromDict(i) for i in request.body['instances'] ], log=True) request.state.credentialsCache.invalidate(request.credential.name) queue.returnQueueSuccess(request.mq, request.body['return_queue'], True) else: queue.returnQueueSuccess(request.mq, request.body['return_queue'], True) defer.returnValue(request)
def handleGetCType(request): queue.returnQueueSuccess(request.mq, request.body['return_queue'], request.credential.credential.getCType()) return defer_pipe.ret(request)
def handleWWWListAddCredentials(request): if 'credential_name' in request.body and core.keysInDict(['credential_name', 'description', 'ctype', 'metadata'], request.body): # Users can provide a file name or the actual contents of the # certificate. if 'cert_file' in request.body: cert = open(request.body['cert_file']).read() else: cert = request.body['cert'] if 'pkey_file' in request.body: pkey = open(request.body['pkey_file']).read() else: pkey = request.body['pkey'] conf = config.configFromMap(request.body.get('conf', {}), base=config.configFromEnv()) cred = persist.createCredential(name=request.body['credential_name'], desc=request.body['description'], ctype=request.body['ctype'], cert=cert, pkey=pkey, active=True, metadata=request.body['metadata'], conf=conf) taskName = yield tasks_tx.createTaskAndSave('addCredential', 1) instantiateAndSaveCredential(taskName, cred, request.state.credentialPersist) queue.returnQueueSuccess(request.mq, request.body['return_queue'], taskName) defer.returnValue(request) elif 'credential_name' not in request.body: credentials = request.state.credentialsCache.getAllCredentials() credentialsDicts = [{'name': name, 'description': c['cred_instance'].credential.desc, 'num_instances': len(c['instances']), 'ctype': c['cred_instance'].credential.getCType()} for name, c in credentials.iteritems() if ('credential_names' in request.body and name in request.body['credential_names']) or 'credential_names' not in request.body] queue.returnQueueSuccess(request.mq, request.body['return_queue'], credentialsDicts) defer.returnValue(request) else: queue.returnQueueError(request.mq, request.body['return_queue'], 'Unknown credential query') raise UnknownRequestError(str(request.body))