X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/1b2a4c98249e3a46242f7d10c00a70feeeb2a843..ee53a267ded17bc50eaf4dfebba5ff4a3273753c:/lib/cloud/azure_test.go diff --git a/lib/cloud/azure_test.go b/lib/cloud/azure_test.go index a123bc4bb5..f74688bb18 100644 --- a/lib/cloud/azure_test.go +++ b/lib/cloud/azure_test.go @@ -1,6 +1,28 @@ // Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 +// +// +// How to manually run individual tests against the real cloud +// +// $ go test -v git.curoverse.com/arvados.git/lib/cloud -live-azure-cfg azconfig.yml -check.f=TestListInstances +// +// Example azconfig.yml: +// +// subscription_id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +// key: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +// region: centralus +// cloud_environment: AzurePublicCloud +// secret: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX +// tenant_id: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX +// resource_group: zzzzz +// network: zzzzz +// subnet: zzzzz-subnet-private +// storage_account: example +// blob_container: vhds +// image: "https://example.blob.core.windows.net/system/Microsoft.Compute/Images/images/zzzzz-compute-osDisk.XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX.vhd" +// delete_dangling_resources_after: 20 +// authorized_key: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLQS1ExT2+WjA0d/hntEAyAtgeN1W2ik2QX8c2zO6HjlPHWXL92r07W0WMuDib40Pcevpi1BXeBWXA9ZB5KKMJB+ukaAu22KklnQuUmNvk6ZXnPKSkGxuCYvPQb08WhHf3p1VxiKfP3iauedBDM4x9/bkJohlBBQiFXzNUcQ+a6rKiMzmJN2gbL8ncyUzc+XQ5q4JndTwTGtOlzDiGOc9O4z5Dd76wtAVJneOuuNpwfFRVHThpJM6VThpCZOnl8APaceWXKeuwOuCae3COZMz++xQfxOfZ9Z8aIwo+TlQhsRaNfZ4Vjrop6ej8dtfZtgUFKfbXEOYaHrGrWGotFDTD example@example" package cloud @@ -19,10 +41,12 @@ import ( "git.curoverse.com/arvados.git/sdk/go/config" "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-06-01/compute" "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2018-06-01/network" + "github.com/Azure/azure-sdk-for-go/storage" "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/azure" "github.com/Azure/go-autorest/autorest/to" "github.com/jmcvetta/randutil" + "github.com/sirupsen/logrus" "golang.org/x/crypto/ssh" check "gopkg.in/check.v1" ) @@ -33,6 +57,8 @@ var _ = check.Suite(&AzureInstanceSetSuite{}) type VirtualMachinesClientStub struct{} +var testKey []byte = []byte(`ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDLQS1ExT2+WjA0d/hntEAyAtgeN1W2ik2QX8c2zO6HjlPHWXL92r07W0WMuDib40Pcevpi1BXeBWXA9ZB5KKMJB+ukaAu22KklnQuUmNvk6ZXnPKSkGxuCYvPQb08WhHf3p1VxiKfP3iauedBDM4x9/bkJohlBBQiFXzNUcQ+a6rKiMzmJN2gbL8ncyUzc+XQ5q4JndTwTGtOlzDiGOc9O4z5Dd76wtAVJneOuuNpwfFRVHThpJM6VThpCZOnl8APaceWXKeuwOuCae3COZMz++xQfxOfZ9Z8aIwo+TlQhsRaNfZ4Vjrop6ej8dtfZtgUFKfbXEOYaHrGrWGotFDTD example@example`) + func (*VirtualMachinesClientStub) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, @@ -90,7 +116,7 @@ func GetInstanceSet() (InstanceSet, ImageID, arvados.Cluster, error) { if err != nil { return nil, ImageID(""), cluster, err } - ap, err := NewAzureInstanceSet(cfg, "test123") + ap, err := NewAzureInstanceSet(cfg, "test123", logrus.StandardLogger()) return ap, ImageID(cfg["image"].(string)), cluster, err } else { ap := AzureInstanceSet{ @@ -99,7 +125,11 @@ func GetInstanceSet() (InstanceSet, ImageID, arvados.Cluster, error) { }, dispatcherID: "test123", namePrefix: "compute-test123-", + logger: logrus.StandardLogger(), + deleteNIC: make(chan string), + deleteBlob: make(chan storage.Blob), } + ap.ctx, ap.stopFunc = context.WithCancel(context.Background()) ap.vmClient = &VirtualMachinesClientStub{} ap.netClient = &InterfacesClientStub{} return &ap, ImageID("blob"), cluster, nil @@ -112,20 +142,13 @@ func (*AzureInstanceSetSuite) TestCreate(c *check.C) { c.Fatal("Error making provider", err) } - f, err := os.Open("azconfig_sshkey.pub") - c.Assert(err, check.IsNil) - - keybytes, err := ioutil.ReadAll(f) - c.Assert(err, check.IsNil) - - pk, _, _, _, err := ssh.ParseAuthorizedKey(keybytes) + pk, _, _, _, err := ssh.ParseAuthorizedKey(testKey) c.Assert(err, check.IsNil) nodetoken, err := randutil.String(40, "abcdefghijklmnopqrstuvwxyz0123456789") c.Assert(err, check.IsNil) - inst, err := ap.Create(context.Background(), - cluster.InstanceTypes["tiny"], + inst, err := ap.Create(cluster.InstanceTypes["tiny"], img, map[string]string{ "node-token": nodetoken}, pk) @@ -143,7 +166,7 @@ func (*AzureInstanceSetSuite) TestListInstances(c *check.C) { c.Fatal("Error making provider", err) } - l, err := ap.Instances(context.Background(), nil) + l, err := ap.Instances(nil) c.Assert(err, check.IsNil) @@ -159,7 +182,8 @@ func (*AzureInstanceSetSuite) TestManageNics(c *check.C) { c.Fatal("Error making provider", err) } - ap.(*AzureInstanceSet).ManageNics(context.Background()) + ap.(*AzureInstanceSet).ManageNics() + ap.Stop() } func (*AzureInstanceSetSuite) TestManageBlobs(c *check.C) { @@ -168,7 +192,8 @@ func (*AzureInstanceSetSuite) TestManageBlobs(c *check.C) { c.Fatal("Error making provider", err) } - ap.(*AzureInstanceSet).ManageBlobs(context.Background()) + ap.(*AzureInstanceSet).ManageBlobs() + ap.Stop() } func (*AzureInstanceSetSuite) TestDestroyInstances(c *check.C) { @@ -177,11 +202,11 @@ func (*AzureInstanceSetSuite) TestDestroyInstances(c *check.C) { c.Fatal("Error making provider", err) } - l, err := ap.Instances(context.Background(), nil) + l, err := ap.Instances(nil) c.Assert(err, check.IsNil) for _, i := range l { - c.Check(i.Destroy(context.Background()), check.IsNil) + c.Check(i.Destroy(), check.IsNil) } } @@ -239,16 +264,16 @@ func (*AzureInstanceSetSuite) TestSetTags(c *check.C) { if err != nil { c.Fatal("Error making provider", err) } - l, err := ap.Instances(context.Background(), nil) + l, err := ap.Instances(nil) c.Assert(err, check.IsNil) if len(l) > 0 { - err = l[0].SetTags(context.Background(), map[string]string{"foo": "bar"}) + err = l[0].SetTags(map[string]string{"foo": "bar"}) if err != nil { c.Fatal("Error setting tags", err) } } - l, err = ap.Instances(context.Background(), nil) + l, err = ap.Instances(nil) c.Assert(err, check.IsNil) if len(l) > 0 { @@ -262,7 +287,7 @@ func (*AzureInstanceSetSuite) TestSSH(c *check.C) { if err != nil { c.Fatal("Error making provider", err) } - l, err := ap.Instances(context.Background(), nil) + l, err := ap.Instances(nil) c.Assert(err, check.IsNil) if len(l) > 0 { @@ -316,7 +341,7 @@ func SetupSSHClient(c *check.C, inst Instance) (*ssh.Client, error) { return nil, errors.New("BUG: key was never provided to HostKeyCallback") } - err = inst.VerifyHostKey(context.Background(), receivedKey, client) + err = inst.VerifyHostKey(receivedKey, client) c.Assert(err, check.IsNil) return client, nil