github.com/niedbalski/juju@v0.0.0-20190215020005-8ff100488e47/cmd/juju/cloud/show_test.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package cloud_test 5 6 import ( 7 "io/ioutil" 8 "strings" 9 10 "github.com/juju/cmd/cmdtesting" 11 jc "github.com/juju/testing/checkers" 12 gc "gopkg.in/check.v1" 13 14 "github.com/juju/juju/cmd/juju/cloud" 15 "github.com/juju/juju/juju/osenv" 16 _ "github.com/juju/juju/provider/all" 17 "github.com/juju/juju/testing" 18 ) 19 20 type showSuite struct { 21 testing.FakeJujuXDGDataHomeSuite 22 } 23 24 var _ = gc.Suite(&showSuite{}) 25 26 func (s *showSuite) TestShowBadArgs(c *gc.C) { 27 _, err := cmdtesting.RunCommand(c, cloud.NewShowCloudCommand()) 28 c.Assert(err, gc.ErrorMatches, "no cloud specified") 29 } 30 31 func (s *showSuite) TestShow(c *gc.C) { 32 ctx, err := cmdtesting.RunCommand(c, cloud.NewShowCloudCommand(), "aws-china") 33 c.Assert(err, jc.ErrorIsNil) 34 out := cmdtesting.Stdout(ctx) 35 c.Assert(out, gc.Equals, ` 36 defined: public 37 type: ec2 38 description: Amazon China 39 auth-types: [access-key] 40 regions: 41 cn-north-1: 42 endpoint: https://ec2.cn-north-1.amazonaws.com.cn 43 cn-northwest-1: 44 endpoint: https://ec2.cn-northwest-1.amazonaws.com.cn 45 `[1:]) 46 } 47 48 func (s *showSuite) TestShowWithConfig(c *gc.C) { 49 data := ` 50 clouds: 51 homestack: 52 type: openstack 53 description: Openstack Cloud 54 auth-types: [userpass, access-key] 55 endpoint: http://homestack 56 regions: 57 london: 58 endpoint: http://london/1.0 59 config: 60 bootstrap-timeout: 1800 61 use-default-secgroup: true 62 `[1:] 63 err := ioutil.WriteFile(osenv.JujuXDGDataHomePath("clouds.yaml"), []byte(data), 0600) 64 65 ctx, err := cmdtesting.RunCommand(c, cloud.NewShowCloudCommand(), "homestack") 66 c.Assert(err, jc.ErrorIsNil) 67 out := cmdtesting.Stdout(ctx) 68 c.Assert(out, gc.Equals, ` 69 defined: local 70 type: openstack 71 description: Openstack Cloud 72 auth-types: [userpass, access-key] 73 endpoint: http://homestack 74 regions: 75 london: 76 endpoint: http://london/1.0 77 config: 78 bootstrap-timeout: 1800 79 use-default-secgroup: true 80 `[1:]) 81 } 82 83 var openstackProviderConfig = ` 84 The available config options specific to openstack clouds are: 85 external-network: 86 type: string 87 description: The network label or UUID to create floating IP addresses on when multiple 88 external networks exist. 89 network: 90 type: string 91 description: The network label or UUID to bring machines up on when multiple networks 92 exist. 93 policy-target-group: 94 type: string 95 description: The UUID of Policy Target Group to use for Policy Targets created. 96 use-default-secgroup: 97 type: bool 98 description: Whether new machine instances should have the "default" Openstack security 99 group assigned in addition to juju defined security groups. 100 use-floating-ip: 101 type: bool 102 description: Whether a floating IP address is required to give the nodes a public 103 IP address. Some installations assign public IP addresses by default without requiring 104 a floating IP address. 105 use-openstack-gbp: 106 type: bool 107 description: Whether to use Neutrons Group-Based Policy 108 ` 109 110 func (s *showSuite) TestShowWithRegionConfigAndFlags(c *gc.C) { 111 data := ` 112 clouds: 113 homestack: 114 type: openstack 115 description: Openstack Cloud 116 auth-types: [userpass, access-key] 117 endpoint: http://homestack 118 regions: 119 london: 120 endpoint: http://london/1.0 121 config: 122 bootstrap-retry-delay: 1500 123 network: nameme 124 region-config: 125 london: 126 bootstrap-timeout: 1800 127 use-floating-ip: true 128 `[1:] 129 err := ioutil.WriteFile(osenv.JujuXDGDataHomePath("clouds.yaml"), []byte(data), 0600) 130 131 ctx, err := cmdtesting.RunCommand(c, cloud.NewShowCloudCommand(), "homestack", "--include-config") 132 c.Assert(err, jc.ErrorIsNil) 133 out := cmdtesting.Stdout(ctx) 134 c.Assert(out, gc.Equals, strings.Join([]string{`defined: local 135 type: openstack 136 description: Openstack Cloud 137 auth-types: [userpass, access-key] 138 endpoint: http://homestack 139 regions: 140 london: 141 endpoint: http://london/1.0 142 config: 143 bootstrap-retry-delay: 1500 144 network: nameme 145 region-config: 146 london: 147 bootstrap-timeout: 1800 148 use-floating-ip: true 149 `, openstackProviderConfig}, "")) 150 } 151 152 func (s *showSuite) TestShowWithRegionConfigAndFlagNoExtraOut(c *gc.C) { 153 ctx, err := cmdtesting.RunCommand(c, cloud.NewShowCloudCommand(), "joyent", "--include-config") 154 c.Assert(err, jc.ErrorIsNil) 155 out := cmdtesting.Stdout(ctx) 156 c.Assert(out, gc.Equals, ` 157 defined: public 158 type: joyent 159 description: Joyent Cloud 160 auth-types: [userpass] 161 regions: 162 us-east-1: 163 endpoint: https://us-east-1.api.joyentcloud.com 164 us-east-2: 165 endpoint: https://us-east-2.api.joyentcloud.com 166 us-east-3: 167 endpoint: https://us-east-3.api.joyentcloud.com 168 us-west-1: 169 endpoint: https://us-west-1.api.joyentcloud.com 170 us-sw-1: 171 endpoint: https://us-sw-1.api.joyentcloud.com 172 eu-ams-1: 173 endpoint: https://eu-ams-1.api.joyentcloud.com 174 `[1:]) 175 } 176 177 var yamlWithCert = ` 178 clouds: 179 homestack: 180 type: openstack 181 auth-types: [userpass] 182 endpoint: https://homestack:5000/v2.0 183 regions: 184 RegionOne: 185 endpoint: https://homestack:5000/v2.0 186 ca-certificates: 187 - |- 188 -----BEGIN CERTIFICATE----- 189 MIIC0DCCAbigAwIBAgIUeIj3r4ocrSubOmb1yPxmoiRfhO8wDQYJKoZIhvcNAQEL 190 BQAwDzENMAsGA1UEAwwET1NDSTAeFw0xODA3MTUxNjE2NTZaFw0xODEwMjQxNjE2 191 NTZaMA8xDTALBgNVBAMMBE9TQ0kwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK 192 AoIBAQCpCLMLGZpLojudOwrupsbk2ESCQO4/kEOF6L5YHxcUrRxcrxu0DmnwWYcK 193 pjKL9K3U7xSiSL+MtNff7MfBYbV0SOfjHR0/gqwio0JeYONABeeynUZkuXg1CXuG 194 uMHcmPjCAWnLyAnlF4Wwavv6pPdM4l1X4lt1b2ez8G6u4+UPg/zNt473aqOzwMzy 195 B3aToHSHOoDvXQDwtDkR0PimyEtHVz/17AcwSHzMqNGLgLFEx0SPuYJus8WJg1Sn 196 c9kqrvIUBnZzjtbCquCxLRxG2xHdvBxOesbRyJPO0ypqEcTMtrX9rmJce67HG+4h 197 EgLCEpcgfSVyH9PS3wdUAfkr9KE9AgMBAAGjJDAiMA8GA1UdEQQIMAaCBE9TQ0kw 198 DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAFIYyqNayVFxZ1jcz 199 fdvEP2yVB9dq8vhSXU4lbkqlPw5q954bLURQzklqMfpXhhIbmrvq6LcLGaSkgmPp 200 CzlxMkjr8oTRVQUqNIfcJQKtwNOAGh7xZ77GPhBlfHJ8VhTFtDXPM/fj8GLr5Oav 201 gy9+QywhESKkwAn4+AubBRRtEDBX9zwc2hT5uqz1x1tcs16tKAZBIekwmMBJKkNs 202 61I+cRHoXtXFh8/upMC6eMAvv6eVHgqpcEWrVLvoBh7ivcsFuUD1IyuIlN4i6roh 203 xcSAzRCXqVe/BBsHqYyd8044vrIG7P7pYGaQm99nFGylTBfSh5g1LrYV7IJP6KkG 204 6JHZXg== 205 -----END CERTIFICATE----- 206 `[1:] 207 208 var resultWithCert = ` 209 defined: local 210 type: openstack 211 description: Openstack Cloud 212 auth-types: [userpass] 213 endpoint: https://homestack:5000/v2.0 214 regions: 215 RegionOne: {} 216 ca-credentials: 217 - |- 218 -----BEGIN CERTIFICATE----- 219 MIIC0DCCAbigAwIBAgIUeIj3r4ocrSubOmb1yPxmoiRfhO8wDQYJKoZIhvcNAQEL 220 BQAwDzENMAsGA1UEAwwET1NDSTAeFw0xODA3MTUxNjE2NTZaFw0xODEwMjQxNjE2 221 NTZaMA8xDTALBgNVBAMMBE9TQ0kwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK 222 AoIBAQCpCLMLGZpLojudOwrupsbk2ESCQO4/kEOF6L5YHxcUrRxcrxu0DmnwWYcK 223 pjKL9K3U7xSiSL+MtNff7MfBYbV0SOfjHR0/gqwio0JeYONABeeynUZkuXg1CXuG 224 uMHcmPjCAWnLyAnlF4Wwavv6pPdM4l1X4lt1b2ez8G6u4+UPg/zNt473aqOzwMzy 225 B3aToHSHOoDvXQDwtDkR0PimyEtHVz/17AcwSHzMqNGLgLFEx0SPuYJus8WJg1Sn 226 c9kqrvIUBnZzjtbCquCxLRxG2xHdvBxOesbRyJPO0ypqEcTMtrX9rmJce67HG+4h 227 EgLCEpcgfSVyH9PS3wdUAfkr9KE9AgMBAAGjJDAiMA8GA1UdEQQIMAaCBE9TQ0kw 228 DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAFIYyqNayVFxZ1jcz 229 fdvEP2yVB9dq8vhSXU4lbkqlPw5q954bLURQzklqMfpXhhIbmrvq6LcLGaSkgmPp 230 CzlxMkjr8oTRVQUqNIfcJQKtwNOAGh7xZ77GPhBlfHJ8VhTFtDXPM/fj8GLr5Oav 231 gy9+QywhESKkwAn4+AubBRRtEDBX9zwc2hT5uqz1x1tcs16tKAZBIekwmMBJKkNs 232 61I+cRHoXtXFh8/upMC6eMAvv6eVHgqpcEWrVLvoBh7ivcsFuUD1IyuIlN4i6roh 233 xcSAzRCXqVe/BBsHqYyd8044vrIG7P7pYGaQm99nFGylTBfSh5g1LrYV7IJP6KkG 234 6JHZXg== 235 -----END CERTIFICATE----- 236 `[1:] 237 238 func (s *showSuite) TestShowWithCACertificate(c *gc.C) { 239 err := ioutil.WriteFile(osenv.JujuXDGDataHomePath("clouds.yaml"), []byte(yamlWithCert), 0600) 240 241 ctx, err := cmdtesting.RunCommand(c, cloud.NewShowCloudCommand(), "homestack") 242 c.Assert(err, jc.ErrorIsNil) 243 out := cmdtesting.Stdout(ctx) 244 c.Assert(out, gc.Equals, resultWithCert) 245 }