Skip to content

Commit

Permalink
Fix cleanup of spec-files post e2e tests
Browse files Browse the repository at this point in the history
  • Loading branch information
kishen-v committed Jan 11, 2024
1 parent 7d8d9ff commit 7fa403c
Show file tree
Hide file tree
Showing 5 changed files with 145 additions and 18 deletions.
10 changes: 6 additions & 4 deletions cmd/get/events/events.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ package events

import (
"fmt"
"time"

"github.com/spf13/cobra"
"k8s.io/klog/v2"

"github.com/ppc64le-cloud/pvsadm/pkg"
"github.com/ppc64le-cloud/pvsadm/pkg/client"
"github.com/ppc64le-cloud/pvsadm/pkg/utils"
"github.com/spf13/cobra"
"k8s.io/klog/v2"
"time"
)

var (
Expand All @@ -34,7 +36,7 @@ var Cmd = &cobra.Command{
Long: `Get the PowerVS events`,
PreRunE: func(cmd *cobra.Command, args []string) error {
if pkg.Options.InstanceID == "" && pkg.Options.InstanceName == "" {
return fmt.Errorf("--instance-name or --instance-name required")
return fmt.Errorf("--instance-id or --instance-name required")
}
return nil
},
Expand Down
2 changes: 2 additions & 0 deletions cmd/get/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
"github.com/spf13/cobra"

"github.com/ppc64le-cloud/pvsadm/cmd/get/events"
"github.com/ppc64le-cloud/pvsadm/cmd/get/peravailability"
"github.com/ppc64le-cloud/pvsadm/cmd/get/ports"
"github.com/ppc64le-cloud/pvsadm/pkg"
)
Expand All @@ -31,6 +32,7 @@ var Cmd = &cobra.Command{

func init() {
Cmd.AddCommand(events.Cmd)
Cmd.AddCommand(peravailability.Cmd)
Cmd.AddCommand(ports.Cmd)
Cmd.PersistentFlags().StringVarP(&pkg.Options.InstanceID, "instance-id", "i", "", "Instance ID of the PowerVS instance")
Cmd.PersistentFlags().StringVarP(&pkg.Options.InstanceName, "instance-name", "n", "", "Instance name of the PowerVS")
Expand Down
75 changes: 75 additions & 0 deletions cmd/get/peravailability/peravailability.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
// Copyright 2021 IBM Corp
//
// 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
//
// http://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 peravailability

import (
"fmt"
"sort"

"github.com/spf13/cobra"
"k8s.io/klog/v2"

"github.com/ppc64le-cloud/pvsadm/pkg"
"github.com/ppc64le-cloud/pvsadm/pkg/client"
)

const powerEdgeRouter = "power-edge-router"

var Cmd = &cobra.Command{
Use: "per-availability",
Short: "List regions that support PER",
Long: "List regions that support Power Edge Router (PER)",
PreRunE: func(cmd *cobra.Command, args []string) error {
if pkg.Options.InstanceID == "" && pkg.Options.InstanceName == "" {
return fmt.Errorf("--instance-id or --instance-name required")
}
return nil
},
RunE: func(cmd *cobra.Command, args []string) error {
var perEnabledRegions = []string{}
opt := pkg.Options
c, err := client.NewClientWithEnv(opt.APIKey, opt.Environment, opt.Debug)
if err != nil {
klog.Errorf("failed to create a session with IBM cloud: %v", err)
return err
}

pvmclient, err := client.NewPVMClientWithEnv(c, opt.InstanceID, opt.InstanceName, opt.Environment)
if err != nil {
return err
}
ret, err := pvmclient.DatacenterClient.GetAll()
if err != nil {
return err
}
supportsPER := false
for _, datacenter := range ret.Datacenters {
if datacenter.Capabilities[powerEdgeRouter] {
perEnabledRegions = append(perEnabledRegions, *datacenter.Location.Region)
if pvmclient.Zone == *datacenter.Location.Region {
supportsPER = true
}
}
}
if !supportsPER {
klog.Infof("%s, where the current instance is present does not support PER.", pvmclient.Zone)
} else {
klog.Infof("%s, where the current instance is present supports PER.", pvmclient.Zone)
}
sort.Strings(perEnabledRegions)
klog.Infoln("The following zones/datacenters have support for PER:", perEnabledRegions, ".", "More information at https://cloud.ibm.com/docs/overview?topic=overview-locations")
return nil
},
}
44 changes: 44 additions & 0 deletions pkg/client/datacenter/datacenter.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
// Copyright 2021 IBM Corp
//
// 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
//
// http://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 datacenter

import (
"context"

"github.com/IBM-Cloud/power-go-client/clients/instance"
"github.com/IBM-Cloud/power-go-client/ibmpisession"
"github.com/IBM-Cloud/power-go-client/power/models"
)

type Client struct {
client *instance.IBMPIDatacentersClient
instanceID string
}

func NewClient(sess *ibmpisession.IBMPISession, powerinstanceid string) *Client {
c := &Client{
instanceID: powerinstanceid,
}
c.client = instance.NewIBMPIDatacenterClient(context.Background(), sess, powerinstanceid)
return c
}

func (c *Client) Get(id string) (*models.Datacenter, error) {
return c.client.Get(id)
}

func (c *Client) GetAll() (*models.Datacenters, error) {
return c.client.GetAll()
}
32 changes: 18 additions & 14 deletions pkg/client/pvmclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"github.com/IBM/go-sdk-core/v5/core"

"github.com/ppc64le-cloud/pvsadm/pkg"
"github.com/ppc64le-cloud/pvsadm/pkg/client/datacenter"
"github.com/ppc64le-cloud/pvsadm/pkg/client/dhcp"
"github.com/ppc64le-cloud/pvsadm/pkg/client/events"
"github.com/ppc64le-cloud/pvsadm/pkg/client/image"
Expand All @@ -41,15 +42,17 @@ type PVMClient struct {
Region string
Zone string

PISession *ibmpisession.IBMPISession
InstanceClient *instance.Client
ImgClient *image.Client
JobClient *job.Client
VolumeClient *volume.Client
NetworkClient *network.Client
EventsClient *events.Client
KeyClient *key.Client
DHCPClient *dhcp.Client
PISession *ibmpisession.IBMPISession

DatacenterClient *datacenter.Client
DHCPClient *dhcp.Client
EventsClient *events.Client
ImgClient *image.Client
InstanceClient *instance.Client
JobClient *job.Client
KeyClient *key.Client
NetworkClient *network.Client
VolumeClient *volume.Client
}

func NewPVMClient(c *Client, instanceID, instanceName, ep string) (*PVMClient, error) {
Expand Down Expand Up @@ -97,13 +100,14 @@ func NewPVMClient(c *Client, instanceID, instanceName, ep string) (*PVMClient, e
return nil, err
}

pvmclient.DatacenterClient = datacenter.NewClient(pvmclient.PISession, instanceID)
pvmclient.DHCPClient = dhcp.NewClient(pvmclient.PISession, instanceID)
pvmclient.EventsClient = events.NewClient(pvmclient.PISession, instanceID)
pvmclient.ImgClient = image.NewClient(pvmclient.PISession, instanceID)
pvmclient.JobClient = job.NewClient(pvmclient.PISession, instanceID)
pvmclient.VolumeClient = volume.NewClient(pvmclient.PISession, instanceID)
pvmclient.InstanceClient = instance.NewClient(pvmclient.PISession, instanceID)
pvmclient.NetworkClient = network.NewClient(pvmclient.PISession, instanceID)
pvmclient.EventsClient = events.NewClient(pvmclient.PISession, instanceID)
pvmclient.JobClient = job.NewClient(pvmclient.PISession, instanceID)
pvmclient.KeyClient = key.NewClient(pvmclient.PISession, instanceID)
pvmclient.DHCPClient = dhcp.NewClient(pvmclient.PISession, instanceID)
pvmclient.NetworkClient = network.NewClient(pvmclient.PISession, instanceID)
pvmclient.VolumeClient = volume.NewClient(pvmclient.PISession, instanceID)
return pvmclient, nil
}

0 comments on commit 7fa403c

Please sign in to comment.