diff --git a/go.sum b/go.sum index 1d52d9a8fc..f8eb60c6b4 100644 --- a/go.sum +++ b/go.sum @@ -25,7 +25,6 @@ github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6L github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= github.com/Azure/go-ntlmssp v0.0.0-20180810175552-4a21cbd618b4/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/Bowery/prompt v0.0.0-20190916142128-fa8279994f75/go.mod h1:4/6eNcqZ09BZ9wLK3tZOjBA1nDj+B0728nlX5YRlSmQ= -github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ChrisTrenkamp/goxpath v0.0.0-20170922090931-c385f95c6022/go.mod h1:nuWgzSkT5PnyOd+272uUmV0dnAnAn42Mk7PiQC5VzN4= @@ -34,7 +33,6 @@ github.com/IBM-Cloud/bluemix-go v0.0.0-20201014114250-3679b72c03ee/go.mod h1:gPJ github.com/IBM-Cloud/bluemix-go v0.0.0-20201019071904-51caa09553fb h1:ke+JASYimCuuAsmMWw2jmCRakGrKRQqVgIG30eiPI+Y= github.com/IBM-Cloud/bluemix-go v0.0.0-20201019071904-51caa09553fb/go.mod h1:gPJbH1etcDj7qS/hBRiLuYW9CY0bRcostSKusa51xR0= github.com/IBM-Cloud/ibm-cloud-cli-sdk v0.6.7/go.mod h1:RiUvKuHKTBmBApDMUQzBL14pQUGKcx/IioKQPIcRQjs= -github.com/IBM-Cloud/power-go-client v1.0.48 h1:iIMKJn+Pi5XwDV5mav4Pdl5QbAGaaoKFHmNoLuCLYHU= github.com/IBM-Cloud/power-go-client v1.0.48/go.mod h1:+mOxjyLeLIloR4EMHTpiDbN+FilZpiVHTwu5eqi+cbI= github.com/IBM/apigateway-go-sdk v0.0.0-20200414212859-416e5948678a h1:lX3vP+9Y5gTP0w6l+4oL0mvNfgXZYJsMdlsiUG43GBw= github.com/IBM/apigateway-go-sdk v0.0.0-20200414212859-416e5948678a/go.mod h1:sNVpGpUv3jvA2dQbRPFjVrRFNdmnQrf2QTtKa/c2XrI= @@ -60,8 +58,6 @@ github.com/IBM/ibm-cos-sdk-go-config v1.0.1 h1:Nld42UysaZ16hPl4XMnkCgbuwW+s4OVct github.com/IBM/ibm-cos-sdk-go-config v1.0.1/go.mod h1:BAbdv1Zf8mRP6rj40Cem7KgBp+UQn9Fe2EWxIBrp5sM= github.com/IBM/keyprotect-go-client v0.3.5-0.20200325142150-b63163832e26 h1:ktAExgvUrXaXvHjsnUtQqRhoqi5fyQjLXQIlD3YH60o= github.com/IBM/keyprotect-go-client v0.3.5-0.20200325142150-b63163832e26/go.mod h1:5TwDM/4FRJq1ZOlwQL1xFahLWQ3TveR88VmL1u3njyI= -github.com/IBM/networking-go-sdk v0.8.0 h1:70M3kAYi93SiyjttYGUAXXfiz39F8b2cvaJVih/2MAc= -github.com/IBM/networking-go-sdk v0.8.0/go.mod h1:WB/PjK7LA6VuIOsGjv1gm6WS/Ki6nF8KmycwMU0bgIs= github.com/IBM/networking-go-sdk v0.10.0 h1:ery9O0Xg7oreFYTxn6x+DEEQT1rkPX2dKyJtJk7KQ3I= github.com/IBM/networking-go-sdk v0.10.0/go.mod h1:WB/PjK7LA6VuIOsGjv1gm6WS/Ki6nF8KmycwMU0bgIs= github.com/IBM/vpc-go-sdk v0.1.1 h1:rzYDbHm6IAxLnL9TNk0y9syCSBbDQ/t1kaI7W51faYY= @@ -69,21 +65,15 @@ github.com/IBM/vpc-go-sdk v0.1.1/go.mod h1:P0B/btm8+wm2gkTg1FgN2uwtjztEIJc7Kqq7H github.com/IBM/vpc-go-sdk v0.2.0 h1:LkKIeC1cGb4c21lHs1pfUHyV+06wFyzLZyF4fNrPTC4= github.com/IBM/vpc-go-sdk v0.2.0/go.mod h1:QlPyV8sf1K4Si7CgEyAbmDonabnhJ7tC4owcjrTz3Ys= github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/QcloudApi/qcloud_sign_golang v0.0.0-20141224014652-e4130a326409/go.mod h1:1pk82RBxDY/JZnPQrtqHlUFfCctgdorsd9M06fMynOM= -github.com/ScaleFT/sshkeys v0.0.0-20200327173127-6142f742bca5 h1:VauE2GcJNZFun2Och6tIT2zJZK1v6jxALQDA9BIji/E= github.com/ScaleFT/sshkeys v0.0.0-20200327173127-6142f742bca5/go.mod h1:gxOHeajFfvGQh/fxlC8oOKBe23xnnJTif00IFFbiT+o= -github.com/Shopify/sarama v1.26.4 h1:+17TxUq/PJEAfZAll0T7XJjSgQWCpaQSoki/x5yN8o8= github.com/Shopify/sarama v1.26.4/go.mod h1:NbSGBSSndYaIhRcBtY9V0U7AyH+x71bG668AuWys/yU= -github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/Unknwon/com v0.0.0-20151008135407-28b053d5a292/go.mod h1:KYCjqMOeHpNuTOiFQU6WEcTG7poCJrUs0YgyHNtn1no= github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/agl/ed25519 v0.0.0-20150830182803-278e1ec8e8a6/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0= @@ -97,34 +87,25 @@ github.com/andreyvit/diff v0.0.0-20170406064948-c7f18ee00883/go.mod h1:rCTlJbsFo github.com/antchfx/xpath v0.0.0-20190129040759-c8489ed3251e/go.mod h1:Yee4kTMuNiPYJ7nSNorELQMr1J33uOpXDMByNYhvtNk= github.com/antchfx/xquery v0.0.0-20180515051857-ad5b8c7a47b0/go.mod h1:LzD22aAzDP8/dyiCKFp31He4m2GPjl0AFyzDtZzUu9M= github.com/apache/incubator-openwhisk-client-go v0.0.0-20171128215515-ad814bc98c32/go.mod h1:tkMtcI5DHxdNk03R1YVLF66VhkF8uJkZs7pgHE9Mgqk= -github.com/apache/openwhisk-client-go v0.0.0-20200201143223-a804fb82d105 h1:k1wP1gZMrNJeXTz6a+3010NKC/ZvSffk07BzrLmYrmc= github.com/apache/openwhisk-client-go v0.0.0-20200201143223-a804fb82d105/go.mod h1:jLLKYP7+1+LFlIJW1n9U1gqeveLM1HIwa4ZHNOFxjPw= -github.com/apparentlymart/go-cidr v1.0.1 h1:NmIwLZ/KdsjIUlhf+/Np40atNXm/+lZ5txfTJ/SpF+U= github.com/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= -github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I= github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM= -github.com/apparentlymart/go-textseg v1.0.0 h1:rRmlIsPEEhUTIKQb7T++Nz/A5Q6C9IuX2wFoYVvnCs0= github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= github.com/apparentlymart/go-versions v0.0.2-0.20180815153302-64b99f7cb171/go.mod h1:JXY95WvQrPJQtudvNARshgWajS7jNNlM90altXIPNyI= github.com/armon/circbuf v0.0.0-20190214190532-5111143e8da2/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= github.com/aws/aws-sdk-go v1.25.3/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.26.2/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.30.12 h1:KrjyosZvkpJjcwMk0RNxMZewQ47v7+ZkbQDXjWsJMs8= github.com/aws/aws-sdk-go v1.30.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= -github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bmatcuk/doublestar v1.1.5/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= @@ -135,7 +116,6 @@ github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWR github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21 h1:tuijfIjZyjZaHq9xDUh0tNitwXshJpbLkqMOJv4H3do= github.com/cloudfoundry/jibber_jabber v0.0.0-20151120183258-bcc4c8345a21/go.mod h1:po7NpZ/QiTKzBKyrsEAxwnTamCoh8uDk/egRpQ7siIc= github.com/coreos/bbolt v1.3.0/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= @@ -144,12 +124,9 @@ github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a h1:saTgr5tMLFnmy/yg3qDTft4rE5DY2uJ/cCxCe3q0XTU= github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a/go.mod h1:Bw9BbhOJVNR+t0jCqx2GC6zv0TGBsShs56Y3gfSCvl0= github.com/dchest/safefile v0.0.0-20151022103144-855e8d98f185/go.mod h1:cFRxtTwTOJkz2x3rQUNCYKWC93yP1VKjR8NUhqFxZNU= -github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dnaeon/go-vcr v0.0.0-20180920040454-5637cf3d8a31/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= @@ -157,26 +134,19 @@ github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDD github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/dylanmei/iso8601 v0.1.0/go.mod h1:w9KhXSgIyROl1DefbMYIE7UVSIvELTbMrCfx+QkYnoQ= github.com/dylanmei/winrmtest v0.0.0-20190225150635-99b7fe2fddf1/go.mod h1:lcy9/2gH1jn/VCLouHA6tOEwLoNVd4GW6zhuKLmHC2Y= -github.com/eapache/go-resiliency v1.2.0 h1:v7g92e/KSN71Rq7vSThKaWIq68fL4YHvWyiUKorFR1Q= github.com/eapache/go-resiliency v1.2.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/frankban/quicktest v1.7.2 h1:2QxQoC1TS09S7fhCPsrvqYdvP1H5M1P1ih5ABm3BTYk= github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= @@ -187,40 +157,33 @@ github.com/go-openapi/analysis v0.17.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpR github.com/go-openapi/analysis v0.18.0/go.mod h1:IowGgpVeD0vNm45So8nr+IcQ3pxVtpRoBWb8PVZO0ik= github.com/go-openapi/analysis v0.19.2/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= github.com/go-openapi/analysis v0.19.4/go.mod h1:3P1osvZa9jKjb8ed2TPng3f0i/UY9snX6gxi44djMjk= -github.com/go-openapi/analysis v0.19.5 h1:8b2ZgKfKIUTVQpTb77MoRDIMEIwvDVw40o3aOXdfYzI= github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= -github.com/go-openapi/errors v0.19.3 h1:7MGZI1ibQDLasvAz8HuhvYk9eNJbJkCOXWsSjjMS+Zc= github.com/go-openapi/errors v0.19.3/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3 h1:5cxNfTy0UVC3X8JL5ymxzyoUZmo8iZb+jeTWn7tUa8o= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= github.com/go-openapi/loads v0.19.3/go.mod h1:YVfqhUCdahYwR3f3iiwQLhicVRvLlU/WO5WPaZvcvSI= -github.com/go-openapi/loads v0.19.4 h1:5I4CCSqoWzT+82bBkNIvmLc0UOsoKKQ4Fz+3VxOB7SY= github.com/go-openapi/loads v0.19.4/go.mod h1:zZVHonKd8DXyxyw4yfnVjPzBjIQcLt0CCsn0N0ZrQsk= github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= github.com/go-openapi/runtime v0.19.11/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= -github.com/go-openapi/runtime v0.19.15 h1:2GIefxs9Rx1vCDNghRtypRq+ig8KSLrjHbAYI/gCLCM= github.com/go-openapi/runtime v0.19.15/go.mod h1:dhGWCTKRXlAfGnQG0ONViOZpjfg0m2gUt9nTQPQZuoo= github.com/go-openapi/spec v0.17.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.18.0/go.mod h1:XkF/MOi14NmjsfZ8VtAKf8pIlbZzyoTvZsdfssdxcBI= github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcsZsD5zxMY= -github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= @@ -228,29 +191,23 @@ github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+Z github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= github.com/go-openapi/strfmt v0.19.4/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= -github.com/go-openapi/strfmt v0.19.5 h1:0utjKrw+BAh8s57XE9Xz8DUBsVvPmRUB6styvl9wWIM= github.com/go-openapi/strfmt v0.19.5/go.mod h1:eftuHTlB/dI8Uq8JJOyRlieZf+WkkxUuk0dgdHXr2Qk= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.7/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= -github.com/go-openapi/swag v0.19.9 h1:1IxuqvBUU3S2Bi4YC7tlP9SJF1gVpCvqN0T2Qof4azE= github.com/go-openapi/swag v0.19.9/go.mod h1:ao+8BpOPyKdpQz3AOJfbeEVpLmWAvlT1IfTe5McPyhY= github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= github.com/go-openapi/validate v0.19.3/go.mod h1:90Vh6jjkTn+OT1Eefm0ZixWNFjhtOH7vS9k0lo6zwJo= github.com/go-openapi/validate v0.19.6/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= -github.com/go-openapi/validate v0.19.8 h1:YFzsdWIDfVuLvIOF+ZmKjVg1MbPJ1QgY9PihMwei1ys= github.com/go-openapi/validate v0.19.8/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4= github.com/go-playground/locales v0.12.1/go.mod h1:IUMDtCfWo/w/mtMfIE/IG2K+Ey3ygWanZIBtBW0W2TM= -github.com/go-playground/locales v0.13.0 h1:HyWk6mgj5qFqCT5fjGBuRArbVDfE4hi8+e8ceBS/t7Q= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= -github.com/go-playground/universal-translator v0.17.0 h1:icxd5fm+REJzpZx7ZfpaD876Lmtgy7VtROAbHHXk8no= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.1/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= @@ -258,12 +215,10 @@ github.com/go-test/deep v1.0.4 h1:u2CU3YKy9I2pmu9pX0eq50wCgjfGIt539SqR7FbHiho= github.com/go-test/deep v1.0.4/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20180513044358-24b0969c4cb7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -275,30 +230,23 @@ github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:x github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gophercloud/gophercloud v0.0.0-20190208042652-bc37892e1968/go.mod h1:3WdhXV3rUYy9p6AUW8d94kr+HS62Y4VL9mBnFxsD8q4= github.com/gophercloud/utils v0.0.0-20190128072930-fbb6ab446f01/go.mod h1:wjDF8z83zTeg5eMLml5EBSlAhbF7G8DobyI1YsMuyzw= @@ -307,86 +255,62 @@ github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoA github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hashicorp/aws-sdk-go-base v0.4.0/go.mod h1:eRhlz3c4nhqxFZJAahJEFL7gh6Jyj5rQmQc7F9eHFyQ= github.com/hashicorp/consul v0.0.0-20171026175957-610f3c86a089/go.mod h1:mFrjN1mfidgJfYP1xrJCF+AfRhr6Eaqhb2+sfyn/OOI= -github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-azure-helpers v0.10.0/go.mod h1:YuAtHxm2v74s+IjQwUG88dHBJPd5jL+cXr5BGVzSKhE= github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= -github.com/hashicorp/go-getter v1.4.2-0.20200106182914-9813cbd4eb02 h1:l1KB3bHVdvegcIf5upQ5mjcHjs2qsWnKh4Yr9xgIuu8= github.com/hashicorp/go-getter v1.4.2-0.20200106182914-9813cbd4eb02/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY= github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= github.com/hashicorp/go-hclog v0.0.0-20181001195459-61d530d6c27f/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.9.2 h1:CG6TE5H9/JXsFWJCfoIVpKFIkFe6ysEuHirp4DxCsHI= github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= github.com/hashicorp/go-immutable-radix v0.0.0-20180129170900-7f3cd4390caa/go.mod h1:6ij3Z20p+OhOkCSrA0gImAWoHYQRGbnlcuk6XYTiaRw= github.com/hashicorp/go-msgpack v0.5.4/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= -github.com/hashicorp/go-plugin v1.3.0 h1:4d/wJojzvHV1I4i/rrjVaeuyxWrLzDE1mDCyDy8fXS8= github.com/hashicorp/go-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0= github.com/hashicorp/go-retryablehttp v0.5.2/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.6.2 h1:bHM2aVXwBtBJWxHtkSrWuI4umABCUczs52eiUS9nSiw= github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-slug v0.4.1/go.mod h1:I5tq5Lv0E2xcNXNkmx7BSfzi1PsJ2cNjs3cC3LwyhK8= github.com/hashicorp/go-sockaddr v0.0.0-20180320115054-6d291a969b86/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-tfe v0.8.1/go.mod h1:XAV72S4O1iP8BDaqiaPLmL2B4EE6almocnOn8E8stHc= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f h1:UdxlrJz4JOnY8W+DbLISwf2B8WXEolNRA8BGCwI9jws= github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w= github.com/hashicorp/hcl/v2 v2.0.0/go.mod h1:oVVDG71tEinNGYCxinCYadcmKU9bglqW9pV3txagJ90= -github.com/hashicorp/hcl/v2 v2.3.0 h1:iRly8YaMwTBAKhn1Ybk7VSdzbnopghktCD031P8ggUE= github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8= github.com/hashicorp/hil v0.0.0-20190212112733-ab17b08d6590/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE= github.com/hashicorp/hil v0.0.0-20200423225030-a18a1cd20038/go.mod h1:n2TSygSNwsLJ76m8qFXTSc7beTb+auJxYdqrnoqwZWE= -github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/memberlist v0.1.0/go.mod h1:ncdBp14cuox2iFOq3kDiquKU6fqsTBc3W6JvZwjxxsE= github.com/hashicorp/serf v0.0.0-20160124182025-e4ec8cc423bb/go.mod h1:h/Ru6tmZazX7WO/GDmwdpS975F019L4t5ng5IgwbNrE= github.com/hashicorp/terraform v0.12.28/go.mod h1:CBxNAiTW0pLap44/3GU4j7cYE2bMhkKZNlHPcr4P55U= github.com/hashicorp/terraform-config-inspect v0.0.0-20191115094559-17f92b0546e8/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A= -github.com/hashicorp/terraform-config-inspect v0.0.0-20191212124732-c6ae6269b9d7 h1:Pc5TCv9mbxFN6UVX0LH6CpQrdTM5YjbVI2w15237Pjk= github.com/hashicorp/terraform-config-inspect v0.0.0-20191212124732-c6ae6269b9d7/go.mod h1:p+ivJws3dpqbp1iP84+npOyAmTTOLMgCzrXd3GSdn/A= -github.com/hashicorp/terraform-plugin-sdk v1.6.0 h1:Um5hsAL7kKsfTHtan8lybY/d03F2bHu4fjRB1H6Ag4U= github.com/hashicorp/terraform-plugin-sdk v1.6.0/go.mod h1:H5QLx/uhwfxBZ59Bc5SqT19M4i+fYt7LZjHTpbLZiAg= -github.com/hashicorp/terraform-plugin-sdk v1.16.0 h1:NrkXMRjHErUPPTHQkZ6JIn6bByiJzGnlJzH1rVdNEuE= -github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596 h1:hjyO2JsNZUKT1ym+FAdlBEkGPevazYsmVgIMw7dVELg= github.com/hashicorp/terraform-svchost v0.0.0-20191011084731-65d371908596/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= github.com/hashicorp/vault v0.10.4/go.mod h1:KfSyffbKxoVyspOdlaGVjIuwLobi07qD1bAbosPMpP0= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hokaccha/go-prettyjson v0.0.0-20170213120834-e6b9231a2b1c h1:vlXZsaTgJ55QZrAkOrpq0tsJmuuM4ky5OMZOvXnhvqE= github.com/hokaccha/go-prettyjson v0.0.0-20170213120834-e6b9231a2b1c/go.mod h1:pFlLw2CfqZiIBOx6BuCeRLCrfxBJipTY0nIOF/VbGcI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/jcmturner/gofork v1.0.0 h1:J7uCkflzTEhUZ64xqKnkDxq3kzc96ajM1Gli5ktUem8= github.com/jcmturner/gofork v1.0.0/go.mod h1:MK8+TM0La+2rjBD4jE12Kj1pCCxK7d2LK/UM3ncEo0o= -github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.3.0 h1:OS12ieG61fsCg5+qLJ+SsW9NicxNkg3b25OyT2yCeUc= github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= @@ -399,21 +323,16 @@ github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/kardianos/govendor v1.0.9/go.mod h1:yvmR6q9ZZ7nSF5Wvh40v0wfP+3TwwL8zYQp+itoZSVM= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M= -github.com/klauspost/compress v1.9.8 h1:VMAMUUOh+gaxKTMk+zqbjsSjsIcUcL/LF4o63i82QyA= github.com/klauspost/compress v1.9.8/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leodido/go-urn v1.2.0 h1:hpXL4XnriNwQ/ABnpepYM/1vCLWNDfUNts8dX3xTG6Y= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/likexian/gokit v0.0.0-20190309162924-0a377eecf7aa/go.mod h1:QdfYv6y6qPA9pbBA2qXtoT8BMKha6UyNbxWGWl/9Jfk= @@ -428,52 +347,40 @@ github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0 h1:aizVhC/NAAcKWb+5QsU1iNOZb4Yws5UO2I+aIprQITM= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/masterzen/simplexml v0.0.0-20160608183007-4572e39b1ab9/go.mod h1:kCEbxUJlNDEBNbdQMkPSp6yaKcRXVI6f4ddk8Riv4bc= github.com/masterzen/winrm v0.0.0-20190223112901-5e5c9a7fe54b/go.mod h1:wr1VqkwW0AB5JS0QLy5GpVMS9E3VtRoSYXUYyVk46KY= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= -github.com/mattn/go-colorable v0.1.4 h1:snbPLB8fVfU9iwbbo30TPtbLRzwWu6aJS6Xh4eaaviA= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.11 h1:FxPOTFNqGkuDUGi3H/qkUbQO4ZiBa2brKq5r0l8TGeM= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.8/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-shellwords v1.0.4/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/miekg/dns v1.0.8/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/minsikl/netscaler-nitro-go v0.0.0-20170827154432-5b14ce3643e3 h1:PHPBYVeLuR7/2XSOfVwDpW+70KNuxMWygsyOZSKK15Y= github.com/minsikl/netscaler-nitro-go v0.0.0-20170827154432-5b14ce3643e3/go.mod h1:jh28TRFZwBumf7OjMQbRb8TNtDuuX7QNAGRjFEt+h6I= -github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ= github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw= -github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-linereader v0.0.0-20190213213312-1b945b3263eb/go.mod h1:OaY7UOoTkkrX3wRwjpYRKafIkkyeD0UtweSHAWWiqQM= github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/gox v1.0.1/go.mod h1:ED6BioOGXMswlXa2zxfh/xdd5QhwYliBFn9V18Ap4z4= github.com/mitchellh/hashstructure v1.0.0/go.mod h1:QjSHrPWS+BGUVBYkbTZWEnOh3G1DutKwClXU/ABz6AQ= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/panicwrap v1.0.0/go.mod h1:pKvZHwWrZowLUzftuFq7coarnxbBXU4aQh3N0BJOeeA= github.com/mitchellh/prefixedio v0.0.0-20190213213902-5733675afd51/go.mod h1:kB1naBgV9ORnkiTVeyJOI1DavaJkG4oNIq0Af6ZVKUo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mitchellh/reflectwalk v1.0.1 h1:FVzMWA5RllMAKIdUSC8mdWo3XtwoecrH79BY70sEEpE= github.com/mitchellh/reflectwalk v1.0.1/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= @@ -481,12 +388,10 @@ github.com/mozillazg/go-httpheader v0.2.1/go.mod h1:jJ8xECTlalr6ValeXYdOF8fFUISe github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32 h1:W6apQkHrMkS0Muv8G/TipAy/FJl/rCYT0+EuS8+Z0z4= github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms= -github.com/nicksnyder/go-i18n v1.10.0 h1:5AzlPKvXBH4qBzmZ09Ua9Gipyruv6uApMcrNZdo96+Q= github.com/nicksnyder/go-i18n v1.10.0/go.mod h1:HrK7VCrbOvQoUAQ7Vpy7i87N7JZZZ7R2xBGjv0j365Q= github.com/nu7hatch/gouuid v0.0.0-20131221200532-179d4d0c4d8d/go.mod h1:YUTz3bUH2ZwIWBy3CJBeOBEugqcmXREj14T+iG/4k4U= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -502,19 +407,15 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/packer-community/winrmcp v0.0.0-20180102160824-81144009af58/go.mod h1:f6Izs6JvFTdnRbziASagjZ2vmf55NSIkC/weStxCHqk= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.6.0 h1:aetoXYr0Tv7xRU/V4B4IZJ2QcbtMUFoNb3ORp7TzIK4= github.com/pelletier/go-toml v1.6.0/go.mod h1:5N711Q9dKgbdkxHL+MEfF31hpT7l0S0s/t2kKREewys= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.4.1+incompatible h1:mFe7ttWaflA46Mhqh+jUfjp2qTbPYxLB2/OyBppH9dg= github.com/pierrec/lz4 v2.4.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.1 h1:LrvDIY//XNo65Lq84G/akBuMGlawHvGBABv8f/ZN6DI= github.com/posener/complete v1.2.1/go.mod h1:6gapUrK/U1TAN7ciCoNRIdVC5sbdBTUh1DKN0g6uH7E= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -524,17 +425,13 @@ github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1: github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563 h1:dY6ETXrvDG7Sa4vE8ZQG4yqWg6UnOcbqTAahkV813vQ= github.com/rcrowley/go-metrics v0.0.0-20190826022208-cac0b30c2563/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/renier/xmlrpc v0.0.0-20170708154548-ce4a1a486c03 h1:Wdi9nwnhFNAlseAOekn6B5G/+GMtks9UKbvRU/CMM/o= github.com/renier/xmlrpc v0.0.0-20170708154548-ce4a1a486c03/go.mod h1:gRAiPF5C5Nd0eyyRdqIu9qTiFSoZzpTq727b5B8fkkU= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sergi/go-diff v1.0.0 h1:Kpca3qRNrduNnOQeazBd0ysaKrUJiIuISHxogkT9RPQ= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -542,7 +439,6 @@ github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1 github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= github.com/spf13/pflag v1.0.2/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= @@ -559,16 +455,13 @@ github.com/svanharmelen/jsonapi v0.0.0-20180618144545-0c0828c3f16d/go.mod h1:BST github.com/tencentcloud/tencentcloud-sdk-go v3.0.82+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4= github.com/tencentyun/cos-go-sdk-v5 v0.0.0-20190808065407-f07404cefc8c/go.mod h1:wk2XFUg6egk4tSDNZtXeKfe2G6690UVyt163PuUxBZk= github.com/terraform-providers/terraform-provider-openstack v1.15.0/go.mod h1:2aQ6n/BtChAl1y2S60vebhyJyZXBsuAI5G4+lHrT1Ew= -github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4= github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= github.com/tmc/grpc-websocket-proxy v0.0.0-20171017195756-830351dc03c6/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/ugorji/go v0.0.0-20180813092308-00b869d2f4a5/go.mod h1:hnLbHMwcvSihnDhEfx2/BzKp2xb0Y+ErdfYcrs9tkJQ= -github.com/ulikunitz/xz v0.5.5 h1:pFrO0lVpTBXLpYw+pnLj6TbvHuyjXMfjGeCwSqCVwok= github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8= github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= -github.com/vmihailenco/msgpack v4.0.1+incompatible h1:RMF1enSPeKTlXrXdOcqjFUElywVZjjC6pqse21bKbEU= github.com/vmihailenco/msgpack v4.0.1+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4= github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= @@ -579,9 +472,7 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/zclconf/go-cty v1.0.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= github.com/zclconf/go-cty v1.2.0/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty v1.2.1 h1:vGMsygfmeCl4Xb6OA5U5XVAaQZ69FvoG7X2jUtQujb8= github.com/zclconf/go-cty v1.2.1/go.mod h1:hOPWgoHbaTUnI5k4D2ld+GRpFJSCe6bCM7m1q/N4PQ8= -github.com/zclconf/go-cty-yaml v1.0.1 h1:up11wlgAaDvlAGENcFDnZgkn0qUJurso7k6EpURKNF8= github.com/zclconf/go-cty-yaml v1.0.1/go.mod h1:IP3Ylp0wQpYm50IHK8OZWKMu6sPJIUgKa8XhiVHura0= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= @@ -608,7 +499,6 @@ golang.org/x/crypto v0.0.0-20200204104054-c9f3fb736b72/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -647,7 +537,6 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45 h1:SVwTIAaPC2U/AvvLNZ2a7OVsmBpC8L5BlwK1whH3hm0= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -681,11 +570,9 @@ golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200219091948-cb0a6d8edb6c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299 h1:DYfZAGf2WMFjMxbgTjaC+2HC7NkNAQs+6Q8b9WEB/F4= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -747,23 +634,19 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/go-playground/assert.v1 v1.2.1 h1:xoYuJVE7KT85PYWrN730RguIQO0ePzVRfFMXadIrXTM= gopkg.in/go-playground/assert.v1 v1.2.1/go.mod h1:9RXL0bg/zibRAgZUYszZSwO/z8Y/a8bDuhia5mkpMnE= gopkg.in/go-playground/validator.v9 v9.30.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= gopkg.in/go-playground/validator.v9 v9.31.0 h1:bmXmP2RSNtFES+bn4uYuHT7iJFJv7Vj+an+ZQdDaD1M= gopkg.in/go-playground/validator.v9 v9.31.0/go.mod h1:+c9/zcJMFNgbLvly1L1V+PpxWdVbfP1avr/N00E2vyQ= -gopkg.in/h2non/gock.v1 v1.0.15 h1:SzLqcIlb/fDfg7UvukMpNcWsu7sI5tWwL+KCATZqks0= gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jcmturner/aescts.v1 v1.0.1 h1:cVVZBK2b1zY26haWB4vbBiZrfFQnfbTVrE3xZq6hrEw= gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= gopkg.in/jcmturner/dnsutils.v1 v1.0.1 h1:cIuC1OLRGZrld+16ZJvvZxVJeKPsvd5eUIvxfoN5hSM= gopkg.in/jcmturner/dnsutils.v1 v1.0.1/go.mod h1:m3v+5svpVOhtFAP/wSz+yzh4Mc0Fg7eRhxkJMWSIz9Q= -gopkg.in/jcmturner/goidentity.v3 v3.0.0 h1:1duIyWiTaYvVx3YX2CYtpJbUFd7/UuPYCfgXtQ3VTbI= gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= gopkg.in/jcmturner/gokrb5.v7 v7.5.0 h1:a9tsXlIDD9SKxotJMK3niV7rPZAJeX2aD/0yg3qlIrg= gopkg.in/jcmturner/gokrb5.v7 v7.5.0/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= diff --git a/ibm/config.go b/ibm/config.go index 716e1cb48d..79171a5f8f 100644 --- a/ibm/config.go +++ b/ibm/config.go @@ -22,6 +22,7 @@ import ( cisedgefunctionv1 "github.com/IBM/networking-go-sdk/edgefunctionsapiv1" cisglbhealthcheckv1 "github.com/IBM/networking-go-sdk/globalloadbalancermonitorv1" cisglbpoolv0 "github.com/IBM/networking-go-sdk/globalloadbalancerpoolsv0" + cisglbv1 "github.com/IBM/networking-go-sdk/globalloadbalancerv1" cissslv1 "github.com/IBM/networking-go-sdk/sslcertificateapiv1" tg "github.com/IBM/networking-go-sdk/transitgatewayapisv1" cisratelimitv1 "github.com/IBM/networking-go-sdk/zoneratelimitsv1" @@ -191,6 +192,7 @@ type ClientSession interface { IAMNamespaceAPI() (*ns.IbmCloudFunctionsNamespaceAPIV1, error) CisZonesV1ClientSession() (*ciszonesv1.ZonesV1, error) CisDNSRecordClientSession() (*cisdnsrecordsv1.DnsRecordsV1, error) + CisGLBClientSession() (*cisglbv1.GlobalLoadBalancerV1, error) CisGLBPoolClientSession() (*cisglbpoolv0.GlobalLoadBalancerPoolsV0, error) CisGLBHealthCheckClientSession() (*cisglbhealthcheckv1.GlobalLoadBalancerMonitorV1, error) CisRLClientSession() (*cisratelimitv1.ZoneRateLimitsV1, error) @@ -325,6 +327,10 @@ type clientSession struct { cisGLBPoolErr error cisGLBPoolClient *cisglbpoolv0.GlobalLoadBalancerPoolsV0 + // CIS GLB service options + cisGLBErr error + cisGLBClient *cisglbv1.GlobalLoadBalancerV1 + // CIS GLB health check service options cisGLBHealthCheckErr error cisGLBHealthCheckClient *cisglbhealthcheckv1.GlobalLoadBalancerMonitorV1 @@ -547,6 +553,11 @@ func (sess clientSession) CisGLBPoolClientSession() (*cisglbpoolv0.GlobalLoadBal return sess.cisGLBPoolClient, sess.cisGLBPoolErr } +// CIS GLB +func (sess clientSession) CisGLBClientSession() (*cisglbv1.GlobalLoadBalancerV1, error) { + return sess.cisGLBClient, sess.cisGLBErr +} + // CIS GLB Health Check/Monitor func (sess clientSession) CisGLBHealthCheckClientSession() (*cisglbhealthcheckv1.GlobalLoadBalancerMonitorV1, error) { return sess.cisGLBHealthCheckClient, sess.cisGLBHealthCheckErr @@ -626,6 +637,7 @@ func (c *Config) ClientSession() (interface{}, error) { session.iamNamespaceErr = errEmptyBluemixCredentials session.cisDNSErr = errEmptyBluemixCredentials session.cisGLBPoolErr = errEmptyBluemixCredentials + session.cisGLBErr = errEmptyBluemixCredentials session.cisGLBHealthCheckErr = errEmptyBluemixCredentials session.cisZonesErr = errEmptyBluemixCredentials session.cisRLErr = errEmptyBluemixCredentials @@ -999,6 +1011,20 @@ func (c *Config) ClientSession() (interface{}, error) { session.cisGLBPoolErr) } + // IBM Network CIS Global load balancer + cisGLBOpt := &cisglbv1.GlobalLoadBalancerV1Options{ + URL: cisEndPoint, + Authenticator: authenticator, + Crn: core.StringPtr(""), + ZoneIdentifier: core.StringPtr(""), + } + session.cisGLBClient, session.cisGLBErr = cisglbv1.NewGlobalLoadBalancerV1(cisGLBOpt) + if session.cisGLBErr != nil { + session.cisGLBErr = + fmt.Errorf("Error occured while configuring CIS GLB service: %s", + session.cisGLBErr) + } + // IBM Network CIS Global load balancer health check/monitor cisGLBHealthCheckOpt := &cisglbhealthcheckv1.GlobalLoadBalancerMonitorV1Options{ URL: cisEndPoint, @@ -1072,6 +1098,7 @@ func (c *Config) ClientSession() (interface{}, error) { fmt.Errorf("Error occured while configuring CIS SSL certificate service: %s", session.cisSSLErr) } + return session, nil } diff --git a/ibm/data_source_ibm_cis_global_load_balancers.go b/ibm/data_source_ibm_cis_global_load_balancers.go new file mode 100644 index 0000000000..491471e821 --- /dev/null +++ b/ibm/data_source_ibm_cis_global_load_balancers.go @@ -0,0 +1,225 @@ +package ibm + +import ( + "log" + "time" + + "github.com/IBM/go-sdk-core/v3/core" + "github.com/hashicorp/terraform-plugin-sdk/helper/schema" +) + +const cisGLB = "cis_glb" + +func dataSourceIBMCISGlbs() *schema.Resource { + return &schema.Resource{ + Schema: map[string]*schema.Schema{ + cisID: { + Type: schema.TypeString, + Description: "CIS instance crn", + Required: true, + }, + cisDomainID: { + Type: schema.TypeString, + Description: "Associated CIS domain", + Required: true, + DiffSuppressFunc: suppressDomainIDDiff, + }, + cisGLB: { + Type: schema.TypeList, + Description: "Collection of GLB detail", + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "id": { + Type: schema.TypeString, + Description: "identifier with zone id", + Computed: true, + }, + cisGLBID: { + Type: schema.TypeString, + Description: "global load balancer id", + Computed: true, + }, + cisGLBName: { + Type: schema.TypeString, + Description: "name", + Computed: true, + }, + cisGLBFallbackPoolID: { + Type: schema.TypeString, + Description: "fallback pool ID", + Computed: true, + }, + cisGLBDefaultPoolIDs: { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + Description: "List of default Pool IDs", + }, + cisGLBDesc: { + Type: schema.TypeString, + Computed: true, + Description: "Description for the load balancer instance", + }, + cisGLBTTL: { + Type: schema.TypeInt, + Computed: true, + Description: "TTL value", + }, + cisGLBProxied: { + Type: schema.TypeBool, + Computed: true, + Description: "set to true if proxy needs to be enabled", + }, + cisGLBSessionAffinity: { + Type: schema.TypeString, + Computed: true, + Description: "Session affinity info", + }, + cisGLBEnabled: { + Type: schema.TypeBool, + Computed: true, + Description: "set to true of LB needs to enabled", + }, + cisGLBCreatedOn: { + Type: schema.TypeString, + Computed: true, + Description: "Load balancer creation date", + }, + cisGLBModifiedOn: { + Type: schema.TypeString, + Computed: true, + Description: "Load balancer modified date", + }, + cisGLBPopPools: { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + cisGLBPopPoolsPop: { + Type: schema.TypeString, + Computed: true, + Description: "pop pools region", + }, + + cisGLBPopPoolsPoolIDs: { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + }, + }, + }, + cisGLBRegionPools: { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + cisGLBRegionPoolsRegion: { + Type: schema.TypeString, + Computed: true, + }, + cisGLBRegionPoolsPoolIDs: { + Type: schema.TypeList, + Computed: true, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + }, + }, + }, + }, + }, + }, + }, + Timeouts: &schema.ResourceTimeout{ + Read: schema.DefaultTimeout(10 * time.Minute), + }, + Read: dataSourceCISGlbsRead, + Importer: &schema.ResourceImporter{}, + } +} + +func dataSourceCISGlbsRead(d *schema.ResourceData, meta interface{}) error { + cisClient, err := meta.(ClientSession).CisGLBClientSession() + if err != nil { + return err + } + + crn := d.Get(cisID).(string) + zoneID := d.Get(cisDomainID).(string) + cisClient.Crn = core.StringPtr(crn) + cisClient.ZoneIdentifier = core.StringPtr(zoneID) + + opt := cisClient.NewListAllLoadBalancersOptions() + + result, resp, err := cisClient.ListAllLoadBalancers(opt) + if err != nil { + log.Printf("[WARN] List all GLB failed: %v\n", resp) + return err + } + glbs := result.Result + + glbList := make([]map[string]interface{}, 0) + for _, glbObj := range glbs { + glbOutput := map[string]interface{}{} + glbOutput["id"] = convertCisToTfThreeVar(*glbObj.ID, zoneID, crn) + glbOutput[cisGLBID] = *glbObj.ID + glbOutput[cisGLBName] = *glbObj.Name + glbOutput[cisGLBDefaultPoolIDs] = convertCisToTfTwoVarSlice(glbObj.DefaultPools, crn) + glbOutput[cisGLBDesc] = *glbObj.Description + glbOutput[cisGLBFallbackPoolID] = convertCisToTfTwoVar(*glbObj.FallbackPool, crn) + glbOutput[cisGLBTTL] = *glbObj.TTL + glbOutput[cisGLBProxied] = *glbObj.Proxied + glbOutput[cisGLBEnabled] = *glbObj.Enabled + glbOutput[cisGLBSessionAffinity] = *glbObj.SessionAffinity + glbOutput[cisGLBCreatedOn] = *glbObj.CreatedOn + glbOutput[cisGLBModifiedOn] = *glbObj.ModifiedOn + flattenPopPools := flattenDataSourcePopPools( + glbObj.PopPools, cisGLBPopPoolsPop, crn) + glbOutput[cisGLBPopPools] = flattenPopPools + flattenRegionPools := flattenDataSourceRegionPools( + glbObj.RegionPools, cisGLBRegionPoolsRegion, crn) + glbOutput[cisGLBRegionPools] = flattenRegionPools + glbList = append(glbList, glbOutput) + } + d.SetId(dataSourceCISGlbsCheckID(d)) + d.Set(cisGLB, glbList) + return nil +} + +// dataSourceCISGlbCheckID returns a reasonable ID glb list +func dataSourceCISGlbsCheckID(d *schema.ResourceData) string { + return time.Now().UTC().String() +} + +func flattenDataSourcePopPools(pools interface{}, geoType string, cisID string) []interface{} { + result := make([]interface{}, 0) + for k, v := range pools.(map[string]interface{}) { + poolIds := convertCisToTfTwoVarSlice(expandStringList(v.([]interface{})), cisID) + pool := map[string]interface{}{ + cisGLBPopPoolsPop: k, + cisGLBPopPoolsPoolIDs: poolIds, + } + result = append(result, pool) + } + return result +} + +func flattenDataSourceRegionPools(pools interface{}, geoType string, cisID string) []interface{} { + result := make([]interface{}, 0) + for k, v := range pools.(map[string]interface{}) { + poolIds := convertCisToTfTwoVarSlice(expandStringList(v.([]interface{})), cisID) + pool := map[string]interface{}{ + cisGLBRegionPoolsRegion: k, + cisGLBRegionPoolsPoolIDs: poolIds, + } + result = append(result, pool) + } + return result +} diff --git a/ibm/data_source_ibm_cis_global_load_balancers_test.go b/ibm/data_source_ibm_cis_global_load_balancers_test.go new file mode 100644 index 0000000000..08f42e9200 --- /dev/null +++ b/ibm/data_source_ibm_cis_global_load_balancers_test.go @@ -0,0 +1,34 @@ +package ibm + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/helper/resource" +) + +func TestAccIBMCisGLBDataSource_basic(t *testing.T) { + node := "data.ibm_cis_global_load_balancers.test" + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccCheckIBMCisGLBDataSourceConfig(), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttrSet(node, "cis_glb.0.id"), + resource.TestCheckResourceAttrSet(node, "cis_glb.0.glb_id"), + ), + }, + }, + }) +} + +func testAccCheckIBMCisGLBDataSourceConfig() string { + // status filter defaults to empty + return testAccCheckCisGlbConfigCisDSBasic("test", cisDomainStatic) + fmt.Sprintf(` + data "ibm_cis_global_load_balancers" "test" { + cis_id = ibm_cis_global_load_balancer.test.cis_id + domain_id = ibm_cis_global_load_balancer.test.domain_id + }`) +} diff --git a/ibm/provider.go b/ibm/provider.go index b9b0ef349c..b72b475feb 100644 --- a/ibm/provider.go +++ b/ibm/provider.go @@ -169,6 +169,7 @@ func Provider() terraform.ResourceProvider { "ibm_certificate_manager_certificate": dataIBMCertificateManagerCertificate(), "ibm_cis": dataSourceIBMCISInstance(), "ibm_cis_dns_records": dataSourceIBMCISDNSRecords(), + "ibm_cis_global_load_balancers": dataSourceIBMCISGlbs(), "ibm_cis_origin_pools": dataSourceIBMCISOriginPools(), "ibm_cis_healthchecks": dataSourceIBMCISHealthChecks(), "ibm_cis_domain": dataSourceIBMCISDomain(), diff --git a/ibm/resource_ibm_cis_global_load_balancer.go b/ibm/resource_ibm_cis_global_load_balancer.go index 2ceda870ea..5e0b945c0c 100644 --- a/ibm/resource_ibm_cis_global_load_balancer.go +++ b/ibm/resource_ibm_cis_global_load_balancer.go @@ -3,38 +3,61 @@ package ibm import ( "fmt" "log" - "reflect" - "strings" + "github.com/IBM/go-sdk-core/v3/core" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" +) - v1 "github.com/IBM-Cloud/bluemix-go/api/cis/cisv1" +const ( + cisGLBID = "glb_id" + cisGLBName = "name" + cisGLBFallbackPoolID = "fallback_pool_id" + cisGLBDefaultPoolIDs = "default_pool_ids" + cisGLBDesc = "description" + cisGLBProxied = "proxied" + cisGLBTTL = "ttl" + cisGLBSessionAffinity = "session_affinity" + cisGLBEnabled = "enabled" + cisGLBPopPools = "pop_pools" + cisGLBPopPoolsPop = "pop" + cisGLBPopPoolsPoolIDs = "pool_ids" + cisGLBRegionPools = "region_pools" + cisGLBRegionPoolsRegion = "region" + cisGLBRegionPoolsPoolIDs = "pool_ids" + cisGLBCreatedOn = "created_on" + cisGLBModifiedOn = "modified_on" ) func resourceIBMCISGlb() *schema.Resource { return &schema.Resource{ Schema: map[string]*schema.Schema{ - "cis_id": { + cisID: { Type: schema.TypeString, Description: "CIS instance crn", Required: true, }, - "domain_id": { + cisDomainID: { + Type: schema.TypeString, + Description: "Associated CIS domain", + Required: true, + DiffSuppressFunc: suppressDomainIDDiff, + }, + cisGLBID: { Type: schema.TypeString, - Description: "Associated CIS domain", - Required: true, + Description: "global load balancer id", + Computed: true, }, - "name": { + cisGLBName: { Type: schema.TypeString, Description: "name", Required: true, }, - "fallback_pool_id": { + cisGLBFallbackPoolID: { Type: schema.TypeString, Description: "fallback pool ID", Required: true, }, - "default_pool_ids": { + cisGLBDefaultPoolIDs: { Type: schema.TypeSet, Required: true, Elem: &schema.Schema{ @@ -43,27 +66,28 @@ func resourceIBMCISGlb() *schema.Resource { Description: "List of default Pool IDs", //ValidateFunc: validation.StringLenBetween(1, 32), }, - "description": { + cisGLBDesc: { Type: schema.TypeString, Optional: true, Description: "Description for the load balancer instance", //ValidateFunc: validation.StringLenBetween(0, 1024), }, - "ttl": { + cisGLBTTL: { Type: schema.TypeInt, Optional: true, + Default: 60, ConflictsWith: []string{"proxied"}, Description: "TTL value", // this is set to zero regardless of config when proxied=true }, - "proxied": { + cisGLBProxied: { Type: schema.TypeBool, Optional: true, Default: false, - ConflictsWith: []string{"ttl"}, + ConflictsWith: []string{cisGLBTTL}, Description: "set to true if proxy needs to be enabled", }, - "session_affinity": { + cisGLBSessionAffinity: { Type: schema.TypeString, Optional: true, Default: "none", @@ -71,23 +95,24 @@ func resourceIBMCISGlb() *schema.Resource { ValidateFunc: validateAllowedStringValue([]string{"none", "cookie"}), Description: "Session affinity info", }, - "enabled": { + cisGLBEnabled: { Type: schema.TypeBool, Optional: true, Default: true, Description: "set to true of LB needs to enabled", }, - "pop_pools": { + cisGLBPopPools: { Type: schema.TypeSet, Optional: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ - "pop": { - Type: schema.TypeString, - Required: true, + cisGLBPopPoolsPop: { + Type: schema.TypeString, + Required: true, + Description: "pop pools region", }, - "pool_ids": { + cisGLBPopPoolsPoolIDs: { Type: schema.TypeList, Required: true, Elem: &schema.Schema{ @@ -98,17 +123,17 @@ func resourceIBMCISGlb() *schema.Resource { }, }, - "region_pools": { + cisGLBRegionPools: { Type: schema.TypeSet, Optional: true, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ - "region": { + cisGLBRegionPoolsRegion: { Type: schema.TypeString, Required: true, }, - "pool_ids": { + cisGLBRegionPoolsPoolIDs: { Type: schema.TypeList, Required: true, Elem: &schema.Schema{ @@ -118,209 +143,180 @@ func resourceIBMCISGlb() *schema.Resource { }, }, }, - "created_on": { + cisGLBCreatedOn: { Type: schema.TypeString, Computed: true, Description: "Load balancer creation date", }, - "modified_on": { + cisGLBModifiedOn: { Type: schema.TypeString, Computed: true, Description: "Load balancer modified date", }, }, - Create: resourceCISGlbCreate, - Read: resourceCISGlbRead, - Update: resourceCISGlbUpdate, - Delete: resourceCISGlbDelete, - // No Exists due to errors in CIS API returning incorrect return codes on 404 + Create: resourceCISGlbCreate, + Read: resourceCISGlbRead, + Update: resourceCISGlbUpdate, + Delete: resourceCISGlbDelete, Importer: &schema.ResourceImporter{}, } } func resourceCISGlbCreate(d *schema.ResourceData, meta interface{}) error { - cisClient, err := meta.(ClientSession).CisAPI() + cisClient, err := meta.(ClientSession).CisGLBClientSession() if err != nil { return err } - cisId := d.Get("cis_id").(string) - name := d.Get("name").(string) - zoneId, _, err := convertTftoCisTwoVar(d.Get("domain_id").(string)) - if err != nil { - return err + crn := d.Get(cisID).(string) + zoneID, _, err := convertTftoCisTwoVar(d.Get(cisDomainID).(string)) + cisClient.Crn = core.StringPtr(crn) + cisClient.ZoneIdentifier = core.StringPtr(zoneID) + + tfDefaultPoolIds := expandStringList(d.Get(cisGLBDefaultPoolIDs).(*schema.Set).List()) + defaultPoolIds, _, err := convertTfToCisTwoVarSlice(tfDefaultPoolIds) + fbPoolID := d.Get(cisGLBFallbackPoolID).(string) + fallbackPool, _, err := convertTftoCisTwoVar(fbPoolID) + + opt := cisClient.NewCreateLoadBalancerOptions() + opt.SetName(d.Get(cisGLBName).(string)) + opt.SetDefaultPools(defaultPoolIds) + opt.SetFallbackPool(fallbackPool) + opt.SetProxied(d.Get(cisGLBProxied).(bool)) + opt.SetSessionAffinity(d.Get(cisGLBSessionAffinity).(string)) + + if description, ok := d.GetOk(cisGLBDesc); ok { + opt.SetDescription(description.(string)) } - - var glb *v1.Glb - var glbObj v1.Glb - glbNew := v1.GlbBody{} - glbNew.Name = name - - tfDefaultPools := expandStringList(d.Get("default_pool_ids").(*schema.Set).List()) - defaultPoolIds, _, err := convertTfToCisTwoVarSlice(tfDefaultPools) - glbNew.DefaultPools = defaultPoolIds - // glbNew.RegionPools - // glbNew.PopPools - - fbPoolId := d.Get("fallback_pool_id").(string) - glbNew.FallbackPool, _, err = convertTftoCisTwoVar(fbPoolId) - glbNew.Proxied = d.Get("proxied").(bool) - glbNew.SessionAffinity = d.Get("session_affinity").(string) - - if description, ok := d.GetOk("description"); ok { - glbNew.Desc = description.(string) - } - if ttl, ok := d.GetOk("ttl"); ok { - glbNew.Ttl = ttl.(int) + if ttl, ok := d.GetOk(cisGLBTTL); ok { + opt.SetTTL(int64(ttl.(int))) } - if regionPools, ok := d.GetOk("region_pools"); ok { - expandedRegionPools, err := expandGeoPools(regionPools, "region") + if regionPools, ok := d.GetOk(cisGLBRegionPools); ok { + expandedRegionPools, err := expandGeoPools(regionPools, cisGLBRegionPoolsRegion) if err != nil { return err } - glbNew.RegionPools = expandedRegionPools + opt.SetRegionPools(expandedRegionPools) } - - if popPools, ok := d.GetOk("pop_pools"); ok { - expandedPopPools, err := expandGeoPools(popPools, "pop") + if popPools, ok := d.GetOk(cisGLBPopPools); ok { + expandedPopPools, err := expandGeoPools(popPools, cisGLBPopPoolsPop) if err != nil { return err } - glbNew.PopPools = expandedPopPools + opt.SetPopPools(expandedPopPools) } - glb, err = cisClient.Glbs().CreateGlb(cisId, zoneId, glbNew) + result, resp, err := cisClient.CreateLoadBalancer(opt) if err != nil { - log.Printf("CreateGlbs Failed %s\n", err) + log.Printf("Create GLB failed %s\n", resp) return err } - glbObj = *glb - d.SetId(convertCisToTfThreeVar(glbObj.Id, zoneId, cisId)) - + d.SetId(convertCisToTfThreeVar(*result.Result.ID, zoneID, crn)) return resourceCISGlbUpdate(d, meta) } -func expandGeoPools(pool interface{}, geoType string) (map[string][]string, error) { - pools := pool.(*schema.Set).List() - expandPool := make(map[string][]string) - for _, v := range pools { - locationConfig := v.(map[string]interface{}) - location := locationConfig[geoType].(string) - if _, p := expandPool[location]; !p { - geoPools := expandStringList(locationConfig["pool_ids"].([]interface{})) - expandPool[location], _, _ = convertTfToCisTwoVarSlice(geoPools) - } else { - return nil, fmt.Errorf("duplicate entry specified for %s pool in location %q. each location must only be specified once", geoType, location) - } - } - return expandPool, nil -} func resourceCISGlbRead(d *schema.ResourceData, meta interface{}) error { - cisClient, err := meta.(ClientSession).CisAPI() + cisClient, err := meta.(ClientSession).CisGLBClientSession() if err != nil { return err } + // Extract CIS Ids from TF Id - glbId, zoneId, cisId, err := convertTfToCisThreeVar(d.Id()) + glbID, zoneID, crn, err := convertTfToCisThreeVar(d.Id()) if err != nil { return err } - var glb *v1.Glb - glb, err = cisClient.Glbs().GetGlb(cisId, zoneId, glbId) + cisClient.Crn = core.StringPtr(crn) + cisClient.ZoneIdentifier = core.StringPtr(zoneID) + + opt := cisClient.NewGetLoadBalancerSettingsOptions(glbID) + + result, resp, err := cisClient.GetLoadBalancerSettings(opt) if err != nil { - if checkCisGlbDeleted(d, meta, err, glb) { - d.SetId("") - return nil - } - log.Printf("[WARN] Error getting zone during GlbRead %v\n", err) + log.Printf("[WARN] GLB Read failed: %v\n", resp) return err } - glbObj := *glb - d.Set("cis_id", cisId) - d.Set("domain_id", convertCisToTfTwoVar(zoneId, cisId)) - d.Set("name", glbObj.Name) - d.Set("default_pool_ids", convertCisToTfTwoVarSlice(glbObj.DefaultPools, cisId)) - d.Set("description", glbObj.Desc) - d.Set("fallback_pool_id", convertCisToTfTwoVar(glbObj.FallbackPool, cisId)) - d.Set("ttl", glbObj.Ttl) - d.Set("proxied", glbObj.Proxied) - d.Set("enabled", glbObj.Enabled) - d.Set("session_affinity", glbObj.SessionAffinity) - if err := d.Set("pop_pools", flattenPools(glbObj.PopPools, "pop", cisId)); err != nil { - log.Printf("[WARN] Error setting pop_pools on cis load balancer %q: %s", d.Id(), err) - } - - if err := d.Set("region_pools", flattenPools(glbObj.RegionPools, "region", cisId)); err != nil { - log.Printf("[WARN] Error setting region_pools on cis load balancer %q: %s", d.Id(), err) - } + glbObj := result.Result + d.Set(cisID, crn) + d.Set(cisDomainID, zoneID) + d.Set(cisGLBID, glbObj.ID) + d.Set(cisGLBName, glbObj.Name) + d.Set(cisGLBDefaultPoolIDs, convertCisToTfTwoVarSlice(glbObj.DefaultPools, crn)) + d.Set(cisGLBDesc, glbObj.Description) + d.Set(cisGLBFallbackPoolID, convertCisToTfTwoVar(*glbObj.FallbackPool, crn)) + d.Set(cisGLBTTL, glbObj.TTL) + d.Set(cisGLBProxied, glbObj.Proxied) + d.Set(cisGLBEnabled, glbObj.Enabled) + d.Set(cisGLBSessionAffinity, glbObj.SessionAffinity) + flattenPopPools := flattenPools( + glbObj.PopPools, cisGLBPopPoolsPop, crn) + d.Set(cisGLBPopPools, flattenPopPools) + flattenRegionPools := flattenPools( + glbObj.RegionPools, cisGLBRegionPoolsRegion, crn) + d.Set(cisGLBRegionPools, flattenRegionPools) return nil } -func flattenPools(pools map[string][]string, geoType string, cisId string) []interface{} { - result := make([]interface{}, 0) - for k, v := range pools { - pool := map[string]interface{}{ - geoType: k, - "pool_ids": convertCisToTfTwoVarSlice(v, cisId), - } - result = append(result, pool) - } - return result -} func resourceCISGlbUpdate(d *schema.ResourceData, meta interface{}) error { - cisClient, err := meta.(ClientSession).CisAPI() + cisClient, err := meta.(ClientSession).CisGLBClientSession() if err != nil { return err } // Extract CIS Ids from TF Id - glbId, zoneId, cisId, err := convertTfToCisThreeVar(d.Id()) + glbID, zoneID, crn, err := convertTfToCisThreeVar(d.Id()) if err != nil { return err } - glbUpdate := v1.GlbBody{} + cisClient.Crn = core.StringPtr(crn) + cisClient.ZoneIdentifier = core.StringPtr(zoneID) - if d.HasChange("name") || d.HasChange("default_pool_ids") || d.HasChange("fallback_pool_id") || d.HasChange("proxied") || d.HasChange("session_affinity") || d.HasChange("description") || d.HasChange("ttl") || d.HasChange("enabled") || d.HasChange("pop_pools") || d.HasChange("region_pools") { + if d.HasChange(cisGLBName) || d.HasChange(cisGLBDefaultPoolIDs) || + d.HasChange(cisGLBFallbackPoolID) || d.HasChange(cisGLBProxied) || + d.HasChange(cisGLBSessionAffinity) || d.HasChange(cisGLBDesc) || + d.HasChange(cisGLBTTL) || d.HasChange(cisGLBEnabled) || + d.HasChange(cisGLBPopPools) || d.HasChange(cisGLBRegionPools) { - name := d.Get("name").(string) - glbUpdate.Name = name - tfDefaultPools := expandStringList(d.Get("default_pool_ids").(*schema.Set).List()) + tfDefaultPools := expandStringList(d.Get(cisGLBDefaultPoolIDs).(*schema.Set).List()) defaultPoolIds, _, err := convertTfToCisTwoVarSlice(tfDefaultPools) - glbUpdate.DefaultPools = defaultPoolIds - fbPoolId := d.Get("fallback_pool_id").(string) - glbUpdate.FallbackPool, _, err = convertTftoCisTwoVar(fbPoolId) - glbUpdate.Proxied = d.Get("proxied").(bool) - glbUpdate.SessionAffinity = d.Get("session_affinity").(string) - - if description, ok := d.GetOk("description"); ok { - glbUpdate.Desc = description.(string) + fbPoolID := d.Get(cisGLBFallbackPoolID).(string) + fallbackPool, _, _ := convertTftoCisTwoVar(fbPoolID) + + opt := cisClient.NewEditLoadBalancerOptions(glbID) + opt.SetName(d.Get(cisGLBName).(string)) + opt.SetProxied(d.Get(cisGLBProxied).(bool)) + opt.SetSessionAffinity(d.Get(cisGLBSessionAffinity).(string)) + opt.SetDefaultPools(defaultPoolIds) + opt.SetFallbackPool(fallbackPool) + if description, ok := d.GetOk(cisGLBDesc); ok { + opt.SetDescription(description.(string)) } - if ttl, ok := d.GetOk("ttl"); ok { - glbUpdate.Ttl = ttl.(int) + if ttl, ok := d.GetOk(cisGLBTTL); ok { + opt.SetTTL(int64(ttl.(int))) } - if enabled, ok := d.GetOk("enabled"); ok { - glbUpdate.Enabled = enabled.(bool) + if enabled, ok := d.GetOk(cisGLBEnabled); ok { + opt.SetEnabled(enabled.(bool)) } - if regionPools, ok := d.GetOk("region_pools"); ok { - expandedRegionPools, err := expandGeoPools(regionPools, "region") + if regionPools, ok := d.GetOk(cisGLBRegionPools); ok { + expandedRegionPools, err := expandGeoPools(regionPools, cisGLBRegionPoolsRegion) if err != nil { return err } - glbUpdate.RegionPools = expandedRegionPools + opt.SetRegionPools(expandedRegionPools) } - - if popPools, ok := d.GetOk("pop_pools"); ok { - expandedPopPools, err := expandGeoPools(popPools, "pop") + if popPools, ok := d.GetOk(cisGLBPopPools); ok { + expandedPopPools, err := expandGeoPools(popPools, cisGLBPopPoolsPop) if err != nil { return err } - glbUpdate.PopPools = expandedPopPools + opt.SetPopPools(expandedPopPools) } - _, err = cisClient.Glbs().UpdateGlb(cisId, zoneId, glbId, glbUpdate) + + _, resp, err := cisClient.EditLoadBalancer(opt) if err != nil { - log.Printf("[WARN] Error getting zone during GlbUpdate %v\n", err) + log.Printf("[WARN] Error updating GLB %v\n", resp) return err } } @@ -329,54 +325,80 @@ func resourceCISGlbUpdate(d *schema.ResourceData, meta interface{}) error { } func resourceCISGlbDelete(d *schema.ResourceData, meta interface{}) error { - cisClient, err := meta.(ClientSession).CisAPI() + cisClient, err := meta.(ClientSession).CisGLBClientSession() if err != nil { return err } - glbId, zoneId, cisId, _ := convertTfToCisThreeVar(d.Id()) - var glb *v1.Glb - emptyGlb := new(v1.Glb) - - glb, err = cisClient.Glbs().GetGlb(cisId, zoneId, glbId) + // Extract CIS Ids from TF Id + glbID, zoneID, crn, err := convertTfToCisThreeVar(d.Id()) if err != nil { - if checkCisGlbDeleted(d, meta, err, glb) { - d.SetId("") - return nil - } - log.Printf("[WARN] Error getting zone during GlbRead %v\n", err) return err } + cisClient.Crn = core.StringPtr(crn) + cisClient.ZoneIdentifier = core.StringPtr(zoneID) + opt := cisClient.NewDeleteLoadBalancerOptions(glbID) - glbObj := *glb - if !reflect.DeepEqual(emptyGlb, glbObj) { - err = cisClient.Glbs().DeleteGlb(cisId, zoneId, glbId) - if err != nil { - log.Printf("[WARN] DeleteGlb Failed %s\n", err) - return err - } + result, resp, err := cisClient.DeleteLoadBalancer(opt) + if err != nil { + log.Printf("[WARN] Error deleting GLB %v\n", resp) + return err } - - d.SetId("") + log.Printf("Deletion successful : %s", *result.Result.ID) return nil } -func checkCisGlbDeleted(d *schema.ResourceData, meta interface{}, errCheck error, glb *v1.Glb) bool { - // Check if error is due to removal of Cis resource and hence all subresources - if strings.Contains(errCheck.Error(), "Object not found") || - strings.Contains(errCheck.Error(), "status code: 404") || - strings.Contains(errCheck.Error(), "Invalid zone identifier") { //code 400 - log.Printf("[WARN] Removing resource from state because it's not found via the CIS API") - return true +func resourceCISGlbExists(d *schema.ResourceData, meta interface{}) (bool, error) { + cisClient, err := meta.(ClientSession).CisGLBClientSession() + if err != nil { + return false, err + } + // Extract CIS Ids from TF Id + glbID, zoneID, crn, err := convertTfToCisThreeVar(d.Id()) + if err != nil { + return false, err + } + cisClient.Crn = core.StringPtr(crn) + cisClient.ZoneIdentifier = core.StringPtr(zoneID) + opt := cisClient.NewGetLoadBalancerSettingsOptions(glbID) + + _, response, err := cisClient.GetLoadBalancerSettings(opt) + if err != nil { + if response != nil && response.StatusCode == 404 { + log.Printf("global load balancer does not exist.") + return false, nil + } + log.Printf("[WARN] Error getting GLB %v\n", response) + return false, err } - _, _, cisId, _ := convertTfToCisThreeVar(d.Id()) - exists, errNew := rcInstanceExists(cisId, "ibm_cis", meta) - if errNew != nil { - log.Printf("resourceCISglbRead - Failure validating service exists %s\n", errNew) - return false + return true, nil +} + +func expandGeoPools(pool interface{}, geoType string) (map[string][]string, error) { + pools := pool.(*schema.Set).List() + expandPool := make(map[string][]string) + for _, v := range pools { + locationConfig := v.(map[string]interface{}) + location := locationConfig[geoType].(string) + if _, p := expandPool[location]; !p { + geoPools := expandStringList(locationConfig[cisGLBRegionPoolsPoolIDs].([]interface{})) + expandPool[location], _, _ = convertTfToCisTwoVarSlice(geoPools) + } else { + return nil, fmt.Errorf("duplicate entry specified for %s pool in location %q. "+ + "each location must only be specified once", geoType, location) + } } - if !exists { - log.Printf("[WARN] Removing glb from state because parent cis instance is in removed state") - return true + return expandPool, nil +} + +func flattenPools(pools interface{}, geoType string, cisID string) []interface{} { + result := make([]interface{}, 0) + for k, v := range pools.(map[string]interface{}) { + poolIds := convertCisToTfTwoVarSlice(expandStringList(v.([]interface{})), cisID) + pool := map[string]interface{}{ + cisGLBRegionPoolsRegion: k, + cisGLBPopPoolsPoolIDs: poolIds, + } + result = append(result, pool) } - return false + return result } diff --git a/ibm/resource_ibm_cis_global_load_balancer_test.go b/ibm/resource_ibm_cis_global_load_balancer_test.go index a363c76b63..39fa0a032b 100644 --- a/ibm/resource_ibm_cis_global_load_balancer_test.go +++ b/ibm/resource_ibm_cis_global_load_balancer_test.go @@ -1,14 +1,11 @@ package ibm import ( - //"errors" "fmt" "log" "testing" - //"regexp" - - //"github.com/hashicorp/terraform-plugin-sdk/helper/acctest" + "github.com/IBM/go-sdk-core/v3/core" "github.com/hashicorp/terraform-plugin-sdk/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/terraform" ) @@ -26,7 +23,7 @@ func TestAccIBMCisGlb_Basic(t *testing.T) { CheckDestroy: testAccCheckCisGlbDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckCisGlbConfigCisDS_Basic("test", cisDomainStatic), + Config: testAccCheckCisGlbConfigCisDSBasic("test", cisDomainStatic), ExpectNonEmptyPlan: true, Check: resource.ComposeTestCheckFunc( testAccCheckCisGlbExists(name, &glb), @@ -38,7 +35,7 @@ func TestAccIBMCisGlb_Basic(t *testing.T) { ), }, { - Config: testAccCheckCisGlbConfigCisDS_Update("test", cisDomainStatic), + Config: testAccCheckCisGlbConfigCisDSUpdate("test", cisDomainStatic), ExpectNonEmptyPlan: true, Check: resource.ComposeTestCheckFunc( testAccCheckCisGlbExists(name, &glb), @@ -65,7 +62,7 @@ func TestAccIBMCisGlb_CreateAfterManualDestroy(t *testing.T) { CheckDestroy: testAccCheckCisGlbDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckCisGlbConfigCisDS_Basic("test", cisDomainStatic), + Config: testAccCheckCisGlbConfigCisDSBasic("test", cisDomainStatic), Check: resource.ComposeTestCheckFunc( testAccCheckCisGlbExists(name, &glbOne), testAccCisGlbManuallyDelete(&glbOne), @@ -73,7 +70,7 @@ func TestAccIBMCisGlb_CreateAfterManualDestroy(t *testing.T) { ExpectNonEmptyPlan: true, }, { - Config: testAccCheckCisGlbConfigCisDS_Basic("test", cisDomainStatic), + Config: testAccCheckCisGlbConfigCisDSBasic("test", cisDomainStatic), Check: resource.ComposeTestCheckFunc( testAccCheckCisGlbExists(name, &glbTwo), func(state *terraform.State) error { @@ -101,7 +98,7 @@ func TestAccIBMCisGlb_CreateAfterManualCisRIDestroy(t *testing.T) { CheckDestroy: testAccCheckCisGlbDestroy, Steps: []resource.TestStep{ { - Config: testAccCheckCisGlbConfigCisRI_Basic("test", cisDomainTest), + Config: testAccCheckCisGlbConfigCisRIBasic("test", cisDomainTest), Check: resource.ComposeTestCheckFunc( testAccCheckCisGlbExists(name, &glbOne), testAccCisGlbManuallyDelete(&glbOne), @@ -113,8 +110,8 @@ func TestAccIBMCisGlb_CreateAfterManualCisRIDestroy(t *testing.T) { for _, r := range state.RootModule().Resources { if r.Type == "ibm_cis_pool" { log.Printf("[WARN] Manually removing pool") - poolId, cisId, _ := convertTftoCisTwoVar(r.Primary.ID) - _ = cisClient.Pools().DeletePool(cisId, poolId) + poolID, cisID, _ := convertTftoCisTwoVar(r.Primary.ID) + _ = cisClient.Pools().DeletePool(cisID, poolID) } @@ -122,9 +119,9 @@ func TestAccIBMCisGlb_CreateAfterManualCisRIDestroy(t *testing.T) { for _, r := range state.RootModule().Resources { if r.Type == "ibm_cis_domain" { log.Printf("[WARN] Manually removing domain") - zoneId, cisId, _ := convertTftoCisTwoVar(r.Primary.ID) - _ = cisClient.Zones().DeleteZone(cisId, zoneId) - cisPtr := &cisId + zoneID, cisID, _ := convertTftoCisTwoVar(r.Primary.ID) + _ = cisClient.Zones().DeleteZone(cisID, zoneID) + cisPtr := &cisID log.Printf("[WARN] Manually removing Cis Instance") _ = testAccCisInstanceManuallyDeleteUnwrapped(state, cisPtr) } @@ -136,7 +133,7 @@ func TestAccIBMCisGlb_CreateAfterManualCisRIDestroy(t *testing.T) { ExpectNonEmptyPlan: true, }, { - Config: testAccCheckCisGlbConfigCisRI_Basic("test", cisDomainTest), + Config: testAccCheckCisGlbConfigCisRIBasic("test", cisDomainTest), Check: resource.ComposeTestCheckFunc( testAccCheckCisGlbExists(name, &glbTwo), func(state *terraform.State) error { @@ -159,18 +156,16 @@ func TestAccIBMCisGlb_import(t *testing.T) { PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, Steps: []resource.TestStep{ - resource.TestStep{ - Config: testAccCheckCisGlbConfigCisDS_Basic("test", cisDomainStatic), + { + Config: testAccCheckCisGlbConfigCisDSBasic("test", cisDomainStatic), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr(name, "proxied", "false"), // default value ), }, - resource.TestStep{ + { ResourceName: name, ImportState: true, ImportStateVerify: true, - ImportStateVerifyIgnore: []string{ - "wait_time_minutes"}, }, }, }) @@ -191,8 +186,6 @@ func TestAccIBMCisGlb_SessionAffinity(t *testing.T) { testAccCheckCisGlbExists(name, &glb), // explicitly verify that our session_affinity has been set resource.TestCheckResourceAttr(name, "session_affinity", "cookie"), - //resource.TestCheckResourceAttr(name, "pop_pools.#", "0"), - //resource.TestCheckResourceAttr(name, "region_pools.#", "0"), ), }, }, @@ -200,7 +193,7 @@ func TestAccIBMCisGlb_SessionAffinity(t *testing.T) { } func testAccCheckCisGlbDestroy(s *terraform.State) error { - cisClient, err := testAccProvider.Meta().(ClientSession).CisAPI() + cisClient, err := testAccProvider.Meta().(ClientSession).CisGLBClientSession() if err != nil { return err } @@ -208,8 +201,16 @@ func testAccCheckCisGlbDestroy(s *terraform.State) error { if rs.Type != "ibm_cis_global_load_balancer" { continue } - glbId, zoneId, cisId, _ := convertTfToCisThreeVar(rs.Primary.ID) - _, err = cisClient.Glbs().GetGlb(cisId, zoneId, glbId) + glbID, zoneID, crn, err := convertTfToCisThreeVar(rs.Primary.ID) + if err != nil { + return err + } + cisClient.Crn = core.StringPtr(crn) + cisClient.ZoneIdentifier = core.StringPtr(zoneID) + + opt := cisClient.NewGetLoadBalancerSettingsOptions(glbID) + + _, _, err = cisClient.GetLoadBalancerSettings(opt) if err == nil { return fmt.Errorf("Global Load balancer still exists") } @@ -218,16 +219,22 @@ func testAccCheckCisGlbDestroy(s *terraform.State) error { return nil } -func testAccCisGlbManuallyDelete(tfGlbId *string) resource.TestCheckFunc { +func testAccCisGlbManuallyDelete(tfGlbID *string) resource.TestCheckFunc { return func(s *terraform.State) error { - cisClient, err := testAccProvider.Meta().(ClientSession).CisAPI() + cisClient, err := testAccProvider.Meta().(ClientSession).CisGLBClientSession() if err != nil { return err } - tfGlb := *tfGlbId + tfGlb := *tfGlbID log.Printf("[WARN] Manually removing glb") - glbId, zoneId, cisId, _ := convertTfToCisThreeVar(tfGlb) - err = cisClient.Glbs().DeleteGlb(cisId, zoneId, glbId) + glbID, zoneID, crn, err := convertTfToCisThreeVar(tfGlb) + if err != nil { + return err + } + cisClient.Crn = core.StringPtr(crn) + cisClient.ZoneIdentifier = core.StringPtr(zoneID) + opt := cisClient.NewDeleteLoadBalancerOptions(glbID) + _, _, err = cisClient.DeleteLoadBalancer(opt) if err != nil { return fmt.Errorf("Error deleting IBMCISGlb Record: %s", err) } @@ -235,7 +242,7 @@ func testAccCisGlbManuallyDelete(tfGlbId *string) resource.TestCheckFunc { } } -func testAccCheckCisGlbExists(n string, tfGlbId *string) resource.TestCheckFunc { +func testAccCheckCisGlbExists(n string, tfGlbID *string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] if !ok { @@ -245,18 +252,29 @@ func testAccCheckCisGlbExists(n string, tfGlbId *string) resource.TestCheckFunc if rs.Primary.ID == "" { return fmt.Errorf("No Load Balancer ID is set") } - glbId, zoneId, cisId, _ := convertTfToCisThreeVar(rs.Primary.ID) - cisClient, err := testAccProvider.Meta().(ClientSession).CisAPI() - foundGlb, err := cisClient.Glbs().GetGlb(rs.Primary.Attributes["cis_id"], zoneId, glbId) + cisClient, err := testAccProvider.Meta().(ClientSession).CisGLBClientSession() if err != nil { return err } - *tfGlbId = convertCisToTfThreeVar(foundGlb.Id, zoneId, cisId) + glbID, zoneID, crn, err := convertTfToCisThreeVar(rs.Primary.ID) + if err != nil { + return err + } + cisClient.Crn = core.StringPtr(crn) + cisClient.ZoneIdentifier = core.StringPtr(zoneID) + + opt := cisClient.NewGetLoadBalancerSettingsOptions(glbID) + + result, _, err := cisClient.GetLoadBalancerSettings(opt) + if err != nil { + return fmt.Errorf("Global Load balancer exists") + } + *tfGlbID = convertCisToTfThreeVar(*result.Result.ID, zoneID, crn) return nil } } -func testAccCheckCisGlbConfigCisDS_Basic(id string, cisDomain string) string { +func testAccCheckCisGlbConfigCisDSBasic(id string, cisDomain string) string { return testAccCheckCisPoolConfigFullySpecified(id, cisDomain) + fmt.Sprintf(` resource "ibm_cis_global_load_balancer" "%[1]s" { cis_id = data.ibm_cis.cis.id @@ -265,10 +283,10 @@ func testAccCheckCisGlbConfigCisDS_Basic(id string, cisDomain string) string { fallback_pool_id = ibm_cis_origin_pool.origin_pool.id default_pool_ids = [ibm_cis_origin_pool.origin_pool.id] } - `, id, cisDomainStatic, cisInstance) + `, id, cisDomainStatic) } -func testAccCheckCisGlbConfigCisDS_Update(id string, cisDomain string) string { +func testAccCheckCisGlbConfigCisDSUpdate(id string, cisDomain string) string { return testAccCheckCisPoolConfigFullySpecified(id, cisDomain) + fmt.Sprintf(` resource "ibm_cis_global_load_balancer" "%[1]s" { cis_id = data.ibm_cis.cis.id @@ -285,10 +303,10 @@ func testAccCheckCisGlbConfigCisDS_Update(id string, cisDomain string) string { pool_ids = [ibm_cis_origin_pool.origin_pool.id] } } - `, id, cisDomainStatic, cisInstance) + `, id, cisDomainStatic) } -func testAccCheckCisGlbConfigCisRI_Basic(id string, cisDomain string) string { +func testAccCheckCisGlbConfigCisRIBasic(id string, cisDomain string) string { return testAccCheckCisPoolConfigCisRIBasic(id, cisDomain) + fmt.Sprintf(` resource "ibm_cis_global_load_balancer" "%[1]s" { cis_id = ibm_cis.cis.id @@ -296,7 +314,7 @@ func testAccCheckCisGlbConfigCisRI_Basic(id string, cisDomain string) string { name = "%[2]s" fallback_pool_id = ibm_cis_origin_pool.origin_pool.id default_pool_ids = [ibm_cis_origin_pool.origin_pool.id] - } + } `, id, cisDomain, "testacc_ds_cis") } @@ -310,5 +328,5 @@ func testAccCheckCisGlbConfigSessionAffinity(id string, cisDomainStatic string) default_pool_ids = [ibm_cis_origin_pool.origin_pool.id] session_affinity = "cookie" } - `, id, cisDomainStatic, cisInstance) + `, id, cisDomainStatic) } diff --git a/vendor/github.com/IBM/networking-go-sdk/globalloadbalancerv1/global_load_balancer_v1.go b/vendor/github.com/IBM/networking-go-sdk/globalloadbalancerv1/global_load_balancer_v1.go new file mode 100644 index 0000000000..06313e6cda --- /dev/null +++ b/vendor/github.com/IBM/networking-go-sdk/globalloadbalancerv1/global_load_balancer_v1.go @@ -0,0 +1,1104 @@ +/** + * (C) Copyright IBM Corp. 2020. + * + * 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 globalloadbalancerv1 : Operations and models for the GlobalLoadBalancerV1 service +package globalloadbalancerv1 + +import ( + "encoding/json" + common "github.com/IBM/networking-go-sdk/common" + "github.com/IBM/go-sdk-core/v4/core" + "reflect" +) + +// GlobalLoadBalancerV1 : Global Load Balancer +// +// Version: 1.0.1 +type GlobalLoadBalancerV1 struct { + Service *core.BaseService + + // Full CRN of the service instance. + Crn *string + + // zone identifier. + ZoneIdentifier *string +} + +// DefaultServiceURL is the default URL to make service requests to. +const DefaultServiceURL = "https://api.cis.cloud.ibm.com" + +// DefaultServiceName is the default key used to find external configuration information. +const DefaultServiceName = "global_load_balancer" + +// GlobalLoadBalancerV1Options : Service options +type GlobalLoadBalancerV1Options struct { + ServiceName string + URL string + Authenticator core.Authenticator + + // Full CRN of the service instance. + Crn *string `validate:"required"` + + // zone identifier. + ZoneIdentifier *string `validate:"required"` +} + +// NewGlobalLoadBalancerV1UsingExternalConfig : constructs an instance of GlobalLoadBalancerV1 with passed in options and external configuration. +func NewGlobalLoadBalancerV1UsingExternalConfig(options *GlobalLoadBalancerV1Options) (globalLoadBalancer *GlobalLoadBalancerV1, err error) { + if options.ServiceName == "" { + options.ServiceName = DefaultServiceName + } + + if options.Authenticator == nil { + options.Authenticator, err = core.GetAuthenticatorFromEnvironment(options.ServiceName) + if err != nil { + return + } + } + + globalLoadBalancer, err = NewGlobalLoadBalancerV1(options) + if err != nil { + return + } + + err = globalLoadBalancer.Service.ConfigureService(options.ServiceName) + if err != nil { + return + } + + if options.URL != "" { + err = globalLoadBalancer.Service.SetServiceURL(options.URL) + } + return +} + +// NewGlobalLoadBalancerV1 : constructs an instance of GlobalLoadBalancerV1 with passed in options. +func NewGlobalLoadBalancerV1(options *GlobalLoadBalancerV1Options) (service *GlobalLoadBalancerV1, err error) { + serviceOptions := &core.ServiceOptions{ + URL: DefaultServiceURL, + Authenticator: options.Authenticator, + } + + err = core.ValidateStruct(options, "options") + if err != nil { + return + } + + baseService, err := core.NewBaseService(serviceOptions) + if err != nil { + return + } + + if options.URL != "" { + err = baseService.SetServiceURL(options.URL) + if err != nil { + return + } + } + + service = &GlobalLoadBalancerV1{ + Service: baseService, + Crn: options.Crn, + ZoneIdentifier: options.ZoneIdentifier, + } + + return +} + +// SetServiceURL sets the service URL +func (globalLoadBalancer *GlobalLoadBalancerV1) SetServiceURL(url string) error { + return globalLoadBalancer.Service.SetServiceURL(url) +} + +// ListAllLoadBalancers : List all load balancers +// List configured load balancers. +func (globalLoadBalancer *GlobalLoadBalancerV1) ListAllLoadBalancers(listAllLoadBalancersOptions *ListAllLoadBalancersOptions) (result *ListLoadBalancersResp, response *core.DetailedResponse, err error) { + err = core.ValidateStruct(listAllLoadBalancersOptions, "listAllLoadBalancersOptions") + if err != nil { + return + } + + pathSegments := []string{"v1", "zones", "load_balancers"} + pathParameters := []string{*globalLoadBalancer.Crn, *globalLoadBalancer.ZoneIdentifier} + + builder := core.NewRequestBuilder(core.GET) + _, err = builder.ConstructHTTPURL(globalLoadBalancer.Service.Options.URL, pathSegments, pathParameters) + if err != nil { + return + } + + for headerName, headerValue := range listAllLoadBalancersOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("global_load_balancer", "V1", "ListAllLoadBalancers") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + + request, err := builder.Build() + if err != nil { + return + } + + var rawResponse map[string]json.RawMessage + response, err = globalLoadBalancer.Service.Request(request, &rawResponse) + if err != nil { + return + } + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalListLoadBalancersResp) + if err != nil { + return + } + response.Result = result + + return +} + +// CreateLoadBalancer : Create a load balancer +// Create a load balancer for a given zone. The zone should be active before placing an order of a load balancer. +func (globalLoadBalancer *GlobalLoadBalancerV1) CreateLoadBalancer(createLoadBalancerOptions *CreateLoadBalancerOptions) (result *LoadBalancersResp, response *core.DetailedResponse, err error) { + err = core.ValidateStruct(createLoadBalancerOptions, "createLoadBalancerOptions") + if err != nil { + return + } + + pathSegments := []string{"v1", "zones", "load_balancers"} + pathParameters := []string{*globalLoadBalancer.Crn, *globalLoadBalancer.ZoneIdentifier} + + builder := core.NewRequestBuilder(core.POST) + _, err = builder.ConstructHTTPURL(globalLoadBalancer.Service.Options.URL, pathSegments, pathParameters) + if err != nil { + return + } + + for headerName, headerValue := range createLoadBalancerOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("global_load_balancer", "V1", "CreateLoadBalancer") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + builder.AddHeader("Content-Type", "application/json") + + body := make(map[string]interface{}) + if createLoadBalancerOptions.Name != nil { + body["name"] = createLoadBalancerOptions.Name + } + if createLoadBalancerOptions.FallbackPool != nil { + body["fallback_pool"] = createLoadBalancerOptions.FallbackPool + } + if createLoadBalancerOptions.DefaultPools != nil { + body["default_pools"] = createLoadBalancerOptions.DefaultPools + } + if createLoadBalancerOptions.Description != nil { + body["description"] = createLoadBalancerOptions.Description + } + if createLoadBalancerOptions.TTL != nil { + body["ttl"] = createLoadBalancerOptions.TTL + } + if createLoadBalancerOptions.RegionPools != nil { + body["region_pools"] = createLoadBalancerOptions.RegionPools + } + if createLoadBalancerOptions.PopPools != nil { + body["pop_pools"] = createLoadBalancerOptions.PopPools + } + if createLoadBalancerOptions.Proxied != nil { + body["proxied"] = createLoadBalancerOptions.Proxied + } + if createLoadBalancerOptions.Enabled != nil { + body["enabled"] = createLoadBalancerOptions.Enabled + } + if createLoadBalancerOptions.SessionAffinity != nil { + body["session_affinity"] = createLoadBalancerOptions.SessionAffinity + } + if createLoadBalancerOptions.SteeringPolicy != nil { + body["steering_policy"] = createLoadBalancerOptions.SteeringPolicy + } + _, err = builder.SetBodyContentJSON(body) + if err != nil { + return + } + + request, err := builder.Build() + if err != nil { + return + } + + var rawResponse map[string]json.RawMessage + response, err = globalLoadBalancer.Service.Request(request, &rawResponse) + if err != nil { + return + } + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalLoadBalancersResp) + if err != nil { + return + } + response.Result = result + + return +} + +// EditLoadBalancer : Edit a load balancer +// Edit porperties of an existing load balancer. +func (globalLoadBalancer *GlobalLoadBalancerV1) EditLoadBalancer(editLoadBalancerOptions *EditLoadBalancerOptions) (result *LoadBalancersResp, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(editLoadBalancerOptions, "editLoadBalancerOptions cannot be nil") + if err != nil { + return + } + err = core.ValidateStruct(editLoadBalancerOptions, "editLoadBalancerOptions") + if err != nil { + return + } + + pathSegments := []string{"v1", "zones", "load_balancers"} + pathParameters := []string{*globalLoadBalancer.Crn, *globalLoadBalancer.ZoneIdentifier, *editLoadBalancerOptions.LoadBalancerIdentifier} + + builder := core.NewRequestBuilder(core.PUT) + _, err = builder.ConstructHTTPURL(globalLoadBalancer.Service.Options.URL, pathSegments, pathParameters) + if err != nil { + return + } + + for headerName, headerValue := range editLoadBalancerOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("global_load_balancer", "V1", "EditLoadBalancer") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + builder.AddHeader("Content-Type", "application/json") + + body := make(map[string]interface{}) + if editLoadBalancerOptions.Name != nil { + body["name"] = editLoadBalancerOptions.Name + } + if editLoadBalancerOptions.FallbackPool != nil { + body["fallback_pool"] = editLoadBalancerOptions.FallbackPool + } + if editLoadBalancerOptions.DefaultPools != nil { + body["default_pools"] = editLoadBalancerOptions.DefaultPools + } + if editLoadBalancerOptions.Description != nil { + body["description"] = editLoadBalancerOptions.Description + } + if editLoadBalancerOptions.TTL != nil { + body["ttl"] = editLoadBalancerOptions.TTL + } + if editLoadBalancerOptions.RegionPools != nil { + body["region_pools"] = editLoadBalancerOptions.RegionPools + } + if editLoadBalancerOptions.PopPools != nil { + body["pop_pools"] = editLoadBalancerOptions.PopPools + } + if editLoadBalancerOptions.Proxied != nil { + body["proxied"] = editLoadBalancerOptions.Proxied + } + if editLoadBalancerOptions.Enabled != nil { + body["enabled"] = editLoadBalancerOptions.Enabled + } + if editLoadBalancerOptions.SessionAffinity != nil { + body["session_affinity"] = editLoadBalancerOptions.SessionAffinity + } + if editLoadBalancerOptions.SteeringPolicy != nil { + body["steering_policy"] = editLoadBalancerOptions.SteeringPolicy + } + _, err = builder.SetBodyContentJSON(body) + if err != nil { + return + } + + request, err := builder.Build() + if err != nil { + return + } + + var rawResponse map[string]json.RawMessage + response, err = globalLoadBalancer.Service.Request(request, &rawResponse) + if err != nil { + return + } + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalLoadBalancersResp) + if err != nil { + return + } + response.Result = result + + return +} + +// DeleteLoadBalancer : Delete a load balancer +// Delete a load balancer. +func (globalLoadBalancer *GlobalLoadBalancerV1) DeleteLoadBalancer(deleteLoadBalancerOptions *DeleteLoadBalancerOptions) (result *DeleteLoadBalancersResp, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(deleteLoadBalancerOptions, "deleteLoadBalancerOptions cannot be nil") + if err != nil { + return + } + err = core.ValidateStruct(deleteLoadBalancerOptions, "deleteLoadBalancerOptions") + if err != nil { + return + } + + pathSegments := []string{"v1", "zones", "load_balancers"} + pathParameters := []string{*globalLoadBalancer.Crn, *globalLoadBalancer.ZoneIdentifier, *deleteLoadBalancerOptions.LoadBalancerIdentifier} + + builder := core.NewRequestBuilder(core.DELETE) + _, err = builder.ConstructHTTPURL(globalLoadBalancer.Service.Options.URL, pathSegments, pathParameters) + if err != nil { + return + } + + for headerName, headerValue := range deleteLoadBalancerOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("global_load_balancer", "V1", "DeleteLoadBalancer") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + + request, err := builder.Build() + if err != nil { + return + } + + var rawResponse map[string]json.RawMessage + response, err = globalLoadBalancer.Service.Request(request, &rawResponse) + if err != nil { + return + } + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalDeleteLoadBalancersResp) + if err != nil { + return + } + response.Result = result + + return +} + +// GetLoadBalancerSettings : Get a load balancer +// For a given zone identifier and load balancer id, get the load balancer settings. +func (globalLoadBalancer *GlobalLoadBalancerV1) GetLoadBalancerSettings(getLoadBalancerSettingsOptions *GetLoadBalancerSettingsOptions) (result *LoadBalancersResp, response *core.DetailedResponse, err error) { + err = core.ValidateNotNil(getLoadBalancerSettingsOptions, "getLoadBalancerSettingsOptions cannot be nil") + if err != nil { + return + } + err = core.ValidateStruct(getLoadBalancerSettingsOptions, "getLoadBalancerSettingsOptions") + if err != nil { + return + } + + pathSegments := []string{"v1", "zones", "load_balancers"} + pathParameters := []string{*globalLoadBalancer.Crn, *globalLoadBalancer.ZoneIdentifier, *getLoadBalancerSettingsOptions.LoadBalancerIdentifier} + + builder := core.NewRequestBuilder(core.GET) + _, err = builder.ConstructHTTPURL(globalLoadBalancer.Service.Options.URL, pathSegments, pathParameters) + if err != nil { + return + } + + for headerName, headerValue := range getLoadBalancerSettingsOptions.Headers { + builder.AddHeader(headerName, headerValue) + } + + sdkHeaders := common.GetSdkHeaders("global_load_balancer", "V1", "GetLoadBalancerSettings") + for headerName, headerValue := range sdkHeaders { + builder.AddHeader(headerName, headerValue) + } + builder.AddHeader("Accept", "application/json") + + request, err := builder.Build() + if err != nil { + return + } + + var rawResponse map[string]json.RawMessage + response, err = globalLoadBalancer.Service.Request(request, &rawResponse) + if err != nil { + return + } + err = core.UnmarshalModel(rawResponse, "", &result, UnmarshalLoadBalancersResp) + if err != nil { + return + } + response.Result = result + + return +} + +// CreateLoadBalancerOptions : The CreateLoadBalancer options. +type CreateLoadBalancerOptions struct { + // name. + Name *string `json:"name,omitempty"` + + // fallback pool. + FallbackPool *string `json:"fallback_pool,omitempty"` + + // default pools. + DefaultPools []string `json:"default_pools,omitempty"` + + // desc. + Description *string `json:"description,omitempty"` + + // ttl. + TTL *int64 `json:"ttl,omitempty"` + + // region pools. + RegionPools interface{} `json:"region_pools,omitempty"` + + // pop pools. + PopPools interface{} `json:"pop_pools,omitempty"` + + // proxied. + Proxied *bool `json:"proxied,omitempty"` + + // enabled/disabled. + Enabled *bool `json:"enabled,omitempty"` + + // session affinity. + SessionAffinity *string `json:"session_affinity,omitempty"` + + // steering policy. + SteeringPolicy *string `json:"steering_policy,omitempty"` + + // Allows users to set headers on API requests + Headers map[string]string +} + +// Constants associated with the CreateLoadBalancerOptions.SessionAffinity property. +// session affinity. +const ( + CreateLoadBalancerOptions_SessionAffinity_Cookie = "cookie" + CreateLoadBalancerOptions_SessionAffinity_IpCookie = "ip_cookie" + CreateLoadBalancerOptions_SessionAffinity_None = "none" +) + +// Constants associated with the CreateLoadBalancerOptions.SteeringPolicy property. +// steering policy. +const ( + CreateLoadBalancerOptions_SteeringPolicy_DynamicLatency = "dynamic_latency" + CreateLoadBalancerOptions_SteeringPolicy_Geo = "geo" + CreateLoadBalancerOptions_SteeringPolicy_Off = "off" + CreateLoadBalancerOptions_SteeringPolicy_Random = "random" +) + +// NewCreateLoadBalancerOptions : Instantiate CreateLoadBalancerOptions +func (*GlobalLoadBalancerV1) NewCreateLoadBalancerOptions() *CreateLoadBalancerOptions { + return &CreateLoadBalancerOptions{} +} + +// SetName : Allow user to set Name +func (options *CreateLoadBalancerOptions) SetName(name string) *CreateLoadBalancerOptions { + options.Name = core.StringPtr(name) + return options +} + +// SetFallbackPool : Allow user to set FallbackPool +func (options *CreateLoadBalancerOptions) SetFallbackPool(fallbackPool string) *CreateLoadBalancerOptions { + options.FallbackPool = core.StringPtr(fallbackPool) + return options +} + +// SetDefaultPools : Allow user to set DefaultPools +func (options *CreateLoadBalancerOptions) SetDefaultPools(defaultPools []string) *CreateLoadBalancerOptions { + options.DefaultPools = defaultPools + return options +} + +// SetDescription : Allow user to set Description +func (options *CreateLoadBalancerOptions) SetDescription(description string) *CreateLoadBalancerOptions { + options.Description = core.StringPtr(description) + return options +} + +// SetTTL : Allow user to set TTL +func (options *CreateLoadBalancerOptions) SetTTL(ttl int64) *CreateLoadBalancerOptions { + options.TTL = core.Int64Ptr(ttl) + return options +} + +// SetRegionPools : Allow user to set RegionPools +func (options *CreateLoadBalancerOptions) SetRegionPools(regionPools interface{}) *CreateLoadBalancerOptions { + options.RegionPools = regionPools + return options +} + +// SetPopPools : Allow user to set PopPools +func (options *CreateLoadBalancerOptions) SetPopPools(popPools interface{}) *CreateLoadBalancerOptions { + options.PopPools = popPools + return options +} + +// SetProxied : Allow user to set Proxied +func (options *CreateLoadBalancerOptions) SetProxied(proxied bool) *CreateLoadBalancerOptions { + options.Proxied = core.BoolPtr(proxied) + return options +} + +// SetEnabled : Allow user to set Enabled +func (options *CreateLoadBalancerOptions) SetEnabled(enabled bool) *CreateLoadBalancerOptions { + options.Enabled = core.BoolPtr(enabled) + return options +} + +// SetSessionAffinity : Allow user to set SessionAffinity +func (options *CreateLoadBalancerOptions) SetSessionAffinity(sessionAffinity string) *CreateLoadBalancerOptions { + options.SessionAffinity = core.StringPtr(sessionAffinity) + return options +} + +// SetSteeringPolicy : Allow user to set SteeringPolicy +func (options *CreateLoadBalancerOptions) SetSteeringPolicy(steeringPolicy string) *CreateLoadBalancerOptions { + options.SteeringPolicy = core.StringPtr(steeringPolicy) + return options +} + +// SetHeaders : Allow user to set Headers +func (options *CreateLoadBalancerOptions) SetHeaders(param map[string]string) *CreateLoadBalancerOptions { + options.Headers = param + return options +} + +// DeleteLoadBalancerOptions : The DeleteLoadBalancer options. +type DeleteLoadBalancerOptions struct { + // load balancer identifier. + LoadBalancerIdentifier *string `json:"load_balancer_identifier" validate:"required"` + + // Allows users to set headers on API requests + Headers map[string]string +} + +// NewDeleteLoadBalancerOptions : Instantiate DeleteLoadBalancerOptions +func (*GlobalLoadBalancerV1) NewDeleteLoadBalancerOptions(loadBalancerIdentifier string) *DeleteLoadBalancerOptions { + return &DeleteLoadBalancerOptions{ + LoadBalancerIdentifier: core.StringPtr(loadBalancerIdentifier), + } +} + +// SetLoadBalancerIdentifier : Allow user to set LoadBalancerIdentifier +func (options *DeleteLoadBalancerOptions) SetLoadBalancerIdentifier(loadBalancerIdentifier string) *DeleteLoadBalancerOptions { + options.LoadBalancerIdentifier = core.StringPtr(loadBalancerIdentifier) + return options +} + +// SetHeaders : Allow user to set Headers +func (options *DeleteLoadBalancerOptions) SetHeaders(param map[string]string) *DeleteLoadBalancerOptions { + options.Headers = param + return options +} + +// DeleteLoadBalancersRespResult : result. +type DeleteLoadBalancersRespResult struct { + // identifier. + ID *string `json:"id" validate:"required"` +} + + +// UnmarshalDeleteLoadBalancersRespResult unmarshals an instance of DeleteLoadBalancersRespResult from the specified map of raw messages. +func UnmarshalDeleteLoadBalancersRespResult(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(DeleteLoadBalancersRespResult) + err = core.UnmarshalPrimitive(m, "id", &obj.ID) + if err != nil { + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// EditLoadBalancerOptions : The EditLoadBalancer options. +type EditLoadBalancerOptions struct { + // load balancer identifier. + LoadBalancerIdentifier *string `json:"load_balancer_identifier" validate:"required"` + + // name. + Name *string `json:"name,omitempty"` + + // fallback pool. + FallbackPool *string `json:"fallback_pool,omitempty"` + + // default pools. + DefaultPools []string `json:"default_pools,omitempty"` + + // desc. + Description *string `json:"description,omitempty"` + + // ttl. + TTL *int64 `json:"ttl,omitempty"` + + // region pools. + RegionPools interface{} `json:"region_pools,omitempty"` + + // pop pools. + PopPools interface{} `json:"pop_pools,omitempty"` + + // proxied. + Proxied *bool `json:"proxied,omitempty"` + + // enabled/disabled. + Enabled *bool `json:"enabled,omitempty"` + + // session affinity. + SessionAffinity *string `json:"session_affinity,omitempty"` + + // steering policy. + SteeringPolicy *string `json:"steering_policy,omitempty"` + + // Allows users to set headers on API requests + Headers map[string]string +} + +// Constants associated with the EditLoadBalancerOptions.SessionAffinity property. +// session affinity. +const ( + EditLoadBalancerOptions_SessionAffinity_Cookie = "cookie" + EditLoadBalancerOptions_SessionAffinity_IpCookie = "ip_cookie" + EditLoadBalancerOptions_SessionAffinity_None = "none" +) + +// Constants associated with the EditLoadBalancerOptions.SteeringPolicy property. +// steering policy. +const ( + EditLoadBalancerOptions_SteeringPolicy_DynamicLatency = "dynamic_latency" + EditLoadBalancerOptions_SteeringPolicy_Geo = "geo" + EditLoadBalancerOptions_SteeringPolicy_Off = "off" + EditLoadBalancerOptions_SteeringPolicy_Random = "random" +) + +// NewEditLoadBalancerOptions : Instantiate EditLoadBalancerOptions +func (*GlobalLoadBalancerV1) NewEditLoadBalancerOptions(loadBalancerIdentifier string) *EditLoadBalancerOptions { + return &EditLoadBalancerOptions{ + LoadBalancerIdentifier: core.StringPtr(loadBalancerIdentifier), + } +} + +// SetLoadBalancerIdentifier : Allow user to set LoadBalancerIdentifier +func (options *EditLoadBalancerOptions) SetLoadBalancerIdentifier(loadBalancerIdentifier string) *EditLoadBalancerOptions { + options.LoadBalancerIdentifier = core.StringPtr(loadBalancerIdentifier) + return options +} + +// SetName : Allow user to set Name +func (options *EditLoadBalancerOptions) SetName(name string) *EditLoadBalancerOptions { + options.Name = core.StringPtr(name) + return options +} + +// SetFallbackPool : Allow user to set FallbackPool +func (options *EditLoadBalancerOptions) SetFallbackPool(fallbackPool string) *EditLoadBalancerOptions { + options.FallbackPool = core.StringPtr(fallbackPool) + return options +} + +// SetDefaultPools : Allow user to set DefaultPools +func (options *EditLoadBalancerOptions) SetDefaultPools(defaultPools []string) *EditLoadBalancerOptions { + options.DefaultPools = defaultPools + return options +} + +// SetDescription : Allow user to set Description +func (options *EditLoadBalancerOptions) SetDescription(description string) *EditLoadBalancerOptions { + options.Description = core.StringPtr(description) + return options +} + +// SetTTL : Allow user to set TTL +func (options *EditLoadBalancerOptions) SetTTL(ttl int64) *EditLoadBalancerOptions { + options.TTL = core.Int64Ptr(ttl) + return options +} + +// SetRegionPools : Allow user to set RegionPools +func (options *EditLoadBalancerOptions) SetRegionPools(regionPools interface{}) *EditLoadBalancerOptions { + options.RegionPools = regionPools + return options +} + +// SetPopPools : Allow user to set PopPools +func (options *EditLoadBalancerOptions) SetPopPools(popPools interface{}) *EditLoadBalancerOptions { + options.PopPools = popPools + return options +} + +// SetProxied : Allow user to set Proxied +func (options *EditLoadBalancerOptions) SetProxied(proxied bool) *EditLoadBalancerOptions { + options.Proxied = core.BoolPtr(proxied) + return options +} + +// SetEnabled : Allow user to set Enabled +func (options *EditLoadBalancerOptions) SetEnabled(enabled bool) *EditLoadBalancerOptions { + options.Enabled = core.BoolPtr(enabled) + return options +} + +// SetSessionAffinity : Allow user to set SessionAffinity +func (options *EditLoadBalancerOptions) SetSessionAffinity(sessionAffinity string) *EditLoadBalancerOptions { + options.SessionAffinity = core.StringPtr(sessionAffinity) + return options +} + +// SetSteeringPolicy : Allow user to set SteeringPolicy +func (options *EditLoadBalancerOptions) SetSteeringPolicy(steeringPolicy string) *EditLoadBalancerOptions { + options.SteeringPolicy = core.StringPtr(steeringPolicy) + return options +} + +// SetHeaders : Allow user to set Headers +func (options *EditLoadBalancerOptions) SetHeaders(param map[string]string) *EditLoadBalancerOptions { + options.Headers = param + return options +} + +// GetLoadBalancerSettingsOptions : The GetLoadBalancerSettings options. +type GetLoadBalancerSettingsOptions struct { + // load balancer identifier. + LoadBalancerIdentifier *string `json:"load_balancer_identifier" validate:"required"` + + // Allows users to set headers on API requests + Headers map[string]string +} + +// NewGetLoadBalancerSettingsOptions : Instantiate GetLoadBalancerSettingsOptions +func (*GlobalLoadBalancerV1) NewGetLoadBalancerSettingsOptions(loadBalancerIdentifier string) *GetLoadBalancerSettingsOptions { + return &GetLoadBalancerSettingsOptions{ + LoadBalancerIdentifier: core.StringPtr(loadBalancerIdentifier), + } +} + +// SetLoadBalancerIdentifier : Allow user to set LoadBalancerIdentifier +func (options *GetLoadBalancerSettingsOptions) SetLoadBalancerIdentifier(loadBalancerIdentifier string) *GetLoadBalancerSettingsOptions { + options.LoadBalancerIdentifier = core.StringPtr(loadBalancerIdentifier) + return options +} + +// SetHeaders : Allow user to set Headers +func (options *GetLoadBalancerSettingsOptions) SetHeaders(param map[string]string) *GetLoadBalancerSettingsOptions { + options.Headers = param + return options +} + +// ListAllLoadBalancersOptions : The ListAllLoadBalancers options. +type ListAllLoadBalancersOptions struct { + + // Allows users to set headers on API requests + Headers map[string]string +} + +// NewListAllLoadBalancersOptions : Instantiate ListAllLoadBalancersOptions +func (*GlobalLoadBalancerV1) NewListAllLoadBalancersOptions() *ListAllLoadBalancersOptions { + return &ListAllLoadBalancersOptions{} +} + +// SetHeaders : Allow user to set Headers +func (options *ListAllLoadBalancersOptions) SetHeaders(param map[string]string) *ListAllLoadBalancersOptions { + options.Headers = param + return options +} + +// DeleteLoadBalancersResp : delete load balancers response. +type DeleteLoadBalancersResp struct { + // success respose. + Success *bool `json:"success" validate:"required"` + + // errors. + Errors [][]string `json:"errors" validate:"required"` + + // messages. + Messages [][]string `json:"messages" validate:"required"` + + // result. + Result *DeleteLoadBalancersRespResult `json:"result" validate:"required"` +} + + +// UnmarshalDeleteLoadBalancersResp unmarshals an instance of DeleteLoadBalancersResp from the specified map of raw messages. +func UnmarshalDeleteLoadBalancersResp(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(DeleteLoadBalancersResp) + err = core.UnmarshalPrimitive(m, "success", &obj.Success) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "errors", &obj.Errors) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "messages", &obj.Messages) + if err != nil { + return + } + err = core.UnmarshalModel(m, "result", &obj.Result, UnmarshalDeleteLoadBalancersRespResult) + if err != nil { + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// ListLoadBalancersResp : load balancer list response. +type ListLoadBalancersResp struct { + // success response. + Success *bool `json:"success" validate:"required"` + + // errors. + Errors [][]string `json:"errors" validate:"required"` + + // messages. + Messages [][]string `json:"messages" validate:"required"` + + // result. + Result []LoadBalancerPack `json:"result" validate:"required"` + + // result information. + ResultInfo *ResultInfo `json:"result_info" validate:"required"` +} + + +// UnmarshalListLoadBalancersResp unmarshals an instance of ListLoadBalancersResp from the specified map of raw messages. +func UnmarshalListLoadBalancersResp(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(ListLoadBalancersResp) + err = core.UnmarshalPrimitive(m, "success", &obj.Success) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "errors", &obj.Errors) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "messages", &obj.Messages) + if err != nil { + return + } + err = core.UnmarshalModel(m, "result", &obj.Result, UnmarshalLoadBalancerPack) + if err != nil { + return + } + err = core.UnmarshalModel(m, "result_info", &obj.ResultInfo, UnmarshalResultInfo) + if err != nil { + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// LoadBalancerPack : loadbalancer pack. +type LoadBalancerPack struct { + // identifier. + ID *string `json:"id" validate:"required"` + + // created date. + CreatedOn *string `json:"created_on" validate:"required"` + + // modified date. + ModifiedOn *string `json:"modified_on" validate:"required"` + + // desc. + Description *string `json:"description" validate:"required"` + + // name. + Name *string `json:"name" validate:"required"` + + // ttl. + TTL *int64 `json:"ttl" validate:"required"` + + // fallback pool. + FallbackPool *string `json:"fallback_pool" validate:"required"` + + // default pools. + DefaultPools []string `json:"default_pools" validate:"required"` + + // region pools. + RegionPools interface{} `json:"region_pools" validate:"required"` + + // pop pools. + PopPools interface{} `json:"pop_pools" validate:"required"` + + // proxied. + Proxied *bool `json:"proxied" validate:"required"` + + // enabled/disabled. + Enabled *bool `json:"enabled" validate:"required"` + + // session affinity. + SessionAffinity *string `json:"session_affinity" validate:"required"` + + // steering policy. + SteeringPolicy *string `json:"steering_policy" validate:"required"` +} + +// Constants associated with the LoadBalancerPack.SessionAffinity property. +// session affinity. +const ( + LoadBalancerPack_SessionAffinity_Cookie = "cookie" + LoadBalancerPack_SessionAffinity_IpCookie = "ip_cookie" + LoadBalancerPack_SessionAffinity_None = "none" +) + +// Constants associated with the LoadBalancerPack.SteeringPolicy property. +// steering policy. +const ( + LoadBalancerPack_SteeringPolicy_DynamicLatency = "dynamic_latency" + LoadBalancerPack_SteeringPolicy_Geo = "geo" + LoadBalancerPack_SteeringPolicy_Off = "off" + LoadBalancerPack_SteeringPolicy_Random = "random" +) + + +// UnmarshalLoadBalancerPack unmarshals an instance of LoadBalancerPack from the specified map of raw messages. +func UnmarshalLoadBalancerPack(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(LoadBalancerPack) + err = core.UnmarshalPrimitive(m, "id", &obj.ID) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "created_on", &obj.CreatedOn) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "modified_on", &obj.ModifiedOn) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "description", &obj.Description) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "name", &obj.Name) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "ttl", &obj.TTL) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "fallback_pool", &obj.FallbackPool) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "default_pools", &obj.DefaultPools) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "region_pools", &obj.RegionPools) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "pop_pools", &obj.PopPools) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "proxied", &obj.Proxied) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "enabled", &obj.Enabled) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "session_affinity", &obj.SessionAffinity) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "steering_policy", &obj.SteeringPolicy) + if err != nil { + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// LoadBalancersResp : load balancer response. +type LoadBalancersResp struct { + // success response. + Success *bool `json:"success" validate:"required"` + + // errors. + Errors [][]string `json:"errors" validate:"required"` + + // messages. + Messages [][]string `json:"messages" validate:"required"` + + // loadbalancer pack. + Result *LoadBalancerPack `json:"result" validate:"required"` +} + + +// UnmarshalLoadBalancersResp unmarshals an instance of LoadBalancersResp from the specified map of raw messages. +func UnmarshalLoadBalancersResp(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(LoadBalancersResp) + err = core.UnmarshalPrimitive(m, "success", &obj.Success) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "errors", &obj.Errors) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "messages", &obj.Messages) + if err != nil { + return + } + err = core.UnmarshalModel(m, "result", &obj.Result, UnmarshalLoadBalancerPack) + if err != nil { + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} + +// ResultInfo : result information. +type ResultInfo struct { + // page number. + Page *int64 `json:"page" validate:"required"` + + // per page count. + PerPage *int64 `json:"per_page" validate:"required"` + + // count. + Count *int64 `json:"count" validate:"required"` + + // total count. + TotalCount *int64 `json:"total_count" validate:"required"` +} + + +// UnmarshalResultInfo unmarshals an instance of ResultInfo from the specified map of raw messages. +func UnmarshalResultInfo(m map[string]json.RawMessage, result interface{}) (err error) { + obj := new(ResultInfo) + err = core.UnmarshalPrimitive(m, "page", &obj.Page) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "per_page", &obj.PerPage) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "count", &obj.Count) + if err != nil { + return + } + err = core.UnmarshalPrimitive(m, "total_count", &obj.TotalCount) + if err != nil { + return + } + reflect.ValueOf(result).Elem().Set(reflect.ValueOf(obj)) + return +} diff --git a/vendor/modules.txt b/vendor/modules.txt index d44dbedc02..c3ac5f7578 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -134,6 +134,7 @@ github.com/IBM/networking-go-sdk/dnsrecordsv1 github.com/IBM/networking-go-sdk/edgefunctionsapiv1 github.com/IBM/networking-go-sdk/globalloadbalancermonitorv1 github.com/IBM/networking-go-sdk/globalloadbalancerpoolsv0 +github.com/IBM/networking-go-sdk/globalloadbalancerv1 github.com/IBM/networking-go-sdk/sslcertificateapiv1 github.com/IBM/networking-go-sdk/transitgatewayapisv1 github.com/IBM/networking-go-sdk/zoneratelimitsv1 diff --git a/website/docs/d/cis_global_load_balancers.html.markdown b/website/docs/d/cis_global_load_balancers.html.markdown new file mode 100644 index 0000000000..2d84527022 --- /dev/null +++ b/website/docs/d/cis_global_load_balancers.html.markdown @@ -0,0 +1,51 @@ +--- +layout: "ibm" +page_title: "IBM: ibm_cis_global_load_balancers" +sidebar_current: "docs-ibm-datasources-cis-global_load_balancers" +description: |- +Manages IBM Cloud Internet Services Global Load Balancers resource. +--- + +# ibm_cis_global_load_balancers + +Import the details of an existing IBM Cloud Internet Service global load balancers as a read-only data source. You can then reference the fields of the data source in other resources within the same configuration using interpolation syntax. + +## Example Usage + +```hcl + +data "ibm_cis_global_load_balancers" "test" { + cis_id = var.cis_crn + domain_id = var.zone_id +} + +``` + +## Argument Reference + +The following arguments are supported: + +- `cis_id` - (Required, string) The resource crn id of the CIS on which zones were created. +- `domain_id` - (Required, string) The ID of the domain to retrive the load balancers from. + +## Attribute Reference + +The following attributes are exported: + +- `id` - Load balancer ID, domain id and CRN. Ex. id:domain-id:crn +- `glb_id` - Load balancer ID. +- `name` - The DNS name to associate with the load balancer. This can be a hostname, e.g. "www" or the fully qualified name "www.example.com". "example.com" is also accepted. +- `fallback_pool_id` - The pool ID to use when all other pools are detected as unhealthy. +- `default_pool_ids` - A list of pool IDs ordered by their failover priority. Used whenever region/pop pools are not defined. +- `description` - Free text description. +- `proxied` - Whether the hostname gets ibm's origin protection. Defaults to `false`. +- `session_affinity` - Associates all requests coming from an end-user with a single origin. ibm will set a cookie on the initial response to the client, such that consequent requests with the cookie in the request will go to the same origin, so long as it is available. +- `ttl` - Time to live (TTL) of the DNS entry for the IP address returned by this load balancer. +- `enabled` - Indicates if the load balancer is enabled or not. + Region and pop pools are not currently implemented in this version of the provider. +- `region_pools` - A set containing mappings of region/country codes to a list of pool IDs (ordered by their failover priority) for the given region. + - `region` - A region code. Multiple entries should not be specified with the same region. + - `pool_ids` - A list of pool IDs in failover priority to use in the given region. +- `pop_pools` - A set containing mappings of IBM Point-of-Presence (PoP) identifiers to a list of pool IDs (ordered by their failover priority) for the PoP (datacenter). This feature is only available to enterprise customers. + - `pop` - A 3-letter code for the Point-of-Presence.Multiple entries should not be specified with the same PoP. + - `pool_ids` - A list of pool IDs in failover priority to use for traffic reaching the given PoP. diff --git a/website/docs/r/cis_global_load_balancer.html.markdown b/website/docs/r/cis_global_load_balancer.html.markdown index 85b9b768a9..63279e2bf2 100644 --- a/website/docs/r/cis_global_load_balancer.html.markdown +++ b/website/docs/r/cis_global_load_balancer.html.markdown @@ -8,7 +8,7 @@ description: |- # ibm_cis_global_load_balancer -Provides a IBM CIS Global Load Balancer resource. This sits in front of a number of defined pools of origins, directs traffic to available origins and provides various options for geographically-aware load balancing. This resource is associated with an IBM Cloud Internet Services instance, a CIS Domain resource and CIS Origin pool resources. +Provides a IBM CIS Global Load Balancer resource. This sits in front of a number of defined pools of origins, directs traffic to available origins and provides various options for geographically-aware load balancing. This resource is associated with an IBM Cloud Internet Services instance, a CIS Domain resource and CIS Origin pool resources. ## Example Usage @@ -29,7 +29,7 @@ resource "ibm_cis_global_load_balancer" "example" { region="WEU" pool_ids = [ibm_cis_origin_pool.example.id] } - pop_pools{ + pop_pools{ pop="LAX" pool_ids = [ibm_cis_origin_pool.example.id] } @@ -50,47 +50,47 @@ resource "ibm_cis_origin_pool" "example" { The following arguments are supported: -* `cis_id` - (Required,string) The ID of the CIS service instance -* `domain_id` - (Required,string) The ID of the domain to add the load balancer to. -* `name` - (Required,string) The DNS name to associate with the load balancer. This can be a hostname, e.g. "www" or the fully qualified name "www.example.com". "example.com" is also accepted. -* `fallback_pool_id` - (Required,string) The pool ID to use when all other pools are detected as unhealthy. -* `default_pool_ids` - (Required,map) A list of pool IDs ordered by their failover priority. Used whenever region/pop pools are not defined. -* `description` - (Optional,string) Free text description. -* `proxied` - (Optional,bool) Whether the hostname gets ibm's origin protection. Defaults to `false`. -* `session_affinity` - (Optional,string) Associates all requests coming from an end-user with a single origin. ibm will set a cookie on the initial response to the client, such that consequent requests with the cookie in the request will go to the same origin, so long as it is available. -* `ttl` - (Optional,int) Time to live (TTL) of the DNS entry for the IP address returned by this load balancer. -* `enabled` - (Optional,bool) Indicates if the load balancer is enabled or not. -Region and pop pools are not currently implemented in this version of the provider. -* `region_pools` - (Optional,set) A set containing mappings of region/country codes to a list of pool IDs (ordered by their failover priority) for the given region. - * `region` - (Required,string) A region code. Multiple entries should not be specified with the same region. - * `pool_ids` - (Required,string) A list of pool IDs in failover priority to use in the given region. -* `pop_pools` - (Optional,set) A set containing mappings of IBM Point-of-Presence (PoP) identifiers to a list of pool IDs (ordered by their failover priority) for the PoP (datacenter). This feature is only available to enterprise customers. - * `pop` - (Required,string) A 3-letter code for the Point-of-Presence.Multiple entries should not be specified with the same PoP. - * `pool_ids` - (Required,string) A list of pool IDs in failover priority to use for traffic reaching the given PoP. +- `cis_id` - (Required,string) The ID of the CIS service instance +- `domain_id` - (Required,string) The ID of the domain to add the load balancer to. +- `name` - (Required,string) The DNS name to associate with the load balancer. This can be a hostname, e.g. "www" or the fully qualified name "www.example.com". "example.com" is also accepted. +- `fallback_pool_id` - (Required,string) The pool ID to use when all other pools are detected as unhealthy. +- `default_pool_ids` - (Required,map) A list of pool IDs ordered by their failover priority. Used whenever region/pop pools are not defined. +- `description` - (Optional,string) Free text description. +- `proxied` - (Optional,bool) Whether the hostname gets ibm's origin protection. Defaults to `false`. +- `session_affinity` - (Optional,string) Associates all requests coming from an end-user with a single origin. ibm will set a cookie on the initial response to the client, such that consequent requests with the cookie in the request will go to the same origin, so long as it is available. +- `ttl` - (Optional,int) Time to live (TTL) of the DNS entry for the IP address returned by this load balancer. +- `enabled` - (Optional,bool) Indicates if the load balancer is enabled or not. + Region and pop pools are not currently implemented in this version of the provider. +- `region_pools` - (Optional,set) A set containing mappings of region/country codes to a list of pool IDs (ordered by their failover priority) for the given region. + - `region` - (Required,string) A region code. Multiple entries should not be specified with the same region. + - `pool_ids` - (Required,string) A list of pool IDs in failover priority to use in the given region. +- `pop_pools` - (Optional,set) A set containing mappings of IBM Point-of-Presence (PoP) identifiers to a list of pool IDs (ordered by their failover priority) for the PoP (datacenter). This feature is only available to enterprise customers. + - `pop` - (Required,string) A 3-letter code for the Point-of-Presence.Multiple entries should not be specified with the same PoP. + - `pool_ids` - (Required,string) A list of pool IDs in failover priority to use for traffic reaching the given PoP. ## Attributes Reference The following attributes are exported: -* `id` - Unique identifier for the global load balancer. -`name` - The fully qualified name of the load balancer, e.g. "www.example.com". -* `created_on` - The RFC3339 timestamp of when the load balancer was created. -* `modified_on` - The RFC3339 timestamp of when the load balancer was last modified. +- `id` - Unique identifier for the global load balancer. Ex. :: +- `glb_id` - Unique identifier for the global load balancer. +- `created_on` - The RFC3339 timestamp of when the load balancer was created. +- `modified_on` - The RFC3339 timestamp of when the load balancer was last modified. ## Import -The `ibm_cis_global_load_balancer` resource can be imported using the `id`. The ID is formed from the `Global Load Balancer ID`, the `Domain ID` of the domain and the `CRN` (Cloud Resource Name) concatentated usinga `:` character. +The `ibm_cis_global_load_balancer` resource can be imported using the `id`. The ID is formed from the `Global Load Balancer ID`, the `Domain ID` of the domain and the `CRN` (Cloud Resource Name) concatentated usinga `:` character. -The Domain ID and CRN will be located on the **Overview** page of the Internet Services instance under the **Domain** heading of the UI, or via using the `bx cis` CLI commands. +The Domain ID and CRN will be located on the **Overview** page of the Internet Services instance under the **Domain** heading of the UI, or via using the `ibmcloud cis` CLI commands. -* **Domain ID** is a 32 digit character string of the form: `9caf68812ae9b3f0377fdf986751a78f` +- **Domain ID** is a 32 digit character string of the form: `9caf68812ae9b3f0377fdf986751a78f` -* **CRN** is a 120 digit character string of the form: `crn:v1:bluemix:public:internet-svcs:global:a/4ea1882a2d3401ed1e459979941966ea:31fa970d-51d0-4b05-893e-251cba75a7b3::` - -* **Glb ID** is a 32 digit character string of the form: `57d96f0da6ed76251b475971b097205c`. The id of an existing GLB is not avaiable via the UI. It can be retrieved programatically via the CIS API or via the CLI using the CIS command to list the defined GLBs: `bx cis glbs ` +- **CRN** is a 120 digit character string of the form: `crn:v1:bluemix:public:internet-svcs:global:a/4ea1882a2d3401ed1e459979941966ea:31fa970d-51d0-4b05-893e-251cba75a7b3::` +- **Glb ID** is a 32 digit character string of the form: `57d96f0da6ed76251b475971b097205c`. The id of an existing GLB is not avaiable via the UI. It can be retrieved programatically via the CIS API or via the CLI using the CIS command to list the defined GLBs: `ibmcloud cis glbs ` ``` $ terraform import ibm_cis_global_load_balancer.myorg :: $ terraform import ibm_cis_domain.myorg 57d96f0da6ed76251b475971b097205c:9caf68812ae9b3f0377fdf986751a78f:crn:v1:bluemix:public:internet-svcs:global:a/4ea1882a2d3401ed1e459979941966ea:31fa970d-51d0-4b05-893e-251cba75a7b3:: +``` diff --git a/website/ibm.erb b/website/ibm.erb index 4a384b19e1..f6b846792f 100644 --- a/website/ibm.erb +++ b/website/ibm.erb @@ -74,6 +74,9 @@ > cis_healthchecks + > + cis_global_load_balancers + > cis_origin_pools