Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • DM/dm-docs
  • hammonds/dm-docs
  • hparraga/dm-docs
3 results
Show changes
Showing
with 823 additions and 0 deletions
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<p:confirmDialog id="userInfoDestroyDialog" message="Delete user #{userInfoController.getCurrentEntityInstanceName()}?"
header="Delete User" severity="alert" widgetVar="userInfoDestroyDialogWidget"
styleClass="dialog">
<p:commandButton value="Yes" oncomplete="userInfoDestroyDialogWidget.hide()" action="#{userInfoController.destroy()}"/>
<p:commandButton value="No" onclick="PF('userInfoDestroyDialogWidget').hide()" type="button" />
</p:confirmDialog>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<ui:param name="userInfoObject" value="#{userInfoController.selected}"/>
<ui:param name="isFieldWriteable" value="#{loginController.loggedIn}"/>
<p:panelGrid columns="2" styleClass="editEntityDetails">
<h:outputLabel for="badge" value="Badge" styleClass="entityDataEmphasizedLabel"/>
<h:outputText id="badge" value="#{userInfoObject.badge}" title="Badge" styleClass="entityDataEmphasizedText"/>
<h:outputLabel for="username" value="Username" styleClass="entityDataEmphasizedLabel"/>
<h:inputText id="username" value="#{userInfoObject.username}" rendered="#{isFieldWriteable}" title="Username" styleClass="entityDataEmphasizedInputText"/>
<h:outputText id="usernameOutput" value="#{userInfoObject.username}" rendered="#{!isFieldWriteable}" title="Username" styleClass="entityDataEmphasizedText"/>
<h:outputLabel for="lastName" value="Last Name" styleClass="entityDataLabel"/>
<h:inputText id="lastName" value="#{userInfoObject.lastName}" rendered="#{isFieldWriteable}" title="Last Name" styleClass="entityDataInputText"/>
<h:outputText id="lastNameOutput" value="#{userInfoObject.lastName}" rendered="#{!isFieldWriteable}" title="Last Name" styleClass="entityDataText"/>
<h:outputLabel for="firstName" value="First Name" styleClass="entityDataLabel"/>
<h:inputText id="firstName" value="#{userInfoObject.firstName}" rendered="#{isFieldWriteable}" title="First Name" styleClass="entityDataInputText"/>
<h:outputText id="firstNameOutput" value="#{userInfoObject.firstName}" rendered="#{!isFieldWriteable}" title="First Name" styleClass="entityDataText"/>
<h:outputLabel for="middleName" value="Middle Name" styleClass="entityDataLabel"/>
<h:inputText id="middleName" value="#{userInfoObject.middleName}" title="Middle Name" rendered="#{isFieldWriteable}" styleClass="entityDataInputText"/>
<h:outputText id="middleNameOutput" value="#{userInfoObject.middleName}" title="Middle Name" rendered="#{!isFieldWriteable}" styleClass="entityDataText"/>
<h:outputLabel for="email" value="Email" styleClass="entityDataLabel"/>
<h:inputText id="email" value="#{userInfoObject.email}" title="Email" styleClass="entityDataInputText"/>
<h:outputLabel for="password" value="Password" styleClass="entityDataLabel" rendered="#{userInfoObject.isDmUser}"/>
<p:password id="password" rendered="#{userInfoObject.isDmUser}" value="#{userInfoController.passwordEntry}" title="Password" feedback="true" styleClass="entityDataInputText"/>
<h:outputLabel for="globusUsername" value="Globus Username" styleClass="entityDataLabel"/>
<h:inputText id="globusUsername" value="#{userInfoObject.globusUsername}" title="Globus Username" styleClass="entityDataInputText"/>
<h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
<h:inputText id="description" value="#{userInfoObject.description}" title="Description" styleClass="entityDataInputText"/>
</p:panelGrid>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<p:dataTable id="userInfoListDataTable"
var="userInfoObject"
value="#{userInfoController.listDataModel}"
filteredValue="#{userInfoController.filteredObjectList}"
paginator="true"
paginatorAlwaysVisible="false"
rows="#{userInfoController.rows}"
binding="#{userInfoController.listDataTable}"
widgetVar="userInfoListWidget"
emptyMessage="No users found.">
<p:column sortBy="#{userInfoObject.id}" headerText="Id" >
<h:outputText value="#{userInfoObject.id}"/>
</p:column>
<p:column sortBy="#{userInfoObject.badge}" headerText="ANL Badge"
filterBy="#{userInfoObject.badge}" filterMatchMode="contains" >
<h:outputText value="#{userInfoObject.badge}"/>
</p:column>
<p:column sortBy="#{userInfoObject.username}" headerText="Username"
filterBy="#{userInfoObject.username}" filterMatchMode="contains" >
<h:outputText value="#{userInfoObject.username}"/>
</p:column>
<p:column sortBy="#{userInfoObject.lastName}" headerText="Last Name"
filterBy="#{userInfoObject.lastName}" filterMatchMode="contains" >
<h:outputText value="#{userInfoObject.lastName}"/>
</p:column>
<p:column sortBy="#{userInfoObject.firstName}" headerText="First, middle Name"
filterBy="#{userInfoObject.firstName}" filterMatchMode="contains" >
<h:outputText value="#{userInfoObject.firstName}, #{userInfoObject.middleName}"/>
</p:column>
<p:column sortBy="#{userInfoObject.email}" headerText="Email"
filterBy="#{userInfoObject.email}" filterMatchMode="contains" >
<h:outputText value="#{userInfoObject.email}"/>
</p:column>
<p:column sortBy="#{userInfoObject.globusUsername}" headerText="Globus username"
filterBy="#{userInfoObject.globusUsername}" filterMatchMode="contains">
<h:outputText value="#{userInfoObject.globusUsername}"/>
</p:column>
<p:column sortBy="#{userInfoObject.description}" headerText="Description"
filterBy="#{userInfoObject.description}" filterMatchMode="contains">
<h:outputText value="#{userInfoObject.description}"/>
</p:column>
<p:column headerText="Actions" >
<div class="actionLink">
<p:commandLink action="#{userInfoController.prepareView(userInfoObject)}" styleClass="ui-icon ui-icon-info" title="View">
<f:setPropertyActionListener value="#{userInfoObject}" target="#{userInfoController.current}"/>
</p:commandLink>
<p:commandLink action="#{userInfoController.prepareEdit(userInfoObject)}" rendered="#{loginController.admin}" styleClass="ui-icon ui-icon-pencil" title="Edit"/>
<p:commandLink oncomplete="PF('userInfoDestroyDialogWidget').show()" rendered="#{loginController.admin}" styleClass="ui-icon ui-icon-trash" title="Delete" update="@form">
<f:setPropertyActionListener value="#{userInfoObject}" target="#{userInfoController.current}"/>
</p:commandLink>
</div>
</p:column>
</p:dataTable>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<ui:param name="userInfoObject" value="#{userInfoController.selected}"/>
<p:panelGrid columns="2" styleClass="viewEntityDetails">
<h:outputLabel for="badge" value="Badge" styleClass="entityDataEmphasizedLabel"/>
<h:outputText id="badge" value="#{userInfoObject.badge}" title="Badge" styleClass="entityDataEmphasizedText"/>
<h:outputLabel for="username" value="Username" styleClass="entityDataEmphasizedLabel"/>
<h:outputText id="username" value="#{userInfoObject.username}" title="Username" styleClass="entityDataEmphasizedText"/>
<h:outputLabel for="lastName" value="Last Name" styleClass="entityDataLabel"/>
<h:outputText id="lastName" value="#{userInfoObject.lastName}" title="Last Name" styleClass="entityDataText"/>
<h:outputLabel for="firstName" value="First Name" styleClass="entityDataLabel"/>
<h:outputText id="firstName" value="#{userInfoObject.firstName}" title="First Name" styleClass="entityDataText"/>
<h:outputLabel for="middleName" value="Middle Name" styleClass="entityDataLabel"/>
<h:outputText id="middleName" value="#{userInfoObject.middleName}" title="Middle Name" styleClass="entityDataText"/>
<h:outputLabel for="email" value="Email" styleClass="entityDataLabel"/>
<h:outputText id="email" value="#{userInfoObject.email}" title="Email" styleClass="entityDataText"/>
<h:outputLabel for="uglobusUsername" value="Globus Username" styleClass="entityDataLabel"/>
<h:outputText id="globusUsername" value="#{userInfoObject.globusUsername}" title="Globus Username" styleClass="entityDataText"/>
<h:outputLabel for="description" value="Description" styleClass="entityDataLabel"/>
<h:outputText id="description" value="#{userInfoObject.description}" title="Description" styleClass="entityDataText"/>
</p:panelGrid>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<title>User View</title>
<h:outputScript library="js/common" name="forwardNotLoggedin.js" rendered="#{!loginController.loggedIn}"/>
<h:outputScript library="js/common" name="noBack.js" rendered="#{userInfoController.notSelected()}" />
<ui:composition template="../../templates/dmViewTemplate.xhtml">
<ui:define name="middleCenter">
<h:form id="viewUserInfoForm">
<div class="pageTitle">
<h1>User #{userInfoController.current.username}</h1>
</div>
<ui:param name="userInfoObject" value="#{userInfoController.current}"/>
<p:accordionPanel multiple="true" activeIndex="0,1" >
<p:tab title="User Properties">
<div class="middleCenterLeftContent">
<ui:include src="private/userInfoViewPanelGrid.xhtml"/>
</div>
</p:tab>
<p:tab title="User Experiments">
<ui:include src="private/userExperimentsListDataTable.xhtml"/>
</p:tab>
</p:accordionPanel>
<p/>
<div class="actionButton">
<p:commandButton action="#{userInfoController.prepareEdit(userInfoObject)}" rendered="#{loginController.admin}" value="Edit" alt="Edit" icon="ui-icon-pencil"/>
<p:commandButton onclick="PF('userInfoDestroyDialogWidget').show();" rendered="#{loginController.admin}" value="Delete" alt="Delete" icon="ui-icon-trash">
<f:setPropertyActionListener value="#{userInfoObject}" target="#{userInfoController.current}"/>
</p:commandButton>
<p:commandButton action="#{userInfoController.prepareList()}" value="Return" alt="Return" icon="ui-icon-arrowreturnthick-1-w"/>
</div>
<ui:include src="private/userInfoDestroyDialog.xhtml"/>
</h:form>
</ui:define>
</ui:composition>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<title>User System Roles List</title>
<h:outputScript library="js/common" name="forwardNotLoggedin.js" rendered="#{!loginController.loggedIn}"/>
<h:outputScript library="js/common" name="forwardNotAuthorized.js" rendered="#{!loginController.admin}"/>
<ui:composition template="../../templates/dmViewTemplate.xhtml">
<ui:define name="middleCenter">
<div class="pageTitle">
<h1>Administrators</h1>
</div>
<h:form id="adminListForm">
<div class="actionButton">
<p:commandButton id="systemRoleAddButton" value="Add" onclick="PF('systemRoleAddDialogWidget').show();" rendered="#{loginController.admin}" icon="ui-icon-plus" >
<p:tooltip for="systemRoleAddButton" value="Add new Administrators."/>
</p:commandButton>
<p:commandButton id="ResetFiltersButton" action="#{userSystemRoleController.resetSystemRoleUserList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight">
<p:tooltip for="ResetFiltersButton" value="Reset list filters."/>
</p:commandButton>
<p:commandButton id="#{entityTypeName}NoOp" style="visibility:hidden" value="NoOp"/>
<p:defaultCommand target="#{entityTypeName}NoOp"/>
</div>
<h:panelGroup>
<ui:include src="private/systemRoleListDataTable.xhtml"/>
</h:panelGroup>
<ui:include src="private/systemRoleRemoveDialog.xhtml" />
<ui:include src="private/systemRoleAddDialog.xhtml"/>
</h:form>
</ui:define>
</ui:composition>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<p:dialog id="adminAddDialog"
header="Add Administrators" widgetVar="systemRoleAddDialogWidget" dynamic="true" styleClass="dialog" width="800">
<div class="actionButton">
<p:commandButton id="ResetFilters" actionListener="#{userSystemRoleController.noSystemRoleTable.resetFilterList()}" alt="Clear Filters" icon="ui-icon-refresh" styleClass="actionButtonRight" oncomplete="PF('systemRoleAddDialogWidget').show()" update="adminAddDialog" >
<p:tooltip for="ResetFilters" value="Reset list filters."/>
</p:commandButton>
<p:commandButton id="systemRoleNoOp" style="visibility:hidden" value="SNoOp"/>
</div>
<div>
<p:dataTable id="addSystemRoleList"
var="adminUser"
value="#{userSystemRoleController.noSystemRoleTable.listDataModel}"
filteredValue="#{userSystemRoleController.noSystemRoleTable.filteredObjectList}"
paginator="true"
paginatorAlwaysVisible="false"
rows="#{userSystemRoleController.rows}"
binding="#{userSystemRoleController.noSystemRoleTable.listDataTable}"
selection="#{userSystemRoleController.noSystemRoleTable.selectedObjectList}"
rowKey="#{adminUser.username}"
widgetVar="systemRoleAddTableWidgetVar"
emptyMessage="No users to add."
rowSelectMode="true"
selectionMode="multiple" >
<p:column sortBy="#{systemUserObject.badge}" headerText="ANL badge"
filterBy="#{systemUserObject.badge}" filterMatchMode="contains" >
<h:outputText value="#{systemUserObject.badge}"/>
</p:column>
<p:column sortBy="#{adminUser.username}" headerText="Username"
filterBy="#{adminUser.username}" filterMatchMode="contains" >
<h:outputText value="#{adminUser.username}"/>
</p:column>
<p:column sortBy="#{adminUser.lastName}" headerText="Last Name"
filterBy="#{adminUser.lastName}" filterMatchMode="contains" >
<h:outputText value="#{adminUser.lastName}"/>
</p:column>
<p:column sortBy="#{adminUser.firstName}" headerText="First Name"
filterBy="#{adminUser.firstName}" filterMatchMode="contains" >
<h:outputText value="#{adminUser.firstName}"/>
</p:column>
<p:column sortBy="#{adminUser.email}" headerText="Email"
filterBy="#{adminUser.email}" filterMatchMode="contains" >
<h:outputText value="#{adminUser.email}"/>
</p:column>
<f:facet name="footer">
<p:commandButton value="Add" action="#{userSystemRoleController.addSystemRole()}" oncomplete="PF('systemRoleAddDialogWidget').hide()" />
<p:commandButton value="Clear Selection" onclick="PF('systemRoleAddTableWidgetVar').unselectAllRows()" />
</f:facet>
</p:dataTable>
</div>
</p:dialog>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:c="http://xmlns.jcp.org/jsp/jstl/core">
<p:dataTable id="systemRoleListDataTable"
var="systemUserObject"
value="#{userSystemRoleController.systemRoleTable.listDataModel}"
filteredValue="#{userSystemRoleController.systemRoleTable.filteredObjectList}"
paginator="true"
paginatorAlwaysVisible="false"
rows="#{userSystemRoleController.rows}"
binding="#{userSystemRoleController.systemRoleTable.listDataTable}"
widgetVar="systemRoleListWidget"
emptyMessage="No users found."
tableStyleClass="systemRoleTable">
<p:column sortBy="#{systemUserObject.id}" headerText="Id" >
<h:outputText value="#{systemUserObject.id}"/>
</p:column>
<p:column sortBy="#{systemUserObject.badge}" headerText="ANL badge"
filterBy="#{systemUserObject.badge}" filterMatchMode="contains" >
<h:outputText value="#{systemUserObject.badge}"/>
</p:column>
<p:column sortBy="#{systemUserObject.username}" headerText="Username"
filterBy="#{systemUserObject.username}" filterMatchMode="contains" >
<h:outputText value="#{systemUserObject.username}"/>
</p:column>
<p:column sortBy="#{systemUserObject.lastName}" headerText="Last Name"
filterBy="#{systemUserObject.lastName}" filterMatchMode="contains" >
<h:outputText value="#{systemUserObject.lastName}"/>
</p:column>
<p:column sortBy="#{systemUserObject.firstName}" headerText="First Name"
filterBy="#{systemUserObject.firstName}" filterMatchMode="contains" >
<h:outputText value="#{systemUserObject.firstName}"/>
</p:column>
<p:column sortBy="#{systemUserObject.email}" headerText="Email"
filterBy="#{systemUserObject.email}" filterMatchMode="contains" >
<h:outputText value="#{systemUserObject.email}"/>
</p:column>
<p:column headerText="Actions" >
<div class="actionLink" >
<p:commandLink oncomplete="PF('systemRoleRemoveDialogWidget').show()" rendered="#{loginController.admin and (loginController.username != systemUserObject.username)}" styleClass="ui-icon ui-icon-trash" title="Remove" update="@form" >
<f:setPropertyActionListener value="#{systemUserObject}" target="#{userSystemRoleController.systemRoleTable.currentObject}" />
</p:commandLink>
</div>
</p:column>
</p:dataTable>
</ui:composition>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.org/ui"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<p:confirmDialog id="systemRoleRemoveDialog" message="Remove #{userSystemRoleController.getSystemRoleName()} Role for user #{userSystemRoleController.systemRoleTable.currentObject.username}?"
header="Remove System Role" severity="alert" widgetVar="systemRoleRemoveDialogWidget"
styleClass="dialog">
<p:commandButton value="Yes" oncomplete="systemRoleRemoveDialogWidget.hide()" action="#{userSystemRoleController.removeSystemRole()}"/>
<p:commandButton value="No" onclick="PF('systemRoleRemoveDialogWidget').hide()" type="button" />
</p:confirmDialog>
</ui:composition>
TOP = ../..
SUBDIRS = DmWebPortal
include $(TOP)/tools/make/RULES_DM
TOP=../../..
all install: dist
clean clean-all clean-install distclean: pyc-clean
.PHONY: pyc-clean
pyc-clean:
rm -f `find . -name '*.pyc'`
# For compiling from command line, we have to use generic build properties file
.PHONY: dist
dist:
__version__ = "0.1 (2015.06.29)"
__version__ = "Development Snapshot"
__version__ = "Development Snapshot"
#!/usr/bin/env python
from dm.common.api.dmRestApi import DmRestApi
from dm.common.utility.configurationManager import ConfigurationManager
class CatRestApi(DmRestApi):
""" Base CAT DM REST api class. """
def __init__(self, username=None, password=None, host=None, port=None, protocol=None):
if host == None:
host = ConfigurationManager.getInstance().getCatWebServiceHost()
if port == None:
port = ConfigurationManager.getInstance().getCatWebServicePort()
DmRestApi.__init__(self, username, password, host, port, protocol)
#######################################################################
# Testing.
if __name__ == '__main__':
pass
#!/usr/bin/env python
from dm.common.utility.loggingManager import LoggingManager
from dm.common.utility.configurationManager import ConfigurationManager
class CatRestApiFactory:
CONFIG_SECTION_NAME = 'CatRestApiFactory'
USERNAME_KEY = 'username'
PASSWORD_FILE_KEY = 'passwordfile'
HOST_KEY = 'host'
PORT_KEY = 'port'
PROTOCOL_KEY = 'protocol'
__logger = None
__username = None
__password = None
__host = None
__port = None
__protocol = None
@classmethod
def getLogger(cls):
if cls.__logger is None:
cls.__logger = LoggingManager.getInstance().getLogger(cls.__name__)
return cls.__logger
@classmethod
def __getConfiguration(cls):
if cls.__username is None:
cls.__username = ConfigurationManager.getInstance().getConfigOption(cls.CONFIG_SECTION_NAME, cls.USERNAME_KEY)
cls.__password = open(ConfigurationManager.getInstance().getConfigOption(cls.CONFIG_SECTION_NAME, cls.PASSWORD_FILE_KEY)).read().strip()
cls.__host = ConfigurationManager.getInstance().getConfigOption(cls.CONFIG_SECTION_NAME, cls.HOST_KEY)
cls.__port = ConfigurationManager.getInstance().getConfigOption(cls.CONFIG_SECTION_NAME, cls.PORT_KEY)
cls.__protocol = ConfigurationManager.getInstance().getConfigOption(cls.CONFIG_SECTION_NAME, cls.PROTOCOL_KEY)
return (cls.__username, cls.__password, cls.__host, cls.__port, cls.__protocol)
@classmethod
def getFileRestApi(cls):
from userRestApi import FileRestApi
(username, password, host, port, protocol) = cls.__getConfiguration()
api = FileRestApi(username, password, host, port, protocol)
return api
####################################################################
# Testing
if __name__ == '__main__':
pass
#!/usr/bin/env python
import os
import urllib
import json
from dm.common.utility.encoder import Encoder
from dm.common.exceptions.dmException import DmException
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.objects.datasetMetadata import DatasetMetadata
from dm.common.objects.fileMetadata import FileMetadata
from catRestApi import CatRestApi
class DatasetRestApi(CatRestApi):
def __init__(self, username=None, password=None, host=None, port=None, protocol=None):
CatRestApi.__init__(self, username, password, host, port, protocol)
@CatRestApi.execute
def addExperimentDataset(self, datasetInfo):
experimentName = datasetInfo.get('experimentName')
if not experimentName:
raise InvalidRequest('Dataset metadata must contain experimentName key.')
datasetName = datasetInfo.get('datasetName')
if not datasetName:
raise InvalidRequest('Dataset metadata must contain datasetName key.')
url = '%s/datasetsByExperiment/%s/%s' % (self.getContextRoot(), experimentName, datasetName)
url += '?datasetInfo=%s' % (Encoder.encode(json.dumps(datasetInfo)))
responseData = self.sendSessionRequest(url=url, method='POST')
return DatasetMetadata(responseData)
@CatRestApi.execute
def updateExperimentDataset(self, datasetInfo):
experimentName = datasetInfo.get('experimentName')
if not experimentName:
raise InvalidRequest('Dataset metadata must contain experimentName key.')
datasetName = datasetInfo.get('datasetName')
if not datasetName:
raise InvalidRequest('Dataset metadata must contain datasetName key.')
url = '%s/datasetsByExperiment/%s/%s' % (self.getContextRoot(), experimentName, datasetName)
url += '?datasetInfo=%s' % (Encoder.encode(json.dumps(datasetInfo)))
responseData = self.sendSessionRequest(url=url, method='PUT')
return DatasetMetadata(responseData)
@CatRestApi.execute
def updateDatasetById(self, datasetInfo):
id = datasetInfo.get('id')
if not id:
raise InvalidRequest('Dataset metadata must contain id key.')
url = '%s/datasets/%s' % (self.getContextRoot(), id)
url += '?datasetInfo=%s' % (Encoder.encode(json.dumps(datasetInfo)))
responseData = self.sendSessionRequest(url=url, method='PUT')
return DatasetMetadata(responseData)
@CatRestApi.execute
def getDatasets(self, queryDict={}):
url = '%s/datasets' % (self.getContextRoot())
url += '?queryDict=%s' % (Encoder.encode(json.dumps(queryDict)))
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, DatasetMetadata)
@CatRestApi.execute
def getExperimentDatasets(self, experimentName, queryDict={}):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
url = '%s/datasetsByExperiment/%s' % (self.getContextRoot(), experimentName)
url += '?queryDict=%s' % (Encoder.encode(json.dumps(queryDict)))
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, DatasetMetadata)
@CatRestApi.execute
def getDatasetById(self, id):
if not id:
raise InvalidRequest('Invalid dataset id provided.')
url = '%s/datasets/%s' % (self.getContextRoot(), id)
responseData = self.sendSessionRequest(url=url, method='GET')
return DatasetMetadata(responseData)
@CatRestApi.execute
def getExperimentDataset(self, experimentName, datasetName):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not datasetName:
raise InvalidRequest('Invalid dataset name provided.')
url = '%s/datasetsByExperiment/%s/%s' % (self.getContextRoot(), experimentName, datasetName)
responseData = self.sendSessionRequest(url=url, method='GET')
return DatasetMetadata(responseData)
@CatRestApi.execute
def getExperimentDatasetFiles(self, experimentName, datasetName):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not datasetName:
raise InvalidRequest('Invalid dataset name provided.')
url = '%s/filesByExperimentDataset/%s/%s' % (self.getContextRoot(), experimentName, datasetName)
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, FileMetadata)
#######################################################################
# Testing.
if __name__ == '__main__':
api = DatasetRestApi()
print api.getDatasets()
print api.getDatasetById('556de0059e058b0ef4c4413b')
print api.getDatasetByName('xyz-001')
import time
t = long(time.time())
datasetInfo = {
'datasetName' : 'sv-%s' % t,
'experimentName' : 'exp1',
'power' : 12,
'powerUnits' : 'kW',
'force' : 15,
'forceUnits' : 'N',
'cKey' : {'a' : 1, 'b' : 'B', 'c' : 2.2},
}
datasetMetadata = api.addDatasetByName(datasetInfo)
print '\nADDED DATASET:\n', datasetMetadata
datasetInfo['updateKey'] = 'here is desc'
datasetMetadata = api.updateDatasetByName(datasetInfo)
print '\nUPDATED DATASET:\n', datasetMetadata
datasetInfo['updateKey2'] = 'new desc'
datasetInfo['id'] = datasetMetadata.get('id')
datasetMetadata = api.updateDatasetById(datasetInfo)
print '\nUPDATED DATASET:\n', datasetMetadata
queryDict = { 'experimentName' : 'exp2' }
print '\nQUERY DATASETS:\n', api.getDatasets(queryDict=queryDict)
#!/usr/bin/env python
import os
import urllib
import json
from dm.common.utility.encoder import Encoder
from dm.common.exceptions.dmException import DmException
from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.objects.fileMetadata import FileMetadata
from catRestApi import CatRestApi
class FileRestApi(CatRestApi):
def __init__(self, username=None, password=None, host=None, port=None, protocol=None):
CatRestApi.__init__(self, username, password, host, port, protocol)
@CatRestApi.execute
def addExperimentFile(self, fileInfo):
experimentName = fileInfo.get('experimentName')
if not experimentName:
raise InvalidRequest('File metadata must contain experimentName key.')
fileName = fileInfo.get('fileName')
if not fileName:
raise InvalidRequest('File metadata must contain fileName key.')
url = '%s/filesByExperiment/%s/%s' % (self.getContextRoot(), experimentName, fileName)
url += '?fileInfo=%s' % (Encoder.encode(json.dumps(fileInfo)))
responseData = self.sendSessionRequest(url=url, method='POST')
return FileMetadata(responseData)
@CatRestApi.execute
def updateExperimentFile(self, fileInfo):
experimentName = fileInfo.get('experimentName')
if not experimentName:
raise InvalidRequest('File metadata must contain experimentName key.')
fileName = fileInfo.get('fileName')
if not fileName:
raise InvalidRequest('File metadata must contain fileName key.')
url = '%s/filesByExperiment/%s/%s' % (self.getContextRoot(), experimentName, fileName)
url += '?fileInfo=%s' % (Encoder.encode(json.dumps(fileInfo)))
responseData = self.sendSessionRequest(url=url, method='PUT')
return FileMetadata(responseData)
@CatRestApi.execute
def updateFileById(self, fileInfo):
id = fileInfo.get('id')
if not id:
raise InvalidRequest('File metadata must contain id key.')
url = '%s/files/%s' % (self.getContextRoot(), id)
url += '?fileInfo=%s' % (Encoder.encode(json.dumps(fileInfo)))
responseData = self.sendSessionRequest(url=url, method='PUT')
return FileMetadata(responseData)
@CatRestApi.execute
def getFiles(self, queryDict={}):
url = '%s/files' % (self.getContextRoot())
url += '?queryDict=%s' % (Encoder.encode(json.dumps(queryDict)))
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, FileMetadata)
@CatRestApi.execute
def getExperimentFiles(self, experimentName, queryDict={}):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
url = '%s/filesByExperiment/%s' % (self.getContextRoot(), experimentName)
url += '?queryDict=%s' % (Encoder.encode(json.dumps(queryDict)))
responseData = self.sendSessionRequest(url=url, method='GET')
return self.toDmObjectList(responseData, FileMetadata)
@CatRestApi.execute
def getFileById(self, id):
if not id:
raise InvalidRequest('Invalid file id provided.')
url = '%s/files/%s' % (self.getContextRoot(), id)
responseData = self.sendSessionRequest(url=url, method='GET')
return FileMetadata(responseData)
@CatRestApi.execute
def getExperimentFile(self, experimentName, fileName):
if not experimentName:
raise InvalidRequest('Invalid experiment name provided.')
if not fileName:
raise InvalidRequest('Invalid file name provided.')
url = '%s/filesByExperiment/%s/%s' % (self.getContextRoot(), experimentName, fileName)
responseData = self.sendSessionRequest(url=url, method='GET')
return FileMetadata(responseData)
#######################################################################
# Testing.
if __name__ == '__main__':
api = FileRestApi()
print api.getFiles()
print api.getFileById('556de0059e058b0ef4c4413b')
print api.getFileByName('xyz-001')
import time
t = long(time.time())
fileInfo = {
'fileName' : 'sv-%s' % t,
'experimentName' : 'exp1',
'power' : 12,
'powerUnits' : 'kW',
'force' : 15,
'forceUnits' : 'N',
'cKey' : {'a' : 1, 'b' : 'B', 'c' : 2.2},
}
fileMetadata = api.addFileByName(fileInfo)
print '\nADDED FILE:\n', fileMetadata
fileInfo['updateKey'] = 'here is desc'
fileMetadata = api.updateFileByName(fileInfo)
print '\nUPDATED FILE:\n', fileMetadata
fileInfo['updateKey2'] = 'new desc'
fileInfo['id'] = fileMetadata.get('id')
fileMetadata = api.updateFileById(fileInfo)
print '\nUPDATED FILE:\n', fileMetadata
queryDict = { 'experimentName' : 'exp2' }
print '\nQUERY FILES:\n', api.getFiles(queryDict=queryDict)
__version__ = "Development Snapshot"
#!/usr/bin/env python
from dm.cat_web_service.api.datasetRestApi import DatasetRestApi
from dm.common.exceptions.invalidRequest import InvalidRequest
from catWebServiceSessionCli import CatWebServiceSessionCli
class AddExperimentDatasetCli(CatWebServiceSessionCli):
def __init__(self):
CatWebServiceSessionCli.__init__(self, validArgCount=self.ANY_NUMBER_OF_POSITIONAL_ARGS)
self.addOption('', '--dataset', dest='datasetName', help='Dataset name.')
self.addOption('', '--experiment', dest='experimentName', help='Experiment name.')
def checkArgs(self):
if self.options.experimentName is None:
raise InvalidRequest('Experiment name must be provided.')
if self.options.datasetName is None:
raise InvalidRequest('Dataset name must be provided.')
def getExperimentName(self):
return self.options.experimentName
def getDatasetName(self):
return self.options.datasetName
def runCommand(self):
self.parseArgs(usage="""
dm-add-experiment-dataset --dataset=DATASETNAME --experiment=EXPERIMENTNAME
[key1:value1, key2:value2, ...]
Description:
Adds experiment dataset to the metadata catalog. All provided key/value
pairs are interpreted as dataset metadata.
""")
self.checkArgs()
api = DatasetRestApi(self.getLoginUsername(), self.getLoginPassword(), self.getServiceHost(), self.getServicePort(), self.getServiceProtocol())
datasetInfo = self.splitArgsIntoDict()
datasetInfo['experimentName'] = self.getExperimentName()
datasetInfo['datasetName'] = self.getDatasetName()
datasetMetadata = api.addExperimentDataset(datasetInfo)
print datasetMetadata.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())
#######################################################################
# Run command.
if __name__ == '__main__':
cli = AddExperimentDatasetCli()
cli.run()