コード例 #1
0
    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
コード例 #2
0
ファイル: Provider.py プロジェクト: iumsds/cloudmesh-cloud
    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