Skip to content
This repository has been archived by the owner on Jul 25, 2022. It is now read-only.

Commit

Permalink
Merge pull request #206 from jfortin-sap/no-jq-dependency
Browse files Browse the repository at this point in the history
Remove jq tool dependency
  • Loading branch information
DockToFuture committed Jun 8, 2020
2 parents d422d29 + 1d35a43 commit 8507cef
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 33 deletions.
14 changes: 11 additions & 3 deletions pkg/cmd/miscellaneous.go
Original file line number Diff line number Diff line change
Expand Up @@ -255,13 +255,21 @@ func getEmail(githubURL string) string {
if githubURL == "" {
return "null"
}
res, err := ExecCmdReturnOutput("bash", "-c", "curl -ks "+githubURL+"/api/v3/users/"+os.Getenv("USER")+" | jq -r .email")
res, err := ExecCmdReturnOutput("bash", "-c", "curl -ks "+githubURL+"/api/v3/users/"+os.Getenv("USER"))
checkError(err)

if err != nil {
fmt.Println("Cmd was unsuccessful")
os.Exit(2)
}
fmt.Printf("used GitHub email: %s\n", res)
return res

var yamlOut map[string]interface{}
err = yaml.Unmarshal([]byte(res), &yamlOut)
checkError(err)

githubEmail := yamlOut["email"].(string)
fmt.Printf("used GitHub email: %s\n", githubEmail)
return githubEmail
}

func getEmailFromConfig() string {
Expand Down
25 changes: 12 additions & 13 deletions pkg/cmd/ssh_aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
mcmv1alpha1 "github.com/gardener/machine-controller-manager/pkg/client/clientset/versioned"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/clientcmd"
"gopkg.in/yaml.v2"
)

// AwsInstanceAttribute stores all the critical information for creating an instance on AWS.
Expand Down Expand Up @@ -88,8 +89,14 @@ func sshToAWSNode(nodeName, path, user, pathSSKeypair string, sshPublicKey []byt
// fetchAwsAttributes gets all the needed attributes for creating bastion host and its security group with given <nodeName>.
func (a *AwsInstanceAttribute) fetchAwsAttributes(nodeName, path string) {
a.ShootName = getShootClusterName()
terraformVersion, err := ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r .terraform_version")

yamlData, err := ioutil.ReadFile(path)
checkError(err)
var yamlOut map[string]interface{}
err = yaml.Unmarshal([]byte(yamlData), &yamlOut)
checkError(err)

terraformVersion := yamlOut["terraform_version"].(string)
c, err := semver.NewConstraint(">= 0.12.0")
if err != nil {
fmt.Println("Handle version not being parsable.")
Expand All @@ -101,19 +108,11 @@ func (a *AwsInstanceAttribute) fetchAwsAttributes(nodeName, path string) {
os.Exit(2)
}
if c.Check(v) {
subnetID, err := ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r .outputs.subnet_public_utility_z0.value")
checkError(err)
a.SubnetID = subnetID
vpcID, err := ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r .outputs.vpc_id.value")
checkError(err)
a.VpcID = vpcID
a.SubnetID = yamlOut["outputs"].(map[interface{}]interface{})["subnet_public_utility_z0"].(map[interface{}]interface{})["value"].(string)
a.VpcID = yamlOut["outputs"].(map[interface{}]interface{})["vpc_id"].(map[interface{}]interface{})["value"].(string)
} else {
subnetID, err := ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r .modules[].outputs.subnet_public_utility_z0.value")
checkError(err)
a.SubnetID = subnetID
vpcID, err := ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r .modules[].outputs.vpc_id.value")
checkError(err)
a.VpcID = vpcID
a.SubnetID = yamlOut["modules"].(map[interface{}]interface{})["outputs"].(map[interface{}]interface{})["subnet_public_utility_z0"].(map[interface{}]interface{})["value"].(string)
a.VpcID = yamlOut["modules"].(map[interface{}]interface{})["outputs"].(map[interface{}]interface{})["vpc_id"].(map[interface{}]interface{})["value"].(string)
}
a.SecurityGroupName = a.ShootName + "-nodes"
a.getSecurityGroupID()
Expand Down
35 changes: 23 additions & 12 deletions pkg/cmd/ssh_azure.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import (

"github.com/Masterminds/semver"
"github.com/jmoiron/jsonq"
"gopkg.in/yaml.v2"
)

// AzureInstanceAttribute stores all the critical information for creating an instance on Azure.
Expand Down Expand Up @@ -88,8 +89,14 @@ func (a *AzureInstanceAttribute) fetchAzureAttributes(nodeName, path string) {
a.ShootName = getShootClusterName()
a.NamePublicIP = "sshIP"
var err error
terraformVersion, err := ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r .terraform_version")

yamlData, err := ioutil.ReadFile(path)
checkError(err)
var yamlOut map[string]interface{}
err = yaml.Unmarshal([]byte(yamlData), &yamlOut)
checkError(err)

terraformVersion := yamlOut["terraform_version"].(string)
c, err := semver.NewConstraint(">= 0.12.0")
if err != nil {
fmt.Println("Handle version not being parsable.")
Expand All @@ -101,15 +108,11 @@ func (a *AzureInstanceAttribute) fetchAzureAttributes(nodeName, path string) {
os.Exit(2)
}
if c.Check(v) {
a.RescourceGroupName, err = ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r '.outputs.resourceGroupName.value'")
checkError(err)
a.SecurityGroupName, err = ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r '.outputs.securityGroupName.value'")
checkError(err)
a.RescourceGroupName = yamlOut["outputs"].(map[interface{}]interface{})["resourceGroupName"].(map[interface{}]interface{})["value"].(string)
a.SecurityGroupName = yamlOut["outputs"].(map[interface{}]interface{})["securityGroupName"].(map[interface{}]interface{})["value"].(string)
} else {
a.RescourceGroupName, err = ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r '.modules[].outputs.resourceGroupName.value'")
checkError(err)
a.SecurityGroupName, err = ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r '.modules[].outputs.securityGroupName.value'")
checkError(err)
a.RescourceGroupName = yamlOut["modules"].(map[interface{}]interface{})["outputs"].(map[interface{}]interface{})["resourceGroupName"].(map[interface{}]interface{})["value"].(string)
a.SecurityGroupName = yamlOut["modules"].(map[interface{}]interface{})["outputs"].(map[interface{}]interface{})["securityGroupName"].(map[interface{}]interface{})["value"].(string)
}

targetMachineName, err := fetchAzureMachineNameByNodeName(a.ShootName, nodeName)
Expand All @@ -128,12 +131,20 @@ func (a *AzureInstanceAttribute) fetchAzureAttributes(nodeName, path string) {
tmpfile, err := ioutil.TempFile(os.TempDir(), "lbs.json")
checkError(err)
defer os.Remove(tmpfile.Name())

_, err = tmpfile.Write([]byte(skuType))
checkError(err)
skuType, err = ExecCmdReturnOutput("bash", "-c", "cat "+tmpfile.Name()+" | jq .[0].sku.name")
a.SkuType = strings.Trim(skuType, "\"")
fmt.Println(a.SkuType)

jsonData, err := ioutil.ReadFile(tmpfile.Name())
checkError(err)

var jsonOut []interface{}
err = json.Unmarshal([]byte(jsonData), &jsonOut)
checkError(err)

a.SkuType = jsonOut[0].(map[string]interface{})["sku"].(map[string]interface{})["name"].(string)
a.SkuType = strings.Trim(a.SkuType, "\"")
fmt.Println(a.SkuType)
}

// addNsgRule creates a nsg rule to open the ssh port
Expand Down
15 changes: 10 additions & 5 deletions pkg/cmd/ssh_gcp.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
mcmv1alpha1 "github.com/gardener/machine-controller-manager/pkg/client/clientset/versioned"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/tools/clientcmd"
"gopkg.in/yaml.v2"
)

// GCPInstanceAttribute stores all the critical information for creating an instance on GCP.
Expand Down Expand Up @@ -88,8 +89,14 @@ func (g *GCPInstanceAttribute) fetchGCPAttributes(nodeName, path string) {
g.Subnetwork = g.ShootName + "-nodes"
g.Zone, err = fetchZone(g.ShootName, nodeName)
checkError(err)
terraformVersion, err := ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r .terraform_version")

yamlData, err := ioutil.ReadFile(path)
checkError(err)
var yamlOut map[string]interface{}
err = yaml.Unmarshal([]byte(yamlData), &yamlOut)
checkError(err)

terraformVersion := yamlOut["terraform_version"].(string)
c, err := semver.NewConstraint(">= 0.12.0")
if err != nil {
fmt.Println("Handle version not being parsable.")
Expand All @@ -102,11 +109,9 @@ func (g *GCPInstanceAttribute) fetchGCPAttributes(nodeName, path string) {
}
if c.Check(v) {
fmt.Println(path)
g.VpcName, err = ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r '.outputs.vpc_name.value'")
checkError(err)
g.VpcName = yamlOut["outputs"].(map[interface{}]interface{})["vpc_name"].(map[interface{}]interface{})["value"].(string)
} else {
g.VpcName, err = ExecCmdReturnOutput("bash", "-c", "cat "+path+" | jq -r '.modules[].outputs.vpc_name.value'")
checkError(err)
g.VpcName = yamlOut["modules"].(map[interface{}]interface{})["outputs"].(map[interface{}]interface{})["vpc_name"].(map[interface{}]interface{})["value"].(string)
}
g.UserData = getBastionUserData(g.SSHPublicKey)
}
Expand Down

0 comments on commit 8507cef

Please sign in to comment.