/* * libosinfo: an operating system * * Copyright (C) 2009-2012 Red Hat, Inc. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library. If not, see * . * * Authors: * Arjun Roy * Daniel P. Berrange */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifndef __OSINFO_OS_H__ #define __OSINFO_OS_H__ /* * Type macros. */ #define OSINFO_TYPE_OS (osinfo_os_get_type ()) #define OSINFO_OS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), OSINFO_TYPE_OS, OsinfoOs)) #define OSINFO_IS_OS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), OSINFO_TYPE_OS)) #define OSINFO_OS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), OSINFO_TYPE_OS, OsinfoOsClass)) #define OSINFO_IS_OS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), OSINFO_TYPE_OS)) #define OSINFO_OS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), OSINFO_TYPE_OS, OsinfoOsClass)) /* * Forward declared in osinfo_install_script.h * * typedef struct _OsinfoOs OsinfoOs; */ typedef struct _OsinfoOsClass OsinfoOsClass; typedef struct _OsinfoOsPrivate OsinfoOsPrivate; #define OSINFO_OS_PROP_FAMILY "family" #define OSINFO_OS_PROP_DISTRO "distro" #define OSINFO_OS_PROP_RELEASE_STATUS "release-status" /* object */ struct _OsinfoOs { OsinfoProduct parent_instance; /* public */ /* private */ OsinfoOsPrivate *priv; }; /* class */ struct _OsinfoOsClass { /*< private >*/ OsinfoProductClass parent_class; /* class members */ }; /** * OsinfoReleaseStatus: * @OSINFO_RELEASE_STATUS_RELEASED: A released OS. * @OSINFO_RELEASE_STATUS_SNAPSHOT: A continuous integration snapshot and not * an actual released product yet. For example, gnome-continuous images for * development snapshots of GNOME and nightly build ISOs of Fedora etc. * @OSINFO_RELEASE_STATUS_PRERELEASE: A pre-release. For example, alpha and * beta pre-releases of Fedora etc. * @OSINFO_RELEASE_STATUS_ROLLING: A rolling version of an OS and thus with no * actual releases. For example, Gentoo, Arch Linux, etc. */ typedef enum { OSINFO_RELEASE_STATUS_RELEASED, OSINFO_RELEASE_STATUS_SNAPSHOT, OSINFO_RELEASE_STATUS_PRERELEASE, OSINFO_RELEASE_STATUS_ROLLING } OsinfoReleaseStatus; GType osinfo_os_get_type(void); OsinfoOs *osinfo_os_new(const gchar *id); OsinfoDeviceList *osinfo_os_get_devices(OsinfoOs *os, OsinfoFilter *filter); OsinfoDeviceList *osinfo_os_get_all_devices(OsinfoOs *os, OsinfoFilter *filter); OsinfoDeviceList *osinfo_os_get_devices_by_property(OsinfoOs *os, const char *property, const char *value, gboolean inherited); OsinfoDeviceLinkList *osinfo_os_get_device_links(OsinfoOs *os, OsinfoFilter *filter); OsinfoDeviceLinkList *osinfo_os_get_all_device_links(OsinfoOs *os, OsinfoFilter *filter); OsinfoDeviceLink *osinfo_os_add_device(OsinfoOs *os, OsinfoDevice *dev); const gchar *osinfo_os_get_family(OsinfoOs *os); const gchar *osinfo_os_get_distro(OsinfoOs *os); int osinfo_os_get_release_status(OsinfoOs *os); OsinfoMediaList *osinfo_os_get_media_list(OsinfoOs *os); void osinfo_os_add_media(OsinfoOs *os, OsinfoMedia *media); OsinfoTreeList *osinfo_os_get_tree_list(OsinfoOs *os); void osinfo_os_add_tree(OsinfoOs *os, OsinfoTree *tree); OsinfoImageList *osinfo_os_get_image_list(OsinfoOs *os); void osinfo_os_add_image(OsinfoOs *os, OsinfoImage *image); OsinfoOsVariantList *osinfo_os_get_variant_list(OsinfoOs *os); void osinfo_os_add_variant(OsinfoOs *os, OsinfoOsVariant *variant); OsinfoResourcesList *osinfo_os_get_network_install_resources(OsinfoOs *os); OsinfoResourcesList *osinfo_os_get_minimum_resources(OsinfoOs *os); OsinfoResourcesList *osinfo_os_get_recommended_resources(OsinfoOs *os); OsinfoResourcesList *osinfo_os_get_maximum_resources(OsinfoOs *os); void osinfo_os_add_network_install_resources(OsinfoOs *os, OsinfoResources *resources); void osinfo_os_add_minimum_resources(OsinfoOs *os, OsinfoResources *resources); void osinfo_os_add_recommended_resources(OsinfoOs *os, OsinfoResources *resources); void osinfo_os_add_maximum_resources(OsinfoOs *os, OsinfoResources *resources); OsinfoInstallScript *osinfo_os_find_install_script(OsinfoOs *os, const gchar *profile); OsinfoInstallScriptList *osinfo_os_get_install_script_list(OsinfoOs *os); void osinfo_os_add_install_script(OsinfoOs *os, OsinfoInstallScript *script); OsinfoDeviceDriverList *osinfo_os_get_device_drivers(OsinfoOs *os); void osinfo_os_add_device_driver(OsinfoOs *os, OsinfoDeviceDriver *driver); #endif /* __OSINFO_OS_H__ */ /* * Local variables: * indent-tabs-mode: nil * c-indent-level: 4 * c-basic-offset: 4 * End: */