Esempio n. 1
0
def WriteObjectPropertyChangeLog(oType, sObjectID, sLabel, sFrom, sTo):
    catocommon.write_property_change_log(GetSessionUserID(), oType, sObjectID, sLabel, sFrom, sTo)
Esempio n. 2
0
    def update_cloud(self, args):
        """Updates a Cloud.

Required Arguments:
 
* `name` - Name or ID of the Cloud to update.

Optional Arguments:
 
* `apiurl` - URL of the Cloud API endpoint.
* `apiprotocol` - Cloud API endpoint protocol.
* `default_account` - the name of a default Account for this Cloud.

Returns: The updated [Cloud Object](restapi/api-response-objects.html#Cloud){:target="_blank"}.
"""
        # this is a developer function
        if not api._DEVELOPER:
            return R(err_code=R.Codes.Forbidden, err_msg="Only Developers or Administrators can perform this function.")
        
        required_params = ["name"]
        has_required, resp = api.check_required_params(required_params, args)
        if not has_required:
            return resp

        name = args.get("name")
        apiurl = args.get("apiurl")
        apiprotocol = args.get("apiprotocol")
        default_account = args.get("default_account")
        
        oldvals = []
        newvals = []
        
        obj = cloud.Cloud()
        obj.FromName(name)
        if apiurl:
            oldvals.append("api_url: %s" % (obj.APIUrl))
            newvals.append("api_url: %s" % (apiurl))
            obj.APIUrl = apiurl
        if apiprotocol:
            oldvals.append("api_protocol: %s" % (obj.APIProtocol))
            newvals.append("api_protocol: %s" % (apiprotocol))
            obj.APIProtocol = apiprotocol
        
        if default_account:
            obj.GetDefaultAccount()
            oldvals.append("default_account: %s" % (obj.DefaultAccount.Name if obj.DefaultAccount else "None"))
            # no need to build a complete object, as the update is just updating the ID
            newacct = cloud.CloudAccount()
            newacct.FromName(default_account)
            if newacct.ID:
                if not newacct.Provider.Name == obj.Provider.Name:
                    raise Exception("Default Account must be the same Provider as this Cloud.")
                newvals.append("default_account: %s" % (newacct.Name))
                obj.DefaultAccount = newacct

        obj.DBUpdate()
        
        catocommon.write_property_change_log(api._USER_ID, catocommon.CatoObjectTypes.Cloud, obj.ID, obj.Name, ", ".join(oldvals), ", ".join(newvals))

        if args.get("output_format") == "json":
            return R(response=obj.AsJSON())
        elif args.get("output_format") == "text":
            return R(response=obj.AsText(args.get("output_delimiter"), args.get("header")))
        else:
            return R(response=obj.AsXML())