diff options
Diffstat (limited to 'src/service/ServiceUtils.c')
-rw-r--r-- | src/service/ServiceUtils.c | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/src/service/ServiceUtils.c b/src/service/ServiceUtils.c new file mode 100644 index 0000000..37bb081 --- /dev/null +++ b/src/service/ServiceUtils.c @@ -0,0 +1,119 @@ +/* + * ServiceUtils.c + * + * Copyright (C) 2012 Red Hat, Inc. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * Based on Syslog_ServiceUtils.c from sblim-cmpi-syslog written by + * R Sharada <sharada@in.ibm.com>, Copyright (c) IBM Corp. 2003, 2009 + * + * Red Hat Author(s): Vitezslav Crhonek <vcrhonek@redhat.com> + * + */ + +#include <cmpidt.h> +#include <cmpift.h> +#include <cmpimacs.h> +#include <unistd.h> +#include <string.h> + +#include "ServiceUtils.h" +#include "util/serviceutil.h" +static char sccn[] = "CIM_UnitaryComputerSystem"; +static char ccn[] = "Linux_Service"; +static char csn[500] = ""; + + + +char * +SystemCreationClassName() +{ + return sccn; +} + + + +char * +SystemName() +{ + if (*csn == 0) + gethostname(csn, sizeof(csn)); + return csn; +} + + + +char * +CreationClassName() +{ + return ccn; +} + + + +CMPIObjectPath * +makeServicePath(const CMPIBroker *broker, + const char *classname, + const char *namespace, + Service *svc) +{ + CMPIObjectPath *op = NULL; + + op = CMNewObjectPath(broker, + (char*)namespace, + (char*)classname, + NULL); + if (!CMIsNullObject(op)) + { + CMAddKey(op, "CreationClassName", CreationClassName(), CMPI_chars); + CMAddKey(op, "SystemCreationClassName", SystemCreationClassName(), CMPI_chars); + CMAddKey(op, "SystemName", SystemName(), CMPI_chars); + CMAddKey(op, "Name", svc->svName, CMPI_chars); + } + + return op; +} + + + +CMPIInstance * +makeServiceInstance(const CMPIBroker *broker, + const char * classname, + const char * namespace, + Service *svc) +{ + CMPIInstance *in = NULL; + CMPIObjectPath *op = CMNewObjectPath(broker, + (char*) namespace, + (char*) classname, + NULL); + if (!CMIsNullObject(op)) + { + in = CMNewInstance(broker, op, NULL); + if (!CMIsNullObject(in)) + { + CMSetProperty(in, "CreationClassName", CreationClassName(), CMPI_chars); + CMSetProperty(in, "SystemCreationClassName", SystemCreationClassName(), CMPI_chars); + CMSetProperty(in, "SystemName", SystemName(), CMPI_chars); + CMSetProperty(in, "Name", svc->svName, CMPI_chars); + CMSetProperty(in, "Status", svc->svStatus, CMPI_chars); + CMSetProperty(in, "Started", &svc->svStarted, CMPI_boolean); + CMSetProperty(in, "EnabledDefault", (CMPIValue*) &(svc->svEnabledDefault), CMPI_uint16); + } + } + + return in; +} + |