#      Copyright (c) Microsoft Corporation.
# 
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
# 
#           http://www.apache.org/licenses/LICENSE-2.0
# 
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

def setCustomPropertyOnObject(object_id, propname, propvalue):
    propsidlist = AdminConfig.showAttribute(object_id,'properties')[1:-1].split(' ')
    for id in propsidlist:
        name = AdminConfig.showAttribute(id, 'name')
        if name == propname:
            AdminConfig.remove(id)
            AdminConfig.modify(object_id, [['properties', [[['name', propname], ['value', propvalue]]]]])
            return
    AdminConfig.modify(object_id, [['properties', [[['name', propname], ['value', propvalue]]]]])

import sys
cellName = sys.argv[0]
propName = sys.argv[1]
propValue = sys.argv[2]

cell = AdminConfig.getid('/Cell:%s/' % cellName)
setCustomPropertyOnObject(cell, propName, propValue)
AdminConfig.save()
AdminNodeManagement.syncActiveNodes()
