libdeltacloud 0.9
|
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