Esempio n. 1
0
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()
Esempio n. 2
0
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()
Esempio n. 3
0
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()
Esempio n. 4
0
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: