Repository: libcloud Updated Branches: refs/heads/trunk 5395ccf83 -> 3139b738a
[google compute] fixing node status Closes #445 Signed-off-by: Eric Johnson <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/3139b738 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/3139b738 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/3139b738 Branch: refs/heads/trunk Commit: 3139b738ae0b042112e5237f4f9ac6488c776a7b Parents: 5395ccf Author: Eric Johnson <[email protected]> Authored: Tue Feb 3 13:49:49 2015 +0000 Committer: Eric Johnson <[email protected]> Committed: Tue Feb 3 19:26:31 2015 +0000 ---------------------------------------------------------------------- libcloud/compute/drivers/gce.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/3139b738/libcloud/compute/drivers/gce.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/gce.py b/libcloud/compute/drivers/gce.py index 1f29601..9cfad4d 100644 --- a/libcloud/compute/drivers/gce.py +++ b/libcloud/compute/drivers/gce.py @@ -790,13 +790,23 @@ class GCENodeDriver(NodeDriver): type = Provider.GCE website = 'https://cloud.google.com/' + # Google Compute Engine node states are mapped to Libcloud node states + # per the following dict. GCE does not have an actual 'stopped' state + # but instead uses a 'terminated' state to indicate the node exists + # but is not running. In order to better match libcloud, GCE maps this + # 'terminated' state to 'STOPPED'. + # Also, when a node is deleted from GCE, it no longer exists and instead + # will result in a ResourceNotFound error versus returning a placeholder + # node in a 'terminated' state. + # For more details, please see GCE's docs, + # https://cloud.google.com/compute/docs/instances#checkmachinestatus NODE_STATE_MAP = { "PROVISIONING": NodeState.PENDING, "STAGING": NodeState.PENDING, "RUNNING": NodeState.RUNNING, - "STOPPED": NodeState.TERMINATED, - "STOPPING": NodeState.TERMINATED, - "TERMINATED": NodeState.TERMINATED + "STOPPING": NodeState.PENDING, + "TERMINATED": NodeState.STOPPED, + "UNKNOWN": NodeState.UNKNOWN } AUTH_URL = "https://www.googleapis.com/auth/" @@ -5028,7 +5038,7 @@ n private_ips = [] extra = {} - extra['status'] = node.get('status') + extra['status'] = node.get('status', "UNKNOWN") extra['statusMessage'] = node.get('statusMessage') extra['description'] = node.get('description') extra['zone'] = self.ex_get_zone(node['zone'])
