airshipctl/pkg/document/dochelper_baremetalhost.go

75 lines
2.1 KiB
Go

/*
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package document
// GetBMHNetworkData retrieves the associated network data string
// for the bmh document supplied from the bundle supplied
func GetBMHNetworkData(bmh Document, bundle Bundle) (string, error) {
// try and find these documents in our bundle
selector, err := NewNetworkDataSelector(bmh)
if err != nil {
return "", err
}
doc, err := bundle.SelectOne(selector)
if err != nil {
return "", err
}
networkData, err := GetSecretDataKey(doc, "networkData")
if err != nil {
return "", err
}
return networkData, nil
}
// GetBMHBMCAddress returns the bmc address for a particular the document supplied
func GetBMHBMCAddress(bmh Document) (string, error) {
bmcAddress, err := bmh.GetString("spec.bmc.address")
if err != nil {
return "", err
}
return bmcAddress, nil
}
// GetBMHBMCCredentials returns the BMC credentials for the bmh document supplied from
// the supplied bundle
func GetBMHBMCCredentials(bmh Document, bundle Bundle) (username string, password string, err error) {
// extract the secret document name
bmcCredentialsName, err := bmh.GetString("spec.bmc.credentialsName")
if err != nil {
return "", "", err
}
// find the secret within the bundle supplied
selector := NewBMCCredentialsSelector(bmcCredentialsName)
doc, err := bundle.SelectOne(selector)
if err != nil {
return "", "", err
}
username, err = GetSecretDataKey(doc, "username")
if err != nil {
return "", "", err
}
password, err = GetSecretDataKey(doc, "password")
if err != nil {
return "", "", err
}
// extract the username and password from them
return username, password, nil
}