summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEthan Lynn <ethanlynnl@vmware.com>2019-03-25 16:09:26 +0800
committerEthan Lynn <ethanlynnl@vmware.com>2019-03-25 16:12:53 +0800
commit2311655176f4c9a783be24c4b19d9b186ecc512b (patch)
tree31cd8c0b164ba591b988c191aa51ee938ddc6f72
parent04ad05f0302fa1e059b3c3ab3470759dc333e33e (diff)
Add function to collect servers info in stack
Basic function for AAI heat bridge. Change-Id: I3898eca7506934037fb3ca5863bb877b1a22e2d4 Issue-ID: MULTICLOUD-507 Signed-off-by: Ethan Lynn <ethanlynnl@vmware.com>
-rw-r--r--vio/vio/heatbridge.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/vio/vio/heatbridge.py b/vio/vio/heatbridge.py
new file mode 100644
index 0000000..325d20c
--- /dev/null
+++ b/vio/vio/heatbridge.py
@@ -0,0 +1,59 @@
+# Copyright (c) 2019 VMware, Inc.
+#
+# 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.
+
+
+# from vio.pub.msapi import extsys
+from vio.pub.vim.vimapi.heat import OperateStack
+from vio.pub.vim.vimapi.nova import OperateServers
+
+import logging
+
+logger = logging.getLogger(__name__)
+
+
+def heat_bridge(vim_info, stack_id):
+ ret = {
+ "servers": []
+ }
+ stack_op = OperateStack.OperateStack(vim_info)
+ server_op = OperateServers.OperateServers()
+ data = {'vimid': vim_info['vimId'],
+ 'vimName': vim_info['name'],
+ 'username': vim_info['userName'],
+ 'password': vim_info['password'],
+ 'url': vim_info['url']}
+ resources = stack_op.get_stack_resources(stack_id)
+ for res in resources:
+ if res.resource_type != "OS::Nova::Server":
+ continue
+ if not res.status.endswith("COMPLETE"):
+ continue
+ instance = server_op.get_server(data, None, res.physical_resource_id)
+ if instance is None:
+ logger.info("can not find server %s" % res.physical_resource_id)
+ continue
+ for link in instance.links:
+ if link['rel'] == "self":
+ slink = link['rel']
+ break
+ ret['servers'].append({
+ "name": instance.name,
+ "id": instance.id,
+ "status": instance.status,
+ "link": slink,
+ })
+ return ret
+
+# if __name__ == "__main__":
+# import ipdb; ipdb.set_trace()
+# vim_info = extsys.get_vim_by_id("vmware_nova2")
+# datas = heat_bridge(vim_info, "test")