def newProvisionedMachineCluster(datastore, endpoint, apiVersion=None): ''' Set a preprovisioned single-machine cluster. 'endpoint' is the Docker host api endpoint. ''' try: info = __obtainDockerHostInfo__(endpoint) dk = docker.dockerClient(base_url=endpoint, cert_path=settings.DK_DEFAULT_MASTER_CLIENT_CERTS) # Generate token token = tokens.newClusterToken(datastore) # Add to filesystem: for this simple already provisioned machine, only the folder will be created try: files.createClusterDir(token) except os.error: files.deleteClusterDir(token) raise errors.OperationError("Couldn't create cluster reference in the filesystem") # Add to datastore datastorecluster = {'token':token, 'status':'joining', 'description':'Ready to use', 'numberOfNodes':1, 'type':'swarm', 'nodes':[{'endpoint':endpoint, 'status':'joining'}]} datastore.addCluster(token, datastorecluster) docker.createOneNodeSwarm(datastore, token, dk) return datastorecluster, 200 except errors.ControllerError, e: return e.getResponse()
def deleteCluster(datastore, token): ''' Deletes the cluster and all reference with it. ''' try: # Retrieve cluster information in datastore cluster = datastore.getCluster(token) if cluster == None: raise errors.NotFoundError("Cluster does not exist.") # stop cluster (depends on the type of cluster) if cluster['type'] is 'simple-preprovisioned': pass else: raise errors.ControllerError("Don't know how to remove a cluster of this type ("+ cluster['type'] + ")." ) # delete folder files.deleteClusterDir(token) # delete from datastore datastore.delCluster(token) # fake cluster just to return a response cluster = {} cluster['status']='deleted' cluster['description']='Cluster has been removed and will not be accesible anymore.' return cluster except errors.NotFoundError, e: return e.getResponse()
def deleteCluster(datastore, token): ''' Deletes the cluster and all reference with it. ''' try: # Retrieve cluster information in datastore cluster = datastore.getCluster(token) if cluster == None: raise errors.NotFoundError("Cluster does not exist.") # stop cluster (depends on the type of cluster) if cluster['type'] is 'simple-preprovisioned': pass else: raise errors.ControllerError( "Don't know how to remove a cluster of this type (" + cluster['type'] + ").") # delete folder files.deleteClusterDir(token) # delete from datastore datastore.delCluster(token) # fake cluster just to return a response cluster = {} cluster['status'] = 'deleted' cluster[ 'description'] = 'Cluster has been removed and will not be accesible anymore.' return cluster except errors.NotFoundError, e: return e.getResponse()
def newProvisionedMachineCluster(datastore, endpoint, apiVersion=None): ''' Set a preprovisioned single-machine cluster. 'endpoint' is the Docker host api endpoint. ''' try: info = __obtainDockerHostInfo__(endpoint) dk = docker.dockerClient( base_url=endpoint, cert_path=settings.DK_DEFAULT_MASTER_CLIENT_CERTS) # Generate token token = tokens.newClusterToken(datastore) # Add to filesystem: for this simple already provisioned machine, only the folder will be created try: files.createClusterDir(token) except os.error: files.deleteClusterDir(token) raise errors.OperationError( "Couldn't create cluster reference in the filesystem") # Add to datastore datastorecluster = { 'token': token, 'status': 'joining', 'description': 'Ready to use', 'numberOfNodes': 1, 'type': 'swarm', 'nodes': [{ 'endpoint': endpoint, 'status': 'joining' }] } datastore.addCluster(token, datastorecluster) docker.createOneNodeSwarm(datastore, token, dk) return datastorecluster, 200 except errors.ControllerError, e: return e.getResponse()
aux = errors.ControllerError("Unknown error: "+ e.message) return aux.getResponse() infoText = json.dumps(info) files.appendInFile(clusterPath,infoText) # Add to datastore datastorecluster = {'token':token, 'status':'joining', 'description':'Ready to use', 'numberOfNodes':1, 'type':'simple-preprovisioned', 'nodes':[{'endpoint':endpoint, 'status':'joining'}]} datastore.addCluster(token, datastorecluster) return datastorecluster, 200 except os.error: files.deleteClusterDir(token) raise errors.OperationError("Couldn't create cluster reference in the filesystem") def newProvisionedMachineCluster(datastore, endpoint, apiVersion=None): ''' Set a preprovisioned single-machine cluster. 'endpoint' is the Docker host api endpoint. ''' try: info = __obtainDockerHostInfo__(endpoint) dk = docker.dockerClient(base_url=endpoint, cert_path=settings.DK_DEFAULT_MASTER_CLIENT_CERTS) # Generate token token = tokens.newClusterToken(datastore) # Add to filesystem: for this simple already provisioned machine, only the folder will be created try: