libcloud icon indicating copy to clipboard operation
libcloud copied to clipboard

GKE Cannot get a list of clusters/containers/pods

Open lokeshpkumar opened this issue 5 years ago • 6 comments

Summary

Cannot get a list of GKE (Google Kubernetes Engine) clusters/containers or pods

Detailed Information

As mentioned in the documentation, followed the get_driver API to get the container driver for the GKE provider. But got the below stacktrace.

Traceback (most recent call last):
  File "/home/lkp//list-instances.py", line 146, in <module>
    main(sys.argv[1:])
  File "/home/lkp/list-instances.py", line 51, in main
    list_container_gce()
  File "/home/lkp/list-instances.py", line 37, in list_container_gce
    for cluster in driver.list_containers():
  File "/usr/lib/python2.7/site-packages/libcloud/container/drivers/kubernetes.py", line 163, in list_containers
    ROOT_URL + "v1/pods").object
  File "/usr/lib/python2.7/site-packages/libcloud/container/drivers/gke.py", line 68, in request
    response = super(GKEConnection, self).request(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/libcloud/common/google.py", line 815, in request
    *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/libcloud/common/base.py", line 650, in request
    response = responseCls(**kwargs)
  File "/usr/lib/python2.7/site-packages/libcloud/common/base.py", line 162, in __init__
    self.object = self.parse_body()
  File "/usr/lib/python2.7/site-packages/libcloud/common/google.py", line 278, in parse_body
    raise ResourceNotFoundError(message, self.status, code)
libcloud.common.google.ResourceNotFoundError: u'<!DOCTYPE html>\n<html lang=en>\n  <meta charset=utf-8>\n  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">\n  <title>Error 404 (Not Found)!!1</title>\n  <style>\n    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}\n  </style>\n  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>\n  <p><b>404.</b> <ins>That\u2019s an error.</ins>\n  <p>The requested URL <code>/v1/projects/absolute-point-196613/api/v1/pods</code> was not found on this server.  <ins>That\u2019s all we know.</ins>'

Libcloud version: 2.8.0, 3.0.0-rc1 Python version: 2.7, 3.7 OS: Fedora 30

lokeshpkumar avatar Feb 12 '20 07:02 lokeshpkumar

Thanks for reporting this.

I just fixed this in #1423 recently (that PR still needs some tests, etc. though).

Kami avatar Feb 12 '20 22:02 Kami

The library does not work even when I want to fetch the running containers: Does the above PR fix the list_containers() issue as well, because in the new GKE API I have not seen any API call which will give us list of containers: Please help me understand this.

URL in http module: https://container.googleapis.com/v1/projects/absolute-point-196613/api/v1/pods
Traceback (most recent call last):
  File "/home/lkp/list-instances.py", line 158, in <module>
    main(sys.argv[1:])
  File "/home/lkp/list-instances.py", line 63, in main
    list_container_gce()
  File "/home/lkp/list-instances.py", line 37, in list_container_gce
    for cluster in driver.list_containers():
  File "/usr/lib/python2.7/site-packages/libcloud/container/drivers/kubernetes.py", line 163, in list_containers
    ROOT_URL + "v1/pods").object
  File "/usr/lib/python2.7/site-packages/libcloud/container/drivers/gke.py", line 68, in request
    response = super(GKEConnection, self).request(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/libcloud/common/google.py", line 815, in request
    *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/libcloud/common/base.py", line 650, in request
    response = responseCls(**kwargs)
  File "/usr/lib/python2.7/site-packages/libcloud/common/base.py", line 162, in __init__
    self.object = self.parse_body()
  File "/usr/lib/python2.7/site-packages/libcloud/common/google.py", line 278, in parse_body
    raise ResourceNotFoundError(message, self.status, code)
libcloud.common.google.ResourceNotFoundError: u'<!DOCTYPE html>\n<html lang=en>\n  <meta charset=utf-8>\n  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">\n  <title>Error 404 (Not Found)!!1</title>\n  <style>\n    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}\n  </style>\n  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>\n  <p><b>404.</b> <ins>That\u2019s an error.</ins>\n  <p>The requested URL <code>/v1/projects/absolute-point-196613/api/v1/pods</code> was not found on this server.  <ins>That\u2019s all we know.</ins>'

lokeshpkumar avatar Feb 13 '20 07:02 lokeshpkumar

Correct, GKE doesn't expose those operations through their API.

One option is to connect directly to the API service running on the GKE Kubernetes cluster using regular Kubernetes driver.

Kami avatar Mar 01 '20 11:03 Kami

Thanks for contributing to this issue. As it has been 90 days since the last activity, we are automatically marking is as stale. If this issue is not relevant or applicable anymore (problem has been fixed in a new version or similar), please close the issue or let us know so we can close it. On the contrary, if the issue is still relevant, there is nothing you need to do, but if you have any additional details or context which would help us when working on this issue, please include it as a comment to this issue.

stale[bot] avatar May 30 '20 12:05 stale[bot]

Is there an update on this?

I'm trying the following:

from libcloud.container.types import Provider as ContainerProvider
from libcloud.container.providers import get_driver as get_container_driver
containercls = get_container_driver(ContainerProvider.GKE)
containerdriver = containercls('[email protected]', '/path/to/file/project-key.json', project='cool-project-name')
containerdriver.list_clusters()

Output:

ResourceNotFoundError: '<!DOCTYPE html>\n<html lang=en>\n  <meta charset=utf-8>\n  <meta name=viewport content="initial-scale=1, minimum-scale=1, width=device-width">\n  <title>Error 404 (Not Found)!!1</title>\n  <style>\n    *{margin:0;padding:0}html,code{font:15px/22px arial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto 0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(//www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{border:0}@media screen and (max-width:772px){body{background:none;margin-top:0;max-width:none;padding-right:0}}#logo{background:url(//www.google.com/images/branding/googlelogo/1x/googlelogo_color_150x54dp.png) no-repeat;margin-left:-5px}@media only screen and (min-resolution:192dpi){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat 0% 0%/100% 100%;-moz-border-image:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) 0}}@media only screen and (-webkit-min-device-pixel-ratio:2){#logo{background:url(//www.google.com/images/branding/googlelogo/2x/googlelogo_color_150x54dp.png) no-repeat;-webkit-background-size:100% 100%}}#logo{display:inline-block;height:54px;width:150px}\n  </style>\n  <a href=//www.google.com/><span id=logo aria-label=Google></span></a>\n  <p><b>404.</b> <ins>That’s an error.</ins>\n  <p>The requested URL <code>/v1/projects/cool-project-name/zones/clusters</code> was not found on this server.  <ins>That’s all we know.</ins>'

jhadjar avatar Apr 07 '21 03:04 jhadjar

Thanks for contributing to this issue. As it has been 90 days since the last activity, we are automatically marking is as stale. If this issue is not relevant or applicable anymore (problem has been fixed in a new version or similar), please close the issue or let us know so we can close it. On the contrary, if the issue is still relevant, there is nothing you need to do, but if you have any additional details or context which would help us when working on this issue, please include it as a comment to this issue.

stale[bot] avatar Apr 17 '22 05:04 stale[bot]