118 lines
3.2 KiB
Ruby
118 lines
3.2 KiB
Ruby
module VagrantPlugins
|
|
module CommandServe
|
|
class Client
|
|
class Box < Client
|
|
# @return [Bool] check allowed
|
|
def automatic_update_check_allowed
|
|
res = client.automatic_update_check_allowed(Empty.new)
|
|
res.allowed
|
|
end
|
|
|
|
def destroy
|
|
client.destroy(Empty.new)
|
|
end
|
|
|
|
# @param [String] version
|
|
# @return [Bool] has update
|
|
def has_update(version)
|
|
res = client.has_update(SDK::Box::HasUpdateRequest.new(
|
|
version: version
|
|
))
|
|
res.has_update
|
|
end
|
|
|
|
# @param [String] version
|
|
# @return [Array] if there is an update available return an array of
|
|
# [metadata (hash), version (string), provider (string)],
|
|
# otherwise, return nil
|
|
def update_info(version)
|
|
res = client.update_info(SDK::Box::HasUpdateRequest.new(
|
|
version: version
|
|
))
|
|
if res.has_update
|
|
meta = mapper.map(res.metadata, to: Client::BoxMetadata)
|
|
return [meta, res.new_version, res.new_provider]
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
|
|
# @param [Sdk::Args::TargetIndex] index
|
|
# @return [Bool] is in use
|
|
def in_use(index)
|
|
res = client.in_use(index)
|
|
res.in_use
|
|
end
|
|
|
|
# @param [String] path
|
|
def repackage(path)
|
|
path = Pathname.new(path.to_s)
|
|
client.repackage(mapper.map(path, to: SDK::Args::Path))
|
|
end
|
|
|
|
# @return [String] path
|
|
def directory
|
|
res = client.directory(Empty.new)
|
|
res.path
|
|
end
|
|
|
|
# @param [Sdk::Args::TargetIndex] index
|
|
# @return [List<MachineIndexEntry>] machines currently using the box
|
|
def machines(index)
|
|
res = client.machines(index)
|
|
machines = []
|
|
res.machines.each do |m|
|
|
machine = Target::Machine.load(m, broker: broker)
|
|
machines << Vagrant::MachineIndex::Entry.load(machine)
|
|
end
|
|
return machines
|
|
end
|
|
|
|
# @return [Hash] box metadata
|
|
def box_metadata
|
|
res = client.box_metadata(Empty.new)
|
|
mapper.map(res.metadata, to: Hash)
|
|
end
|
|
|
|
# @return [Hash] metadata (from metadata_url)
|
|
def metadata
|
|
res = client.metadata(Empty.new)
|
|
mapper.map(res.metadata, to: Client::BoxMetadata)
|
|
end
|
|
|
|
# @return [String] metadata url
|
|
def metadata_url
|
|
res = client.metadata_url(Empty.new)
|
|
res.metadata_url
|
|
end
|
|
|
|
# @return [String] name
|
|
def name
|
|
res = client.name(Empty.new)
|
|
res.name
|
|
end
|
|
|
|
# @return [String] provider
|
|
def provider
|
|
res = client.provider(Empty.new)
|
|
res.provider
|
|
end
|
|
|
|
# @return [String] version
|
|
def version
|
|
res = client.version(Empty.new)
|
|
res.version
|
|
end
|
|
|
|
# @param [Sdk::Args::Box] box
|
|
# @return [int] version returns -1, 0, or 1 if this version is smaller,
|
|
# equal, or larger than the other version, respectively.
|
|
def compare(box)
|
|
res = client.compare(box)
|
|
res.result
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|