Ejemplo n.º 1
0
def normalize_time_str(time_str):
    try:
        # local time zone datetime format
        return timeutils.normalize_time(timeutils.local_to_utc(timeutils.parse_strtime(time_str, "%Y-%m-%d %H:%M:%S")))
    except ValueError:
        # UTC+0 time zone datetime format or others
        return timeutils.normalize_time(timeutils.parse_isotime(time_str))
Ejemplo n.º 2
0
    def _repack_server_data(self, server, req, tenant_id):
        server.update({"OS-EXT-STS:power_state":
                      self._get_power_state(server['OS-EXT-STS:power_state'])})
        auth_token = req.headers.get("x-auth-token")
        # get flavor info
        flavor_id = server['flavor']['id']
        flavor = ops_api.get_flavor(tenant_id,
                           auth_token,
                           flavor_id)
        if flavor is not None:
            for k, v in flavor['flavor'].iteritems():
                if k == 'links':
                    continue
                server.update({"flavor-%s" % k: v})
            server.pop('flavor')

        server_owner_id = server['tenant_id']
        # get tenant name
        tenant = ops_api.get_tenant(server_owner_id, auth_token)
        tenant_name = tenant['name']
        server.update(tenant_name=tenant_name)

        fixed_ips = []
        private_floating_ips = []
        public_floating_ips = []
        # recognize IP type
        for ip in server['addresses'].get('private', {}):
            is_floating_ip, ip_type = _recog_ip_type(ip['addr'])
            if is_floating_ip and ip_type == 'private':
                private_floating_ips.append(ip)
            elif is_floating_ip and ip_type == 'public':
                public_floating_ips.append(ip)
            else:
                fixed_ips.append(ip)
        server.update(fixed_ips=fixed_ips)
        server.update(private_floating_ips=private_floating_ips)
        server.update(public_floating_ips=public_floating_ips)

        # get image info
        image_id = server['image']['id']
        image = ops_api.get_image(auth_token, image_id)
        if image is not None:
            server.update(image)
            server.pop('image')

        # get running time (now - created_at)
        # FIXME(hzzhoushaoyu): created_at should transform to utc+0 datetime,
        # but as list show required nova return utc+8 datetime.
        # If nova return utc+0 datetime, running time may be ERROR data.
        created_at = server['created']
        created_datetime = timeutils.normalize_time(
                timeutils.local_to_utc(
                    timeutils.parse_strtime(created_at, '%Y-%m-%d %H:%M:%S')))
        running_time = timeutils.seconds_from_now(created_datetime)
        server.update({"running_seconds": running_time})
        return server