Merge pull request #1508 from rneugeba/meta

Allow passing LogicalIDs into hyperkit instances
This commit is contained in:
Rolf Neugebauer 2017-04-05 18:11:12 +01:00 committed by GitHub
commit 466f59189a
2 changed files with 32 additions and 4 deletions

View File

@ -2,7 +2,13 @@
"ID": "cattle",
"Properties": {
"Allocation": {
"Size": 5
"LogicalIDs": [
"192.168.65.200",
"192.168.65.201",
"192.168.65.202",
"192.168.65.203",
"192.168.65.204"
]
},
"Instance": {
"Plugin": "instance-hyperkit",
@ -10,7 +16,7 @@
"Moby": "etcd",
"Disk" : 0,
"CPUs" : 1,
"Memory" : 512
"Memory" : 512,
}
},
"Flavor": {

View File

@ -68,6 +68,13 @@ func (p hyperkitPlugin) Provision(spec instance.Spec) (*instance.ID, error) {
return nil, err
}
id := instance.ID(path.Base(instanceDir))
log.Infof("[%s] New instance", id)
logicalID := string(id)
if spec.LogicalID != nil {
logicalID = string(*spec.LogicalID)
}
log.Infof("[%s] LogicalID: %s", id, logicalID)
// Start a HyperKit instance
h, err := hyperkit.New(p.HyperKit, instanceDir, p.VPNKitSock, "")
@ -81,17 +88,25 @@ func (p hyperkitPlugin) Provision(spec instance.Spec) (*instance.ID, error) {
h.DiskSize = int(properties["Disk"].(float64))
h.UserData = spec.Init
h.Console = hyperkit.ConsoleFile
log.Infof("[%s] Booting: %s/%s", id, h.Kernel, h.Initrd)
log.Infof("[%s] %d CPUs, %dMB Memory, %dMB Disk", id, h.CPUs, h.Memory, h.DiskSize)
err = h.Start("console=ttyS0")
if err != nil {
return nil, err
}
log.Info("Started new VM: ", id)
log.Infof("[%s] Started", id)
if err := ioutil.WriteFile(path.Join(instanceDir, "logical.id"), []byte(logicalID), 0644); err != nil {
return nil, err
}
tagData, err := types.AnyValue(spec.Tags)
if err != nil {
return nil, err
}
log.Debugf("[%s] tags: %s", id, tagData)
if err := ioutil.WriteFile(path.Join(instanceDir, "tags"), tagData.Bytes(), 0644); err != nil {
return nil, err
}
@ -206,7 +221,14 @@ func (p hyperkitPlugin) DescribeInstances(tags map[string]string, properties boo
p.Destroy(id)
continue
}
lid := instance.LogicalID(h.Pid)
lidData, err := ioutil.ReadFile(path.Join(instanceDir, "logical.id"))
if err != nil {
log.Warningln("Could not get logical ID. Id: ", id)
p.Destroy(id)
continue
}
lid := instance.LogicalID(lidData)
logicalID = &lid
descriptions = append(descriptions, instance.Description{