File: container.py

package info (click to toggle)
subuser 0.6.2-3
  • links: PTS
  • area: main
  • in suites: bookworm, bullseye, buster, forky, sid, trixie
  • size: 4,208 kB
  • sloc: python: 5,201; sh: 380; makefile: 73
file content (46 lines) | stat: -rwxr-xr-x 1,658 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# -*- coding: utf-8 -*-

"""
Container objects allow you to interact with docker containers via the Docker daemon.
"""

#external imports
import json,urllib
#internal imports
from subuserlib.classes.userOwnedObject import UserOwnedObject

class Container(UserOwnedObject):
  def __init__(self,user,containerId):
    self.id = containerId
    UserOwnedObject.__init__(self,user)

  def inspect(self):
    """
     Returns a dictionary of container properties.
     If the container no longer exists, return None.
    """
    self.user.dockerDaemon.getConnection().request("GET","/v1.13/containers/"+self.id+"/json")
    response = self.user.dockerDaemon.getConnection().getresponse()
    if not response.status == 200:
      response.read() # Read the response and discard it to prevent the server from getting locked up: https://stackoverflow.com/questions/3231543/python-httplib-responsenotready
      return None
    else:
      return json.loads(response.read().decode("utf-8"))

  def stop(self):
    self.user.dockerDaemon.getConnection().request("POST","/v1.13/containers/"+self.id+"/stop")
    response = self.user.dockerDaemon.getConnection().getresponse()
    response.read()

  def remove(self,force=False):
    queryParameters =  {
      'force': force
      }
    try:
      queryParametersString = urllib.urlencode(queryParameters)
    except AttributeError:
      queryParametersString = urllib.parse.urlencode(queryParameters) # Python 3
    self.user.dockerDaemon.getConnection().request("DELETE","/v1.13/containers/"+self.id+"?"+queryParametersString)
    response = self.user.dockerDaemon.getConnection().getresponse()
    response.read()