def main(j, args, params, tags, tasklet): params.result = page = args.page machineId = int(args.getTag("machineId")) ccl = j.clients.osis.getNamespace("cloudbroker") actors = j.apps.cloudbroker.iaas.cb.actors.cloudapi vmachine = ccl.vmachine.get(machineId) image = ccl.image.get(vmachine.imageId) bootdisks = ccl.disk.search({ "id": { "$in": vmachine.disks }, "type": "B" })[1:] if len(bootdisks) != 1: return params bootdisk = bootdisks[0] popup = Popup( id="resizemachine", header="Resize Machine", submit_url="/restmachine/cloudbroker/machine/resize", showresponse=True, ) if not image.hotResize: popup.addMessage("Machine resizing will take effect on next start") popup.addNumber("Number of VCPUS", "vcpus") popup.addNumber("Amount of memory", "memory") popup.addHiddenField("machineId", machineId) popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page cloudspaceId = int(args.getTag('cloudspaceId')) ccl = j.clients.osis.getNamespace('cloudbroker') vmachines = ccl.vmachine.search({ 'cloudspaceId': cloudspaceId, 'status': { '$nin': ['ERROR', 'DESTROYED', 'DELETED'] } })[1:] dropvmachines = list() for vmachine in sorted(vmachines, key=lambda vm: vm['name']): dropvmachines.append((vmachine['name'], vmachine['id'])) popup = Popup( id='createportforwarding', header='Create Port Forwarding', submit_url='/restmachine/cloudbroker/machine/createPortForward') popup.addDropdown('Choose Machine', 'machineId', dropvmachines) popup.addNumber('Public Port', 'destPort', required=True) popup.addNumber('VM Port', 'localPort', required=True) popup.addDropdown('Protocol', 'proto', [('TCP', 'tcp'), ('UDP', 'udp')]) popup.addHiddenField('reason', '') popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page machineId = int(args.getTag('machineId')) ccl = j.clients.osis.getNamespace('cloudbroker') actors = j.apps.cloudbroker.iaas.cb.actors.cloudapi vmachine = ccl.vmachine.get(machineId) image = ccl.image.get(vmachine.imageId) bootdisks = ccl.disk.search({ 'id': { '$in': vmachine.disks }, 'type': 'B' })[1:] if len(bootdisks) != 1: return params bootdisk = bootdisks[0] popup = Popup(id='resizemachine', header='Resize Machine', submit_url='/restmachine/cloudbroker/machine/resize', showresponse=True) if not image.hotResize: popup.addMessage('Machine resizing will take effect on next start') popup.addNumber('Number of VCPUS', 'vcpus') popup.addNumber('Amount of memory', 'memory') popup.addHiddenField('machineId', machineId) popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page cloudspaceId = int(args.getTag("cloudspaceId")) ccl = j.clients.osis.getNamespace("cloudbroker") vmachines = ccl.vmachine.search( { "cloudspaceId": cloudspaceId, "status": {"$nin": ["ERROR", "DESTROYED", "DELETED"]}, } )[1:] dropvmachines = list() for vmachine in sorted(vmachines, key=lambda vm: vm["name"]): dropvmachines.append((vmachine["name"], vmachine["id"])) popup = Popup( id="createportforwarding", header="Create Port Forwarding", submit_url="/restmachine/cloudbroker/machine/createPortForward", ) popup.addDropdown("Choose Machine", "machineId", dropvmachines) popup.addNumber("Public Port", "destPort", required=True) popup.addNumber("VM Port", "localPort", required=True) popup.addDropdown("Protocol", "proto", [("TCP", "tcp"), ("UDP", "udp")]) popup.addHiddenField("reason", "") popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page gid = int(args.getTag("gid")) actors = j.apps.cloudbroker.iaas.cb.actors.cloudapi images = actors.images.list(accountId=None, cloudspaceId=None) dropimages = list() def imageSorter(image): return image["type"] + image["name"] for image in sorted(images, key=imageSorter): dropimages.append(("%(type)s: %(name)s" % image, image["id"])) popup = Popup( id="createsystemspace", header="Create system space on the grid", submit_url="/restmachine/cloudbroker/grid/createSystemSpace", ) popup.addText("Resource Name", "name", required=True) popup.addDropdown("Choose Image", "imageId", dropimages) popup.addNumber("Boot Disk Size in GiB", "bootsize") popup.addNumber("Choose data Disk Size in GiB", "dataDiskSize") popup.addNumber("Number of VCPUS", "vcpus") popup.addNumber("Amount of memory in MiB", "memory") popup.addTextArea("User data for cloud-init", "userdata", required=False, rows=5) popup.addHiddenField("id", gid) popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page gid = int(args.getTag('gid')) actors = j.apps.cloudbroker.iaas.cb.actors.cloudapi images = actors.images.list(accountId=None, cloudspaceId=None) dropimages = list() def imageSorter(image): return image['type'] + image['name'] for image in sorted(images, key=imageSorter): dropimages.append(("%(type)s: %(name)s" % image, image['id'])) popup = Popup(id='createsystemspace', header='Create system space on the grid', submit_url='/restmachine/cloudbroker/grid/createSystemSpace') popup.addText('Resource Name', 'name', required=True) popup.addDropdown('Choose Image', 'imageId', dropimages) popup.addNumber('Boot Disk Size in GiB', 'bootsize') popup.addNumber('Choose data Disk Size in GiB', 'dataDiskSize') popup.addNumber('Number of VCPUS', 'vcpus') popup.addNumber('Amount of memory in MiB', 'memory') popup.addTextArea('User data for cloud-init', 'userdata', required=False, rows=5) popup.addHiddenField('id', gid) popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page pars = args.expandParamsAsDict() page.addMessage('<a href="#{0}" role="button" class="btn" data-toggle="modal">Launch demo modal {0}</a>'.format(pars['id'])) popup = Popup(id=pars['id'], header='Text popup', submit_url=pars['submit_url']) popup.addHiddenField('hidden_field', 'hidden_value') popup.addText('First name', 'firstname', required=True) popup.addNumber('Age', 'age') popup.addDropdown('Choose licence', 'license', [('MIT', 'mit'), ('BSD', 'bsd'), ('GPL version 3', 'gpl3')]) popup.addRadio('Choose licence', 'license2', [('MIT', 'mit'), ('BSD', 'bsd'), ('GPL version 3', 'gpl3')]) popup.addCheckboxes('Choose the software', 'software', [('MS Office', 'msoffice'), ('Photoshop', 'photoshop')]) popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page cloudspaceId = int(args.getTag("cloudspaceId")) scl = j.clients.osis.getNamespace("cloudbroker") cloudspace = scl.cloudspace.get(cloudspaceId) stacks = scl.stack.search({"gid": cloudspace.gid, "status": "ENABLED"})[1:] sizes = scl.size.search({})[1:] dropdisksizes = list() dropstacks = list() disksizes = set() def sizeSorter(size): return size["memory"] def sortName(item): return item["name"] for size in sorted(disksizes): dropdisksizes.append(("%s GB" % size, str(size))) for stack in sorted(stacks, key=sortName): dropstacks.append((stack["name"], stack["id"])) popup = Popup( id="importmachine", header="Import Machine", submit_url="/restmachine/cloudapi/machines/importOVF", reload_on_success=False, ) popup.addText("Machine Name", "name", required=True) popup.addText("Machine Description", "desc", required=True) popup.addText("Import Link", "link", required=True) popup.addText("OVF path", "path") popup.addText("Username for Link", "username") popup.addText("Password for Link", "passwd", type="password") popup.addNumber("Number of VCPUS", "vcpus") popup.addNumber("Amount of memory", "memory") popup.addHiddenField("cloudspaceId", cloudspaceId) popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page cloudspaceId = int(args.getTag('cloudspaceId')) scl = j.clients.osis.getNamespace('cloudbroker') cloudspace = scl.cloudspace.get(cloudspaceId) stacks = scl.stack.search({'gid': cloudspace.gid, 'status': 'ENABLED'})[1:] sizes = scl.size.search({})[1:] dropdisksizes = list() dropstacks = list() disksizes = set() def sizeSorter(size): return size['memory'] def sortName(item): return item['name'] for size in sorted(disksizes): dropdisksizes.append(("%s GB" % size, str(size))) for stack in sorted(stacks, key=sortName): dropstacks.append((stack['name'], stack['id'])) popup = Popup(id='importmachine', header='Import Machine', submit_url='/restmachine/cloudapi/machines/importOVF', reload_on_success=False) popup.addText('Machine Name', 'name', required=True) popup.addText('Machine Description', 'desc', required=True) popup.addText('Import Link', 'link', required=True) popup.addText('OVF path', 'path') popup.addText('Username for Link', 'username') popup.addText('Password for Link', 'passwd', type='password') popup.addNumber('Number of VCPUS', 'vcpus') popup.addNumber('Amount of memory', 'memory') popup.addHiddenField('cloudspaceId', cloudspaceId) popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page ccl = j.clients.osis.getNamespace("cloudbroker") locations = ccl.location.search({})[1:] popup = Popup( id="addexternalnetwork", header="Add External Network", submit_url="/restmachine/cloudbroker/iaas/addExternalNetwork", ) popup.addText("Name", "name", required=True) popup.addText("Subnet CIDR", "subnet", required=True) popup.addText("Gateway IP Address", "gateway", required=True) popup.addText("Start IP Address", "startip", required=True) popup.addText("End IP Address", "endip", required=True) popup.addNumber( "VLAN Tag (leave empty if its the standard public bridge)", "vlan", required=False, ) popup.addNumber( "AccountId (make external network exclusive to this accountId otherwise leave empty)", "accountId", required=False, ) popup.addDropdown( "Choose Location", "gid", [(location["name"], location["gid"]) for location in locations], ) popup.addText( " Enter list of ips(seperated by commas), eg 8.8.8.8,10.10.10.10. If you want to disable the health check, enter 127.0.0.1", "pingips", placeholder="If left empty default will be 8.8.8.8", ) popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page cloudspaceId = int(args.getTag("cloudspaceId")) scl = j.clients.osis.getNamespace("cloudbroker") actors = j.apps.cloudbroker.iaas.cb.actors.cloudapi cloudspace = scl.cloudspace.get(cloudspaceId) stacks = scl.stack.search({"gid": cloudspace.gid, "status": "ENABLED"})[1:] images = actors.images.list( accountId=cloudspace.accountId, cloudspaceId=cloudspace.id ) dropimages = list() dropstacks = list() dropstacks.append(("Auto", 0)) def imageSorter(image): return image["type"] + image["name"] def sortName(item): return item["name"] for image in sorted(images, key=imageSorter): dropimages.append(("%(type)s: %(name)s" % image, image["id"])) for stack in sorted(stacks, key=sortName): dropstacks.append((stack["name"], stack["id"])) popup = Popup( id="createmachine", header="Create Machine On CPU Node", submit_url="/restmachine/cloudbroker/machine/createOnStack", ) popup.addText("Machine Name", "name", required=True) popup.addText("Machine Description", "description", required=True) popup.addDropdown("Choose CPU Node", "stackid", dropstacks) popup.addDropdown("Choose Image", "imageId", dropimages) popup.addNumber("Disk Size in GiB", "disksize") popup.addNumber("Number of VCPUS", "vcpus") popup.addNumber("Amount of memory in MiB", "memory") popup.addTextArea("User data for cloud-init", "userdata", required=False, rows=5) popup.addHiddenField("cloudspaceId", cloudspaceId) popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page ccl = j.clients.osis.getNamespace('cloudbroker') locations = ccl.location.search({})[1:] popup = Popup(id='addexternalnetwork', header='Add External Network', submit_url='/restmachine/cloudbroker/iaas/addExternalNetwork') popup.addText('Name', 'name', required=True) popup.addText('Subnet CIDR', 'subnet', required=True) popup.addText('Gateway IP Address', 'gateway', required=True) popup.addText('Start IP Address', 'startip', required=True) popup.addText('End IP Address', 'endip', required=True) popup.addNumber('VLAN Tag (leave empty if its the standard public bridge)', 'vlan', required=False) popup.addNumber('AccountId (make external network exclusive to this accountId otherwise leave empty)', 'accountId', required=False) popup.addDropdown('Choose Location', 'gid', [(location['name'], location['gid']) for location in locations]) popup.addNumber("DHCP server ID (leave empty if no DHCP server for this network)", "dhcpServerId", required=False) popup.addText(' Enter list of ips(seperated by commas), eg 8.8.8.8,10.10.10.10. If you want to disable the health check, enter 127.0.0.1', 'pingips', placeholder='If left empty default will be 8.8.8.8') popup.write_html(page) return params
def main(j, args, params, tags, tasklet): params.result = page = args.page cloudspaceId = int(args.getTag('cloudspaceId')) scl = j.clients.osis.getNamespace('cloudbroker') actors = j.apps.cloudbroker.iaas.cb.actors.cloudapi cloudspace = scl.cloudspace.get(cloudspaceId) stacks = scl.stack.search({'gid': cloudspace.gid, 'status': 'ENABLED'})[1:] images = actors.images.list(accountId=cloudspace.accountId, cloudspaceId=cloudspace.id) dropimages = list() dropstacks = list() dropstacks.append(('Auto', 0)) def imageSorter(image): return image['type'] + image['name'] def sortName(item): return item['name'] for image in sorted(images, key=imageSorter): dropimages.append(("%(type)s: %(name)s" % image, image['id'])) for stack in sorted(stacks, key=sortName): dropstacks.append((stack['name'], stack['id'])) popup = Popup(id='createmachine', header='Create Machine On CPU Node', submit_url='/restmachine/cloudbroker/machine/createOnStack') popup.addText('Machine Name', 'name', required=True) popup.addText('Machine Description', 'description', required=True) popup.addDropdown('Choose CPU Node', 'stackid', dropstacks) popup.addDropdown('Choose Image', 'imageId', dropimages) popup.addNumber('Disk Size in GiB', 'disksize') popup.addNumber('Number of VCPUS', 'vcpus') popup.addNumber('Amount of memory in MiB', 'memory') popup.addTextArea('User data for cloud-init', 'userdata', required=False, rows=5) popup.addHiddenField('cloudspaceId', cloudspaceId) popup.write_html(page) return params