You can subscribe to this list here.
2007 |
Jan
|
Feb
(65) |
Mar
(276) |
Apr
(544) |
May
(638) |
Jun
(225) |
Jul
(204) |
Aug
(294) |
Sep
(532) |
Oct
(506) |
Nov
(324) |
Dec
(359) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2008 |
Jan
(208) |
Feb
(225) |
Mar
(248) |
Apr
(388) |
May
(222) |
Jun
(47) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
Author: ahajda Date: 2007-03-02 00:35:31 -0600 (Fri, 02 Mar 2007) New Revision: 4170 Added: trunk/wmi/Samba/source/wmi/pywmi.i trunk/wmi/Samba/source/wmi/wmicore.c trunk/wmi/pycom/ trunk/wmi/pycom/pythoncom.py trunk/wmi/pycom/pywintypes.py trunk/wmi/pycom/win32com/ trunk/wmi/pycom/win32com/__init__.py trunk/wmi/pycom/win32com/client.py Modified: trunk/wmi/README trunk/wmi/Samba/source/lib/com/dcom/dcom.h trunk/wmi/Samba/source/lib/com/dcom/main.c trunk/wmi/Samba/source/librpc/idl/dcom_wmi.inc trunk/wmi/Samba/source/pidl/lib/Parse/Pidl/Samba4/COM/Proxy.pm trunk/wmi/Samba/source/wmi/ trunk/wmi/Samba/source/wmi/config.mk trunk/wmi/Samba/source/wmi/wbemdata.c trunk/wmi/Samba/source/wmi/wmic.c trunk/wmi/Samba/source/wmi/wmis.c Log: Added python bindings allowing work of zenwin on Linux. See README for details. Modified: trunk/wmi/README =================================================================== --- trunk/wmi/README 2007-03-01 22:39:43 UTC (rev 4169) +++ trunk/wmi/README 2007-03-02 06:35:31 UTC (rev 4170) @@ -1,5 +1,5 @@ DCOM/WMI client implementation for Linux. - and...@wp..., December 2006 + and...@wp..., 2006-2007 ABOUT @@ -9,31 +9,53 @@ REQUIREMENTS The same as for Samba (gcc ???, autoconf ???). +SWIG >= 1.3 (I am using version 1.3.25). COMPILATION -For details follow Samba documentation from samba/howto.txt. +For details follow Samba documentation from Samba/howto.txt. Simple steps: $ cd Samba/source $ ./autogen.sh $ ./configure -$ make proto bin/wmic bin/wmis +$ make proto bin/wmic bin/wmis wmi/_pywmi.so INSTALLATION Currently there is no install procedure. Generated binaries are located -in Samba/source/bin: - wmic - WMI simple client, it queries server using ExecQuery WMI method, +in Samba/source: + bin/wmic - WMI simple client, it queries server using ExecQuery WMI method, sample usage: wmic -U domain/user%password //host "select Name from Win32_Process" Program is at early stage of development and there are many bugs. To retrieve more debug info use switch "-d number", where bigger number corresponds to bigger output (I am using "-d 99" :) ) - wmis - WMI test suite. Currently it does only following things: + bin/wmis - WMI test suite. Currently it does only following things: - Creates directory remotely using Win32_Process.Create("cmd.exe /C mkdir C:\wmi_test_dir_tmp"). - Executes ExecNotificationQuery for monitoring file create/delete events in this directory. - Waits for 4 notifications and display their types. + wmi/_pywmi.so - Samba wrapper for python, together with wmi/pywmi.py and ../pycom/* modules can be used + to run zenwin on Linux. + +PYTHON MODULES (early stage, experimental, for zenwin) + +There are two locations of python modules required to run zenwin: +- ./pycom - modules providing api of pywin32 library used in zenwin. +- ./Samba/source/wmi - SWIG generated Samba binding modules (pywmi.py, _pywmi.so), used by ./pycom. +To run zenwin you should: +0. Compile _pywmi.so module, see COMPILATION section. +1. Download zenwin: svn co http://dev.zenoss.org/svn/trunk/zenwin. +2. Edit zenwin config files if necessary. +3. Configure/run zenoss. +4. Run zenwin components, with properly set env variable PYTHONPATH, for example in bash/sh: +cd $ZENWINPATH +PYTHONPATH="$WMIPATH/pycom:$WMIPATH/Samba/source/wmi" python ./$PROG.py -C etc/$PROG.cfg -v 10 --cycle=5 +where: + ZENWINPATH - path to zenwin directory + WMIPATH - path to wmi directory + PROG - one of zenwin components (zenwin, zenwinmodeler, zeneventlog) + TODO - Implement handling of all CIM types, @@ -42,4 +64,3 @@ General: - Create async version -- Create Python binding Modified: trunk/wmi/Samba/source/lib/com/dcom/dcom.h =================================================================== --- trunk/wmi/Samba/source/lib/com/dcom/dcom.h 2007-03-01 22:39:43 UTC (rev 4169) +++ trunk/wmi/Samba/source/lib/com/dcom/dcom.h 2007-03-02 06:35:31 UTC (rev 4170) @@ -34,7 +34,11 @@ #include "lib/com/dcom/proto.h" struct dcom_client_context { - struct cli_credentials *credentials; + struct dcom_server_credentials { + const char *server; + struct cli_credentials *credentials; + struct dcom_server_credentials *prev, *next; + } *credentials; struct dcom_object_exporter { uint64_t oxid; struct GUID ipidRemUnknown; Modified: trunk/wmi/Samba/source/lib/com/dcom/main.c =================================================================== --- trunk/wmi/Samba/source/lib/com/dcom/main.c 2007-03-01 22:39:43 UTC (rev 4169) +++ trunk/wmi/Samba/source/lib/com/dcom/main.c 2007-03-02 06:35:31 UTC (rev 4170) @@ -28,14 +28,52 @@ #include "lib/com/dcom/dcom.h" #include "librpc/rpc/dcerpc_table.h" #include "lib/util/dlinklist.h" +#include "auth/credentials/credentials.h" #define DCOM_NEGOTIATED_PROTOCOLS { EPM_PROTOCOL_TCP, EPM_PROTOCOL_SMB, EPM_PROTOCOL_NCALRPC } +struct cli_credentials *dcom_get_server_credentials(struct com_context *ctx, const char *server) +{ + struct dcom_server_credentials *c; + struct cli_credentials *d; + + d = NULL; + for (c = ctx->dcom->credentials; c; c = c->next) { + if (c->server == NULL) { + d = c->credentials; + continue; + } + if (server && !strcmp(c->server, server)) return c->credentials; + } + return d; +} + +void dcom_set_server_credentials(struct com_context *ctx, const char *server, struct cli_credentials *credentials) +{ + struct dcom_server_credentials *c; + + for (c = ctx->dcom->credentials; c; c = c->next) { + if ((server == NULL && c->server == NULL) ||(server && c->server && !strcmp(c->server, server))) { + c->credentials = credentials; + return; + } + } + + c = talloc(ctx, struct dcom_server_credentials); + c->server = talloc_strdup(ctx, server); + c->credentials = credentials; + DLIST_ADD(ctx->dcom->credentials, c); +} + struct dcom_client_context *dcom_client_init(struct com_context *ctx, struct cli_credentials *credentials) { ctx->dcom = talloc_zero(ctx, struct dcom_client_context); - ctx->dcom->credentials = credentials; - + if (!credentials) { + credentials = cli_credentials_init(ctx); + cli_credentials_set_conf(credentials); + cli_credentials_parse_string(credentials, "%", CRED_SPECIFIED); + } + dcom_set_server_credentials(ctx, NULL, credentials); return ctx->dcom; } @@ -84,7 +122,7 @@ if (server == NULL) { return dcerpc_pipe_connect(ctx, p, "ncalrpc", &dcerpc_table_IRemoteActivation, - ctx->dcom->credentials, ctx->event_ctx); + dcom_get_server_credentials(ctx, NULL), ctx->event_ctx); } /* Allow server name to contain a binding string */ @@ -93,7 +131,7 @@ bd->flags |= DCERPC_DEBUG_PRINT_BOTH; status = dcerpc_pipe_connect_b(ctx, p, bd, &dcerpc_table_IRemoteActivation, - ctx->dcom->credentials, ctx->event_ctx); + dcom_get_server_credentials(ctx, bd->host), ctx->event_ctx); talloc_free(loc_ctx); return status; @@ -106,11 +144,9 @@ talloc_free(loc_ctx); return NT_STATUS_NO_MEMORY; } + status = dcerpc_pipe_connect(ctx, p, binding, &dcerpc_table_IRemoteActivation, + dcom_get_server_credentials(ctx, server), ctx->event_ctx); - status = dcerpc_pipe_connect(ctx, p, binding, - &dcerpc_table_IRemoteActivation, - ctx->dcom->credentials, ctx->event_ctx); - if (NT_STATUS_IS_OK(status)) { if (DEBUGLVL(9)) (*p)->conn->flags |= DCERPC_DEBUG_PRINT_BOTH; @@ -156,6 +192,24 @@ return object_exporter_by_oxid(ctx, ip->obj.u_objref.u_standard.std.oxid); } +void dcom_update_credentials_for_aliases(struct com_context *ctx, const char *server, struct DUALSTRINGARRAY *pds) +{ + struct cli_credentials *cc; + struct dcerpc_binding *b; + uint32_t i; + NTSTATUS status; + + cc = dcom_get_server_credentials(ctx, server); + for (i = 0; pds->stringbindings[i]; ++i) { + if (pds->stringbindings[i]->wTowerId != EPM_PROTOCOL_TCP) continue; + status = dcerpc_binding_from_STRINGBINDING(ctx, &b, pds->stringbindings[i]); + if (!NT_STATUS_IS_OK(status)) continue; + dcom_set_server_credentials(ctx, b->host, cc); + talloc_free(b); + } +} + + WERROR dcom_create_object(struct com_context *ctx, struct GUID *clsid, const char *server, int num_ifaces, struct GUID *iid, struct IUnknown ***ip, WERROR *results) { uint16_t protseq[] = DCOM_NEGOTIATED_PROTOCOLS; @@ -231,11 +285,12 @@ } } - /* Add the OXID data for the returned oxid */ m = object_exporter_update_oxid(ctx, oxid, pds); m->pipe = NULL; m->ipidRemUnknown = ipidRemUnknown; + dcom_update_credentials_for_aliases(ctx, server, pds); + talloc_free(loc_ctx); return WERR_OK; } @@ -345,12 +400,12 @@ DEBUG(1, ("Error parsing string binding")); } else { /* FIXME:LOW Make flags more flexible */ - binding->flags |= DCERPC_AUTH_NTLM | DCERPC_SIGN; // | DCERPC_NDR_REF_ALLOC; + binding->flags |= DCERPC_AUTH_NTLM | DCERPC_SIGN; if (DEBUGLVL(9)) binding->flags |= DCERPC_DEBUG_PRINT_BOTH; status = dcerpc_pipe_connect_b(ox, &p, binding, idl_iface_by_uuid(&iid), - iface->ctx->dcom->credentials, + dcom_get_server_credentials(iface->ctx, binding->host), iface->ctx->event_ctx); } talloc_free(binding); Modified: trunk/wmi/Samba/source/librpc/idl/dcom_wmi.inc =================================================================== --- trunk/wmi/Samba/source/librpc/idl/dcom_wmi.inc 2007-03-01 22:39:43 UTC (rev 4169) +++ trunk/wmi/Samba/source/librpc/idl/dcom_wmi.inc 2007-03-02 06:35:31 UTC (rev 4170) @@ -23,13 +23,6 @@ pointer_default(unique) ] interface IWbemServices : IUnknown { - - typedef [public] enum - { - WBEM_NO_WAIT = 0, - WBEM_INFINITE = 0xFFFFFFFF - } WBEM_TIMEOUT_TYPE; - typedef [public,noprint] enum { WBEM_FLAG_RETURN_IMMEDIATELY = 0x10, @@ -55,6 +48,12 @@ } WBEM_GENERIC_FLAG_TYPE; + typedef [public,noprint,v1_enum] enum tag_WBEM_TIMEOUT_TYPE + { + WBEM_NO_WAIT = 0, + WBEM_INFINITE = 0xFFFFFFFF + } WBEM_TIMEOUT_TYPE; + typedef [public,nopull,nopush,noprint,string,charset(UTF16)] uint16 *CIMSTRING; typedef [public,v1_enum] enum @@ -145,6 +144,12 @@ uint32 count; [relative] CIMSTRING item[count]; } arr_CIMSTRING; + + typedef [public] struct { + uint32 count; + [relative,subcontext(4)] WbemClassObject *item[count]; + } arr_WbemClassObject; + // FIXME:avg implement rest of types typedef [public,nodiscriminant] union { @@ -156,6 +161,8 @@ [case(CIM_UINT32)] uint32 v_uint32; [case(CIM_SINT64)] dlong v_sint64; [case(CIM_UINT64)] udlong v_uint64; + [case(CIM_REAL32)] uint32 v_real32; + [case(CIM_REAL64)] udlong v_real64; [case(CIM_BOOLEAN)] uint16 v_boolean; [case(CIM_STRING),relative] CIMSTRING v_string; [case(CIM_DATETIME),relative] CIMSTRING v_datetime; @@ -170,11 +177,13 @@ [case(CIM_ARR_UINT32),relative] arr_uint32 *a_uint32; [case(CIM_ARR_SINT64),relative] arr_dlong *a_sint64; [case(CIM_ARR_UINT64),relative] arr_udlong *a_uint64; + [case(CIM_ARR_REAL32),relative] arr_uint32 *a_real32; + [case(CIM_ARR_REAL64),relative] arr_udlong *a_real64; [case(CIM_ARR_BOOLEAN),relative] arr_uint16 *a_boolean; [case(CIM_ARR_STRING),relative] arr_CIMSTRING *a_string; [case(CIM_ARR_DATETIME),relative] arr_CIMSTRING *a_datetime; [case(CIM_ARR_REFERENCE),relative] arr_CIMSTRING *a_reference; -// [case(CIM_ARR_OBJECT),relative] arr_IWbemClassObject *a_object; + [case(CIM_ARR_OBJECT),relative] arr_WbemClassObject *a_object; } CIMVAR; typedef [public,bitmap8bit] bitmap @@ -648,8 +657,8 @@ [in,ref] GUID *gEWCO, [in] uint32 lTimeOut, [in] uint32 uCount, - [in] uint32 unknown, - [in,ref] GUID *gWCO, +// [in] uint32 unknown, +// [in,ref] GUID *gWCO, [out,ref] uint32 *puReturned, [out,ref] uint32 *pSize, // [out,ref] WBEMDATA0 **pData Modified: trunk/wmi/Samba/source/pidl/lib/Parse/Pidl/Samba4/COM/Proxy.pm =================================================================== --- trunk/wmi/Samba/source/pidl/lib/Parse/Pidl/Samba4/COM/Proxy.pm 2007-03-01 22:39:43 UTC (rev 4169) +++ trunk/wmi/Samba/source/pidl/lib/Parse/Pidl/Samba4/COM/Proxy.pm 2007-03-02 06:35:31 UTC (rev 4170) @@ -134,7 +134,7 @@ if (Parse::Pidl::Typelist::typeIs($a->{TYPE}, "INTERFACE")) { $res .= -" if (s->r.out.$a->{NAME}) { +" if (s->r.out.$a->{NAME} && *s->r.out.$a->{NAME}) { status = dcom_IUnknown_from_OBJREF(s->d->ctx, (struct IUnknown **)s->$a->{NAME}, &(**s->r.out.$a->{NAME}).obj); if (*s->r.out.$a->{NAME}) talloc_free(*s->r.out.$a->{NAME}); talloc_free(s->r.out.$a->{NAME}); Property changes on: trunk/wmi/Samba/source/wmi ___________________________________________________________________ Name: svn:ignore - proto.h *.d + proto.h *.d *.pyc *_wrap.c pywmi.py _pywmi.so Modified: trunk/wmi/Samba/source/wmi/config.mk =================================================================== --- trunk/wmi/Samba/source/wmi/config.mk 2007-03-01 22:39:43 UTC (rev 4169) +++ trunk/wmi/Samba/source/wmi/config.mk 2007-03-02 06:35:31 UTC (rev 4170) @@ -5,6 +5,7 @@ INSTALLDIR = BINDIR OBJ_FILES = \ wmic.o \ + wmicore.o \ wbemdata.o \ ../librpc/gen_ndr/dcom_p.o PRIVATE_DEPENDENCIES = \ @@ -26,6 +27,7 @@ INSTALLDIR = BINDIR OBJ_FILES = \ wmis.o \ + wmicore.o \ wbemdata.o \ ../librpc/gen_ndr/dcom_p.o PRIVATE_DEPENDENCIES = \ @@ -42,3 +44,21 @@ ################################# librpc/gen_ndr/dcom_p.c: idl + +####################### +# Start LIBRARY swig_dcerpc +[LIBRARY::pywmi] +LIBRARY_REALNAME = _pywmi.$(SHLIBEXT) +PUBLIC_DEPENDENCIES = LIBCLI_SMB NDR_MISC LIBSAMBA-UTIL LIBSAMBA-CONFIG RPC_NDR_SAMR RPC_NDR_LSA DYNCONFIG \ + RPC_NDR_OXIDRESOLVER \ + NDR_DCOM \ + RPC_NDR_REMACT \ + NDR_TABLE \ + DCOM_PROXY_DCOM \ + dcom +OBJ_FILES = wbemdata.o \ + wmicore.o \ + ../librpc/gen_ndr/dcom_p.o \ + pywmi_wrap.o +# End LIBRARY swig_dcerpc +####################### Added: trunk/wmi/Samba/source/wmi/pywmi.i Modified: trunk/wmi/Samba/source/wmi/wbemdata.c =================================================================== --- trunk/wmi/Samba/source/wmi/wbemdata.c 2007-03-01 22:39:43 UTC (rev 4169) +++ trunk/wmi/Samba/source/wmi/wbemdata.c 2007-03-02 06:35:31 UTC (rev 4170) @@ -29,6 +29,7 @@ #include "librpc/gen_ndr/ndr_dcom.h" #include "librpc/rpc/dcerpc.h" #include "librpc/gen_ndr/ndr_misc.h" +#include "lib/talloc/talloc.h" NTSTATUS ndr_pull_WbemClassObject_Object(struct ndr_pull *ndr, int ndr_flags, struct WbemClassObject *r); void duplicate_CIMVAR(TALLOC_CTX *mem_ctx, const union CIMVAR *src, union CIMVAR *dst, enum CIMTYPE_ENUMERATION cimtype); @@ -445,7 +446,7 @@ } #define WERR_CHECK(msg) if (!W_ERROR_IS_OK(result)) { \ - DEBUG(0, ("ERROR: %s\n", msg)); \ + DEBUG(1, ("ERROR: %s\n", msg)); \ goto error; \ } else { \ DEBUG(1, ("OK : %s\n", msg)); \ @@ -473,11 +474,12 @@ e = talloc(mem_ctx, struct pair_guid_ptr); e->guid = *uuid; e->ptr = ptr; + talloc_steal(e, ptr); DLIST_ADD(*list, e); } struct IEnumWbemClassObject_data { - struct GUID guid1, guid2; + struct GUID guid; struct IWbemFetchSmartEnum *pFSE; struct IWbemWCOSmartEnum *pSE; struct pair_guid_ptr *cache; @@ -551,6 +553,7 @@ case DATATYPE_OBJECT: apObjects[i] = talloc_zero(d->ctx, struct WbemClassObject); apObjects[i]->obj_class = get_ptr_by_guid(ecod->cache, &guid); + (void)talloc_reference(apObjects[i], apObjects[i]->obj_class); NDR_CHECK(ndr_pull_WbemClassObject_Object(ndr, NDR_SCALARS|NDR_BUFFERS, apObjects[i])); break; default: @@ -569,7 +572,7 @@ return status; } -int IEnumWbemClassObject_data_destructor(struct IEnumWbemClassObject_data *ecod) +static int IEnumWbemClassObject_data_destructor(struct IEnumWbemClassObject_data *ecod) { // struct REMINTERFACEREF rif[2] = { {ecod->pFSE->obj.u_objref.u_standard.std.ipid, 5, 0}, {ecod->pSE->obj.u_objref.u_standard.std.ipid, 5, 0} }; return 0; @@ -601,13 +604,12 @@ result = IWbemFetchSmartEnum_Fetch(ecod->pFSE, mem_ctx, &ecod->pSE); WERR_CHECK("Retrieve enumerator of result(IWbemWCOSmartEnum)."); - ecod->guid1 = GUID_random(); - ecod->guid2 = GUID_random(); + ecod->guid = GUID_random(); talloc_set_destructor(ecod, IEnumWbemClassObject_data_destructor); } - result = IWbemWCOSmartEnum_Next(ecod->pSE, loc_ctx, &ecod->guid1, lTimeout, uCount, 1, &ecod->guid2, puReturned, &size, &data); + result = IWbemWCOSmartEnum_Next(ecod->pSE, loc_ctx, &ecod->guid, lTimeout, uCount, puReturned, &size, &data); if (!W_ERROR_EQUAL(result, WERR_BADFUNC)) { WERR_CHECK("IWbemWCOSmartEnum_Next."); } @@ -620,7 +622,7 @@ error: if (!W_ERROR_IS_OK(result)) { status = werror_to_ntstatus(result); - DEBUG(0, ("dcom_proxy_IEnumWbemClassObject_Next: %s - %s\n", nt_errstr(status), get_friendly_nt_error_msg(status))); + DEBUG(9, ("dcom_proxy_IEnumWbemClassObject_Next: %s - %s\n", nt_errstr(status), get_friendly_nt_error_msg(status))); } talloc_free(loc_ctx); return result; Modified: trunk/wmi/Samba/source/wmi/wmic.c =================================================================== --- trunk/wmi/Samba/source/wmi/wmic.c 2007-03-01 22:39:43 UTC (rev 4169) +++ trunk/wmi/Samba/source/wmi/wmic.c 2007-03-02 06:35:31 UTC (rev 4170) @@ -128,6 +128,9 @@ struct program_args args = {}; uint32_t cnt = 5, ret; char *class_name = NULL; + WERROR result; + NTSTATUS status; + struct IWbemServices *pWS = NULL; parse_args(argc, argv, &args); @@ -146,25 +149,11 @@ com_init_ctx(&ctx, NULL); dcom_client_init(ctx, cmdline_credentials); - struct GUID clsid; - struct GUID iid; - WERROR result, coresult; - NTSTATUS status; - struct IUnknown **mqi = NULL; - GUID_from_string(CLSID_WBEMLEVEL1LOGIN, &clsid); - GUID_from_string(COM_IWBEMLEVEL1LOGIN_UUID, &iid); - result = dcom_create_object(ctx, &clsid, args.hostname, 1, &iid, &mqi, &coresult); - WERR_CHECK("dcom_create_object."); - result = coresult; - WERR_CHECK("Create remote WMI object."); - - struct IWbemLevel1Login *pL = (struct IWbemLevel1Login *)mqi[0]; - struct IWbemServices *pWS = NULL; - result = IWbemLevel1Login_NTLMLogin(pL, ctx, "root\\cimv2", 0, 0, 0, &pWS); + result = WBEM_ConnectServer(ctx, args.hostname, "root\\cimv2", 0, 0, 0, 0, 0, 0, &pWS); WERR_CHECK("Login to remote object."); struct IEnumWbemClassObject *pEnum = NULL; - result = IWbemServices_ExecQuery(pWS, ctx, "WQL", args.query, WBEM_FLAG_RETURN_IMMEDIATELY, NULL, &pEnum); + result = IWbemServices_ExecQuery(pWS, ctx, "WQL", args.query, WBEM_FLAG_RETURN_IMMEDIATELY | WBEM_FLAG_ENSURE_LOCATABLE, NULL, &pEnum); WERR_CHECK("WMI query execute."); IEnumWbemClassObject_Reset(pEnum, ctx); Added: trunk/wmi/Samba/source/wmi/wmicore.c Modified: trunk/wmi/Samba/source/wmi/wmis.c =================================================================== --- trunk/wmi/Samba/source/wmi/wmis.c 2007-03-01 22:39:43 UTC (rev 4169) +++ trunk/wmi/Samba/source/wmi/wmis.c 2007-03-02 06:35:31 UTC (rev 4170) @@ -19,6 +19,7 @@ #include "includes.h" #include "lib/cmdline/popt_common.h" +#include "auth/credentials/credentials.h" #include "librpc/rpc/dcerpc.h" #include "librpc/gen_ndr/ndr_oxidresolver.h" #include "librpc/gen_ndr/ndr_oxidresolver_c.h" @@ -101,7 +102,7 @@ } else { \ DEBUG(1, ("OK : %s\n", msg)); \ } - +/* WERROR WBEM_ConnectServer(struct com_context *ctx, const char *server, const char *nspace, const char *user, const char *password, const char *locale, uint32_t flags, const char *authority, struct IWbemContext* wbem_ctx, struct IWbemServices** services) { struct GUID clsid; @@ -110,6 +111,18 @@ struct IUnknown **mqi; struct IWbemLevel1Login *pL; + if (user) { + char *cred; + struct cli_credentials *cc; + + cred = talloc_asprintf(NULL, "%s%%%s", user, password); + cc = cli_credentials_init(ctx); + cli_credentials_set_conf(cc); + cli_credentials_parse_string(cc, cred, CRED_SPECIFIED); + dcom_set_server_credentials(ctx, server, cc); + talloc_free(cred); + } + GUID_from_string(CLSID_WBEMLEVEL1LOGIN, &clsid); GUID_from_string(COM_IWBEMLEVEL1LOGIN_UUID, &iid); result = dcom_create_object(ctx, &clsid, server, 1, &iid, &mqi, &coresult); @@ -124,7 +137,7 @@ error: return result; } - +*/ WERROR WBEM_RemoteExecute(struct IWbemServices *pWS, const char *cmdline, uint32_t *ret_code) { struct IWbemClassObject *wco = NULL; Property changes on: trunk/wmi/pycom ___________________________________________________________________ Name: svn:ignore + *.pyc Added: trunk/wmi/pycom/pythoncom.py Added: trunk/wmi/pycom/pywintypes.py Property changes on: trunk/wmi/pycom/win32com ___________________________________________________________________ Name: svn:ignore + *.pyc Added: trunk/wmi/pycom/win32com/__init__.py Added: trunk/wmi/pycom/win32com/client.py |
From: <sv...@ze...> - 2007-03-01 22:39:43
|
Author: ian Date: 2007-03-01 16:39:43 -0600 (Thu, 01 Mar 2007) New Revision: 4169 Added: trunk/Products/ZenModel/skins/zenmodel/logo2.gif trunk/Products/ZenWidgets/skins/zenui/infobar_bg.gif Modified: trunk/Products/ZenModel/skins/zenmodel/logo.gif trunk/Products/ZenModel/skins/zenmodel/templates.pt trunk/Products/ZenModel/skins/zenmodel/zenoss.css Log: * Moved the breadcrumbs up into the infoBar. * Modified the logo. * More realigning and whatnot to come. Modified: trunk/Products/ZenModel/skins/zenmodel/logo.gif =================================================================== (Binary files differ) Added: trunk/Products/ZenModel/skins/zenmodel/logo2.gif Property changes on: trunk/Products/ZenModel/skins/zenmodel/logo2.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/Products/ZenModel/skins/zenmodel/templates.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/templates.pt 2007-03-01 21:05:08 UTC (rev 4168) +++ trunk/Products/ZenModel/skins/zenmodel/templates.pt 2007-03-01 22:39:43 UTC (rev 4169) @@ -19,6 +19,7 @@ <tal:block metal:use-macro="here/dialogmacros/macros/dialog_with_buttons"/> <div id="frame"> <div metal:use-macro="here/templates/macros/topPane"/> + <div metal:use-macro="here/templates/macros/infoBar"/> <div id="paneToggle"> <img src="hide.png" alt="Hide/Show" onclick="toggleLeftPane();"/> </div> @@ -30,11 +31,13 @@ <div metal:use-macro="here/templates/macros/leftPane"/> <div id="rightPane"> <tal:block metal:define-slot="rightPane"> + <!-- <div id="breadCrumbPane"> <tal:block metal:define-slot="breadCrumbPane"> /DEFAULT </tal:block> </div> + --> <div id="contentPane"> <tal:block metal:define-slot="contentPane"> CONTENT GOES HERE @@ -56,9 +59,11 @@ <tal:block metal:define-macro="page2"> <html metal:use-macro="here/templates/macros/page1" > <tal:block metal:fill-slot="rightPane"> + <!-- <tal:block metal:define-slot="breadCrumbPane"> <div metal:use-macro="here/templates/macros/breadCrumbPane"/> </tal:block> + --> <div metal:use-macro="here/templates/macros/tabsPane"/> <div id="contentPane"> <tal:block metal:define-slot="contentPane"> @@ -74,8 +79,11 @@ ====================================================== --> <tal:block metal:define-macro="page3"> <html metal:use-macro="here/templates/macros/page1" > + <tal:block metal:fill-slot="infoBar"> + <div metal:use-macro="here/templates/macros/breadCrumbPane"/> + </tal:block> + <tal:block metal:fill-slot="rightPane"> - <div metal:use-macro="here/templates/macros/breadCrumbPane"/> <div id="contentPane"> <tal:block metal:define-slot="contentPane"> CONTENT GOES HERE @@ -122,7 +130,6 @@ | Core </div> <div id="settings"> - <div class="settingsleftcorner"> </div> <ul> <li> <tal:block tal:content="request/AUTHENTICATED_USER"/> @@ -151,6 +158,13 @@ </div> <!-- ====================================================== + infoBar - second bar on the page, for breadcrumbs et al + ====================================================== --> +<div id="infoBar" metal:define-macro="infoBar"> +<div metal:use-macro="here/templates/macros/breadCrumbPane"></div> +</div> + +<!-- ====================================================== leftPane - standard left side and nav ====================================================== --> <div id="leftPane" metal:define-macro="leftPane"> Modified: trunk/Products/ZenModel/skins/zenmodel/zenoss.css =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-03-01 21:05:08 UTC (rev 4168) +++ trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-03-01 22:39:43 UTC (rev 4169) @@ -20,14 +20,25 @@ #topPane{ background: #fff; - height: 40px; + height: 55px; padding-left:0px; padding-right:10px; border: 0px solid red; margin: 0px; - background: #fff url(bg_topPane.gif) repeat-y right top; + border-bottom: 1px solid black; + background: #666 url(); } +#infoBar { + background: #ffffe0 url('infobar_bg.gif') top left repeat-x; + border-bottom: 1px solid #444; + height: 25px; + line-height: 25px; + margin-bottom: 10px; + padding-left: 10px; + padding-top: 5px; +} + #logo { padding:0; margin:0; @@ -37,47 +48,37 @@ } div.logo { - background: transparent url('logo.gif') top left no-repeat; - padding-left: 180px; -color: #98a7c3; -padding-top: 1px; -vertical-align: middle; -position: absolute; -top: 5px; -left: 5px; -font-size: 24px; -font-weight: 400; -font-variant: small-caps; -height: 42px; -line-height: 42px; + background: transparent url('logo2.gif') top left no-repeat; + padding-left: 200px; + color: #a9b8d4; + vertical-align: middle; + font-weight: bold; + position: absolute; + top: 5px; + left: 5px; + font-size: 26px; + font-weight: 400; + font-variant: small-caps; + height: 50px; + line-height: 50px; } /* ======SEARCH AND NAV TOP RIGHT====== */ #settings { - background: transparent url(settingsbox_bg.gif) repeat-x; color: white; + letter-spacing: 1px; position: absolute; top: 0px; right: 0px; z-index: 3000px; - height: 50px; padding: 0pt; } -#settings div.settingsleftcorner { - position: absolute; - top: 0px; - left: 0px; - width: 7px; - height: 51px; - background: white url(settingsbox_bg_left.gif) no-repeat; -} #settings ul { list-style-type: none; margin-right: 200px; - height: 45px; margin-left: 0px; } @@ -96,7 +97,7 @@ background: transparent url('search_box_bg.gif') 5px 5px no-repeat; width: 183px; position: absolute; - top: 0px; + top: 6px; right: 0px; height: 100% } @@ -192,8 +193,9 @@ /*#rightPane table {margin-left: 5px; }*/ #breadCrumbPane { - color: black; - font-size: 10pt; + color: #444; + font-size: 12pt; + letter-spacing: 1px; padding-top: 0px; padding-bottom: 0px; padding-left: 15px; Added: trunk/Products/ZenWidgets/skins/zenui/infobar_bg.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/infobar_bg.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream |
From: <sv...@ze...> - 2007-03-01 21:05:21
|
Author: marc Date: 2007-03-01 15:05:08 -0600 (Thu, 01 Mar 2007) New Revision: 4168 Added: trunk/inst/docs/ZenPack.txt Log: #928 * HelloWorldZenPack docs Added: trunk/inst/docs/ZenPack.txt |
From: <sv...@ze...> - 2007-03-01 20:09:14
|
Author: ian Date: 2007-03-01 14:09:14 -0600 (Thu, 01 Mar 2007) New Revision: 4167 Added: trunk/Products/ZenWidgets/skins/zenui/search_box_bg.gif trunk/Products/ZenWidgets/skins/zenui/settingsbox_bg.gif trunk/Products/ZenWidgets/skins/zenui/settingsbox_bg_left.gif Modified: trunk/Products/ZenModel/skins/zenmodel/templates.pt trunk/Products/ZenModel/skins/zenmodel/zenoss.css trunk/Products/ZenWidgets/skins/zenui/filter_box_bg.gif trunk/Products/ZenWidgets/skins/zenui/filterbox.css Log: * Settings menu and search box CSS and image work Modified: trunk/Products/ZenModel/skins/zenmodel/templates.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/templates.pt 2007-03-01 19:20:57 UTC (rev 4166) +++ trunk/Products/ZenModel/skins/zenmodel/templates.pt 2007-03-01 20:09:14 UTC (rev 4167) @@ -115,35 +115,40 @@ <!-- ====================================================== topPane - standard top area with logo, etc... ====================================================== --> -<table id="topPane" metal:define-macro="topPane" - cellpadding="0" cellspacing="0" border="0"> - <tr> - <td class="logo"> - <a href="http://www.zenoss.com"> - <img border="0" src="logo.gif" alt="Zenoss"> - </a> - </td> - <td class="search"> +<div id="topPane" metal:define-macro="topPane"> + <div class="logo" + tal:define="zenversion zenversion | string:Core" + tal:content="string:| ${zenversion}"> + | Core + </div> + <div id="settings"> + <div class="settingsleftcorner"> </div> + <ul> + <li> + <tal:block tal:content="request/AUTHENTICATED_USER"/> + </li> + <li> + <a tal:attributes="href here/dmd/ZenUsers/getUserSettingsUrl"> + Preferences</a> + </li> + <li> + <a href="/zport/dmd/logoutUser">Logout</a> + </li> + <li> + <a href="http://www.zenoss.com/help">Help</a> + </li> + </ul> + <div class="searchbox"> <form action="/zport/dmd/deviceSearchResults" method="POST" name="searchform"> - <input type="text" name="query" size="18" + <input type="text" name="query" + onkeypress="submitViaEnter(event)" + onclick="select(this.value)" tal:attributes="value request/query | string:"/> - <input type="submit" name="submit" value="Search"/> </form> - </td> - <td id="settings"> - <div class="menu"> - <img src="header_tab_left.gif" style="float: left;"/> - <tal:block tal:content="request/AUTHENTICATED_USER"/> - <span>|</span> - <a tal:attributes="href here/dmd/ZenUsers/getUserSettingsUrl"> - Preferences</a> - <span>|</span> <a href="/zport/dmd/logoutUser">Logout</a> - <span>|</span> <a href="http://www.zenoss.com/help">Help</a> </div> - </td> - </tr> -</table> + </div> +</div> <!-- ====================================================== leftPane - standard left side and nav Modified: trunk/Products/ZenModel/skins/zenmodel/zenoss.css =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-03-01 19:20:57 UTC (rev 4166) +++ trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-03-01 20:09:14 UTC (rev 4167) @@ -19,7 +19,6 @@ } #topPane{ - width:100%; background: #fff; height: 40px; padding-left:0px; @@ -34,53 +33,90 @@ margin:0; } -#logo a { padding:0; margin:0;} +#logo a { padding:0; margin:0; +} -td.logo { -width: 190px; -height: 35px; - +div.logo { + background: transparent url('logo.gif') top left no-repeat; + padding-left: 180px; +color: #98a7c3; +padding-top: 1px; +vertical-align: middle; +position: absolute; +top: 5px; +left: 5px; +font-size: 24px; +font-weight: 400; +font-variant: small-caps; +height: 42px; +line-height: 42px; } -td.search { - padding-left: 8px; -} -/* ADDED BY JM OCTOBER 24 2006 --- */ -#settings { vertical-align: bottom; width: 270px;} +/* ======SEARCH AND NAV TOP RIGHT====== */ +#settings { + background: transparent url(settingsbox_bg.gif) repeat-x; + color: white; + position: absolute; + top: 0px; + right: 0px; + z-index: 3000px; + height: 50px; + padding: 0pt; +} -#settings div.menu { - background: url(header_tab_right.gif) - right top; - height: 28px; width: 270px; - margin: 0px 10px 0px auto; - padding: 0px 10px 0px 0px; - text-align: center; - border: 0px solid red; +#settings div.settingsleftcorner { + position: absolute; + top: 0px; + left: 0px; + width: 7px; + height: 51px; + background: white url(settingsbox_bg_left.gif) no-repeat; } -#settings div.menu a{ color:#fff; text-decoration: none; line-height: 28px; text-decoration: none;} -#settings div.menu a:hover {text-decoration: underline;} +#settings ul { + list-style-type: none; + margin-right: 200px; + height: 45px; + margin-left: 0px; +} -#settings div.menu span { padding: 0px 1px 0px 1px;} +#settings ul li { + display: inline; + border-right: 1px inset white; + font-size: 10pt; + padding: 0px 10px; +} +#settings ul li { + font-variant: small-caps; + text-decoration: none; +} -/* END NEW BY JM --*/ +#settings div.searchbox { + background: transparent url('search_box_bg.gif') 5px 5px no-repeat; + width: 183px; + position: absolute; + top: 0px; + right: 0px; + height: 100% +} +#settings div.searchbox input[type="text"]{ + background: transparent none no-repeat; + border: medium none; + margin-top: 12px; + margin-left: 40px; + color: #444; + width: 100px; +} +/* ===================================== */ + + #topPane form{ margin:0; padding:0; } -#settings { - color: white; - /* - font-size: .8em; - */ - font-size: 8pt; - margin:0; - text-align:right; - /*padding-right: 20px;*/ -} #topPane a{ color: white; } @@ -149,7 +185,7 @@ padding: 5px; margin-left: 9.0em; /*margin-top: 5px;*/ - background: #b1bcd2 url(breadcrumb_left_curve.gif) no-repeat left top; + /* background: #b1bcd2 url(breadcrumb_left_curve.gif) no-repeat left top;*/ } Modified: trunk/Products/ZenWidgets/skins/zenui/filter_box_bg.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/filterbox.css =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/filterbox.css 2007-03-01 19:20:57 UTC (rev 4166) +++ trunk/Products/ZenWidgets/skins/zenui/filterbox.css 2007-03-01 20:09:14 UTC (rev 4167) @@ -16,9 +16,8 @@ font-size: 90%; margin-left: auto; margin-right: auto; - width: 100px; - padding-left: 10px; - text-align:center; + width: 95px; + padding-left: 20px; height: 21px; } Added: trunk/Products/ZenWidgets/skins/zenui/search_box_bg.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/search_box_bg.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/Products/ZenWidgets/skins/zenui/settingsbox_bg.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/settingsbox_bg.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/Products/ZenWidgets/skins/zenui/settingsbox_bg_left.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/settingsbox_bg_left.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream |
From: <sv...@ze...> - 2007-03-01 19:20:58
|
Author: marc Date: 2007-03-01 13:20:57 -0600 (Thu, 01 Mar 2007) New Revision: 4166 Modified: trunk/Products/ZenRRD/RenderServer.py trunk/Products/ZenUtils/PObjectCache.py Log: #998 * Caching bug fixed Modified: trunk/Products/ZenRRD/RenderServer.py =================================================================== --- trunk/Products/ZenRRD/RenderServer.py 2007-03-01 18:54:11 UTC (rev 4165) +++ trunk/Products/ZenRRD/RenderServer.py 2007-03-01 19:20:57 UTC (rev 4166) @@ -78,7 +78,6 @@ f = open(filename, "w") f.write(urllib.urlopen(remoteUrl).read()) f.close() - return self._loadfile(filename) else: gopts.insert(0, "--imgformat=%s" % ftype) #gopts.insert(0, "--lazy") @@ -95,9 +94,8 @@ log.exception("failed generating graph") log.warn(" ".join(gopts)) raise - return self._loadfile(filename) - self.addGraph(id, filename) - graph = self.getGraph(id, ftype, REQUEST) + self.addGraph(id, filename) + graph = self.getGraph(id, ftype, REQUEST) return graph Modified: trunk/Products/ZenUtils/PObjectCache.py =================================================================== --- trunk/Products/ZenUtils/PObjectCache.py 2007-03-01 18:54:11 UTC (rev 4165) +++ trunk/Products/ZenUtils/PObjectCache.py 2007-03-01 19:20:57 UTC (rev 4166) @@ -48,9 +48,8 @@ def addToCache(self, key, obj): """add an object to the cache""" cobj = CacheObj(obj, self.timeout) - self.addCacheObj(cobj) + self.cache[key] = cobj - def manage_clearCache(self, REQUEST=None): self.cleanCache(force=1) if REQUEST: |
From: <sv...@ze...> - 2007-03-01 18:54:11
|
Author: marc Date: 2007-03-01 12:54:11 -0600 (Thu, 01 Mar 2007) New Revision: 4165 Modified: trunk/Products/ZenModel/PerformanceConf.py trunk/Products/ZenRRD/RenderServer.py Log: #998 * DEBUG Modified: trunk/Products/ZenModel/PerformanceConf.py =================================================================== --- trunk/Products/ZenModel/PerformanceConf.py 2007-03-01 18:42:15 UTC (rev 4164) +++ trunk/Products/ZenModel/PerformanceConf.py 2007-03-01 18:54:11 UTC (rev 4165) @@ -242,7 +242,7 @@ gopts = url_quote('|'.join(gopts)) url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) + return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (url_quote(url),gopts,drange) else: return url @@ -258,7 +258,7 @@ gopts = url_quote('|'.join(gopts)) url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) + return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (url_quote(url),gopts,drange) else: return url @@ -268,7 +268,7 @@ gopts = url_quote('|'.join(gopts)) url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) + return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (url_quote(url),gopts,drange) else: return url Modified: trunk/Products/ZenRRD/RenderServer.py =================================================================== --- trunk/Products/ZenRRD/RenderServer.py 2007-03-01 18:42:15 UTC (rev 4164) +++ trunk/Products/ZenRRD/RenderServer.py 2007-03-01 18:54:11 UTC (rev 4165) @@ -63,13 +63,12 @@ security.declareProtected('View', 'render') - def render(self, gopts=None, drange=None, remoteUrl=None, id=None, ftype='PNG', REQUEST=None): + def render(self, gopts=None, drange=None, remoteUrl=None, ftype='PNG', REQUEST=None): """render a graph and return it""" gopts = gopts.split('|') gopts = [g for g in gopts if g] drange = int(drange) - if not id: - id = self.graphId(gopts, drange, ftype) + id = self.graphId(gopts, drange, ftype) graph = self.getGraph(id, ftype, REQUEST) if not graph: if not os.path.exists(self.tmpdir): @@ -77,8 +76,7 @@ filename = "%s/graph-%s" % (self.tmpdir,id) if remoteUrl: f = open(filename, "w") - url = '%s&id=%s' % (remoteUrl, id) - f.write(urllib.urlopen(url).read()) + f.write(urllib.urlopen(remoteUrl).read()) f.close() return self._loadfile(filename) else: |
From: <sv...@ze...> - 2007-03-01 18:42:17
|
Author: marc Date: 2007-03-01 12:42:15 -0600 (Thu, 01 Mar 2007) New Revision: 4164 Modified: trunk/Products/ZenModel/PerformanceConf.py trunk/Products/ZenRRD/RenderServer.py Log: Modified: trunk/Products/ZenModel/PerformanceConf.py =================================================================== --- trunk/Products/ZenModel/PerformanceConf.py 2007-03-01 18:05:33 UTC (rev 4163) +++ trunk/Products/ZenModel/PerformanceConf.py 2007-03-01 18:42:15 UTC (rev 4164) @@ -242,7 +242,7 @@ gopts = url_quote('|'.join(gopts)) url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (url_quote(url),gopts,drange) + return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) else: return url @@ -258,7 +258,7 @@ gopts = url_quote('|'.join(gopts)) url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (url_quote(url),gopts,drange) + return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) else: return url @@ -268,7 +268,7 @@ gopts = url_quote('|'.join(gopts)) url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (url_quote(url),gopts,drange) + return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) else: return url Modified: trunk/Products/ZenRRD/RenderServer.py =================================================================== --- trunk/Products/ZenRRD/RenderServer.py 2007-03-01 18:05:33 UTC (rev 4163) +++ trunk/Products/ZenRRD/RenderServer.py 2007-03-01 18:42:15 UTC (rev 4164) @@ -63,12 +63,13 @@ security.declareProtected('View', 'render') - def render(self, gopts=None, drange=None, remoteUrl=None, ftype='PNG', REQUEST=None): + def render(self, gopts=None, drange=None, remoteUrl=None, id=None, ftype='PNG', REQUEST=None): """render a graph and return it""" gopts = gopts.split('|') gopts = [g for g in gopts if g] drange = int(drange) - id = self.graphId(gopts, drange, ftype) + if not id: + id = self.graphId(gopts, drange, ftype) graph = self.getGraph(id, ftype, REQUEST) if not graph: if not os.path.exists(self.tmpdir): @@ -76,7 +77,8 @@ filename = "%s/graph-%s" % (self.tmpdir,id) if remoteUrl: f = open(filename, "w") - f.write(urllib.urlopen(remoteUrl).read()) + url = '%s&id=%s' % (remoteUrl, id) + f.write(urllib.urlopen(url).read()) f.close() return self._loadfile(filename) else: @@ -87,7 +89,6 @@ gopts.insert(0, '--end=%d' % end) gopts.insert(0, '--start=%d' % start) gopts.insert(0, filename) - log.debug(" ".join(gopts)) try: rrdtool.graph(*gopts) except Exception, ex: |
From: <sv...@ze...> - 2007-03-01 18:05:38
|
Author: marc Date: 2007-03-01 12:05:33 -0600 (Thu, 01 Mar 2007) New Revision: 4163 Modified: trunk/Products/ZenModel/PerformanceConf.py trunk/Products/ZenRRD/RenderServer.py Log: #998 * Passing both remoteUrl and gopts to proxy Modified: trunk/Products/ZenModel/PerformanceConf.py =================================================================== --- trunk/Products/ZenModel/PerformanceConf.py 2007-03-01 16:54:56 UTC (rev 4162) +++ trunk/Products/ZenModel/PerformanceConf.py 2007-03-01 18:05:33 UTC (rev 4163) @@ -242,7 +242,7 @@ gopts = url_quote('|'.join(gopts)) url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) + return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (url_quote(url),gopts,drange) else: return url @@ -258,7 +258,7 @@ gopts = url_quote('|'.join(gopts)) url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) + return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (url_quote(url),gopts,drange) else: return url @@ -268,7 +268,7 @@ gopts = url_quote('|'.join(gopts)) url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) + return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (url_quote(url),gopts,drange) else: return url Modified: trunk/Products/ZenRRD/RenderServer.py =================================================================== --- trunk/Products/ZenRRD/RenderServer.py 2007-03-01 16:54:56 UTC (rev 4162) +++ trunk/Products/ZenRRD/RenderServer.py 2007-03-01 18:05:33 UTC (rev 4163) @@ -65,28 +65,27 @@ security.declareProtected('View', 'render') def render(self, gopts=None, drange=None, remoteUrl=None, ftype='PNG', REQUEST=None): """render a graph and return it""" - if remoteUrl: - filename = "%s/graph-%s" % (self.tmpdir,remoteUrl) - f = open(filename, "w") - f.write(urllib.urlopen(remoteUrl).read()) - f.close() - return self._loadfile(filename) - else: - gopts = gopts.split('|') - gopts = [g for g in gopts if g] - drange = int(drange) - id = self.graphId(gopts, drange, ftype) - graph = self.getGraph(id, ftype, REQUEST) - if not graph: + gopts = gopts.split('|') + gopts = [g for g in gopts if g] + drange = int(drange) + id = self.graphId(gopts, drange, ftype) + graph = self.getGraph(id, ftype, REQUEST) + if not graph: + if not os.path.exists(self.tmpdir): + os.makedirs(self.tmpdir) + filename = "%s/graph-%s" % (self.tmpdir,id) + if remoteUrl: + f = open(filename, "w") + f.write(urllib.urlopen(remoteUrl).read()) + f.close() + return self._loadfile(filename) + else: gopts.insert(0, "--imgformat=%s" % ftype) #gopts.insert(0, "--lazy") end = int(time.time())-300 start = end - drange gopts.insert(0, '--end=%d' % end) gopts.insert(0, '--start=%d' % start) - if not os.path.exists(self.tmpdir): - os.makedirs(self.tmpdir) - filename = "%s/graph-%s" % (self.tmpdir,id) gopts.insert(0, filename) log.debug(" ".join(gopts)) try: @@ -100,7 +99,7 @@ return self._loadfile(filename) self.addGraph(id, filename) graph = self.getGraph(id, ftype, REQUEST) - return graph + return graph security.declareProtected('View', 'plugin') |
From: <sv...@ze...> - 2007-03-01 16:55:14
|
Author: marc Date: 2007-03-01 10:54:56 -0600 (Thu, 01 Mar 2007) New Revision: 4162 Modified: trunk/Products/ZenModel/PerformanceConf.py trunk/Products/ZenRRD/RenderServer.py Log: #998 * passing only remoteUrl to proxy Modified: trunk/Products/ZenModel/PerformanceConf.py =================================================================== --- trunk/Products/ZenModel/PerformanceConf.py 2007-03-01 16:10:48 UTC (rev 4161) +++ trunk/Products/ZenModel/PerformanceConf.py 2007-03-01 16:54:56 UTC (rev 4162) @@ -240,10 +240,11 @@ targetpath = performancePath(targetpath[1:]) gopts = view.graphOpts(context, targetpath, targettype) gopts = url_quote('|'.join(gopts)) + url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (urlquote(self.renderurl),gopts,drange) + return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) else: - return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) + return url def performanceMGraphUrl(self, context, targetsmap, view, drange): @@ -255,19 +256,21 @@ ntm.append((fulltarget, targettype)) gopts = view.multiGraphOpts(context, ntm) gopts = url_quote('|'.join(gopts)) + url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (urlquote(self.renderurl),gopts,drange) + return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) else: - return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) + return url def renderCustomUrl(self, gopts, drange): "return the for a list of custom gopts for a graph" gopts = self._fullPerformancePath(gopts) gopts = url_quote('|'.join(gopts)) + url = "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) if self.renderurl.startswith("http"): - return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (urlquote(self.renderurl),gopts,drange) + return "/zport/RenderServer/render?remoteUrl=%s" % url_quote(url) else: - return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) + return url def performanceCustomSummary(self, gopts): "fill out full path for custom gopts and call to server" Modified: trunk/Products/ZenRRD/RenderServer.py =================================================================== --- trunk/Products/ZenRRD/RenderServer.py 2007-03-01 16:10:48 UTC (rev 4161) +++ trunk/Products/ZenRRD/RenderServer.py 2007-03-01 16:54:56 UTC (rev 4162) @@ -63,29 +63,30 @@ security.declareProtected('View', 'render') - def render(self, gopts, drange, remoteUrl=None, ftype='PNG', REQUEST=None): + def render(self, gopts=None, drange=None, remoteUrl=None, ftype='PNG', REQUEST=None): """render a graph and return it""" - gopts = gopts.split('|') - gopts = [g for g in gopts if g] - drange = int(drange) - id = self.graphId(gopts, drange, ftype) - graph = self.getGraph(id, ftype, REQUEST) - if not graph: - if not os.path.exists(self.tmpdir): - os.makedirs(self.tmpdir) - filename = "%s/graph-%s" % (self.tmpdir,id) - if remoteUrl: - url = "%s/render?gopts=%s&drange=%d" % (remoteUrl,gopts,drange) - f = open(filename, "wb") - f.write(urllib.urlopen(url).read()) - f.close() - else: + if remoteUrl: + filename = "%s/graph-%s" % (self.tmpdir,remoteUrl) + f = open(filename, "w") + f.write(urllib.urlopen(remoteUrl).read()) + f.close() + return self._loadfile(filename) + else: + gopts = gopts.split('|') + gopts = [g for g in gopts if g] + drange = int(drange) + id = self.graphId(gopts, drange, ftype) + graph = self.getGraph(id, ftype, REQUEST) + if not graph: gopts.insert(0, "--imgformat=%s" % ftype) #gopts.insert(0, "--lazy") end = int(time.time())-300 start = end - drange gopts.insert(0, '--end=%d' % end) gopts.insert(0, '--start=%d' % start) + if not os.path.exists(self.tmpdir): + os.makedirs(self.tmpdir) + filename = "%s/graph-%s" % (self.tmpdir,id) gopts.insert(0, filename) log.debug(" ".join(gopts)) try: @@ -96,10 +97,10 @@ log.exception("failed generating graph") log.warn(" ".join(gopts)) raise - return self._loadfile(filename) - self.addGraph(id, filename) - graph = self.getGraph(id, ftype, REQUEST) - return graph + return self._loadfile(filename) + self.addGraph(id, filename) + graph = self.getGraph(id, ftype, REQUEST) + return graph security.declareProtected('View', 'plugin') |
From: <sv...@ze...> - 2007-03-01 16:10:54
|
Author: edahl Date: 2007-03-01 10:10:48 -0600 (Thu, 01 Mar 2007) New Revision: 4161 Modified: trunk/Products/ZenModel/skins/zenmodel/zenossConfigs.pt Log: * fix type on about page Modified: trunk/Products/ZenModel/skins/zenmodel/zenossConfigs.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/zenossConfigs.pt 2007-03-01 15:50:53 UTC (rev 4160) +++ trunk/Products/ZenModel/skins/zenmodel/zenossConfigs.pt 2007-03-01 16:10:48 UTC (rev 4161) @@ -15,7 +15,7 @@ <tr tal:repeat="daemon here/getZenossDaemonConfigs"> <th class="tableheader" tal:content="daemon/name" /> <td class="tablevalues"><a tal:attributes=" - href string:${url}/viewDaemonConfig?daemon=${daemon/name}">view configiuration</a></td> + href string:${url}/viewDaemonConfig?daemon=${daemon/name}">view configuration</a></td> <td class="tablevalues"><a tal:attributes=" href string:${url}/editDaemonConfig?daemon=${daemon/name}">edit configuration</a></td> </tr> |
From: <sv...@ze...> - 2007-03-01 15:51:00
|
Author: ian Date: 2007-03-01 09:50:53 -0600 (Thu, 01 Mar 2007) New Revision: 4160 Modified: trunk/Products/ZenModel/skins/zenmodel/zenoss.css trunk/Products/ZenWidgets/skins/zenui/contextmenu_tab.gif trunk/Products/ZenWidgets/skins/zenui/contextmenu_tab_depressed.gif trunk/Products/ZenWidgets/skins/zenui/menus.css trunk/Products/ZenWidgets/skins/zenui/tab_bg_selected.gif trunk/Products/ZenWidgets/skins/zenui/tables.css trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt Log: * Size and padding tweaks on the tabs. Modified: trunk/Products/ZenModel/skins/zenmodel/zenoss.css =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-03-01 15:20:22 UTC (rev 4159) +++ trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-03-01 15:50:53 UTC (rev 4160) @@ -140,8 +140,7 @@ } #rightPane { - /* - position: absolute; + /*position: absolute; left: 7.9em; right:0; margin-left: 7.9em; @@ -159,8 +158,8 @@ { color: black; font-size: 10pt; - padding-top: 5px; - padding-bottom: 5px; + padding-top: 0px; + padding-bottom: 0px; padding-left: 15px; margin: 0px; font-weight: bold; @@ -175,6 +174,10 @@ */ font-weight: inherit; text-decoration: none; } +#breadCrumbPane a:hover +{ + text-decoration: underline; +} #tabsPane { @@ -222,7 +225,7 @@ table.tabtable { font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; - height: 26px; + height: 23px; margin: 0px; padding: 0px; } @@ -235,12 +238,12 @@ table.tabtable td a.tabletitle { display: block; - padding: 0px 20px; + padding: 0px 15px; border-left: 1px solid #444; border-right: 1px solid #444; border-top: 1px solid black; background: transparent url(titlebar_bg.gif) repeat-x bottom left; - height: 25px; + height: 23px; } table.tabtable td a.tabletitle:hover { background: transparent url(titlebar_bg_depressed.gif) repeat-x bottom left; @@ -248,7 +251,7 @@ table.tabtable td.contextmenutab a.tabletitle { width: 53px; - height: 27px; + height: 25px; padding: 0pt; border-top: 0pt; border-right: 0pt; @@ -262,7 +265,7 @@ table.tabtable td.tabletitleselected { color: #333333; - height:34px; + height:32px; font-size:8pt; padding: 0px; border: 0px; @@ -285,9 +288,6 @@ background: none; } -table.tabtable td.tabletitleselected a:hover { - background: transparent url(tab_bg_selected.gif) no-repeat top left; -} table.zentable { @@ -298,7 +298,6 @@ margin-right: 2em; font-weight: normal; margin: 0px; - margin-top: 1em; padding: 0pt; background-color: #E0E0E0; } @@ -391,7 +390,7 @@ .tabletitletext { margin-left: 52px; font-weight: bold; - font-size: 0.9em; + font-size: 10pt; } .tabletitlecontainer .leftcorner { Modified: trunk/Products/ZenWidgets/skins/zenui/contextmenu_tab.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/contextmenu_tab_depressed.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/menus.css =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/menus.css 2007-03-01 15:20:22 UTC (rev 4159) +++ trunk/Products/ZenWidgets/skins/zenui/menus.css 2007-03-01 15:50:53 UTC (rev 4160) @@ -4,33 +4,33 @@ width: 12em; z-index: 2000; } + .contextmenu * , .littlemenu * { padding: 0; margin:0; font-weight: normal; } + .littlemenu, .contextmenu { position: relative; cursor:pointer; } + .littlemenu { - /*top: 3px;*/ position:absolute; right:0px; bottom: 0px; z-index: 2007; } -td.contextmenutab { - background: transparent url('titlebar_right_corner.gif') bottom left no-repeat; -} + + .contextmenubutton { display: inline; min-width: 5em; text-align: center; - height: 2em; - line-height: 2em; + height: 24px; cursor: pointer; float:right; margin-right:10px; @@ -44,7 +44,8 @@ position: absolute; right: 0px; width: 172px; - top: 25px; + top: 24px; + border-top: 0px; z-index: 3005; padding-bottom: 10px; padding-top: 10px; @@ -59,6 +60,7 @@ z-index: 2000; width: 174px; } + div.menu_top { background: transparent url('menu_top.gif') top left no-repeat; position: absolute; @@ -72,6 +74,7 @@ .devmovemenuitems { top: 0px; } + ul.zenMenu { list-style-type: none; border-left: 1px solid #5A6F8F; @@ -82,6 +85,7 @@ z-index: 2001; background-color: #666; } + ul.zenMenu li a { padding-left: 1em; text-align: justify; @@ -91,10 +95,12 @@ padding: 5px; height: 100%; } + ul.zenMenu li { border-bottom: 1px dotted grey; line-height: 2em; } + ul.zenMenu li a:hover { background-color: #DEDEFF; color: black; Modified: trunk/Products/ZenWidgets/skins/zenui/tab_bg_selected.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/tables.css =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/tables.css 2007-03-01 15:20:22 UTC (rev 4159) +++ trunk/Products/ZenWidgets/skins/zenui/tables.css 2007-03-01 15:50:53 UTC (rev 4160) @@ -6,10 +6,11 @@ width: 100%; top: -3px; font-weight: normal; - font-size: 8pt; + font-size: 10pt; font-family: Verdana, Arial, Helvetica, sans-serif; } table.innerzentable tr td { - padding: 2px; + padding: 1px; + font-size: 11pt; } Modified: trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt 2007-03-01 15:20:22 UTC (rev 4159) +++ trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt 2007-03-01 15:50:53 UTC (rev 4160) @@ -69,7 +69,6 @@ <tal:block metal:define-macro="filterbox"> <link href="filterbox.css" rel="stylesheet" type="text/css" /> -<span style="position:absolute;right:190px;font-weight:normal;">Filter:</span> <div class="filterbox" tal:define="ts python:here.ZenTableManager.getTableState(tableName); message request/SESSION/message | nothing;"> |
From: <sv...@ze...> - 2007-03-01 15:20:55
|
Author: marc Date: 2007-03-01 09:20:22 -0600 (Thu, 01 Mar 2007) New Revision: 4159 Modified: trunk/Products/ZenModel/DmdBuilder.py trunk/Products/ZenModel/PerformanceConf.py trunk/Products/ZenModel/skins/zenmodel/editPerformanceConf.pt trunk/Products/ZenModel/skins/zenmodel/viewPerformanceConfOverview.pt trunk/Products/ZenRRD/RenderServer.py trunk/Products/ZenRRD/__init__.py Log: #998 * Combined ProxyRenderServer with RenderServer Modified: trunk/Products/ZenModel/DmdBuilder.py =================================================================== --- trunk/Products/ZenModel/DmdBuilder.py 2007-03-01 14:16:18 UTC (rev 4158) +++ trunk/Products/ZenModel/DmdBuilder.py 2007-03-01 15:20:22 UTC (rev 4159) @@ -48,7 +48,6 @@ from Products.ZenModel.PerformanceConf import manage_addPerformanceConf from Products.ZenModel.StatusMonitorConf import manage_addStatusMonitorConf from Products.ZenRRD.RenderServer import manage_addRenderServer -from Products.ZenRRD.ProxyRenderServer import manage_addProxyRenderServer from Products.ZenReports.ReportServer import manage_addReportServer from Products.ZenEvents.MySqlEventManager import manage_addMySqlEventManager from Products.ZenEvents.EventClass import manage_addEventClass @@ -116,7 +115,6 @@ manage_addPerformanceConf(mons.Performance, "localhost") crk = mons.Performance._getOb("localhost") crk.renderurl = "/zport/RenderServer" - crk.proxyurl = "/zport/ProxyRenderServer" manage_addStatusMonitorConf(mons.StatusMonitors,"localhost") @@ -154,7 +152,6 @@ manage_addZenossInfo(self.portal) manage_addDirectoryView(self.portal,'ZenUtils/js', 'js') manage_addRenderServer(self.portal, "RenderServer") - manage_addProxyRenderServer(self.portal, "ProxyRenderServer") manage_addReportServer(self.portal, "ReportServer") manage_addMySqlEventManager(self.dmd, evtuser=self.evtuser, evtpass=self.evtpass, evtdb=self.evtdb) Modified: trunk/Products/ZenModel/PerformanceConf.py =================================================================== --- trunk/Products/ZenModel/PerformanceConf.py 2007-03-01 14:16:18 UTC (rev 4158) +++ trunk/Products/ZenModel/PerformanceConf.py 2007-03-01 15:20:22 UTC (rev 4159) @@ -41,6 +41,8 @@ from ZenDate import ZenDate +from Products.PythonScripts.standard import url_quote + PERF_ROOT = os.path.join(os.environ['ZENHOME'], "perf") def performancePath(target): @@ -71,7 +73,6 @@ renderurl = '' renderuser = '' renderpass = '' - proxyurl = '' defaultRRDCreateCommand = ( 'RRA:AVERAGE:0.5:1:2016', # every 5 mins for 7 days 'RRA:AVERAGE:0.5:4:2016', # every 20 mins for 4 weeks @@ -88,7 +89,6 @@ {'id':'renderurl','type':'string','mode':'w'}, {'id':'renderuser','type':'string','mode':'w'}, {'id':'renderpass','type':'string','mode':'w'}, - {'id':'proxyurl','type':'string','mode':'w'}, {'id':'defaultRRDCreateCommand','type':'lines','mode':'w'}, ) _relations = Monitor._relations + ( @@ -241,7 +241,7 @@ gopts = view.graphOpts(context, targetpath, targettype) gopts = url_quote('|'.join(gopts)) if self.renderurl.startswith("http"): - return "%s/render?gopts=%s&drange=%d" % (self.proxyurl,gopts,drange) + return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (urlquote(self.renderurl),gopts,drange) else: return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) @@ -256,7 +256,7 @@ gopts = view.multiGraphOpts(context, ntm) gopts = url_quote('|'.join(gopts)) if self.renderurl.startswith("http"): - return "%s/render?gopts=%s&drange=%d" % (self.proxyurl,gopts,drange) + return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (urlquote(self.renderurl),gopts,drange) else: return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) @@ -265,7 +265,7 @@ gopts = self._fullPerformancePath(gopts) gopts = url_quote('|'.join(gopts)) if self.renderurl.startswith("http"): - return "%s/render?gopts=%s&drange=%d" % (self.proxyurl,gopts,drange) + return "/zport/RenderServer/render?remoteUrl=%s&gopts=%s&drange=%d" % (urlquote(self.renderurl),gopts,drange) else: return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) Modified: trunk/Products/ZenModel/skins/zenmodel/editPerformanceConf.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/editPerformanceConf.pt 2007-03-01 14:16:18 UTC (rev 4158) +++ trunk/Products/ZenModel/skins/zenmodel/editPerformanceConf.pt 2007-03-01 15:20:22 UTC (rev 4159) @@ -46,13 +46,6 @@ </td> </tr> <tr> - <td class="tableheader" align="left">Proxy URL</td> - <td class="tablevalues"> - <input class="tablevalues" type="text" name="proxyurl" size="50" - tal:attributes="value here/proxyurl" /> - </td> - </tr> - <tr> <td class="tableheader" align="left">Default RRD Create Command</td> <td class="tablevalues"> <textarea class="tablevalues" rows=5 cols=60 Modified: trunk/Products/ZenModel/skins/zenmodel/viewPerformanceConfOverview.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/viewPerformanceConfOverview.pt 2007-03-01 14:16:18 UTC (rev 4158) +++ trunk/Products/ZenModel/skins/zenmodel/viewPerformanceConfOverview.pt 2007-03-01 15:20:22 UTC (rev 4159) @@ -21,10 +21,6 @@ <td class="tableheader">Render User</td> <td class="tablevalues" tal:content="here/renderuser"/> </tr> - <tr> - <td class="tableheader">Proxy URL</td> - <td class="tablevalues" tal:content="here/proxyurl" /> - </tr> </table> <span metal:use-macro="here/templates/macros/contentSeparator"/> Modified: trunk/Products/ZenRRD/RenderServer.py =================================================================== --- trunk/Products/ZenRRD/RenderServer.py 2007-03-01 14:16:18 UTC (rev 4158) +++ trunk/Products/ZenRRD/RenderServer.py 2007-03-01 15:20:22 UTC (rev 4159) @@ -15,6 +15,7 @@ import os import time import logging +import urllib from AccessControl import ClassSecurityInfo from Globals import InitializeClass @@ -62,7 +63,7 @@ security.declareProtected('View', 'render') - def render(self, gopts, drange, ftype='PNG', REQUEST=None): + def render(self, gopts, drange, remoteUrl=None, ftype='PNG', REQUEST=None): """render a graph and return it""" gopts = gopts.split('|') gopts = [g for g in gopts if g] @@ -70,25 +71,31 @@ id = self.graphId(gopts, drange, ftype) graph = self.getGraph(id, ftype, REQUEST) if not graph: - gopts.insert(0, "--imgformat=%s" % ftype) - #gopts.insert(0, "--lazy") - end = int(time.time())-300 - start = end - drange - gopts.insert(0, '--end=%d' % end) - gopts.insert(0, '--start=%d' % start) if not os.path.exists(self.tmpdir): os.makedirs(self.tmpdir) filename = "%s/graph-%s" % (self.tmpdir,id) - gopts.insert(0, filename) - log.debug(" ".join(gopts)) - try: - rrdtool.graph(*gopts) - except Exception, ex: - if ex.args[0].find('No such file or directory') > -1: - return None - log.exception("failed generating graph") - log.warn(" ".join(gopts)) - raise + if remoteUrl: + url = "%s/render?gopts=%s&drange=%d" % (remoteUrl,gopts,drange) + f = open(filename, "wb") + f.write(urllib.urlopen(url).read()) + f.close() + else: + gopts.insert(0, "--imgformat=%s" % ftype) + #gopts.insert(0, "--lazy") + end = int(time.time())-300 + start = end - drange + gopts.insert(0, '--end=%d' % end) + gopts.insert(0, '--start=%d' % start) + gopts.insert(0, filename) + log.debug(" ".join(gopts)) + try: + rrdtool.graph(*gopts) + except Exception, ex: + if ex.args[0].find('No such file or directory') > -1: + return None + log.exception("failed generating graph") + log.warn(" ".join(gopts)) + raise return self._loadfile(filename) self.addGraph(id, filename) graph = self.getGraph(id, ftype, REQUEST) Modified: trunk/Products/ZenRRD/__init__.py =================================================================== --- trunk/Products/ZenRRD/__init__.py 2007-03-01 14:16:18 UTC (rev 4158) +++ trunk/Products/ZenRRD/__init__.py 2007-03-01 15:20:22 UTC (rev 4159) @@ -14,15 +14,9 @@ def initialize(registrar): # Global module assertions for Python scripts from RenderServer import RenderServer,addRenderServer,manage_addRenderServer - from ProxyRenderServer import ProxyRenderServer,addProxyRenderServer,manage_addProxyRenderServer registrar.registerClass( RenderServer, permission="Add DMD Objects", constructors = (addRenderServer, manage_addRenderServer), - ) - registrar.registerClass( - ProxyRenderServer, - permission="Add DMD Objects", - constructors = (addProxyRenderServer, manage_addProxyRenderServer), ) \ No newline at end of file |
From: <sv...@ze...> - 2007-03-01 14:16:18
|
Author: ian Date: 2007-03-01 08:16:18 -0600 (Thu, 01 Mar 2007) New Revision: 4158 Modified: trunk/Products/ZenWidgets/skins/zenui/menus.css trunk/Products/ZenWidgets/skins/zenui/tab_bg_selected.gif Log: * Changed an image * Fixed menu alignment during font resizing Modified: trunk/Products/ZenWidgets/skins/zenui/menus.css =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/menus.css 2007-03-01 04:53:27 UTC (rev 4157) +++ trunk/Products/ZenWidgets/skins/zenui/menus.css 2007-03-01 14:16:18 UTC (rev 4158) @@ -16,7 +16,11 @@ cursor:pointer; } .littlemenu { - top: 3px; + /*top: 3px;*/ + position:absolute; + right:0px; + bottom: 0px; + z-index: 2007; } td.contextmenutab { background: transparent url('titlebar_right_corner.gif') bottom left no-repeat; @@ -66,8 +70,7 @@ } .devmovemenuitems { - top: -3px; - right: 0px; + top: 0px; } ul.zenMenu { list-style-type: none; @@ -102,20 +105,13 @@ div.devmovemenu { width: 52px; - color: white; - text-align:left; z-index: 2007; border-left: 1px inset #666; - padding: 0px; - margin: 0px; + height: 25px; + background: #E0E0E0 url('actions_button.gif') bottom left no-repeat; position:absolute; - text-align: center; right:0px; - bottom: 3px; - height:25px; - line-height: 25px; - float: right; - background: #E0E0E0 url('actions_button.gif') no-repeat; + bottom: 0px; } div.devmovemenu span { @@ -124,7 +120,7 @@ } div.devmovemenu:hover { - background: #E0E0E0 url('actions_button_depressed.gif') no-repeat; + background: #E0E0E0 url('actions_button_depressed.gif') bottom left no-repeat; } /* IE HACKS */ Modified: trunk/Products/ZenWidgets/skins/zenui/tab_bg_selected.gif =================================================================== (Binary files differ) |
From: <sv...@ze...> - 2007-03-01 04:53:27
|
Author: ian Date: 2007-02-28 22:53:27 -0600 (Wed, 28 Feb 2007) New Revision: 4157 Added: trunk/Products/ZenWidgets/skins/zenui/actions_button_depressed_blue.gif trunk/Products/ZenWidgets/skins/zenui/contextmenu_tab.gif trunk/Products/ZenWidgets/skins/zenui/contextmenu_tab_depressed.gif trunk/Products/ZenWidgets/skins/zenui/tab_bg.gif trunk/Products/ZenWidgets/skins/zenui/tab_bg_selected.gif trunk/Products/ZenWidgets/skins/zenui/titlebar_bg_depressed.gif Modified: trunk/Products/ZenModel/skins/zenmodel/deviceList.pt trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt trunk/Products/ZenModel/skins/zenmodel/templates.pt trunk/Products/ZenModel/skins/zenmodel/zenoss.css trunk/Products/ZenWidgets/skins/zenui/actions_button.gif trunk/Products/ZenWidgets/skins/zenui/actions_button_depressed.gif trunk/Products/ZenWidgets/skins/zenui/filter_box_bg.gif trunk/Products/ZenWidgets/skins/zenui/menus.css trunk/Products/ZenWidgets/skins/zenui/tables.css trunk/Products/ZenWidgets/skins/zenui/titlebar_bg.gif trunk/Products/ZenWidgets/skins/zenui/titlebar_left_corner.gif trunk/Products/ZenWidgets/skins/zenui/titlebar_right_corner.gif trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt Log: * Many UI changes, most notably tabs. Modified: trunk/Products/ZenModel/skins/zenmodel/deviceList.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/deviceList.pt 2007-03-01 03:56:55 UTC (rev 4156) +++ trunk/Products/ZenModel/skins/zenmodel/deviceList.pt 2007-03-01 04:53:27 UTC (rev 4157) @@ -21,7 +21,8 @@ </tr> <tr> -<td tal:attributes="colspan tblcolspan"><table class="innerzentable" +<td tal:attributes="colspan tblcolspan" +style="padding:0px;"><table class="innerzentable" cellpadding="3" cellspacing="1"> <span metal:use-macro="here/deviceListMacro/macros/devListBody"/> <tr> Modified: trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt 2007-03-01 03:56:55 UTC (rev 4156) +++ trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt 2007-03-01 04:53:27 UTC (rev 4157) @@ -35,8 +35,9 @@ </tr> <tr> -<td><table class="innerzentable" cellpadding="3" cellspacing="1" - tal:attributes="colspan tblcolspan"><tr> +<td tal:attributes="colspan tblcolspan" style="padding:0px;"> +<table class="innerzentable" cellpadding="3" cellspacing="1"> +<tr> <td class="tableheader" align="left">Events</td> @@ -105,8 +106,8 @@ <tal:block metal:use-macro="here/zenuimacros/macros/tabletitle"/> </tr> <tr> -<td tal:attributes="colspan tblcolspan"><table class="innerzentable" -cellpadding="3" cellspacing="1"> +<td tal:attributes="colspan tblcolspan" style="padding:0px;"> +<table class="innerzentable" cellpadding="3" cellspacing="1"> <span tal:condition="objects" tal:omit-tag=""> <tr> <th tal:replace="structure python:here.ZenTableManager.getTableHeader( Modified: trunk/Products/ZenModel/skins/zenmodel/templates.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/templates.pt 2007-03-01 03:56:55 UTC (rev 4156) +++ trunk/Products/ZenModel/skins/zenmodel/templates.pt 2007-03-01 04:53:27 UTC (rev 4157) @@ -202,11 +202,21 @@ tal:define="ztabs python:here.zentinelTabs(template.id);"> <tr> <td tal:repeat="tab ztabs" - tal:attributes="class python:tab.get('selected',None) and 'tabletitleselected'"> + tal:attributes="class python:tab.get('selected', None) + and 'tabletitleselected'"> + + <a class="tabletitle" tal:content="tab/name" tal:attributes="href python: '%s/%s'% (here.getPrimaryUrlPath(),tab['action']);" >TabName</a> + + + <div id="selectedtablinehider" + tal:condition="python:tab.get('selected',None)"> + + </div> + </td> <td class="contextmenutab"> <span metal:use-macro="here/zenuimacros/macros/contextmenu"/> Modified: trunk/Products/ZenModel/skins/zenmodel/zenoss.css =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-03-01 03:56:55 UTC (rev 4156) +++ trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-03-01 04:53:27 UTC (rev 4157) @@ -151,15 +151,17 @@ margin-left: 9.0em; /*margin-top: 5px;*/ background: #b1bcd2 url(breadcrumb_left_curve.gif) no-repeat left top; + } /*#rightPane table {margin-left: 5px; }*/ #breadCrumbPane { color: black; - font-size: 9pt; + font-size: 10pt; + padding-top: 5px; padding-bottom: 5px; - padding: 0px 0px 5px 5px; + padding-left: 15px; margin: 0px; font-weight: bold; border: 0px solid red; @@ -171,6 +173,7 @@ font-size: inherit; /* background: inherit; */ font-weight: inherit; + text-decoration: none; } #tabsPane @@ -179,9 +182,10 @@ #contentPane { - padding: 5px; + padding: 5px 15px; background: #E0E0E0; min-height: 400px; + border: 1px solid black; /* border-left: 5px solid #b1bcd2 ; border-bottom: 5px solid #b1bcd2 ; @@ -217,45 +221,75 @@ table.tabtable { font-family: Verdana, Arial, Helvetica, sans-serif; - font-weight: normal; - height: 23px; + font-weight: bold; + height: 26px; margin: 0px; padding: 0px; - width: 50%; } -table.tabtable td{ +table.tabtable td { margin: 0px; - padding: 0px; - border: 0px; - vertical-align: top; text-align: center; - background: #5a6f8f url(tab_left.gif) no-repeat left top; + vertical-align: bottom; } +table.tabtable td a.tabletitle { + display: block; + padding: 0px 20px; + border-left: 1px solid #444; + border-right: 1px solid #444; + border-top: 1px solid black; + background: transparent url(titlebar_bg.gif) repeat-x bottom left; + height: 25px; +} +table.tabtable td a.tabletitle:hover { + background: transparent url(titlebar_bg_depressed.gif) repeat-x bottom left; +} + +table.tabtable td.contextmenutab a.tabletitle { + width: 53px; + height: 27px; + padding: 0pt; + border-top: 0pt; + border-right: 0pt; + margin-bottom: -1px; + margin-left: -1px; + background-image: url('contextmenu_tab.gif'); +} +table.tabtable td.contextmenutab a.tabletitle:hover { + background-image: url('contextmenu_tab_depressed.gif'); +} + table.tabtable td.tabletitleselected { color: #333333; - display: block; - border-right: 2px solid #b1bcd2; - height:23px; + height:34px; font-size:8pt; - line-height: 20pt; - background: #E0E0E0 url(tab_left_selected.gif) no-repeat left top; - + padding: 0px; + border: 0px; + line-height: 26px; + width: 101px; + background: transparent url(tab_bg_selected.gif) no-repeat bottom left; } -table.tabtable td.tabletitleselected a,table.tabtable td.tabletitleselected a:visited, table.tabtable td.tabletitleselected a:link { - color: #333333; +table.tabtable td.tabletitleselected a, +table.tabtable td.tabletitleselected a:visited, +table.tabtable td.tabletitleselected a:link { + color: black; display: block; - height:23px; - font-size:8pt; - line-height: 20pt; - background: url(tab_right_selected.gif) no-repeat right top; + padding: 0pt; + border: 0pt; + width: 100%; + height: 100%; + font-size:10pt; + line-height: 34px; + background: none; +} +table.tabtable td.tabletitleselected a:hover { + background: transparent url(tab_bg_selected.gif) no-repeat top left; } - table.zentable { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; @@ -267,15 +301,8 @@ margin-top: 1em; padding: 0pt; background-color: #E0E0E0; - /* - border: 1px solid #b1bcd2; - */ } -table.zentable tr td { - padding: 0px; -} - tbody.zentablecontents tr { border-left: 2px solid red; } @@ -298,15 +325,25 @@ a.tabletitle { display: block; color: white; - border-right: 2px solid #b1bcd2; text-decoration: none; margin: 0px; - height:23px; + height:26px; font-size:8pt; - line-height: 20pt; - background: url(tab_right.gif) no-repeat right top; + line-height: 26px; + z-index: 3000; } + +#selectedtablinehider { + width: 99px; + background-color: #E0E0E0; + height: 3px; + z-index: 2999; + position: absolute; + margin-top: -2px; + margin-left: 1px; +} + a.tabletitle:link { color: white; } @@ -322,13 +359,13 @@ } th.tabletitle { - height: 26px; - line-height: 26px; + height: 25px; + line-height: 25px; background: transparent url('titlebar_bg.gif') repeat-x top; color: white; - font-weight: bold; padding: 0pt; font-size: 1.2em; + font-weight: normal; margin: 0px; padding-right: 0pt; text-align: left; @@ -352,7 +389,9 @@ } .tabletitletext { - padding-left: 52px; + margin-left: 52px; + font-weight: bold; + font-size: 0.9em; } .tabletitlecontainer .leftcorner { Modified: trunk/Products/ZenWidgets/skins/zenui/actions_button.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/actions_button_depressed.gif =================================================================== (Binary files differ) Added: trunk/Products/ZenWidgets/skins/zenui/actions_button_depressed_blue.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/actions_button_depressed_blue.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/Products/ZenWidgets/skins/zenui/contextmenu_tab.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/contextmenu_tab.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/Products/ZenWidgets/skins/zenui/contextmenu_tab_depressed.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/contextmenu_tab_depressed.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/Products/ZenWidgets/skins/zenui/filter_box_bg.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/menus.css =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/menus.css 2007-03-01 03:56:55 UTC (rev 4156) +++ trunk/Products/ZenWidgets/skins/zenui/menus.css 2007-03-01 04:53:27 UTC (rev 4157) @@ -19,7 +19,7 @@ top: 3px; } td.contextmenutab { - width: 176px; + background: transparent url('titlebar_right_corner.gif') bottom left no-repeat; } .contextmenubutton { display: inline; @@ -38,10 +38,10 @@ .devmovemenuitems, .contextmenuitems { position: absolute; - right: 2px; + right: 0px; width: 172px; - top: 22px; - z-index: 3000; + top: 25px; + z-index: 3005; padding-bottom: 10px; padding-top: 10px; } @@ -112,8 +112,8 @@ text-align: center; right:0px; bottom: 3px; - height:26px; - line-height: 32px; + height:25px; + line-height: 25px; float: right; background: #E0E0E0 url('actions_button.gif') no-repeat; } Added: trunk/Products/ZenWidgets/skins/zenui/tab_bg.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/tab_bg.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/Products/ZenWidgets/skins/zenui/tab_bg_selected.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/tab_bg_selected.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/Products/ZenWidgets/skins/zenui/tables.css =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/tables.css 2007-03-01 03:56:55 UTC (rev 4156) +++ trunk/Products/ZenWidgets/skins/zenui/tables.css 2007-03-01 04:53:27 UTC (rev 4157) @@ -1,16 +1,15 @@ table.innerzentable { margin: 0px; padding: 0pt; - border: 3px solid #4d5d77; + border: 3px solid #5a6f8f; position: relative; width: 100%; top: -3px; font-weight: normal; font-size: 8pt; font-family: Verdana, Arial, Helvetica, sans-serif; - background-color: white; } table.innerzentable tr td { - padding: 5px 2px; + padding: 2px; } Modified: trunk/Products/ZenWidgets/skins/zenui/titlebar_bg.gif =================================================================== (Binary files differ) Added: trunk/Products/ZenWidgets/skins/zenui/titlebar_bg_depressed.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/titlebar_bg_depressed.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/Products/ZenWidgets/skins/zenui/titlebar_left_corner.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/titlebar_right_corner.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt 2007-03-01 03:56:55 UTC (rev 4156) +++ trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt 2007-03-01 04:53:27 UTC (rev 4157) @@ -14,7 +14,7 @@ tal:condition="menuitems"> <div tal:attributes="id string:${menu_id}_btn"> - <a class="tabletitle">>>></a> + <a class="tabletitle"> </a> </div> <div class="contextmenuitems invisible" |
From: <sv...@ze...> - 2007-03-01 03:56:56
|
Author: jstevens Date: 2007-02-28 21:56:55 -0600 (Wed, 28 Feb 2007) New Revision: 4156 Modified: trunk/Products/ZenModel/skins/zenmodel/zenoss_error_message.pt Log: fixes #991 * Changed wording on error page to direct folks to community support and remind them that we offer commercial support Modified: trunk/Products/ZenModel/skins/zenmodel/zenoss_error_message.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/zenoss_error_message.pt 2007-02-28 22:14:03 UTC (rev 4155) +++ trunk/Products/ZenModel/skins/zenmodel/zenoss_error_message.pt 2007-03-01 03:56:55 UTC (rev 4156) @@ -7,9 +7,18 @@ <h2>Zenoss Error</h2> <p>An error was encountered while publishing this resource. Please use the - form below to submit details of this error to Zenoss, Inc. + form below to submit details of this error to Zenoss, Inc. This information + helps us identify and fix issues with the software, though we are unable + to respond individually to all submissions. </p> + <p>The Zenoss <a href="http://community.zenoss.com/forums/">community forums</a> + are very active and a good resource for + solving problems and answering questions. Zenoss also provides + <a href="http://zenoss.com/support/">commercial + services and support packages</a>. + </p> + <form tal:attributes="action here/absolute_url_path" method="post"> <p> <strong>Type: <tal:block tal:replace="options/error_type" /> |
From: <sv...@ze...> - 2007-02-28 22:14:29
|
Author: jstevens Date: 2007-02-28 16:14:03 -0600 (Wed, 28 Feb 2007) New Revision: 4155 Modified: trunk/bin/zenbackup.py Log: Removed --dont-save-settings option. Wanted this to default to not saving the info instead. Added --save-mysql-access flag instead which defaults to False Modified: trunk/bin/zenbackup.py =================================================================== --- trunk/bin/zenbackup.py 2007-02-28 21:20:46 UTC (rev 4154) +++ trunk/bin/zenbackup.py 2007-02-28 22:14:03 UTC (rev 4155) @@ -128,11 +128,11 @@ default=False, action='store_true', help='Send backup to stdout instead of a file') - self.parser.add_option('--dont-save-settings', + self.parser.add_option('--save-mysql-access', dest='saveSettings', - default=True, - action='store_false', - help='Do not store dbname, dbuser and dbpass' + default=False, + action='store_true', + help='Include dbname, dbuser and dbpass' ' in backup' ' file for use during restore.') |
From: <sv...@ze...> - 2007-02-28 21:20:46
|
Author: marc Date: 2007-02-28 15:20:46 -0600 (Wed, 28 Feb 2007) New Revision: 4154 Modified: trunk/Products/ZenRRD/ProxyRenderServer.py Log: #998 * fixed circular import Modified: trunk/Products/ZenRRD/ProxyRenderServer.py =================================================================== --- trunk/Products/ZenRRD/ProxyRenderServer.py 2007-02-28 21:05:12 UTC (rev 4153) +++ trunk/Products/ZenRRD/ProxyRenderServer.py 2007-02-28 21:20:46 UTC (rev 4154) @@ -23,7 +23,7 @@ log = logging.getLogger("ProxyRenderServer") -from ProxyRenderServer import ProxyRenderServer,addProxyRenderServer,manage_addProxyRenderServer +from RenderServer import RenderServer,addRenderServer,manage_addRenderServer def manage_addProxyRenderServer(context, id, REQUEST = None): """make a ProxyRenderServer""" |
From: <sv...@ze...> - 2007-02-28 21:05:15
|
Author: oubiwann Date: 2007-02-28 15:05:12 -0600 (Wed, 28 Feb 2007) New Revision: 4153 Modified: trunk/Products/ZenModel/BasicDeviceLoader.py Log: Removed trailing whitespace. Modified: trunk/Products/ZenModel/BasicDeviceLoader.py =================================================================== --- trunk/Products/ZenModel/BasicDeviceLoader.py 2007-02-28 20:52:21 UTC (rev 4152) +++ trunk/Products/ZenModel/BasicDeviceLoader.py 2007-02-28 21:05:12 UTC (rev 4153) @@ -25,7 +25,7 @@ '''Load a machine''' def loadDevice(self, deviceName, devicePath="", systemPath="", - manufacturer="", model="", groupPath="", + manufacturer="", model="", groupPath="", locationPath="", rack="", statusMonitorName="localhost", perfMonitorName="localhost", snmpCommunity="", snmpPort=None, @@ -41,7 +41,7 @@ device.setModel(manufacturer, model) if not locationPath: locationPath = self.getLocationPath() - if locationPath: + if locationPath: if rack: locationPath += "/%s" % rack info("setting rack location to %s" % locationPath) @@ -51,16 +51,16 @@ device.setLocation(locationPath) if not groupPath: groupPath = self.getGroupPath() - if groupPath: + if groupPath: info("setting group %s" % groupPath) device.setGroups(groupPath) if not systemPath: systemPath = self.getSystemPath() - if systemPath: + if systemPath: info("setting system %s" % systemPath) device.setSystems(systemPath) - if not statusMonitorName: + if not statusMonitorName: statusMonitorName = self.getStatusMonitorName() info("setting status monitor to %s" % statusMonitorName) device.setStatusMonitor(statusMonitorName) @@ -73,7 +73,7 @@ return device - def getDevice(self, deviceName, devicePath, + def getDevice(self, deviceName, devicePath, snmpCommunity, snmpPort, loginName, loginPassword): """get a device if devicePath is None try classifier""" self.classificationEntry = None @@ -85,7 +85,7 @@ deviceName, snmpCommunity, snmpPort, loginName, loginPassword) - if not self.classificationEntry: + if not self.classificationEntry: raise DeviceNotClassified, \ "classifier failed to classify device %s" % deviceName devicePath = self.classificationEntry.getDeviceClassPath |
From: <sv...@ze...> - 2007-02-28 20:52:21
|
Author: ian Date: 2007-02-28 14:52:21 -0600 (Wed, 28 Feb 2007) New Revision: 4152 Added: trunk/Products/ZenWidgets/skins/zenui/tables.css Modified: trunk/Products/ZenModel/skins/zenmodel/deviceList.pt trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt trunk/Products/ZenModel/skins/zenmodel/templates.pt trunk/Products/ZenModel/skins/zenmodel/zenoss.css trunk/Products/ZenWidgets/skins/zenui/actions_button.gif trunk/Products/ZenWidgets/skins/zenui/actions_button_depressed.gif trunk/Products/ZenWidgets/skins/zenui/filter_box_bg.gif trunk/Products/ZenWidgets/skins/zenui/filterbox.css trunk/Products/ZenWidgets/skins/zenui/menus.css trunk/Products/ZenWidgets/skins/zenui/titlebar_bg.gif trunk/Products/ZenWidgets/skins/zenui/titlebar_left_corner.gif trunk/Products/ZenWidgets/skins/zenui/titlebar_right_corner.gif Log: * Shrank the table header height and made the corners less round Modified: trunk/Products/ZenModel/skins/zenmodel/deviceList.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/deviceList.pt 2007-02-28 19:50:48 UTC (rev 4151) +++ trunk/Products/ZenModel/skins/zenmodel/deviceList.pt 2007-02-28 20:52:21 UTC (rev 4152) @@ -7,26 +7,22 @@ tal:define=" tableName string:devicelist; objects here/devices/getSubDevicesGen; + tblcolspan string:5; batch python: here.ZenTableManager.getBatch(tableName,objects);" > <input type="hidden" name="zenScreenName" tal:attributes="value template/id"/> <input type="hidden" name="tableName" tal:attributes="value tableName"/> -<table class="zentable" cellpadding=3 cellspacing=1> +<table class="zentable"> <tr tal:define="tabletitle string:Device List; - tblcolspan string:5; showfilterbox python:True; menu_id string:Device"> <tal:block metal:use-macro="here/zenuimacros/macros/tabletitle"/> </tr> - <!-- - <tr> - <td colspan="5" class="tableheader" align='center'> - <tal:block - metal:use-macro="here/zenTableNavigation/macros/navbodyfilterdevice"/> - </td> - </tr> - --> + +<tr> +<td tal:attributes="colspan tblcolspan"><table class="innerzentable" +cellpadding="3" cellspacing="1"> <span metal:use-macro="here/deviceListMacro/macros/devListBody"/> <tr> <td colspan="5" class="tableheader" align='center'> @@ -37,6 +33,8 @@ <tal:block tal:define="numColumns string:5"> <tal:block metal:use-macro="here/deviceListMacro/macros/deviceControl"/> </tal:block> + +</table></td></tr> </table> </form> Modified: trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt 2007-02-28 19:50:48 UTC (rev 4151) +++ trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt 2007-02-28 20:52:21 UTC (rev 4152) @@ -23,7 +23,10 @@ </script> <form method="post" tal:attributes="action here/absolute_url_path" name="deviceOrganizerStatus"> <input type="hidden" name="zenScreenName" value="deviceOrganizerStatus" /> -<table class="zentable" cellpadding="3" cellspacing="1" +<table class="zentable" + tal:define=" + tabletitle string:Summary; + tblcolspan string:6;" metal:define-macro="status"> <tr tal:define=" tabletitle string:Summary; @@ -31,6 +34,11 @@ <tal:block metal:use-macro="here/zenuimacros/macros/tabletitle"/> </tr> <tr> + +<td><table class="innerzentable" cellpadding="3" cellspacing="1" + tal:attributes="colspan tblcolspan"><tr> + + <td class="tableheader" align="left">Events</td> <td class="tablevalues rainbow" align="left"> <table metal:use-macro="here/deviceStatus/macros/eventrainbow" /> @@ -73,16 +81,20 @@ </td> </tr> </tbody> + +</table></td></tr> + </table> </form> <span metal:use-macro="here/templates/macros/contentSeparator"/> <!-- Sub-Devices Table --> <form method="post" tal:attributes="action here/absolute_url_path" name="subdeviceForm"> - <table class="zentable" cellpadding="3" cellspacing="1" + <table class="zentable" name="subdeviceTable" tal:define="objects here/children; tableName string:children; + tblcolspan string:5; batch python:here.ZenTableManager.getBatch(tableName,objects);"> <input type='hidden' name='tableName' tal:attributes="value tableName"/> <input type="hidden" name="zenScreenName" @@ -92,6 +104,9 @@ tabletitle string:Sub-${here/dmdRootName}"> <tal:block metal:use-macro="here/zenuimacros/macros/tabletitle"/> </tr> + <tr> +<td tal:attributes="colspan tblcolspan"><table class="innerzentable" +cellpadding="3" cellspacing="1"> <span tal:condition="objects" tal:omit-tag=""> <tr> <th tal:replace="structure python:here.ZenTableManager.getTableHeader( @@ -108,8 +123,7 @@ </th> <th tal:replace="structure python:here.ZenTableManager.getTableHeader( tableName,'omniEventCount','Events')"> - Snmp - </th> + Snmp </th> </tr> <tal:block tal:repeat="devorg batch"> <tr tal:define = "odd repeat/devorg/odd" @@ -172,7 +186,9 @@ onClick="toggleSelect(this.form);return false"/> </span> </td> + </tr> +</table></td></tr> </table> </form> Modified: trunk/Products/ZenModel/skins/zenmodel/templates.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/templates.pt 2007-02-28 19:50:48 UTC (rev 4151) +++ trunk/Products/ZenModel/skins/zenmodel/templates.pt 2007-02-28 20:52:21 UTC (rev 4152) @@ -98,6 +98,8 @@ href="/zport/portal_skins/zenoss.css" > <link rel="stylesheet" type="text/css" title="zenoss" href="/zport/portal_skins/zenevents.css" > + <link rel="stylesheet" type="text/css" title="zenoss" + href="/zport/portal_skins/tables.css" > <!--[if IE]> <link rel="stylesheet" type="text/css" title="zenoss" href="/zport/portal_skins/zenoss_ie.css" > Modified: trunk/Products/ZenModel/skins/zenmodel/zenoss.css =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-02-28 19:50:48 UTC (rev 4151) +++ trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-02-28 20:52:21 UTC (rev 4152) @@ -221,7 +221,7 @@ height: 23px; margin: 0px; padding: 0px; - width: 100%; + width: 50%; } table.tabtable td{ @@ -260,15 +260,22 @@ font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 8pt; width: 100%; + margin-left: 2em; + margin-right: 2em; font-weight: normal; margin: 0px; - padding: 0px; + margin-top: 1em; + padding: 0pt; background-color: #E0E0E0; /* border: 1px solid #b1bcd2; */ } +table.zentable tr td { + padding: 0px; +} + tbody.zentablecontents tr { border-left: 2px solid red; } @@ -315,15 +322,15 @@ } th.tabletitle { - height: 32px; - line-height: 32px; - background: transparent url('titlebar_bg.gif') repeat-x bottom; + height: 26px; + line-height: 26px; + background: transparent url('titlebar_bg.gif') repeat-x top; color: white; font-weight: bold; padding: 0pt; font-size: 1.2em; - padding-right: 0px; - margin-right: 0px; + margin: 0px; + padding-right: 0pt; text-align: left; z-index: 1999; } Modified: trunk/Products/ZenWidgets/skins/zenui/actions_button.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/actions_button_depressed.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/filter_box_bg.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/filterbox.css =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/filterbox.css 2007-02-28 19:50:48 UTC (rev 4151) +++ trunk/Products/ZenWidgets/skins/zenui/filterbox.css 2007-02-28 20:52:21 UTC (rev 4152) @@ -1,11 +1,11 @@ .filterbox { background: transparent url('filter_box_bg.gif') no-repeat 0px 0px; - height: 32px; - line-height: 32px; + height: 26px; + line-height: 26px; position: absolute; width: 126px; - top: 3px; - padding-top: 5px; + top: 2px; + padding-top: 4px; right: 60px; } @@ -19,11 +19,10 @@ width: 100px; padding-left: 10px; text-align:center; - height: 24px; + height: 21px; } div.tabletitlecontainer { - width: 100%; height: 100%; position: relative; } Modified: trunk/Products/ZenWidgets/skins/zenui/menus.css =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/menus.css 2007-02-28 19:50:48 UTC (rev 4151) +++ trunk/Products/ZenWidgets/skins/zenui/menus.css 2007-02-28 20:52:21 UTC (rev 4152) @@ -111,8 +111,8 @@ position:absolute; text-align: center; right:0px; - bottom:3px; - height:32px; + bottom: 3px; + height:26px; line-height: 32px; float: right; background: #E0E0E0 url('actions_button.gif') no-repeat; Added: trunk/Products/ZenWidgets/skins/zenui/tables.css Modified: trunk/Products/ZenWidgets/skins/zenui/titlebar_bg.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/titlebar_left_corner.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/titlebar_right_corner.gif =================================================================== (Binary files differ) |
From: <sv...@ze...> - 2007-02-28 19:51:26
|
Author: marc Date: 2007-02-28 13:50:48 -0600 (Wed, 28 Feb 2007) New Revision: 4151 Added: trunk/Products/ZenRRD/dtml/addProxyRenderServer.dtml Log: Added: trunk/Products/ZenRRD/dtml/addProxyRenderServer.dtml |
From: <sv...@ze...> - 2007-02-28 19:51:09
|
Author: marc Date: 2007-02-28 13:50:18 -0600 (Wed, 28 Feb 2007) New Revision: 4150 Added: trunk/Products/ZenRRD/ProxyRenderServer.py Log: Added: trunk/Products/ZenRRD/ProxyRenderServer.py |
From: <sv...@ze...> - 2007-02-28 18:11:04
|
Author: ian Date: 2007-02-28 12:11:01 -0600 (Wed, 28 Feb 2007) New Revision: 4149 Added: trunk/Products/ZenWidgets/skins/zenui/titlebar_bg.gif trunk/Products/ZenWidgets/skins/zenui/titlebar_left_corner.gif trunk/Products/ZenWidgets/skins/zenui/titlebar_right_corner.gif Modified: trunk/Products/ZenModel/skins/zenmodel/deviceList.pt trunk/Products/ZenModel/skins/zenmodel/deviceListMacro.pt trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt trunk/Products/ZenModel/skins/zenmodel/zenoss.css trunk/Products/ZenUtils/js/zenui.js trunk/Products/ZenWidgets/skins/zenui/actions_button.gif trunk/Products/ZenWidgets/skins/zenui/filterbox.css trunk/Products/ZenWidgets/skins/zenui/menus.css trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt Log: * More css and img mods to the table headers. Modified: trunk/Products/ZenModel/skins/zenmodel/deviceList.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/deviceList.pt 2007-02-28 17:44:26 UTC (rev 4148) +++ trunk/Products/ZenModel/skins/zenmodel/deviceList.pt 2007-02-28 18:11:01 UTC (rev 4149) @@ -14,10 +14,10 @@ <table class="zentable" cellpadding=3 cellspacing=1> <tr tal:define="tabletitle string:Device List; - tblcolspan string:5"> - <tal:block metal:use-macro="here/zenuimacros/macros/tabletitle"> - Device List - </tal:block> + tblcolspan string:5; + showfilterbox python:True; + menu_id string:Device"> + <tal:block metal:use-macro="here/zenuimacros/macros/tabletitle"/> </tr> <!-- <tr> Modified: trunk/Products/ZenModel/skins/zenmodel/deviceListMacro.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/deviceListMacro.pt 2007-02-28 17:44:26 UTC (rev 4148) +++ trunk/Products/ZenModel/skins/zenmodel/deviceListMacro.pt 2007-02-28 18:11:01 UTC (rev 4149) @@ -50,7 +50,8 @@ <input type='hidden' name='tableName' tal:attributes="value tableName" /> <input type="hidden" name="zenScreenName" tal:attributes="value template/id"/> - <tbody metal:define-macro="devListBody"> + <tal:block metal:define-macro="devListBody"> + <tbody class="zentablecontents"> <tr> <th tal:replace="structure python:here.ZenTableManager.getTableHeader( tableName,'primarySortKey','Name')">Name @@ -110,6 +111,7 @@ </tr> </tal:block> </tbody> + </tal:block> <tr> <td colspan=5 class="tableheader" align='center'> <span metal:use-macro="here/zenTableNavigation/macros/navbody" /> Modified: trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt 2007-02-28 17:44:26 UTC (rev 4148) +++ trunk/Products/ZenModel/skins/zenmodel/deviceOrganizerStatus.pt 2007-02-28 18:11:01 UTC (rev 4149) @@ -25,8 +25,10 @@ <input type="hidden" name="zenScreenName" value="deviceOrganizerStatus" /> <table class="zentable" cellpadding="3" cellspacing="1" metal:define-macro="status"> - <tr> - <th class="tabletitle" align="left" colspan="6">Summary</th> + <tr tal:define=" + tabletitle string:Summary; + tblcolspan string:6;"> + <tal:block metal:use-macro="here/zenuimacros/macros/tabletitle"/> </tr> <tr> <td class="tableheader" align="left">Events</td> @@ -85,12 +87,10 @@ <input type='hidden' name='tableName' tal:attributes="value tableName"/> <input type="hidden" name="zenScreenName" tal:attributes="value template/id"/> - <tr> - <th class=tabletitle align=left colspan="5" - tal:content="string:Sub-${here/dmdRootName}"> - SubLocations - </th> - <div class="devmovemenu" metal:use-macro="here/zenuimacros/macros/devmovemenu"/> + <tr tal:define="showfilterbox python:True; + tblcolspan string:5; + tabletitle string:Sub-${here/dmdRootName}"> + <tal:block metal:use-macro="here/zenuimacros/macros/tabletitle"/> </tr> <span tal:condition="objects" tal:omit-tag=""> <tr> Modified: trunk/Products/ZenModel/skins/zenmodel/zenoss.css =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-02-28 17:44:26 UTC (rev 4148) +++ trunk/Products/ZenModel/skins/zenmodel/zenoss.css 2007-02-28 18:11:01 UTC (rev 4149) @@ -263,12 +263,15 @@ font-weight: normal; margin: 0px; padding: 0px; - background-color: #FFFFFF; - border-top: 1px solid #b1bcd2; - border-left: 1px solid #b1bcd2; - border-bottom: 1px solid #b1bcd2; - border-right: 1px solid #b1bcd2; + background-color: #E0E0E0; + /* + border: 1px solid #b1bcd2; + */ } + +tbody.zentablecontents tr { + border-left: 2px solid red; +} .navcontrol { margin-bottom:0; border:0; @@ -312,18 +315,50 @@ } th.tabletitle { - height: 2em; - line-height: 2em; - background: transparent url('table_header_bg.gif') top left repeat-x; + height: 32px; + line-height: 32px; + background: transparent url('titlebar_bg.gif') repeat-x bottom; color: white; font-weight: bold; + padding: 0pt; font-size: 1.2em; padding-right: 0px; margin-right: 0px; text-align: left; - padding-left: 2em; + z-index: 1999; } +div.tabletitlecontainer { + width: 100%; + position: relative; + z-index: 2000; + height: 2em; + padding: 0pt; + margin: 0pt; +} + +.tabletitlecontainer .rightcorner, +.tabletitlecontainer .leftcorner { + position: absolute; + bottom: 0px; + z-index: 2005; +} + +.tabletitletext { + padding-left: 52px; +} + +.tabletitlecontainer .leftcorner { + left: 0px; + background: #E0E0E0 url('titlebar_left_corner.gif') bottom left no-repeat; + width: 52px; +} +.tabletitlecontainer .rightcorner { + right: 0px; + background: #E0E0E0 url('titlebar_right_corner.gif') bottom left no-repeat; + width: 52px; +} + .tabletitleselected { color: #333333; background-color: #E0E0E0; @@ -546,3 +581,4 @@ @import url('filterbox.css'); @import url('menus.css'); + Modified: trunk/Products/ZenUtils/js/zenui.js =================================================================== --- trunk/Products/ZenUtils/js/zenui.js 2007-02-28 17:44:26 UTC (rev 4148) +++ trunk/Products/ZenUtils/js/zenui.js 2007-02-28 18:11:01 UTC (rev 4149) @@ -91,7 +91,8 @@ 'background-color':'white', 'padding':'2px', 'padding-top':'2px', - 'border':'1px solid darkgrey' + 'border':'1px solid darkgrey', + 'z-index':'3000' }); connect(paneToggle, 'onmouseover', function(){ clearTimeout(t); Modified: trunk/Products/ZenWidgets/skins/zenui/actions_button.gif =================================================================== (Binary files differ) Modified: trunk/Products/ZenWidgets/skins/zenui/filterbox.css =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/filterbox.css 2007-02-28 17:44:26 UTC (rev 4148) +++ trunk/Products/ZenWidgets/skins/zenui/filterbox.css 2007-02-28 18:11:01 UTC (rev 4149) @@ -1,9 +1,10 @@ .filterbox { background: transparent url('filter_box_bg.gif') no-repeat 0px 0px; height: 32px; + line-height: 32px; position: absolute; width: 126px; - top: 0px; + top: 3px; padding-top: 5px; right: 60px; } Modified: trunk/Products/ZenWidgets/skins/zenui/menus.css =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/menus.css 2007-02-28 17:44:26 UTC (rev 4148) +++ trunk/Products/ZenWidgets/skins/zenui/menus.css 2007-02-28 18:11:01 UTC (rev 4149) @@ -66,7 +66,7 @@ } .devmovemenuitems { - top: 0px; + top: -3px; right: 0px; } ul.zenMenu { @@ -90,6 +90,7 @@ } ul.zenMenu li { border-bottom: 1px dotted grey; + line-height: 2em; } ul.zenMenu li a:hover { background-color: #DEDEFF; @@ -103,14 +104,16 @@ width: 52px; color: white; text-align:left; - z-index: 2000; + z-index: 2007; border-left: 1px inset #666; + padding: 0px; + margin: 0px; position:absolute; text-align: center; right:0px; - bottom:0px; + bottom:3px; height:32px; - line-height: 2.5em; + line-height: 32px; float: right; background: #E0E0E0 url('actions_button.gif') no-repeat; } Added: trunk/Products/ZenWidgets/skins/zenui/titlebar_bg.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/titlebar_bg.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/Products/ZenWidgets/skins/zenui/titlebar_left_corner.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/titlebar_left_corner.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/Products/ZenWidgets/skins/zenui/titlebar_right_corner.gif Property changes on: trunk/Products/ZenWidgets/skins/zenui/titlebar_right_corner.gif ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Modified: trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt =================================================================== --- trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt 2007-02-28 17:44:26 UTC (rev 4148) +++ trunk/Products/ZenWidgets/skins/zenui/zenuimacros.pt 2007-02-28 18:11:01 UTC (rev 4149) @@ -53,9 +53,16 @@ <tal:block metal:define-macro="tabletitle"> <th class="tabletitle" tal:attributes="colspan tblcolspan"> <div class="tabletitlecontainer"> - <span class="tabletitletext" tal:content="tabletitle">Title</span> - <tal:block metal:use-macro="here/zenuimacros/macros/filterbox"/> - <tal:block metal:use-macro="here/zenuimacros/macros/devmovemenu"/> + <div class="leftcorner"> </div> + <span class="tabletitletext" tal:content="tabletitle | string:Items"> + Title</span> + <tal:block tal:condition="showfilterbox | python:False"> + <tal:block metal:use-macro="here/zenuimacros/macros/filterbox"/> + </tal:block> + <tal:block tal:condition="menu_id | python:False"> + <tal:block metal:use-macro="here/zenuimacros/macros/devmovemenu"/> + </tal:block> + <div class="rightcorner"> </div> </div> </th> </tal:block> @@ -73,8 +80,7 @@ </div> </tal:block> -<tal:block metal:define-macro="devmovemenu" - tal:define="menu_id menu_id | string:Device"> +<tal:block metal:define-macro="devmovemenu"> <link href="menus.css" rel="stylesheet" type="text/css" /> |
From: <sv...@ze...> - 2007-02-28 17:44:26
|
Author: oubiwann Date: 2007-02-28 11:44:26 -0600 (Wed, 28 Feb 2007) New Revision: 4148 Modified: trunk/Products/ZenEvents/EventManagerBase.py Log: Removed trailing whitespace. Modified: trunk/Products/ZenEvents/EventManagerBase.py =================================================================== --- trunk/Products/ZenEvents/EventManagerBase.py 2007-02-28 17:37:44 UTC (rev 4147) +++ trunk/Products/ZenEvents/EventManagerBase.py 2007-02-28 17:44:26 UTC (rev 4148) @@ -72,16 +72,16 @@ severityConversions = ( ('Critical', 5), - ('Error', 4), - ('Warning', 3), - ('Info', 2), - ('Debug', 1), - ('Clear', 0), + ('Error', 4), + ('Warning', 3), + ('Info', 2), + ('Debug', 1), + ('Clear', 0), ) severities = dict([(b, a) for a, b in severityConversions]) priorityConversions = ( - ('None', -1), + ('None', -1), ('Emergency', 0), ('Alert', 1), ('Critical', 2), @@ -123,12 +123,12 @@ SystemWhere = "\"Systems like '%%|%s%%'\" % me.getDmdKey()" DeviceGroupWhere = "\"DeviceGroups like '%%|%s%%'\" % me.getDmdKey()" - defaultResultFields = ("device", "component", "eventClass", "summary", + defaultResultFields = ("device", "component", "eventClass", "summary", "firstTime", "lastTime", "count" ) defaultFields = ('eventState', 'severity', 'evid') - defaultEventId = ('device', 'component', 'eventClass', + defaultEventId = ('device', 'component', 'eventClass', 'eventKey', 'severity') requiredEventFields = ('device', 'summary', 'severity') @@ -137,7 +137,7 @@ manage_options = (ObjectManager.manage_options + PropertyManager.manage_options + - ({'label':'View', 'action':'viewEvents'}, + ({'label':'View', 'action':'viewEvents'}, {'label':'Refresh', 'action':'refreshConversionsForm'},) + ObjectCache.manage_options + Item.manage_options) @@ -193,11 +193,11 @@ ("commands", ToManyCont(ToOne, "EventCommand", "eventManager")), ) - factory_type_information = ( - { + factory_type_information = ( + { 'immediate_view' : 'editEventManager', 'actions' : - ( + ( { 'id' : 'edit' , 'name' : 'Edit' , 'action' : 'editEventManager' @@ -269,14 +269,14 @@ """ try: if not resultFields: - resultFields = self.defaultResultFields + resultFields = self.defaultResultFields resultFields = list(resultFields) resultFields.extend(self.defaultFields) - select = ["select ", ','.join(resultFields), + select = ["select ", ','.join(resultFields), "from %s where" % self.statusTable ] - if not where: + if not where: where = self.defaultWhere where = self._wand(where, "%s >= %s", self.severityField, severity) where = self._wand(where, "%s <= %s", self.stateField, state) @@ -339,13 +339,13 @@ raise NotImplementedError - def getEventDetailFromStatusOrHistory(self, evid=None, dedupid=None, + def getEventDetailFromStatusOrHistory(self, evid=None, dedupid=None, better=False): - try: + try: event = self.dmd.ZenEventManager.getEventDetail( evid, dedupid, better) except ZenEventNotFound: - event = self.dmd.ZenEventHistory.getEventDetail(evid, dedupid, + event = self.dmd.ZenEventHistory.getEventDetail(evid, dedupid, better) return event @@ -412,11 +412,11 @@ if me.event_key == "Device": return self.getDeviceStatus(me.getId(), statusclass, **kwargs) elif me.event_key == "Component": - return self.getComponentStatus(me.getParentDeviceName(), + return self.getComponentStatus(me.getParentDeviceName(), me.getId(), statusclass, **kwargs) elif isinstance(me, Organizer): - return self.getOrganizerStatus(me, statusclass=statusclass, - **kwargs) + return self.getOrganizerStatus(me, statusclass=statusclass, + **kwargs) else: return self.getGenericStatus(me) @@ -439,10 +439,10 @@ finally: self.close(conn) self.addToCache(select,statusCount) - return statusCount + return statusCount - def getOrganizerStatus(self, org, statusclass=None, severity=None, + def getOrganizerStatus(self, org, statusclass=None, severity=None, state=0, where=""): """see IEventStatus """ @@ -569,7 +569,7 @@ return statusCache - def getDeviceStatus(self, device, statclass=None, countField=None, + def getDeviceStatus(self, device, statclass=None, countField=None, severity=3, state=None, where=""): """see IEventStatus """ @@ -614,7 +614,7 @@ if hasattr(state, name): kw.setdefault(name, getattr(state, name)) try: - kw.setdefault('severity', + kw.setdefault('severity', dict(self.severityConversions)[state.severity]) except (ValueError, KeyError): pass @@ -649,7 +649,7 @@ dev = devclass.findDevice(devname) if dev and not simple: alink = "<a href='%s'>%s</a>" % ( - dev.getPrimaryUrlPath(), dev.id) + dev.getPrimaryUrlPath(), dev.id) else: alink = devname statusCache.append([alink, comp, dtime]) if limit: @@ -659,7 +659,7 @@ return statusCache - def getComponentStatus(self, device, component, statclass=None, + def getComponentStatus(self, device, component, statclass=None, countField=None, severity=3, state=1, where=""): """see IEventStatus """ @@ -725,8 +725,8 @@ """ key = me.event_key + "Where" wheretmpl = getattr(aq_base(self), key, False) - if not wheretmpl: - raise ValueError("no where fround for event_key %s" % + if not wheretmpl: + raise ValueError("no where fround for event_key %s" % me.event_key) return eval(wheretmpl,{'me':me}) @@ -752,7 +752,7 @@ return where - def _setupDateRange(self, startdate=DateTime.DateTime(), + def _setupDateRange(self, startdate=DateTime.DateTime(), enddate=DateTime.DateTime()-1): """ Make a start and end date range that is at least one day long. @@ -792,7 +792,7 @@ for devname in devices: dev = devclass.findDevice(devname) if dev: - if dev.productionState < self.prodStateDashboardThresh: + if dev.productionState < self.prodStateDashboardThresh: continue if dev.priority < self.priorityDashboardThresh: continue @@ -958,8 +958,8 @@ def dateString(self, value): """Convert a date from database format to string. """ - if isinstance(value, DateTime.DateTime): - value = value.timeTime() + if isinstance(value, DateTime.DateTime): + value = value.timeTime() return Time.LocalDateTime(value) @@ -997,7 +997,7 @@ elif self.backend == "mysql": type = row[1] in ("datetime", "timestamp", "double") schema[col] = type - if schema: self._schema = schema + if schema: self._schema = schema self._fieldlist = fieldlist finally: self.close(conn) @@ -1009,7 +1009,7 @@ return 1 return 0 - def updateEvents(self, stmt, whereClause, reason, + def updateEvents(self, stmt, whereClause, reason, table="status", toLog=True): userId = getSecurityManager().getUser().getId() insert = 'INSERT INTO log (evid, userName, text) ' + \ @@ -1106,7 +1106,7 @@ security.declareProtected('Manage Events','manage_setEventStates') def manage_setEventStates(self, eventState=None, evids=(), REQUEST=None): - if eventState and evids: + if eventState and evids: eventState = int(eventState) userid = "" if eventState > 0: userid = getSecurityManager().getUser() @@ -1124,13 +1124,13 @@ security.declareProtected('Manage Events','manage_setEventStates') - def manage_createEventMap(self, eventClass=None, evids=(), + def manage_createEventMap(self, eventClass=None, evids=(), REQUEST=None): """Create an event map from an event or list of events. """ evclass = None evmap = None - if eventClass and evids: + if eventClass and evids: evclass = self.getDmdRoot("Events").getOrganizer(eventClass) sel = """select eventClassKey, eventClass, message from %s where evid in ('%s')""" @@ -1146,7 +1146,7 @@ evmap.eventClassKey = evclasskey evmap.example = msg finally: self.close(conn) - if REQUEST: + if REQUEST: if len(evids) == 1 and evmap: return evmap() elif evclass and evmap: return evclass() @@ -1280,7 +1280,7 @@ import string out = StringIO() - skinstool = getToolByName(self, 'portal_skins') + skinstool = getToolByName(self, 'portal_skins') if 'zenevents' not in skinstool.objectIds(): addDirectoryViews(skinstool, 'skins', globals()) out.write("Added 'zenevents' directory view to portal_skins\n") @@ -1297,5 +1297,5 @@ out.write("Added 'zenevents' to %s skin\n" % skin) else: out.write( - "Skipping %s skin, 'zenevents' is already set up\n" % skin) + "Skipping %s skin, 'zenevents' is already set up\n" % skin) return out.getvalue() |
From: <sv...@ze...> - 2007-02-28 17:37:48
|
Author: oubiwann Date: 2007-02-28 11:37:44 -0600 (Wed, 28 Feb 2007) New Revision: 4147 Modified: trunk/Products/ZenModel/ZDeviceLoader.py Log: Removed trailing white space. Modified: trunk/Products/ZenModel/ZDeviceLoader.py =================================================================== --- trunk/Products/ZenModel/ZDeviceLoader.py 2007-02-28 17:19:55 UTC (rev 4146) +++ trunk/Products/ZenModel/ZDeviceLoader.py 2007-02-28 17:37:44 UTC (rev 4147) @@ -36,7 +36,7 @@ if REQUEST is not None: REQUEST['RESPONSE'].redirect(context.absolute_url() - +'/manage_main') + +'/manage_main') class ZDeviceLoader(ZenModelItem,SimpleItem): @@ -51,11 +51,11 @@ security = ClassSecurityInfo() - factory_type_information = ( - { + factory_type_information = ( + { 'immediate_view' : 'addDevice', 'actions' : - ( + ( { 'id' : 'status' , 'name' : 'Status' , 'action' : 'addDevice' @@ -70,12 +70,12 @@ self.id = id - def loadDevice(self, deviceName, devicePath="/Discovered", + def loadDevice(self, deviceName, devicePath="/Discovered", tag="", serialNumber="", zSnmpCommunity="", zSnmpPort=161, zSnmpVer="v1", rackSlot=0, productionState=1000, comments="", - hwManufacturer="", hwProductName="", - osManufacturer="", osProductName="", + hwManufacturer="", hwProductName="", + osManufacturer="", osProductName="", locationPath="", groupPaths=[], systemPaths=[], statusMonitors=["localhost"], performanceMonitor="localhost", discoverProto="snmp",REQUEST = None): @@ -96,8 +96,8 @@ tag, serialNumber, zSnmpCommunity, zSnmpPort, zSnmpVer, rackSlot, productionState, comments, - hwManufacturer, hwProductName, - osManufacturer, osProductName, + hwManufacturer, hwProductName, + osManufacturer, osProductName, locationPath, groupPaths, systemPaths, statusMonitors, performanceMonitor, discoverProto) transaction.commit() @@ -116,12 +116,12 @@ clearWebLoggingStream(handler) - def addManufacturer(self, newHWManufacturerName=None, + def addManufacturer(self, newHWManufacturerName=None, newSWManufacturerName=None, REQUEST=None): """add a manufacturer to the database""" mname = newHWManufacturerName field = 'hwManufacturer' - if not mname: + if not mname: mname = newSWManufacturerName field = 'osManufacturer' self.getDmdRoot("Manufacturers").createManufacturer(mname) |
From: <sv...@ze...> - 2007-02-28 17:19:55
|
Author: marc Date: 2007-02-28 11:19:55 -0600 (Wed, 28 Feb 2007) New Revision: 4146 Modified: trunk/Products/ZenModel/DmdBuilder.py trunk/Products/ZenModel/PerformanceConf.py trunk/Products/ZenModel/skins/zenmodel/editPerformanceConf.pt trunk/Products/ZenModel/skins/zenmodel/viewPerformanceConfOverview.pt trunk/Products/ZenModel/skins/zenmodel/viewPerformanceDetail.pt trunk/Products/ZenRRD/__init__.py Log: #998 * Added ProxyRenderServer Modified: trunk/Products/ZenModel/DmdBuilder.py =================================================================== --- trunk/Products/ZenModel/DmdBuilder.py 2007-02-28 17:10:27 UTC (rev 4145) +++ trunk/Products/ZenModel/DmdBuilder.py 2007-02-28 17:19:55 UTC (rev 4146) @@ -48,6 +48,7 @@ from Products.ZenModel.PerformanceConf import manage_addPerformanceConf from Products.ZenModel.StatusMonitorConf import manage_addStatusMonitorConf from Products.ZenRRD.RenderServer import manage_addRenderServer +from Products.ZenRRD.ProxyRenderServer import manage_addProxyRenderServer from Products.ZenReports.ReportServer import manage_addReportServer from Products.ZenEvents.MySqlEventManager import manage_addMySqlEventManager from Products.ZenEvents.EventClass import manage_addEventClass @@ -115,6 +116,7 @@ manage_addPerformanceConf(mons.Performance, "localhost") crk = mons.Performance._getOb("localhost") crk.renderurl = "/zport/RenderServer" + crk.proxyurl = "/zport/ProxyRenderServer" manage_addStatusMonitorConf(mons.StatusMonitors,"localhost") @@ -152,6 +154,7 @@ manage_addZenossInfo(self.portal) manage_addDirectoryView(self.portal,'ZenUtils/js', 'js') manage_addRenderServer(self.portal, "RenderServer") + manage_addProxyRenderServer(self.portal, "ProxyRenderServer") manage_addReportServer(self.portal, "ReportServer") manage_addMySqlEventManager(self.dmd, evtuser=self.evtuser, evtpass=self.evtpass, evtdb=self.evtdb) Modified: trunk/Products/ZenModel/PerformanceConf.py =================================================================== --- trunk/Products/ZenModel/PerformanceConf.py 2007-02-28 17:10:27 UTC (rev 4145) +++ trunk/Products/ZenModel/PerformanceConf.py 2007-02-28 17:19:55 UTC (rev 4146) @@ -71,6 +71,7 @@ renderurl = '' renderuser = '' renderpass = '' + proxyurl = '' defaultRRDCreateCommand = ( 'RRA:AVERAGE:0.5:1:2016', # every 5 mins for 7 days 'RRA:AVERAGE:0.5:4:2016', # every 20 mins for 4 weeks @@ -87,6 +88,7 @@ {'id':'renderurl','type':'string','mode':'w'}, {'id':'renderuser','type':'string','mode':'w'}, {'id':'renderpass','type':'string','mode':'w'}, + {'id':'proxyurl','type':'string','mode':'w'}, {'id':'defaultRRDCreateCommand','type':'lines','mode':'w'}, ) _relations = Monitor._relations + ( @@ -238,7 +240,10 @@ targetpath = performancePath(targetpath[1:]) gopts = view.graphOpts(context, targetpath, targettype) gopts = url_quote('|'.join(gopts)) - return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) + if self.renderurl.startswith("http"): + return "%s/render?gopts=%s&drange=%d" % (self.proxyurl,gopts,drange) + else: + return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) def performanceMGraphUrl(self, context, targetsmap, view, drange): @@ -250,16 +255,20 @@ ntm.append((fulltarget, targettype)) gopts = view.multiGraphOpts(context, ntm) gopts = url_quote('|'.join(gopts)) - return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) + if self.renderurl.startswith("http"): + return "%s/render?gopts=%s&drange=%d" % (self.proxyurl,gopts,drange) + else: + return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) - def renderCustomUrl(self, gopts, drange): "return the for a list of custom gopts for a graph" gopts = self._fullPerformancePath(gopts) gopts = url_quote('|'.join(gopts)) - return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) + if self.renderurl.startswith("http"): + return "%s/render?gopts=%s&drange=%d" % (self.proxyurl,gopts,drange) + else: + return "%s/render?gopts=%s&drange=%d" % (self.renderurl,gopts,drange) - def performanceCustomSummary(self, gopts): "fill out full path for custom gopts and call to server" gopts = self._fullPerformancePath(gopts) Modified: trunk/Products/ZenModel/skins/zenmodel/editPerformanceConf.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/editPerformanceConf.pt 2007-02-28 17:10:27 UTC (rev 4145) +++ trunk/Products/ZenModel/skins/zenmodel/editPerformanceConf.pt 2007-02-28 17:19:55 UTC (rev 4146) @@ -46,6 +46,13 @@ </td> </tr> <tr> + <td class="tableheader" align="left">Proxy URL</td> + <td class="tablevalues"> + <input class="tablevalues" type="text" name="proxyurl" size="50" + tal:attributes="value here/proxyurl" /> + </td> + </tr> + <tr> <td class="tableheader" align="left">Default RRD Create Command</td> <td class="tablevalues"> <textarea class="tablevalues" rows=5 cols=60 Modified: trunk/Products/ZenModel/skins/zenmodel/viewPerformanceConfOverview.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/viewPerformanceConfOverview.pt 2007-02-28 17:10:27 UTC (rev 4145) +++ trunk/Products/ZenModel/skins/zenmodel/viewPerformanceConfOverview.pt 2007-02-28 17:19:55 UTC (rev 4146) @@ -21,6 +21,10 @@ <td class="tableheader">Render User</td> <td class="tablevalues" tal:content="here/renderuser"/> </tr> + <tr> + <td class="tableheader">Proxy URL</td> + <td class="tablevalues" tal:content="here/proxyurl" /> + </tr> </table> <span metal:use-macro="here/templates/macros/contentSeparator"/> Modified: trunk/Products/ZenModel/skins/zenmodel/viewPerformanceDetail.pt =================================================================== --- trunk/Products/ZenModel/skins/zenmodel/viewPerformanceDetail.pt 2007-02-28 17:10:27 UTC (rev 4145) +++ trunk/Products/ZenModel/skins/zenmodel/viewPerformanceDetail.pt 2007-02-28 17:19:55 UTC (rev 4146) @@ -43,7 +43,7 @@ <tr><td class="tableheader" tal:content="graph/title">title</td></tr> <tr><td class="tablevalues"> <img src="_" - tal:attributes="src graph/url; + tal:attributes="src graph/url; id graphid"/> <script language="javascript" type="text/javascript" tal:content="string:ZenGraphs[ZenGraphs.length]='${graphid}';"></script> Modified: trunk/Products/ZenRRD/__init__.py =================================================================== --- trunk/Products/ZenRRD/__init__.py 2007-02-28 17:10:27 UTC (rev 4145) +++ trunk/Products/ZenRRD/__init__.py 2007-02-28 17:19:55 UTC (rev 4146) @@ -14,8 +14,15 @@ def initialize(registrar): # Global module assertions for Python scripts from RenderServer import RenderServer,addRenderServer,manage_addRenderServer + from ProxyRenderServer import ProxyRenderServer,addProxyRenderServer,manage_addProxyRenderServer + registrar.registerClass( RenderServer, permission="Add DMD Objects", constructors = (addRenderServer, manage_addRenderServer), ) + registrar.registerClass( + ProxyRenderServer, + permission="Add DMD Objects", + constructors = (addProxyRenderServer, manage_addProxyRenderServer), + ) \ No newline at end of file |