module TwistlockControl::Actions::Container

Public Class Methods

add(properties) click to toggle source
# File lib/twistlock_control/actions/container.rb, line 7
def add(properties)
        container = Entities::Container.new(properties)
        synchronize_description(container)
        container
end
remove() click to toggle source
# File lib/twistlock_control/actions/container.rb, line 17
def remove
        fail 'not implemented'
end
synchronize_description(container) click to toggle source
# File lib/twistlock_control/actions/container.rb, line 21
def synchronize_description(container)
        container.description = fetch_container_description(container)
        container.save
end
update() click to toggle source
# File lib/twistlock_control/actions/container.rb, line 13
def update
        fail 'not implemented'
end

Private Class Methods

fetch_container_description(container) click to toggle source
# File lib/twistlock_control/actions/container.rb, line 28
def fetch_container_description(container)
        nonce = SecureRandom.hex[0..7]
        dirname = "/tmp/#{container.name}-#{nonce}"
        FileUtils.mkdir_p dirname
        Dir.chdir(dirname) do
                `git clone -n --depth=1 #{container.url} .`
                `git checkout HEAD twistlock.yml`
                result = `cat twistlock.yml && rm -rf #{dirname}`
                Entities::ContainerDescription.new(YAML.load(result))
        end
end