Skip to content

Instantly share code, notes, and snippets.

@briandant
Last active April 12, 2016 13:51
Show Gist options
  • Save briandant/25d5e9dea5ad11a2a584557e7f92d08b to your computer and use it in GitHub Desktop.
Save briandant/25d5e9dea5ad11a2a584557e7f92d08b to your computer and use it in GitHub Desktop.

Code Example

Manager

class ContainerManager(models.Manager):

    def delete(self, *args, **kwargs):

        c = get_docker_client() 
        c.stop(self.container_id)
        c.remove(self.container_id) 

        super(ContainerManager, self).delete(*args, **kwargs)


    def create(self, *args, **kwargs):

        c = get_docker_client() 
        docker_cont = c.create_container()
        self.container_id = docker_cont['Id']

        super(ContainerManager, self).create(*args, **kwargs)

    def sync(self, *args, **kwargs):

        c = get_docker_client() 
        data = c.inspect(self.container_id)
        self.metadata = data

        ... # Other things to sync here?

        super(ContainerManager, self).save(*args, **kwargs)

        

Model

class Container(models.Model):
    image = models.ForeignKey(Image)
    assigned_to = models.EmailField(null=True, blank=True)
    container_id = models.CharField(max_length=64, unique=True)
    ...

    objects = ContainerManager 
@mrgnr
Copy link

mrgnr commented Apr 12, 2016

Pretty

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment