// get available server // blades = rest_api(:oneview, :get, "/rest/server-hardware?sort=name:asc&filter=serverHardwareTypeUri='#{server_hardware_type_uri}'&filter=serverGroupUri='#{enclosure_group_uri}'") func (c *OVClient) GetAvailableHardware(hardwaretype_uri utils.Nstring, servergroup_uri utils.Nstring) (hw ServerHardware, err error) { var ( hwlist ServerHardwareList f = []string{"serverHardwareTypeUri='" + hardwaretype_uri.String() + "'", "serverGroupUri='" + servergroup_uri.String() + "'"} ) if hwlist, err = c.GetServerHardwareList(f, "name:desc"); err != nil { return hw, err } if !(len(hwlist.Members) > 0) { return hw, errors.New("Error! No available blades that are compatible with the server profile!") } // pick an available blade for _, blade := range hwlist.Members { if H_NOPROFILE_APPLIED.Equal(blade.State) { hw = blade break } } if hw.Name == "" { return hw, errors.New("No more blades are available for provisioning!") } return hw, nil }
func (c *ICSPClient) GetBuildPlanByUri(uri utils.Nstring) (OSDBuildPlan, error) { var bldplan OSDBuildPlan // grab the target data, err := c.RestAPICall(rest.GET, uri.String(), nil) if err != nil { return bldplan, err } log.Debugf("GetBuildPlan %s", data) if err := json.Unmarshal([]byte(data), &bldplan); err != nil { return bldplan, err } return bldplan, nil }
func (c *OVClient) GetEnclosureGroupByUri(uri utils.Nstring) (EnclosureGroup, error) { var ( enclosureGroup EnclosureGroup ) // refresh login c.RefreshLogin() c.SetAuthHeaderOptions(c.GetAuthHeaderMap()) data, err := c.RestAPICall(rest.GET, uri.String(), nil) if err != nil { return enclosureGroup, err } log.Debugf("GetEnclosureGroup %s", data) if err := json.Unmarshal([]byte(data), &enclosureGroup); err != nil { return enclosureGroup, err } return enclosureGroup, nil }
func (c *OVClient) GetInterconnectTypeByUri(uri utils.Nstring) (InterconnectType, error) { var ( interconnectType InterconnectType ) // refresh login c.RefreshLogin() c.SetAuthHeaderOptions(c.GetAuthHeaderMap()) data, err := c.RestAPICall(rest.GET, uri.String(), nil) if err != nil { return interconnectType, err } log.Debugf("GetInterconnectType %s", data) if err := json.Unmarshal([]byte(data), &interconnectType); err != nil { return interconnectType, err } return interconnectType, nil }
// GetProfileByURI - get the profile from a uri func (c *OVClient) GetProfileByURI(uri utils.Nstring) (ServerProfile, error) { var ( profile ServerProfile ) // refresh login c.RefreshLogin() c.SetAuthHeaderOptions(c.GetAuthHeaderMap()) data, err := c.RestAPICall(rest.GET, uri.String(), nil) if err != nil { return profile, err } log.Debugf("GetProfileByURI %s", data) if err := json.Unmarshal([]byte(data), &profile); err != nil { return profile, err } return profile, nil }
// get an os deployment plan with uri func (c *OVClient) GetOSDeploymentPlan(uri utils.Nstring) (OSDeploymentPlan, error) { var osDeploymentPlan OSDeploymentPlan // refresh login c.RefreshLogin() c.SetAuthHeaderOptions(c.GetAuthHeaderMap()) // rest call data, err := c.RestAPICall(rest.GET, uri.String(), nil) if err != nil { return osDeploymentPlan, err } log.Debugf("GetOSDeploymentPlan %s", data) if err := json.Unmarshal([]byte(data), &osDeploymentPlan); err != nil { return osDeploymentPlan, err } return osDeploymentPlan, nil }
// get a server hardware with uri func (c *OVClient) GetServerHardware(uri utils.Nstring) (ServerHardware, error) { var hardware ServerHardware // refresh login c.RefreshLogin() c.SetAuthHeaderOptions(c.GetAuthHeaderMap()) // rest call data, err := c.RestAPICall(rest.GET, uri.String(), nil) if err != nil { return hardware, err } log.Debugf("GetServerHardware %s", data) if err := json.Unmarshal([]byte(data), &hardware); err != nil { return hardware, err } hardware.Client = c return hardware, nil }
// NewNetConfig - create a new netconfig object without interfaces func NewNetConfig( hostname utils.Nstring, workgroup utils.Nstring, domain utils.Nstring, winslist utils.Nstring, dnsnamelist utils.Nstring, dnssearchlist utils.Nstring) NetConfig { var netconfig NetConfig netconfig = NetConfig{ WINSList: winslist, DNSNameList: dnsnamelist, DNSSearchList: dnssearchlist, } if !hostname.IsNil() { netconfig.Hostname = hostname.String() } if !workgroup.IsNil() { netconfig.Workgroup = workgroup.String() } if !domain.IsNil() { netconfig.Domain = domain.String() } return netconfig }
// NewNetConfigInterface - creates an interface object for NetConfig func (n *NetConfig) NewNetConfigInterface( enable bool, macaddr string, isdhcp bool, isipv6 bool, ipv6gateway utils.Nstring, // ipv6 gateway, required with isipv6 is true ipv4gateway utils.Nstring, // ipv4 gateway, required when isdhcp is false staticnets utils.Nstring, // comma seperated list of ip's, required when isdhcp is false name utils.Nstring, // optional name wins utils.Nstring, // comma seperated list of wins servers dnsservers utils.Nstring, // comma seperated list of dns servers dnssearch utils.Nstring, vlandid int) NetConfigInterface { // comma seperated list of dns search var inetconfig NetConfigInterface inetconfig = NetConfigInterface{ Enabled: enable, MACAddr: macaddr, DHCPv4: isdhcp, IPv6Autoconfig: isipv6, VlanID: vlandid, } if macaddr == "" { log.Error("Network configuration (NetConfigInterface) requires a MAC Address to create a new interface object.") } if isipv6 { if ipv6gateway.IsNil() { log.Error("Gateway for ipv6 is required, configure IPv6Gateway") } inetconfig.IPv6Gateway = ipv6gateway.String() } if !isdhcp { if ipv4gateway.IsNil() { log.Error("Static ipv4 configuration requires a gateway configured (IPv4Gateway)") } inetconfig.IPv4Gateway = ipv4gateway.String() if staticnets.IsNil() { log.Error("Static ipv4 configuration requires static network list") } inetconfig.StaticNetworks = strings.Split(staticnets.String(), SplitSep) } if !name.IsNil() { inetconfig.Name = name.String() } if !wins.IsNil() { inetconfig.WINSServers = strings.Split(wins.String(), SplitSep) } if !dnsservers.IsNil() { inetconfig.DNSServers = strings.Split(dnsservers.String(), SplitSep) } if !dnssearch.IsNil() { inetconfig.DNSSearch = strings.Split(dnssearch.String(), SplitSep) } return inetconfig }