libdeltacloud 0.9
include/libdeltacloud/hardware_profile.h
00001 /*
00002  * Copyright (C) 2010,2011 Red Hat, Inc.
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
00017  *
00018  * Author: Chris Lalancette <clalance@redhat.com>
00019  */
00020 
00021 #ifndef LIBDELTACLOUD_HARDWARE_PROFILE_H
00022 #define LIBDELTACLOUD_HARDWARE_PROFILE_H
00023 
00024 #ifdef __cplusplus
00025 extern "C" {
00026 #endif
00027 
00032 struct deltacloud_property_enum {
00033   char *value; 
00035   struct deltacloud_property_enum *next;
00036 };
00037 
00042 struct deltacloud_property_range {
00043   char *first; 
00044   char *last; 
00046   struct deltacloud_property_range *next;
00047 };
00048 
00052 struct deltacloud_property_param {
00053   char *href; 
00054   char *method; 
00055   char *name; 
00056   char *operation; 
00058   struct deltacloud_property_param *next;
00059 };
00060 
00066 struct deltacloud_property {
00067   char *kind; 
00068   char *name; 
00069   char *unit; 
00070   char *value; 
00072   struct deltacloud_property_param *params; 
00073   struct deltacloud_property_enum *enums; 
00074   struct deltacloud_property_range *ranges; 
00076   struct deltacloud_property *next;
00077 };
00078 
00082 struct deltacloud_hardware_profile {
00083   char *href; 
00084   char *id; 
00085   char *name; 
00087   struct deltacloud_property *properties; 
00089   struct deltacloud_hardware_profile *next;
00090 };
00091 
00092 #define deltacloud_supports_hardware_profiles(api) deltacloud_has_link(api, "hardware_profiles")
00093 int deltacloud_get_hardware_profiles(struct deltacloud_api *api,
00094                                      struct deltacloud_hardware_profile **hardware_profiles);
00095 int deltacloud_get_hardware_profile_by_id(struct deltacloud_api *api,
00096                                           const char *id,
00097                                           struct deltacloud_hardware_profile *profile);
00098 void deltacloud_free_hardware_profile(struct deltacloud_hardware_profile *profile);
00099 void deltacloud_free_hardware_profile_list(struct deltacloud_hardware_profile **profiles);
00100 
00101 #ifdef __cplusplus
00102 }
00103 #endif
00104 
00105 #endif
 All Data Structures Files Functions Variables