# Serbian translations for system-config-cluster
# Copyright (C) 2005 Red Hat, Inc.
# This file is distributed under the same license as the system-config-cluster package.
# Miloš Komarčević <kmilos@gmail.com>, 2005.
# Игор Несторовић <igor@prevod.org>, 2005
#
#
msgid ""
msgstr ""
"Project-Id-Version: sr\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-09-02 15:53-0400\n"
"PO-Revision-Date: 2005-07-23 15:13+0200\n"
"Last-Translator: Игор Несторовић <igor@prevod.org>\n"
"Language-Team: Serbian (sr) <fedora@prevod.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#. !/usr/bin/python
#. Columns for "treeview"
#. INSTALLDIR="."
#: src/redhat-config-cluster.py:51
msgid ""
"Please be patient.\n"
" Starting and Stopping Services\n"
" can sometimes take a minute or two."
msgstr ""
"Будите стрпљиви.\n"
" Покретање и заустављање сервиса\n"
" понекада може да потраје пар минута."

#: src/redhat-config-cluster.py:60 src/configure/cluster-config.py:55
#, python-format
msgid "%s %s"
msgstr "%s %s"

#. ## Get Clumanager version to present in 'About' ###
#: src/redhat-config-cluster.py:64 src/configure/cluster-config.py:59
#, python-format
msgid "clumanager %s"
msgstr "clumanager %s"

#. ## gettext ("_") must come before import gtk ###
#. ## gettext first, then import gtk (exception prints gettext "_") ###
#: src/redhat-config-cluster.py:87 src/configure/cluster-config.py:21
#, python-format
msgid ""
"\n"
"  Unable to initialize graphical environment. Most likely cause of failure\n"
"  is that the tool was not run using a graphical environment. Please either\n"
"  start your graphical user interface or set your DISPLAY variable.\n"
"\n"
"  Caught exception: %s\n"
msgstr ""
"\n"
"  Није могуће покренути графичко окружење. Разлог квара је вероватно\n"
"  то што алат није покренут из графичког окружења. Потребно је или да "
"покренете\n"
"  графичко корисничко окружење или да поставите променљиву DISPLAY.\n"
"\n"
"  Изузеће: %s\n"

#: src/redhat-config-cluster.py:104 src/configure/cluster-config.py:67
msgid "redhat-config-cluster"
msgstr "redhat-config-cluster"

#: src/redhat-config-cluster.py:107
msgid ""
"\n"
"redhat-config-cluster - Python GUI to configure a Red Hat Clumanager "
"cluster.\n"
"\n"
"See redhat-config-cluster(8) for more information.\n"
msgstr ""
"\n"
"redhat-config-cluster - Графичко окружење рађено програмом Python за "
"подешавање Red Hat Clumanager чворишта.\n"
"\n"
"Погледајте redhat-config-cluster(8) за више информација.\n"

#. stateTable=[_("Down"),_("Up"), _("Unknown")]
#: src/redhat-config-cluster.py:149
msgid "Inactive"
msgstr "Мировање"

#: src/redhat-config-cluster.py:149
msgid "Active"
msgstr "Активно"

#: src/redhat-config-cluster.py:149 src/redhat-config-cluster.py:240
msgid "Unknown"
msgstr "Непознато"

#. 'state' attribute doesn't exist, or has null value
#: src/redhat-config-cluster.py:234
msgid "Uninitialized"
msgstr "Непокренуто"

#: src/redhat-config-cluster.py:235
msgid "Running"
msgstr "Ради"

#: src/redhat-config-cluster.py:236
msgid "Stopped"
msgstr "Заустављено"

#: src/redhat-config-cluster.py:237
msgid "Disabled"
msgstr "Искључено"

#: src/redhat-config-cluster.py:238
msgid "Pending"
msgstr "На чекању"

#: src/redhat-config-cluster.py:239
msgid "Failed"
msgstr "Неуспело"

#. 'state' attribute doesn't exist, or has null value
#. print "getStateString - self.getState() = <%s>" % state
#: src/redhat-config-cluster.py:269
msgid "Not Monitored"
msgstr "Не надгледа се"

#. option not present, or has null value
#. return an empty list
#. make sure threading is disabled
#. map the event signals to specific methods
#. ## Parse cluster.xml into DOM nodes, and do not lock the cluster.xml
#. ## file, since this program only needs read access.
#. ## set current node label ###
#. ## When cluster is coming up from stopped, we need to allow
#. ## enough time for the cluster to come all the way up.
#. print "on_start_cluster: interval =", interval
#. print "                  tko_count =", tko_count
#. print "                  milliseconds =", milliseconds
#. print "                  seconds =", seconds
#. print "                  max_seconds =", max_seconds
#. (status, output) = getStatusOutput("service clumanager start")
#: src/redhat-config-cluster.py:389
msgid "Error: Cluster did *NOT* come up as expected - will stop cluster now"
msgstr ""
"Грешка: чвориште *НИЈЕ* покренуто као што се очекивало - сада ће бити "
"заустављено"

#. ## Cluster came up as expected - now safe to call 'updateList' ###
#: src/redhat-config-cluster.py:401
msgid ""
"A Problem has occurred while changing ownership of this service. Please "
"check logs for details"
msgstr ""
"Јавио се проблем при измени власништва над овим сервисом. Проверите дневник "
"око детаља"

#. gtk.timeout_add(60000,self.onTimer)
#. self.winMain.window.set_cursor(busy_cursor)
#. self.winMain.window.set_cursor(ready_cursor)
#: src/redhat-config-cluster.py:444
msgid ""
" An error has occurred while disabling this service. Please check logs for "
"details."
msgstr ""
" Јавила се грешка при искључивању овог сервиса. Проверите дневник око детаља."

#: src/redhat-config-cluster.py:453
msgid ""
"Error: Service Enable failed - please check the logs for error messages.\n"
"\n"
"Once the problem has been corrected, the 'Failed' service must first be "
"Disabled before it can be Enabled."
msgstr ""
"Грешка: неуспело укључивање сервиса - проверите дневник за поруке о грешци.\n"
"\n"
"Када проблем буде отклоњен, сервис ’Неуспело‘ прво мора бити искључен да би "
"се након тога укључио."

#. Temporarily mothball main window
#. print prevIter
#. ## service is 'enabled'
#. ## set service to 'disabled'
#. ## Service is NOT running - 'owner' is not present,
#. ## so get "lastowner".
#. os.system("clusvcadm -r '%s' -m %s" % (selection_data.data,s.getName()))
#. ## Service is 'Disabled' - just 'enable' on new member
#. ## Service is not 'Disabled' - restart it on new member
#. __ The callback that sends the drag-and-drop data
#. __ The DnD stuff
#: src/redhat-config-cluster.py:797 src/redhat-config-cluster.py:871
#: src/redhat-config-cluster.py:986 src/redhat-config-cluster.glade.h:15
#: src/configure/failoverdomainnodeDialog.py:48
#: src/configure/failoverdomainsListview.py:31
#: src/configure/membersTreeview.py:30 src/configure/servicesTreeview.py:42
#: src/configure/nfsExportDruid.py:73 src/configure/nfsExportDruid.py:95
#: src/configure/smbShareDruid.py:57 src/configure/smbShareDruid.py:79
msgid "Name"
msgstr "Име"

#: src/redhat-config-cluster.py:803 src/redhat-config-cluster.glade.h:25
msgid "Status"
msgstr "Статус"

#: src/redhat-config-cluster.py:820
msgid "Address"
msgstr "Адреса"

#: src/redhat-config-cluster.py:824 src/configure/cluster-config.glade.h:69
msgid "Netmask"
msgstr "Мрежна маска"

#: src/redhat-config-cluster.py:828 src/configure/cluster-config.glade.h:13
msgid "Broadcast"
msgstr "Одашиљање (broadcast)"

#: src/redhat-config-cluster.py:838
msgid "Host"
msgstr "Домаћин"

#: src/redhat-config-cluster.py:842
msgid "options"
msgstr "опције"

#: src/redhat-config-cluster.py:878
msgid "State"
msgstr "Стање"

#: src/redhat-config-cluster.py:885 src/configure/cluster-config.glade.h:55
msgid "Member"
msgstr "Члан"

#: src/redhat-config-cluster.py:892
msgid ""
"Last\n"
"Transition"
msgstr ""
"Последњи\n"
"Пренос"

#: src/redhat-config-cluster.py:899
msgid ""
"Monitor\n"
"Interval"
msgstr ""
"Праћење\n"
"Интервал"

#: src/redhat-config-cluster.py:906
msgid "Restarts"
msgstr "Поново се покреће"

#. self.prevXML=""
#: src/redhat-config-cluster.py:928
msgid "Cluster is running"
msgstr "Чвориште ради"

#: src/redhat-config-cluster.py:933
msgid "Cluster is not running"
msgstr "Чвориште не ради"

#. ## Don't specify version - already in ABOUT_VERSION
#: src/redhat-config-cluster.py:954 src/configure/cluster-config.py:396
msgid "Copyright (c) 2003 Red Hat, Inc. All rights reserved."
msgstr "Ауторско право (c) 2003 Red Hat, Inc. Сва права задржана."

#: src/redhat-config-cluster.py:955 src/configure/cluster-config.py:397
msgid "This software is licensed under the terms of the GPL."
msgstr "Овај софтвер је лиценциран под условима ОЈЛ (GPL)."

#: src/redhat-config-cluster.py:993 src/configure/cluster-config.glade.h:29
msgid "Device"
msgstr "Уређај"

#: src/redhat-config-cluster.py:1000
msgid "PORT"
msgstr "ПОРТ"

#: src/redhat-config-cluster.py:1007
msgid "IP"
msgstr "IP"

#: src/redhat-config-cluster.py:1014 src/configure/cluster-config.glade.h:115
msgid "User"
msgstr "Корисник"

#. #######################################
#. ## end def modify_service_ipaddress ###
#. #######################################
#. ###########################################################################
#. ##############################  Main  #####################################
#. ###########################################################################
#: src/redhat-config-cluster.py:1038
#: src/configure/redhat-config-cluster-cmd.py:1031
#: src/configure/cluster-config.py:91
#, python-format
msgid "Please restart %s with root permissions!"
msgstr "Поново покрените %s са овлашћењима root корисника!"

#. ## To get here, user just ran 'redhat-config-cluster' - so,
#. ## if configuration file(/etc/cluster.xml) exists, run this
#. ## GUI which is the cluster status GUI.  If the configuration
#. ## file does *NOT* exist, then run the Cluster Configuration
#. ## (CLUSTERCONFIG_APP) application.
#. print "Cluster configuration file does not exist - running cluconfig now!"
#. ## Cluster configuration file *DOES* exist - run this
#. ## Cluster Status GUI now.
#. print "Cluster configuration file *DOES* exist - running clustat now!"
#. if you quit during initialization exceptions can be raised
#. ############################################################
#. ## This class is a utility class that displays a busy/wait
#. ## progress bar and a message in a Dialog box.
#. ##
#. ## Constructor Arguments:
#. ## commandstring:  The command and args you wish the system to run.
#. ## message:  The message you wish displayed in the dialog box.
#. ## errorstring: If the system call return value is non-zero,
#. ##     the busy/wait dialog will be replaced by a message dialog
#. ##     that informs the user with this error string. If an errorstring
#. ##     is not provided, a default generic one is used.
#. ## post_fork_command: This is an optional param. If the calling party
#. ##     wishes to have a method called when the child process
#. ##     has completed, it can be passed in here.
#: src/ForkedCommand.py:24
msgid ""
"An error has occurred while running a system command. Please check logs for "
"details."
msgstr ""
"Јавила се грешка при задавању системске команде. Проверите дневник око "
"детаља."

#. This pipe is for the parent process to receive
#. the result of the system call in the child process,
#. and take appropriate action if an error has occurred.
#. parent process
#. spawn dialog
#. child process
#. let parent process know result of system call through IPC
#. Create an alignment object that will center the pbar
#. Start bouncing progress bar
#. Stop caring about SIGCHLD...
#. signal.signal(signal.SIGCHLD, signal.SIG_DFL)
#. Check how things went with the system call
#: src/redhat-config-cluster.glade.h:1 src/configure/cluster-config.glade.h:1
msgid "*"
msgstr "*"

#: src/redhat-config-cluster.glade.h:2 src/configure/cluster-config.glade.h:26
msgid "Cluster Name: "
msgstr "Име чворишта: "

#: src/redhat-config-cluster.glade.h:3
msgid "Cluster Status"
msgstr "Статус чворишта"

#: src/redhat-config-cluster.glade.h:4
msgid "Devices"
msgstr "Уређаји"

#: src/redhat-config-cluster.glade.h:5
msgid "Disable"
msgstr "Искључи"

#: src/redhat-config-cluster.glade.h:6
msgid "Enable"
msgstr "Укључи"

#: src/redhat-config-cluster.glade.h:7
msgid "Failover Domain:"
msgstr "Домен за опоравак:"

#: src/redhat-config-cluster.glade.h:8
msgid "Has Quorum"
msgstr "Има кворум"

#: src/redhat-config-cluster.glade.h:9
msgid "Ip Addresses"
msgstr "Ip адресе"

#: src/redhat-config-cluster.glade.h:10
msgid "Last Time:"
msgstr "Последње време:"

#: src/redhat-config-cluster.glade.h:11
msgid "Member Information"
msgstr "Подаци о члану"

#: src/redhat-config-cluster.glade.h:12
msgid "Member:"
msgstr "Члан:"

#: src/redhat-config-cluster.glade.h:13
#: src/configure/cluster-config.glade.h:57
msgid "Members"
msgstr "Чланови"

#: src/redhat-config-cluster.glade.h:14
msgid "Monitor Interval:"
msgstr "Интервал праћења:"

#: src/redhat-config-cluster.glade.h:16
msgid "Name:"
msgstr "Име:"

#: src/redhat-config-cluster.glade.h:17
msgid "On Member:"
msgstr "На члана:"

#: src/redhat-config-cluster.glade.h:18
msgid "Power Switch"
msgstr "Прекидач за напајање"

#: src/redhat-config-cluster.glade.h:19
msgid "Restarts:"
msgstr "Поново се покреће:"

#: src/redhat-config-cluster.glade.h:20
msgid "Script:"
msgstr "Скрипта:"

#: src/redhat-config-cluster.glade.h:21
msgid "Service Information"
msgstr "Подаци о сервису"

#: src/redhat-config-cluster.glade.h:22
#: src/configure/cluster-config.glade.h:103
msgid "Services"
msgstr "Сервиси"

#: src/redhat-config-cluster.glade.h:23
msgid "Start Local Cluster Daemons"
msgstr "Покреће локалне процесе чворишта"

#: src/redhat-config-cluster.glade.h:24
msgid "State:"
msgstr "Стање:"

#: src/redhat-config-cluster.glade.h:26
msgid "Status:"
msgstr "Статус:"

#: src/redhat-config-cluster.glade.h:27
msgid "Stop Local Cluster Daemons"
msgstr "Зауставља локалне процесе чворишта"

#: src/redhat-config-cluster.glade.h:28
msgid "Transitions"
msgstr "Преноси"

#: src/redhat-config-cluster.glade.h:29
#: src/configure/cluster-config.glade.h:120
msgid "_Cluster"
msgstr "_Чвориште"

#: src/redhat-config-cluster.glade.h:30
msgid "_Configure"
msgstr "_Подеси"

#: src/redhat-config-cluster.glade.h:31
#: src/configure/cluster-config.glade.h:121
msgid "_Contents"
msgstr "_Садржај"

#: src/redhat-config-cluster.glade.h:32
msgid "_Disable"
msgstr "_Искључи"

#: src/redhat-config-cluster.glade.h:33
msgid "_Enable"
msgstr "_Укључи"

#: src/redhat-config-cluster.glade.h:34
msgid "_Restart"
msgstr "_Поново покрени"

#: src/configure/cluster-config.glade.h:2
msgid "..."
msgstr "..."

#: src/configure/cluster-config.glade.h:3
msgid "0"
msgstr "0"

#: src/configure/cluster-config.glade.h:4
msgid "Add Child"
msgstr "Додај садржани процес"

#: src/configure/cluster-config.glade.h:5
msgid "Add Device"
msgstr "Додај уређај"

#: src/configure/cluster-config.glade.h:6
msgid "Add Device or Service IP Address"
msgstr "Додај уређај или IP адресу сервиса"

#: src/configure/cluster-config.glade.h:7
msgid "Add E_xports"
msgstr "Додај _извежено"

#: src/configure/cluster-config.glade.h:8
msgid "Add NFS Export Druid"
msgstr "Додај NFS врача за извоз"

#: src/configure/cluster-config.glade.h:9
msgid "Add Samba Druid"
msgstr "Додај врача за Самбу"

#: src/configure/cluster-config.glade.h:10
msgid "Add Service IP Address"
msgstr "Додај IP адресу сервиса"

#: src/configure/cluster-config.glade.h:11
msgid ""
"After creating the NFS Export, you can use the Service tab to modify default "
"settings."
msgstr ""
"Након направљеног извоза за NFS, можете да користите језичак сервиса ради "
"измене подразумеваних подешавања."

#: src/configure/cluster-config.glade.h:12
msgid ""
"After creating the Samba Share, you can use the Service tab to modify "
"default settings."
msgstr ""
"Након дељења ресурса под Самбом, можете да користите језичак сервиса ради "
"измене подразумеваних подешавања."

#: src/configure/cluster-config.glade.h:14
msgid "Bulk Load NFS"
msgstr "NFS оптерећење"

#: src/configure/cluster-config.glade.h:15
msgid "Check Interval"
msgstr "Провери интервал"

#: src/configure/cluster-config.glade.h:16
msgid ""
"Click Forward to begin entering the necessary\n"
"information to allow the cluster to NFS export\n"
"a directory."
msgstr ""
"Кликните Напред ради уноса потребних\n"
"података како би чвориште могло да извезе\n"
"директоријум као NFS."

#: src/configure/cluster-config.glade.h:19
msgid ""
"Click Forward to begin entering the necessary\n"
"information to allow the cluster to Share a\n"
"directory to Windows clients using Samba."
msgstr ""
"Кликните Напред ради уноса потребних\n"
"података како би чвориште могјо да омогући\n"
"дељење директоријума клијентима под Windows\n"
"системима коришћењем Самбе."

#: src/configure/cluster-config.glade.h:22
msgid "Client Name"
msgstr "Име клијента"

#: src/configure/cluster-config.glade.h:23
msgid "Client Options"
msgstr "Опције клијента"

#: src/configure/cluster-config.glade.h:24
msgid "Cluster Configuration"
msgstr "Подешавање чворишта"

#: src/configure/cluster-config.glade.h:25
msgid "Cluster Daemon Properties"
msgstr "Особине позадинског процеса чворишта"

#: src/configure/cluster-config.glade.h:27
msgid "Data Changed!"
msgstr "Измењени подаци!"

#: src/configure/cluster-config.glade.h:28
msgid "Delete"
msgstr "Обриши"

#: src/configure/cluster-config.glade.h:30
msgid "Device Mountpoint"
msgstr "Тачка за монтирање уређаја"

#: src/configure/cluster-config.glade.h:31
msgid "Device Special File"
msgstr "Посебна датотека уређаја"

#: src/configure/cluster-config.glade.h:32
msgid "Disk Tiebreaker - Disk Ping Interval"
msgstr "Арбитар (tiebreaker) диска - интервал за пинг диска"

#: src/configure/cluster-config.glade.h:33
msgid "Domain Name"
msgstr "Име домена"

#: src/configure/cluster-config.glade.h:34
msgid "Enable Broadcast Heartbeating"
msgstr "Укључи одашиљање пулса"

#: src/configure/cluster-config.glade.h:35
msgid "Enable Multicast Heartbeating"
msgstr "Одржавај вишеканални сигнал (multicast heartbeating)"

#: src/configure/cluster-config.glade.h:36
msgid "Enable Software Watchdog"
msgstr "Укључи софтверског надзорника"

#: src/configure/cluster-config.glade.h:37
msgid "Enter Directory to Export"
msgstr "Унеси директоријум за извоз"

#: src/configure/cluster-config.glade.h:38
msgid "Enter Share Name"
msgstr "Унеси име за дељење"

#: src/configure/cluster-config.glade.h:39
msgid "Existing Device and Mountpoint"
msgstr "Постојећи уређај и тачка за монтирање"

#: src/configure/cluster-config.glade.h:40
msgid "Existing Services with IP Addresses"
msgstr "Постојећи сервиси са IP адресама"

#: src/configure/cluster-config.glade.h:41
msgid "Export Directory"
msgstr "Извези директоријум"

#: src/configure/cluster-config.glade.h:42
msgid "FS Type"
msgstr "Тип система датотека"

#: src/configure/cluster-config.glade.h:43
msgid "Failover Domain"
msgstr "Домен за опоравак"

#: src/configure/cluster-config.glade.h:44
msgid "Failover Domain Member"
msgstr "Члан домена за опоравак"

#: src/configure/cluster-config.glade.h:45
msgid "Failover Domains"
msgstr "Домени за опоравак"

#: src/configure/cluster-config.glade.h:46
msgid "Failover Seconds"
msgstr "Секунде за опоравак"

#: src/configure/cluster-config.glade.h:47
msgid "Failover Speed"
msgstr "Брзина опоравка"

#: src/configure/cluster-config.glade.h:48
msgid "Faster"
msgstr "Брже"

#: src/configure/cluster-config.glade.h:49
msgid "Force Unmount"
msgstr "Силом размонтирај"

#: src/configure/cluster-config.glade.h:50
msgid "GULM STONITH"
msgstr "GULM STONITH"

#: src/configure/cluster-config.glade.h:51
msgid "IP Address"
msgstr "IP адреса"

#: src/configure/cluster-config.glade.h:52
msgid "Log Level"
msgstr "Ниво уписа у дневник"

#: src/configure/cluster-config.glade.h:53
msgid "Maximum False Starts"
msgstr "Највиже лажних покретања"

#: src/configure/cluster-config.glade.h:54
msgid "Maximum Restarts"
msgstr "Највише поновних покретања"

#: src/configure/cluster-config.glade.h:56
msgid "Member Name"
msgstr "Име члана"

#: src/configure/cluster-config.glade.h:58
msgid "Monitor Link"
msgstr "Прати везу"

#: src/configure/cluster-config.glade.h:59
msgid "Mount"
msgstr "Монтирање"

#: src/configure/cluster-config.glade.h:60
msgid "Mount Point"
msgstr "Тачка за монтирање"

#: src/configure/cluster-config.glade.h:61
msgid "Multicast IP Address"
msgstr "Вишеканална (multicast) IP адреса"

#: src/configure/cluster-config.glade.h:62
msgid "NFS Druid"
msgstr "NFS врач"

#: src/configure/cluster-config.glade.h:63
msgid "NFS Export"
msgstr "NFS извоз"

#: src/configure/cluster-config.glade.h:64
msgid "NFS Export Bulk Load Failures"
msgstr "Неуспеси у извозу NFS оптерећења"

#: src/configure/cluster-config.glade.h:65
msgid "NFS Export Client"
msgstr "Клијент за NFS извоз"

#: src/configure/cluster-config.glade.h:66
msgid "NFS Export Completion"
msgstr "Завршетак NFS извоза"

#: src/configure/cluster-config.glade.h:67
msgid "NFS Export Directory Name"
msgstr "Име директоријума NFS извоза"

#: src/configure/cluster-config.glade.h:68
msgid "NFS..."
msgstr "NFS..."

#: src/configure/cluster-config.glade.h:70
msgid "Network"
msgstr "Мрежа"

#: src/configure/cluster-config.glade.h:71
msgid "Network Tiebreaker - IP Address"
msgstr "Арбитар (tiebreaker) мреже - IP адреса"

#: src/configure/cluster-config.glade.h:72
msgid "New"
msgstr "Ново"

#: src/configure/cluster-config.glade.h:73
msgid "New Device"
msgstr "Нови уређај"

#: src/configure/cluster-config.glade.h:74
msgid "New Service"
msgstr "Нови сервис"

#: src/configure/cluster-config.glade.h:75
msgid "No Cluster Members"
msgstr "Нема чланова чворишта"

#: src/configure/cluster-config.glade.h:76
msgid "Options"
msgstr "Опције"

#: src/configure/cluster-config.glade.h:77
msgid "Ordered Failover"
msgstr "Опоравак по наредби"

#: src/configure/cluster-config.glade.h:78
msgid "Owner"
msgstr "Власник"

#: src/configure/cluster-config.glade.h:79
msgid "Password"
msgstr "Лозинка"

#: src/configure/cluster-config.glade.h:80
msgid "Poll Interval"
msgstr "Време између провера"

#: src/configure/cluster-config.glade.h:81
msgid "Port"
msgstr "Порт"

#: src/configure/cluster-config.glade.h:82
msgid "Power Controller"
msgstr "Контролер напајања"

#: src/configure/cluster-config.glade.h:83
msgid "Power Controller Type"
msgstr "Тип контролера напајања"

#: src/configure/cluster-config.glade.h:84
msgid "Properties"
msgstr "Особине"

#: src/configure/cluster-config.glade.h:85
msgid "Raw Primary"
msgstr "Основно сирово"

#: src/configure/cluster-config.glade.h:86
msgid "Raw Shadow"
msgstr "Резервно сирово"

#: src/configure/cluster-config.glade.h:87
msgid "Restrict failover to only these members"
msgstr "Ограничи опоравак само на ове чланове"

#: src/configure/cluster-config.glade.h:88
msgid "SFS Path"
msgstr "SFS путања"

#: src/configure/cluster-config.glade.h:89
msgid "Samba Druid"
msgstr "Самба врач"

#: src/configure/cluster-config.glade.h:90
msgid "Samba Share Completion"
msgstr "Завршетак Самба дељења"

#: src/configure/cluster-config.glade.h:91
msgid "Samba Share Name"
msgstr "Име Самба дељења"

#: src/configure/cluster-config.glade.h:92
msgid "Samba..."
msgstr "Самба..."

#: src/configure/cluster-config.glade.h:93
msgid "Select Device for Export"
msgstr "Изаберите уређај за извоз"

#: src/configure/cluster-config.glade.h:94
msgid "Select Device for Share"
msgstr "Изаберите уређај за дељење"

#: src/configure/cluster-config.glade.h:95
msgid "Select Service for Export"
msgstr "Изаберите сервис за извоз"

#: src/configure/cluster-config.glade.h:96
msgid "Select Service for Share"
msgstr "Изаберите сервис за дељење"

#: src/configure/cluster-config.glade.h:97
msgid "Select the NFS exports file to bulk load"
msgstr "Изаберите датотеку NFS извоза за оптерећење"

#: src/configure/cluster-config.glade.h:98
msgid "Serial"
msgstr "Серијски"

#: src/configure/cluster-config.glade.h:99
msgid "Service"
msgstr "Сервис"

#: src/configure/cluster-config.glade.h:100
msgid "Service IP Address"
msgstr "IP адреса сервиса"

#: src/configure/cluster-config.glade.h:101
msgid "Service Name"
msgstr "Име сервиса"

#: src/configure/cluster-config.glade.h:102
msgid "Service text here"
msgstr "Текст сервиса овде"

#: src/configure/cluster-config.glade.h:104
msgid "Share Name"
msgstr "Име дељења"

#: src/configure/cluster-config.glade.h:105
msgid "Shared File System"
msgstr "Дељени систем датотека"

#: src/configure/cluster-config.glade.h:106
msgid "Shared Raw Device"
msgstr "Дељени сирови уређај"

#: src/configure/cluster-config.glade.h:107
msgid "Shared State"
msgstr "Стање дељења"

#: src/configure/cluster-config.glade.h:108
msgid "Slower"
msgstr "Спорије"

#: src/configure/cluster-config.glade.h:109
msgid ""
"The cluster will *NOT* function properly\n"
"without at least one member.\n"
"\n"
"You are about to Quit without defining\n"
"any cluster members."
msgstr ""
"Чвориште *НЕЋЕ* исправно радити\n"
"без барем једног члана.\n"
"\n"
"Спремате се за излаз а нисте навели\n"
"ниједног члана чворишта."

#: src/configure/cluster-config.glade.h:114
msgid "Type"
msgstr "Тип"

#: src/configure/cluster-config.glade.h:116
msgid "User Script"
msgstr "Корисничка скрипта"

#: src/configure/cluster-config.glade.h:117
msgid "_Add Child"
msgstr "_Додај садржани процес"

#: src/configure/cluster-config.glade.h:118
msgid "_Add Members"
msgstr "_Додај чланове"

#: src/configure/cluster-config.glade.h:119
msgid "_Bulk Load NFS"
msgstr "_Оптерети NFS"

#: src/configure/cluster-config.glade.h:122
msgid "_Daemon Properties"
msgstr "Особине _позадинског процеса"

#: src/configure/cluster-config.glade.h:123
msgid "_Delete"
msgstr "_Обриши"

#: src/configure/cluster-config.glade.h:124
msgid "_Delete Member"
msgstr "_Обриши члана"

#: src/configure/cluster-config.glade.h:125
msgid "_New"
msgstr "_Ново"

#: src/configure/cluster-config.glade.h:126
msgid "_Properties"
msgstr "_Особине"

#: src/configure/cluster-config.glade.h:127
msgid "_Shared State"
msgstr "Стање _дељења"

#: src/configure/cluster-config.glade.h:128
msgid "clulockd"
msgstr "clulockd"

#: src/configure/cluster-config.glade.h:129
msgid "clumembd"
msgstr "clumembd"

#: src/configure/cluster-config.glade.h:130
msgid "cluquorumd"
msgstr "cluquorumd"

#: src/configure/cluster-config.glade.h:131
msgid "clurmtabd"
msgstr "clurmtabd"

#: src/configure/cluster-config.glade.h:132
msgid "clusvcmgrd"
msgstr "clusvcmgrd"

#: src/configure/cluster-config.glade.h:133
msgid ""
"redhat-config-cluster:\n"
"\n"
"Do you want to save your changes?\n"
msgstr ""
"redhat-config-cluster:\n"
"\n"
"Желите ли да сачувате измене?\n"

#: src/configure/cluster-config.glade.h:137
msgid ""
"redhat-config-cluster:\n"
"\n"
"These NFS exports were not loaded\n"
"because of errors:"
msgstr ""
"redhat-config-cluster:\n"
"\n"
"Ови NFS извози нису покренути\n"
"услед грешке:"

#. !/usr/bin/python
#. ## 9/8/2003 1. changed loglevel default from 4(Warning)
#. ##             to 5(Notice)
#. ## First, if test_ip is a DNS name, convert it to dotted quad ###
#. ## Second, run through all the members and see if the member
#. ## name matches the test_ip.
#: src/configure/clusterpkg/cluquorumd_module.py:59
#, python-format
msgid "Tiebreaker IP Address already exists in cluster as member '%s'"
msgstr "IP адреса арбитра (tiebreaker) већ постоји у чворишту као члан ’%s‘"

#. ## Next, run through all the service ip addresses and see
#. ## if any of those match the test_ip.
#: src/configure/clusterpkg/cluquorumd_module.py:76
#, python-format
msgid ""
"Tiebreaker IP Address already exists in cluster as service ip address '%s'"
msgstr ""
"IP адреса арбитра (tiebreaker) већ постоји у чворишту као ip сервис услуге ’%"
"s‘"

#. ## Next, make sure test_ip is NOT localhost ###
#. ## Split dotted quad on the period.         ###
#: src/configure/clusterpkg/cluquorumd_module.py:82
msgid "Tiebreaker IP Address cannot start with '127' (localhost)"
msgstr ""
"IP адреса арбитра (tiebreaker) не може почети са ’127‘ (локални домаћин)"

#. ## test_ip didn't match any member names nor any service ips ###
#. ###################################################################
#. NOTE: In 'validate', WARNING errors must come *Last*, after all
#. FATAL errors.  This is because the command line tool will
#. override WARNING's in favor of doing the add or update,
#. whereas the GUI will present the WARNING in a popup dialog.
#. Since WARNINGs and ERROR's are 'raise'd, editing stops at
#. that point.  So for the command line, we want to be sure
#. that all FATAL checks have already been done, so that if a
#. WARNING is raised, it can be safely overridden sinced we
#. know that only WARNING checks remain.
#. ###################################################################
#. print "----> cluquroumd validate NOW!<-----"
#. print "      self.action = %s" % self.action
#. print "      options     = %s" % options
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#. print "cluquorumd tiebreaker_ip = [%s]" % tiebreaker_ip
#: src/configure/clusterpkg/cluquorumd_module.py:119
msgid "Tiebreaker IP Address not found on network"
msgstr "IP адреса арбитра (tiebreaker) није нађена на мрежи"

#. ## Tiebreaker IP Address *NOT* submitted ###
#. ## set warning flag, and raise WARNING below ###
#: src/configure/clusterpkg/cluquorumd_module.py:140
msgid "Tiebreaker IP Address is required for 4-node clusters"
msgstr "IP адреса арбитра (tiebreaker) је неопходна за чворишта од 4 чвора"

#. ###################################
#. ## 3. Create the DOM child node ###
#. ###################################
#. #########################################################
#. ## 4. Create new ClusterEntity from that DOM child node,
#. ##    and set the "id" to the open slot that was found.
#. #########################################################
#. # This program is free software; you can redistribute it and/or modify
#. # it under the terms of the GNU General Public License as published by
#. # the Free Software Foundation; either version 2 of the License, or
#. # (at your option) any later version.
#. # This program is distributed in the hope that it will be useful,
#. # but WITHOUT ANY WARRANTY; without even the implied warranty of
#. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#. # GNU General Public License for more details.
#. # You should have received a copy of the GNU General Public License
#. # along with this program; if not, write to the Free Software
#. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#. Import all subpackages of our netconfpkg directory. This code is a real
#. dirty hack but does the job(tm). It basically finds all .py files in the
#. package directory and imports from all found files (except __init__.py that
#. is) ;). Nice for plugin mechanism.
#. !/usr/bin/python
#. from clusterpkg.clupowerd_module  import clupowerd
#. for copyfile
#. for rename
#. import clusterpkg.clupowerd_module
#. CLUPOWERD_INFO   = clusterpkg.clupowerd_module.MY_INFO
#. #########################################################################
#. cluconfig: This class inherits from ClusterList so when 'cluconfig'
#. or 'redhat-config-cluster' runs for the 1st time
#. (/etc/cluster.xml doesn't exist), class 'cluconfig'
#. can call ClusterList's 'append_child' method to create
#. nodes clumembd, clupowerd, cluquorumd, clurmtabd,
#. clusvcmgrd, clulockd, cluster, which make up the minimum
#. skeleton of /etc/cluster.xml.
#. #########################################################################
#.
#. ## Called when 2 cluconfig objects are compared ###
#. print "cluconfig __cmp__: self  =", self
#. print "cluconfig __cmp__: other =", other
#. print "cluconfig __cmp__: rc =", integer_rc
#. in destructor __del__, don't release since
#. didn't get lock.
#. ## If parse passes(cluster.xml exists), then call
#. ## ClusterList constructor.  In this situation, we
#. ## won't really be using cluconfig as a ClusterList
#. ## object - it will be used below when the cluster.xml
#. ## file doesn't exist, since ClusterList objects can
#. ## call "add_child".
#. ## /etc/cluster.xml file does *NOT* exist - create one ###
#. ## now create the 'root' element - named 'cluconfig' ###
#. self.add_clupowerd()
#. ## Now that /etc/cluster.xml has been created, generate
#. ## an authentication key - tag 'cluster' option 'key'.
#. ## this is the destructor ###
#. print "cluconfig __del__ TOP!"
#. print "  release lock now!"
#. ## First, create a new 'sharedstate' entity
#. ## Now, remove the "id" attribute that "add_child" created.
#. ## We don't want this since there's only 1 sharedstate node - "id"s
#. ## exist on nodes that can have siblings.
#. ## First, create a new 'clumembd' entity
#. ## Now, remove the "id" attribute that "add_child" created.
#. ## We don't want this since there's only 1 clumembd node - "id"s
#. ## exist on nodes that can have siblings.
#. def add_clupowerd(self, cmdline_args=None):
#. entity = ClusterList.add_child(self, CLUPOWERD_INFO)
#. clupowerd_entity = clupowerd(entity.node)
#. clupowerd_entity.add_options(cmdline_args)
#. clupowerd_entity.node.removeAttribute("id")
#. return clupowerd_entity
#. ########################################################################
#. def getclupowerd  (self):
#. return clupowerd(self.dom.getElementsByTagName("clupowerd")[0])
#. ## 1. Create .tmp file with updated info.
#. ## 2. Now that .tmp has been created successfully, backup
#. ##    the current config file before we overwrite it.
#. ## 3. Move the temp file containing the updated info into place.
#. make sure link is not removed
#. ## 4. If cluster is running, then 'Reload' so cluster re-reads
#. ##    its updated config file.
#. ## Cluster *IS* running ###
#. print "   cluster is *NOT* running"
#. raises exception if not link
#. path is not a link
#. print "cluconfig"
#. self.getclupowerd().out()
#. !/usr/bin/python
#. from xml.dom import minidom
#. ## 9/8/2003 1. changed loglevel default from 4(Warning)
#. ##             to 5(Notice)
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#: src/configure/clusterpkg/cluquorumd_module.py:156
#: src/configure/clusterpkg/clupowerd_module.py:52
#: src/configure/clusterpkg/clurmtabd_module.py:62
#: src/configure/clusterpkg/clusvcmgrd_module.py:52
#: src/configure/clusterpkg/clulockd_module.py:51
#: src/configure/clusterpkg/clumembd_module.py:163
msgid ""
"Log Level must be a number from 0 to 7:\n"
"  0 - EMERG\n"
"  1 - ALERT\n"
"  2 - CRIT\n"
"  3 - ERR\n"
"  4 - WARNING (DEFAULT)\n"
"  5 - NOTICE\n"
"  6 - INFO\n"
"  7 - DEBUG"
msgstr ""
"Ниво уписа у дневник мора бити број од 0 до 7:\n"
"  0 - ХИТНО\n"
"  1 - ПАЖЊА\n"
"  2 - КРИТ\n"
"  3 - ГРЕШ\n"
"  4 - УПОЗОРЕЊЕ (ПОДРАЗУМЕВАНО)\n"
"  5 - НАПОМЕНА\n"
"  6 - ОБАВ\n"
"  7 - ПОПРАВИ"

#: src/configure/clusterpkg/cluquorumd_module.py:182
msgid "Ping Interval must be a number from 1 to 10"
msgstr "Интервал за пинг мора бити број од 1 до 10"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#: src/configure/clusterpkg/cluquorumd_module.py:191
msgid "Tiebreaker IP Address is recommended for 2-node clusters"
msgstr "IP адреса арбитра (tiebreaker) се препоручује за чворишта од 2 чвора"

#. !/usr/bin/python
#. ## for deepcopy
#. Default is "modify" - when parent does
#. add_child, add_child will change this
#. setting for the child to "add" after the
#. entity is created.
#. ## node will only be "None" if instantiating an object just
#. ## to get at the objects MY_INFO - this is for convenience,
#. ## and is probably only done in the abc_module.py's where the
#. ## abc_module needs to get its children's MY_INFO.
#. ## Only give attributes "default" values if there are *NO* attributes
#. ## yet.  That is, give this node default values if this node is *new*.
#. ####################################################################
#. options is a dictionary with 2 levels:
#. 1st level: option name(like "loglevel")
#. 2nd level: a dictionary containing
#. 'datatype' with value either "str"(string) or "int"(integer)
#. 'order'    with a number representing the sequential order
#. that options should be printed out.
#. ####################################################################
#: src/configure/clusterpkg/ClusterEntity.py:58
msgid "Illegal extra options were submitted."
msgstr "Пренете су неисправне додатне опције."

#. ## From attributes in myoptions, construct a dict with those same
#. ## attributes, but with a "--" prepended, so that each one is a
#. ## valid getopt argument.
#. ## Dictionary "options_submitted" now contains all the submitted options.
#. ## setOptions only called by "modify"(bottom of this class), and
#. ## "modify" is only called by redhat-config-cluster-cmd command line tool.
#. ## 'validate' will raise an exception if errors found ###
#. ## error must be FATAL ###
#: src/configure/clusterpkg/ClusterEntity.py:104
#, python-format
msgid "Option \"%s\" value must be \"yes\" or \"no\""
msgstr "Вредност опције „%s“ мора бити „да“ или „не“"

#. ## will cause exception if val is a string ###
#: src/configure/clusterpkg/ClusterEntity.py:112
#, python-format
msgid "Bad value \"%s\" for option \"%s\""
msgstr "Лоша вредност „%s“ за опцију „%s“"

#. str - int to str
#. value == "" when getAttribute didn't find the option
#: src/configure/clusterpkg/ClusterEntity.py:116
#: src/configure/clusterpkg/ClusterEntity.py:131
#, python-format
msgid "%s bad option"
msgstr "лоша опција %s"

#. ## if element has attributes, print those attributes out in order ###
#. ## If option is not in xml(dom), then continue to next option.
#. ## "id"s should not be exposed to users, so don't print id's.
#. ## args will be 'None' coming from GUI add
#. ## only call setOptions if there are options to set ###
#. !/usr/bin/python
#. ## child_being_validated was passed in - user wants to
#. ## find a child whose options match all the search_options
#. ## passed in, and where the child found is
#. ## *NOT* child_being_validated.
#. ## Match not found - raise error ###
#: src/configure/clusterpkg/ClusterList.py:50
#, python-format
msgid "%s with %s does not exist"
msgstr "%s са %s не постоји"

#. def delete_child(self, child_info, args, val, key="name"):
#. ## args will come in as "None" from Gui, but will be a dictionary
#. ## if from cluconfig command line.
#. ########################################################################
#. ## add: 1. calls do_getopt (process command line options)
#. ##      2. calls add_child_entity to create a new child ClusterEntity
#. ##      3. for that new child ClusterEntity, call setOptions
#. ##           to set its options.
#. ########################################################################
#. ###################################################
#. ## 1. Build list of "id"s for existing children ###
#. ###################################################
#. #######################################################
#. ## 2. Find the 1st open "id" slot for the new child ###
#. #######################################################
#: src/configure/clusterpkg/ClusterList.py:106
#, python-format
msgid "ERROR: %ss add_child_entity - couldn't find slot for new id."
msgstr "ГРЕШКА: %ss add_child_entity није могао да пронађе место за нови иб."

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. None
#. # This program is free software; you can redistribute it and/or modify
#. # it under the terms of the GNU General Public License as published by
#. # the Free Software Foundation; either version 2 of the License, or
#. # (at your option) any later version.
#. # This program is distributed in the hope that it will be useful,
#. # but WITHOUT ANY WARRANTY; without even the implied warranty of
#. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#. # GNU General Public License for more details.
#. # You should have received a copy of the GNU General Public License
#. # along with this program; if not, write to the Free Software
#. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#. ## Figure out how many members have been defined ###
#. errno, errstr = e
#. host is *NOT* in DNS
#. host *IS* in DNS
#. cmd = 'ping -c 1 -w 1 %s 2>/dev/null' % ip
#. rc = os.system(cmd)
#. if rc == 0:
#. return TRUE # ping successful
#. else:
#. return FALSE
#. ping successful
#. ## Cluster is *NOT* running ###
#. ## Cluster *IS* running ###
#. stateTable: 0=Uninitialized
#. 1=Running
#. 2=Stopped
#. 3=Disabled
#. 4=Pending
#. 5=Failed
#. 6=Unknown
#. ## id doesn't exist yet - may have been added by gui and
#. ## config not saved yet.
#: src/configure/clusterpkg/cluster_functions.py:154
msgid ""
"Raw devices have NOT been created yet.\n"
"\n"
"Follow the instructions in the manual\n"
"for 'Creating Raw Devices', and then\n"
"try again."
msgstr ""
"Сирови уређаји још НИСУ направљени.\n"
"\n"
"Следите упутство из приручника\n"
"за ’Прављење уређаја‘ и потом\n"
"покушајте поново."

#: src/configure/clusterpkg/cluster_functions.py:161
#, python-format
msgid ""
"Shared Storage could *NOT* be initialized!\n"
"\n"
"%s"
msgstr ""
"Дељена остава *НИЈЕ* могла бити покренута!\n"
"\n"
"%s"

#: src/configure/clusterpkg/cluster_functions.py:167
#, python-format
msgid ""
"Error: Shared Storage could *NOT* be initialized!\n"
"\n"
"%s"
msgstr ""
"Грешка: дељена остава *НИЈЕ* могла бити покренута!\n"
"\n"
"%s"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. None
#. !/usr/bin/python
#. ## 6/17/2003: Lon asked to have 'servertech' taken out of
#. ##            supported network powerswitch types.
#. ##################################################################
#. 4/15/2003 HM - "port" is valid for both 'Serial' and 'Network'
#. powercontrollers.  It is required for 'Serial'
#. ##################################################################
#. ## "device" is valid for "serial" type's
#. ## "ipaddress" and "port" are valid for "network" type's
#. ###########################################################################
#. ###################################################################
#. NOTE: in __validate_serial and __validate_network,
#.
#. WARNING errors must come *Last*, after all FATAL errors.
#.
#. This is because the command line tool will override WARNING's
#. in favor of doing the add or update, whereas the GUI will
#. present the WARNING in a popup dialog.  Since WARNINGs and
#. ERROR's are 'raise'd, editing stops at that point.  So for
#. the command line, we want to be sure that all FATAL checks
#. have already been done, so that if a WARNING is raised, it
#. can be safely overridden sinced we know that only WARNING
#. checks remain.
#. ###################################################################
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## if any 'Network' options were submitted, then error ###
#. ## From GUI, network and serial options will all be submitted, but
#. ## network options should have null("") value.
#: src/configure/clusterpkg/member_powercontroller_module.py:128
msgid "IP Address is an invalid option for a Serial powercontroller"
msgstr "IP адреса нија исправна опција за серијски контролер напајања"

#. ## Check for *required* fields on "add" ###
#: src/configure/clusterpkg/member_powercontroller_module.py:136
#: src/configure/clusterpkg/member_powercontroller_module.py:162
msgid "Device is required for a Serial powercontroller"
msgstr "Неопходан је уређај за серијски контролер напајања"

#. ## "device" *WAS* submitted - when "device" submitted, "port"
#. ## is required.
#: src/configure/clusterpkg/member_powercontroller_module.py:145
#: src/configure/clusterpkg/member_powercontroller_module.py:173
msgid "Port is required for a Serial powercontroller"
msgstr "Неопходан је порт за серијски контролер напајања"

#. ## Validate 'Serial' options submitted ###
#. ## Validate Device ###
#: src/configure/clusterpkg/member_powercontroller_module.py:185
#, python-format
msgid "Serial Device file \"%s\" does not exist"
msgstr "Датотека серијског уређаја „%s“ не постоји"

#: src/configure/clusterpkg/member_powercontroller_module.py:189
msgid "Serial Device file must be a character special device file"
msgstr "Датотека серијског уређаја мора бити ознака посебног уређаја"

#: src/configure/clusterpkg/member_powercontroller_module.py:193
msgid "Serial Device must begin with /dev/ttyS"
msgstr "Серијски уређај мора почети са /dev/ttyS"

#. ## Validate Port ###
#. ## Check for Serial 'device' duplicates within the parent member ###
#. ## get_serial_powercontroller will raise exception if not found
#: src/configure/clusterpkg/member_powercontroller_module.py:220
msgid "Serial powercontroller Device already exists in member"
msgstr "Уређај са серијским контролером напајања већ постоји у члану"

#. ## Can only allow 'Serial' powercontroller if there are 2 members
#. ## in the cluster - if >2 members, then 'Serial' invalid - must
#. ## use 'Network' powercontroller.
#: src/configure/clusterpkg/member_powercontroller_module.py:233
msgid ""
"Serial powercontroller may not be used when cluster contains more than 2 "
"members"
msgstr ""
"Серијски контролер напајања не може бити коришћен када чвориште садржи више "
"од 2 члана"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. No WARNINGS for ___validate_serial
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## if any 'Serial' options were submitted, then error ###
#. ## From GUI, network and serial options will all be submitted, but
#. ## serial options should have null("") value.
#: src/configure/clusterpkg/member_powercontroller_module.py:256
msgid "Device is an invalid option for a Network powercontroller"
msgstr "Уређај није исправна опција за мрежни контролер напајања"

#. ## Check for *required* fields on "add" ###
#: src/configure/clusterpkg/member_powercontroller_module.py:264
#: src/configure/clusterpkg/member_powercontroller_module.py:295
msgid "IP Address is required for a Network powercontroller"
msgstr "Неопходна је IP адреса за мрежни контролер напајања"

#: src/configure/clusterpkg/member_powercontroller_module.py:269
#: src/configure/clusterpkg/member_powercontroller_module.py:300
msgid "Port is required for a Network powercontroller"
msgstr "Неопходан је порт за мрежни контролер напајања"

#. ## Check for Network 'ipaddress/port' duplicates within the
#. ## parent member.
#. ## get_network_powercontroller will raise exception if not found
#: src/configure/clusterpkg/member_powercontroller_module.py:322
msgid "Network powercontroller IP Address/Port already exists in member"
msgstr "IP адреса/порт за мрежни контролер напајања већ постоји у члану"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. ## Validate 'Network' options submitted ###
#: src/configure/clusterpkg/member_powercontroller_module.py:334
msgid "Powercontroller IP Address not found on network"
msgstr "IP адреса мрежног контролера напајања није нађена на мрежи"

#. ##########################################################
#. validate: will be called by outside apps.  validate is
#. reponsible for validating all powercontroller
#. options.
#. ##########################################################
#. ## Make sure option 'type' is submitted
#: src/configure/clusterpkg/member_powercontroller_module.py:348
msgid "Type is required when adding a powercontroller"
msgstr "Неопходан је тип при додавању мрежног контролера"

#. ## Must be "modify"
#: src/configure/clusterpkg/member_powercontroller_module.py:363
#: src/configure/clusterpkg/member_powercontroller_module.py:386
msgid "Invalid Powercontroller Type"
msgstr "Неисправан тип контролера напајања"

#. # This program is free software; you can redistribute it and/or modify
#. # it under the terms of the GNU General Public License as published by
#. # the Free Software Foundation; either version 2 of the License, or
#. # (at your option) any later version.
#. # This program is distributed in the hope that it will be useful,
#. # but WITHOUT ANY WARRANTY; without even the implied warranty of
#. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#. # GNU General Public License for more details.
#. # You should have received a copy of the GNU General Public License
#. # along with this program; if not, write to the Free Software
#. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#. first some defines
#. !/usr/bin/python
#. "alias_ip"          : { "datatype" : "str",
#. "order"    : 1 },
#. "alias_ip=",
#. ## end MY_INFO
#. ###################################################################
#. NOTE: In 'validate', WARNING errors must come *Last*, after all
#. FATAL errors.  This is because the command line tool will
#. override WARNING's in favor of doing the add or update,
#. whereas the GUI will present the WARNING in a popup dialog.
#. Since WARNINGs and ERROR's are 'raise'd, editing stops at
#. that point.  So for the command line, we want to be sure
#. that all FATAL checks have already been done, so that if a
#. WARNING is raised, it can be safely overridden sinced we
#. know that only WARNING checks remain.
#. ###################################################################
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## Check for *required* fields on "add" ###
#: src/configure/clusterpkg/cluster_module.py:59
msgid "Cluster Name is required"
msgstr "Неопходно је име чворишта"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. None
#. !/usr/bin/python
#. ###################################################################
#. NOTE: In 'validate', WARNING errors must come *Last*, after all
#. FATAL errors.  This is because the command line tool will
#. override WARNING's in favor of doing the add or update,
#. whereas the GUI will present the WARNING in a popup dialog.
#. Since WARNINGs and ERROR's are 'raise'd, editing stops at
#. that point.  So for the command line, we want to be sure
#. that all FATAL checks have already been done, so that if a
#. WARNING is raised, it can be safely overridden sinced we
#. know that only WARNING checks remain.
#. ###################################################################
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## Check for *required* fields on "add" ###
#. ## Validate "name"
#. ## This is a "modify".
#: src/configure/clusterpkg/device_mount_module.py:106
msgid "Device Mountpoint is required"
msgstr "Неопходна је тачка за монтирање уређаја"

#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#. msg = _("Mount Point does not exist")
#. raise OptionError("FATAL", msg, "mountpoint", mountpoint)
#. if not stat.S_ISDIR(mode):
#. msg = _("Mount Point must be a directory")
#. raise OptionError("FATAL", msg, "mountpoint", mountpoint)
#: src/configure/clusterpkg/device_mount_module.py:131
msgid "Device Mountpoint already exists"
msgstr "Тачка за монтирање већ постоји"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#: src/configure/clusterpkg/device_mount_module.py:140
#: src/configure/nfsExportDruid.py:447 src/configure/smbShareDruid.py:367
#, python-format
msgid ""
"Device Mountpoint '%s' does not exist, but will be created when the service "
"is started."
msgstr ""
"Тачка за монтирање ’%s‘ не постоји, али ће бити направљена када се сервис "
"покрене."

#. !/usr/bin/python
#. ## end MY_INFO
#. ###################################################################
#. NOTE: In 'validate', WARNING errors must come *Last*, after all
#. FATAL errors.  This is because the command line tool will
#. override WARNING's in favor of doing the add or update,
#. whereas the GUI will present the WARNING in a popup dialog.
#. Since WARNINGs and ERROR's are 'raise'd, editing stops at
#. that point.  So for the command line, we want to be sure
#. that all FATAL checks have already been done, so that if a
#. WARNING is raised, it can be safely overridden sinced we
#. know that only WARNING checks remain.
#. ###################################################################
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## Check for *required* fields on "add" ###
#. ## 1st, for any options that were not submitted, see if a
#. ## "default" was defined above.  If there was, make the
#. ## option value equal to the default.
#. ## This option was not submitted - assign the default if
#. ## there is one.
#: src/configure/clusterpkg/member_module.py:99
msgid "Member Name is required"
msgstr "Неопходно је име члана"

#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#. ## Validate submitted options ###
#: src/configure/clusterpkg/member_module.py:114
#, python-format
msgid "Member '%s' not found in DNS"
msgstr "Члан ’%s‘ није пронађен у DNS-у"

#. ## 'name' is key - check for another member with same name
#: src/configure/clusterpkg/member_module.py:121
#, python-format
msgid "Member '%s' already exists in cluster"
msgstr "Члан ’%s‘ већ постоји у чворишту"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#: src/configure/clusterpkg/member_module.py:133
msgid "Member is not on same network as this host"
msgstr "Члан није на истој мрежи као овај домаћин"

#. ## END WARNINGS ###
#. ## args will come in as "None" from Gui, but will be a dictionary
#. ## if from cluconfig command line.
#. ## Must be deleting a 'Serial' Powercontroller since that has only
#. ## one key field(device).
#. ## Must be deleting a 'Network' Powercontroller since that has
#. ## two key fields (ipaddress,port).
#. ## First, get a list of failoverdomainnodes that refer to the
#. ## *old* member name.  To do that, we need to
#. ##   1. get ownerDocument, and user that to
#. ##   2. get failoverdomains node, then
#. ##   3. get the list of failoverdomains
#. ##   4. for each failoverdomain, scan through the list
#. ##        of failoverdomainnodes - if a failoverdomainnode
#. ##        refers to the "old" member "name", then change
#. ##        that to refer to the new member name.
#. node(failoverdomainnode) match *NOT* found in
#. this domain - continue to next domain
#. ## To get here, match *WAS* found - change node's name from
#. ## old_name to new_name.
#. ######################################################
#. Override the ClusterEntity 'set' function so that
#. if a member 'name' is being changed, we can ensure
#. that all failover domain nodes referring to the
#. "old" member name get changed to refer to the
#. "new" member name.
#. ######################################################
#. !/usr/bin/python
#. ## end self.MY_INFO
#. ###################################################################
#. NOTE: In 'validate', WARNING errors must come *Last*, after all
#. FATAL errors.  This is because the command line tool will
#. override WARNING's in favor of doing the add or update,
#. whereas the GUI will present the WARNING in a popup dialog.
#. Since WARNINGs and ERROR's are 'raise'd, editing stops at
#. that point.  So for the command line, we want to be sure
#. that all FATAL checks have already been done, so that if a
#. WARNING is raised, it can be safely overridden sinced we
#. know that only WARNING checks remain.
#. ###################################################################
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## Check for *required* fields on "add" ###
#. ## Validate "name"
#: src/configure/clusterpkg/nfsexport_client_module.py:87
msgid "NFS Export Client Name is required"
msgstr "Неопходно је име клијента за NFS извоз"

#. ## Must be 'modify' ###
#: src/configure/clusterpkg/nfsexport_client_module.py:99
#: src/configure/clusterpkg/service_device_module.py:159
#: src/configure/clusterpkg/nfsexport_module.py:136
#: src/configure/clusterpkg/service_module.py:112
#: src/configure/nfsExportDruid.py:311 src/configure/smbShareDruid.py:238
msgid "Service must be disabled before updates can be made"
msgstr "Сервис мора бити искључен пре освежавања"

#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#. ## Validate submitted options ###
#. ## Validate "name"
#: src/configure/clusterpkg/nfsexport_client_module.py:114
msgid "NFS Export Client Name already exists"
msgstr "Име клијента NFS извоза већ постоји"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. No warnings
#. !/usr/bin/python
#. ##################################################################
#. get_list: The list returned by ClusterList.get_list contains
#. ClusterEntity's - It's not sufficient for each to be a
#. ClusterEntity since ClusterEntity's don't have access to the
#. "member" functions.  Each member in the list returned by
#. this "get_list" must be a *member* entity in order to have
#. access to the "member" functions.
#. ##################################################################
#. ## "member_being_validated" is either the member being modified, or
#. ## the new member just added.  We want to be sure his key info doesn't
#. ## duplicate an existing member.
#. ## Search all the nodes in all the failover domains for a name that
#. ## matches the name of the member passed in.
#: src/configure/clusterpkg/members_module.py:73
#: src/configure/clusterpkg/members_module.py:84
#, python-format
msgid ""
"Member delete not allowed - Member Name '%s' is specified by at least one "
"failover domain"
msgstr ""
"Брисање члана није дозвољено - Име члана ’%s‘ је навео барем један домен за "
"опоравак"

#: src/configure/clusterpkg/service_device_module.py:171
msgid "Device Name is required"
msgstr "Неопходно је име уређаја"

#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#. ## Validate submitted options ###
#. ## Validate "name"
#: src/configure/clusterpkg/service_device_module.py:187
#: src/configure/nfsExportDruid.py:427 src/configure/smbShareDruid.py:353
#, python-format
msgid "Device Special File \"%s\" does not exist"
msgstr "Специјална датотека уређаја „%s“ не постоји"

#: src/configure/clusterpkg/service_device_module.py:191
#: src/configure/nfsExportDruid.py:430 src/configure/smbShareDruid.py:356
msgid "Device Special File must be a block special device file"
msgstr ""
"Датотека специјалног уређаја мора бити специјална датотека блок уређаја"

#: src/configure/clusterpkg/service_device_module.py:196
msgid "Device Name already exists in cluster"
msgstr "Име уређаја већ постоји у чворишту"

#. ## Validate "sharename" ###
#: src/configure/clusterpkg/service_device_module.py:205
msgid ""
"The Service already contains a device with a Samba Share Name specified - "
"more than one Samba Share Name within a service is not allowed"
msgstr ""
"Сервис већ садржи уређај са наведеним Самба дељењем - није дозвољено више од "
"једног имена за дељење Самбом у оквиру сервиса"

#: src/configure/clusterpkg/service_device_module.py:211
msgid "Samba Share Name may not contain spaces"
msgstr "Име дељења Самбом не може да садржи размаке"

#. return to druid
#. ## Verify that sharename isn't a dup of existing ###
#: src/configure/clusterpkg/service_device_module.py:217
#: src/configure/smbShareDruid.py:416
msgid "Samba Share Name already exists in cluster"
msgstr "Име дељења Самбом већ постоји у чворишту"

#: src/configure/clusterpkg/service_device_module.py:223
msgid ""
"A Service IP Address must be entered before specifying a Samba Share Name, "
"since the samba share configuration file to be created requires it"
msgstr ""
"IP адреса услуге мора бити унета пре навођења имена дељења Самбом, пошто је "
"захтева датотека са подешавањима Самбе која треба да се направи"

#. ## Samba Share Name *has* been specified - verify that
#. ## a 'mountpoint' was either specified, or exists in the
#. ## device 'mount'(__no_mountpoint).
#. ## no mountpoint specified - check existing 'mount' tag ###
#: src/configure/clusterpkg/service_device_module.py:234
msgid ""
"A Device Mountpoint must be entered before specifying a Samba Share Name, "
"since the samba share configuration file to be created requires it"
msgstr ""
"Тачка за монтирање уређаја мора бити унета пре навођења имена дељења Самбом, "
"пошто је захтева датотека са подешавањима Самбе која треба да се направи"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. No warnings
#. ## "nfsexport_being_validated" is either the nfsexport being modified, or
#. ## the new nfsexport just added.  We want to be sure his key info doesn't
#. ## duplicate an existing nfsexport.
#. ####################################################################
#. ####################################################################
#. !/usr/bin/python
#. ## No need to validate that there are no dups for this nfsexport
#. ## within the whole cluster (all services and devices), since
#. ## the nfsexport directory must be underneath the device mountpoint,
#. ## and since the device mountpoint must be unique within the whole
#. ## cluster, then there is no way that there can be duplicate
#. ## nfsexport directories in 2 different services or 2 different
#. ## devices.  The only dup an nfsexport could have is within the
#. ## same device, so keep the __dup_found check above.
#. def __dup_found_in_cluster(self, option, value):
#. this_nfsexport_id = self.get("id")
#. this_device_id    = self.parent.get("id")
#. this_service_id   = self.parent.parent.get("id")
#.
#. ownerDocument = self.node.ownerDocument
#. services_node = ownerDocument.getElementsByTagName("services")[0]
#. from clusterpkg.services_module import services
#. services_entity = services(services_node)
#. for service in services_entity.get_list():
#. service_id = service.get("id")
#. devices = service.get_devices()
#. for device in devices:
#. device_id = device.get("id")
#. nfsexports = device.get_nfsexports()
#. for nfsexport in nfsexports:
#. nfsexport_id = nfsexport.get("id")
#. if nfsexport.get(option) == value #. and #. (nfsexport_id != this_nfsexport_id or #. device_id    != this_device_id or #. service_id   != this_service_id):
#. return TRUE
#. return FALSE
#. mountpoint not defined - return error
#. ###################################################################
#. NOTE: In 'validate', WARNING errors must come *Last*, after all
#. FATAL errors.  This is because the command line tool will
#. override WARNING's in favor of doing the add or update,
#. whereas the GUI will present the WARNING in a popup dialog.
#. Since WARNINGs and ERROR's are 'raise'd, editing stops at
#. that point.  So for the command line, we want to be sure
#. that all FATAL checks have already been done, so that if a
#. WARNING is raised, it can be safely overridden sinced we
#. know that only WARNING checks remain.
#. ###################################################################
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## Check for *required* fields on "add" ###
#. ## Validate "name"
#: src/configure/clusterpkg/nfsexport_module.py:125
msgid "NFS Export Directory Name is required"
msgstr "Неопходно је име директоријума за NFS извоз"

#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#. ## Validate submitted options ###
#. ## Validate "name"
#: src/configure/clusterpkg/nfsexport_module.py:151
msgid "NFS Export Directory Name must start with a slash '/'"
msgstr "Име директоријума за NFS извоз мора почети косом цртом ’/‘"

#. msg = _("NFS Export Directory Name \"%s\" does not exist") % name
#. raise OptionError("FATAL", msg, "name", name)
#: src/configure/clusterpkg/nfsexport_module.py:162
msgid "NFS Export Directory Name must be a directory"
msgstr "Име директоријума за NFS извоз мора бити директоријум"

#: src/configure/clusterpkg/nfsexport_module.py:166
msgid "NFS Export Directory Name already exists in device"
msgstr "Име директоријума за NFS извоз већ постоји у уређају"

#: src/configure/clusterpkg/nfsexport_module.py:169
msgid "NFS Export Directory Name must be underneath the device mount point"
msgstr ""
"Име директоријума за NFS извоз мора бити испод тачке за монтирање уређаја"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. No warnings
#. ## "client_being_validated" is either the client being modified, or
#. ## the new client just added.  We want to be sure its key info doesn't
#. ## duplicate an existing client.
#. !/usr/bin/python
#. ###################################################################
#. NOTE: In 'validate', WARNING errors must come *Last*, after all
#. FATAL errors.  This is because the command line tool will
#. override WARNING's in favor of doing the add or update,
#. whereas the GUI will present the WARNING in a popup dialog.
#. Since WARNINGs and ERROR's are 'raise'd, editing stops at
#. that point.  So for the command line, we want to be sure
#. that all FATAL checks have already been done, so that if a
#. WARNING is raised, it can be safely overridden sinced we
#. know that only WARNING checks remain.
#. ###################################################################
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## Check for *required* fields on "add" ###
#: src/configure/clusterpkg/service_module.py:103
msgid "Service Name is required"
msgstr "Неопходно је име сервиса"

#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#. ## Validate submitted options ###
#. ## Validate "name"
#. ## 'name' is key - check for another service with same name
#: src/configure/clusterpkg/service_module.py:128
msgid "Service Name already exists"
msgstr "Име сервиса већ постоји"

#. ## Verify that Failover Domain Name specified for this service
#. ## exists as a current Failover Domain name in the cluster.
#: src/configure/clusterpkg/service_module.py:145
#, python-format
msgid "Failover Domain Name '%s' not found in cluster"
msgstr "Име домена за опоравак ’%s‘ није нађено у чворишту"

#. ## Validate "userscript"
#: src/configure/clusterpkg/service_module.py:155
msgid "User Script does not exist"
msgstr "Корисничка скрипта не постоји"

#: src/configure/clusterpkg/service_module.py:158
msgid "User Script must be a regular file"
msgstr "Корисничка скрипта мора бити обична датотека"

#: src/configure/clusterpkg/service_module.py:163
msgid "User Script is not executable"
msgstr "Корисничка скрипта није извршна"

#: src/configure/clusterpkg/service_module.py:169
msgid "Must define cluster members before a service can be added"
msgstr "Мора навести чланове чворишта пре додавања сервиса"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. No warnings
#. def device_found(self, device_being_validated, val, key="name"):
#. ## "device_being_validated" is either the device being modified, or
#. ## the new device just added.  We want to be sure his key info doesn't
#. ## duplicate an existing device.
#. ## 1st, create "device" ###
#. ## Next, create "mount"(only 1 per device) DOM node ###
#. # # # # # # # # # # # # # # # # # # # # # # # # # #
#. return an empty list
#. ## if 'service_ipaddresses' tag doesn't yet exist, create it ###
#. ## Adding first service, and 'service_ipaddresses' tag doesn't
#. ## exist yet, so create it now.
#. # # # # # # # # # # # # # # # # # # # # # # # # # #
#. ## Should only be 1 "service_ipaddresses" node for a service, but this
#. ## handles the case when there is *no* "service_ipaddresses" node
#. ## for this svc.
#. !/usr/bin/python
#. def __dup_found(self, key, value):
#. "This finds duplicate ip addresses *within the service*"
#. prev_value = self.get(key)
#. if self.action == "add" or #. (self.action == "modify" and value != prev_value):
#. service_ipaddresses_entity = self.parent
#. search_options = {key : value}
#. service_ipaddress_being_validated = self
#. if service_ipaddresses_entity.service_ipaddress_found(search_options, service_ipaddress_being_validated):
#. return TRUE
#. return FALSE
#. ###################################################################
#. NOTE: In 'validate', WARNING errors must come *Last*, after all
#. FATAL errors.  This is because the command line tool will
#. override WARNING's in favor of doing the add or update,
#. whereas the GUI will present the WARNING in a popup dialog.
#. Since WARNINGs and ERROR's are 'raise'd, editing stops at
#. that point.  So for the command line, we want to be sure
#. that all FATAL checks have already been done, so that if a
#. WARNING is raised, it can be safely overridden sinced we
#. know that only WARNING checks remain.
#. ###################################################################
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## Make sure service is stopped before allow user to add or update
#. ## service ipaddress(es).
#: src/configure/clusterpkg/service_ipaddress_module.py:114
msgid ""
"Service must be disabled before you can add or update service ip addresses"
msgstr ""
"Сервис мора бити искључен пре додавања или освежавања ip адреса сервиса"

#. ## Check for *required* fields on "add" ###
#. ## Validate "ipaddress"
#: src/configure/clusterpkg/service_ipaddress_module.py:123
msgid "IP Address is required"
msgstr "Неопходна је IP адреса"

#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#. ## Validate submitted options ###
#. ## Validate "name"
#. if self.__dup_found("ipaddress", ipaddress):
#: src/configure/clusterpkg/service_ipaddress_module.py:139
msgid "IP Address already exists in cluster"
msgstr "IP адреса већ постоји у чворишту"

#: src/configure/clusterpkg/service_ipaddress_module.py:148
msgid "IP Address not found in DNS"
msgstr "IP адреса није нађена у DNS-у"

#: src/configure/clusterpkg/service_ipaddress_module.py:160
msgid "Netmask is invalid"
msgstr "Мрежна маска није исправна"

#: src/configure/clusterpkg/service_ipaddress_module.py:171
msgid "Broadcast is invalid"
msgstr "Одашиљање (broadcast) није исправно"

#: src/configure/clusterpkg/service_ipaddress_module.py:179
msgid "IP Address not on same network as this host"
msgstr "IP адреса није на истој мрежи као овај домаћин"

#: src/configure/clusterpkg/service_ipaddress_module.py:185
msgid "IP Address already in use on network"
msgstr "IP адреса је већ у употреби на мрежи"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#.
#. !/usr/bin/python
#. set to TRUE if you want to allow SFS
#. ## DRIVERS key   = shared state 'type'
#. ##         value = shared state 'driver' for that 'type'
#. ## Use os.path.exists(value), or
#. ##     os.stat(value) - os.stat(value) will raise OSError if not a file.
#. print "OSError - dir(e) = %s" % dir(e)
#. print "  OSError - e.args     =", e.args
#. print "  OSError - e.errno    = %s" % e.errno
#. print "  OSError - e.filename = %s" % e.filename
#. print "  OSError - e.strerror = %s" % e.strerror
#: src/configure/clusterpkg/sharedstate_module.py:72
#, python-format
msgid "Raw %s device does not exist"
msgstr "Сирови %s уређај не постоји"

#: src/configure/clusterpkg/sharedstate_module.py:76
#, python-format
msgid "Raw %s device is not a character special file"
msgstr "Сирови %s уређај није специјална датотека ознаке"

#: src/configure/clusterpkg/sharedstate_module.py:83
msgid "SFS Path does not exist"
msgstr "SFS путања не постоји"

#: src/configure/clusterpkg/sharedstate_module.py:87
msgid "SFS Path must be a directory"
msgstr "SFS путања мора бити директоријум"

#. ##########################################################################
#. ## if any 'sfs' options were submitted, then error ###
#. ## From GUI, raw and sfs options will all be submitted, but
#. ## sfs options should have null("") value.
#: src/configure/clusterpkg/sharedstate_module.py:100
msgid "SFS Path is an invalid option for a Raw Shared State"
msgstr "SFS путања није исправна опција за сирово дељено стање"

#. ## validate 'raw' fields - and assign option to 'options' dictionary
#. ## if option does NOT currently exist, and there IS a default value
#: src/configure/clusterpkg/sharedstate_module.py:116
msgid "Raw Primary device is required for Raw Shared State"
msgstr "Основни сирови уређај је неопходан за сирово дељено стање"

#: src/configure/clusterpkg/sharedstate_module.py:127
msgid "Raw Shadow device is required for Raw Shared State"
msgstr "Резервни сирови уређај је неопходан за сирово дељено стање"

#. ## 'driver' was not submitted, and there was no existing
#. ## 'driver', and there is a default, so assign the default
#. ############################
#. validation between fields #
#. ############################
#. ## rawprimary NOT submitted - see if that option already exists
#. ## in the sharedstate tag
#. ## rawprimary was not submitted, nor does it already exist
#. ## in the sharedstate tag - error.
#: src/configure/clusterpkg/sharedstate_module.py:151
msgid "Primary Quorum Partition is required"
msgstr "Основна кворум партиција је неопходна"

#. ## rawshadow NOT submitted - see if that option already exists
#. ## in the sharedstate tag
#. ## rawshadow was not submitted, nor does it already exist
#. ## in the sharedstate tag - error.
#: src/configure/clusterpkg/sharedstate_module.py:164
msgid "Shadow Quorum Partition is required"
msgstr "Резервна кворум партиција је неопходна"

#: src/configure/clusterpkg/sharedstate_module.py:170
msgid ""
"Primary Quorum Partition must not be the same as the Shadow Quorum Partition"
msgstr ""
"Основна кворум партиција не може имати исто име као резервна кворум партиција"

#. ## if any 'raw' options were submitted, then error ###
#. ## From GUI, raw and sfs options will all be submitted, but
#. ## raw options should have null("") value.
#: src/configure/clusterpkg/sharedstate_module.py:182
msgid "Raw Primary Device is an invalid option for an SFS Shared State"
msgstr "Основни сирови уређај није исправна опција за SFS дељено стање"

#: src/configure/clusterpkg/sharedstate_module.py:188
msgid "Raw Shadow Device is an invalid option for an SFS Shared State"
msgstr "Резервни сирови уређај није исправна опција за SFS дељено стање"

#. ##
#. ## sfspath is required to be present(existing or newly submitted) ###
#. ##
#: src/configure/clusterpkg/sharedstate_module.py:198
#: src/configure/clusterpkg/sharedstate_module.py:208
msgid "SFS Path is required"
msgstr "Неопходна је SFS путања"

#. ##########################################################################
#. ## Make sure option 'type' is submitted
#: src/configure/clusterpkg/sharedstate_module.py:226
msgid "Type is required when adding Shared State"
msgstr "Неопходан је тип при додавању дељеног стања"

#. ## Must be "modify"
#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#. !/usr/bin/python
#. from xml.dom import minidom
#. ## 9/8/2003 1. changed loglevel default from 4(Warning)
#. ##               to 5(Notice), and
#. ##          2. changed failover time
#. ##               from 10 seconds (interval 500000, tko_count 20)
#. ##               to   15 seconds (interval 750000, tko_count 20)
#. ## commented out 3/20/2003 HM ###
#. "strict"    : { "datatype" : "yes_no",
#. "order"    : 3,
#. "default"  : "no" },
#.
#. "adaptive"  : { "datatype" : "yes_no",
#. "order"    : 4,
#. "default"  : "yes" },
#. "strict=",
#. "adaptive=",
#. ## This whole failover seconds > min disk ping seconds check
#. ## isn't necessary if 'cluquorumd' pinginterval isn't specified.
#. ## So just return success.
#. success
#. ## 1.0 - force 'float' context so that we don't loose
#. ## fractional parts in multiplication.
#. ## edit passed ###
#. ## edit failed ###
#: src/configure/clusterpkg/clumembd_module.py:113
#, python-format
msgid ""
"Failover seconds [%d] must be greater than the 'cluquorumd' Ping Interval "
"minimum (Ping Interval [%d] * minimum tko count [%d] = %d)"
msgstr ""
"Секунде за опоравак [%d] морају бити веће од ’cluquorum‘ интервал за пинг "
"најмање (Ping Interval [%d] * minimum tko count [%d] = %d)"

#: src/configure/clusterpkg/clumembd_module.py:186
msgid "Illegal Multicast IP Address"
msgstr "Неисправна вишеканална (multicast) IP адреса"

#: src/configure/clusterpkg/clumembd_module.py:192
msgid "When Multicast is selected, Multicast IP Address is required"
msgstr ""
"Када је изабрано вишеканално (multicast), неопходна је вишеканална IP адреса"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. !/usr/bin/python
#. ## "service_being_validated" is either the service being modified, or
#. ## the new service just added.  We want to be sure its key info doesn't
#. ## duplicate an existing service.
#. ## First, create a new "s"ervice entity
#. ## Next, create new "service_ipaddresses" node - child of new "service"
#. !/usr/bin/python
#. ## end MY_INFO
#. ###################################################################
#. NOTE: In 'validate', WARNING errors must come *Last*, after all
#. FATAL errors.  This is because the command line tool will
#. override WARNING's in favor of doing the add or update,
#. whereas the GUI will present the WARNING in a popup dialog.
#. Since WARNINGs and ERROR's are 'raise'd, editing stops at
#. that point.  So for the command line, we want to be sure
#. that all FATAL checks have already been done, so that if a
#. WARNING is raised, it can be safely overridden sinced we
#. know that only WARNING checks remain.
#. ###################################################################
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## Check for *required* fields on "add" ###
#. ## 1st, for any options that were not submitted, see if a
#. ## "default" was defined above.  If there was, make the
#. ## option value equal to the default.
#. ## This option was not submitted - assign the default if
#. ## there is one.
#: src/configure/clusterpkg/failoverdomain_module.py:103
msgid "Domain Name is required"
msgstr "Неопходно је име домена"

#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#. ## Validate submitted options ###
#. ## 'name' is key - check for another failoverdomain with same name
#: src/configure/clusterpkg/failoverdomain_module.py:118
msgid "Domain Name already exists"
msgstr "Име домена већ постоји"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. None
#. ############################################################################
#. ## Sort the nodes by "id" to ensure that the failover domain
#. ## nodes list that is returned is in the proper order.
#. ## args will come in as "None" from Gui, but will be a dictionary
#. ## if from cluconfig command line.
#. ## First, get a list of services that refer to the
#. ## *old* domain name.  To do that, we need to
#. ##   1. get ownerDocument, and user that to
#. ##   2. get services node, then
#. ##   3. user services node to spin through all existing
#. ##      services.
#. ######################################################
#. Override the ClusterEntity 'set' function so that
#. if a failover domain 'name' is being changed, we
#. can ensure that all services referring to the
#. "old" name get changed to refer to the "new" name.
#. ######################################################
#: src/configure/clusterpkg/failoverdomain_module.py:220
msgid "  failoverdomainnodes:"
msgstr "  failoverdomainnodes:"

#. !/usr/bin/python
#. ###########################################################################
#. ###################################################################
#. NOTE: In 'validate', WARNING errors must come *Last*, after all
#. FATAL errors.  This is because the command line tool will
#. override WARNING's in favor of doing the add or update,
#. whereas the GUI will present the WARNING in a popup dialog.
#. Since WARNINGs and ERROR's are 'raise'd, editing stops at
#. that point.  So for the command line, we want to be sure
#. that all FATAL checks have already been done, so that if a
#. WARNING is raised, it can be safely overridden sinced we
#. know that only WARNING checks remain.
#. ###################################################################
#. ######################################################################
#. #######################   1. FATAL ERRORS   ##########################
#. ######################################################################
#. ## Check for *required* fields on "add" ###
#. ## Validate "name"
#: src/configure/clusterpkg/failoverdomainnode_module.py:76
msgid "Failover Domain Node Name is required"
msgstr "Име чвора домена за опоравак је неопходно"

#. ## 'genericOptionChecks' will raise an error if either the data
#. ## doesn't match the datatype(str or int), or the option is
#. ## not in the list of valid options for this class.
#. ## Validate submitted options ###
#. ## Validate "name"
#: src/configure/clusterpkg/failoverdomainnode_module.py:91
msgid "Failover Domain Node Name already exists"
msgstr "Име чвора домена за опоравак већ постоји"

#. ## Verify that Domain Node Name specified exists as a current
#. ## Member name in the cluster.
#: src/configure/clusterpkg/failoverdomainnode_module.py:104
#, python-format
msgid "Member not found for Failover Domain Node Name '%s'"
msgstr "Члан није нађен за име чвора домена за опоравак ’%s‘"

#. ######################################################################
#. #########################   2. WARNINGS   ############################
#. ######################################################################
#. No warnings
#. !/usr/bin/python
#. ##################################################################
#. get_list: The list returned by ClusterList.get_list contains
#. ClusterEntity's - It's not sufficient for each to be a
#. ClusterEntity since ClusterEntity's don't have access to the
#. "failoverdomain" functions.  Each failoverdomain in the list returned by
#. this "get_list" must be a *failoverdomain* entity in order to have
#. access to the "failoverdomain" functions.
#. ##################################################################
#. ## "failoverdomain_being_validated" is either the failoverdomain
#. ## being modified, or the new failoverdomain just added.  We want
#. ## to be sure his key info doesn't duplicate an existing failoverdomain.
#: src/configure/clusterpkg/failoverdomains_module.py:69
#, python-format
msgid ""
"Failover Domain delete not allowed - Domain Name '%s' specified by at least "
"one service"
msgstr ""
"Брисање домена за опоравак није дозвољено - име домена ’%s‘ је наведено "
"барем у једном сервису"

#: src/configure/clusterpkg/failoverdomains_module.py:80
#, python-format
msgid ""
"Domain delete not allowed - Domain Name '%s' specified by at least one "
"service"
msgstr ""
"Брисање домена није дозвољено - име домена ’%s‘ је наведено барем у једном "
"сервису"

#. !/usr/bin/python
#. ## "service_ipaddress_being_validated" is either the service_ipaddress
#. ## being modified, or the new service_ipaddress just added.  We want to
#. ## be sure his key info doesn't duplicate an existing service_ipaddress.
#. !/usr/bin/python
#. need LC_ALL=C so different
#. languages don't produce
#. different ifconfig output
#. create dictionary
#. skip blank lines
#. for iface_key, iface_dict in self.ifConfig.items():
#. print "\nInterface:", iface_key
#. for key, value in iface_dict.items():
#. print "  key=[%s], value=[%s]" % (key, value)
#. discard spaces at the start
#. split on 2 spaces
#. !/usr/bin/python
#. ## TRUE normally
#. ## FALSE for testing
#. ## socket.inet_aton gets an exception on '255.255.255.255', so
#. ## trap it here first, and return the long integer that would
#. ## have resulted from unpack if inet_aton worked properly.
#. A word of explanation:
#. This conditional is put here to handle the base64 arch case
#. where inet_aton returns an 8 byte value.
#. print "\nipToNetAndHost:"
#. print "  ipToNetAndHost in ip       =", ip
#. print "  ipToNetAndHost in maskbits =", maskbits
#. print "  ipToNetAndHost n(dottedQuadToNum(ip)) =", n
#. print "  ipToNetAndHost m(makeMask(maskbits))  =", m
#. print
#. print "  ipToNetAndHost host(n & m)   =", host
#. print "  ipToNetAndHost net(n - host) =", net
#. print "  ipToNetAndHost dottedQuad net  =", dottedQuadNet
#. print "  ipToNetAndHost dottedQuad host =", dottedQuadHost
#. print "\nisHostInNet:"
#. print "  isHostInNet in: host_ip           =", host_ip
#. print "  isHostInNet in: net_ip_with_slash =", net_ip_with_slash
#. print
#. print "  isHostInNet net_ip:     ", net_ip
#. print "  isHostInNet mask_length:", mask_length
#. print
#. print "  isHostInNet net_net:    ", net_net
#. print "  isHostInNet net_host:   ", net_host
#. print
#. print "  isHostInNet host_net:   ", host_net
#. print "  isHostInNet host_host:  ", host_host
#. print
#. ## First, if ip is a DNS name, convert it to dotted quad ###
#. ## Convert ip to number that can be 'and'ed.
#. print "TOP: ip          =", submitted_ip
#. print "     ip_num      =", submitted_ip_num
#. print "     netmask     =", submitted_netmask
#. print "     netmask_num =", submitted_netmask_num
#. ## This 'for' just for debugging ###
#. print "interface ips: ip          = [%s]" % iface_ip
#. print "          ips: ip_num      = [%s]" % iface_ip_num
#. print "          ips: netmask     = [%s]" % iface_netmask
#. print "          ips: netmask_num = [%s]" % iface_netmask_num
#. print "          ips: and result  = [%s]" % iface_ip_netmask_and_result
#. ## Netmask *WAS* submitted.  Now 'and' submitted ip with
#. ## submitted netmask, and see if that result matches the
#. ## result of 'and'ing each interface ip with that ip's
#. ## netmask.  If *NO* match, then ERROR.
#. print "Netmask *WAS* submitted!!!!!!!!!!"
#. print "  submitted 'and' = [%s]" % submitted_ip_netmask_and_result
#. print "Netmask was submitted, and match *FOUND* - OK"
#. print "Netmask was submitted, and match *NOT* found - ERROR"
#. ## Netmask was *NOT* submitted.  'and' submitted ip with
#. ## each interface's netmask, and see if result matches the
#. ## result of 'and'ing each interface ip with that ip's
#. ## netmask.  If *NO* match, then ERROR.
#. print "Netmask was *NOT* submitted ------------>"
#. print "  submitted ip num=[%s], iface netmask num=[%s], and=[%s}" % (submitted_ip_num, iface_netmask_num, ip_netmask_and_result)
#. print "     %%% Netmask was *NOT* submitted, and match *FOUND* - OK"
#. print "Netmask was *NOT* submitted, and match *NOT* found - ERROR"
#. !/usr/bin/python
#. ################################################################
#. NOTE: 9/16/2003 HM - commented out 'netbios name' code, since
#. a new Samba package was built with a patch to correct the
#. 'nmbd -n' option from being ignored.  That new Samba
#. package fixes bugzilla 104222.  But I left functions
#. __getHostName
#. __getNetbiosName
#. in place - they just aren't used now.
#.
#. NOTE: 9/12/2003 HM - added code to workaround Samba
#. bugzilla 104222.  The -n option in the 'nmbd' command
#. is being ignored in Samba, so we added a 'netbios name'
#. [global] option.  Added functions:
#. __getHostName
#. __getNetbiosName
#.
#. When bug 104222 is fixed in Samba, we should be able to
#. remove this code.
#. ################################################################
#. ## 'netbios name' was an element of GLOBAL_OPTIONS
#. "netbios name" ]
#: src/configure/clusterpkg/util_smbconf_module.py:55
msgid ""
"\n"
"# Template samba service configuration file - please modify\n"
"# to specify subdirectories and client access permissions.\n"
"# Remember to copy this file over to *ALL* other cluster\n"
"# members.\n"
"#\n"
"# From a cluster perspective, the key fields are:\n"
"# lock directory - must be unique per samba service.\n"
"# bind interfaces only - must be present set to yes.\n"
"# interfaces - must be set to service floating IP address.\n"
"# path - must be the service mountpoint or subdirectory thereof.\n"
"# Refer to the cluster documentation for details.\n"
msgstr ""
"\n"
"# Модел за израду датотеке са подешавањима Самбе - измените\n"
"# га навођењем поддиректоријума и овлашћења за приступ клијената.\n"
"# Не заборавите да умножите ову датотеку за *СВЕ* чланове\n"
"других чворишта.\n"
"#\n"
"# Што се тиче чворишта, кључна су поља:\n"
"# lock directory - мора бити јединствено по услузи самбе.\n"
"# bind interfaces only - мора бити постављено на потврдно.\n"
"# interfaces - мора услуживати пливајућу IP адресу.\n"
"# path - мора бити тачка за монтирање услуге, односно директоријум.\n"
"# Погледајте документацију о чвориштима око детаља..\n"

#. used in writeSambaShareFile to
#. determine new, change, or delete
#. ## smb.conf.[sharename] file exists - load it ###
#. skip comments and blank lines
#. ## must be a name = value line ###
#. ## smb.conf.[sharename] file does *NOT* exist - fill
#. ## dictionary with default options
#. print "util_smbconf_module init_file_dict TOP!"
#. options["global"]["netbios name"]         = ""
#. space separate the ip's
#. host *NOT* found
#. host found
#. ips may contain a space separated list of ipaddresses, so
#.
#. 1. get 1st ipaddress
#. 2. if ipaddress has a "/netmask", then get just the ipaddress
#. 3. resolve the ipaddress (ex: myhost.redhat.com)
#. if it resolves, netbios_name = 1st element of hostname ('myhost')
#. else netbios_name = ipaddress
#. 1. get 1st ipaddress (/netmask)
#. 2. if ipaddress has a "/netmask", then get just the ipaddress
#. 3. resolve the ipaddress (ex: myhost.redhat.com)
#. if it resolves, netbios_name = 1st element of hostname ('myhost')
#. else netbios_name = ipaddress
#. netbios_name = self.__getNetbiosName(ipaddresses)
#. self.share_options["global"]["netbios name"] = netbios_name
#. ## Write out file ###
#. ## print [global] options in order ###
#. ## print [sharename] options in order ###
#. ## Invoke __init__ now to reinitialize object data, since
#. ## share is gone, but device still exists.
#. !/usr/bin/python
#. For a filesystem that runs over 1 line -
#. subsequent lines have null values in
#. columns already presented on the previous
#. line..
#. processed all 6 tokens
#. !/usr/bin/python
#. ## File doesn't exist, so open it for write ###
#: src/configure/clusterpkg/util_lock_module.py:40
#, python-format
msgid ""
"Error: %s is already running under process %s, and has the configuration "
"file locked"
msgstr ""
"Грешка: %s је већ покренут под процесом %s и датотека са подешавањима је "
"закључана"

#. !/usr/bin/python
#. Do this 1st, to prevent --name from being stripped
#. by 'import gtk' in cluster_functions.
#. ## Global variables ###
#. ## Parse the cluster.xml into DOM nodes, and lock the cluster.xml
#. ## Another process already has /etc/cluster.xml locked
#. ## Check Shared State ###
#. ## Shared Storage was previously initialized and is responding
#. ## fine.
#. ## Shared Storage is NOT responding - maybe it hasn't been
#. ## initialized yet.
#. if clu.created_config:
#. ## Since shared storage initialization failed, remove default
#. ## config file that was created.
#. ## Shared Storage was initialized successfully ###
#: src/configure/redhat-config-cluster-cmd.py:57
#, python-format
msgid ""
"\n"
"*** Configuration file %s was created."
msgstr ""
"\n"
"*** Датотека са подешавањима %s је направљена."

#: src/configure/redhat-config-cluster-cmd.py:59
msgid ""
"\n"
"*** Shared Storage was initialized successfully.\n"
"\n"
"===================================================="
msgstr ""
"\n"
"*** Дељена остава је успешно покренута.\n"
"\n"
"===================================================="

#. ## attributes for the cluster as a whole
#: src/configure/redhat-config-cluster-cmd.py:70
msgid "Error: config_viewnumber cannot be changed"
msgstr "Грешка: config_viewnumber није могуће изменити"

#. ## attributes for the cluster's Shared State
#. print "redhat-config-cluster-cmd modify_sharedstate TOP!"
#: src/configure/redhat-config-cluster-cmd.py:76
#: src/configure/redhat-config-cluster-cmd.py:89
#: src/configure/redhat-config-cluster-cmd.py:126
#: src/configure/redhat-config-cluster-cmd.py:149
#: src/configure/redhat-config-cluster-cmd.py:160
#: src/configure/redhat-config-cluster-cmd.py:170
#: src/configure/redhat-config-cluster-cmd.py:180
#: src/configure/redhat-config-cluster-cmd.py:194
#: src/configure/redhat-config-cluster-cmd.py:210
#: src/configure/redhat-config-cluster-cmd.py:253
#: src/configure/redhat-config-cluster-cmd.py:269
#: src/configure/redhat-config-cluster-cmd.py:337
#: src/configure/redhat-config-cluster-cmd.py:346
#: src/configure/redhat-config-cluster-cmd.py:386
#: src/configure/redhat-config-cluster-cmd.py:402
#: src/configure/redhat-config-cluster-cmd.py:414
#: src/configure/redhat-config-cluster-cmd.py:442
#: src/configure/redhat-config-cluster-cmd.py:481
#: src/configure/redhat-config-cluster-cmd.py:565
#: src/configure/redhat-config-cluster-cmd.py:590
#: src/configure/redhat-config-cluster-cmd.py:607
#: src/configure/redhat-config-cluster-cmd.py:679
#: src/configure/redhat-config-cluster-cmd.py:695
#: src/configure/redhat-config-cluster-cmd.py:769
#: src/configure/redhat-config-cluster-cmd.py:831
#: src/configure/redhat-config-cluster-cmd.py:843
#: src/configure/redhat-config-cluster-cmd.py:901
#: src/configure/redhat-config-cluster-cmd.py:918
#: src/configure/redhat-config-cluster-cmd.py:956
#: src/configure/redhat-config-cluster-cmd.py:972
#: src/configure/redhat-config-cluster-cmd.py:1008
msgid "Error:"
msgstr "Грешка:"

#: src/configure/redhat-config-cluster-cmd.py:200
#: src/configure/redhat-config-cluster-cmd.py:274
#: src/configure/redhat-config-cluster-cmd.py:392
#: src/configure/redhat-config-cluster-cmd.py:486
#: src/configure/redhat-config-cluster-cmd.py:613
#: src/configure/redhat-config-cluster-cmd.py:707
#: src/configure/redhat-config-cluster-cmd.py:848
#: src/configure/redhat-config-cluster-cmd.py:923
#: src/configure/redhat-config-cluster-cmd.py:977
#, python-format
msgid "Error: Option \"%s\" requires \"%s\""
msgstr "Грешка: опција „%s“ захтева „%s“"

#. print "redhat-config-cluster-cmd modify_member TOP"
#. print _("Error:"), e.getMessage()
#: src/configure/redhat-config-cluster-cmd.py:208
#: src/configure/redhat-config-cluster-cmd.py:224
#, python-format
msgid "Error: Member '%s' does not exist in cluster"
msgstr "Грешка: члан ’%s‘ не постоји у чворишту"

#. print _("Error:"), e.getMessage()
#: src/configure/redhat-config-cluster-cmd.py:281
#, python-format
msgid "Error: Powercontroller '%s' does not exist in Member '%s'"
msgstr "Грешка: контролер напајања ’%s‘ не постоји у члану ’%s‘"

#. ## test to see if valid ip address ###
#. ## Valid dns name will fall in here, so see if that's
#. ## what it is.
#. ## User passed in a 'powercontroller=' with a value containing
#. ## a valid ip address, but no port.
#: src/configure/redhat-config-cluster-cmd.py:314
msgid ""
"Error: --powercontroller value is missing a port number - value must be in "
"format '--powercontroller=ip,port'"
msgstr ""
"Грешка: --вредности контролера за напајање недостаје број порта - вредност "
"мора бити облика ’--powercontroller=ip,port‘"

#: src/configure/redhat-config-cluster-cmd.py:400
#, python-format
msgid "Error: Failover Domain '%s' does not exist in cluster"
msgstr "Грешка: домен за опоравак ’%s‘ не постоји у чворишту"

#. print _("Error:"), e.getMessage()
#: src/configure/redhat-config-cluster-cmd.py:493
#, python-format
msgid "Error: Failover Domain Node '%s' does not exist in Failover Domain '%s'"
msgstr "Грешка: чвор домена за опоравак ’%s‘ не постоји у домену ’%s‘"

#. print _("Error:"), e.getMessage()
#: src/configure/redhat-config-cluster-cmd.py:620
#: src/configure/redhat-config-cluster-cmd.py:631
#, python-format
msgid "Error: Service '%s' does not exist in cluster"
msgstr "Грешка: сервис ’%s‘ не постоји у чворишту"

#. print _("Error:"), e.getMessage()
#: src/configure/redhat-config-cluster-cmd.py:714
#, python-format
msgid "Error: Device '%s' does not exist in Service '%s'"
msgstr "Грешка: уређај ’%s‘ не постоји у сервису ’%s‘"

#: src/configure/redhat-config-cluster-cmd.py:727
#, python-format
msgid "Error: Device \"%s\" does not exist for Service \"%s\""
msgstr "Грешка: уређај „%s“ не постоји за сервис „%s“"

#. print _("Error:"), e.getMessage()
#: src/configure/redhat-config-cluster-cmd.py:855
#, python-format
msgid "Error: NFS Export '%s' does not exist in Device '%s'"
msgstr "Грешка: NFS извоз ’%s‘ не постоји у уређају ’%s‘"

#: src/configure/redhat-config-cluster-cmd.py:868
#, python-format
msgid "Error: NFS Export \"%s\" does not exist for Device \"%s\""
msgstr "Грешка: NFS извоз „%s“ не постоји за уређај „%s“"

#. print _("Error:"), e.getMessage()
#: src/configure/redhat-config-cluster-cmd.py:930
#, python-format
msgid ""
"Error: NFS Export Client '%s' does not exist for NFS Export Directory '%s'"
msgstr "Грешка: клијент за NFS извоз ’%s‘ не постоји за директоријум ’%s‘"

#: src/configure/redhat-config-cluster-cmd.py:943
#, python-format
msgid "Error: Client \"%s\" does not exist for NFS Export \"%s\""
msgstr "Грешка: клијент „%s“ не постоји за NFS извоз „%s“"

#. print _("Error:"), e.getMessage()
#: src/configure/redhat-config-cluster-cmd.py:984
#, python-format
msgid "Error: IP Address '%s' does not exist in service '%s'"
msgstr "Грешка: IP адреса ’%s‘ не постоји у сервису ’%s‘"

#: src/configure/redhat-config-cluster-cmd.py:997
#, python-format
msgid "Error: IP Address \"%s\" does not exist for Service \"%s\""
msgstr "Грешка: IP адреса „%s“ не постоји за сервис „%s“"

#. share_list = []
#. for service in services:
#. devices = service.get_devices()
#. for device in devices:
#. if device.get("sharename") != "":
#. share_list.append(device.get("sharename"))
#. return share_list
#. ## Parse the cluster.xml into DOM nodes, and lock the cluster.xml
#. Used to see if data
#. changed when user quits.
#. ## constants for notebook pages ###
#. Main window
#. delete-event allows you to click the 'X'(upper right) to close
#. the window and stop the application.  It also allows you to
#. click on the down arrow(upper left) to close and stop the app.
#. ##################################
#. ## Populate Cluster attributes ###
#. ##################################
#. get general cluster attributes
#. #######################################
#. ## Create Daemon Properties Dialog  ###
#. #######################################
#. ################################
#. ## Populate Members Treeview ###
#. ################################
#. #################################
#. ## Populate Services Treeview ###
#. #################################
#. #########################################
#. ## Populate Failover Domains Listview ###
#. #########################################
#. #########################################################
#. ## Save device 'share' (samba) info, so we can compare
#. ## at the end.  In on_save_activiate, if devices or
#. ## samba shares were deleted, we must then delete the
#. ## /etc/samba/smb.conf.sharename files.
#. #########################################################
#. self.share_list_before = sambaSharesSnapshot(self.clu)
#. ###################################
#. ## Save NFS export druid dialog ###
#. ###################################
#. #####################################
#. ## Save samba export druid dialog ###
#. #####################################
#. none of cluster options changed - just return
#. ## At least 1 cluster option changed ###
#. ## Invoke service 'validate' to validate all options
#. Don't refresh - leave bad values
#. on screen.
#: src/configure/cluster-config.py:261 src/configure/clientDialog.py:72
#: src/configure/daemonPropDialog.py:278 src/configure/daemonPropDialog.py:303
#: src/configure/deviceDialog.py:130 src/configure/failoverdomainDialog.py:98
#: src/configure/serviceDialog.py:95 src/configure/sharedstateDialog.py:116
#, python-format
msgid ""
"%s\n"
"\n"
"Press 'OK' to Continue, or  'Cancel' to Exit."
msgstr ""
"%s\n"
"\n"
"Притисните ’ОК‘ за наставак, или ’Одустани‘ за излаз."

#. Don't refresh - leave bad values
#. on screen.
#. Need to differentiate this
#. 'Cancel' from the main Dialog
#. 'Cancel', so make this rc
#. gtk.RESPONSE_REJECT.
#. ## Validation passed on all fields - now "set" each by calling
#. ## the ClusterEntity "set".
#. ## Now connect the buttons to the functions ###
#. ## Load screen widgets with data from XML DOM for selected client ###
#: src/configure/clientDialog.py:130
#, python-format
msgid "%s  <client>"
msgstr "%s  <клијент>"

#. Client key field is "name"
#. ## Must be an "add" ###
#. ## model.append needs the "iter" of the *parent* of the
#. ## thing that is being appended.
#. parent_iter = self.model.iter_parent(iter)
#. ## rc was gtk.RESPONSE_REJECT:
#. ##   1. User got a FATAL error and clicked 'OK' (only option)
#. ##      so display same dialog again,
#. ##        OR
#. ##   2. User got a WARNING and clicked 'Cancel' to go back
#. ##      and re-enter.
#. !/usr/bin/python
#. # daemonPropDialog.py
#. # This program is free software; you can redistribute it and/or modify
#. # it under the terms of the GNU General Public License as published by
#. # the Free Software Foundation; either version 2 of the License, or
#. # (at your option) any later version.
#. # This program is distributed in the hope that it will be useful,
#. # but WITHOUT ANY WARRANTY; without even the implied warranty of
#. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#. # GNU General Public License for more details.
#. # You should have received a copy of the GNU General Public License
#. # along with this program; if not, write to the Free Software
#. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#. ###########################################################################
#. NOTES:
#. ======
#. 05/20/2003 HM - Commented out all code referring to 'clupowerd', since
#. clupowerd has been removed from the daemonPropDialog
#. in glade.
#. 03/20/2003 HM - Commented out all code referring to Stability ('strict'
#. and 'adaptive', since we've decided to turn both on
#. by default and not expose them to users.
#. ###########################################################################
#. WARNING
#. #
#. # I18N
#. #
#. ## FAILOVER_SECONDS key is the failover seconds
#. ##                  value is "tko_count|interval" combination that equals
#. ##                     the failover seconds(when multiplied together.  The
#. ##                     interval is in microseconds.
#. ## STABILITY key is the stability scale units(1-3)
#. ##           value is the 'strict' and 'adaptive' fields, and whether
#. ##           or not(0 or 1) they are on.
#. ## If tko_count and interval combo don't exist in FAILOVER_SECONDS,
#. ## then default to 1st(slowest) FAILOVER_SECONDS element.
#. ## If strict and adaptive combo doesn't exist in STABILITY,
#. ## then default to highest STABILITY element.
#. get general cluster attributes
#. self.clupowerd  = clu.getclupowerd()
#: src/configure/daemonPropDialog.py:159
#, python-format
msgid "%2d second failover"
msgstr "%2d секунди опоравак"

#. ## Copy the new values from the Gui widgets into the DOM xml ###
#. stability_scale_units = int(self.glade_xml.get_widget('clumembd_stability_hscale').get_value())
#. (clumembd_strict, clumembd_adaptive) = getStabilityStrictAndAdaptive(stability_scale_units)
#. #########################################
#. clupowerd_loglevel = self.glade_xml.get_widget('clupowerd_loglevel_optionmenu').get_history()
#. #########################################
#: src/configure/daemonPropDialog.py:207
msgid ""
"Network Tiebreaker was selected but no IP Address was entered.\n"
"\n"
"Please enter an IP Address for Network Tiebreaker."
msgstr ""
"Арбитар (tiebreaker) мреже је изабран али није унета IP адреса.\n"
"\n"
"Унесите његову IP адресу."

#. Don't refresh - leave bad values
#. on screen.
#: src/configure/daemonPropDialog.py:219
msgid ""
"Disk Tiebreaker was selected but no Disk Ping Interval was entered.\n"
"\n"
"Please enter a Disk Ping Interval (in seconds) for Disk Tiebreaker."
msgstr ""
"Арбитар (tiebreaker) диска је изабран али није унет интервал за пинг диска.\n"
"\n"
"Унесите његов интервал за пинг (у секундама)."

#. Don't refresh - leave bad values
#. on screen.
#. #########################################
#. #########################################
#. #########################################
#. "strict"     : clumembd_strict,
#. "adaptive"   : clumembd_adaptive,
#. clupowerd_options = { "loglevel"  : clupowerd_loglevel }
#. ## Invoke service 'validate' to validate all options
#: src/configure/daemonPropDialog.py:277
#, python-format
msgid ""
"Ping Interval * %d must be less than Failover time.  Click 'OK' to change "
"'cluquorumd' Ping Interval to %d"
msgstr ""
"Интервал за пинг* %d мора бити мањи од времена за опоравак.  Клините ’ОК‘ за "
"измену ’cluquorumd‘ интервала за пинг на %d"

#. Don't refresh - leave bad values
#. on screen.
#. ## Validation passed on all fields - now "set" each by calling
#. ## the ClusterEntity "set".
#. self.clumembd.set("strict", clumembd_strict)
#. self.clumembd.set("adaptive", clumembd_adaptive)
#. self.clupowerd.set("loglevel", clupowerd_loglevel)
#. ## clumembd 'multicast' *IS* checked
#. ## clumembd 'multicast' is *NOT* checked
#. ## Ping Interval is selected ###
#. ## Tiebreaker IP is selected ###
#. ## Create gtk Menu of loglevels that will be used to create
#. ## loglevel optionmenu's for each of the daemons.
#. ## Now connect the buttons to the functions ###
#. ## clumembd ###
#. ## Load 'clumembd' Speed fields to screen ###
#. ## Load 'clumembd' Stability fields to screen ###
#. strict   = self.clumembd.get("strict")
#. adaptive = self.clumembd.get("adaptive")
#. (label_text, stability_scale_units) = getStabilityLabelAndUnits(strict, adaptive)
#. stability_scale_widget = self.glade_xml.get_widget('clumembd_stability_hscale')
#. stability_scale_widget.connect("value_changed", self.on_stability_value_changed)
#. self.stability_label = self.glade_xml.get_widget('clumembd_stability_text_label')
#. self.stability_label.set_text(label_text)
#. stability_scale_widget.set_value(stability_scale_units)
#. ## Load 'clumembd' remaining fields to screen ###
#. default is TRUE (or yes)
#. default is TRUE (or yes)
#. ## Load 'clupowerd' options to screen ###
#. self.build_optionmenu(self.clupowerd)
#. ## Load 'cluquorumd' options to screen ###
#. ## Figure out how many members have been defined ###
#. ownerDocument = self.cluquorumd.node.ownerDocument
#. members_node = ownerDocument.getElementsByTagName("members")[0]
#. from clusterpkg.members_module import members
#. members_entity = members(members_node)
#. members_list = members_entity.get_list()
#. count_members = len(members_list)
#: src/configure/daemonPropDialog.py:460
msgid "Cluster has 2 members - Network Tiebreaker IP Address is recommended"
msgstr ""
"Чвориште има 2 члана - IP адреса арбитра (tiebreaker) мреже се препоручује"

#: src/configure/daemonPropDialog.py:482
msgid "Cluster has 4 members - Network Tiebreaker IP Address is required"
msgstr ""
"Чвориште има 4 члана - IP адреса арбитра (tiebreaker) мреже се препоручује"

#: src/configure/daemonPropDialog.py:494
#, python-format
msgid ""
"Cluster has %s members:\n"
"Disk Tiebreaker and Network Tiebreaker will not be used."
msgstr ""
"Чвориште има %s члана:\n"
"Арбитри (tiebreaker) диска и мреже неће бити коришћени."

#. Don't refresh - leave bad values
#. on screen.
#. Need to differentiate this
#. 'Cancel' from the main Dialog
#. 'Cancel', so make this rc
#. gtk.RESPONSE_REJECT.
#. ## Now connect the buttons to the functions ###
#. ## Load screen widgets with data from XML DOM for selected device ###
#. ## parent is a "serviceItem" instance ###
#: src/configure/deviceDialog.py:217
#, python-format
msgid "%s  <device>"
msgstr "%s  <уређај>"

#. ## set up the treeview to do multiple selection ###
#. ## "get" the new values from the Gui widgets ###
#. ## Now connect the buttons to the functions ###
#. ## Populate the screen widgets ###
#. ## find members currently in XML (in memory) ###
#. ## To get current list of members, need to get DOM XML
#. ## ownerDocument(root DOM XML node), so we can then
#. ## find(using getElementsByTagName) the 'members' node.
#. ## need this model.clear ###
#. ## Only load nodes to the list screen that were not
#. ## previously selected.
#. ## parent is failoverdomainnodesListview object ###
#. failoverdomainnode key field is "name"
#. #
#. # I18N
#. #
#. print "failoverdomainnodesListview __init__ TOP:"
#. ## This is a 'List', so use 'ListStore' (not TreeStore) ###
#: src/configure/failoverdomainnodesListview.py:32
msgid "Node"
msgstr "Чвор"

#: src/configure/failoverdomainnodesListview.py:78
#, python-format
msgid "Are you sure you want to remove '%s'?"
msgstr "Сигурно желите да уклоните ’%s‘?"

#. ## iter == None, which means at the top level, adding a 'failoverdomain'
#: src/configure/failoverdomainsListview.py:85
#: src/configure/membersTreeview.py:106 src/configure/servicesTreeview.py:173
#, python-format
msgid "Are you sure you want to remove %s '%s'?"
msgstr "Сигурно желите да уклоните ’%s‘ ’%s‘?"

#. ## remove "item" from DOM XML ###
#. ## remove "iter" from Gui ###
#. !/usr/bin/python
#. # memberDialog.py
#. # This program is free software; you can redistribute it and/or modify
#. # it under the terms of the GNU General Public License as published by
#. # the Free Software Foundation; either version 2 of the License, or
#. # (at your option) any later version.
#. # This program is distributed in the hope that it will be useful,
#. # but WITHOUT ANY WARRANTY; without even the implied warranty of
#. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#. # GNU General Public License for more details.
#. # You should have received a copy of the GNU General Public License
#. # along with this program; if not, write to the Free Software
#. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#. #
#. # I18N
#. #
#. gtk.Dialog):
#. Reset GUI widget values back to what they were - in this dialog
#. one or more widgets could have been set to illegal values, which
#. they would still have if we didn't reset them here.
#. ## "get" the new values from the Gui widgets ###
#. ## Invoke member 'validate' to validate all options
#. print "memberDialog check 'except': in FATAL now!"
#. Don't refresh - leave bad values
#. on screen.
#: src/configure/memberDialog.py:79 src/configure/nfsexportDialog.py:71
#: src/configure/powercontrollerDialog.py:137
#: src/configure/serviceIPAddressDialog.py:82
#, python-format
msgid ""
"%s\n"
"\n"
"Press 'OK' to Continue, or 'Cancel' to Exit."
msgstr ""
"%s\n"
"\n"
"Притисните ’ОК‘ за наставак, или ’Одустани‘ за излаз."

#. Don't refresh - leave bad values
#. on screen.
#. Need to differentiate this
#. 'Cancel' from the main Dialog
#. 'Cancel', so make this rc
#. gtk.RESPONSE_REJECT.
#. ## Validation passed on all fields - now "set" each by calling
#. ## the ClusterEntity "set".
#. for "validate"
#. ## Now connect the buttons to the functions ###
#. ## Load screen widgets with data from XML DOM for selected service ###
#. ## find failover domains currently in XML (in memory) ###
#. ## To get current list of failover domains, need to get DOM XML
#. ## ownerDocument(root DOM XML node), so we can then
#. ## find(using getElementsByTagName) the 'failoverdomains' node.
#. ## parent is "servicesTreeview" instance ###
#: src/configure/serviceDialog.py:203
#, python-format
msgid "%s  <service>"
msgstr "%s  <сервис>"

#. Don't refresh - leave bad values
#. on screen.
#. Need to differentiate this
#. 'Cancel' from the main Dialog
#. 'Cancel', so make this rc
#. gtk.RESPONSE_REJECT.
#. ## Validation passed - now 'set' DOM XML options ###
#. ## Now connect the buttons to the functions ###
#. ## Load screen widgets with data from XML DOM for selected device ###
#: src/configure/nfsexportDialog.py:123
#, python-format
msgid "%s  <nfsexport>"
msgstr "%s  <nfsexport>"

#. Don't refresh - leave bad values
#. on screen.
#. Need to differentiate this
#. 'Cancel' from the main Dialog
#. 'Cancel', so make this rc
#. gtk.RESPONSE_REJECT.
#. ## Validation passed - now 'set' options ###
#. ## If this was previously a 'Network' powercontroller, then
#. ## remove the old network options.
#. ## Must be network powercontroller ###
#. ## If this was previously a 'Serial' powercontroller, then
#. ## remove the old serial options.
#. type gulm
#. ####################################################################
#. get_other_member_name:
#. Given a powercontroller, that is a child of a member, find
#. the name of the *other* member.  This can only be done for
#. serial powercontrollers that are valid only for 2-node
#. clusters.
#. ####################################################################
#. ## 'Serial' selected - 1. unprotect 'Serial' fields ###
#. set Serial Device *Owner* to name of *other* member -
#. *NOT* the name of the member that this powercontroller
#. is a child of.
#. ## 'Serial' selected - 2. protect 'Network' fields ###
#. ## 'Network' selected - 1. unprotect 'Network' fields ###
#. ## 'Network' selected - 2. protect 'Serial' fields ###
#. gulm selected
#. Protect all other fields
#. ## When loading screen for the 1st time, we invoke radio button
#. ## set_active to set one of the radio buttons to "on", which fires
#. ## this function.  When that happens(firsttime) just return.
#. ## Now connect the buttons to the functions ###
#. ## Load screen widgets with data from XML DOM for selected
#. ## powercontroller.
#. ## On "add", if 2 members in cluster, default to 'Serial'
#. set Serial Device *Owner* to name of *other* member -
#. *NOT* the name of the member that this powercontroller
#. is a child of.
#. ## 'add', but count_members >2, so default to 'Network'
#. #######################
#. ## Must be "modify" ###
#. #######################
#. set Serial radiobutton
#. set Serial Type combo box
#. set Serial Device
#. set Serial Port combo box
#. set Serial Device *Owner* to name of *other* member -
#. *NOT* the name of the member that this powercontroller
#. is a child of.
#. set Network options to null
#. User must have chosen "Network" radiobutton
#. set Network Type combo box
#. set Serial options to null
#. type is gulm stonith driver
#. set serial and network options to null
#. set Serial options to null
#. set Network options to null
#. ## parent is a 'memberItem'
#: src/configure/powercontrollerDialog.py:455
#, python-format
msgid "%s: device=%s <serial powercontroller>"
msgstr "%s: уређај=%s <серијски контролер напајања>"

#: src/configure/powercontrollerDialog.py:461
#, python-format
msgid "%s: ip=%s, port=%s <network powercontroller>"
msgstr "%s: ip=%s, порт=%s <мрежни контролер напајања>"

#: src/configure/powercontrollerDialog.py:463
#, python-format
msgid "%s: <GULM STONITH Bridge>"
msgstr "%s: <GULM STONITH Bridge>"

#. ## Want to add an item at the same level as the currently
#. ## selected item.  So call item.add with the iter of the
#. ## current iter's parent, since that parent will also
#. ## be the parent of the item being added.
#. print "servicesTreeview add_child TOP"
#. ## Since the current item will be the parent of the item being
#. ## added, pass the current item's iter to item.add_child.
#: src/configure/servicesTreeview.py:161
#, python-format
msgid "Service '%s' must be disabled before '%s' delete allowed"
msgstr "Сервис ’%s‘ мора бити искључен пре него што се дозволи брисање ’%s‘"

#. Don't refresh - leave bad values
#. on screen.
#. ## Validation passed - now 'set' options ###
#. ## If sharestate was previously 'sfs', then delete sfs options ###
#. ## If sharestate was previously 'raw', then delete raw options ###
#. ## 'Raw' selected - 1. unprotect 'Raw' fields and load  ###
#. ## 'Raw' selected - 2. protect 'SFS' fields and init to null ###
#. ## 'SFS' selected - 1. unprotect 'SFS' fields and load ###
#. ## 'SFS' selected - 2. protect 'Raw' fields and init to null ###
#. ## When loading screen for the 1st time, we invoke radio button
#. ## set_active to set one of the radio buttons to "on", which fires
#. ## this function.  When that happens(firsttime) just return.
#. !/usr/bin/python
#. # deviceOrServiceIPAddressDialog.py
#. # This program is free software; you can redistribute it and/or modify
#. # it under the terms of the GNU General Public License as published by
#. # the Free Software Foundation; either version 2 of the License, or
#. # (at your option) any later version.
#. # This program is distributed in the hope that it will be useful,
#. # but WITHOUT ANY WARRANTY; without even the implied warranty of
#. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#. # GNU General Public License for more details.
#. # You should have received a copy of the GNU General Public License
#. # along with this program; if not, write to the Free Software
#. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#. #
#. # I18N
#. #
#. (gtk.Dialog):
#. ## "get" the new values from the Gui widgets ###
#. ## Connect the buttons to the functions ###
#. !/usr/bin/python
#. # serviceIPAddressDialog.py
#. # This program is free software; you can redistribute it and/or modify
#. # it under the terms of the GNU General Public License as published by
#. # the Free Software Foundation; either version 2 of the License, or
#. # (at your option) any later version.
#. # This program is distributed in the hope that it will be useful,
#. # but WITHOUT ANY WARRANTY; without even the implied warranty of
#. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#. # GNU General Public License for more details.
#. # You should have received a copy of the GNU General Public License
#. # along with this program; if not, write to the Free Software
#. # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#. #
#. # I18N
#. #
#. (gtk.Dialog):
#. ## "get" the new values from the Gui widgets ###
#. ## If user didn't update any fields, then just return.
#. Don't refresh - leave bad values
#. on screen.
#. ## WARNING because IP address gethostbyname(DNS lookup)
#. ## failed.
#: src/configure/serviceIPAddressDialog.py:80
#, python-format
msgid ""
"%s\n"
"\n"
"Press 'OK' to Accept, or 'Cancel' to change it."
msgstr ""
"%s\n"
"\n"
"Притисните ’ОК‘ за наставак, или ’Одустани‘ за измену."

#. Don't refresh - leave bad values
#. on screen.
#. Need to differentiate this
#. 'Cancel' from the main Dialog
#. 'Cancel', so make this rc
#. gtk.RESPONSE_REJECT.
#. print "AAAAAAAAAAAAA - rc =", rc
#. print "   gtk.RESPONSE_OK =", gtk.RESPONSE_OK
#. print "   gtk.RESPONSE_CANCEL =", gtk.RESPONSE_CANCEL
#. print "   gtk.RESPONSE_REJECT =", gtk.RESPONSE_REJECT
#. ## Validation passed - now 'set' DOM XML options ###
#. ## Now connect the buttons to the functions ###
#. ## Load screen widgets with data from XML DOM for selected
#. ## service_ipaddress.
#. if self.monitor_link != None:
#: src/configure/serviceIPAddressDialog.py:161
#, python-format
msgid "%s  <service ip address>"
msgstr "%s  <ip адреса сервиса>"

#: src/configure/nfsExportDruid.py:99 src/configure/smbShareDruid.py:83
msgid "Mountpoint"
msgstr "Тачка за монтирање"

#. #########################
#. ## Last Page - Finish ###
#. #########################
#. ############################################################
#. ## NOTE: if radiobutton is "connect"ed to a function, then
#. ##       invoking the radiobutton's 'set_active' will fire
#. ##       the function.
#. ############################################################
#. print 'on_svcRadiobuttonChanged TOP'
#. ## 'Existing Service' was selected, so
#. ##   * turn on 'Existing'
#. ##   * turn off 'New'
#. ## 'New Service' was selected, so
#. ##   * turn on 'New'
#. ##   * turn off 'Existing'
#. print "deviceRadiobuttonChanged TOP now!"
#. print "  device existing"
#. ## 'Existing Device' was selected, so
#. ##   * turn on 'Existing'
#. ##   * turn off 'New'
#. print "  device new"
#. ## 'New Device' was selected, so
#. ##   * turn on 'New'
#. ##   * turn off 'Existing'
#. print "on_deviceRadiobuttonChanged TOP now!"
#. print "nfsExportDruid 'cancel' now!"
#. print "nfsExportDruid 'run' now!"
#. don't load service if it doesn't have an ip
#. ## initialize screen fields ###
#: src/configure/nfsExportDruid.py:208
msgid "You must enter a directory name"
msgstr "Морате унети име директоријума"

#: src/configure/nfsExportDruid.py:211
msgid "Directory Name must start with a slash"
msgstr "Име директоријума мора почети косом цртом"

#. if not os.path.isdir(dirname):
#. errorMessage(_("Name specified is not a directory"))
#. return TRUE
#. ## Verify that directory name isn't a dup of existing ###
#: src/configure/nfsExportDruid.py:243
msgid "NFS Export directory already exists in cluster"
msgstr "Директоријум за NFS извоз већ постоји у чворишту"

#. #################################################################
#. ## NFS Export Directory Page done - now prep for Service Page ###
#. #################################################################
#: src/configure/nfsExportDruid.py:272 src/configure/smbShareDruid.py:203
msgid "Service IP Address already exists in cluster"
msgstr "IP адреса сервиса већ постоји у чворишту"

#. ## This whole section copied from service_ipaddress_module.py ###
#: src/configure/nfsExportDruid.py:277 src/configure/smbShareDruid.py:208
msgid "Service IP Address not found in DNS"
msgstr "IP адреса сервиса није нађена у DNS-у"

#: src/configure/nfsExportDruid.py:283 src/configure/smbShareDruid.py:214
msgid "Service IP Address not on same network as this host"
msgstr "IP адреса сервиса није на истој мрежи као овај домаћин"

#: src/configure/nfsExportDruid.py:287 src/configure/smbShareDruid.py:218
msgid "Service IP Address already in use on network"
msgstr "IP адреса сервиса је већ у употреби на мрежи"

#. Passed validation
#. print "on_ServicePage_next TOP now!"
#. ## 'Existing Service' selected ###
#: src/configure/nfsExportDruid.py:303 src/configure/smbShareDruid.py:230
msgid ""
"When 'Existing Service' is selected, you must select one of the existing "
"services"
msgstr ""
"Када је ’Постојећи сервис‘ изабран, морате изабрати један од постојећих "
"сервиса"

#. ## Set Device Model before display Device page ###
#. ## Export directory *IS* under the device mountpoint, so
#. ## load this device into 'Existing Device' model
#. ## 'New Service' selected ###
#: src/configure/nfsExportDruid.py:341 src/configure/smbShareDruid.py:266
msgid ""
"When 'New Service' is selected, you must enter a name for the new service"
msgstr "Када је ’Нови сервис‘ изабран, морате унети име за нови сервис"

#: src/configure/nfsExportDruid.py:344 src/configure/smbShareDruid.py:269
msgid ""
"When 'New Service' is selected, you must enter an ip address for the new "
"service"
msgstr "Када је ’Нови сервис‘ изабран, морате унети ip адресу за нови сервис"

#. ## Verify that the new service name does not already exist ###
#: src/configure/nfsExportDruid.py:350 src/configure/smbShareDruid.py:275
msgid "New Service name already exists"
msgstr "Име новог сервиса већ постоји"

#. ## Validate IP Address ###
#. return to druid
#. ###################################################
#. ## Service Page done - now prep for Device Page ###
#. ###################################################
#. if self.first_time_device:
#. pass
#. ## Enable choice of existing 'device' from that
#. ## existing service
#. ## Disable existing device - only enable new device ###
#: src/configure/nfsExportDruid.py:381 src/configure/smbShareDruid.py:291
#, python-format
msgid "Existing Service '%s' was selected"
msgstr "Изабран је постојећи сервис ’%s‘"

#. ## The existing service DOES have devices defined.
#. ## Enable choice of existing 'device' from that existing svc
#. ## The existing service selected has NO devices defined.
#. ## So treat it like the "New" radiobutton was selected.
#. ## User added a new service, so only allow user to
#. ## *add a new* device
#: src/configure/nfsExportDruid.py:384 src/configure/smbShareDruid.py:312
#, python-format
msgid "New Service '%s' was specified"
msgstr "Наведен је нови сервис ’%s‘"

#. self.existDeviceRadiobutton.set_active(FALSE)
#. ## 'Existing Device' selected ###
#: src/configure/nfsExportDruid.py:398 src/configure/smbShareDruid.py:331
msgid ""
"When 'Existing Device' is selected, you must select one of the existing "
"devices"
msgstr ""
"Када је ’Постојећа услуга‘ изабрана, морате изабрати један од постојећих "
"уређаја"

#. ## Verify that the export directory is *underneath* the mountpoint
#. ##
#. ## This check shouldn't even be necessary for *existing*
#. ## devices, since an existing device presented in the
#. ## selection list should only be presented in that list
#. ## if the export directory *is* under the device mountpoint.
#: src/configure/nfsExportDruid.py:411 src/configure/nfsExportDruid.py:439
msgid "Export Directory must be underneath device mountpoint"
msgstr "Директоријум за извоз мора бити испод тачке за монтирање уређаја"

#. ## 'New Device' selected ###
#: src/configure/nfsExportDruid.py:422 src/configure/smbShareDruid.py:348
msgid "Special File name is required for a new device"
msgstr "Специјално име датотеке је неопходно за нов уређај"

#: src/configure/nfsExportDruid.py:434 src/configure/smbShareDruid.py:360
msgid "Device Mountpoint is required for a new device"
msgstr "Тачка за монтирање је неопходна за нов уређај"

#. if not stat.S_ISDIR(mode):
#. errorMessage(_("Mount Point must be a directory"))
#. return TRUE
#. ## Verify that neither
#. ##   * the new device name, nor
#. ##   * the new device mountpoint
#. ## already exists in the cluster.
#: src/configure/nfsExportDruid.py:464 src/configure/smbShareDruid.py:384
msgid "Device Special File already exists in cluster"
msgstr "Специјална датотека уређаја већ постоји у чворишту"

#: src/configure/nfsExportDruid.py:469 src/configure/smbShareDruid.py:389
msgid "Device mountpoint already exists in cluster"
msgstr "Тачка за монтирање већ постоји у чворишту"

#: src/configure/smbShareDruid.py:337
msgid ""
"Selected Device already contains a Samba Share Name - please select a "
"different device"
msgstr "Изабрани уређај већ садржи име дељења Самбом - изаберите други уређај"

#. ## New device, so set sharename to null ###
#: src/configure/smbShareDruid.py:400
msgid "Share Name is required"
msgstr "Неопходно је име дељења"

#. return to druid
#: src/configure/smbShareDruid.py:406
msgid "Share Name may not contain spaces"
msgstr "Име дељења не може садржати размаке"

#. return to druid
#. ###########################################################
#. ## Done with Share Name Page - Now prep for Finish Page ###
#. ###########################################################
#. ## We know that self.sharename is not null ###
#. ## sharename being added ###
#: src/configure/smbShareDruid.py:433
#, python-format
msgid ""
"\n"
"When you press 'Apply' below, and then\n"
"File => Save on the menu, samba configuration\n"
"file\n"
"\n"
"    %s\n"
"\n"
"will be created ***ON THIS MEMBER ONLY***.\n"
"\n"
"Remember to copy the samba configuration file\n"
"to *ALL* other cluster members.\n"
msgstr ""
"\n"
"Када доле притиснете ’Примени‘, и потом\n"
"Датотека => Сачувај у менију, датотека са\n"
"подешавањима самбе\n"
"\n"
"    %s\n"
"\n"
"ће бити направљена ***САМО ЗА ОВОГ ЧЛАНА***.\n"
"\n"
"Не заборавите да умножите ову датотеку\n"
"за *СВЕ* остале чланове чворишта.\n"

#. ## sharename being changed ###
#: src/configure/smbShareDruid.py:450
#, python-format
msgid ""
"\n"
"When you press 'Apply' below, and then\n"
"File => Save on the menu, the following\n"
"will occur:\n"
"\n"
"  1. file '%s'\n"
"     will be renamed to '%s'\n"
"\n"
"  2. inside that file, all occurrences of\n"
"     '%s' will be changed to '%s'\n"
"\n"
"These changes will be made ***ON THIS MEMBER ONLY***.\n"
"\n"
"Remember to copy the new samba configuration file\n"
"to, and remove the old samba configuration file from,\n"
" *ALL* other cluster members.\n"
msgstr ""
"\n"
"Када доле притиснете ’Примени‘, и потом\n"
"Датотека => Сачувај у менију, десиће се\n"
"следеће:\n"
"\n"
"  1. датотека ’%s‘\n"
"     ће бити преименована у ’%s‘\n"
"\n"
"  2. унутар ње, свуда где се јавља\n"
"     ’%s‘ ће бити промењено у ’%s‘\n"
"\n"
"Ове измене ће бити начињене ***САМО ЗА ОВОГ ЧЛАНА***.\n"
"\n"
"Не заборавите да умножите нову датотеку\n"
"са подешавањима, и да уклоните стару,\n"
"за *СВЕ* остале чланове чворишта.\n"

#. print "\nSmb Druid Finish now"
#. print "--------------------"
#. print "  Svc name      = [%s]" % self.service_name
#. print "  Svc existing  = [%s]" % self.existing_service
#. print "  Svc new       = [%s]" % self.new_service
#. print
#. print "  Dev name      = [%s]" % self.device_name
#. print "  Dev mount     = [%s]" % self.device_mountpoint
#. print "  Dev sharename = [%s]" % self.sharename
#. for "validate"
#. ## do 'df [smbexport dir]' to get device ###
#. dir_df = cluDF(self.dirname)
#. filesystem = dir_df.get_filesystem()
#. mountpoint = dir_df.get_mountpoint()
#. print "\ndf filesystem=[%s]" % filesystem
#. print "\ndf mountpoint=[%s]" % mountpoint
#. ## Now add the SMB Sharename to the Device ###
#. !/usr/bin/python
#. ## powercontroller types can be UPPER case in old cluster.conf, so
#. ## convert them to lower case here.
#.
#. Single Network Power Switch.
#.
#.
#. Multiple network power switches.
#.
#.
#. added 8/25/2003 HM - convert 'apcplus' to 'apcmaster'
#.
#.
#. The 'login' was used as the /dev/ttyS* device in the old version
#. of RHCM.  Filter out "unused" things...
#.
#.
#. The 'power switch port name' was stored as a member attribute in
#. the old version of RHCM.
#.
#.
#. Use the first member's quorum partition definitions.
#. Complain if the quorum partition definitions do not match.
#.
#: src/convert/cluster-convert.py:107
#, python-format
msgid "Warning: Raw Primary Partition mismatch: %s != %s"
msgstr "Упозорење: неслагање у основној сировој партицији: %s != %s"

#: src/convert/cluster-convert.py:108 src/convert/cluster-convert.py:116
#, python-format
msgid "Warning: Cluster will use %s"
msgstr "Упозорење: чвориште ће употребити %s"

#: src/convert/cluster-convert.py:110 src/convert/cluster-convert.py:118
#, python-format
msgid "Warning: Reconfigure member %s to match."
msgstr "Упозорење: поново подесите члана %s да одговара."

#: src/convert/cluster-convert.py:115
#, python-format
msgid "Warning: Raw Shadow Partition mismatch: %s != %s"
msgstr "Упозорење: неслагање у резервној сировој партицији: %s != %s"

#. rec="%s\t\t%s/>\n" % (rec,getNFSExportsXML(exports))
#. ####################
#. ## 'cluster' tag ###
#. ####################
#. ## add 'config_viewnumber' option ###
#.
#. Get daemons
#.
#. daemons=["cluquorumd","clurmtabd","clusvcmgrd"]
#. for d in daemons:
#. rec="%s\t<%s%s/>\n" %  (rec,d,buildAttributes(conf.vars[d]))
#. ########################
#. ## 'clumembd' daemon ###
#. ########################
#. ########################
#. ## 'clulockd' daemon ###
#. ########################
#. ##########################
#. ## 'cluquorumd' daemon ###
#. ##########################
#. #########################
#. ## 'clurmtabd' daemon ###
#. #########################
#. ## 'pollinterval' option was not included, so provide one
#. ##########################
#. ## 'clusvcmgrd' daemon ###
#. ##########################
#.
#. Get the member + switch information from the members section.
#.
#.
#. Get the shared state information from the members section.
#.
#.
#. Get the service information from the members section.
#.
#: src/convert/cluster-convert.py:264
msgid ""
"cluster-convert.py - convert old style cluster conf to cluster.xml\n"
"\n"
"Usage: cluster-convert.py inputfile outputfile"
msgstr ""
"cluster-convert.py - пребацује стари cluster conf у cluster.xml\n"
"\n"
"Употреба: cluster-convert.py улазнадатотека излазнадатотека"
