def _create(self, **arguments): arguments = dotdict(arguments) r = [] StopWatch.start(f"create vm {arguments.name}") cm = { 'kind': "vm", 'name': arguments.name, 'group': arguments.group, 'cloud': self.cloudname(), 'status': 'booting' } entry = {} entry.update(cm=cm, name=arguments.name) result = CmDatabase.UPDATE(entry, progress=False)[0] data = {} dryrun = False if "dryrun" in arguments: dryrun = arguments.dryrun data = {"dryrun": True} else: arguments.timeout = 360 data = self.p.create(**arguments) # print('entry') # pprint(entry) # print('data') pprint(data) entry.update(data) StopWatch.stop(f"create vm {arguments.name}") t = format(StopWatch.get(f"create vm {arguments.name}"), '.2f') cm['creation_time'] = t entry.update({'cm': cm}) if arguments.metadata: entry.update({"metadata": arguments.metadata}) else: entry.update({ "metadata": str({ "cm": cm, "image": arguments.image, "size": arguments.size }) }) cm['status'] = 'available' self.p.set_server_metadata(arguments.name, cm) result = CmDatabase.UPDATE(entry, progress=False)[0] return result
def _create(self, **arguments): arguments = dotdict(arguments) r = [] StopWatch.start(f"create vm {arguments.name}") label = arguments.get("label") or arguments.name cm = { 'kind': "vm", 'name': arguments.name, 'label': label, 'group': arguments.group, 'cloud': self.cloudname(), 'status': 'booting' } entry = {} entry.update(cm=cm, name=arguments.name) result = CmDatabase.UPDATE(entry, progress=False)[0] data = {} dryrun = False if "dryrun" in arguments: dryrun = arguments.dryrun data = {"dryrun": True} else: arguments.timeout = 360 data = self.p.create(**arguments) # print('entry') # pprint(entry) # print('data') # pprint(data) entry.update(data) StopWatch.stop(f"create vm {arguments.name}") t = format(StopWatch.get(f"create vm {arguments.name}"), '.2f') cm['creation'] = t entry.update({'cm': cm}) if arguments.metadata: entry.update({"metadata": arguments.metadata}) else: entry.update({ "metadata": str({ "cm": cm, "image": arguments.image, "size": arguments.size }) }) cm['status'] = 'available' try: # # due to metadata limitation in openstack do not add the creation time # if 'created' in cm: del cm['created'] self.p.set_server_metadata(arguments.name, cm) #self.set_server_metadata(arguments.name, cm) except Exception as e: Console.error("Openstack reported the following error") Console.error(79 * "-") print(e) Console.error(79 * "-") result = CmDatabase.UPDATE(entry, progress=False)[0] return result